论文标题
使用基于路径的符号执行的硬件/软件共同验证
Hardware/Software Co-verification Using Path-based Symbolic Execution
论文作者
论文摘要
正式硬件/软件共同验证的常规工具使用有限的模型检查技术来构建单个整体命题公式。以这种方式产生的公式非常复杂,并且包含大量无关的逻辑,因此即使是最先进的Satis能力(SAT)求解器也很难解决。在典型的硬件/软件共同设计中,固件仅行使硬件状态空间的一小部分,我们可以使用此观察值来生成更简单,更简洁的公式。在本文中,我们提出了一种针对硬件/软件共同设计的新颖验证算法,该算法通过基于路径的符号模拟,以及自定义的路径 - parter-parter-parter-prother,属性指导的切片和增量的SAT解决方案来识别与可行的符号模拟有关可行的执行路径的分区和硬件逻辑。我们已经在工具覆盖中实现了这种方法。我们在实验上将基于BMC的共同验证工具HW-CBMC进行了实验比较,并观察到在HW-CBMC上的平均加速度为5倍,用于证明安全性能,并在开放源的通用式异步接收机发射器和大型SOC设计中检测关键的共同设计错误。
Conventional tools for formal hardware/software co-verification use bounded model checking techniques to construct a single monolithic propositional formula. Formulas generated in this way are extremely complex and contain a great deal of irrelevant logic, hence are difficult to solve even by the state-of-the-art Satis ability (SAT) solvers. In a typical hardware/software co-design the firmware only exercises a fraction of the hardware state-space, and we can use this observation to generate simpler and more concise formulas. In this paper, we present a novel verification algorithm for hardware/software co-designs that identify partitions of the firmware and the hardware logic pertaining to the feasible execution paths by means of path-based symbolic simulation with custom path-pruning, property-guided slicing and incremental SAT solving. We have implemented this approach in our tool COVERIF. We have experimentally compared COVERIF with HW-CBMC, a monolithic BMC based co-verification tool, and observed an average speed-up of 5X over HW-CBMC for proving safety properties as well as detecting critical co-design bugs in an open-source Universal Asynchronous Receiver Transmitter design and a large SoC design.