Skip to main content

Event-driven Verilog-A Simulator — pure-Python behavioral simulation

Project description

EVAS — Event-driven Verilog-A Simulator

PyPI CI Docs License: MIT

A lightweight, pure-Python behavioral simulator for digital/mixed-signal Verilog-A models. Event-driven. No C compiler, no ngspice, no KCL/KVL solver.


If you're a human — see the full docs at

📖 Docs: evas.tokenzhang.com  |  中文

If you're an AI agent — load skills/evas-sim/SKILL.md (or copy the skills/evas-sim/ folder into your skills directory). It contains the full compatibility table, CLI reference, output format, and common failure modes — everything you need to write and debug EVAS simulations without guessing.


What EVAS does

EVAS simulates voltage-mode, event-driven Verilog-A behavioral models. You provide:

  1. A .va file — your behavioral model (comparator, DAC, SAR logic, DWA controller, …)
  2. A .scs testbench netlist — voltage sources, ahdl_include, and a tran statement
  3. Run evas simulate — get tran.csv waveforms and optional plots

The bundled examples are starting points. For your own design, copy the closest example directory, swap in your .va, adjust the stimulus sources and save list, and run.

Installation

pip install evas-sim
evas list        # verify install — prints bundled example groups

If evas is not on PATH, use python -m evas.

Simulating your own design

evas simulate path/to/tb.scs -o output/mydesign

Output in -o dir: tran.csv (waveforms), strobe.txt (log messages), .png plots.

Minimal testbench template (.scs):

simulator lang=spectre
global 0

ahdl_include "my_module.va"

Vvdd (vdd 0) vsource type=dc dc=1.8
Vclk (clk 0) vsource type=pulse val0=0 val1=1.8 period=10n rise=0.1n fall=0.1n width=4.9n

IDUT (clk vdd out) my_module vdd=1.8

tran tran stop=200n maxstep=0.1n
save clk:2e out:6f

Testbench structure reference

The 14 bundled example groups contain 27 .va modules and their testbenches. They are the best reference for how to wire up common patterns:

Pattern needed Look at
Clocked digital logic clk_div, digital_basics, lfsr
Comparator with feedback comparator/cmp_offset_search
SAR / successive-approximation loop sar_adc_dac_weighted_8b
DAC (binary or thermometer) dac_binary_clk_4b, dac_therm_16b
ADC + sample-hold adc_dac_ideal_4b
Voltage → digital bus (analog to bits) dwa_ptr_gen/v2b_4b
DWA / data-weighted averaging dwa_ptr_gen
Noise / random stimulus noise_gen
Multi-cycle edge timing comparator/cmp_delay, edge_interval_timer

Supported Verilog-A

Feature Status
V(node) <+, V(a,b) differential
@(cross(...)), @(above(...)), @(initial_step)
@(timer(period)), @(final_step)
transition() with delay / rise / fall
for, if/else, case/endcase, begin/end
arrays, parameters (real / integer / string)
`include, `define, `default_transition
SI suffixes, math: sin cos exp ln log pow floor ceil
$temperature, $vt, $abstime
$bound_step()
$fopen(), $fclose(), $fstrobe(), $fwrite(), $fdisplay()
$display, $strobe, $random, $dist_uniform(), $rdist_normal()
I() <+, ddt(), idt(), q() <+ not supported by design
AC/DC analysis, transistors not supported by design
Spectre subckt hierarchy not yet implemented

CSV output format

The save statement accepts per-signal format hints:

save vin:10e vout:6f clk:2e dout:d
Suffix Example
:6e (default) 4.500000e-01
:Nf fixed-point, N decimal places
:d integer (for digital buses)

Bundled examples (reference only)

14 groups, 27 Verilog-A modules — use them as templates, not as the target.

Group Verilog-A modules Notes
clk_div clk_div
clk_burst_gen clk_burst_gen
digital_basics and_gate, or_gate, not_gate, dff_rst, inverter
lfsr lfsr
noise_gen noise_gen
ramp_gen ramp_gen
edge_interval_timer edge_interval_timer also reused in comparator
d2b_4b d2b_4b thermometer-to-binary decoder
dac_binary_clk_4b dac_binary_clk_4b
dac_therm_16b dac_therm_16b
adc_dac_ideal_4b adc_ideal_4b, dac_ideal_4b, sh_ideal 3 stimuli: ramp / sine / 1000-pt sine
comparator cmp_ideal, cmp_strongarm, cmp_offset_search, cmp_delay 4 sub-examples
dwa_ptr_gen dwa_ptr_gen, dwa_ptr_gen_no_overlap, v2b_4b 100 MHz; v2b_4b = voltage→4-bit ADC
sar_adc_dac_weighted_8b sar_adc_weighted_8b, dac_weighted_8b, sh_ideal 8-bit SAR; DNL/INL

Contributing

git clone https://github.com/Arcadia-1/EVAS.git
cd EVAS
pip install -e ".[dev]"
pytest tests/ -v

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evas_sim-0.4.1.tar.gz (120.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evas_sim-0.4.1-py3-none-any.whl (158.8 kB view details)

Uploaded Python 3

File details

Details for the file evas_sim-0.4.1.tar.gz.

File metadata

  • Download URL: evas_sim-0.4.1.tar.gz
  • Upload date:
  • Size: 120.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for evas_sim-0.4.1.tar.gz
Algorithm Hash digest
SHA256 2306828c06810aa73755d824635a5d59033b6888e28c9d17ab96fa8f06c18ade
MD5 ec5f59e38ff9c88266ea176e09fb1e36
BLAKE2b-256 e5589fdb7f7992b3cf9eeb87dc993f3c61a2532eea09d31183cbfa7010611294

See more details on using hashes here.

Provenance

The following attestation bundles were made for evas_sim-0.4.1.tar.gz:

Publisher: publish.yml on Arcadia-1/EVAS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file evas_sim-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: evas_sim-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 158.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for evas_sim-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b4efc70d64bbbd6ba1997fd00b9a48cfd5190d1c9269f5bd819f4872df63a8d7
MD5 79bc7eb34758f2c9ac434624e5f19d0e
BLAKE2b-256 a21920f2a7edf2b78b0b93b91637d247b682778d7e066367a159bab05f104df6

See more details on using hashes here.

Provenance

The following attestation bundles were made for evas_sim-0.4.1-py3-none-any.whl:

Publisher: publish.yml on Arcadia-1/EVAS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page