Formal Verification of the VAMP Microprocessor Project Status

Microprocessors are in use in many safety-critical environments, such as cars or planes. We therefore consider the correctness of such components as a matter of vital importance. Testing microprocessors is limited by the huge state space of modern microprocessors. We therefore think formal verification is the sole way to obtain a correctness guarantee. At Saarland University, we are currently working on a project aiming to formally verify the correctness of a complete microprocessor called VAMP. The VAMP (Verified Architecture Microprocessor) is a variant of the DLX processor [11]. It features a Tomasulo-scheduled 5-stage pipeline, precise interrupts, delayed branch, virtual memory management, cache memory, and a fully IEEE compliant dual-precision floating point unit that handles denormals and exceptions entirely in hardware. The specification and verification is performed on the gate level using the PVS theorem proving system [25]. Our group has developed a tool which automatically translates hardware specifications from the PVS language to Verilog HDL. This enables us to translate the VAMP to Verilog and synthesize it on a Xilinx FPGA [7]. This paper provides an overview of the VAMP project. We sketch the proof techniques used in the verification of the different VAMP components.

[1]  W. Paul,et al.  Computer Architecture , 2000, Springer Berlin Heidelberg.

[2]  Randal E. Bryant,et al.  Verification of Floating-Point Adders , 1998, CAV.

[3]  J. Strother Moore,et al.  A Mechanically Checked Proof of the AMD5K86TM Floating Point Division Program , 1998, IEEE Trans. Computers.

[4]  Armin Biere,et al.  Combining Symbolic Model Checking with Uninterpreted Functions for Out-of-Order Processor Verification , 1998, FMCAD.

[5]  Xiaowei Shen,et al.  Using term rewriting systems to design and verify processors , 1999, IEEE Micro.

[6]  C. Seger,et al.  Formally Verifying IEEE Compliance of Floating-Point Hardware , 2022 .

[7]  Christian Jacobi Formal Verification of a Theory of IEEE Rounding , 2001 .

[8]  Christian Jacobi Formal Verification of Complex Out-of-Order Pipelines by Combining Model-Checking and Theorem-Proving , 2002, CAV.

[9]  D. Kroening,et al.  Correct Hardware by Synthesis from PVS , 2022 .

[10]  Ganesh Gopalakrishnan,et al.  Systematic verification of pipelined microprocessors , 2000 .

[11]  Carl-Johan H. Seger,et al.  The formal verification of a pipelined double-precision IEEE floating-point multiplier , 1995, ICCAD.

[12]  R. M. Tomasulo,et al.  An efficient algorithm for exploiting multiple arithmetic units , 1995 .

[13]  Wolfgang J. Paul,et al.  On the design of IEEE compliant floating point units , 1997, Proceedings 13th IEEE Sympsoium on Computer Arithmetic.

[14]  S Miner Paul,et al.  Defining the IEEE-854 Floating-Point Standard in PVS , 1995 .

[15]  D. Kroening,et al.  Formal Verification of a Basic Circuits Library , 2001 .

[16]  Thomas A. Henzinger,et al.  You Assume, We Guarantee: Methodology and Case Studies , 1998, CAV.

[17]  Jun Sawada,et al.  Results of the Verification of a Complex Pipelined Machine Model , 1999, CHARME.

[18]  Wolfgang J. Paul,et al.  Computer architecture - complexity and correctness , 2000 .

[19]  Guido D. Salvucci,et al.  Ieee standard for binary floating-point arithmetic , 1985 .

[20]  David M. Russinoff A Mechanically Checked Proof of IEEE Compliance of the Floating Point Multiplication, Division and Square Root Algorithms of the AMD-K7™ Processor , 1998, LMS J. Comput. Math..

[21]  Natarajan Shankar,et al.  PVS: A Prototype Verification System , 1992, CADE.

[22]  Christoph Berg,et al.  Formal Verification of the VAMP Floating Point Unit , 2001, Formal Methods Syst. Des..

[23]  L. McMillanmcmillan Circular Compositional Reasoning about Liveness , 1999 .

[24]  Daniel Kroening,et al.  The Impact of Hardware Scheduling Mechanismus on the Performance and Cost of Processor Designs , 1999, ARCS.

[25]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[26]  John Harrison,et al.  A Machine-Checked Theory of Floating Point Arithmetic , 1999, TPHOLs.

[27]  Daniel Kroening,et al.  Formal verification of pipelined microprocessors , 2001, Ausgezeichnete Informatikdissertationen.

[28]  Christian Jacobi,et al.  Formal verification of a fully IEEE compliant floating point unit , 2002 .