ISim Hardware Co-Simulation Tutorial: Accelerating Floating Point FFT Simulation

Similar documents
ISim Hardware Co-Simulation Tutorial: Accelerating Floating Point FFT Simulation

ISim Hardware Co-Simulation Tutorial: Accelerating Floating Point Fast Fourier Transform Simulation

ISim Hardware Co-Simulation Tutorial: Processing Live Ethernet Traffic through Virtex-5 Embedded Ethernet MAC

ISE Simulator (ISim) In-Depth Tutorial. UG682 (v 13.1) March 1, 2011

ISim In-Depth Tutorial. UG682 (v13.4) January 18, 2012

Hardware In The Loop (HIL) Simulation for the Zynq-7000 All Programmable SoC Author: Umang Parekh

Vivado Design Suite User Guide

Quick Front-to-Back Overview Tutorial

Vivado Design Suite User Guide

AccelDSP Synthesis Tool

Hierarchical Design Using Synopsys and Xilinx FPGAs

PlanAhead Software Tutorial

Vivado Design Suite Tutorial. Designing IP Subsystems Using IP Integrator

Using Xilinx ChipScope Pro ILA Core with Project Navigator to Debug FPGA Applications. UG750 (v12.3) November 5, 2010

RTL Design and IP Generation Tutorial. PlanAhead Design Tool

PlanAhead Software Tutorial

Vivado Design Suite User Guide

Vivado Design Suite Tutorial. Designing with IP

Vivado Design Suite User Guide. Designing IP Subsystems Using IP Integrator

ISim Hardware Co-Simulation Tutorial: Interacting with Spartan-6 Memory Controller and On-Board DDR2 Memory

ISE Tutorial. Using Xilinx ChipScope Pro ILA Core with Project Navigator to Debug FPGA Applications. UG750 (v14.4) December 18, 2012

Vivado Design Suite Tutorial. Designing IP Subsystems Using IP Integrator

Vivado Design Suite Tutorial. Using Constraints

I/O Pin Planning Tutorial. PlanAhead Design Tool

RTL and Technology Schematic Viewers Tutorial. UG685 (v13.1) March 1, 2011

PlanAhead Software Tutorial

ISE Tutorial: Using Xilinx ChipScope Pro ILA Core with Project Navigator to Debug FPGA Applications

ChipScope Pro Software and Cores User Guide

ML631 U2 DDR3 MIG Design Creation

ML631 U1 DDR3 MIG Design Creation

PetaLinux SDK User Guide. Eclipse Plugin Guide

PlanAhead Software Tutorial

VCU110 GT IBERT Design Creation

ML605 Restoring Flash Contents

Synthesis Options FPGA and ASIC Technology Comparison - 1

Vivado Design Suite User Guide

Vivado Design Suite Tutorial:

ML605 GTX IBERT Design Creation

PlanAhead Software Tutorial

KC705 Ethernet Design Creation October 2012

ISim User Guide. UG660 (v13.4) January 27, 2012

Virtual Input/Output v3.0

Xilinx Memory Interface Generator (MIG) User Guide

Partial Reconfiguration Tutorial. PlanAhead Design Tool

Vivado Design Suite Tutorial: Implementation

Vivado Design Suite Tutorial

VTR-2000 Evaluation and Product Development Platform. Instruction Sheet SOC Technologies Inc.

FMC-MCM-1000 Evaluation and Product Development Platform. Instruction Sheet SOC Technologies Inc.

AC701 Ethernet Design Creation October 2014

AC701 Ethernet Design Creation June 2014

Vivado Design Suite Tutorial. Design Flows Overview

Zynq-7000 Platform Software Development Using the ARM DS-5 Toolchain Author: Simon George and Prushothaman Palanichamy

VCU108 Built In Test July 2015

SP605 GTP IBERT Design Creation

Vivado Design Suite Tutorial. Designing IP Subsystems Using IP Integrator

ML605 PCIe x8 Gen1 Design Creation

EXOSTIV Dashboard Hands-on - MICA board

Vivado Design Suite Tutorial: High-Level Synthesis

VTR-S1000. Quick-Start Guide. - Decoder Kit. Evaluation and Product Development Platform. Revision SOC Technologies Inc.

