topstitch

Crates.iotopstitch
lib.rstopstitch
version
sourcesrc
created_at2024-09-06 21:33:00.968253
updated_at2024-11-05 23:20:42.847287
descriptionStitch together Verilog modules with Rust
homepagehttps://github.com/xlsynth/topstitch
repositoryhttps://github.com/xlsynth/topstitch
max_upload_size
id1366520
Cargo.toml error:TOML parse error at line 17, column 1 | 17 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
(sherbst-openai)

documentation

https://docs.rs/topstitch

README

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
Commit count: 36

cargo fmt