https://github.com/cornell-zhang/eqmap
Using e-graphs for logic synthesis
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.8%) to scientific vocabulary
Keywords
Repository
Using e-graphs for logic synthesis
Basic Info
Statistics
- Stars: 13
- Watchers: 2
- Forks: 1
- Open Issues: 4
- Releases: 15
Topics
Metadata Files
README.md
EqMap: FPGA LUT Technology Mapping w/ E-Graphs
EqMap is Verilog-to-Verilog tool that attempts to superoptimize FPGA technology mapping using E-Graphs. Our experiments show that equality saturation techniques can improve logic sut selection and ultimately produce smaller circuits than the commercial tools.
You can read the docs here.
Getting Started
Dependencies for Users
- rustup
- Yosys 0.33
- Optional CBC Solver
Dependencies For Developers
- VSCode Extensions
- RTL Tools
Building the Tools
First, check the prerequisites for building. For basic functionality, you will need the Rust toolchain and a Yosys 0.33 install. Linux is preferred, but MacOS and WSL should work without much trouble.
cargo build
cargo run --release -- tests/verilog/mux_reg.v # Sanity check
Bring Your Own RTL
You can also try to synthesize your own verilog module my_file.v as long as there are no multi-bit top-level ports:
source utils/setup.sh # Add eqmap script to PATH
eqmap my_file.v
Use --help to get an overview of all the options the compiler has:
``` $ eqmap --help Technology Mapping Optimization with E-Graphs
Usage: eqmap_fpga [OPTIONS] [INPUT] [OUTPUT]
Arguments: [INPUT] Verilog file to read from (or use stdin) [OUTPUT] Verilog file to output to (or use stdout)
Options:
--report
You will likely want to use the --report <file> flag to measure improvements in LUT count and circuit depth.
Features
The project has three conditionally compiled features:
egraph_fold(deprecated)exactness(used for ILP exact synthesis, requires CBC)cut_analysis(on by default)graph_dumps(enables the serialization module and--dump-graphargument)
To build with any of these features enabled:
source utils/setup.sh <feature>
Docs
You can generate most of the documentation with cargo doc.
Owner
- Name: Cornell Zhang Research Group
- Login: cornell-zhang
- Kind: organization
- Website: https://zhang.ece.cornell.edu/
- Repositories: 12
- Profile: https://github.com/cornell-zhang
GitHub Events
Total
- Release event: 1
- Watch event: 8
- Delete event: 2
- Public event: 1
- Push event: 14
- Pull request event: 8
- Create event: 4
Last Year
- Release event: 1
- Watch event: 8
- Delete event: 2
- Public event: 1
- Push event: 14
- Pull request event: 8
- Create event: 4
Dependencies
- actions-rust-lang/setup-rust-toolchain v1 composite
- actions/checkout v4 composite
- actions/deploy-pages v4 composite
- actions/upload-pages-artifact v3 composite
- actions-rust-lang/rustfmt v1 composite
- actions-rust-lang/setup-rust-toolchain v1 composite
- actions/checkout v4 composite
- psf/black stable composite
- taiki-e/install-action cargo-llvm-cov composite
- ydah/mdformat-action main composite
- 119 dependencies