EDK Concepts, Tools, and Techniques

AC701 Built-In Self Test Flash Application April 2015

Supported Device Family (1) Supported User Interfaces. Simulation Models Supported S/W Drivers. Simulation. Notes:

ZC706 GTX IBERT Design Creation November 2014

Vivado Design Suite Tutorial. I/O and Clock Planning

Utility Bus Split (v1.00a)

Vivado Design Suite User Guide

EDK Concepts, Tools, and Techniques

ZC706 GTX IBERT Design Creation June 2013

AccelDSP tutorial 2 (Matlab.m to HDL for Xilinx) Ronak Gandhi Syracuse University Fall

KC705 PCIe Design Creation with Vivado August 2012

BFM Simulation in Platform Studio

Spartan -6 LX150T Development Kit Hardware Co-Simulation Reference Design User Guide

Vivado Design Suite Tutorial. I/O and Clock Planning

EDK Concepts, Tools, and Techniques

Vivado Design Suite User Guide

PetaLinux SDK User Guide. Firmware Upgrade Guide

Spartan -6 LX150T Development Kit Hardware Co-Simulation Reference Design Tutorial

Xilinx 7 Series FPGA Libraries Guide for HDL Designs. UG768 (v 13.4) January 18, 2012

PetaLinux SDK User Guide. Application Development Guide

Vivado Design Suite Tutorial:

LogiCORE IP 3GPP LTE Turbo Encoder v1.0 Bit-Accurate C Model. 3GPP LTE Turbo. [optional] UG490 (v1.0) April 25, 2008 [optional]

ISE Design Suite Software Manuals and Help

Vivado Design Suite Tutorial: Programming and Debugging

Virtex-4 PowerPC Example Design. UG434 (v1.2) January 17, 2008

7 Series FPGAs Memory Interface Solutions (v1.9)

Vivado Design Suite User Guide

icecube2 Installation Guide

Partial Reconfiguration Tutorial. PlanAhead Design Tool

ISim User Guide. UG660 (v14.2) July 25, 2012

SP605 Standalone Applications

Intel Stratix 10 Low Latency 40G Ethernet Design Example User Guide

Utility Reduced Logic (v1.00a)

Vivado Design Suite Tutorial. Model-Based DSP Design using System Generator

Virtex-6 FPGA GTX Transceiver OTU1 Electrical Interface

Tutorial - Using Xilinx System Generator 14.6 for Co-Simulation on Digilent NEXYS3 (Spartan-6) Board

SOC is disclosing this user manual (the "Documentation") to you solely for use in the development of designs to operate with SOC hardware devices. You

Getting Started with the PowerPC and MicroBlaze Development Kit - Virtex-4 FX12 Edition. UG092 (v1.6) June 2, 2008

Encoder Core. API Specification. Revision: SOC Technologies Inc.

Spartan-6 Libraries Guide for HDL Designs. UG615 (v 13.1) March 1, 2011

Xilinx/Cadence PCB Guide. UG629 (v 13.1) March 1, 2011

Transcription:

ISim Hardware Co-Simulation Tutorial: Accelerating Floating Point FFT Simulation UG817 (v13.3) November 11, 2011

