Boardforge is a neutral simulation workspace for embedded boards.
The project is intended to support:
- Multiple instruction set architectures, including RISC-V.
- Multiple simulation backends, including Renode and QEMU.
- Built-in boards and user-defined custom boards.
- A stable engine API for editors, IDE integrations, and teaching tools.
- Keep the core independent from any single board vendor.
- Avoid depending on patched emulator forks.
- Represent boards declaratively when possible.
- Support different fidelity levels, from generic SoC simulation to board-specific emulation.
src/boardforge/coreCore domain models, engine contracts, and orchestration.src/boardforge/backendsBackend adapters for Renode, QEMU, and future simulators.src/boardforge/boardsBuilt-in board definitions and loaders for user board specs.docs/Design notes and architecture decisions.
The first iterations should focus on:
- A backend-neutral engine interface.
- A board specification format.
- A first Renode backend.
- An optional QEMU backend for generic targets.
Build the included QEMU sample firmware:
cd /home/lmcapacho/Documents/Projects/boardforge
source .venv/bin/activate
boardforge build examples/qemu-virt-rv32Run it with the built-in QEMU board:
boardforge doctor
boardforge run qemu-virt-rv32 examples/qemu-virt-rv32/hello_uart.elf --timeout 1.0Or build and run in one step:
boardforge run qemu-virt-rv32 --project-dir examples/qemu-virt-rv32 --build --timeout 1.0Build the included Renode sample firmware:
boardforge build examples/renode-rv32-virtRun it with the built-in Renode board:
boardforge run renode-rv32-virt examples/renode-rv32-virt/hello_uart.elf --timeout 4.0Or build and run in one step:
boardforge run renode-rv32-virt --project-dir examples/renode-rv32-virt --build --timeout 4.0Both flows should print a line from the emulated firmware through the board UART.
This project uses the GNU General Public License v3.0, matching the earlier prototype work.