Dependencies
The dependencies for this project are installed using nix.
- Install nix
-
Add the following to /etc/nix/nix.conf
extra-experimental-features = nix-command flakes extra-substituters = https://nix-cache.fossi-foundation.org extra-trusted-public-keys = nix-cache.fossi-foundation.org:3+K59iFwXqKsL7BNu6Guy0v+uTlwsxYQxjspXzqLYQs=This allows nix to use the precompiled FOSSi binaries which speeds things up a bunch.
-
Run
nix-shellin the project directory.
Hopefully after this you're in a nix shell with all the dependencies installed.
Build System
Bazel is used as the build system for this project. It's the first time I've used bazel and I've been leaning heavily on Claude to write the bazel files. I expect that they are a hot vibe coded mess. That said, I've been finding bazel very pleasant to use.
Some randomly selected interesting bazel targets to run would be:
Builds and generates a GDS for the router. Uses librelane and the skywater130 PDK. Currently fails due to routing congestion, but maybe I'll have fixed it by the time you run this.
bazel build //dse/network:CombinedNetworkNode_default_sky130hd_gds
Generates the verilog for a kamlet mesh, and runs a cocotb test that tests the synchronization network.
bazel test //python/zamlet/kamlet_test:test_kamlet_default
Some interesting non-bazel targets to run would be:
Runs a bunch of tests of strided loads using the python model of the architecture.
python -m pytest python/zamlet/tests/test_strided_load.py
Runs a FFT kernel on the python model.
python python/zamlet/kernel_tests/fft/test_fft.py