一句话:指出现有 Verilog 标准与可综合子集语义的不一致,修复并给出首个可执行真实硬件设计的仿真语义形式化。
尽管已有多个 Verilog 形式化项目,Verilog 标准定义的仿真语义始终缺乏可用的数学形式化,导致既有工作无法执行或推理真实硬件设计。本文指出标准与 Verilog 实践及自身不一致,并定位可综合 Verilog 子集语义定义中的一系列问题;作者证明目前最完整的形式化继承了这些问题,并在可执行实现中修复它们,使其能执行真实硬件设计。修复后的形式化成为首个与真实硬件设计兼容的 Verilog 仿真语义形式化;论文还提供可视化形式化以面向非数学读者。
Despite numerous previous formalisation projects targeting Verilog, the semantics of Verilog defined by the Verilog standard – Verilog’s simulation semantics – has thus far eluded definitive mathematical formalisation. Previous projects on formalising the semantics have made good progress but no previous project provides a formalisation that can be used to execute or formally reason about real-world hardware designs. In this paper, we show that the reason for this is that the Verilog standard is inconsistent both with Verilog practice and itself. We pinpoint a series of problems in the Verilog standard that we have identified in how the standard defines the semantics of the subset of Verilog used to describe hardware designs, that is, the synthesisable subset of Verilog. We show how the most complete Verilog formalisation to date inherits these problems and how, after we repair these problems in an executable implementation of the formalisation, the repaired implementation can be used to execute real-world hardware designs. The existing formalisation together with the repairs hence constitute the first formalisation of Verilog’s simulation semantics compatible with real-world hardware designs. Additionally, to make the results of this paper accessible to a wider (nonmathematical) audience, we provide a visual formalisation of Verilog’s simulation semantics.