• 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. spectre - saving by specific subcircuit

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 127
  • Views 12070
  • 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

spectre - saving by specific subcircuit

swdesigner
swdesigner over 14 years ago

Is it possible to tell spectre to save all nodes or terminal currents within a certain subckt? It's trivial in Hspice, you could do

 

save all Xtop.Xsub.*

 

I believe there's even a way to use the wildcards to get it to only do the top-level within that subcircuit, but I don't recall it..

 

Any ideas? How would it be done through the ADE, without messing with the netlist?

  • Cancel
  • Marc Heise
    Marc Heise over 14 years ago

     Hi,

    a quick 

    >spectre -h save

    will reveal that it is trivial in spectre as well:

    Examples of pattern matching:

    save x*.*1 depth=3
    saves the voltages of all nodes from level 2 to level 3 whose name starts with
    `x' and ends in `1', eg x1.n1, x1.x2.x3 but not x1.x2.x3.x4

    save x*.*1 sigtype=subckt
    saves all terminal currents of subcircuits from level 2 and above whose name
    starts with `x' and ends in `1', eg x1.x21:2, x1.x2.x31:3

    save *:c devtype=bjt
    saves all collector currents

    save * subckt=inv
    saves the voltages of all nodes in the instances of the subcircuit `inv', eg
    X1.n1 for an instance X1 of inv but not net091 at the top-level

    save * exclude=[X1* X2*]
    saves the voltages of all nodes excluding the ones whose names start with `X1'
    or `X2', eg net091, X0.res3.n2 but not X21.res3.n2.

     

    Regards,

    Marc

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Spectre has similar syntax - see "spectre -h save". So it's trivial in spectre too. You have to do it via an include file though in ADE. The reason is that the wildcards are based on the netlist names, rather than the schematic names - although I believe there's an enhancement request to add support for this on the UI.

    You can (on the Options->Save All) choose to save voltages using "lvlpub" and then specify nestlvl - which means that it will save the top N levels of hierarchy. But if you only want to save lower levels, the best approach would be to have an include (included via Setup->Model Libraries, say) with a save statement in.

    Best Regards,

    Andrew

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • swdesigner
    swdesigner over 14 years ago

    Thanks Gentlemen,

             That's what I was hoping to hear.. this will help me a lot.

     

    Thanks!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • swdesigner
    swdesigner over 14 years ago

    How about AMS?

    I find that the best way with spectre and the ADE is to put the full pathname of the include file in the Defintion files field under Simulation Files. (Model Libraries was suggested, but I think this is more meaningful).

    Could someone post an example of save commands for AMS and the best location to specify the file for inclusion (which field in ADE to use)?

    Thanks!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • slim5
    slim5 over 13 years ago

    Hi,

      Referring to the use save-statement to save operating points for specify transistors located within a hierarchy. I had been using the include statement method (e.g., create a file and add the file via Setup->Model Libraries in Analog Design Environment window) but ran into problem with the use of wildcard.

      In my test bench, I have a circuit block that is used five times within a hierarchy and they are name IDBA. I want to save the operating condition for a transition (P18) within the circuit block and I included this statement "save DUT.ILNA.IDBA\.P18:oppoint" hoping with the intention of having spectre save the operating points for the transistos P18 in all the five copies.

      Unfortunately, the operating points for all five transistors were not saved and executing the command "OP("/IDUT.ILNA.IDBA.P18" "gm") returned nil. If I changed the save-statement to "save DUT.ILNA.IDBA\.P18:oppoint" then the OP command would return a number. Do I have to have a separate save-statement for each instance of IDBA? Or I have to use another symbol as a wild card?

      Thanks!

     

    Regards,

    Su

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    If the subckt (cell) name containing P18 is (say) "DBA" then you could do:

    save P18:oppoint subckt=DBA sigtype=dev

    then this would save P18 in all instances of DBA (i don't know what your cell is called)..

    Alternatively:

    save *.IDBA.P18:oppoint sigtype=dev

    Would do it.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • P K
    P K over 12 years ago

     Hi Andrew,

    How can we make spectre to save all the supply currents of all the blocks upto a certail depth of hierarchy?

    The below save fail(I have useterms=name option set)

    save I*.*:VDD* sigtype=all

    save VDD*:currents sigtype=subckt

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    save *:VDD sigtype=subckt depth=2

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • P K
    P K over 12 years ago

     Thanks it works for all terminals named VDD.

    However, if i specify the following to match all my VDD terminals of the subckt(VDDA, VDDD,VDD_1P2V, and so on), the simulator exits with a segmentation fault(SPECTRE-18)

    save *:VDD* sigtype=subckt depth=2

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    I'm not sure that having wildcards on the terminal name is supported, but it shouldn't crash regardless. I've filed CCR 1109175 to address this (and hopefully to support wildcards on the terminal name side since there's a clear need for this in this case).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
>

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