Xilinx is disclosing this user guide, manual, release note, and/or specification (the Documentation ) to you solely for use in the development of designs to operate with Xilinx hardware devices. You may not reproduce, distribute, republish, download, display, post, or transmit the Documentation in any form or by any means including, but not limited to, electronic, mechanical, photocopying, recording, or otherwise, without the prior written consent of Xilinx. Xilinx expressly disclaims any liability arising out of your use of the Documentation. Xilinx reserves the right, at its sole discretion, to change the Documentation without notice at any time. Xilinx assumes no obligation to correct any errors contained in the Documentation, or to advise you of any corrections or updates. Xilinx expressly disclaims any liability in connection with technical support or assistance that may be provided to you in connection with the Information. THE DOCUMENTATION IS DISCLOSED TO YOU AS-IS WITH NO WARRANTY OF ANY KIND. XILINX MAKES NO OTHER WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, REGARDING THE DOCUMENTATION, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT OF THIRD-PARTY RIGHTS. IN NO EVENT WILL XILINX BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, EXEMPLARY, SPECIAL, OR INCIDENTAL DAMAGES, INCLUDING ANY LOSS OF DATA OR LOST PROFITS, ARISING FROM YOUR USE OF THE DOCUMENTATION. Copyright 2002-2012 Xilinx Inc. All Rights Reserved. XILINX, the Xilinx logo, the Brand Window and other designated brands included herein are trademarks of Xilinx, Inc. All other trademarks are the property of their respective owners. The PowerPC name and logo are registered trademarks of IBM Corp., and used under license. All other trademarks are the property of their respective owners. Revision History The following table shows the revision history for this document. Date Version Description 03/18/2011 13.1 Initial release 07/06/2011 13.2 Release updates 11/11/2011 13.3 Updated with modifications to match release. Added: Revision History (this topic) Additional Resources Appendix Updated: Creating a Testbench Graphics throughout Corrected text and procedures per 13.3 release. 2 www.xilinx.com UG817 (v13.3) November 11, 2011

Table of Contents Revision History... 2 Chapter 1 Introduction... 5 Prerequisites... 5 Tutorial Files... 6 Chapter 2 Tutorial... 7 Step 1: Generating a FFT Core in CORE Generator... 7 Step 2: Creating a Testbench... 12 Step 3: Compiling the Design for Hardware Co-Simulation... 13 Step 4: Running ISim Hardware Co-Simulation... 15 Appendix A Additional Resources...17 Appendix B Determining the Ethernet Port...19 UG817 (v13.3) November 11, 2011 www.xilinx.com 3

4 www.xilinx.com UG817 (v13.3) November 11, 2011

Chapter 1 Introduction This tutorial describes how to use ISim Hardware co-simulation to accelerate the simulation of Floating Point Unit (FPU) Fast Fourier Transform (FFT) and verify the FFT implementation on a Xilinx ML605 board. Digital Signal Processing (DSP) designs are typically very time-consuming to simulate in software due to their data and computation intensiveness. A fast, bit-accurate model is often used to speed up the simulation of a DSP function, but it does not provide any cycle accuracy and is not straightforward to integrate with other Register Transfer Level (RTL) modules. A behavioral RTL model provides bit-and-cycle accuracy but is relatively slower to simulate. A structural Register Transfer Level (RTL) or gate-level model is even much slower to simulate. Sometimes an IP does not provide a fast, bit-accurate model or even a behavioral RTL model, which leaves the slowest structural/gate-level simulation as the only choice. ISim hardware co-simulation provides an additional means to simulate DSP functions by offloading intensive computations to FPGA. It can bring synthesizable HDL code, synthesized or protected netlists such as IP cores generated by CORE Generator software into FPGA for co-simulation. That solves the problem of getting bit-and-cycle accurate simulation models as well as bolstering the simulation performance. For many complex DSP designs, not only does it accelerate the simulation of a design, it verifies the implementation of the design on actual hardware. ISim hardware co-simulation complements RTL, post-synthesis, and post-implementation simulation to complete the verification tool suite. Prerequisites ISE Design Suite Virtex -6 FPGA ML605 Evaluation Kit Design File: rdf0125_fft_sim_tutorial.zip UG817 (v13.3) November 11, 2011 www.xilinx.com 5

Chapter 1: Introduction Tutorial Files File fp_fft_top.v fp_fft_tb.v fp_fft_tb.vhd FloatingPointFFT.xise sim.tcl fp_fft_tb.wcfg fp_fft_tb.prj full_compile.bat full_compile.sh incr_compile.bat incr_compile.sh run_isim.bat run_isim.sh Description Wrapper that instantiates the floating point FFT core. Top-level Verilog testbench that generates test vectors to exercise the FFT core. Top-level HDL testbench that generates test vectors to exercise the FFT core. ISE project for this tutorial. Custom simulation command file that measures the ISim simulation time. Custom waveform configuration file. ISim project file for the command line flow. Windows batch file to fully compile the design for hardware co-simulation with the Fuse command line. Linux shell script to fully compile the design for hardware co-simulation with the Fuse command line. Windows batch file to incrementally compile the testbench for hardware co-simulation with the Fuse command line. Linux shell script to incrementally compile the testbench for hardware co-simulation with the Fuse command line. Windows batch file to launch the ISim simulation. Linux shell script to launch the ISim simulation. Note When performing this tutorial, all data files must be copied to your current working directory. 6 www.xilinx.com UG817 (v13.3) November 11, 2011

