Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] ocean run corner on the termination of an error is encountered!!!!

Status
Not open for further replies.

xianweng

Member level 1
Joined
Aug 26, 2011
Messages
33
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,535
Run with the ocean corner, write the results in txt, the error is encountered in some corner on the next stop, and how to display an error and then continue to run forever? Just use soon, thank you advice
 

Spectre / OCEAN are pretty lousy for command language and error
handling. It might be better for you to generate the corner runs as
individual jobs (PERL script and template, etc.?) to be sequentially
executed, independent of each other. Then you can pick up the
pieces later and revisit the ones that fail, for "why?".
 
Thank you for your answer, but the problem still not resolved, if I want to seek GB, GAIN
PM = phaseMargin (VF ("/ V"))
GB = gainProd (VF ("/ V"))
GAIN = value(dB20(VF("/V")) 1)
if(PM&&GB&&GAIN fprintf(p, "%f %f %f \n" PM GB GAIN) fprintf(p, "%s\n" "error"))
It is an error "Gain dose not cross one" when i run ocean,then the simulation stops, but when I comment GB GAIN ,It is still an error "Gain dose not cross one", but the simulation can continue

How to make the simulation continue with errors
 

Why do you need the "if" statement? You could just print PM, GB, and GAIN regardless of their value.
 

I believe the problem comes when these functions fail to evaluate, then the loop
dies and you get to start over. Error handling.
 

Phase margin and gain margin expressions are valid only when gain crosses unity and phase crosses -180. if these are not satisfied spectre will throw an error.
use an "if" statement to check if gain crossed unity and then calculate PM else set the output to some value you like.

i dont know why you have " if(PM&&GB&& ....." this expression.
 

Because the error when calculating PM and GB .....,then PM GB will be nil. i think " if(PM&&GB&& ....." this expression can make simulation continue with errors. it does when i comment GB GAIN ,but it does work when i dont comment GB GAIN.
 

when there is an error in calculation the output is "eval" (evaluation) error not nil.
 

You need an error handling statement like the one proposed by the c@dence forum:
Code:
errset(
{
   PM=phaseMargin(VF("/out"))
   fprintf(fp "Phase margin = %f\n" PM)
}
t
)
 
Thank you for you help !!The problem has been solved!!!
i wort the ocean like this :
errset(PM=phaseMargin(VF("/out")))
errset(GB = gainProd (VF ("/ V")))
errset(GAIN = value(dB20(VF("/V")) 1))
if(PM&&GB&&GAIN fprintf(p, "%f %f %f \n" PM GB GAIN) fprintf(p, "%s\n" "error"))
thus,the ocean can continue even with errors!!
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top