Title :
Automatic Processor Customization for Zero-Overhead Online Software Verification
Author :
Lu, Hong ; Forin, Alessandro
Author_Institution :
Dept. of Comput. Sci., Texas A&M Univ., College Station, TX
Abstract :
The PSL-to-Verilog (P2V) compiler can translate a set of assertions about a block-structured software program into a hardware design to be executed concurrently with the program. The assertions validate the correctness of the software program without altering the program´s temporal behavior in any way, a result never previously achieved by any online model-checking system. Additionally, the techniques and implementations described apply to any general purpose program and the absence of execution overhead renders the system ideal for the verification and debugging of real-time systems. Assertions are expressed in a simple subset of the property specification language (PSL), an IEEE standard originally intended for the behavioral specification of hardware designs. The target execution system is the eMIPS processor, a dynamically self-extensible processor realized with a field-programmable gate array (FPGA). The system can concurrently execute and check multiple programs at a time. Assertions are compiled into eMIPS Extensions, which are loaded by the operating system software into a portion of the FPGA, and discarded once the program terminates. If an assertion is violated, the program receives an exception, otherwise, it executes fully unaware of its verifier. The software program is not modified in any way. It can be compiled separately with full optimizations and executes with or without the corresponding hardware checker. The P2V compiler, implemented in Python, generates code for the implementation of the eMIPS processor running on the Xilinx ML401 development board. It is currently used to verify software properties in areas such as testing, debugging, intrusion detection, and the behavioral verification of concurrent and real-time programs.
Keywords :
IEEE standards; field programmable gate arrays; formal specification; hardware-software codesign; logic design; microprocessor chips; program compilers; specification languages; IEEE standard; P2V compiler; PSL-to-Verilog compiler; Python; Xilinx ML401 development board; automatic processor customization; behavioral specification; behavioral verification; block-structured software program; concurrent programs; dynamically self-extensible processor; eMIPS Extensions; eMIPS processor; execution overhead; field-programmable gate array; general purpose program; hardware design; online model-checking system; operating system software; property specification language; real-time programs; real-time systems; target execution system; zero-overhead online software verification; Field programmable gate arrays; Hardware; Intrusion detection; Operating systems; Program processors; Real time systems; Software debugging; Software systems; Software testing; Specification languages; Assertion-based verification; PSL-to-Verilog (P2V); Verilog; eMIPS; monitor; online; property specification language (PSL); temporal logic;
Journal_Title :
Very Large Scale Integration (VLSI) Systems, IEEE Transactions on
DOI :
10.1109/TVLSI.2008.2002047