Abstract
Verification of a Floating point Unit is a challenging and unique task. Major challenges are the selection of reference model for verification and coverage domains and space of test vectors. The proposed paper considers a RISC-V compliant floating point unit modelled using a high level language, Bluespec System Verilog as Design Under Test (DUT) for verification. A reference model of floating point unit is developed in ‘C’ compliance with RISC-V ISA. To fulfil the requirements of test vector coverage domain and space, we have adopted four different kinds of test vectors schemes for verification. At first, a pseudo random verification approach is used to reduce the initial errors in design. In step-2, a RISC-V test suite was used to verify the proposed design for compliance with RISC-V ISA. In step-3, FPgen/IBM floating point test vectors were used to test for corner case test vectors, for better coverage space. Further, we adopted a unique approach to validate the RISC-V FPU in FPGA by providing the above three kinds of test vectors as inputs through ‘C’ application code on host machine. The outputs are compared with the above ‘C’ based reference model/FPgen output vectors/RISC-V test suite output vectors. In step-4, FPU on FPGA is validated using Whetstone code on host-machine FPU and redirected Whetstone floating point computations to FPU DUT on Xilinx Virtex-6 vc6lx550T FPGA device. Finally, the RISC-V FPU is integrated with dual issue out-of-order execute, in-order commit RISC-V processor and demonstrated a whetstone benchmarking application on FPGA. Major benefits of the proposed floating point verification can be extended to an application based RISC-V compliant floating point unit validation on FPGA without the use of RISC-V processor pipeline.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Goni, O., Todorovich, E., et al.: Generic construction of monitors for floating point unit designs. In: 2012 VIII Southern Conference on Programmable Logic (2012)
Hauser, J.: “Softfloat” technical Report - International Computer Science Institute (2010). http://www.jhauser.us/arithmetic/SoftFloat.html
Cowlishaw, M.: The decNumber C library, 3rd ed. IBM Corp. (2008). https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.15/gtpa2/pkdecsp.html, http://mirrors.josefsipek.net/speleotrove.com/decimal/decnumber.pdf
Brunelli, C., Nurmi, J., et al.: Design and verification of a VHDL model of a floating-point unit for a RISC microprocessor. In: IEEE International Symposium on System-on-Chip (2016)
Chen, C.I., Yu, C.Y., Lu, Y.J., Wu, C.F.: Apply high-level synthesis design and verification methodology on floating-point unit implementation. In: International Symposium on VLSI Design, Automation and Test (VLSI-DAT) (2014)
EEMBC FPMark. https://www.eembc.org/fpmark/
Pachiana, G., Rodriguez, J.A.: Coverage modeling for verification of floating point Arithmetic units. In: Argentine School of Micro-Nanoelectronics, Technology and Applications (2014)
IBM Floating Point Test Generator. https://www.research.ibm.com/haifa/projects/verification/fpgen/
Goñi, O., Todorovich, E., et al.: Components for coverage-driven verification of floating-point units. In: IEEE IX Southern Conference on Programmable Logic (SPL) (2014)
Krautz, U., Paruthi, V., et al.: Automatic verification of floating point units. In: Proceedings of 51st Annual Design Automation, DAC 2014 (2014)
Guralnik, E., Birnbaum, A.J., Koyfman, A., et al.: Implementation specific verification of divide and square root instructions. In: 19th IEEE International Symposium on Computer Arithmetic (2009)
Duale, A.Y., Decker, M.H., et al.: Decimal floating-point in z9: an implementation and testing perspective. http://research.ibm.com/haifa/projects/verification/fpgen/papers/duale.pdf
Jacobi, C., et al.: Automatic formal verification of fused-multiply-add FPUs. https://www.research.ibm.com/haifa/projects/verification/SixthSense/papers/flavor_date_05.pdf
Aharoni, M., et al.: FPgen – a test generation framework for datapath floating-point verification. In: Eighth IEEE International High-Level Design Validation and Test Workshop (2003)
Guralnik, E., et al.: Simulation-Based Verification of Floating-Point Division (2011). https://www.research.ibm.com/haifa/projects/verification/fpgen/papers/Simulation_Based_Verification_of_Floating_Point_Division.pdf
Seidel, P.-M.: Formal verification of an iterative low-power x86floating-pointmultiplier with redundant feedback. https://arxiv.org/pdf/1110.4675.pdf
Kiran Kumar, M.A., et al.: Symbolic trajectory evaluation: the primary validation vehicle for next generation intel® processor graphics FPU. http://www.cs.utexas.edu/~hunt/fmcad/FMCAD12/025.pdf
Ouchani, S., et al.: A formal verification framework for bluespec system verilog in specification & design languages (FDL) (2013)
OMG: OMG Systems Modelling Language (OMG SysML) Specification, Object Management Group. http://www.omgsysml.org/
Bluespec inc. http://www.bluespec.com
Singh, G., et al.: Model-checking based verification for hardware designs specified using bluespec system verilog. In: IEEE 8th International Workshop on Test and Verification (2007)
Beyer, S.: The application of formal technology on fixed-point arithmetic systemC designs. In: Design and Verification Conference and Exhibition. One spin soluution (2015)
Ram, R.: Formal verification of floating point hardware with assertion based VIP. In: Design and Verification Conference and Exhibition. One spin solutions (2018)
Travis, W., Pouarz, V., et al.: Efficient and exhaustive floating point verification using sequential equivalence checking. In: DVCon (2017)
Cimatti, A., et al.: Software model checking SystemC. IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst. 32, 774–787 (2013)
Cimatti, A., Griggio, A., Micheli, A., Narasamdya, I., Roveri, M.: Kratos – a software model checker for SystemC. In: Gopalakrishnan, G., Qadeer, S. (eds.) CAV 2011. LNCS, vol. 6806, pp. 310–316. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-22110-1_24
Herber, P., et al.: Formal verification of SystemC designs using the BLAST software model checker. In: International Workshop on Model-Based Architecting and Construction of Embedded Systems (ACES-MB) (2013)
Ngo, V.C., et al.: Statistical model checking for SystemC models. In: IEEE 17th International Symposium on High Assurance Systems Engineering (HASE) (2016)
Oscar, O.: On the Formal Semantics of Bluespec System Verilog, Thesis (2013)
Hauksson, H.: Towards model checking BSV in Uppaal, MscThesis (2013)
Singh, G., et al.: Model checking bluespec specified hardware designs. In: Eighth International Workshop on Microprocessor Test and Verification (2017)
Richards, D., et al.: A prototype embedding of bluespec system verilog in the PVS theorem prover. In: Second NASA Formal Methods Symposium, NFM 2010 (2010)
Richards, D., et al.: A prototype embedding of bluespec systemverilog in the SAL model checker. http://www.cs.ox.ac.uk/dcc2010/slides/richards.pdf
Singh, G., Shukla, Sandeep K.: Verifying compiler based refinement of bluespecTM specifications using the SPIN model checker. In: Havelund, K., Majumdar, R., Palsberg, J. (eds.) SPIN 2008. LNCS, vol. 5156, pp. 250–269. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-85114-1_18
Raveendran, A., Patil, V.B., et al.: Out of order floating point co-processor for RISC V ISA. In: IEEE VLSISATA (2015)
Waterman, A., Lee, Y., Patterson, D.A., Asanovi, K.: The RISC-V instruction set manual. Base User-Level ISA. V2.2, vol. I (2017)
Clarke, E., German, S.: Verifying the SRT division algorithm using theorem proving techniques. Formal Methods Syst. Des. 14, 7–44 (1999)
Fournier, L., Arbetman, Y., et al.: Functional verification methodology for microprocessors using the genesys test program generator. Application to the x86 microprocessors family. In: DATE99 (1999)
Harrison, J.: Formal verification of IA-64 division algorithms. In: Aagaard, M., Harrison, J. (eds.) TPHOLs 2000. LNCS, vol. 1869, pp. 233–251. Springer, Heidelberg (2000). https://doi.org/10.1007/3-540-44659-1_15
Jerinic, V., Langer, J., Heinkel, U., Muller, D.: New methods and coverage metrics for functional verification. In: IEEE Design, Automation and Test in Europe (2006)
IEEE standards Board and ANSI. IEEE Standards for Binary Floating-point Arithmetic, IEEE Std., 754-2008 (2008)
Whetstone. https://www.netlib.org/benchmark/whetstone.c
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Singapore Pte Ltd.
About this paper
Cite this paper
Raveendran, A., Kumar, V., Vivian, D., Selvakumar, D. (2019). Functional Simulation Verification of RISC-V Instruction Set Based High Level Language Modeled FPU. In: Sengupta, A., Dasgupta, S., Singh, V., Sharma, R., Kumar Vishvakarma, S. (eds) VLSI Design and Test. VDAT 2019. Communications in Computer and Information Science, vol 1066. Springer, Singapore. https://doi.org/10.1007/978-981-32-9767-8_41
Download citation
DOI: https://doi.org/10.1007/978-981-32-9767-8_41
Published:
Publisher Name: Springer, Singapore
Print ISBN: 978-981-32-9766-1
Online ISBN: 978-981-32-9767-8
eBook Packages: Computer ScienceComputer Science (R0)