Programming FPGA Boards from a Mac

Recommended Posts

I know, I know -  this question gets asked regularly and the answer is always "no".  But, with Covid and the switch to on-line classes (possibly for the next year), having a Macintosh option to program an FPGA board may mean the difference between our university using FPGA boards in our large digital design courses or not.  So, it has moved up on the importance list drastically recently.

Is anyone aware of any way to program a board (Basys 3 for example), from a Mac?  We are limping along having the 10-20% of our students who run on a Mac install a Linux VM this term, but it doesn't look like a good long term solution due to a variety of issues that they regularly run into (think 120 sophomores who know very little about computers). 

Lacking a known way to program an FPGA, we are investigating writing our own.  Can anyone point us to documentation on the protocol needed to talk to the USB interface chip as well as other info needed to write such a tool?  It would be worth a fair amount to us to write such a tool (even if it was absolutely minimal).   We know bitstreams inside and out but are trying to bootstrap the rest of the process..

Ideas appreciated.  


Brent Nelson

Brigham Young University

Link to post
Share on other sites

Hi @Brent,

I apologize for the delay. The two main hurdles to doing this on a Mac are the generation of the bitstream which we can't assist with since we use Xilinx's Vivado software to do this, though it sounds like you have that aspect covered, and the loading of the bitstream onto the FPGA itself. Digilent does not have any solution for you with the second half since our Adept software which would readily facilitate loading a bitstream onto a supported FPGA (such as the Basys 3) is not compatible with OSX (though it is with Windows and Linux). I did request some higher-ups at Digilent to consider making Adept compatible with OSX, though that's about all the sway I have is the requesting portion.

One alternate solution you might be able to do is set up a remote desktop that students can connect to since (I think) it is possible to enable talking to other serial ports based on the last post in this thread: I don't know how that will play between different operating systems (and will be pretty slow and painful if multiple students are using it simultaneously), but it is an option. Realistically though, a VM will be the way to go at least with regards to students doing their own development within Vivado.



Link to post
Share on other sites
Posted (edited)


I have written a bitstream uploader for 7 series FPGAs which is included here (run the demo with an CMOD A7-35 board and it will upload its own test bitstream at startup). But it's not a turnkey solution in general.

.NET exists in the mac world, AFAIK, so you should be able to build it. But it'll probably require some modifications to link dynamically with the mac's equivalent of the FTDI DLL.

The Xilinx protocol at JTAG level is described in UG470.

There are a few other projects on the web e.g. xc3sprog or urjtag that may be more general, once you figure out how to use them.
xc3sprog will require minor changes for 7 series e.g. IDCODE.

Edited by xc6lx45
Link to post
Share on other sites

Thanks for the last 3 comments - all very helpful and just what I was looking for.  

Some of our students are doing dual-boot so that is an option.  I am looking at the other 2 solutions proposed as well.  I appreciate people's input...

Link to post
Share on other sites
  • 3 months later...

Follow Up and Summary - Programming FPGA Boards from a Mac

Thanks to those who responded to my request for methods for programming FPGA boards on a Mac.  

Since then I have found a mechanism that is working very well.  It is called Open OCD (search the web).  This is an open source solution that we have tested on a number of Digilent boards (Nexys4, Basys3, Arty).  

It works for both a Mac as well as Linux (useful since we could never get Adept 2 installed in a way to work on Ubuntu 16.04).

I have created a web page that describes how to use it at:

Feedback appreciated.



Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now