Assassyn is aimed at developing a new programming paradigm for hardware development. The ultimate goal is to unify the hardware modeling (simulation), implementation (RTL), and verfication.
You either refer to the docker or apptainer to use the framework in a virtual machine.
It can also be built on your physical machine. The instructions below are Ubuntu based:
- Make sure you have all the repos propoerly cloned:
git submodule update --init --recursive- Install dependences:
sudo apt-get update
sudo apt-get install -y $(
awk '/apt-get install/,/apt-get clean/' Dockerfile \
| sed '1d;$d; s/[\\[:space:]]*$//; s/^[[:space:]]*//' \
| grep -v '^$' \
| tr '\n' ' '
)- Have this repo built from source:
source setup.sh # Set up environment variables
make build-all # Build all componentsIf you do not have enough memory, a lower job number is recommended.
- Verify your installation.
python -c 'import assassyn' # import this module
echo $? # 0 is expected
make test-all # Optional, runs all the tests.
echo $?Our file structure is as follows:
- assassyn/ # The main assassyn package
|- python/ # All the Python-related code
| |- assassyn/ # The assassyn Python package
| `- ci-tests/ # Application-level tests for CI
|- 3rd-party/ # External depdendencies
| |- circt/ # It relies on CIRCT for Verilog backend
| |- ramulator2 # It relies on Ramulator2 for DRAM modeling
| `- verilator # It relies on Verilator for Verilog simulation
|- scripts/
| |- *.patch # Useful scripts for patching 3rd-party
| |- pre-commit # Git pre-commit hook
| `- init/*.inc # Makefile includes for building components
|- docs/ # The chater document of this framework
| |- developer/ # Developer guidelines
| |- design/ # High-level design decisions of Assassyn
| `- builder/ # Document to build and setup the project
|- tools/ # All the helper modules
| |- c-ramulator-wrapper # Which wraps Ramulator2 in C for FFI access
| `- rust-sim-runtime # Which provides runtime support for Rust simulator, including Ramulator access
|- examples/ # Example applications
`- tutorials/ # Tutorials written in Quarto qmd