Simple FPGA development workflow with VS Code.
The goal of this workflow is to avoid opening Vivado GUI. The example in this repo is a simple 1Hz LED blink using Basys 3 Artix-7 board (XC7A35TCPG236-1).
I am currently using Windows for FPGA development. But, I'm assuming I'll make the switch to Linux at some point and I'll update my notes accordingly.
- Vivado 2023.2+
- GNU Make
- GTKWave
Verify Vivado is installed and its binaries (xilinx/Vivado/2023.2/bin
) are in system path with vivado -version
.
Also, verify GNU Make is installed with make -v
and GTKWave is installed with wsl -e gtkwave --version
.
Edit source in VS Code, the vscode-verilog-hdl-support extension seems to work well for Verilog and Tcl.
# build bitstream file
make build
# simulate, generate waveform, and open in gtkwave
make simulate
# build and upload bitstream to FPGA
make program_board
Optionally, you can still develop in project mode with the following:
# create Vivado project
make create_project
# open Vivado project in GUI
make gui
I decided to stick with a local installation of Vivado. But, I found a very cool post about running Vivado in Docker - https://myon.info/blog/2024/07/06/vivado-docker/
My attempt based on this post can be found in misc/vivado-docker/.
I may try this again in the future and update this repo with more notes/instructions.