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?
a quick >spectre -h save
will reveal that it is trivial in spectre as well:
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.
In reply to Andrew Beckett:
That's what I was hoping to hear.. this will help me a lot.
In reply to swdesigner:
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)?
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?
In reply to slim5:
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)..
save *.IDBA.P18:oppoint sigtype=dev
Would do it.
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
In reply to P K:
save *:VDD sigtype=subckt depth=2
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
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).