Stephen,
No it's not a bug with the spectre simulator. If nothing in the netlist tells the simulator that they are global, it quite correctly treats them as local.
You didn't say which verification tool you're using - I suspect it's Diva. I recall there being an issue that Diva doesn't in itself mark the signals in the extracted view as being global - there isn't really such thing as a global signal in a physical layout. In the database itself, a signal is marked global by having the isGlobal attribute set on the signal (not the net) - this is often done by Composer for any net with a name ending with "!". It's not the fact that it ends with "!" that marks it as global in the database, but that the isGlobal attribute is set.
If you use the "Build Analog" button at the bottom of the Diva LVS form, and use this to build an "analog_extracted" view, and then use that in your config (rather than the original extracted view), then I believe this analog_extracted view has the signals with names ending in "!" marked as global.
Alternatively, the attributes can be set in the extracted view directly. The following SKILL code would do it:
Code:/*******************************************************************
* *
* (abMakePlingNetsGlobal @optional (cellView (geGetEditCellView))) *
* *
* Make sure that any net ending with "!" is marked as a global *
* net. *
* *
*******************************************************************/
(procedure (abMakePlingNetsGlobal @optional (cellView (geGetEditCellView)))
(let (globs)
(if (equal (dbGetq cellView viewName) "extracted")
(progn
(printf "Processing cellView %s/%s/%s\n"
(dbGetq cellView libName)
(dbGetq cellView cellName)
(dbGetq cellView viewName))
(unless (dbReopen cellView "a")
(error "Failed to make cellView editable\n"))
(setq globs
(setof sig (dbGetq cellView signals)
(when (equal (index (dbGetq sig name) "!") "!")
(dbSetq sig t isGlobal)
)
))
(when globs
(printf "Made the following nets global:\n")
(foreach glob globs
(printf " %s\n" (dbGetq glob name)))
(dbDisablePropTimeStamp)
(dbReplaceProp cellView
"lastSchematicExtraction" "time" (getCurrentTime))
)
)
(warn "%s/%s/%s is not an extracted view\n"
(dbGetq cellView libName)
(dbGetq cellView cellName)
(dbGetq cellView viewName))
)
))
Just type:
Code:(abMakePlingNetsGlobal)
with the extracted view as the current window (having loaded the SKILL code using:
Code:(load "abMakePlingNetsGlobal.il")
But really the Build Analog approach is the way it is supposed to be done.
With Assura RCX, I'm pretty certain this works directly without need to get the isGlobal attribute set.
Regards,
Andrew.