This website uses cookies. By using this site, you consent to the use of cookies. For more information, please take a look at our Privacy Policy.
Home > FPGA Technical Tutorials > Designing with Xilinx FPGAs Using Vivado > Hardware Debug > Debug Methodologies for FPGA Designs

TABLE OF CONTENTS

Xilinx FPGA FPGA Forum

Debug Methodologies for FPGA Designs

FONT SIZE : AAA

Iterative Debug Methodology

Creating and debugging FPGA designs using an iterative design flfl ow leverages one  of the key advantages that FPGA devices have over ASICs and ASSPs: FPGAs are  reprogrammable. Adding, modifying, and removing debug instrumentation are an  integral part of the FPGA design cycle, as shown in Fig. 17.1 . Due to their fifi xed  nature, it is not possible to add, change, or remove debug instrumentation in  ASIC/ASSP designs after fabrication.

While you can add debug instrumentation to ASIC/ASSP designs before tape  out, it is typically only done at the block interface level or in key control sections of  the design. It can be diffifi cult to predict where bugs will pop up in a design, which

FPGA design and debug cycle.png

means you might not be monitoring the appropriate part of the ASIC/ASSP design.  In FPGA designs, you can add just the right amount of debug instrumentation to the  appropriate part of the design to fifi nd the bugs and then remove the instrumentation  when it is no longer needed.

Simulation vs. Debugging in Hardware

FPGAs are similar to ASICs/ASSPs in that simulation-based verififi cation can be  used to ensure the design meets the specififi cation. The main advantage that simulation has over debugging in hardware is that simulation allows for full visibility of  any node in the design. However, when debugging in hardware, the number of nodes  that can be debugged in any given design iteration is limited to the amount of  resources available to the debug instrumentation.

An example of debug instrumentation that is used to trigger on hardware events  and capture data of interest is called the Integrated Logic Analyzer ( ILA ) debug  core. The ILA IP core uses FPGA fabric resources to implement the trigger functions and it uses block RAM to store the captured data samples. Table 17.1 shows a  chart of how many block RAM Tiles in the FPGA device are used for various levels  of design debug visibility. The amount of slice logic used by the ILA core ranges  from 0.81 to 2.61 % of a Kintex-7 XC7K480T device.

While simulation provides for increased debug node visibility and deeper capture  trace, debugging in hardware has two distinct advantages over simulation:


• Faster test run times, typically at the speed of the system under test 

• Testing in a real system environment rather than a simulation testbench

Number of block RAM Tiles used by ILA cores of varying data dimensions.png

Simulation and hardware debugging are not mutually exclusive. In fact, it is  often benefifi cial to use simulation to verify the functionality of a design before testing it out in hardware. This is especially true if the design consists of signififi cantly  new content that has not been previously verififi ed. After verifying the design using  simulation, you can debug in hardware to fifi nd issues that result from design integration or other system-level considerations, under the environment of real-world traffifi c  patterns.

In some cases, it can be advantageous to skip simulation altogether and verify  the design entirely in hardware. For example, in cases where designs that have  been previously verififi ed in simulation are undergoing small modififi cations or are  being ported from one FPGA device family to another, you may go directly to  hardware.

Debugging a Design That Meets Timing

Before debugging in hardware, make sure the design meets all timing constraint  requirements. Debugging a design that does not meet timing is typically not a  worthwhile endeavor since any misbehavior could easily be attributed to the failure  to meet timing.  

In addition to ensuring the design on its own meets timing, also ensure that the  design including the debug instrumentation IP (such as the ILA core) meets timing  as well. The ILA core uses FPGA device resources and can exhibit unexpected  behavior if design does not meet timing.

The ILA core has a clock input that is used to synchronize the measurements to  the design-under-test; therefore all design constraints related to that clock domain  also apply to the ILA core. The ILA core also has its own design constraints that  time the portions of the ILA core not related to the design clock domain. Once all  timing constraints are applied correctly and are met, it is quite likely that any misbehaviors that are encountered are due to real functional issues as opposed to  timing- related anomalies.


  • XC3064-70PG132M

    Manufacturer:Xilinx

  • FPGA XC3000 Family 4.5K Gates 224 Cells 70MHz 5V 132-Pin CPGA
  • Product Categories:

    Lifecycle:Obsolete -

    RoHS: No RoHS

  • XC5VFX30T-2FF665C

    Manufacturer:Xilinx

  • FPGA Virtex-5 FXT Family 65nm Technology 1V 665-Pin FCBGA
  • Product Categories: Résistances

    Lifecycle:Active Active

    RoHS: No RoHS

  • XC5VFX30T-3FFG665C

    Manufacturer:Xilinx

  • FPGA Virtex-5 FXT Family 65nm Technology 1V 665-Pin FCBGA
  • Product Categories: FPGAs (Field Programmable Gate Array)

    Lifecycle:Active Active

    RoHS:

  • XC5VFX70T-1FF665I

    Manufacturer:Xilinx

  • FPGA Virtex-5 FXT Family 65nm Technology 1V 665-Pin FCBGA
  • Product Categories: Contrôleur logique

    Lifecycle:Active Active

    RoHS: No RoHS

  • XC4003-6PG120C

    Manufacturer:Xilinx

  • FPGA XC4000 Family 3K Gates 100 Cells 100MHz CMOS Technology 5V 120-Pin CPGA
  • Product Categories:

    Lifecycle:Obsolete -

    RoHS: No RoHS

Need Help?

Support

If you have any questions about the product and related issues, Please contact us.