Support Tiers¶
EVAS is an event-driven voltage-domain simulator. Benchmark reports should use the support tiers below instead of treating every Verilog-A/AMS row as one flat support target.
Unsupported-feature diagnostics include a stable [support-tier: <name>]
suffix in text output and a support_tier field in JSON lint output.
Tier |
Boundary |
Benchmark interpretation |
|---|---|---|
|
Voltage-domain behavioral transient models: |
A valid failure here is a supported EVAS bug unless a narrower diagnostic says otherwise. |
|
Legal voltage-domain |
Treat unsupported or inaccurate rows as planned/limited continuous-time work, not as AMS/KCL coverage. |
|
|
Full AMS/digital failures are outside current benchmark certification unless the row is explicitly documented as a supported bridge subset. |
|
|
Architectural roadmap item, not a parser bug and not part of current certified EVAS support. |
Current EVAS benchmark PASS claims apply to behavioral-event designs, plus
explicitly documented behavioral helper subsets. Rows that require full
ams-digital or conservative-current-kcl semantics should be reported
separately from supported EVAS bugs.
Diagnostic Taxonomy¶
evas lint and the optional evas simulate --ahdllint preflight expose the
same taxonomy. Unsupported current contributions and current probes report
support_tier="conservative-current-kcl". Unsupported digital procedural syntax
reports support_tier="ams-digital" when it reaches the parser. Unknown
unregistered function/operator calls report support_tier="outside-current-scope"
so benchmark tooling can separate truly unclassified constructs from the four
documented support tiers.
Strict standalone Spectre compatibility is available through
evas lint --spectre-strict, evas simulate --spectre-strict, or
simulatorOptions options spectre_strict=true. This mode is intentionally
narrower than the default EVAS extension mode: it reports
EVAS-COMP-ESPECTRESTRICT for EVAS-supported syntax that the current standalone
Spectre target rejects, such as AMS bridge constructs (logic, wreal,
continuous assign, always), task/do-while extensions, runtime
electrical-node indexing, selected version-gated random distributions,
seeded $rdist_* distributions whose Spectre PRNG sequence parity is not
certified, integer bit/part-select concatenation gaps, generate, specify,
connectmodule, and connectrules.
Continuous-Time Operators¶
EVAS supports ddt(), idt(), idtmod(), laplace_nd(), laplace_np(),
laplace_zd(), laplace_zp(), zi_nd(), zi_np(), zi_zd(), zi_zp(),
and limexp() as voltage-domain behavioral transient approximations. The
implementation uses finite-difference, trapezoidal integration, and simple
state/filter updates inside the behavioral evaluator. This is intentionally
separate from current-domain contribution stamping or full Spectre
transfer-function solving.
Spectre-restricted placements, such as conditional idt() or event-local
analog contributions, are reported through compatibility diagnostics. Legal
continuous-time operators without an EVAS implementation, for example
absdelay(), report EVAS-COMP-EUNSUPPORTED with
support_tier="behavioral-continuous-time".
Noise and Stochastic Semantics¶
In ordinary transient analysis, white_noise(), flicker_noise(), and
noise_table() do not create arbitrary random transient waveforms. They return
a zero transient contribution and expose PSD data through the behavioral
evaluate_noise(), noise_spectrum(), and integrated_noise() helpers.
Explicit $random, $dist_*(), and $rdist_*() calls are behavioral random
draws. EVAS makes fixed-seed draws reproducible; the same seed and draw order
produce the same sequence across runs. Supported distributions include uniform,
normal, exponential, poisson, chi-square, t, and erlang variants. Unsupported
distribution names, such as an unimplemented $rdist_gamma(), fail with
EVAS-COMP-EUNSUPPORTED and support_tier="behavioral-event".
Strict Spectre mode rejects seeded $rdist_exponential,
$rdist_poisson, $rdist_normal, and $rdist_erlang until their exact
Spectre PRNG sequences are certified; default EVAS extension mode keeps the
deterministic EVAS streams for reproducible behavioral simulation.
Subprograms¶
EVAS supports Spectre-style function/task declarations such as input x; real x;, ANSI-style task/function arguments, local variables, multi-argument calls,
bounded recursive functions, and task/function calls inside event bodies. These
are covered by conformance tests for simple functions, recursive functions,
task-local variables, and state updates through task calls.
Vectors, Generate, and Electrical Indexing¶
Pure expression vector semantics are separate from electrical topology. EVAS supports bit select, part select, concatenation, replication, reductions, packed logic vectors, and integer/real state arrays.
Static generate/genvar elaboration is supported for the limited
behavioral/continuous-assign subset used by supported bridge models. This is
not the same as a full AMS generate/connect-rule implementation.
Runtime voltage-domain electrical indexing such as V(bus[i]) and
V(bus[i]) <+ ... is supported by dynamic node resolution and cache-backed
node lookup. Runtime current-domain indexing belongs to the unsupported
conservative-current-kcl tier.
Strict Spectre mode accepts constant or statically elaborated electrical indexes but rejects runtime electrical-node indexing so benchmark rows can be separated from EVAS extension-mode capabilities. It also rejects integer scalar bit/part-select and integer-select concatenation forms whose Spectre output diverges from EVAS extension-mode evaluation.
AMS-Digital Boundary¶
EVAS includes a small ams-digital bridge subset: logic and wreal ports,
simple continuous assign, edge-sensitive always @(posedge/negedge ...),
packed logic vector operations, and simple specify/specparam path delays on
behavioral assignments. Full four-state logic, connectmodule/connectrules
resolution, and a complete AMS event kernel are outside current benchmark
certification.
KCL/MNA Boundary¶
EVAS does not certify conservative current solving. I(...) <+ ..., I(...)
current probes, indirect branch equations, charge/current contributions, and
SPICE-style AC/DC matrix solving are classified as conservative-current-kcl.
evas lint and evas simulate --ahdllint report this tier explicitly so these
rows are tracked as architectural roadmap work rather than parser bugs.