Validating High-Level Synthesis

The growing design-productivity gap has made designers shift toward using high-level languages like C, C++ and Java to do system-level design. High-Level Synthesis (HLS) is the process of generating Register Transfer Level (RTL) design from these initial high-level programs. Unfortunately, this translation process itself can be buggy, which can create a mismatch between what a designer intends and what is actually implemented in the circuit. In this paper, we present an approach to validate the result of HLS against the initial high-level program using insights from translation validation, automated theorem proving and relational approaches to reasoning about programs. We have implemented our validating technique and have applied it to a highly parallelizing HLS framework called SPARK . We present the details of our algorithm and experimental results.

[1]  Nikil D. Dutt,et al.  SPARK: a high-level synthesis framework for applying parallelizing compiler transformations , 2003, 16th International Conference on VLSI Design, 2003. Proceedings..

[2]  Amir Pnueli,et al.  VOC: A Methodology for the Translation Validation of OptimizingCompilers , 2003, J. Univers. Comput. Sci..

[3]  Robert A. Walker,et al.  A Survey of high-level synthesis systems , 1991 .

[4]  Ranga Vemuri,et al.  Theorem Proving Guided Development of Formal Assertions in a Resource-Constrained Scheduler for High-Level Synthesis , 1998, Proceedings International Conference on Computer Design. VLSI in Computers and Processors (Cat. No.98CB36273).

[5]  Nazanin Mansouri,et al.  Automated formal verification of scheduling process using finite state machines with datapath (FSMD) , 2004, International Symposium on Signals, Circuits and Systems. Proceedings, SCS 2003. (Cat. No.03EX720).

[6]  Sorin Lerner,et al.  Automated refinement checking of concurrent systems , 2007, 2007 IEEE/ACM International Conference on Computer-Aided Design.

[7]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[8]  Chittaranjan A. Mandal,et al.  A formal verification method of scheduling in high-level synthesis , 2006, 7th International Symposium on Quality Electronic Design (ISQED'06).

[9]  Martin Rinard,et al.  Credible Compilation with Pointers , 1999 .

[10]  Thorsten Grotker,et al.  System Design with SystemC , 2002 .

[11]  George C. Necula,et al.  Translation validation for an optimizing compiler , 2000, PLDI '00.

[12]  Eric Van Wyk,et al.  Proving correctness of compiler optimizations by temporal logic , 2002, POPL '02.

[13]  Kathi Fisler,et al.  Bisimulation and Model Checking , 1999, CHARME.

[14]  Anand Raghunathan,et al.  Verification of RTL generated from scheduled behavior in a high-level synthesis flow , 1998, ICCAD.

[15]  Amir Pnueli,et al.  Translation Validation , 1998, TACAS.

[16]  Monica S. Lam,et al.  RETROSPECTIVE : Software Pipelining : An Effective Scheduling Technique for VLIW Machines , 1998 .

[17]  Orna Grumberg,et al.  Simulation Based Minimization , 2000, CADE.

[18]  H. Eveking,et al.  Automatic verification of scheduling results in high-level synthesis , 1999, Design, Automation and Test in Europe Conference and Exhibition, 1999. Proceedings (Cat. No. PR00078).

[19]  David A. McAllester,et al.  Automated Deduction - CADE-17 , 2000, Lecture Notes in Computer Science.

[20]  Nick Benton,et al.  Simple relational correctness proofs for static analyses and program transformations , 2004, POPL.

[21]  Benjamin Goldberg,et al.  Into the Loops: Practical Issues in Translation Validation for Optimizing Compilers , 2005, COCV@ETAPS.

[22]  Mark B. Josephs A state-based approach to communicating processes , 2005, Distributed Computing.

[23]  Youn-Long Lin,et al.  Recent developments in high-level synthesis , 1997, TODE.

[24]  K. Mani Chandy,et al.  Parallel program design - a foundation , 1988 .

[25]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.