I am launching a script .ocn to do some spectre simulation : qs ocean -restore script.ocn in which I have written (xxx to remove the real names...):
simulator( 'spectre )
resultsDir( "xxx/results/" )
stimulusFile( ?xlate nil
analysis('tran ?stop "100n" )
desVar( "wn1" 100n "ln1" 10n "wn2" 80n "ln2" 30n ... "nmos_tran_model_vth" "nsvtlp" ...)
definitionFile( ".../models.scs" )
converge( 'ic "out_b" 0 )
converge( 'ic "out" 1.1 )
save( 'v "out" "out_b" ... "vss" "vri" "vli" )
In the same directory, containing the above script, I have :
corners.scs hiddenOptions.scs models.scs results/
_graphical_stimuli.scs importNetlist.scs script.ocn setupCornersIncludeFile.scs netlist
The netlist content :
// Library name: xxx
// Cell name: inv
// View name: schematic
subckt inv A1 YN vdd vnw vpw vss
parameters wp=xxx lp=xxx pfolds=1 wn=xxx ln=xxx nfolds=1
M5 (YN A1 vdd vnw) pmos_tran_model_vth w=wp*10e5 l=lp*10e5 nfing=pfolds mult=1 \
srcefirst=1 mismatch=1 lpe=0 numcos=1 numcod=1 ngcon=1
M2 (YN A1 vss vpw) nmos_tran_model_vth w=wn*10e5 l=ln*10e5 nfing=nfolds mult=1 \
// End of subcircuit definition.
// Cell name: ncx
subckt ncx ncx
// Library name: Test
// Cell name: xxx
Rleft (vli saout_b) resistor r=Rleft
M2 (out saeqi saout_b vpw) nmos_tran_model_vth w=wn1 l=ln1 nfing=1 mult=1 \
M0 (out net07 vss vpw) nmos_tran_model_vth w=wndiff l=lndiff nfing=1 mult=1 \
M4 (vli saeni vdd vnw) pmos_tran_model_vth w=wpen l=lpen nfing=1 mult=1 srcefirst=1 \
mismatch=1 lpe=0 numcos=1 numcod=1 ngcon=1
M3 (vri saeni vdd vnw) pmos_tran_model_vth w=wpen l=lpen nfing=1 mult=1 srcefirst=1 \
I1 (out_b net08 vdd vnw vpw vss) inv wp=xxx lp=xxx pfolds=1 wn=xxx \
V0 (net07 aout_b) vsource dc=xxx type=dc
I2 (net09) ncx
I cannot succeed in launching without any error the simulation :
Simulating `input.scs' on clusts04 at 4:05:12 PM (process id:
Notice from spectre in `ncx', during circuit read-in.
"input.scs" 29: Subcircuit 'ncx' is empty.
Time for NDB Parsing: CPU = 761.883 ms, elapsed = 1.48527 s.
Time accumulated: CPU = 761.883 ms, elapsed = 1.48527 s.
Peak resident memory used = 30 Mbytes.
Error found by spectre during hierarchy flattening.
ERROR (SFE-23): "input.scs" 37: M2 is an instance of an undefined model
ERROR (SFE-23): "input.scs" 39: M1 is an instance of an undefined model
ERROR (SFE-23): "input.scs" 41: M0 is an instance of an undefined model
ERROR (SFE-23): "input.scs" 43: M4 is an instance of an undefined model
ERROR (SFE-23): "input.scs" 45: M3 is an instance of an undefined model
Error found by spectre in `inv':`I1', during hierarchy flattening.
ERROR (SFE-23): "input.scs" 18: I1.M5 is an instance of an undefined model
ERROR (SFE-23): "input.scs" 20: I1.M2 is an instance of an undefined model
Error found by spectre in `inv':`I0', during hierarchy flattening.
ERROR (SFE-23): "input.scs" 18: I0.M5 is an instance of an undefined model
I would like to be able to launch sucessfully the simulation without any amap/ directory. To do it, I have tried to remove in the script.ocn, the "/" from /out for example.
I don't undertsand why I should, mandatory, use an input.scs file, and once the command launched, I don't have any input.scs file created.
Do you think this is possible ?
Thanks a lot !!
From what you've described, the desVar() which is setting "nmos_tran_model_vth" "nsvtlp" wouldn't alter the model instances in the netlist, unless you have some subckt models defined somewhere which uses "analogmodel" to switch the models by a parameter.
Either way, it appears that your ../models.scs file is not defining all the models that the design needs.
There's no need to supply an input.scs - you should be able to supply "netlist". No need for amap either - that's only if you want to be able to use schematic names in your plots and so on, where that mapping was captured during netlisting.
So it's not that clear what your problem is, other than that you have devices which are referencing models that it can't find in the resulting "input.scs" that gets generated by OCEAN, or in any of the files that it includes.
In reply to Andrew Beckett:
Hi Andrew !!
Thanks for your quick reply.
I checked if the issue was coming from "desVar() which is setting "nmos_tran_model_vth" "nsvtlp" wouldn't alter the model instances in the netlist", it's not coming from here. I replaced the "nmos_tran_model_vth" by nsvtlp for example and I have the same errors in the log. Plus, this strategy is working with a cadence database (I mean the working directory is the Analog Environment one). But, in my case I have to recreate this simulation environment : netlist, script.ocn, graphical_stimuli... because I try to evaluate different netlist as input (different mos sizes, models...).
Then, I am investigating on the "it appears that your ../models.scs file is not defining all the models that the design needs". I will comment soon on it.
Hopefully, you say that I don't need any mapping file. Indeed, I don't want to recreate also all the mapping files environment.
In reply to samung:
for debugging, I would like to keep alive the "input.scs" file created, indeed, it seems the file is removed during the simulation. How can I do that ?
You don't need the mapping files, and the input.scs is NOT removed during simulation. It's recreated though - this is because you specify the analyses you want, and the design variables, and the models and so on - so it assembles the "input.scs" from these choices plus the "netlist" file - and then simulates using that.
Once it is assembled, it remains - but if you run the simulation again, it will be re-assembled, and so on.