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 > PROTOTYPING + VERIFICATION = THE BEST OF BOTH WORLDS > Virtual platform as a testbench

TABLE OF CONTENTS

Xilinx FPGA FPGA Forum

Virtual platform as a testbench

FONT SIZE : AAA

FPGAs are not optimized for processor implementation, so a design team that wants  to use a complex processor, such as an ARM Cortex®-A8 or similar, will find it  difficult to instantiate the core in the FPGA and achieve the performance they are  looking for.  

One option (Figure 157) is to partition the design so that they have a fast ISS  running within the virtual platform. They have to partition the design sensibly so  that they can perform most of the transactions in software, and only when accessing  peripherals should the system access the FPGA. They should ensure that all the  local memory (e.g., L3 memory) is also within the virtual platform; otherwise they  would see no performance benefit as a result of going across the SCE-MI interface  to fetch instructions and data.

Embedded software executed on host.png

In this example the design team performs native execution of the embedded  software on the host PC. Executing software on a workstation with a virtual model  processor is often faster than in FPGA prototype. The design team can use the  FPGA to maintain the accuracy of accelerators and peripherals.

Virtual platform as a testbench

Design teams tend to use this approach (Figure 158) when they have kicked off the  project with some pre-RTL software development. They may have actually started  to write test cases to verify some of the blocks in the virtual platform. This is an  approach that we have used within Synopsys to verify USB software. 

When the RTL becomes available, they can replace the TLMs with the RTL  instantiated in the FPGA and re-run the same software verification tests against the  RTL to check that they pass, or otherwise refine the test cases. While some of the IP  blocks that they have modeled may have only partial functionality, they will have  full accuracy (including the introduction of cycle-accurate timing) in the RTL. By abstracting some of the accuracy at the outset, the developers can get started on the  software development sooner.

Virtual platform acts as a testbench for RTL in FPGA.png

Using the virtual platform as a testbench for the FPGA prototype avoids duplication  of effort by making better use of the work that went into system-level development.  It also enables a design team to compare results in simulation against results in  hardware, to verify the flow into hardware by repeating a set of known stimuli, to  provide feedback to the verification plan for quality assurance purposes and to run  regression tests very efficiently.

Virtual and physical IO (system IO)

In this scenario (Figure 159) the design team has a certain amount of virtual realworld IO that it can support from the virtual platform, but this situation is not as  good as having a real physical interface. To reduce risk, we need to verify the  design in the context of the system it lives in, by connecting it to the real world.  Any new interface standard would benefit from this approach.

Design teams want to implement standards before silicon is available. We can  support this requirement by using a plug-in board (physical hardware) that would  confer the ability to use a standard virtual platform to bring up an OS, like Linux. In  this case we would have a new IP block and would be able to interface it to the real  world for test purposes.

Take the example of integrating a camera in a phone applications processor chip.  Taking this approach we could link the baseband design to a camera on a  workstation and make the software believe that information is coming from the real  camera in the phone. This allows the use of real-world stimuli when appropriate. 

For some applications it may be useful to create a GUI or some other interface to  allow the design team to interact more naturally with the virtual environment. For  example, “Can the phone receive a call while playing a game and downloading email?” is the kind of scenario that using a GUI will help to verify.

Virtual platform with a physical connection to the real world.png

Virtual ICE

Sometimes software developers do not want or need to see a board on their desks,  yet they do need access to the functionality that the DUT provides in order to write  code. This approach (Figure 160) provides a virtual hardware capability and helps to keep software engineers out of the lab and in the comfort of their familiar  development environment – at a PC. With a virtual ICE the design team can give remote access to the software  developers – virtual ICE is the remote desktop solution. They can have a very small  element of a virtual platform running on each of the software developer’s desktops.  

The idea is that the design team has an FPGA model that includes interfaces like  LCD and UART. They direct those interfaces back up to a virtual platform on a PC  so that they can have an LCD instantiated on the user’s desktop. They would  redirect the hardware traffic back across SCE-MI, giving a software virtual interface  to the hardware. Rather than connecting the FPGA to a physical LCD or physical  UART, they would model those interfaces within the virtual platform. They  implement the majority of the system in FPGAs, and provide virtual interfaces to  some of the physical hardware ports.

Platform provides links to designers at their desks.png

This approach is especially beneficial if the prototype has to remain in the lab  because of its size or fragility. The disadvantage is that simulation performance will  be worse over the network than having a high-speed connection direct to the  prototype.

System partitioning

Getting the hardware-software partition in the right place is critical to achieving  good system performance. There are a number of issues that designers must  consider, as well as some practical guidance to follow. 

First, there are certain fixed constraints. Some parts of the system – for example, the  testbench – may just not be synthesizable, so the design team cannot place them in  hardware. They may also be constrained by design size and need to map the design  to multiple FPGAs. Remember that high utilization of the available gates leads to  longer implementation times, especially because of place & route.

For parts where they have choice, design teams need to decide where to put the  bridge between hardware and software. They can only make a cut where they can  use a transactor that already exists, or that they can easily obtain. This tends to favor  inserting the partition at well-defined industry standards, such as on an AHB™ bus  interface. Making a cut at some arbitrary point means that the design team has to  come up with a way of modeling it, which can create problems. 

Once they have considered the constraints, the design team must analyze the design  to understand where they can make the cut in order to reduce the communication  between the simulator and the hardware. To maximize the chances of having the  FPGA accelerate the design, ideally they need to have computation in the hardware  dominate communication between the simulator and hardware.

Whether a design team will see their design accelerated depends predominantly on  the traffic across the interface between hardware and software. If the traffic is  characterized by a few control signals, the design team will likely see a huge speed up. On the other hand, heavy interaction between the simulator and DUT may yield  a small speed-up, or none at all. Table 33 shows how applying Amdahl’s law helps  to predict simulation acceleration.

Recommendation: if the aim is simulation acceleration, consider where  computation is happening. Move more and more components into the DUT, if  possible synthesize the testbench so that everything runs in the DUT.

Ahmdahl’s law predicts simulation acceleration.png

Sometimes, design teams choose to successively refine their partitions by moving  more and more into the DUT, as the RTL becomes mature. Not committing untested  code to the FPGA helps them to manage risk. For maximum performance they can  move across all synthesizable parts of the testbench.

Recommendation: if the DUT uses multiple FPGAs, dedicating the simulator  interface to just one of the FPGAs will help improve performance.


  • XC2C64A-7CP56C

    Manufacturer:Xilinx

  • CPLD CoolRunner -II Family 1.5K Gates 64 Macro Cells 159MHz 0.18um Technology 1.8V 56-Pin CSBGA
  • Product Categories: CPLDs

    Lifecycle:Active Active

    RoHS: No RoHS

  • XC2C64A-7F33C

    Manufacturer:Xilinx

  • Xilinx BGA
  • Product Categories:

    Lifecycle:Any -

    RoHS: -

  • XC5VFX100T-1FFG1738C

    Manufacturer:Xilinx

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

    Lifecycle:Active Active

    RoHS:

  • XC5VFX100T-2FF1738C

    Manufacturer:Xilinx

  • FPGA Virtex-5 FXT Family 65nm Technology 1V 1738-Pin FCBGA
  • Product Categories: Connecteurs

    Lifecycle:Active Active

    RoHS: No RoHS

  • XC5VFX100T-2FFG1738I

    Manufacturer:Xilinx

  • FPGA Virtex-5 FXT Family 65nm Technology 1V 1738-Pin FCBGA
  • Product Categories: Connecteurs&adapteurs

    Lifecycle:Active Active

    RoHS:

Need Help?

Support

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