fuznet is an automated fuzzing framework. It generates random netlists then runs them through synthesis tools and checks for discrepancies in the output.
- Linux-based OS
- Nix package manager
- Vivado installed (Only tested with Vivado 2024.2)
- Python 3
Clone and run installer:
git clone https://github.com/splogdes/fuznet
cd fuznet
./scripts/install_user_service.sh \
--vivado-path /path/to/vivado \
--serviceInstaller Options:
| Flag | Description |
|---|---|
--vivado-path |
Path to Vivado installation (e.g. /opt/Xilinx/Vivado/2024.2/bin/vivado) |
--service |
Install fuznet as a user service (recommended) |
--workers N |
Number of worker processes to use |
--nice N |
Set the nice level for worker processes |
--restart-sec SEC |
Set the restart delay in seconds for worker processes |
--help |
Show help message |
The script will build fuznet using Nix and set up the necessary environment and start the fuznet service if the --service flag is provided.
Check service status:
systemctl --user status fuznet.serviceView logs:
journalctl --user -u fuznet.service -fControl the service:
systemctl --user start|stop|disable fuznet.serviceResults are writen to logs/:
logs/
results.csv
failed_seeds.log
seen_netlists.txt
common/
rare/
epic/
legendary/
unique_small/
unique_medium/
unique_large/Each failing or interesting seed gets its own timestamped directory containing the netlists, logs, and metadata. Temporary directories (tmp-*) are cleaned automatically.
To uninstall fuznet and remove the user service, run:
systemctl --user disable --now fuznet.service
rm ~/.config/systemd/user/fuznet.service
rm -rf ~/fuznet