Subject: Minutes of: V-AMS DevModeling meeting July 29
From: Geoffrey.Coram (Geoffrey.Coram@analog.com)
Date: Tue Jul 29 2003 - 09:55:26 PDT
Geoffrey Coram, Analog Devices
Ilya Yusim, Cadence
Jeroen Paasschens, Philips
John Moore, Agilent
Laurent Lemaitre, Motorola
Colin McAndrew, Motorola
Patrick O'Halloran, Tiburon
Peter Liebmann, Xpedion
0) pre-discussion of m factor
Peter said Cadence and Antrim have ways to handle $m in their
simulators; he and someone from Cadence (Ilya?) should write
this up so we can see if it's useful.
Colin says mismatch has to be handled explicitly by model-writer.
Mismatch goes as sqrt(m), but might be some other rule; model-writer
needs the $m factor to get a hold on this factor. Several on
subcommittee disagree.
Geoffrey found $m problems in Mextram (and Philips caught some of
their own); Laurent found $m problems in SP. Given these mistakes
in the basic code, is it reasonable to expect model-writers to do
mismatch correctly?
Colin will talk with Ken about paramsets and mismatch/Monte-Carlo.
1) Approval of minutes
2) Continued discussion of proposals
4.2 Global simulator parameter access
We are still looking for things to go on the list of "standard"
strings for $simparam.
4.3 Simulator specificity
The current syntax asks for $simulator("cadence_spectre")
Colin asked about the version number. Should that be part of
this request: $simulator("cadence_spectre_4.4.6.031103") ?
We believe that model-writers will not really want the actual
version string -- and have to keep track of the list of
acceptable version strings; we/they need a way to test if the
current version is later than a version where a bug was fixed.
Unfortunately, many simulators have a version string, which
makes comparison difficult. (We don't want to add string
inequalities to Sec 1.6 on string variables.)
Colin proposed that we add "version" and "subversion" as arguments
to $simparam (4.3, above), and leave it to the simulator to
determine how the (real) values are constructed from their strings.
Eg, Cadence uses "4.4.6.031103" as its sub-version string;
they could decide that
$simparam("version") = 446 or 44.6 or 4.46
$simparam("subversion") = 31103 or 0.031103
but this choice should be documented for the user. We want to be
clear that the use is to test "version > good_version" and thus
these numbers should increase monotonically and not change format.
The proposal also calls for a token to be `defined by the simulator,
similar to how C compilers pre-define things like -DSUN5 or -DSYSVR4
Cadence also has `ifdef __VAMS_ENABLE__ to distinguish OVI
Verilog-AMS 2.0 from Verilog-A 1.0.
So, we should be able to test
`ifdef CADENCE_SPECTRE
@(above(..))
`endif
because other simulators won't be able to parse the non-standard
above event (until it becomes standard).
Someone asked: do we really need $simulator, if we have `ifdef?
We couldn't come up with a reason; we should be able to do
everything with the `define. We need `define for the non-standard
syntax to be skipped.
4.4 $limit
I (Geoffrey) would love never to have to write limiting for another model,
but I think it's a long way off before the simulator will be able to
do it automatically. The subcommittee agreed with the sentiment.
Further, there are many nonlinear functions that don't look like exp()
and thus can't be done with limexp, particularly in self-heating BJT
models.
There was some concern that the proposal says the simulator is free
to ignore the $limit function, or use it as a hint that it should
do something (some other limiting?) with the quantity given as the
first argument. This freedom is present so that simulators may
move towards the ideal of automatically doing the right limiting
for their algorithms; though I may have a great limiting function
for ADICE, it might hinder convergence in Spectre, so Spectre
should be allowed to ignore my function and try to converge.
Also, the simulator may need to skip $limit on the last iteration
to guard against false convergence.
Peter thought that the thing being limited has to be a branch
voltage. However, the SPICE pnjlim function limits the quantity
vd/(n vt), I'm not sure we understood what he was trying to say.
We will discuss this further next time.
The next meeting will be August 12 at 11 AM Eastern
-- 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-1014
This archive was generated by hypermail 2b28 : Tue Jul 29 2003 - 09:56:33 PDT