using of update.s - file for spectre?

F

Frank Nitsche

Guest
Hi everybody,

we changed the analog simulator from spectreS to spectre. In the past
(when we used spectreS) we took the updates.s file for corner analysis.
We declared a design variable named "corner" and wrote an update.s file
with "if...then" statements to select the parameter set (models, temp
and vdd variation) according to the variable "corner". Then we made a
parametric analysis over the variable "corner". This worked fine in the
past.
Now we've changed to spectre and we found no option to use an update.s
file. We tried to make a corner analysis in the same manner with an
ocean script but it doesn't work. We can select a parameter set using
the modelFile statement within a case statement but we found no
possibility to force the paramAnalysis statement to use this selection.

The ocean script lookes like this:

simulator( 'spectre )
design( "/sun35/sd3g/rundirs/CORNERtest/spectre/schematic/netlist/netl
ist")
resultsDir( "/sun35/sd3g/rundirs/CORNERtest/spectre/schematic" )

desVar( "corner" 1 )
cornerType = evalstring( desVar("corner"))
modelle = case( cornerType
(1 modelFile('("/home2/work/MODELL/xc06.scs" "tm")))
(2 modelFile('("/home2/work/MODELL/xc06.scs" "ws")))
)
analysis('dc ?saveOppoint t )
temp( 27 )
paramAnalysis("corner" ?values '(1 2 ))
paramRun()
exit()


The envOption( 'updateFile ...) statement doesn't work with spectre.
How can we force the paramAnalysis statement to use the right modelFile
selection?
--
Best regards
=========================================================
Dr. Frank Nitsche
Technical Manager Chipdesign

MAZeT GmbH Email: mailto:nitsche@MAZeT.de
Göschwitzer Str. 32 Tel : (3641) 2809 0
D-07745 Jena Fax : (3641) 2809 12
URL: http://www.mazet.de
=========================================================
 
Frank,

There's no such thing as an update file in the spectre direct interface. That
was very much a cdsSpice sort of thing.

However, you could use the corners tool to sweep through the different
corners - this would be a clean approach.

Alternatively, you need to use the spectre conditional statements (either
the structural if, or the ternary condition?true_expr:false_expr) method
to change the models used based on a spectre parameter. Note however
that you can't do something like this:

if (corner==1) {
include "..." "ss"
}

because the if statement can only be used with instances inside (in general).

You'll probably need to restructure your model files quite a bit if you want to
select the corner with a design variable; doing it with the corners tool (or
Aptivia) is rather cleaner and can then just use sections in the model file -
like it seems you are doing.

Sorry for the quick and undetailed answer - I'm on a plane and the battery's
about to run out!

Andrew.

On Tue, 30 Sep 2003 12:04:43 +0200, Frank Nitsche <nitsche@MAZeT.de> wrote:

Hi everybody,

we changed the analog simulator from spectreS to spectre. In the past
(when we used spectreS) we took the updates.s file for corner analysis.
We declared a design variable named "corner" and wrote an update.s file
with "if...then" statements to select the parameter set (models, temp
and vdd variation) according to the variable "corner". Then we made a
parametric analysis over the variable "corner". This worked fine in the
past.
Now we've changed to spectre and we found no option to use an update.s
file. We tried to make a corner analysis in the same manner with an
ocean script but it doesn't work. We can select a parameter set using
the modelFile statement within a case statement but we found no
possibility to force the paramAnalysis statement to use this selection.

The ocean script lookes like this:

simulator( 'spectre )
design( "/sun35/sd3g/rundirs/CORNERtest/spectre/schematic/netlist/netl
ist")
resultsDir( "/sun35/sd3g/rundirs/CORNERtest/spectre/schematic" )

desVar( "corner" 1 )
cornerType = evalstring( desVar("corner"))
modelle = case( cornerType
(1 modelFile('("/home2/work/MODELL/xc06.scs" "tm")))
(2 modelFile('("/home2/work/MODELL/xc06.scs" "ws")))
)
analysis('dc ?saveOppoint t )
temp( 27 )
paramAnalysis("corner" ?values '(1 2 ))
paramRun()
exit()


The envOption( 'updateFile ...) statement doesn't work with spectre.
How can we force the paramAnalysis statement to use the right modelFile
selection?
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 
How many years has Cadence been trying to kill off
socket service and the SLICE (cdsSpice) command
language, now? Too bad they can't understand
that people cling to it because it >>worked way
better for the designer and the device modeler<<
than what we have now. What we have now is a
programmer's idea of how circuit designers ought
to want to work. But then, I'm one who thought
everything went to hell when they ditched the
original SDA legacy framework for DFII, so what
could I possibly know about what makes good CAD?

Or, maybe, too bad they do understand that cdsSpice /
SLICE gave people for free, the ability to implement
functionality that Cadence would much rather charge
for. Like, with a real command language that was
made to tolerate syntax and provide access to the
simulator, corner models are a bone simple breeze
and a poor man's Monte Carlo is simple data
structures & readable, abstracted models. How
much would Cadence rather you pay for a separate
Monte Carlo tool license, that is no better than
what your device modeling group used to make in
cdsSpice?

Seems to me that there was supposed to be this
spiffy new simulation interface that was going to
give back some of the capability to do scripted &
interactive control, analysis, etc.? Forget the
cute name now. But in 5.0 it looks like the old,
same old - spectre locked in its ivory tower,
ocean clumsy and tedious and playing poorly with
the real time design system, and what designers
really want, moldering in a locked drawer.

All you designers who secretly yearn to be full-time
SKILL programmers, raise your middle finger.

I wonder whether a SmartSpice integration might
give you a better option. From what I gather, their
simulator language is not as limited or as brittle.
And they seem more interested in the analog designer
and the device engineer.

















Andrew Beckett <andrewb@DELETETHISBITcadence.com> wrote in message news:<m37qnvk3gjho0l0lum0drn08dgr3e4q66f@4ax.com>...
Frank,

There's no such thing as an update file in the spectre direct interface. That
was very much a cdsSpice sort of thing.

However, you could use the corners tool to sweep through the different
corners - this would be a clean approach.

Alternatively, you need to use the spectre conditional statements (either
the structural if, or the ternary condition?true_expr:false_expr) method
to change the models used based on a spectre parameter. Note however
that you can't do something like this:

if (corner==1) {
include "..." "ss"
}

because the if statement can only be used with instances inside (in general).

You'll probably need to restructure your model files quite a bit if you want to
select the corner with a design variable; doing it with the corners tool (or
Aptivia) is rather cleaner and can then just use sections in the model file -
like it seems you are doing.

Sorry for the quick and undetailed answer - I'm on a plane and the battery's
about to run out!

Andrew.

On Tue, 30 Sep 2003 12:04:43 +0200, Frank Nitsche <nitsche@MAZeT.de> wrote:

Hi everybody,

we changed the analog simulator from spectreS to spectre. In the past
(when we used spectreS) we took the updates.s file for corner analysis.
We declared a design variable named "corner" and wrote an update.s file
with "if...then" statements to select the parameter set (models, temp
and vdd variation) according to the variable "corner". Then we made a
parametric analysis over the variable "corner". This worked fine in the
past.
Now we've changed to spectre and we found no option to use an update.s
file. We tried to make a corner analysis in the same manner with an
ocean script but it doesn't work. We can select a parameter set using
the modelFile statement within a case statement but we found no
possibility to force the paramAnalysis statement to use this selection.

The ocean script lookes like this:

simulator( 'spectre )
design( "/sun35/sd3g/rundirs/CORNERtest/spectre/schematic/netlist/netl
ist")
resultsDir( "/sun35/sd3g/rundirs/CORNERtest/spectre/schematic" )

desVar( "corner" 1 )
cornerType = evalstring( desVar("corner"))
modelle = case( cornerType
(1 modelFile('("/home2/work/MODELL/xc06.scs" "tm")))
(2 modelFile('("/home2/work/MODELL/xc06.scs" "ws")))
)
analysis('dc ?saveOppoint t )
temp( 27 )
paramAnalysis("corner" ?values '(1 2 ))
paramRun()
exit()


The envOption( 'updateFile ...) statement doesn't work with spectre.
How can we force the paramAnalysis statement to use the right modelFile
selection?
 

Welcome to EDABoard.com

Sponsor

Back
Top