Finding and Understanding Bugs in FPGA Synthesis Tools

被引:12
|
作者
Herklotz, Yann [1 ]
Wickerson, John [1 ]
机构
[1] Imperial Coll London, London, England
来源
2020 ACM/SIGDA INTERNATIONAL SYMPOSIUM ON FIELD-PROGRAMMABLE GATE ARRAYS (FPGA '20) | 2020年
基金
英国工程与自然科学研究理事会;
关键词
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 条
  • [31] DebugNS: Novelty Search for Finding Bugs in Simulators
    Griffin, David
    Stepney, Susan
    Vidamour, Ian
    2023 IEEE/ACM INTERNATIONAL WORKSHOP ON GENETIC IMPROVEMENT, GI, 2023, : 17 - 18
  • [32] Finding Bugs in Cryptographic Hash Function Implementations
    Mouha, Nicky
    Raunak, Mohammad S.
    Kuhn, D. Richard
    Kacker, Raghu
    IEEE TRANSACTIONS ON RELIABILITY, 2018, 67 (03) : 870 - 884
  • [33] Finding and Preventing Bugs in Java']JavaScript Bindings
    Brown, Fraser
    Narayan, Shravan
    Wahby, Riad S.
    Engler, Dawson
    Jhala, Ranjit
    Stefan, Deian
    2017 IEEE SYMPOSIUM ON SECURITY AND PRIVACY (SP), 2017, : 559 - 578
  • [34] Finding Concurrency Bugs Under Imprecise Harnesses
    Lal, Akash
    ELECTRONIC PROCEEDINGS IN THEORETICAL COMPUTER SCIENCE, 2014, (155):
  • [35] Finding Bugs in Exceptional Situations of JNI Programs
    Li, Siliang
    Tan, Gang
    CCS'09: PROCEEDINGS OF THE 16TH ACM CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY, 2009, : 442 - 452
  • [36] FireBugs: Finding and Repairing Bugs with Security Patterns
    Singleton, Larry
    Zhao, Rui
    Song, Myoungkyu
    Siy, Harvey
    2019 IEEE/ACM 6TH INTERNATIONAL CONFERENCE ON MOBILE SOFTWARE ENGINEERING AND SYSTEMS (MOBILESOFT 2019), 2019, : 30 - 34
  • [37] The Tip of the Iceberg: On the Merits of Finding Security Bugs
    Alexopoulos, Nikolaos
    Habib, Sheikh Mahbub
    Schulz, Steffen
    Muehlhaeuser, Max
    ACM TRANSACTIONS ON PRIVACY AND SECURITY, 2021, 24 (01)
  • [38] Machine Learning for Finding Bugs: An Initial Report
    Chappell, Timothy
    Cifuentes, Cristina
    Krishnan, Padmanabhan
    Geva, Shlomo
    2017 IEEE INTERNATIONAL WORKSHOP ON MACHINE LEARNING TECHNIQUES FOR SOFTWARE QUALITY EVALUATION (MALTESQUE), 2017, : 21 - 26
  • [39] Bugs in the Wild: Examining the Effectiveness of Static Analyzers at Finding Real-World Bugs
    Tomassi, David A.
    ESEC/FSE'18: PROCEEDINGS OF THE 2018 26TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING, 2018, : 980 - 982
  • [40] FPGA development tools
    不详
    IEEE DESIGN & TEST OF COMPUTERS, 1998, 15 (01): : 5 - 5