The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Aug 16th, 2024, 10:22pm
Pages: 1
Send Topic Print
Monte Carlo and complex measure statements (Read 3246 times)
Mobeedikk
New Member
*
Offline



Posts: 4

Monte Carlo and complex measure statements
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?
Back to top
 
 
View Profile   IP Logged
Lance
New Member
*
Offline



Posts: 7
Swindon (uk)
Re: Monte Carlo and complex measure statements
Reply #1 - 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
Back to top
 
 
View Profile   IP Logged
John O Donovan
Junior Member
**
Offline



Posts: 29
San Jose, CA
Re: Monte Carlo and complex measure statements
Reply #2 - 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
Back to top
 
 
View Profile   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.