The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> Circuit Simulators >> global nodes in spectre post-layout simulation
https://designers-guide.org/forum/YaBB.pl?num=1086721767

Message started by stephen on Jun 8th, 2004, 12:09pm

Title: global nodes in spectre post-layout simulation
Post by stephen on Jun 8th, 2004, 12:09pm

I've met a problem. I labeled the power nets in the layout as vdd! and gnd!. They are supposed to be global labels. However, when I do post-layout simulations with config and extracted cellview, spectre doesn't consider those nodes as global. If I use the vdd and gnd power symbol in the top-level testing schematic, the vdd! and gnd! in the extracted sub-cell will be converted into something like _net0 and _net1. If I remove any vdd! and gnd! labels from the top-level schematic, vdd! and gnd! can be generated in the netlist. However, they are still not considered as global because I don't see ".global vdd! gnd!" on the top of the netlist. So I guess the automatic renaming is also based on the same problem. That is, it's to avoid conflict between a global net and a local net.

Is this a bug of spectre simulator? Anybody can help me on this one?

Thanks!!!


Title: Re: global nodes in spectre post-layout simulation
Post by Andrew Beckett on Jun 8th, 2004, 2:24pm

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.

Title: Re: global nodes in spectre post-layout simulation
Post by stephen on Jun 8th, 2004, 2:54pm

Many thanks. The analog_extracted cellview works very well. I doubt whether this is a new feature introduced in cadence 5.0? I did post-layout simulation in some older version cadence about a year ago. As far as I can remember, I knew nothing about analog_extracted cellview then and I just used vdd! and gnd! in the layout.

Also, I found that, other than using the build analog button, I can simply rename the extracted cellview to analog_extracted. That does the trick too.

Thanks again.

Title: Re: global nodes in spectre post-layout simulation
Post by Andrew Beckett on Jun 8th, 2004, 9:31pm

No, it's not a new feature. It's been there at least 10 years...

I'm surprised that renaming extracted to analog_extracted fixed the problem too - I can't see any reason why that should work, because I wouldn't have thought that there would be anything that would touch the signals in the database when it is renamed - it could only be if that
happened as a side effect of the rename (simply having a viewname of analog_extracted is not sufficient).

Andrew.

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.