Dear All,
I want to do MONTE_CARLO simulation for my circuit for finding rise time and fall time.
The output is settling after 800u s.
I have to do some pre-processing before finding the last expression. The expressions I used as below.
But it did NOT work.
Can anybody tell how to find risetime and falltime of the waveform using MONTE-Carlo simulation if one needs some house-keeping processing of the waveform.
.......
analysis('dc ?saveOppoint t )
analysis('tran ?stop "1u" ?errpreset "moderate" ?maxstep "5p"
?method "euler" ?strobeperiod "5p" )
desVar( "frf" 6G )
desVar( "prf" -20 )
desVar( "frf2" 6.1G )
desVar( "w" 20u )
desVar( "sigma" 3)
option( 'temp "27.0"
'iabstol "1e-14"
'vabstol "1e-4"
)
saveOption( 'currents "selected" )
saveOption( 'save "all" )
temp( 27.0 )
monteCarlo( ?numIters "1" ?startIter "1"
?analysisVariation 'processAndMismatch ?sweptParam "None"
?sweptParamVals "27" ?saveData nil
?nomRun "yes" ?append nil
?saveProcessParams t
)
CLOCK_DUTY_PERIOD=2.5e-10
CLIP_START=0.8u
CLIP_END=0.9u
clip_I_P=clip( v("/MIXER_I_P" ?result 'tran) CLIP_START CLIP_END)
plot(clip_I_P)
MIN_VALUE=ymin(clip_I_P) + 0.02
MAX_VALUE=ymax(clip_I_P)- 0.03
UPPER_THRESOLD=MIN_VALUE + ( (MAX_VALUE-MIN_VALUE)*0.9 )
LOWER_THRESHOLD=MIN_VALUE + ( (MAX_VALUE-MIN_VALUE)*0.1 )
RISE_UPPER= cross( clip_I_P UPPER_THRESOLD 2 'rising )
RISE_LOWER= cross( clip_I_P LOWER_THRESHOLD 2 'rising )
monteExpr("RISE_TIME" "abs(RISE_UPPER-RISE_LOWER)")
monteRun()