The Power of S2C's C-API

2011.09.25 | Tony Wu | AE Director

S2C's C-API function allows verification engineers to send/receive large amount of test data in computers to/from designs in FPGA-based prototypes.  I have talked with many verification engineers and one common challenge today is the ability to create enough test cases and often the corner cases for validating their design in FPGA-based prototypes thouroughly.  While linking their prototypes to target systems enable engineers to access to real world test environment, it is often hard to create corner test cases in real world environment.  Therefore, a good design methodology would be to complement the real world test environment with addtitional verification data that can be run from a computer on a FPGA-based prototypes.

S2C's C-API is a good fit for the  following purposes:

  • Exercise large amount of verification data from PC to designs in FPGA-based prototypes
  • Verification corner cases are hard to create in real world target systems, but can be created in simluation or software.
  • Real target system interface is too fast to achieve on FPGA-based prototypes and therefore using computers to generate tests at slower speed
  • Read and write to memories in FPGA systems such as to load boot codes or to take snape shots of system conditions. 

S2C's C-API is an optional feature of S2C Prodigy Player Pro software  and requires S2C  FPGA-based prototyping hardware that supports the Prodigy VM technology.   The following diagram shows a Prodigy Verification Module (VM) which communicates with a computer through a x4  PCIe Gen 2 inteface.  The Prodigy VM is then plug on a Quad Stratix-4 820 Prodigy Logic Module (LM) that can hold design up to 32.8M ASIC gates.

C-API versus  SCE-MI                                

SCE-MI is  probably the only well-known standard that links test environments in  computers to hardware-assisted verification platforms such as emulators and  FPGA-based prototypes.  While S2C  is an advocate for SCE-MI standard and have done a number of customer SCE-MI  projects, I personally think that using C-API is a good and  easy alternative for most design requirements today.  SCE-MI requires  strict linking infrastructure and more importantly SCE-MI compliant transactors.   Therefore, the cost and time to set up a SCE-MI prototype  environment is higher and longer.  Of  course, some customers indicated that adopting  SCE-MI is preferred because it will allow them to support cross software  and hardware platform verification in the future.  It is a good  argument, but I will list the benefit of using S2C's C-API below:

  1. Easy to use. S2C's hardware-side interface uses OpenCore's Wishbone bus structure where customer can easily adopt to any other bus or link directly to a design block or a memory block.  On PC side, we provide a set of C-API routines for read, write and DMA transfers.
  2. High Performance.  Requires very little overhead and can therefore run at almost full 20Gbps data trasnfer rate.
  3. Low Cost. Only a fraction of SCE-MI set up cost.
  4. SCE-MI standard has not been widely adopted.  There is limited number of SCE-MI transactors avaliable in the market place.


Having  the ability to exercise FPGA-based prototypes with large and fast verification  data from computers provides engineers a better mean to fully validate  their ASIC/SoC designs.  Both SCE-MI and C-API can achieve such ability  and I recommend the use of C-API if cross software and hardware platform is not  a concern today.  I will write a  blog on SCE-MI next month.