MCPcopy Index your code
hub / github.com/ekiwi/wellen

github.com/ekiwi/wellen @v0.25.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.25.5 ↗ · + Follow
988 symbols 3,149 edges 40 files 134 documented · 14% updated 23d agov0.11.1 · 2024-09-24★ 13617 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Wellen Waveform Library

Crates.io Version docs.rs GitHub License DOI

wellen provides a common interface to read both FST and VCD waveform files. The library is optimized for use-cases where only a subset of signals need to be accessed, like in a waveform viewer. VCD parsing uses multiple-threads.

Overview

Overview of wellen components

The Wellen Hierarchy

All meta-data about the signals in a design is accumulated in the wellen::Hierarchy class. While all formats supported by wellen feature hierarchical scopes and variables and the associated signal data, they vary in how much additional information they provide. We thus had to make some choices on how to unify the data from various sources in a single data model.

Global Metadata

We record the following information for each file:

  • date: a string representation of when the file was created, the precise data / time format depends on the file source (VCD, FST)
  • version: a string, generally the version of the simulator that produced the file (VCD, FST)
  • timescale: time unit and factor that defines one tick of simulation time, GHW is always 1fs (ALL)
  • fileformat (ALL)

Scope

Each scope contains the following information:

  • name: the local name of the scope, ignoring its parent scopes (ALL)
  • full_name: the names of all parent scopes and the local scope, connected with a . (ALL)
  • scope_type: the kind of scope, e.g., module, function, wire (ALL)
  • component: an optional type name, e.g., the name of the module that was instantiated (FST)
  • instantiation_source_loc: optional filename and line number where the scope was instantiated; for VCDs, this information is encoded with non-standard attributes (FST, VCD)
  • source_loc: optional filename and line number where the scope was declared; for VCDs, this information is encoded with non-standard attributes (FST, VCD)
  • items: child variables and scopes
  • vars: child variables
  • scopes: child scopes

Variable

Each variables comes with the following information:

  • name: the local name of the scope, ignoring its parent scopes (ALL)
  • full_name: the names of all parent scopes and the local scope, connected with a . (ALL)
  • to be continued

Extension points exported contracts — how you extend this code

ParseBodyOutput (Interface)
(no doc) [3 implementers]
wellen/src/vcd.rs
PyErrExt (Interface)
(no doc) [2 implementers]
pywellen/src/lib.rs
SignalSourceImplementation (Interface)
(no doc) [2 implementers]
wellen/src/signal/source.rs

Core symbols most depended-on inside this repo

len
called by 155
wellen/src/ghw/hierarchy.rs
iter
called by 98
wellen/src/signal/map.rs
hierarchy
called by 78
wellen/src/stream.rs
index
called by 53
wellen/src/hierarchy.rs
read
called by 52
wellen/src/stream.rs
h
called by 43
pywellen/src/lib.rs
name
called by 38
wellen/src/hierarchy.rs
clone
called by 35
wellen/src/signal/map.rs

Shape

Function 448
Method 395
Class 98
Enum 44
Interface 3

Languages

Rust98%
Python2%

Modules by API surface

wellen/src/hierarchy.rs149 symbols
pywellen/src/lib.rs76 symbols
wellen/src/vcd.rs75 symbols
wellen/src/ghw/hierarchy.rs74 symbols
wellen/tests/diff_tests.rs71 symbols
wellen/tests/stream.rs69 symbols
wellen/src/signal/value.rs52 symbols
wellen/src/wavemem.rs51 symbols
wellen/src/stream.rs38 symbols
wellen/src/ghw/common.rs34 symbols
wellen/src/fst.rs30 symbols
wellen/src/signal/mod.rs27 symbols

For agents

$ claude mcp add wellen \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page