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 > Case study: USB OTG

TABLE OF CONTENTS

Xilinx FPGA FPGA Forum

Case study: USB OTG

FONT SIZE : AAA

This case study shows how Synopsys combined a virtual platform and FPGA  prototype to create a system prototype for a USB on-the-go (OTG) core.  

USB OTG System overview 

The system (  

Figure 161) consists of a virtual platform modeling a Samsung system-on-chip  supporting LCD, touchscreen, DMA, and physical Ethernet, running an unmodified  hardware Linux image. The virtual platform connects via an AHB bus with  transactors over the SCE-MI 2.0 interface to the USB 2.0 OTG core running in the  FPGA prototype.  

We can connect a USB memory stick containing pictures to the system prototype by  using a daughter card. The virtual platform controls the memory stick which provides access to the images. Users can debug at the hardware-software interface  with the software debugger and the hardware debug environment.

CHIPit Innovator system prototype.png

Integration use models

The system prototype enables various use models. One of the key benefits is  achieving a significant speed-up over pure RTL simulation – in this case by a factor  of 6x. The debug insight and controllability at the hardware-software interface also  boosts productivity. The environment supports features such as hardware break pointing, including the ability to pause and single-step the entire simulation. System  visibility and logging is only constrained by the host PC memory and storage  capacities.

Innovator and VCS

We can integrate the Innovator model with VCS through SystemC by using PLI  TLMs. We can partition the system so that the USB OTG RTL description runs  within VCS. The disadvantage of this configuration is that VCS cannot physically  control the memory stick. However, we can work around this by reflecting the  accesses back up to the software (the virtual prototype), and then connecting to the  USB stick.

Innovator and VCS.png

In practice, because the RTL is running much slower than the FPGA it is very  difficult to control a physical memory stick. That is why most design teams would  choose to use an FPGA prototype rather than co-simulation. There are, however,  advantages of using a VCS solution, including its superior analysis capabilities and  having better insight into the behavior of the core running on VCS – more so than a  designer would have with CHIPit, for instance.

Innovator and CHIPit or HAPS

This use case ( Figure 163) consists of Innovator connected to CHIPIt or HAPS via SCE-MI.  On the software side is a library that allows us to send transactions (which may just  be reads or writes) across SCE-MI. In the physical prototype we have a synthesizable transactor that we have implemented in an FPGA, which can then  interact with the RTL for the USB OTG.

Innovator and CHIPit (or HAPS).png

The advantage of having the transactor instantiated on CHIPit is that we can have a  plug-in card for the physical USB interface, so we can control a physical memory  stick or some other physical real-world device. Because the function is in hardware,  it is fast enough to do that. In some cases, this may also differentiate this use case  from the pure virtual prototype use case.

Virtual platform

The advantage of the pure software virtual prototype is that at the pre-RTL  development stage, there may not be any RTL available, so there is no other easy  way to do co-simulation or transaction-based verification. That is basically why  388 Chapter 13: Prototyping + Verification = The best of both worlds software virtual prototyping complements the hybrid or hardware approaches:  developers can start to develop their software, pre-RTL, on a software virtual  prototype assuming that they have access to models. It will take a certain amount of  time to develop new IP blocks. Despite that, typically we can have customers  engaged in software development some 9-18 months before tape-out.

Pure software virtual platform.png

Performance Comparison Table 34 shows performance figures for booting the  system and for performing the mount, copy and unmount operations.

Summary performance and characteristics for USB OTG example.png

The pure virtual platform performance was actually faster than the system prototype  because in this particular design there was a lot of traffic going across from the  virtual prototype to the RTL, in order to process interrupts. USB is not the best  example to demonstrate performance acceleration via hardware because of the  number of interrupts that the core generates and the processor needs to service. In  fact, the USB generates a start-of-frame interrupt in high-speed mode every eighth  of a millisecond.  

We had to look at ways of optimizing this design to stop the interrupts swamping  the bandwidth, with the consequence of a decline in performance. We did quite a lot  of work to boost the performance of the virtual platform. Partitioned properly,  something like a video codec would see better performance with the system  prototype than with the virtual platform.

The authors gratefully acknowledge significant contribution to this chapter from 

Rajkumar Methuku of Synopsys, Erfurt, Germany Kevin Smart of Synopsys, Livingstone, Scotland

  • XC2C64A-7CPG56C

    Manufacturer:Xilinx

  • CPLD CoolRunner -II Family 1.5K Gates 64 Macro Cells 159MHz 0.18um Technology 1.8V 56-Pin CSBGA
  • Product Categories: Embedded - CPLDs (Complex Programmable Logic Devices)

    Lifecycle:Active Active

    RoHS:

  • XC2C64A-7PCG44C

    Manufacturer:Xilinx

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

    Lifecycle:Obsolete -

    RoHS:

  • XC5VFX100T-2FF1136C

    Manufacturer:Xilinx

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

    Lifecycle:Active Active

    RoHS: No RoHS

  • XC5VFX100T-2FFG1136C

    Manufacturer:Xilinx

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

    Lifecycle:Active Active

    RoHS:

  • XC5VFX130T-1FF1738C

    Manufacturer:Xilinx

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

    Lifecycle:Active Active

    RoHS: No RoHS

Need Help?

Support

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