Simulation-Based Verification of Floating-Point Division

Floating-point division is known to exhibit an exceptionally wide array of corner cases, making its verification a difficult challenge. Despite the remarkable advances in formal methods, the intricacies of this operation and its implementation often render these inapplicable. Simulation-based methods remain the primary means for verification of division. FPgen is a test generation framework targeted at the floating point datapath. It has been successfully used in the simulation-based verification of a variety of hardware designs. FPgen comprises a comprehensive test plan and a powerful test generator. A proper response to the difficulties posed by division constitutes a major part of FPgen's capabilities. We present an overview of the relevant verification tasks supplied with FPgen and the underlying algorithms used to target them.

[1]  Edmund M. Clarke,et al.  Verifying the SRT Division Algorithm Using Theorem Proving Techniques , 1996, Formal Methods Syst. Des..

[2]  Avi Ziv,et al.  Solving range constraints for binary floating-point instructions , 2003, Proceedings 2003 16th IEEE Symposium on Computer Arithmetic.

[3]  Yehuda Naveh,et al.  Constraint-Based Random Stimuli Generation for Hardware Verification , 2006, AI Mag..

[4]  Mukarram Ahmad,et al.  Continued fractions , 2019, Quadratic Number Theory.

[5]  John Harrison Isolating critical cases for reciprocals using integer factorization , 2003, Proceedings 2003 16th IEEE Symposium on Computer Arithmetic.

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

[7]  Sigal Asaf,et al.  FPgen - a test generation framework for datapath floating-point verification , 2003, Eighth IEEE International High-Level Design Validation and Test Workshop.

[8]  John Harrison,et al.  Formal Verification of IA-64 Division Algorithms , 2000, TPHOLs.

[9]  David W. Matula,et al.  On infinitely precise rounding for division, square root, reciprocal and square root reciprocal , 1999, Proceedings 14th IEEE Symposium on Computer Arithmetic (Cat. No.99CB36336).

[10]  Eric M. Schwarz,et al.  P6 Binary Floating-Point Unit , 2007, 18th IEEE Symposium on Computer Arithmetic (ARITH '07).

[11]  Merav Aharoni,et al.  Solving Constraints on the Intermediate Result of Decimal Floating-Point Operations , 2007, 18th IEEE Symposium on Computer Arithmetic (ARITH '07).

[12]  Ramesh C. Agarwal,et al.  Series approximation methods for divide and square root in the Power3/sup TM/ processor , 1999, Proceedings 14th IEEE Symposium on Computer Arithmetic (Cat. No.99CB36336).

[13]  Sigal Asaf,et al.  Solving constraints on the invisible bits of the intermediate result for floating-point verification , 2005, 17th IEEE Symposium on Computer Arithmetic (ARITH'05).

[14]  D.W. Matula,et al.  Generation and analysis of hard to round cases for binary floating point division , 2001, Proceedings 15th IEEE Symposium on Computer Arithmetic. ARITH-15 2001.

[15]  Anatoly Koyfman,et al.  Implementation Specific Verification of Divide and Square Root Instructions , 2009, 2009 19th IEEE Symposium on Computer Arithmetic.