IBIS Semiconductor Buffer Modeling (.ibs)
@modelscript/ibis (languages/ibis) provides zero-regex parsing, non-linear driver I/V interpolation, dynamic VT ramp synthesis, package parasitics RLC lowering, and Modelica 3.x projection for ANSI/EIA-656 IBIS 3.2–7.1 input/output buffer information specifications.
Supported Extensions & Standards
| Extension | Format | Description |
|---|---|---|
.ibs | IBIS Device Specification | Behavioral non-linear I/V tables, switching ramps, package parasitics, pin mappings |
Key Capabilities
1. Behavioral Non-Linear Driver & Receiver Formulation
- Replaces proprietary transistor-level SPICE netlists with behavioral table lookups that preserve intellectual property while accelerating high-speed digital signal integrity analysis:
where and are time-varying switching coefficients derived from the [Ramp]and[Rising/Falling Waveform]tables: - Implements piecewise-linear monotonic cubic spline interpolation across Min/Typ/Max process, voltage, and temperature (PVT) operating corners.
2. Multi-Pin Package Parasitics
- Models chip-to-board interconnect parasitics via lumped RLC matrices and per-pin package values:
where is the silicon die capacitance.
3. Direct DAE Lowering
- Emits combined package RLC and non-linear buffer DAE equations into
@modelscript/runtime'sDAEBuilderlinear memory arena. - Enables co-simulation with multi-port S-parameter channel macromodels (
@modelscript/touchstone) to assess eye diagrams, timing jitter, and simultaneous switching noise (SSN).
4. Bidirectional Modelica 3.x Projection
- Projects IBIS buffers into
Modelica.Electrical.Analognon-linear controlled current sources and package RLC networks.
Pre-Flight Diagnostics
The IBIS validator enforces monotonic I/V behavior and physical bounds:
9 rules2 warning7 error Run with msx ibis lint
| Code | Rule | Severity | Message |
|---|---|---|---|
M8303 | non-monotonic-iv-curve | warning | IBIS model '<modelName>' contains non-monotonic slope in '<tableType>' table between <value>V and <value>V. |
M8305 | missing-pin-model-binding | error | Component pin '<pinName>' references undefined model '<modelName>'. |
M8316 | missing-component-pins | error | Component '<compName>' declaration has no defined pins in '[Pin]' section. |
M8317 | invalid-voltage-range | error | IBIS model '<modelName>' has invalid [Voltage Range]: min (<value>V) is greater than max (<value>V). |
M8318 | clamping-diode-divergence | warning | Model '<modelName>' clamp table '<clampType>' diverges to excessive current (<value>A). |
M8319 | missing-pullup-pulldown | error | Driver model '<modelName>' of type '<modelType>' is missing both I/V tables ([Pullup]/[Pulldown]) and [Ramp] slew rates. |
M8320 | negative-die-capacitance | error | IBIS model '<modelName>' specifies non-positive die capacitance C_comp '<val>'. |
M8321 | negative-package-parasitic | error | Component '<compName>' package parasitic '<param>' has non-positive value '<val>'. |
M8322 | no-models-defined | error | IBIS file contains no buffer [Model] definitions. |
Generated from languages/ibis/src/errors.ts. All languages →
CLI Usage
bash
# Inspect pins, models, and package parasitics in an IBIS file
msx ibis inspect Ddr4Driver.ibs
# Run pre-flight linting and table monotonicity checks
msx ibis lint Ddr4Driver.ibs
# Evaluate driver dynamic currents and output resistance
msx ibis eval Ddr4Driver.ibs
# Lower buffer and package equations to ModelScript linear DAE arena
msx ibis to-dae Ddr4Driver.ibs
# Project into Modelica 3.x electrical analog component
msx ibis to-modelica Ddr4Driver.ibs -o Ddr4Buffer.mo
