Without this entry, OSDI BSIM-BULK / BSIM-CMG models fall through
to model_numnodes()'s default 'return 4'. The two consumers in
INP2M() (the 'too many nodes' check and the node-binding loop)
then set up only 4 GENnode slots on the instance. The OSDI
runtime's node_mapping[] reads its 5-port descriptor and picks
up a stale/wrong node index for port 5 — effectively rewiring
the body (or temperature) terminal to a random node.
Symptom: PMOS body diode forward-biased through the supply.
A simple CMOS inverter draws amperes in steady state and fails
to switch rail-to-rail. This branch demonstrates the bug
(without this commit) and the fix (with it).
Also add bsimcmg_va to the model-type allowlist in INP2M() for
consistency with bsimbulk (which was added in the previous
commit).
inpdomod.c: Add case 77 to the MOS level switch so that .model lines
with level=77 resolve to the bsimbulk OSDI device type instead of
leaving INPmodType=-1. Without this, BSIM-BULK model cards are
registered with an invalid type and instances later fail to load.
inp2m.c: Add bsimbulk to the model-type allowlist in INP2M() so that
MOSFET instances using an OSDI BSIM-BULK model (M-prefix) are accepted
instead of rejected with 'incorrect model type'.
This is the minimum subset needed for a single-model BSIM-BULK test
case to parse. The multi-bin handling change to inpgmod.c that
accompanied the original fix is omitted here — it is unrelated to the
PMOS-polarity wiring demonstration this branch is for.
- commands.c: register pre_osdi as alias for osdi command so existing
scripts using pre_osdi continue to work
- inpcom.c: add set sourcepath to the preprocessor case-preservation
exception list; the lowercasing pass was corrupting uppercase letters
in paths (e.g. VA_test -> va_test), causing source to fail on
case-sensitive filesystems