Vivado

Fall 2022

You are not logged in.

Please Log In for full access to the web site.
Note that this link will take you to an external site (https://shimmer.mit.edu) to authenticate, and then you will be redirected back to this page.

There's a lot happening here! If you have any questions about this stuff, make a piazza post at Jay (or Fischer, or Joe, or anyone, really) and we'll get back to you. Hopefully we can make your Vivado setup process as painless as possible, so you can spend less time playing with your system and more time building cool stuff (:

In 6.205, we use the Vivado toolchain - which is this notoriously complicated piece of software that comes with quite a few caveats:

  • It doesn't run on Apple Silicon Macs (M1, M1 Pro/Max/etc., M2, ...)
  • For that matter, it doesn't run on any macs
  • It doesn't run cleanly on most Linux/BSD distributions (the exception being certain last-gen Ubuntu versions, CentOS, and FreeBSD sometimes)
  • The install clocks in at around 120GB...and that's before you try to build anything.

computer going BAM

Your computer on Vivado

All of that said, Vivado is the industry standard right now, so we want to let you use it while making things as easy as possible. So, depending on your circumstances, we the course staff support three ways for you to use Vivado to do your labs:

  • Install Vivado on your computer, if you run Windows or an appropriate Linux/BSD on an Intel or AMD processor
  • Come into the lab and use the lab machines to do stuff
  • [BETA] Use lab-bc, a new utility we wrote to build your stuff in the cloud1

We recommend option 1 if you have a Windows machine running on Intel or AMD, or if you'd like to try your hand at getting Vivado to work on a substantially recent version of Ubuntu. Otherwise, we recommend option 3, and then option 2.

Option 1: Install Vivado locally

a dvd comically labeled 'easy to install!'

First thing's first, you'll need to make an account on Xilinx's website in order to download Vivado. Make sure to use your MIT email and to specify you're from "Massachusetts Institute of Technology" otherwise you might get some sort of Export Restriction issue. Do note -- "MIT" is not the same as "Massachusetts Institute of Technology"!

Once you've made an account with Xilinx if you don't have one already, you should be able to head over to their download page and grab a copy of the appropriate self-extracting web installer for your platform. You'll want 2022.1 - here's a picture of the right buttons to click.

computer going BAM

The self-extracting web installers. You want these, not the big 79 gigabyte tarball, unless your name is Jay and/or you're trying to do something really wacky.

On Ubuntu, you'll need to install the libtinfo-dev and libncurses-dev packages from apt for this to work - that's sudo apt install -y libtinfo-dev libncurses-dev. On other distributions, your mileage may vary`

Now that you've got the web installer, you can follow these excellent instructions from Digilent (the maker of our dev boards) to finish the install. Skip their download instructions and start with "To launch the installer...". Work your way down through step 1, skip step two even if you're on Linux (openFPGALoader covers this for us), and then roll through step 3.

You should be good to go now! If this worked for you, you should now be able to launch Vivado from the command line. Running it without any additional options / stuff on the end should spin up the GUI - close it out once you see it, since we won't be using the GUI again.

Ok, I lied, maybe this won't work right away. If you're on Linux, you'll need to add Vivado to your $PATH variable so that your terminal picks up the install you just did. Try adding export PATH=$PATH:/tools/Xilinx/Vivado/2022.1/bin to your shell's .rc file (e.g. if you use bash, which is the default, you should append this to your ~/.bashrc), and then restarting your terminal.

On Windows, this is going to work slightly differently - you'll need to run /tools/Xilinx/Vivado/2022.1/settings.bat in your command prompt (or powershell) before you try and use Vivado. We'll update these instructions if there's a better way to do this -- we think there is, but we aren't sure yet.

Option 2: Running stuff on the lab computers

The lab computers have a full install of Vivado on them, following the steps listed above. You're free to use them any time you want - there are just a few caveats you should remember...

i am a burden on everyone

We upgraded all of the lab computers to Ubuntu 20.04 this year, rather than the old Debathena they used to run. They all have Vivado + openFPGALoader + iVerilog + etc. installed, which is awesome. But, this also has a few consequences:

  • They build HDL really fast. Even the old ones.
  • These lab computers are open-access. There's one user account - you'll notice when you come into lab that you won't have to type a password in to do stuff with the machines
  • When you log out of the lab machines, they reboot and erase all of the files in your home directory.

What does this mean? It means that using the lab computers should be a breeze, but they trade convenience for performance - they no longer work like normal Athena computers. None of the work you do on a given machine is visible on any other machine, and you can't assume anything sticks around after you leave the lab.

So, if you plan to use the lab machines, they'll work great but you should have a plan to save your stuff elsewhere. Either you'll want to push your code to a (private!) git repository, or save it to a flash drive, or something. Just save your stuff somewhere, and then log out of the machine so that it's clean for the next person to use it.

If you don't log out, the machine will log out for you in about an hour!

Option 3: [BETA] Use the new early-beta lab build client (lab-bc)

Can't do a full install because you have a mac, or no hard disk space (or both, like me)? Don't want to use an ephemeral lab computer? You're in luck - we've engineered a way you can build your Verilog off your device transparently. You'll still need iVerilog and openFPGALoader and all those other tools, but you won't even need to think about installing Vivado.

cute cat by a plan 9 box

you, all happy after setting up lab-bc2

To use lab-bc, make sure you have python3 installed on your machine somehow and download the lab-bc frontend here. I recommend you put it in your project directory (you will create one of these in lab 1 - just stash lab-bc.py in your downloads folder for now). Once you're done, run it with the -h flag (i.e. python3 lab-bc.py -h) to see a summary of how to use it (after an error that -h is not a recognized option).

You'll notice the first time you try to use lab-bc, you'll get a nice BrokenPipe error. This is because we need your ssh keys to authenticate you into the system. Head over to the SSH Key Setup page and fill in your ssh public key. If you don't have an SSH key, follow this guide to make one, up to and including "Adding your SSH key to the ssh-agent". Then, paste your public key into the setup page. We'll let you know if anything goes wrong, and you should have access to lab-bc once you've done this within ~24 hours.

Generally, you're going to be running something like python3 lab-bc.py -o output_files - that builds the project in the current working directory (commonly abbreviated '.' in systems parlance) and places the bitfile + some logs in the directory output_files.

  • You can override what project gets built with the -p <projname> flag - just make sure the project you point it to has an src and xdc directory or else weird things will happen.
  • If you want to make Vivado generate diagnostic reports about your build (for example, utilization of FPGA resources or a summary of timing information), pass the -d flag. This will be super useful in future labs.

This TA is bad at python. We know.

Critical note: lab-bc is in VERY EARLY beta - the long-term plan here is to have lab-bc and its descendants completely replace local Vivado use in fall 2023 onward. However, we just started work on this - that means I literally wrote the version of lab-bc you see now last night with entirely too much caffeine in my system. Also, much of my backend is written in C and is somewhat complicated, so I can't have possibly fixed every possible bug that might come up. If something seems not right to you, take the following steps:

  • run lab-bc again, with the -v flag
  • copy paste the output into a piazza post
  • attach a zipped, tarred, whatever'd up copy of your project directory (including your copy of lab-bc) to that post

I'll help you out as best I can, and we'll track bugs on Piazza so I can make sure this works for everyone.

achievement get: you set up vivado! hopefully that wasn't so bad.