Skip to content

Synthesys-Lab/assassyn

Repository files navigation

Assassyn: Asynchronous Semantics for Architectural Simulation & Synthesis

Tests Apptainer Tests

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.


Getting Started

Virtual Machine

You either refer to the docker or apptainer to use the framework in a virtual machine.

Physical Machine

It can also be built on your physical machine. The instructions below are Ubuntu based:

  1. Make sure you have all the repos propoerly cloned:
git submodule update --init --recursive
  1. 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' ' '
)
  1. Have this repo built from source:
source setup.sh  # Set up environment variables
make build-all   # Build all components

If you do not have enough memory, a lower job number is recommended.

  1. Verify your installation.
python -c 'import assassyn' # import this module
echo $? # 0 is expected
make test-all # Optional, runs all the tests.
echo $?

File Structure

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

About

Asynchronous semantics for architectural simulation and synthesis.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 16