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 > Getting the design ready for the prototype > Adapting the design’s top level

TABLE OF CONTENTS

Xilinx FPGA FPGA Forum

Adapting the design’s top level

FONT SIZE : AAA

We asked ourselves a rhetorical question in chapter 4 which was: “how much of the  design should we prototype?” and it is time to answer that question in more detail.  We will find a number of technology-specific elements that will not work in our  FPGAs, usually at the top level of an SoC design hierarchy. These are the chip  support elements and the top-level IO pad instantiations. A rough diagram of an  SoC top-level is shown in Figure 66 where we see the SoC-specific chip support  alongside the majority of the SoC logic in the core block, which is the top of the rest  of the design hierarchy.

Simplified view of SoC top-level.png

To introduce this design into FPGA, we will need to either replace the chip support  and IO pads with FPGA equivalents, or simply remove the top level entirely and  wrap the design core with a new FPGA-specific top level. We will address the chip  support block in a moment, but first, how do we handle the IO?

Handling the IO pads

FPGA synthesis does not need to have IO pad instantiations in the RTL because it is  able to infer an FPGA pad and even configure it in most cases, using only the  defaults or simple attributes attached to the top-level signal. We could therefore  simply leave the pads out and tie the dangling connections inactive or to the toplevel boundary as required.  

An alternative approach is to leave the IP pad ring in place and to replace each IO  pad instance with a synthesizable model of its FPGA equivalent.  

A typical IO pad from a silicon technology library may have 20 or more  connections at its boundary, including the main input and output plus voltage and  slew controls and scan test. Some of these connections will link to the package  pins/balls while others connect into the core of the design or directly to adjacent  pads.  

For the purposes of prototyping, we need only model the logical connection from  the design core to the “outside” world. Therefore, we need only a simpler form of  the pad which makes that logical connection, omitting the scan etc. We can easily  make a small RTL file which fits into the IO pad instantiation in the SoC RTL but  contains the FPGA subset equivalent. This converts a black box pad instantiation  into something that the FPGA synthesis can use.  

Although there may be over a thousand pads in the SoC, there may be only ten or so  different types of pad. Replacing each type with an FPGA equivalent will be  relatively simple, especially if our SoC designs use the same pad library over  multiple projects and we can build up a small library of equivalents.

Handling top-level chip support elements 

The block in Figure 66, labeled “Chip Support,” contains those elements in the  design that are generally target specific, often seen as secondary to the main  function of the RTL, and yet are essential to its correct operation. This might  include such functions as clock generation and distribution, reset control and  synchronization, power-gating control and test and debug control. How much of this  is relevant for our prototype or is even needed for an FPGA implementation? 

Some teams recommend simply replacing the chip support block with another,  simpler block which takes care of those elements needed for the FPGAs. This  means that, in effect we have a new FPGA-compatible version of the top-level of  the SoC. The top-level RTL file for the SoC can be used as the basis for the new  FPGA top-level and an example of what the new top-level might look like is shown  in the block diagram in Figure 67. 

New design top-level for prototype.png

Here we see the clock generation and synchronization circuits at the top level supporting the existing design core. The creation of the equivalent FPGA chip  support block is a relatively simple FPGA design task involving dividers, clock  buffers and synchronizers, as shown in Figure 68.  

Simple illustration of top-level chip support block for FPGA.png

The use of the FPGA clock networks becomes more complex when the prototype  uses multiple FPGAs so we shall revisit the top-level again in chapter 8, where we  explore partitioned designs. 

Let’s look now more closely at how we handle clock gating, one of the most  important tasks in making a design FPGA-ready.


  • XCS10XL-5VQ100C

    Manufacturer:Xilinx

  • FPGA Spartan-XL Family 10K Gates 466 Cells 250MHz 3.3V 100-Pin VTQFP
  • Product Categories: Embedded - FPGAs (Field Programmable Gate Array)

    Lifecycle:Obsolete -

    RoHS: No RoHS

  • XC2C384-10PQG208I

    Manufacturer:Xilinx

  • CPLD CoolRunner -II Family 9K Gates 384 Macro Cells 125MHz 0.18um Technology 1.8V 208-Pin PQFP
  • Product Categories: CPLDs

    Lifecycle:Active Active

    RoHS:

  • XC2C384-7FGG324C

    Manufacturer:Xilinx

  • CPLD CoolRunner -II Family 9K Gates 384 Macro Cells 217MHz 0.18um Technology 1.8V 324-Pin FBGA
  • Product Categories: Embedded - CPLDs (Complex Programmable Logic Devices)

    Lifecycle:Active Active

    RoHS:

  • XC2C384-7PQG208C

    Manufacturer:Xilinx

  • CPLD CoolRunner -II Family 9K Gates 384 Macro Cells 217MHz 0.18um Technology 1.8V 208-Pin PQFP
  • Product Categories: CPLDs

    Lifecycle:Active Active

    RoHS:

  • XC2C512-10FG324I

    Manufacturer:Xilinx

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

    Lifecycle:Active Active

    RoHS:

Need Help?

Support

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