High-visibility debug-by-design for FPGA platforms
The true measure of a general-purpose FPGA platform is user design productivity, not just raw hardware performance. User productivity is a function of several interdependent components of the design environment: system firmware, simulation models, debugging support, device drivers, APIs and so forth. The careful, coordinated design of these components determines the level of debugging visibility and, ultimately, the ease of development for the end user. This paper examines the innovative aspects of the development of the SLAAC FPGA platforms and programming environment. Several novel techniques are presented, including circuit designs for transparent clock stepping and host access to on-board memories; device driver strategies and a "register compiler" to ease the design and testing of the hardware-software interface; and a co-simulation approach for advanced debugging of firmware, device drivers and user applications.The true measure of a general-purpose FPGA platform is user design productivity, not just raw hardware performance. User productivity is a function of several interdependent components of the design environment: system firmware, simulation models, debugging support, device drivers, APIs and so forth. The careful, coordinated design of these components determines the level of debugging visibility and, ultimately, the ease of development for the end user. This paper examines the innovative aspects of the development of the SLAAC FPGA platforms and programming environment. Several novel techniques are presented, including circuit designs for transparent clock stepping and host access to on-board memories; device driver strategies and a "register compiler" to ease the design and testing of the hardware-software interface; and a co-simulation approach for advanced debugging of firmware, device drivers and user applications.
debugging fpga device driver co-simulation platform development