The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl Simulators >> Circuit Simulators >> Monte Carlo and complex measure statements https://designers-guide.org/forum/YaBB.pl?num=1177083923 Message started by Mobeedikk on Apr 20th, 2007, 8:45am |
Title: Monte Carlo and complex measure statements Post by Mobeedikk on Apr 20th, 2007, 8:45am 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? |
Title: Re: Monte Carlo and complex measure statements Post by Lance on Jan 25th, 2008, 3:10am I'm not entirely sure but this may be a similar problem to what I am experiencing but with a parametric analysis. When you have nested functions like you have they work perfectly well on single runs. As soon as i have run a parametric analysis then an extra array dimension is involved and nesting functions don't seem to work here. Here is an exmaple that works ok on a manual run but falls over after a parametric analysis; startUpTime = settlingTime(v("/ipbp5u<0>"),0,t,15u,t,0.01,nil,nil) integ(IT("/V0/MINUS"),0,startUpTime) startUpTime is now an array of results from each parametric run (not a single number) and cannot be passed to a function! I pressume this would give a similar problem with montecarlo Let me know if this is a similar problem and whether you have solved it yet L |
Title: Re: Monte Carlo and complex measure statements Post by John O Donovan on Jan 30th, 2008, 9:33am Hi, Could you post the analysis portion of the netlist ? I would guess that there is an info analysis with the name 'subckts', and it is trying to evaluate the export statements on the result of this analysis. If you delete the various info analyses and rerun Spectre standalone, will that work ? Regards, John |
The Designer's Guide Community Forum » Powered by YaBB 2.2.2! YaBB © 2000-2008. All Rights Reserved. |