Chapter 2 Tutorial This tutorial describes how to use ISim Hardware Co-simulation to accelerate the simulation of Floating Point Unit (PFU) Fast Fourier Transform (FFT) and verify the FFT implementation on a Xilinx ML605 board. This tutorial has four sections with the steps you need to perform to run an FFT design through ISim hardware co-simulation. Perform the steps in the order that they are presented. These sections are as follows. 1. Generating a FFT Core in CORE Generator 2. Creating a Test Bench 3. Compiling the Design for Hardware Co-Simulation 4. Running ISim Hardware Co-Simulation Step 1: Generating a FFT Core in CORE Generator In this tutorial, you use the Fast Fourier Transform (FFT) IP core in the CORE Generator tool and create an ISim Hardware Co-Simulation (HWCoSim) testbench that runs on the Virtex -6 FPGA ML605 Evaluation Kit. Note The screen captures in this tutorial are based on the Fast Fourier Transform version 8.0. The CORE Generator GUI might look different in later versions of the tool. 1. Launch the ISE Project Navigator. 2. Select File > New Project to open the New Project Wizard. Enter a project name (FloatingPointFFT) and location. Click Next. UG817 (v13.3) November 11, 2011 www.xilinx.com 7

Chapter 2: Tutorial 3. On the Project Settings page: Choose the part for the ML605 board, which is a Virtex -6 device XC6VLX240T Set the package to FF1156 Set the speed to -1 Select ISim as the simulator and Verilog as the preferred language. Click Next and then Finish to complete the project creation. 8 www.xilinx.com UG817 (v13.3) November 11, 2011

Chapter 2: Tutorial 4. Choose Project > New Source to open the New Source Wizard. Select IP (CORE Generator & Architecture Wizard) and name the IP as fp_fft_core. Click Next. 5. Select Fast Fourier Transform version 8.0 from the IP list (either By Function or By Name). Click Next, and then click Finish. UG817 (v13.3) November 11, 2011 www.xilinx.com 9

Chapter 2: Tutorial 6. When the FFT core GUI opens, set the Transform Length to 16384. Select Pipelined, Streaming I/O as the implementation, and click Next. 7. Set the Data Format to Floating Point, and the Output Ordering to Natural Order. Click Next. 10 www.xilinx.com UG817 (v13.3) November 11, 2011

Chapter 2: Tutorial 8. Choose Use 4-multiplier structure (performance optimization) for the Complex Multipliers option. Click Generate to generate the core. 9. Add a top-level module, fp_fft_top, that instantiates the generated fp_fft_core IP core. This is required because ISim hardware co-simulation only supports a Hardware Definition Language (HDL) top-level module. You can use the completed fp_fft_top.v provided in this tutorial. Choose Project > Add Source > fp_fft_top.v, select Open and then click OK. UG817 (v13.3) November 11, 2011 www.xilinx.com 11

