Fayalite is a Rust library for designing digital hardware. Published at https://crates.io/crates/fayalite
Find a file
Jacob Lifshay 4d9e8d3b47
All checks were successful
/ test (pull_request) Successful in 4m31s
/ test (push) Successful in 5m9s
Add building blinky example to the readme
2025-10-21 23:00:16 -07:00
.forgejo/workflows Add peripherals and Arty A7 platforms -- blinky works correctly now on arty-a7-100t! 2025-10-19 23:13:28 -07:00
crates properly handle all XilinxAnnotations, this makes nextpnr-xilinx properly pick up the clock frequency 2025-10-21 22:24:02 -07:00
scripts tests/sim: split expected output text into separate files 2024-12-05 18:17:13 -08:00
.gitignore add missing copyright headers 2024-09-22 15:30:05 -07:00
Cargo.lock Add peripherals and Arty A7 platforms -- blinky works correctly now on arty-a7-100t! 2025-10-19 23:13:28 -07:00
Cargo.toml Add peripherals and Arty A7 platforms -- blinky works correctly now on arty-a7-100t! 2025-10-19 23:13:28 -07:00
LICENSE.md initial public commit 2024-06-10 23:09:13 -07:00
Notices.txt initial public commit 2024-06-10 23:09:13 -07:00
README.md Add building blinky example to the readme 2025-10-21 23:00:16 -07:00

Fayalite

Fayalite is a library for designing digital hardware -- a hardware description language (HDL) embedded in the Rust programming language. Fayalite's semantics are based on FIRRTL as interpreted by LLVM CIRCT.

Building the Blinky example for the Arty A7 100T on Linux

This uses the container image containing all the external programs and files that Fayalite needs to build for FPGAs, the sources for the container image are in https://git.libre-chip.org/libre-chip/fayalite-deps

Steps:

Install podman (or docker).

Run:

podman run --rm --security-opt label=disable --volume="$(pwd):$(pwd)" -w="$(pwd)" -it git.libre-chip.org/libre-chip/fayalite-deps:latest cargo run --example blinky yosys-nextpnr-xray --nextpnr-xilinx-chipdb-dir /opt/fayalite-deps/nextpnr-xilinx/xilinx --prjxray-db-dir /opt/fayalite-deps/prjxray-db --platform arty-a7-100t -o target/blinky-out

To actually program the FPGA, you'll need to install openFPGALoader on your host OS:

On Debian 12:

sudo apt update && sudo apt install openfpgaloader

Then program the FPGA:

sudo openFPGALoader --board arty_a7_100t target/blinky-out/blinky.bit

This will program the FPGA but leave the Flash chip unmodified, so the FPGA will revert when the board is power-cycled.

To program the Flash also, so it stays programmed when power-cycling the board:

sudo openFPGALoader --board arty_a7_100t -f target/blinky-out/blinky.bit

Funding

NLnet Grants

This project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement № 101135429. Additional funding is made available by the Swiss State Secretariat for Education, Research and Innovation (SERI).