Automating formal verification of customized soft-processors

Soft-processors, instruction processors implemented in FPGA technology, are often customizable to support domain-specific optimization. However the correctness of customized soft-processors, executing the associated machine code, is often not obvious. This paper proposes a novel approach for verifying the implementation of an application program for a customized soft-processor, based on the ACL2 theorem prover. The correctness proof involves verifying a machine code program executing on the target hardware device against a high-level specification of the application program. We illustrate the proposed approach with several case studies, showing how processors with different custom instructions and with different number of pipelined stages can be automatically produced and verified; such processors have a range of trade-offs in performance, size, power and energy consumption to meet different requirements.

[1]  Jonathan Rose,et al.  VESPA: portable, scalable, and flexible FPGA-based vector processors , 2008, CASES '08.

[2]  J. Strother Moore,et al.  Symbolic Simulation: An ACL2 Approach , 1998, FMCAD.

[3]  N.I. Rafla,et al.  Reducing power consumption in FPGAs by pipelining , 2008, 2008 51st Midwest Symposium on Circuits and Systems.

[4]  Sandip Ray,et al.  A Mechanical Analysis of Program Verification Strategies , 2008, Journal of Automated Reasoning.

[5]  Guy Lemieux,et al.  Vector Processing as a Soft Processor Accelerator , 2009, TRETS.

[6]  Wayne Luk,et al.  Application-specific customisation of multi-threaded soft processors , 2006 .

[7]  Thambipillai Srikanthan,et al.  Architecture-Aware Technique for Mapping Area-Time Efficient Custom Instructions onto FPGAs , 2011, IEEE Transactions on Computers.

[8]  J. S. Moore,et al.  A Grand Challenge Proposal for Formal Methods: A Verified Stack , 2002, 10th Anniversary Colloquium of UNU/IIST.

[9]  Weng-Fai Wong,et al.  Co-synthesis of FPGA-based application-specific floating point simd accelerators , 2011, FPGA '11.

[10]  Magnus O. Myreen,et al.  Transforming Programs into Recursive Functions , 2009, Electron. Notes Theor. Comput. Sci..

[11]  Mohammed A. S. Khalid,et al.  Soft-Core Processors for Embedded Systems , 2006, 2006 International Conference on Microelectronics.

[12]  Magnus O. Myreen,et al.  A Trustworthy Monadic Formalization of the ARMv7 Instruction Set Architecture , 2010, ITP.

[13]  Michael Norrish,et al.  seL4: formal verification of an OS kernel , 2009, SOSP '09.

[14]  Satnam Singh,et al.  Formal verification of reconfigurable cores , 1999, Seventh Annual IEEE Symposium on Field-Programmable Custom Computing Machines (Cat. No.PR00375).

[15]  Sol Swords,et al.  Centaur Technology Media Unit Verification , 2009, CAV.

[16]  Rainer Leupers,et al.  LISA: A Uniform ADL for Embedded Processor Modeling, Implementation, and Software Toolsuite Generation , 2008 .