Recommended CI flow for FPGA emulation
Asked by Tyler Williamson:

Hello. I'd like to develop a CI pipeline for my hardware development project. I am developing an FPGA-based hardware system and need to streamline 1) building, 2) regression testing, and 3) emulation. For those unfamiliar with FPGA-based development, the first two items are purely software-based using Python/Bash scripts around a proprietary yet free software (Xilinx Vivado in my case). Regression testing in my case amounts to wrapping a Python unittest framework around the Vivado simulator. The last item, emulation, requires physical hardware to be accessible on the network since I want to be able to run my (same) regression tests now on real hardware (i.e. not merely simulated). I imagine an FPGA development board plugged into a networked computer via an FPGA JTAG cable and the CI server communicating with that networked computer.

I was thinking that I would use Bamboo Server but it looks like its being deprecated soon and I'm not sure how amenable Bamboo Cloud is to working with custom hardware. FWIW, I have used Bamboo Server in the past at my previous company to do something similar but we had a team of IT/DevOps personnel to internally manage that system. Currently, I have very little access to IT/DevOps bandwidth and expertise.

Can someone point me in the right direction?

Thanks in advance,

Tyler


Answers:
author: Boris Van Hardeveld
body: Hello [@Tyler Williamson](/t5/user/viewprofilepage/user-id/1782996)

The ability to run Bamboo and its (remote) agents on-premises is not going to disappear in any way in the near future.

- If you already have a Bamboo license, you will be able to extend it till 02/2024.

- By the end of this year, Atlassian should have released a 'data-center' edition of Bamboo, which will effectively offer at least the same functionality but replace the 'server' edition. Keep an eye on [https://www.atlassian.com/roadmap/data-center?product=bamboo\&](https://www.atlassian.com/roadmap/data-center?product=bamboo&) as also mentioned at <https://community.atlassian.com/t5/Bamboo-questions/Is-Bamboo-going-away-IF-so-When/qaq-p/1570612> to know when.

There is currently no pricing announced yet for the to be released 'data center' edition, but I would expect it to be in the same range of the Bitbucket data center editions (see: <https://www.atlassian.com/licensing/future-pricing/data-center-pricing/pricing-tables#bitbucket>).

As to your question, as the first two steps in your pipeline are purely based on software they can be run anywhere (both on the server where Bamboo is hosted as well as on a remote agent. I came across <https://github.com/starwaredesign/vivado-docker> which apparently would allow you to run your simulations as a docker container as well (<https://confluence.atlassian.com/bamboo/docker-runner-946020207.html>), which might ease the setup.

The last step of the pipeline will need to be pinned to the specific agent to which your hardware is connected, which can be done using a custom agent capability (<https://confluence.atlassian.com/bamboo/agents-and-capabilities-289277114.html>) in combination with a job requirement for that capability (<https://confluence.atlassian.com/bamboo/configuring-a-job-s-requirements-289277064.html>).