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 > FPGA-Based Prototyping Methodology > Bring up and debug: the prototype in the lab > Introducing the design onto the board

TABLE OF CONTENTS

Xilinx FPGA FPGA Forum

Introducing the design onto the board

FONT SIZE : AAA

Once we are confident that the platforms/boards are functional and we are confident  of the results of our implementation flow then we can focus on introducing the  FPGA-ready version of the SoC design onto the board. 

This first introduction should be done in stages because it is unlikely that every  aspect of the design’s configuration will be correct first time. Some configuration  errors have an effect of masking others and so bringing up the prototype in stages  helps to reduce the impact of such masking errors.  

After checking the prototyping board setup with some test designs and verifying  that there are no FPGA implementation issues, the actual design to be prototyped  can be taken to the board. Here are some useful steps to follow:  

• Confirm that the prototyping board setup is properly powered up before  programming the FPGAs. Then we can program all the FPGAs with the  corresponding generated bit files. Please refer to FPGA configuration in  the chapter 3 and external references noted in the appendices for further  details on configuring the FPGAs. There are dedicated “DONE” pins in all Xilinx® FPGAs which get asserted when the FPGAs are programmed  successfully. In off-the-shelf prototyping boards like HAPS boards, these  DONE pins are connected to LEDs on the boards so that the LEDs glow  when the FPGAs are programmed successfully. It is advisable to check and  make sure that all these LEDs glow to indicate the success of programming  all the FPGAs. During configuration, some FPGAs can draw their peak  current, owing to the large number of elements switching inside the device  fabric. This peak may be high enough to overload the board’s power  supply. This is not to say the power distribution to the devices which  should have been considered by the board developers long before its use in  the lab. A more common power supply error during configuration is to  have current limit on the lab power source set too low, leading to voltage  rail brown-out during configuration.

• After programming the FPGAs and releasing the reset, it is worth doing a  simple check to see that voltage rails are sound while the FPGAs are  running. Some power supplies can power the bare prototyping boards but  not when a real design is running on the FPGAs. Some commercial  prototyping boards such as HAPS have built-in “power good” indicators  and voltage sensing components which can be read by a supervisory  program to help in this task.  

• Initial checks can be performed at the inputs and outputs of the FPGAs and  external components. Checking the inputs first makes sense and if these are  valid, then move on to the FPGA outputs. Some of the inputs which need  to be checked first are the clock and reset inputs, especially those which are derived inside other the FPGAs. The inputs which are driven by any  external chipsets should also be checked. Sometimes there are circular dependencies which can prevent start-up of the SoC design in FPGA. For  example, the reset for one FPGA is driven by logic in another which  depends upon a signal driven from the first FPGA. 

• If all the inputs are valid then we can check all the outputs from the FPGAs  and this leads us onto the subject of probing the FPGA. This is covered in  depth in the next section. 

• If the design spans multiple FPGAs, then start the debugging by checking  the functionality of the parts of the design which reside in a single FPGA.  This will eliminate the possibilities of problems in the inter-FPGA  connections, complex pin multiplexing schemes, cables, connectors and  traces on the prototyping boards.  

• If the design has lot of interactions with external chip sets and IOs, then  test all the parts of the design which reside only inside the FPGAs initially.  This will eliminate the possibilities of problems in the external chipsets  and problems occurring in the interactions.

Note: incorrect startup state for multiple FPGAs

A common issue with multi-FPGA systems is the improper startup state. In  particular, if the FPGAs do not all start operating at the same time, even if they are  only one clock edge apart, then the design is very unlikely to work.  

Consider the simple case of a register-to-register path sharing a common clock. If  the source and destination registers are partitioned into separate FPGAs and the  receiving FPGA becomes operational just one clock cycle after the sending FPGA,  then the first register-to-register transmission will be lost. Conversely, if the sending  FPGA becomes operational one clock later than the receiving register, then the first  register-to-register data may be random and yet still be clocked through the  receiving FPGA as valid data. This simple example shows how there might be  coherency problems across FPGA boundaries right from the start. These startup  problems can also occur between FPGAs and external components such as  synchronous memories or sequenced IOs.

A number of factors determine the time it takes for an FPGA to become operational  after power up or after an external hard reset is applied, and it can vary from one  FPGA to another. Prime examples are clocking circuitry (PLL/DCM) that use an  internal feedback circuit and can take a variable amount of time to lock and provide  a stable clock at the desired frequency. In addition, any hard IO such as Ethernet  PHY or other static hardware typically becomes operational much sooner than the  FPGAs as they do not need to be configured. 

When the design shows signs of life but not as we know it, then one place to look is  at this startup synchronization.  

The remedy for the synchronized startup condition issue is a global reset  management, where all system-wide “ready” conditions are brought to a single  point and are used to generate a global reset. This is covered in detail in chapter 8.


  • XCS20XL-4CSG144C

    Manufacturer:Xilinx

  • FPGA Spartan-XL Family 20K Gates 950 Cells 217MHz 3.3V 144-Pin CSBGA
  • Product Categories:

    Lifecycle:Obsolete -

    RoHS:

  • XC3SD3400A-4FG676I

    Manufacturer:Xilinx

  • FPGA Spartan-3A DSP Family 3.4M Gates 53712 Cells 667MHz 90nm Technology 1.2V 676-Pin FBGA
  • Product Categories: FPGAs

    Lifecycle:Active Active

    RoHS:

  • XC3SD3400A-5FG676C

    Manufacturer:Xilinx

  • FPGA Spartan-3A DSP Family 3.4M Gates 53712 Cells 770MHz 90nm Technology 1.2V 676-Pin FBGA
  • Product Categories: FPGAs

    Lifecycle:Active Active

    RoHS:

  • XC2C512-7FTG256C

    Manufacturer:Xilinx

  • CPLD CoolRunner -II Family 12K Gates 512 Macro Cells 179MHz 0.18um Technology 1.8V 256-Pin FTBGA
  • Product Categories: Embedded - CPLDs (Complex Programmable Logic Devices)

    Lifecycle:Active Active

    RoHS:

  • XC2C512-FGG324I

    Manufacturer:Xilinx

  • Xilinx BGA
  • Product Categories:

    Lifecycle:Any -

    RoHS:

Need Help?

Support

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