Open source synthesis and simulation stack for Verilog/SystemVerilog projects as a replacement for Synopsys/Cadence toolchains. Originally developed for the EECS 470 LC2K processor project at the University of Michigan, but usable for any digital design project.
Works on macOS and Ubuntu / WSL2.
| Stage | Commercial Tool | Open-Source Replacement |
|---|---|---|
| SV → Verilog | — | sv2v |
| Simulation | Synopsys VCS | Verilator |
| Waveforms | Synopsys Verdi | GTKWave |
| Synthesis | Synopsys DC | Yosys + Sky130 PDK |
| Timing Analysis | Synopsys PrimeTime | OpenSTA |
macOS
chmod +x setup_macos.sh
./setup_macos.shUbuntu / WSL2
chmod +x setup_ubuntu.sh
./setup_ubuntu.shBoth scripts are fully automated. See the troubleshooting section if anything fails.
.
├── README.md # You are here
├── setup_macos.sh # Automated macOS setup
├── setup_ubuntu.sh # Automated Ubuntu / WSL2 setup
├── Brewfile # macOS Homebrew dependency list
├── synth/
│ ├── synth.ys # Yosys synthesis script
│ ├── sta.tcl # OpenSTA timing analysis script
│ └── constraints.sdc # SDC I/O timing constraints
├── sky130_fd_sc_hd__tt_025C_1v80.lib # Sky130 standard cell liberty file
└── docs/
├── EECS470.md # EECS 470 project-specific integration guide
└── FRESH_PROJECT.md # General guide for starting a new project
See docs/EECS470.md for instructions on dropping this flow into your existing LC2K project, including Makefile targets and how the open-source flow maps to the CAEN submission flow.
See docs/FRESH_PROJECT.md for a step-by-step walkthrough of setting up synthesis and timing analysis for a brand new Verilog/SystemVerilog design.
gtkwave: cask not found
Make sure you have an up-to-date Homebrew: brew update && brew upgrade.
OpenSTA build fails on tcl.h not found
The setup script auto-detects your TCL path. If it fails, manually confirm the path with:
find $(brew --prefix tcl-tk)/include -name "tcl.h"and open an issue with the output.
sta command not found after install
OpenSTA installs to /usr/local/bin. If that's not on your PATH:
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc && source ~/.zshrcGTKWave opens but shows no waveform
On WSL2, GTKWave requires a Windows X server (e.g., VcXsrv or the built-in WSLg on Windows 11). Set your display: export DISPLAY=:0.
sv2v command not found
The setup script downloads the pre-built binary. Check that /usr/local/bin is on your PATH.
Yosys version is too old Ubuntu's apt package can lag behind. If you need a newer version, build from source:
git clone https://github.com/YosysHQ/yosys.git && cd yosys && make -j$(nproc) && sudo make installPull requests are welcome. If you run into a setup issue on a specific OS version, please open an issue with your OS, the command that failed, and the error output.
MIT