spectre/spectremdl montecarlo batch mode issue

P

Pierre Paoli

Guest
Hello,

I would need some support regarding the use of spectre or spectremdl to launch some montecarlo simu in batch mode.
I have done it in a graphical mode using adexl and i have what I want, however, now next step is to do it in batch.

I see 3 ways of doing :
1/with spectremdl => would be my top choice because I am suppose to get the results (yield/sigma...) in a result_file and I can better split the control (input.mdl) and the operation files (input.scs)
2/with spectre => back-up option
3/with ocean => the setting for the cadence files and the syntaxe are too complicated to some automatization use


I am using :
....> which spectre

/home/.../cadence/MMSIM10_11/tools/bin/spectre

....> spectre -W

sub-version 10.1.1.181.isr12



Method 1 : spectremdl

I don't know how I can fix the below errors. Could you please help me ?


I launch :
spectremdl -batch input.mdl -design input.scs -measure mc_results_file/results_file +log mc_log_file.log

I have the errors :
Error found by spectre.
ERROR: line 11, column 2: syntax error before or at: <eof>
unrecognised statement
ERROR (MDL-6): Failed to parse MDL control file, `input.mdl'.



I have the following files :

###################################
input.mdl :

/* mdl measurement file */


alias measurement tran_meas {
run tran
export real test = 1000
}

run montecarlo (numruns=50, variations='mismatch, scalarfile="mc_results.dat", donominal='no) {
run tran_meas
}


####################################
input.scs :

subckt inv A1 YN vdd vnw vpw vss
....
M5 (YN A1 vdd vnw) psvtlp w=wp*10e5 l=lp*10e5 nfing=pfolds mult=1 \
srcefirst=1 mismatch=1 lpe=0 numcos=1 numcod=1 ngcon=1
....
M1 (saout_b saout vss vpw) nsvtlp w=wndiff l=lndiff nfing=1 mult=1 \
srcefirst=1 mismatch=1 lpe=0 numcos=1 numcod=1 ngcon=1
include "./_graphical_stimuli.scs"
ic aout=1 aout_b=0
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=70.0 \
tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \
checklimitdest=psf
tran tran stop=20n write="spectre.ic" writefinal="spectre.fc" annotate=status maxiters=5
finalTimeOP info what=oppoint where=rawfile
modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
designParamVals info what=parameters where=rawfile
primitives info what=primitives where=rawfile
subckts info what=subckts where=rawfile
save aeni aout aout_b
saveOptions options save=allpub subcktprobelvl=2



method 2 : spectre

I display the input.scs from the adexl window. So I expect the input.scs file should work.


At this time, I have the line :

export aout_b_max=oceanEval("ymax(v(\"/aout_b\" ?result \"tran\"))")

which corresponds to the graphical setting I did (meaning the yield, sigma... of the montecarlo runs will be based on a comparison of this aout_b_max and a spec value (not specified in the input.scs)).

I decide to use this input.scs to launch the montecarlo simu : spectre input.scs +log mc_log_file.log

I launch : spectre input.scs +log mc_log_file.log

And surprise, surprise, I have the above export in error :

*Error* _ymaxMethod: can't handle _ymaxMethod(nil)

Error found by spectre during Monte Carlo analysis `mc1'.

ERROR (SPECTRE-8003): subckts: Error evaluating ocean expression

`aout_b_max=ymax(v("/aout_b" ?result "tran"))'.

Unsuccessfully evaluated export statements (based on return code).

Analysis `mc1' was terminated prematurely due to an error.





In graphical mode, the montecarlo runs occur very well using this input.scs, how it comes in batch mode I have this issue ?



The input.scs file I am using :



// Generated for: spectre

// Design library name: Test

simulator lang=spectre

global 0

include "corners_SS.scs"

parameters lndiff=...

subckt ncx ncx

ends ncx

// End of subcircuit definition.



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) psvtlp w=wp*10e5 l=lp*10e5 nfing=pfolds mult=1 \

srcefirst=1 mismatch=1 lpe=0 numcos=1 numcod=1 ngcon=1

....



I0 (aout net33 vdd vnw vpw vss) inv wp=xxx lp=xxx pfolds=1 wn=xxx \

ln=xxx nfolds=1

....

Rright (vdd aout) resistor r=Rright

Rleft (vdd aout_b) resistor r=Rleft

M0 (aout aout_b vss vpw) nsvtlp w=wndiff l=lndiff nfing=1 mult=1 \

srcefirst=1 mismatch=1 lpe=0 numcos=1 numcod=1 ngcon=1

....

include "./_graphical_stimuli.scs"

ic aout=1 aout_b=0

simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=70.0 \

tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \

digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \

checklimitdest=psf

mc1 montecarlo numruns=1 seed=12345 variations=mismatch sampling=standard \

donominal=yes scalarfile="../monteCarlo/mcdata" \

paramfile="../monteCarlo/mcparam" savemismatchparams=yes \

mismatchparamfile="../monteCarlo/mismatchparam" \

mismatchscalarfile="../monteCarlo/mismatchdata" \

dumpdependency=mismatch \

dependencymapfile="../monteCarlo/mismatchdependency" \

savefamilyplots=yes savedatainseparatedir=yes {

tran tran stop=20n write="spectre.ic" writefinal="spectre.fc" \

annotate=status maxiters=5

finalTimeOP info what=oppoint where=rawfile

modelParameter info what=models where=rawfile

element info what=inst where=rawfile

outputParameter info what=output where=rawfile

designParamVals info what=parameters where=rawfile

primitives info what=primitives where=rawfile

subckts info what=subckts where=rawfile

export aout_b_max=oceanEval("ymax(v(\"/aout_b\" ?result \"tran\"))")

}

mcOptions options genmcdep=yes

saveOptions options save=allpub subcktprobelvl=2



Finally, my top goal would be to get in a result file the yield/sigma/mean values.

Special thanks for any help !!

P.
 

Welcome to EDABoard.com

Sponsor

Back
Top