Mobeedikk
New Member
Offline
Posts: 4
|
Hi all, I'm simulating a DLL and want to look at the effect of transistor mismatch on the delay accuracy of each of my delay elements. My delay elements are differential, so my output statements (in Analog Design Environment) look like: tp=delay(clip((VT("/V0p") - VT("/V0n")) 1e-09 2e-09) 0 1 "rising" clip((VT("/V1p") - VT("/V1n")) 1e-09 2e-09) 0 1 "rising" 0 0 nil nil) Here, I take the differential signal, and look for the 1st zero crossing at the input after 1ns, look for the first (differential) zero crossing at the output after 1ns, and take that to be my delay element delay. This runs fine in regular simulations, but as soon as I try and put this in monte carlo analysis with the oceanEval() statement, it stops working. The error message just tells me: mc1_subckts: Error evaluating ocean expression `tp=delay(clip((VT("/V0p") - VT("/V0n")) 1e-09 2e-09) 0 1 "rising" clip((VT("/V1p") - v("/V1n")) 1e-09 2e-09) 0 1 "rising" 0 0 nil nil)'. I've tried montecarlo in both icfb and from the command prompt, neither work. The oceanEval statement that icfb automatically generates looks like: export tp=oceanEval("delay(clip((VT(\"/V0p\") - VT(\"/V0n\")) 1e-09 2e-09) 0 1 \"rising\" clip((VT(\"/V1p\") - VT(\"/V1n\")) 1e-09 2e-09) 0 1 \"rising\" 0 0 nil nil)") I have also tried removing the 0 0 nil nil at the end of the delay statement: export tp=oceanEval("delay(clip((VT(\"/V0p\") - VT(\"/V0n\")) 1e-09 2e-09) 0 1 \"rising\" clip((VT(\"/V1p\") - VT(\"/V1n\")) 1e-09 2e-09) 0 1 \"rising\")")
However, the oceanEval delay measurement statements seem to work well for single-ended circuits. Inverter delay measurements like this one: export tp=oceanEval("delay(VT(\"/V3\") 0.6 1 \"falling\" VT( \"/V4\") 0.6 1 \"rising\")") seem to work fine.
Can anyone help shed some light on this?
|