Finding and Understanding Bugs in FPGA Synthesis Tools

被引:12
|
作者
Herklotz, Yann [1 ]
Wickerson, John [1 ]
机构
[1] Imperial Coll London, London, England
基金
英国工程与自然科学研究理事会;
关键词
fuzzing; logic synthesis; Verilog; test case reduction;
D O I
10.1145/3373087.3375310
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
All software ultimately relies on hardware functioning correctly. Hardware correctness is becoming increasingly important due to the growing use of custom accelerators using FPGAs to speed up applications on servers. Furthermore, the increasing complexity of hardware also leads to ever more reliance on automation, meaning that the correctness of synthesis tools is vital for the reliability of the hardware. This paper aims to improve the quality of FPGA synthesis tools by introducing a method to test them automatically using randomly generated, correct Verilog, and checking that the synthesised netlist is always equivalent to the original design. The main contributions of this work are twofold: firstly a method for generating random behavioural Verilog free of undefined values, and secondly a Verilog test case reducer used to locate the cause of the bug that was found. These are implemented in a tool called Verismith. This paper also provides a qualitative and quantitative analysis of the bugs found in Yosys, Vivado, XST and Quartus Prime. Every synthesis tool except Quartus Prime was found to introduce discrepancies between the netlist and the design. In addition to that, Vivado and a development version of Yosys were found to crash when given valid input. Using Verismith, eleven bugs were reported to tool vendors, of which six have already been fixed.
引用
收藏
页码:277 / 287
页数:11
相关论文
共 50 条
  • [1] Finding and Understanding Bugs in C Compilers
    Yang, Xuejun
    Chen, Yang
    Eide, Eric
    Regehr, John
    PLDI 11: PROCEEDINGS OF THE 2011 ACM CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION, 2011, : 283 - 294
  • [2] Finding and Understanding Bugs in C Compilers
    Yang, Xuejun
    Chen, Yang
    Eide, Eric
    Regehr, John
    ACM SIGPLAN NOTICES, 2011, 46 (06) : 283 - 294
  • [3] Understanding and Finding Java']Java Decompiler Bugs
    Lu, Yifei
    Hou, Weidong
    Pan, Minxue
    Li, Xuandong
    Su, Zhendong
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2024, 8 (OOPSLA):
  • [4] Finding and Understanding Incompleteness Bugs in SMT Solvers
    Bringolf, Mauro
    Winterer, Dominik
    Su, Zhendong
    ACM International Conference Proceeding Series, 2022,
  • [5] Finding and Understanding Incompleteness Bugs in SMT Solvers
    Bringolf, Mauro
    Winterer, Dominik
    Su, Zhendong
    PROCEEDINGS OF THE 37TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING, ASE 2022, 2022,
  • [6] Finding and Understanding Bugs in Software Model Checkers
    Zhang, Chengyu
    Su, Ting
    Yan, Yichen
    Zhang, Fuyuan
    Pu, Geguang
    Su, Zhendong
    ESEC/FSE'2019: PROCEEDINGS OF THE 2019 27TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING, 2019, : 763 - 773
  • [7] Comparison of static analysis tools for finding concurrency bugs
    Manzoor, Numan
    Munir, Hussan
    Moayyed, Misagh
    Proceedings - 23rd IEEE International Symposium on Software Reliability Engineering Workshops, ISSREW 2012, 2012, : 129 - 133
  • [8] Comparison of static analysis tools for finding concurrency bugs
    Manzoor, Numan
    Munir, Hussan
    Moayyed, Misagh
    23RD IEEE INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING WORKSHOPS (ISSRE 2012), 2012, : 129 - 133
  • [9] FINDING THE BUGS
    VERITY, JW
    DATAMATION, 1982, 28 (12): : 87 - 87
  • [10] Finding bugs is easy
    Hovemeyer, D
    Pugh, W
    ACM SIGPLAN NOTICES, 2004, 39 (12) : 92 - 106