Flashing
EDAcation allows you to flash your design onto a physical FPGA board directly from VSCode. Designs can be flashed both temporarily (to SRAM) and permanently (to flash memory) for rapid prototyping and testing. Note that flashing may require additional hardware, such as a programmer or JTAG interface, depending on your FPGA board.
Support Matrix
The flashing task relies on OpenFPGALoader as backend. A WebAssembly version of OpenFPGALoader is available through YoWASP, but it is currently not integrated into EDAcation.
Before flashing, EDAcation needs to pack the place and route result into a bitstream file that can be flashed onto the FPGA. These packing tools are specific to the FPGA architecture you are targeting and are provided by third-party projects. EDAcation currently only supports packing for ECP5 and iCE40 FPGAs, but given a supported packer, it should be possible to add support for other architectures with relative ease.
| Feature | Windows (x64) | Linux (x64) | Linux (ARM) | MacOS (x64) | MacOS (Apple Silicon) | Web |
|---|---|---|---|---|---|---|
| Flashing | ✅️ | ✅️ | ✅️ | ✅️ | ✅️ | ❌️0 |
0 The YoWASP VSCode extension includes support for OpenFPGALoader, but we had mixed results when trying to use it for flashing. Integration into EDAcation is technically feasible but would require some additional work to play nicely with the browser's WebUSB permissions model.
OS Configuration
Depending on your operating system, you may need to install additional drivers or configure permissions to allow EDAcation to communicate with your FPGA board. The specific steps will vary based on your OS and the FPGA board you are using. Below are some general guidelines for configuring your OS to support flashing with EDAcation.
Windows
Windows will probably not install the correct drivers for your FPGA board by default. We recommend using Zadig to install the appropriate drivers for your board. You can use Zadig to replace the default driver with a compatible one, such as WinUSB, which allows EDAcation to communicate with your FPGA board for flashing.
Linux
On Linux, you may need to set up udev rules to allow non-root users to access the USB devices associated with your FPGA board. You can create a udev rule file (e.g., /etc/udev/rules.d/99-fpga.rules) with the appropriate permissions for your device. For example:
ATTR{idVendor}=="1234", ATTR{idProduct}=="5678", MODE="0666", GROUP="plugdev", TAG+="uaccess"
MacOS
On MacOS, you may need to grant permissions for EDAcation to access USB devices. You can do this by going to System Preferences > Security & Privacy > Privacy tab, and adding EDAcation to the list of applications allowed to access USB devices.