Formal Verification and Debugging of Array Dividers with Auto-correction Mechanism

Arithmetic circuits require a verification process to prove that the gate level circuit is functionally equivalent to a high level specification or not. Furthermore, if two models are not equivalent, we need to automatically localize bugs and correct them with minimum user intervention. This paper presents a formal technique to verify and debug arithmetic systems including dividers. The proposed technique is based on a reverse-engineering mechanism of obtaining a high level model of the gate level implementation and also presenting the specification at a lower level of abstraction which makes the equivalence checking between two models possible. During this process, if two high level models are not equivalent, possible bugs can be localized and then corrected automatically if possible. We have applied our technique to a wide range of arithmetic circuits including dividers, multipliers and their combinations. Preliminary experimental results show robustness of the proposed technique in comparison with other contemporary methods in terms of the run time. In average, two orders of magnitude average speedup is obtained.

[1]  Donal O'Shea,et al.  Ideals, varieties, and algorithms - an introduction to computational algebraic geometry and commutative algebra (2. ed.) , 1997, Undergraduate texts in mathematics.

[2]  E BryantRandal Graph-Based Algorithms for Boolean Function Manipulation , 1986 .

[3]  Markus Wedler,et al.  A Normalization Method for Arithmetic Data-Path Verification , 2007, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[4]  David A. Cox,et al.  Ideals, Varieties, and Algorithms , 1997 .

[5]  Daniel Brand,et al.  Incremental synthesis , 1994, ICCAD '94.

[6]  Mi Lu Arithmetic and logic in computer systems , 2004 .

[7]  Deepak Kapur,et al.  Using an induction prover for verifying arithmetic circuits , 2000, International Journal on Software Tools for Technology Transfer.

[8]  Shi-Yu Huang,et al.  Formal Equivalence Checking and Design Debugging , 1998 .

[9]  Masahiro Fujita,et al.  Arithmetic Circuits Verification without Looking for Internal Equivalences , 2008, 2008 6th ACM/IEEE International Conference on Formal Methods and Models for Co-Design.

[10]  David Joyner,et al.  Applied Abstract Algebra , 2004 .

[11]  Randal E. Bryant,et al.  Verification of Arithmetic Circuits with Binary Moment Diagrams , 1995, 32nd Design Automation Conference.

[12]  Takafumi Aoki,et al.  Arithmetic Circuit Verification Based on Symbolic Computer Algebra , 2008, IEICE Trans. Fundam. Electron. Commun. Comput. Sci..

[13]  Mi Lu Arithmetic and Logic in Computer Systems: Lu/Arithmetic and Logic in Computer Systems , 2005 .

[14]  Daniel Page Arithmetic and Logic , 2009 .

[15]  Randal E. Bryant,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 1986, IEEE Transactions on Computers.

[16]  Jacob A. Abraham,et al.  Automatic Verification of Arithmetic Circuits in RTL Using Stepwise Refinement of Term Rewriting Systems , 2007, IEEE Transactions on Computers.

[17]  Randal E. Bryant,et al.  ACV: an arithmetic circuit verifier , 1996, Proceedings of International Conference on Computer Aided Design.

[18]  Masahiro Fujita,et al.  A Formal Approach for Debugging Arithmetic Circuits , 2009, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[19]  Masao Kubo,et al.  Debug methodology for arithmetic circuits on FPGAs , 2002, 2002 IEEE International Conference on Field-Programmable Technology, 2002. (FPT). Proceedings..

[20]  Carl-Johan H. Seger,et al.  Formal verification of iterative algorithms in microprocessors , 2000, Proceedings 37th Design Automation Conference.