Go Board – Setting Up Build Environment

Before we start with the fun stuff, we need to get your build environment set up. I know, you’re excited because you just received your new board and you want to play with it, but we need to get this boring stuff out of the way first. The build environment used on the Go Board is a program called iCEcube2, which is put out by Lattice Semiconductor. This page explains how to download and set up iCEcube2, but I also made a YouTube video, should you prefer to follow along with that.

iCEcube2 Introduction

iCEcube2 is an IDE (Integrated Development Environment) put out by Lattice Semiconductor. Its purpose is to turn your VHDL or Verilog code into a file that the FPGA can be programmed with. Other FPGA companies like Xilinx and Altera have their own IDEs. Xilinx has Vivado, Altera has Quartus. The difference between those IDEs and ICEcube2 is that iCEcube2 is significantly less complicated than Vivado or Quartus. This makes Lattice FPGAs especially attractive to beginners. Those other programs are several gigabytes in size and are extremely complicated. They have many bells and whistles, of which you will only be using 10% at most when getting started. This was one reason why I chose to use a Lattice FPGA: their IDE is much easier to use.

It’s also interesting to note that Lattice has two IDEs: iCEcube2 and Diamond. The reason for this (according to my Lattice Rep that I work with) is that iCEcube2 was originally created by another company: SiliconBlue. Lattice purchased SiliconBlue in late 2011. SiliconBlue created the ICE series of FPGAs, you may notice that some of the FPGAs on the Go Boards are still labeled with SiliconBlue! Don’t worry, internally they’re exactly the same. Originally the plan was to merge the functionality from iCEcube2 into Diamond, so that Lattice would only have one IDE to support, but apparently that was too challenging. So there are two tools for Lattice FPGAs. Honestly, I don’t mind this arrangement since Diamond is a much heavier tool than is required for the work we will be doing with the Go Board.

ICEcube2 Download, Install, and License

Okay, enough chat, let’s download iCEcube2. Navigate to this page to download the program. Choose the ICEcube2 download link for either Windows or Linux. When you click the link you’ll be asked to create an account for the website. Note that you will need to create an account with Lattice to get a license the tools. Go ahead and create the website account now. Make sure to enter valid details, as they will email you to confirm the account (and later, to send your requested licence).

Now that you’ve created your account you’ll need to go back to the download page and click the download link (again) for ICEcube2 for either Windows or Linux. This time you’ll be asked to agree to an end-user license agreement, then finally the download will begin. Next you’ll need to request a license, this is a manual process.

To Request A License: Send an email to lic_admn@latticesemi.com with the subject, “New iCEcube2 License Request”. Include in the email your MAC address for your computer. To find that on windows, hit Windows Key + R to open up Run, then type in cmd. Once the command prompt opens, type in ipconfig /all and hit enter. Copy the 12 Hex Digits next to Physical Address into your email.

Once the iCEcube2 installer is downloaded, launch the installer. Point the installation at the license file that you received in your email. If you already installed the iCEcube2, you can use the program LicenseSetup.exe which is in the same folder where you installed iCEcube2 to point the tool at your license file. Now let’s launch the program!

iCEcube2 Main Window

iCEcube2 Main Window

This is the first window you see when you launch the program. Feel free to click around here and get a feel for the program. The next lesson will take you through an entire build of your first FPGA project.

Now there’s one more Lattice tool that we need to download. You will be needing Diamond Programmer, which is a standalone programming tool that takes the output of iCEcube2 and programs the Go Board. I know, it’s unfortunate that iCEcube2 does not have a programmer built into it, but such is the life of an FPGA designer. Nothing is as easy as it should be.

Downloading Programmer Standalone

You can find the Programmer Standalone on this page. Download for windows/linux:

  • Programmer Standalone 3.13 64-bit for Windows or
  • Programmer Standalone 3.13 64-bit for Linux
  • You do NOT need the encryption pack

Build Flow

The flow for building FPGAs will be as follows:

  1. Write Your VHDL or Verilog
  2. Simulate Your Design (optional, but recommended)
  3. Synthesize Your Design (create Bitstream)
  4. Program the Bitstream to Your Board