Strategies for Testing FPGA Applications
- Updated2023-02-17
- 3 minute(s) read
Strategies for Testing FPGA Applications
Testing an application, and the pieces of the application, allows you to ensure that the application functions as you expect and helps to prevent errors later in development.
Test your application on three levels: unit, component, and system. Testing smaller portions of code as you create them saves time by identifying and preventing errors and bugs as your program grows. If you test and debug the functionality of the code extensively at the unit and component levels, you reduce the potential for errors at the system level.
Refer to the following guidelines for help identifying units, components, and systems:
- Real-world I/O
- Interaction with target resources or data in a separate unit
- Multiple loops running in parallel or at different rates
- Reliance on the specific passing or control of real-world time, as opposed to simulated time
You can call units as subVIs or subCDLs that you can reuse throughout your application.
Create Testbench VIs to test individual units and components of your application as you complete them. A testbench is typically a VI that provides simulated input values to your code and displays the output of the code on the panel. When your system is complete, you can create a Testbench VI that runs your entire application, or you can simply run your host application.
The following list provides examples of tests you might perform on various FPGA-targeted documents:
- Clock-Driven Logic—To test CDL code, use a Run GCDL Simulation node to call the CDL document from a testbench VI on the host.
- Mixed languages in an FPGA VI—To test code that mixes languages in an FPGA VI, place the code in a top-level FPGA VI testbench. Use FPGA Host Interface nodes in a host VI to run the FPGA testbench in simulation on the host.
- Top-Level FPGA VI—To test your entire application, also known as the system, use FPGA Host Interface nodes in a host VI to run the top-level FPGA VI in simulation on the host.