work around, 'define __TERMAL_NODE__ in bsim6.va, first successfull plot

to work around dangling "temper" node in bsim6
fixme, adms populates the termal node slot in the matrix even though
  __TERMAL_NODE__ was not defined, leading to a singular matrix.

fixme, adms
  $port_connected
is not supported, thus just claim it to be connected.

inp2m.c, upgrade to allow bsim6 with 5 nodes
This commit is contained in:
rlar 2017-05-14 11:50:30 +02:00 committed by Holger Vogt
parent ea4f5e165c
commit 7534ac394c
3 changed files with 9 additions and 3 deletions

View File

@ -12,9 +12,10 @@ vd d 0 dc=1.3
vg g 0 dc=0
vs s 0 dc=0
vb b 0 dc=0
vt t 0 dc=0
* --- Transistor ---
m1 d g s b n1 W=10e-6 L=10e-6
m1 d g s b t n1 W=10e-6 L=10e-6
* --- DC Analysis ---
.control

View File

@ -568,7 +568,7 @@
`define IPIoz(nam,def,uni, des) (*units=uni, type="instance", desc=des*) parameter integer nam=def from( 0:inf);
//`define __THERMAL_NODE__
`define __THERMAL_NODE__
`ifdef __THERMAL_NODE__
module bsim6(d, g, s, b, t);
@ -2382,7 +2382,7 @@ analog begin
AT_i = AT_i * (1.0 + Inv_L * ATL);
PTWGT_i = PTWGT_i * (1.0 + Inv_L * PTWGTL);
`ifdef __THERMAL_NODE__
if ($port_connected(t) == 0) begin
if (1 == 0) begin
`ifdef __SHMOD__
$strobe("5 terminal Module, while 't' node is not connected, SH is activated.");
`else

View File

@ -31,6 +31,11 @@ model_numnodes(int type)
return 6;
}
if (type == INPtypelook("BSIM6")) /* bsim6.va with __THERMAL_NODE__ */
{
return 5;
}
if (type == INPtypelook("VDMOS")) /* 3 ; VDMOSnames */
{
return 3;