• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. Importing spectre netlist with arrayed net names

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 126
  • Views 16087
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Importing spectre netlist with arrayed net names

Steven Mikes
Steven Mikes over 10 years ago

I have a netlist that I would like to import to a schematic. It contains subcircuits that have arrayed pins, e.g.

I0 (VDD VSS A\<2\> A\<1\> A\<0\>) myInstance

The schematic/symbol for myInstance in Cadence have the pins as  VDD VSS A<2:0>

I'm getting an error when importing that would look like this for this example:

Hush! For master cell 'refLib.myInstance:symbol' terminal order has less terminals than on instance. Expected: 5 Found: 3

How do I make the tool assign the terminals properly?

Thanks!

  • Cancel
Parents
  • Matth83
    Matth83 over 10 years ago

    Thanks Andrew for the insightful comment... still much to learn.
    I've replied to this old post because I was looking for some help on the topic not so long ago... finally I could find it myself, so I wished to share.
    I should have precised, I've used this step on an ASSURA QRC extracted .dspf netlist, which I wished to transform to an extracted schematic view using the Spice-In tool (File>Import>Spice...).

    Nevermind. I guess your way is more straight-forward, still I like having an extracted schematic view on which I can add or remove parasitics or replace circuits bits (eg. sizing MOS vs parasitics, etc...)

    True, I could also do this in the .dspf directly (well actually I do since I also have a procedure to disconnect parasitics on specified nets -commenting them out in the dspf- prior to the Spice-in) but could be risky in my view if you loose the overview.

    As for the buses, the Spice-in of a .dspf netlist doesn't work for me if I don't put pins into buses... what my script does is simply copying the termOrder in place of the extracted dspf .SUBCKT declaration at the beginning: 

        l_TermOrder = cdfGetCellCDF(ddGetObj(myLib myCell))->simInfo->spectre->termOrder
       TermOrder = ""
        foreach(w l_TermOrder TermOrder = strcat(TermOrder " " w))

        i = infile(myDspfNetlist) 

        while(gets(l i)
            if(pcreMatchp("^.SUBCKT " l) then ;# detected the .SUBCKT line
              fprintf(o strcat(".SUBCKT " cadr(parseString(l)) " " TermOrder "\n"))
       ;#... etc

    Regards,
    Matthieu

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Matth83
    Matth83 over 10 years ago

    Thanks Andrew for the insightful comment... still much to learn.
    I've replied to this old post because I was looking for some help on the topic not so long ago... finally I could find it myself, so I wished to share.
    I should have precised, I've used this step on an ASSURA QRC extracted .dspf netlist, which I wished to transform to an extracted schematic view using the Spice-In tool (File>Import>Spice...).

    Nevermind. I guess your way is more straight-forward, still I like having an extracted schematic view on which I can add or remove parasitics or replace circuits bits (eg. sizing MOS vs parasitics, etc...)

    True, I could also do this in the .dspf directly (well actually I do since I also have a procedure to disconnect parasitics on specified nets -commenting them out in the dspf- prior to the Spice-in) but could be risky in my view if you loose the overview.

    As for the buses, the Spice-in of a .dspf netlist doesn't work for me if I don't put pins into buses... what my script does is simply copying the termOrder in place of the extracted dspf .SUBCKT declaration at the beginning: 

        l_TermOrder = cdfGetCellCDF(ddGetObj(myLib myCell))->simInfo->spectre->termOrder
       TermOrder = ""
        foreach(w l_TermOrder TermOrder = strcat(TermOrder " " w))

        i = infile(myDspfNetlist) 

        while(gets(l i)
            if(pcreMatchp("^.SUBCKT " l) then ;# detected the .SUBCKT line
              fprintf(o strcat(".SUBCKT " cadr(parseString(l)) " " TermOrder "\n"))
       ;#... etc

    Regards,
    Matthieu

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information