Prerequisites
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.Software
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
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/
Test Your Setup
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.