Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Running a parametric simulation over corners in OCEAN

438 views
Skip to first unread message

Svenn Are Bjerkem

unread,
May 25, 2005, 8:33:34 AM5/25/05
to
Hi,

how would I be able to perform a parametric analysis over corners using
OCEAN?

I have 4 corner combinations, highVoltage, lowVoltage, slowTech and
fastTech and I would like to run a parametric sweep in each of these 4
cases.

I tried the following:

loadPcf("./cornerTool.pcf")
loadDcf("./cornerTool.dcf")
paramAnalysis("sdel" ?start 350p ?stop 400p ?lin 20 )
cornerRun()

but that did only cause the corner tool to run once on each corner.

Is there support for this at all in OCEAN? The only other way would be
to use two nested SKILL foreach loops as far as I can see, but then I
have a problem presenting my data as I am characterising the setup and
hold times of a flip-flop.

Or there is a better way to find setup/hold time of flip flops over
corners than sweeping the data vs. the clock.

--
Svenn

Satya Mishra

unread,
May 26, 2005, 11:29:54 AM5/26/05
to
>>>>> "Svenn" == Svenn Are Bjerkem <sven...@bjerkem.de> writes:
Svenn> Date: Wed, 25 May 2005 14:33:34 +0200

Svenn> Hi,

Svenn> how would I be able to perform a parametric analysis over
Svenn> corners using OCEAN?

Svenn> I have 4 corner combinations, highVoltage, lowVoltage,
Svenn> slowTech and fastTech and I would like to run a parametric
Svenn> sweep in each of these 4 cases.

Svenn> I tried the following:

Svenn> loadPcf("./cornerTool.pcf") loadDcf("./cornerTool.dcf")
Svenn> paramAnalysis("sdel" ?start 350p ?stop 400p ?lin 20 )
Svenn> cornerRun()

Svenn> but that did only cause the corner tool to run once on each
Svenn> corner.

Svenn> Is there support for this at all in OCEAN? The only other
Svenn> way would be to use two nested SKILL foreach loops as far
Svenn> as I can see, but then I have a problem presenting my data
Svenn> as I am characterising the setup and hold times of a
Svenn> flip-flop.

Svenn> Or there is a better way to find setup/hold time of flip
Svenn> flops over corners than sweeping the data vs. the clock.

I have no experience measuring setup/hold times.

But the way to do what you are describing, as I understand, is to run
spectre from the command line. It's pretty straightforward to setup
loop of sweeps.

The other more cumbersome, expensive and GUI way is to use Aptivia.

Satya

--
Remove XXX and YYY to get my address

Svenn Are Bjerkem

unread,
May 27, 2005, 5:21:23 PM5/27/05
to
In article <vv0hdgq...@sm62.nsc.com>,
Satya Mishra <snmi...@XXXhotYYYpop.com> wrote:

> I have no experience measuring setup/hold times.

What I do is to have a clock and data toggle for some periods, the clock
at twice the speed as the data, both generated with pulse elements. The
data source delay time is a variable. This variable is then swept over a
time range that spans a few time units before the clock edge to a few
time units behind the clock edge. This is done separately for the setup
time and the hold time. I then use the delay() calculator function to
plot the delay between the clock edge (DtoC) and the data edge and the
clock edge and the output edge (CtoQ). I then change the x-axis in awd
to plot CtoQ and CtoQN vs DtoC. This give a nice curve that show what
happens with the output as the data edge moves in the area of the clock
edge. Depending on the kind of flip-flop you investigate, you have to
know where on the time axis you have to simulate, but that is an initial
iterative process that is done interactively. It gets tedious as you
want to check vs temperatures, corners and voltages. And you would want
to have all the CtoQ/CtoQN vs DtoC in the same plot.

>
> But the way to do what you are describing, as I understand, is to run
> spectre from the command line. It's pretty straightforward to setup
> loop of sweeps.

I run spectre by loading an OCEAN script on the CIW command line. I am
trying to have create a object menu for ocean scripts (I asked a
question about this some time ago and got some hints that I am working
on.) I am not so far that I can start ocean from a menu item in the
library manager, but I can at least edit them as text files from the
library manager. That is a great advantage as I have control over the
location of the scripts.

So far I have started each parametric from a loop across the corners and
voltages. I then get a bunch of simulation results that I can select in
the Select Results menu in ADE and then just perform an update in the
awd window.

>
> The other more cumbersome, expensive and GUI way is to use Aptivia.

Aptiva is something I have to learn more about.

--
Svenn

S. Badel

unread,
May 27, 2005, 4:05:09 AM5/27/05
to

