32 breaking releases
new 0.33.0 | Dec 13, 2024 |
---|---|
0.31.0 | Dec 9, 2024 |
0.27.0 | Nov 19, 2024 |
#57 in Simulation
1,376 downloads per month
140KB
3K
SLoC
topstitch
Stitch together Verilog modules with Rust.
Note: the API is currently under development and is subject to frequent changes.
Installation
Install Rust if you don't have it already:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Then clone this repository:
git clone https://github.com/xlsynth/topstitch.git
Demo
A basic demo of hierarchy, multiple instantiation, and connection is in examples/demo.rs.
Run the demo with:
cargo run --example demo
This produces output in examples/output/top.sv
. Note: the first time that you build this project, it might take several minutes to build dependencies.
If you want to simulate the Verilog code that is produced, first install Icarus Verilog if you don't have it already (via Homebrew, apt, etc.). Then cd
into examples/tb
and run:
./demo.sh
This will produce the following output:
597
demo.sv:16: $finish called at 0 (1s)
The output 597
is expected, as this is the sum of inputs 121
, 212
, and 222
, along with a constant 42
.
Building Slang
Topstitch can use the open source "slang" tool as a module parser and elaborator.
You may see messages when running the demo, similar to:
Please set the SLANG_PATH environment variable to the path of the slang binary.
See the Slang quick
start for instructions on
how to build the slang binaries, then point to the slang
binary directly,
not to the directory path; e.g.
$ export SLANG_PATH=$HOME/src/slang/build/bin/slang
Dependencies
~8–21MB
~319K SLoC