As I mentioned in the last the last blog post I recently switched my laptop over to using Linux as my main OS from Windows 10. As part of that I was going through setting up all of my build tools for various projects and I realized the FPGA build system was a bit more cumbersome than it needed to be and utilizing docker, it could be made more developer friendly.
Docker Build Setup
I only recently discovered how great docker can be for development, being something like 5 years behind others on the matter. So I created a docker file for setting up a build container along with a helper script. Since getting volume mapping and such just right can be difficult, the helper script is there to perform the setup as well as for building the individual projects.
The scripts are setup so that your user ID and group ID are used for build artifacts. When building, a
build/ folder with the resulting artifacts is created within the container, but since the uid/gid match the host user’s, you’ll be able to access the files as you’d expect outisde of the container.
A neat feature of the setup is that the container’s built conan libraries are mapped under the
build/conan_data folder on the host, so that consecutive builds don’t cause them to be rebuilt all the time.
The first step to get going is to set up the docker container using the following command:
docker_build.sh isn’t very complicated, so feel free to peek inside to see how the user id and group id are being mapped.
Building a project
docker_build.sh build <directory name of example>
docker_build.sh build 01_state_machine
The artifacts in this example will show up under
build/01_state_machine Both the simulation project and the bitstream file will be built.
Moving over to GitHub
I’ve recently started moving my main repositories over from GitLab to GitHub. I still really like GitLab, but the way that commits are counted in the UTC timezone was pretty annoying, and since GitHub has provided private repos for a while I decided to make the move over.
I’ve also swapped to using
master as the current state of the repo, including projects I have not yet written about. Each article will still include a git branch you can use to check the best current state of the code for that article however.
You can find the fpga_start repo here: https://github.com/srjilarious/fpga_start
I recently got some time to finally build out the real hardware version of a time-multiplexed seven segment display circuit (
05_seven_seg_shift_reg_multi_time if you want a sneak peek), and I planto write up the article on that – soonish.