LSP is declared to be a "module" parameter,
yet has a default value which is calculated
from a "instance" parameter "L"
and a "model" parameter "XL"
which necessairly means, LSP is a "instance" parameter.
to avoid excessive divertion from the original source,
we use a local variable "LSP_i" which is set either to the default value
calculated from XL and L, or to the user specified "LSP" model parameter
adms doesn't seem to derive a "output" variable correctly.
(was zero)
this fix is for GM, GDS, GMBS only,
fixme, unknown which other variables suffer from the same problem
if there is a ddt() expression in the rhs
lhs <+ rhs
then adms might not set the matrix correctly.
It seems to work though, if ddt() is the only expression in rhs.
Tie the temp node to ground,
if there is no Pwr(t) contribution at all and __SHMOD__ is defined.
(avoid singular matrix, when either SHMOD=0 or RTH0 <= 0)
if there is a ddt() expression in the rhs
lhs <+ rhs
then adms might not set the matrix correctly.
It seems to work though, if ddt() is the only expression in rhs.
Note, in bsim6.va
the matrix slot [temp-node][temp-node] would need to be populated
with the `gth' term. (see mdump)
with the original expression this term disappeared.
If an instance node is "optional" then we might need to
allocate it ourself just the same as so called "internal" nodes.
Notably in bsim6.va the optional thermal node might be needed
when shmod is used, even if unconnected.
not integrated into configure.ac
because of its purpose to fail compilation.
recipe:
(compile "cd src/spicelib/devices/adms/badcode1/admsva && make -if my.mak to")
that is, undo these commits:
a57359e * bsimcmg_benchmark_test, remove unwanted files
1c02864 * bsimcmg, benchmark, D is an instance parameters !
6881264 * bsimcmg, benchmark, TFIN FPITCH and L are instance parameters !
1f5b6e7 * modelcard.nmos.1, bsimcmg benchmark, 'D' is an instance parameter !