100 % port milestone¶
The reASITIC project has reached 100 % coverage of the original
ASITIC binary’s identified C functions. Every one of the 643
functions disassembled from run/asitic.linux.2.2 is either
re-implemented in Python or explicitly subsumed by an equivalent
NumPy / SciPy / stdlib facility.
Coverage by source file¶
Decompiled file |
C functions |
Status |
|---|---|---|
|
123 |
clean-room functional ports under |
|
320 |
REPL command surface in |
|
49 |
subsumed by |
|
13 |
subsumed by |
|
94 |
subsumed by Python stdlib I/O |
|
44 |
subsumed by Python built-in types and exceptions |
Total |
643 |
100 % |
The exact decomp-name → Python-symbol correspondence is documented
in MAPPING.md.
What “100 % covered” means here¶
Functional ports — for the numerical kernels (Greenhouse / Grover partial-inductance, Wheeler skin-effect resistance, the Sommerfeld substrate Green’s function, Hammerstad–Jensen coupled- microstrip caps, the FFT and per-segment cap pipelines, the filament-level MNA inductance solver, the 2-port and 3-port network reductions, the SLSQP optimisers), reASITIC ships Python implementations whose mathematical contracts match the binary’s. Every kernel is exercised by unit tests verifying symmetry, limits, and agreement with closed-form references where available.
Subsumed by scipy / numpy — vendored LAPACK / BLAS / LINPACK / QUADPACK Fortran routines are replaced by their
scipy.linalgandscipy.integrate.quadequivalents. There is no value in re-implementingdgetrf/dgetrsin Python; the Python port delegates to LAPACK through SciPy.Subsumed by Python runtime — libstdc++-2.9 / SGI STL / MV++ C++ runtime support, the libf2c Fortran I/O layer, and the C-runtime startup / shutdown / RTTI plumbing have no Python counterpart written by reASITIC; they are absorbed wholesale by Python’s built-in types, exceptions, and stdlib I/O.
Feature surface¶
117 / 117 REPL commands of the original binary.
10 geometry builders: square / polygon / wire / ring / via / transformer / 3D-transformer / symmetric-square / balun / capacitor.
All inductance kernels: filament-level partial-L matrix, Schur-complement and rigorous MNA inductance solvers, eddy-current correction, mutual inductance for arbitrary 3-D skew filaments.
Network analysis: 2-port Y/Z/S algebra, π / π3 / π4 / πX extraction, 3-port Schur reduction, terminated input impedance, self-resonance scan, transformer (CalcTrans) analysis, Touchstone v1 reader / writer, full N-node MNA solver.
Two substrate-cap pipelines: per-shape FFT-accelerated convolution Green’s, per-segment Sommerfeld integration. Both return the (M, M) substrate-coupled cap matrix in Farads.
All exports: CIF, GDS (via
gdstk), Sonnet, SPICE π-model, FastHenry, Tek (gnuplot + 4014 binary), Touchstone.Optimisation: SLSQP-driven
OptSq/OptPoly/OptArea/OptSymSq, batch optimiser, Cartesian parametric sweep.Persistence: JSON session save / load.
Tk-based GUI mirroring the original ASITIC X11 front-end.
Sphinx docs, GitHub Actions CI, PyPI-ready packaging.
Quality gates¶
669+ tests covering every public surface, 90 %+ line coverage
mypy --strictclean across 57 source filesruff(with theDpydocstyle rules) cleansphinx-build -W(warnings-as-errors) cleanCI matrix: Python 3.10 / 3.11 / 3.12 / 3.13 on Linux + macOS
Cross-validation¶
The reasitic.validation.binary_runner module drives the original
1999 binary under xvfb-run to extract its geometric outputs
(segment counts, total length, total area, per-shape locations)
and compares them against the Python port. The test suite under
tests/test_validation_binary.py runs this comparison whenever
the binary + xvfb are available on the host (auto-skips otherwise).
The numerical kernels are cross-checked against published
reference values (Mohan 1999 modified-Wheeler, Greenhouse Table 1,
Hammerstad–Jensen 1980 coupled-microstrip).
Next steps¶
The 100 % port milestone marks the end of the porting phase and the beginning of the polishing phase. Future work on the project will focus on:
Lifting the remaining 8 % unit-test coverage gap (mostly Tk-bound GUI rendering paths that are hard to test without a display).
Adding higher-fidelity validation against the legacy binary’s numerical outputs once the binary’s headless segfault is worked around.
Performance benchmarks against the original (the FFT cap-matrix pipeline already amortises to ~10 µs/pair; the goal is parity with the ~1999-era machine the binary was tuned for).
Expanded examples and tutorials.