ZedBoard

You can buy one from zedboard.org.

Linux computer with root access

We use a machine that runs Fedora 14. Ofcourse, any linux machine should work. You may need physical access to this machine as it interfaces with the ZedBoard.

Xilinx Tools

We've been using Xilinx ISE version 14.4. In theory, the latest version should work. If you make modifications and get it working in the latest version, please let us know. The free web-based license is sufficient for most things we will do. ZedBoard comes with a license document that you can use to activate ChipScope.

OpenRISC toolchain

This is optional. PERSim contains compiled binaries of a few SPEC benchmarks.

The OpenRISC webpage is good to familiarize yourself with the processor. It contains information about the architecture, the processor RTL, a toolchain, software toolchain, full SoCs (called ORPSoC) with Xilinx/Altera FPGA ports, Linux etc.,

If you will be compiling your own programs, download and install the toolchain

EDA tools and Libraries

We use Synopsys Design Compiler for synthesis and VCS for simulation. Our designs are targeted to the 32nm library also from Synopsys.

You should be able to use any synthesis, simulation and libraries though it will require some tweaking.

Other Software

PERSim uses Python scripts especially for fault models.

A serial port terminal such as minicom helps read outputs from the ZedBoard.
sudo yum install python minicom

Download PERSim (1.7GB)

Directory Structure

Once downloaded, untar the compressed folder to see the structure of PERSim directories. It should look something like this :

PERSim/
    ├── ZedBoard101/
    ├── XilinxProject/
    ├── OpenRISC/
    │   ├── SpecModified/
    │   └── Binaries/
    ├── Delay_Aware/
    │   ├── Simulation/
    │   └── Synthesis/
    └── Fault_Modeling/
        ├── Transient/
        ├── Permanent/
        └── Wearout/
  

In this exercise, we are going to create a simple register file, burn it to the FPGA and write firmware on the ARM to write and read from it. If you are familiar with Xilinx tools and you have a working installation, please skip this section. You can either follow a from scratch tutorial or start from Xilinx projects we created to test your installation.

Follow a Tutorial

Zynqgeek's tutorals on creating a custom peripheral and communicating with it using bare metal code running on the ARM are great starting points.

Test Project

A clone of Zynqgeek's directory structure (modified to run on Xilinx 14.4) can be found in the following directory.

PERSim/
   └──  ZedBoard101/
 
  • Launch the Xilinx project using
    planAhead system.ppr
  • This project contains synthesised and implemented netlists and a generated bitstream. We will download the bit stream and the test code using the "SDK". Invoke the SDK :
    File -> Export -> Export Hardware to SDK.
    Select Launch SDK. and OK.
  • helloworld.c is the code that is going to run on the ARM processor. It writes values to a register file and reads them back.
  • The ZedBoard101 folder has a synthesized bitstream file at system.runs/impl_1/arm_0_stub.bit.
    Xilinx Tools -> Program FPGA
    Program the FPGA.
  • Before downloading the firmware, open a serial terminal to capture the output from the Zedboard. sudo minicom -D /dev/ttyACM0 The UART is configured to 9600N1 which are minicom's defaults.
  • Next we will compile and download the code.
    In the "Project Explorer" window, right click on "hello_world".
    Run As -> Launch on Hardware.

Once the code is downloaded, you should see the output in the minicom window.