jm1974
New Member
Offline
Posts: 5
|
I am doing corners analysis using an ocean script I created for VCO. I'm running the following pss and pnoise analysis and calculating the noise using an expression.
analysis('pnoise ?sweeptype "relative" ?relharmnum "1" ?start "1k" ?stop "20M" ?maxsideband "10" ?p "/out" ?n "/gnd" ?oprobe "" ?iprobe "" ?refsideband "" ) analysis('pss ?fund "2G" ?harms "2" ?errpreset "conservative" ?tstab "171n" ?saveinit "yes" ?p "/op" ?n "/on" ?method "gear2only" ?tstabmethod "gear2only" ?tstart "40n" )
run() ;*******************************************************************************
; Output results ;*******************************************************************************
;*******************************************************************************
; Run analyses ;*******************************************************************************
pn10k = value((-dB20(ymax(mag((v "/out" ?result "pss-fd.pss" ?resultsDir "/proj/work_libs/jm/cds/simulation/vco_sim1/spectre/schematic")))) + dB20(getData("/out" ?result "pnoise-pnoise" ?resultsDir "/proj/work_libs/jm/cds/simulation/vco_sim1/spectre/schematic")) + 3) 10000) printf( "%6.2e \n" pn10k)
Half way through the 400 iterations my script goes through a convergence problem. PSS does not converge. This causes evaluation of expression to fail ( cannot evaluate ymax of nil) and the script stops running and exit the iteration. But what I want to do is ignore this one corner and move to the next iteration. I will address the bad convergence corners later. I can't find a way to work around this and I was hoping you all might be of help.
Thanks JM
|