Communication Primitives Driven Hardware Design and Test Methodology Applied on Complex Video Applications Adrian Chirila-Rus, Kristof Denolf, Bart Vanhoof Interuniversity Microelectronic Center (IMEC) Kapeldreef 75, 3001 Leuven, BELGIUM firstname.lastname@imec.be Paul Schumacher and Kees Vissers Xilinx Research Labs 2100 Logic Drive, San Jose, CA 95124 firstname.lastname@xilinx.com Abstract Dedicated hardware realizations of new multimedia applications support high throughput in a cost-efficient way. Their design requires a correct translation of the high-level system definition into the final implementation at the RTL level. We propose a general systematic development and test methodology and apply it in the context of complex video codecs. The approach is based on a fixed set of communication primitives and uses a high- level functional C model as golden specification of the complete system throughout the design. A clear separation between I/O and computing allows the isolation of a single functional component. This module is developed individually and its functional correctness can be verified separately by extracting its input stimuli and expected output from the golden specification. The combination of RTL simulation and emulation on a prototyping platform enables exhaustive testing of the separate modules to assure functional correctness. In this way, the debug cycle during system integration is minimized. 1 Introduction New generations of multimedia application become ever more complex, seeking to improve the user experience. Designing dedicated hardware supporting the high- throughput in a cost-efficient way requires translating a high-level specification into the final implementation. Still today, this development means overcoming the gap from system definition and modeling to the final realization. We propose a systematic and solid design and test methodology supporting the designer to a correct system description at the RTL level and apply it to the development of a MPEG- 4 Simple Profile video codec, implemented as dedicated pipeline on a FPGA [4]. Two key aspects form the basis for this approach: (i) a limited and fixed set of communication primitives to enable the separation of communication and computation and (ii) a central role of a high-level (e.g. ANSI C) description of the multimedia application. This separation property allows the isolated development and testing of a single functional module by cutting it out of the system at the borders of its I/O (i.e. the functional block and its communication primitives). The functional C model generates the necessary test stimuli. Testing is successful when the generated test output matches the expected output. This approach permits extensive testing of the individual module before system integration. As the number of stimuli required to completely test a functional module can be significant, simulation is combined with testing on a prototyping or emulation platform. While the high signal visibility of simulation normally produces long simulation times, the prototyping platform supports much faster and more extensive testing with the drawback of less signal observability. When an error is encountered on the test platform, the designer can isolate its position and return to a restricted simulation with higher observability. Previous system design frameworks offer simulation and FPGA emulation [1], with improved signal visibility in [2], at different abstraction levels (e.g. transaction level, cycle true and RTL simulation) that trade accuracy for simulation time. Still, the RTL simulation speed is insufficient to support exhaustive testing and the behavior of the final system is not repeated at higher abstraction levels. Moreover, there is no methodological approach for RTL development and debug. Additionally, the limited set of communication primitives used in our approach is easily extendible to multi-core SoCs [3] designs. The next section summarizes the design approach and characterizes the communication primitives. Section 3 focuses on the test strategy and applies it to the design of an MPEG-4 video codec. Conclusions are given in Section 4. 2 Systematic Design Approach The next subsection summarizes systematic steps to translate a high-level reference implementation (typically C code) into a functionally correct RTL description of the system (a more detailed description is given in [4]). They