V-AMS Compact Modeling Extensions subcommittee
Minutes of July 27, 2004
Attendees:
Geoffrey Coram, Analog Devices
Ilya Yusim, Cadence
Srikanth Chandrasekaran, Freescale
Jim Barby, U Waterloo
1) Approval of previous minutes (July 13)
2) Ilya's proposal to disable automatic m-factor scaling:
Ilya conceded that it was a bad idea to use a compiler
directive for this, since compiler directives are supposed
to be in effect until turned off by another `directive,
and as such could not be restricted to the analog block.
One possibility would be to leave automatic m-factor scaling
if the reference to $mfactor is only in a conditional test:
if (rd/$mfactor > rmin)
I(rd) <+ V(rd)/rd; // auto-scaled by mfactor
else
V(rd) <+ 0;
whereas a reference to $mfactor in an assignment (specifically
one used in a contribution) would turn off the auto-scaling:
IS_final = IS * $mfactor;
I(dio) <+ IS_final * (limexp(V(dio)/$vt()) -1);
The issue of turning off auto-scaling was brought up by
Jeroen of Philips, who pointed out that the currents and
derivatives have to be scaled on each iteration of each
timepoint.
However, our feeling is that:
1) only a small fraction of devices in the circuit use mfactor!=1
and the simulator should know to skip the scaling if mfactor=1
2) the number of operations is either small in an absolute sense
(scaling the resistor current and conductance, instead of the
effective resistance, doubles the work, but it's still not a
lot of operations), or is small relative to the work in the
module (eg, in Mextram, where a few calls to pow() or exp()
wash out the effect of the extra multiplies).
Hence, we are leaning towards *never* turning off the automatic
m-factor scaling. If Philips can provide some benchmark info
to say it does make a significant difference for some circuit,
we would be open to a new proposal.
The simulator shall issue a warning if it detects misuse of
the mfactor (ie, double-scaling).
3) The system parameters (mfactor, hflip, etc) need to have
their allowed values specified in Table 10-6. Also, add a
note that $angle is in degrees, but trig functions are in
radians. Common $angles are 30,45,60,90 -- designers can't
use `M_PI_2 in the schematic environment, but anyone
sophisticated enough to be writing a paramset with $angle
can be taught to use `M_TWO_PI.
4) Comments from last night's main AMS committee meeting:
The main issue from last night is the use of variables
(from a paramset or a constants module) for setting
parameters. The current specifications of $random and
$rdist_* says they are not constant_expressions, so
their values have to be assigned to variables. However,
it is a major language issue to specify that these
variables, even in special contexts, be allowed to be used
to initialize parameters. On the other hand, the $rdist_
functions require the seed to be an inout argument, so it's
also hard to make them allowed as constant_expressions.
Sri will check with the compiler folks at his company.
5) Next meeting: August 10, 9AM ET.
The main AMS committee will be meeting on August 2, 4:30PM PT;
we are running out of time to submit the LRM to the Accellera
board for the September meeting.
-Geoffrey
-- Geoffrey J. Coram, Ph.D. Senior CAD Engineer Analog Devices, Inc. Geoffrey.Coram@analog.com 804 Woburn St., MS-422, Tel (781) 937-1924 Wilmington, MA 01887 Fax (781) 937-1014Received on Tue Jul 27 11:58:28 2004
This archive was generated by hypermail 2.1.8 : Tue Jul 27 2004 - 11:58:49 PDT