>
> Or there is a better way to find setup/hold time of flip flops over
> corners than sweeping the data vs. the clock.
>

SpectreMDL has a search facility that allows to sweep a parameter
(ie, setup time) until a condition is met (ie, failure).
This can be used to characterize setup and hold times, and is even
shown as an example in the manual.
You can also easily nest loops/corners etc...

I know it's possible to have an MDL control file with the ADE GUI,
but I don't know if one can do it in OCEAN nor how the results can
be retrieved, since I only ran MDL from the command-line.

stéphane

S. Badel

unread,
May 28, 2005, 4:31:37 PM5/28/05
to
>
> I am
> trying to have create a object menu for ocean scripts (I asked a
> question about this some time ago and got some hints that I am working
> on.) I am not so far that I can start ocean from a menu item in the
> library manager, but I can at least edit them as text files from the
> library manager. That is a great advantage as I have control over the
> location of the scripts.
Svenn, when you posted that question, I thought the idea was a good one.
I wrote the code for registering an OCEAN viewType (it's not a big
piece). so far, when you open the cellview in edit mode, it opens the
text editor, and when you
open it read-only it runs the script. Also, when you create a new one
you get a template script.
I thought of popping a form with different actions to take on the script,
but that might be overkill as I don't know what to do with it other
than edit and run.
Would you have any suggestions? Maybe we can join efforts on this one?

> So far I have started each parametric from a loop across the corners and
> voltages. I then get a bunch of simulation results that I can select in
> the Select Results menu in ADE and then just perform an update in the
> awd window.

If your concern is about plotting, then you can use the awv* functions
to set-up your awd window scriptically.

stéphane

Svenn Are Bjerkem

unread,
May 29, 2005, 6:21:16 AM5/29/05
to
In article <4298d...@news.bluewin.ch>,
"S. Badel" <stephan...@REMOVETHISepfl.ch> wrote:

> Svenn, when you posted that question, I thought the idea was a good one.
> I wrote the code for registering an OCEAN viewType (it's not a big
> piece). so far, when you open the cellview in edit mode, it opens the
> text editor, and when you
> open it read-only it runs the script. Also, when you create a new one
> you get a template script.

I got a tarantella connnection to work last week so that I can log in
from home. That's convenient in order to check out such things in a
quiet environment at home. Alas, at home there is less understanding for
such activities ...

> I thought of popping a form with different actions to take on the script,
> but that might be overkill as I don't know what to do with it other
> than edit and run.
> Would you have any suggestions? Maybe we can join efforts on this one?

Of course, we can do that, but I warn you that my contribution will
mostly be to copy your work into my skill directory and load them from
.cdsinit. I am no great ressource in SKILL or OCEAN coding.

>
> > So far I have started each parametric from a loop across the corners and
> > voltages. I then get a bunch of simulation results that I can select in
> > the Select Results menu in ADE and then just perform an update in the
> > awd window.
> If your concern is about plotting, then you can use the awv* functions
> to set-up your awd window scriptically.

I think I managed to do that when I worked at Continental. Problem is
that I left all scripts behind when I left. I have been thinking about
how to avoid that happening again. I am looking for a proper wiki to
use. I use usemod wiki myself at work, but I need something less prone
to spam on the 'net.

--
Svenn

Svenn Are Bjerkem

unread,
May 29, 2005, 6:31:16 AM5/29/05
to
In article <4296d4b4$1...@epflnews.epfl.ch>,
"S. Badel" <stephan...@REMOVETHISepfl.ch> wrote:

> >
> > Or there is a better way to find setup/hold time of flip flops over
> > corners than sweeping the data vs. the clock.
> >
>
> SpectreMDL has a search facility that allows to sweep a parameter
> (ie, setup time) until a condition is met (ie, failure).
> This can be used to characterize setup and hold times, and is even
> shown as an example in the manual.
> You can also easily nest loops/corners etc...

I have used this kind of measurement language in an in-house simulator
at work (hspice-like). It is quite convenient, but really a hassle to
learn as each simulator has their own way of describing this kind of
measurement.

>
> I know it's possible to have an MDL control file with the ADE GUI,
> but I don't know if one can do it in OCEAN nor how the results can
> be retrieved, since I only ran MDL from the command-line.

Command line is almost impossible to accept because of the grid
environment I work in. I also work on so many test cases at the same
time that I need some way to organize the scripts. The library manager
is simply the best as it is a central part of the Cadence tools that I
use.


--
Svenn

vippe...@gmail.com

unread,
Oct 16, 2015, 2:12:08 AM10/16/15
to
Hi Svenn. Could you help in measuring setup time and gold time in Cadence Virtuoso?

- Wojciech Dembiński
0 new messages