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 > Design-for-Prototyping > Integrate the prototype with the verification plan

TABLE OF CONTENTS

Xilinx FPGA FPGA Forum

Integrate the prototype with the verification plan

FONT SIZE : AAA

The decision to use an FPGA prototype needs to be reflected in all aspects of the  chip design project plans. This is particularly important in the verification flow. The  project should create branches at RTL maturity points for prototype use. Avoid frequent and incremental RTL dumps on prototype designers. The goals for prototype use in the organization should be clearly stated and reflected in testing  plans and project milestones. 

Many of the issues concerning planning of the tasks to develop a prototype design  are discussed in section 4.2

Optimize scheduling of prototype development

The prototype is intended to be a surrogate for the final SoC chip to demonstrate  functionality at near-SoC speeds for software developers and others to gain  confidence in the correctness of the design. The prototype is not an RTL debug tool – that is the role of the software simulator. We should be careful to wait for the RTL  design to reach a pre-agreed level of maturity before starting the prototype  development.  

There often is a milestone in the design project plan where the team considers the  RTL complete enough to issue “hello world” in the simulator. This often coincides  with the project milestone when the RTL is ready for a “trial implementation” to  identify problem areas in the backend path to silicon. By developing the prototype  based on this key RTL milestone will minimize disruption to the prototyping effort  from RTL debugging changes and maximize the organization’s use of the prototype.

Keep simulation scripts for prototypers to use

As the SoC design and FPGA-based prototype evolve in different directions, we  should try to maintain the working simulation models. Then, at key points in  prototype bring-up and debug, odd behavior can be checked against working  testbenches for the real soC design. Block-level testbenches in particular, are useful  for checking RTL modifications and it is best if the SoC verification team shares  key testbenches with the prototyping team.  

The goal is to leverage everyone’s experience and avoid needless duplication of  effort. Identifying a set of “golden” testbenches will build confidence that everyone  is working on the same version of the design.  

Assuming that the verification team has been busy while the FPGA-based prototype  has been developed, there is a chance that they have already expanded their  testbench beyond that running when the RTL was delivered for prototype. It is  worth having a procedure in house where simulation results are available for  inspection by the prototype team or, better still, the verification team can offer  insight into faults seen in the prototype. It could be that the same fault has already  been detected and possibly even cured in their RTL already. Regular comparison of  prototype and SoC simulation results is recommended.

Documentation well and use revision control

Designers should always strive to write clear, self-documenting code. However in  any large design there will be some areas where the intended behavior may be  subtle and obvious to the creator but not easily understood by others. In these cases,  even a few in-line comments around curious design elements will help. This is  especially important for late design fixes to avoid wasted effort due to  misunderstandings about assumed code behavior. 

The larger organization needs to instill the importance of these efforts across all  members of the design team so individuals will take the time to use appropriate  coding style with comments when first entering the code. Judgment needs to be  used to know when simple code can stand on its own and when naturally complex  algorithms or unavoidably tricky code will require extra comments to capture the  intended behavior for later maintainers of the code. 

On top of this, changes that are made by the prototyping team themselves should be  recorded in the same revision control system (RCS) as the rest of the project. We  should avoid the prototyping team seeming isolated as “those hackers with the  boards” about whom nobody has a clear understanding.

Adopt company-wide standard for hardware

As mentioned in chapters 5 and 6, the choice of hardware platform is crucial to  ongoing prototype success. If we are looking to do many prototype projects then it  will save a lot of time and money to adopt a standard platform. If boards are in stock  or readily available from a standard board supplier then inventory issues need not  occur, even when boards become damaged and a quick replacement is required. 

If boards and add-ons are compatible across multiple labs and sites then a  company-wide knowledge base and expertise can be built up around the chosen  platforms. Add-on cards might be developed to attach to the standard base platform  for a certain project but would then be reusable across the team and wider company. 

The worst-case scenario can be that each team obtains or builds a new and  incompatible board for every prototyping project, involving risk and high  development costs. Further information about this can be found in Appendix B.

Include Design-for-Prototyping in RTL standards

Most RTL style changes for FPGA-based prototyping are also good practices for  SoC design in general (e.g., clear functional architecture, FFs at block boundaries,  etc.). Specific guidelines should be incorporated in the company RTL coding  standards for future projects. Perhaps just enforcing some existing “motherhood”standards is now possible with the requirement to map the generic RTL design into  two target technologies so there is less temptation to “cut corners” in design  specifications. 

As experience with prototypes is gained over time designing similar SoCs, it should  be possible to find commonality in the prototypes. Consider creating company  standards for prototype hardware to encourage reuse and facilitate common add-on  devices.  

Although the prototype systems are not usually customer-ready products, they  should be built to proper engineering standards as they can serve as a reference  design for later work and in some cases become the basis of follow-on product  designs. In this way the ROI for the original prototype design may be increased  several times over.  

Even for the original SoC product, if market opportunity creates the need for a  slightly modified product, the existence of a reusable prototype system can greatly  accelerate development of the new product and reduce risk in verification of the new  functionality.  

It is a mistake to think of the prototype as a “throw away” step in the process to get  to final silicon of the SoC part. Should a major problem be identified in the field, the  prototype can be used again to fully verify the engineering changes (EC) that may  have caused it Following well-documented conventions and practices will enable  subsequent design teams to leverage the earlier prototypes when needed. 

Examples of coding standards that will benefit the prototype include naming  standards for target-specific design elements (such as clock generation, clocks,  memories, and analog blocks), check-in regression and linting requirements, and the  careful maintenance and enforcement of a concise coding standard document.

  • XC5215-6PQ160C

    Manufacturer:Xilinx

  • FPGA XC5200 Family 23K Gates 1936 Cells 83MHz 0.5um Technology 5V 160-Pin PQFP
  • Product Categories: FPGAs

    Lifecycle:Obsolete -

    RoHS: No RoHS

  • XC2V1000-4FF896I

    Manufacturer:Xilinx

  • FPGA Virtex-II Family 1M Gates 11520 Cells 650MHz 0.15um Technology 1.5V 896-Pin FCBGA
  • Product Categories: FPGAs

    Lifecycle:Obsolete -

    RoHS: No RoHS

  • XC3S700A-4FG484C

    Manufacturer:Xilinx

  • FPGA Spartan-3A Family 700K Gates 13248 Cells 667MHz 90nm Technology 1.2V 484-Pin FBGA
  • Product Categories: FPGAs

    Lifecycle:Active Active

    RoHS:

  • XC3S700A-4FTG256C

    Manufacturer:Xilinx

  • FPGA Spartan-3A Family 700K Gates 13248 Cells 667MHz 90nm Technology 1.2V 256-Pin FTBGA
  • Product Categories: FPGAs

    Lifecycle:Active Active

    RoHS:

  • XC2V1000-5FF896C

    Manufacturer:Xilinx

  • FPGA Virtex-II Family 1M Gates 11520 Cells 750MHz 0.15um Technology 1.5V 896-Pin FCBGA
  • Product Categories:

    Lifecycle:Obsolete -

    RoHS: No RoHS

Need Help?

Support

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