CLI Reference¶
EVAS provides four subcommands:
evas list¶
Print all bundled example names.
evas list
evas run <name>¶
Copy a bundled example to the current directory and simulate it.
evas run clk_div
evas run digital_basics
evas run noise_gen
evas run clk_div --engine python
Multi-testbench examples (e.g. adc_dac_ideal_4b, digital_basics) use
tb_<name>.scs by default. Use --tb to select a different testbench:
evas run adc_dac_ideal_4b --tb tb_adc_dac_ideal_4b_sine.scs
evas run digital_basics --tb tb_not_gate.scs
Output goes to ./output/<name>/. Analysis plots (if an analyze_<name>.py
script is present) are saved there as well.
Analysis scripts receive the output directory directly from evas run.
The default engine is evas-rust. Use --engine python as an explicit
compatibility fallback when the Rust backend is unavailable or a design is not
covered by the EVAS2/Rust lowering yet. The legacy evas2 and rust2
selectors remain accepted as compatibility aliases for evas-rust.
evas simulate <file.scs>¶
Simulate an arbitrary Spectre netlist file directly.
evas simulate path/to/tb_mydesign.scs -o output/mydesign -log sim.log
evas simulate path/to/tb_mydesign.scs --engine python
evas simulate path/to/tb_mydesign.scs --ahdllint
evas simulate path/to/tb_mydesign.scs --spectre-strict
Option |
Default |
Description |
|---|---|---|
|
|
Output directory |
|
(none) |
Path for a log file |
|
|
Engine override: |
|
off |
Run EVAS AHDL-style lint as a non-blocking simulation preflight |
|
|
Minimum transition rise/fall time used by |
|
off |
Reject EVAS extension syntax outside strict standalone Spectre Verilog-A before compilation |
Exit code is 0 on success, 1 on simulation error.
The lint preflight reports diagnostics in the simulator log and increments the
warning count, but it does not by itself change simulation pass/fail status.
Netlists may also enable it with simulatorOptions options ahdllint=true or
evas_ahdllint=true.
Strict Spectre mode is blocking: --spectre-strict or
simulatorOptions options spectre_strict=true runs the lint preflight before
compilation and fails the simulation when strict compatibility errors are found.
evas lint <file.va|file.scs>¶
Run EVAS/Spectre-style static checks without simulating.
evas lint path/to/model.va
evas lint path/to/tb_mydesign.scs --format json
evas lint path/to/model.va --spectre-strict
For .scs inputs, EVAS parses the netlist and follows ahdl_include entries.
Diagnostics use compat-error for EVAS/Spectre subset issues and warning
severities for AHDL-style modeling risks. The command exits with 1 only when
at least one compat-error is reported.
Unsupported-feature diagnostics include support-tier metadata so benchmark
tooling can distinguish supported EVAS bugs from planned or out-of-scope
language areas. Text output shows [support-tier: <name>]; JSON output includes
a support_tier field.
Current warning diagnostics cover a Cadence AHDL-inspired static subset:
transition timing and simple continuous-input dataflow, conditional potential
contributions, case defaults, exact branch equality tests, floor/ceil
contribution discontinuities, gnd node portability, discrete function
arguments, implicit integer casts, and simulator-stop tasks inside loops.
The implementation keeps diagnostic metadata in a rule registry, including the
EVAS code, severity, rule name, lint phase, source category, and related
Cadence/Spectre identifiers when known.
Diagnostics emitted from parsed Verilog-A nodes include line and column
coordinates when available, which makes CLI output and JSON reports usable as
repair-loop anchors.
Compatibility diagnostics are intended to mirror concrete Cadence/Spectre
front-end failures when possible. Current examples include conditionally
executed analog operators such as transition, slew, and idt, plus
discipline vector ranges that use runtime variables instead of numeric or
parameter constant expressions.
--spectre-strict adds a blocking compatibility filter for EVAS extension
syntax that standalone Spectre rejects in the current target, including 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.
The repository keeps small public oracle fixtures in
tests/fixtures/lint_oracle_cases for lint regression tests. These fixtures
store distilled expected EVAS diagnostic codes only, not raw Cadence/Spectre
reports or generated certification output.
Option |
Default |
Description |
|---|---|---|
|
|
Diagnostic output: |
|
|
Minimum transition rise/fall time used by lint warnings |
|
off |
Reject EVAS extension syntax outside strict standalone Spectre Verilog-A |