Chapter 2: Tutorial Step 2: Creating a Testbench 1. Add a Verilog testbench module fp_fft_tb.v that generates test vectors to exercise the fp_fft_top instance. You can use the completed fp_fft_tb.v file provided in this tutorial. 2. Select Project > Add Source > fp_fft_tb.v. 3. Click Open, and then click OK. The testbench has two 64-bit by 16384 arrays fft_xn_re_data, fft_xn_im_data, for storing the real and imaginary components of the FFT input. When the simulation starts, the testbench loads the FFT input vector from the input_data.txtdata file, for the first frame. The input_data.txt file stores one data point per line. Each data point compromises two 32-bit hexadecimal values, the real and imaginary, respectively, separated by a space. The hexadecimal values are the binary representation of the floating point numbers using the IEEE 754 standard. Note The TXT data files must be in the directory from which the simulation is being run. The operations performed by the demonstration testbench are appropriate for the configuration of the generated core, and are a subset of the following operations: Frame 1: Drive a frame of pre-generated input data from the file. Frame 2: Configure an inverse transform; drive the output of Frame 1 as a frame of input data. Configure Frame 3: A forward transform while the previous transform is running. Frame 3: Drive the output of Frame 2 as a frame of input data; de-assert AXI TVALID (and TREADY, if present) signals occasionally to demonstrate AXI handshaking Frames 4-7: Run these frames back-to-back, as quickly as possible: Queue up configurations for a forward transform (Frame 4) followed by a reverse transform (Frame 5), both with a smaller point size (if the point size is configurable) and a short cyclic prefix (if available). Frame 4: Drive a frame of pre-generated input data. Frame 5: Drive the output of Frame 1 as a frame of input data; simultaneously configure Frame 6: A forward transform with maximum point size, a longer cyclic prefix (if available) and a zero scaling schedule (if fixed scaling is used). Frame 6: Drive a frame of pre-generated input data; simultaneously configure Frame 7: An inverse transform with maximum point size, no cyclic prefix and default scaling schedule (if fixed scaling is used) Frame 7: drive the output of frame 1 as a frame of input data. Wait until all frames are complete. 12 www.xilinx.com UG817 (v13.3) November 11, 2011

Chapter 2: Tutorial Step 3: Compiling the Design for Hardware Co-Simulation After you create the testbench, you can compile the design for hardware co-simulation using the ISim compiler. This can be done in Project Navigator by enabling hardware co-simulation on a selected instance in your design. The selected instance, including its sub-modules, are co-simulated in hardware during the ISim simulation. Other modules are simulated in software. 1. In Project Navigator, switch to the Simulation View. From the Hierarchy Pane, right-click the fp_fft_top instance, and click Source Properties. 2. In the Source Properties dialog box, do the following: Select the Hardware Co-Simulation category. Check the Enable Hardware Co-Simulation check box. Set the Clock Port to aclk. Select ML605 (JTAG) as the target board. Leave the Enable Incremental Implementation option unchecked, and Click OK. Note The enabled instance for hardware co-simulation is now marked with a special icon. UG817 (v13.3) November 11, 2011 www.xilinx.com 13

Chapter 2: Tutorial You can use the Enable Incremental Implementation option after the design is compiled for hardware co-simulation. If the instance selected for hardware co-simulation does not change in subsequent runs, you can turn on this option to skip the synthesis, implementation, and bitstream generation for hardware co-simulation. It allows the testbench or any portion simulated in software to be modified and simulated again quickly. 3. From the Hierarchy Pane, select the fp_fft_tb instance. 4. In the Process Pane, right-click Simulate Behavioral Model and click Process Properties. 5. In the Process Properties > ISim Properties dialog box, change the Property display level to Advanced, and click OK. Review the values; this tutorial uses the default Advanced settings. Click OK. 6. In the Process Pane, run the Simulate Behavioral Model process for the dut - fp_fft_tb instance. Compiling the Design on the Command Line You can invoke the ISim compiler through the Fuse command line tool. You must provide a project file, the design top level module(s), and other optional arguments such as libraries and library search path to which to link. To compile the design for hardware co-simulation, you must also provide the following arguments: fuse -prj <project file> <top-level modules> -hwcosim_instance <instance> -hwcosim_clock <clock> -hwcosim_board <board> -hwcosim_constraints <constraints file> -hwcosim_incremental [0 1] -hwcosim_instance: Specifies the full hierarchical path of the instance to co-simulate. -hwcosim_clock: Specifies the port name of the clock input for the instance. This is the clock in the lock-step portion, that is to be controlled by the testbench. For a design with multiple clocks, specify the fastest clock using this option so that ISim can optimize the simulation. Other clock ports are treated as regular data ports. -hwcosim_board: Specifies the identifier of the hardware board to use for co-simulation. -hwcosim_constraints (optional): Specifies the custom constraints file that provides additional constraints for implementing the instance for hardware co-simulation. We also use the constraints file to specify which ports of the instance are mapped to external I/Os or clocks. -hwcosim_incremental (optional): Specifies whether Fuse should reuse the last generated hardware co-simulation bitstream and skip the implementation flow. For example, to compile the FFT design for this tutorial, you can run the Fuse command line as follows: fuse -prj fp_fft_tb.prj fp_fft_tb o fp_fft_tb.exe -hwcosim_instance /fp_fft_tb/dut -hwcosim_clock aclk -hwcosim_board ml605-jtag 14 www.xilinx.com UG817 (v13.3) November 11, 2011

