Many RTL designs are developed from C++ algorithms that have been extensively tested using a C++ testbench. The C++ testbench often represents a huge engineering effort to provide as much coverage of the algorithm as possible. Once the algorithm has been synthesized to RTL, however, a new testbench is typically written instead of using the original C++ testbench. This creates a discontinuity between the verification performed on the sequential untimed C++ algorithm and the resulting RTL. This paper describes a methodology for performing Functional Verification between the original C++ and the RTL using a C++ testbench in a SystemC framework. Such a framework enables detecting errors in the RTL due to assumptions made during the synthesis of the C++ and avoids errors introduced in re-writing the testbench at the RTL level. Topics such as datatype conversion and transaction synchronization will be covered.

Note: By clicking on the above link, this paper will be emailed to your TechOnline log-in address by Mentor Graphics.