datasheet2spice

Traceable datasheet-to-SPICE model generation for power MOSFETs and diodes, with validation benchmarks.

View the Project on GitHub lisiqi1983/datasheet2spice

Modeling Notes

VDMOS

The vdmos-static-fast emitter maps datasheet values into a compact power MOSFET model starter.

Typical mapping:

For ltspice and ngspice, this is emitted as a native .model ... VDMOS(...) card. For common, pspice, hspice, xyce, and experimental qspice, the emitter writes a portable MOS fallback subcircuit with fixed capacitances and a simple NMOS LEVEL=1 channel. The fallback is useful for topology and deck checks, but it is not equivalent to a native VDMOS implementation.

This family is fast, but not enough for high-fidelity switching waveforms without fitting.

ABM Basic

The abm-basic emitter uses:

The current capacitance implementation is a starter. For better convergence and accuracy, future work should replace table capacitances with smoothed charge functions.

See SPICE Dialects for the supported netlist dialects and the boundary between native VDMOS and portable fallback exports.

Diode Basic

The diode-basic emitter writes a portable two-terminal subcircuit around a native SPICE D model card. It maps datasheet values into starter parameters:

The generated diode model is intentionally compact and portable. It is suitable for early topology checks and first transient comparisons, then should be fitted against datasheet VF(IF), Cj(VR), thermal, and recovery curves.

Diode ABM Dynamic

The diode-abm-dynamic emitter keeps the portable two-terminal package shell but adds behavioral transient terms:

The starter fit maps CJO_pF, TRR_ns, QRR_nC, and IRRM_A into initial TAU_ns, RR_SCALE, and CJ_SCALE values. This can produce more realistic reverse-recovery transients than a plain diode TT card, but it is still a reviewable approximation. Tune it against datasheet recovery test conditions or measured waveforms before relying on switching-loss predictions.

Model Level Naming

This project avoids L1/L2/L3 names because they conflict with:

Instead use: