ngspice-jit is a fork of ngspice (the mixed-level/mixed-signal circuit simulator) aimed at running raw foundry analog / mixed-signal top-level chips without hand-conversion. Its headline feature, and its name, is that it JIT-compiles the behavioral R/C value expressions a PDK writes (voltage/temperature- dependent poly-resistors, MIM capacitors, high-field tanh laws) into native OSDI devices at parse time, so the solver sees real charge- and current-conserving devices instead of fragile behavioral sub-circuits. It also adds Eldo-style topology reduction (dangling-passive removal), regular-expression selection in show/display/print/plot/write/save, a new 'devices' command, and assorted fixes. It also reads the stimulus dialect Eldo decks are written in, so an existing stimulus file can be run unchanged: cpp-style #ifdef, #define and #include directives selected with -D, PATTERN sources, .setbus and .sigbus bus stimuli, and bus or bus[n] node names inside expressions. Eldo-only output cards are accepted and ignored with one warning each instead of aborting the run. For post-layout decks with huge extracted RC parasitic networks it adds two optional parse-time simplifications, both off by default: .option minres= short every resistor below ohm, by merging its two nodes into one .option mincap= drop every capacitor below farad Sources and supply nets are protected, so a small resistor is never allowed to short two driven nets together. Shorting resistors removes nodes, which is what actually shrinks the matrix and the solve cost. See /usr/doc/ngspice-jit-VERSION/parasitic_reduction/. For large extracted analog decks it adds a convergence criterion that tests the circuit equations rather than the solution iterate: .option convtest=kcl accept an iteration when Kirchhoff's Current Law is satisfied, instead of when a branch current has stopped moving .option kclabsfloor= floor under that test's absolute term, needed only at tightened tolerances .option relref=sigglobal scale reltol by the largest signal of the same quantity in the circuit An ideal voltage source on a high-impedance node carries only leakage and displacement current, so its branch current never settles to abstol: the historic test keeps rejecting such an iteration even though the equations are solved, burning the iteration budget at every timepoint. convtest=kcl asks the physical question instead. All three default to the historic behaviour, so existing decks are unaffected. Type "help convtest" in the interactive shell for the details. The startup banner is tagged "[ngspice-jit fork: ...]" so the binary is distinguishable from a stock ngspice at a glance. The internal simulator name and version stay "ngspice-46" so .raw files remain compatible. The OSDI codegen invokes the system compiler (gcc) at run time; gcc is part of the Slackware base system. The osdi headers it needs are installed to /usr/share/ngspice/osdi and spinit is set to find them. Documentation shipped under /usr/doc/ngspice-jit-VERSION: examples/ - the upstream example-circuit tree (from the source) reference_manual/ - our HTML/PDF command reference (ngspice_manual.html / .pdf, tested vs ngspice-46), carried by the source tarball. The documentation above is not the original ngspice manual. The files: ngspice_manual.html ngspice_manual.pdf are a compact version of the ngspice manual. The main reason for this manual was to get all the commands checked against a real example. The same manual is online at https://alto555.codeberg.page/ngspice/ and typing "help" in ngspice prints both locations. In the header of the command you can also see whether the command works in interactive mode "ui", batch "batch" or both. Interactive commands like show, plot, device, showmod, display, print accept POSIX REGEX as argument. This was introduced because with a large circuit it is impossible to scroll up in the xterm to find the device or node across many thousand lines of output. ngspice-jit also re-introduces a mini-help on the command line which is based on the manual above. example: help wrdata wrdata - ASCII column data [ui only] Synopsis: wrdata file expr ... Writes the scale (time/frequency) and each expression as whitespace-separated columns of plain text - the easiest format to hand to gnuplot, a spreadsheet, or a script. Control mode only (no dot-card form). A double-quoted argument is a regular expression over the current plot - wrdata f.txt ".*#branch" writes every branch current as columns (same rule as print). See also: print, write (binary raw), gnuplot. Important: Installing ngspice-jit will overwrite the original ngspice executable and libraries. Homepage: https://codeberg.org/alto555/ngspice