Changing Temperature with altergroups in SpectreMDL

J

jacunski

Guest
I'm wondering if anyone knows how to change temperature using
altergroups in SpectreMDL.

In the MDL User Guide tutorial section on running corners, I see that I
can run different altergroups as follows:

run alter_ss
run trans as trans_ss
run acrun as acrun_ss
run dcrun as dcrun_ss

run alter_ff
run trans as trans_ff
run acrun as acrun_ff
run dcrun as dcrun_ff

The problem is that I'd also like to change the temperature for each
corner, and I'm not sure that I can do that from within an altergroup.
(I believe that temp must be changed using an alter statement, which
resides outside of the altergroup.)

Any ideas?

Thanks.

-- Mark
 
I managed to figure this one out on my own, so I thought that I'd share
the solution with others.

Basically, to "set" the altergroup params, we simply run the
altergroup:

run alter_ss

and then we run the analyes:

run trans as trans_ss
run acrun as acrun_ss
run dcrun as dcrun_ss

So, if we want to set the temp, we need to run the alter as well. If
we have an alter statement named tss, then we'd do the following:

run alter_ss (runs the altergroup statement)
run tss (runs the alter statement, setting T)
run trans as trans_ss (run the various analyses).
run acrun as acrun_ss
run dcrun as dcrun_ss

So, although it'd be nice to be able to change the temp from within an
altergroup, you can see that there's a pretty simple way around it.

-- Mark
 
On 8 Feb 2005 06:48:55 -0800, "jacunski" <jacunskim@yahoo.com> wrote:

I'm wondering if anyone knows how to change temperature using
altergroups in SpectreMDL.

In the MDL User Guide tutorial section on running corners, I see that I
can run different altergroups as follows:

run alter_ss
run trans as trans_ss
run acrun as acrun_ss
run dcrun as dcrun_ss

run alter_ff
run trans as trans_ff
run acrun as acrun_ff
run dcrun as dcrun_ff

The problem is that I'd also like to change the temperature for each
corner, and I'm not sure that I can do that from within an altergroup.
(I believe that temp must be changed using an alter statement, which
resides outside of the altergroup.)

Any ideas?

Thanks.

-- Mark
I can't spot a way of doing it. I tried putting an options statement inside
the altergroup (but that is illegal, according to messages displayed by the
new spectre front end in IC5141 (+csfe argument) or MMSIM60; the old front end
silently ignores it).

I also tried doing:

parameters temper=27

myOptions options temp=temper

and then varying the parameter temper in the altergroup. That doesn't seem to
work either...

I think you'll need to file a service request to get this done somehow.

Andrew.
 
Andrew Beckett wrote:

On 8 Feb 2005 06:48:55 -0800, "jacunski" <jacunskim@yahoo.com> wrote:


I'm wondering if anyone knows how to change temperature using
altergroups in SpectreMDL.

In the MDL User Guide tutorial section on running corners, I see that I
can run different altergroups as follows:

run alter_ss
run trans as trans_ss
run acrun as acrun_ss
run dcrun as dcrun_ss

run alter_ff
run trans as trans_ff
run acrun as acrun_ff
run dcrun as dcrun_ff

The problem is that I'd also like to change the temperature for each
corner, and I'm not sure that I can do that from within an altergroup.
(I believe that temp must be changed using an alter statement, which
resides outside of the altergroup.)

Any ideas?

Thanks.

-- Mark


I can't spot a way of doing it. I tried putting an options statement inside
the altergroup (but that is illegal, according to messages displayed by the
new spectre front end in IC5141 (+csfe argument) or MMSIM60; the old front end
silently ignores it).

I also tried doing:

parameters temper=27

myOptions options temp=temper

and then varying the parameter temper in the altergroup. That doesn't seem to
work either...

I think you'll need to file a service request to get this done somehow.
I am trying, directly in an scs, to have temp assigned an expression of
"time". That failed so far. I can have model or instance parameters be
an expression of time, and probaly "trise" as well, but could not find
how to affect temp.

Is this a doomed attempt ? I know this was an issue with spice. Maybe
the spectre loops can simply not cope with that.

A solution involving MDL , or verilogA would be OK too. Maybe
converting time to electrical and then electrical to temperature ? I
just want to see hysteresis with temperature during a transient. Maybe
the same can be achieved with sweeps that reuse initial conditions ?

Any hint is welcome( except "get another job").
 
Frederic,

On Tue, 15 Feb 2005 00:37:06 +0100, fogh <adff_at@xs4all_dot.nl> wrote:

I am trying, directly in an scs, to have temp assigned an expression of
"time". That failed so far. I can have model or instance parameters be
an expression of time, and probaly "trise" as well, but could not find
how to affect temp.

Is this a doomed attempt ? I know this was an issue with spice. Maybe
the spectre loops can simply not cope with that.

A solution involving MDL , or verilogA would be OK too. Maybe
converting time to electrical and then electrical to temperature ? I
just want to see hysteresis with temperature during a transient. Maybe
the same can be achieved with sweeps that reuse initial conditions ?

Any hint is welcome( except "get another job").
It's currently not possible (at least not during a transient). There's an
enhancement PCR for this:

PCR: 328374
Title: change temperature during the simulation run

Since a number of models now have self-heating effects, there already is
some support for localized temperature change during a simulation, but a
general mechanism isn't there yet. There would be a need for model equations
to be updated to reflect the changed temperature, and that doesn't happen
right now.

Regards,

Andrew.
 
Andrew Beckett wrote:
Frederic,

On Tue, 15 Feb 2005 00:37:06 +0100, fogh <adff_at@xs4all_dot.nl> wrote:


I am trying, directly in an scs, to have temp assigned an expression of
"time". That failed so far. I can have model or instance parameters be
an expression of time, and probaly "trise" as well, but could not find
how to affect temp.

Is this a doomed attempt ? I know this was an issue with spice. Maybe
the spectre loops can simply not cope with that.

A solution involving MDL , or verilogA would be OK too. Maybe
converting time to electrical and then electrical to temperature ? I
just want to see hysteresis with temperature during a transient. Maybe
the same can be achieved with sweeps that reuse initial conditions ?

Any hint is welcome( except "get another job").
Since a number of models now have self-heating effects, there already is
some support for localized temperature change during a simulation, but a
I don t really need self heating here, though. I can assume that temp is a
function of time only, not electrical. Is the support in the simulator itself,
for all models including those that have no self heating features ?

general mechanism isn't there yet. There would be a need for model equations
to be updated to reflect the changed temperature, and that doesn't happen
right now.
So if I pass a parameter trise=myfunctionof(time) to all models that accept
trise, it will work ?
 
Frederic,

On Wed, 16 Feb 2005 18:44:22 +0100, fogh
<cad_support@skipthisandunderscores.catena.nl> wrote:

Andrew Beckett wrote:
Any hint is welcome( except "get another job").
Since a number of models now have self-heating effects, there already is
some support for localized temperature change during a simulation, but a

I don t really need self heating here, though. I can assume that temp is a
function of time only, not electrical. Is the support in the simulator itself,
for all models including those that have no self heating features ?

general mechanism isn't there yet. There would be a need for model equations
to be updated to reflect the changed temperature, and that doesn't happen
right now.

So if I pass a parameter trise=myfunctionof(time) to all models that accept
trise, it will work ?
No, neither of these things will work. As I said, the general mechanism is not
there, but it may be made easier to implement because of the work to implement
self-heating a while back.

Andrew.
 

Welcome to EDABoard.com

Sponsor

Back
Top