Chapter 2: Tutorial Step 4: Running ISim Hardware Co-Simulation The simulation executable generated by the compiler runs in the same way in both software simulation and hardware co-simulation flow. Project Navigator automatically launches the simulation executable in GUI mode after the compilation finishes. In the Instances and Processes Pane, the instance selected for hardware co-simulation is indicated with a special icon. As the instance runs in hardware, you cannot expand it to see its internal signals and submodules. Before the simulation starts, ISim programs the FPGA with the bitstream file generated for hardware co-simulation. Notice the message in the ISim console window: Downloading bitstream, please wait till status is READY. After the FPGA is configured, the console shows: Bitstream download is complete. READY for simulation. Note If your computer has more than one ethernet port, you must identify the one to use to the simulation process. See Determining the Ethernet Port, for more information. UG817 (v13.3) November 11, 2011 www.xilinx.com 15

Chapter 2: Tutorial From this point, you can run the simulation and interact with the ISim GUI the same way you do in the software simulation flow. 16 www.xilinx.com UG817 (v13.3) November 11, 2011

Appendix A Additional Resources Xilinx Glossary - http://www.xilinx.com/support/documentation/sw_manuals/glossary.pdf Xilinx Documentation - http://www.xilinx.com/support/documentation Xilinx Support -http://www.xilinx.com/support/documentation Virtex -5 ML506 Evaluation Platform User Guide (UG347) Virtex -6 ML605 Documentation Spartan -6 Boards and Kits ISim User Guide (UG660) ISE Hardware Co-Simulation Tutorials: (UG817) ISE Hardware Co-Simulation Tutorial: Interacting with Spartan-6 Memory Controller and On-Board DDR2 Memory (UG818) ISE Hardware Co-Simulation Tutorial: Processing Live Ethernet Traffic Through Virtex-5 Embedded Ethernet Mac (UG819) UG817 (v13.3) November 11, 2011 www.xilinx.com 17

18 www.xilinx.com UG817 (v13.3) November 11, 2011

Appendix B Determining the Ethernet Port To run an Ethernet-based Hardware Co-Simulation when multiple Ethernet interfaces are present, you must select the Ethernet interface that you want to co-simulate. If you ran a previous hardware co-simulation using the Point-to-Point interface option, you see the following error message: "ERROR: In process wrapper AHIL_INITIALIZE Failed to open hardware co-simulation instance. Error in Point-to-point Ethernet Hardware Co-simulation. There are multiple Ethernet interfaces available. Please select an interface." Use the following steps to determine the Ethernet port, set and verify the Ethernet address, and verify that the simulation runs. Refer to the following figure for Step 1. 1. Determine the Ethernet port to which the co-simulation board is connected. a. On your system command prompt, open a command terminal window (cmd) b. In the command window, type ipconfig -all to list all Ethernet ports and connections. c. Locate the physical address of the Ethernet port connected to the co-simulation board. d. Convert the physical address delimiter from a dash (-) to a colon (:). For example: 00:19:B9:75:E5:95 UG817 (v13.3) November 11, 2011 www.xilinx.com 19

Appendix B: Determining the Ethernet Port 2. Set and verify the correct Ethernet port in ISim, as follows: a. Open the ISim GUI. b. Select the Design under Test (DUT). c. Go to the Tcl console. d. In the Tcl console, enter the following commands: i. Set the Ethernet address: hwcosim set ethernetinterfaceid <##:##:L#:##:L#:##> <physical address> ii. Verify the Ethernet address: hwcosim get ethernetinterfaceid iii. Verify that the simulation runs: run 10us The following figure outlines the process within the ISim GUI. 20 www.xilinx.com UG817 (v13.3) November 11, 2011