一句话:提出受 Bluespec 启发的形式语言 Fjfj,通过语言限制将并发硬件模块验证顺序化,并在 Coq 中证明 refinement 定理。
Bluespec 等基于规则的硬件语言将模块类比为对象,但并发方法调用迫使验证考虑任意同时调用的集合,导致证明分支随模块 API 规模指数增长。本文提出 Fjfj:一种受 Bluespec 启发的新形式语言,通过一组审慎的语言限制,在不改变硬件并发本质的前提下支持对模块进行顺序化刻画,从而避免指数爆炸。作者在 Coq 中实现 Fjfj,并证明核心框架原则——精化(refinement)定理。最后通过流水线处理器、参数化 crossbar 和网络交换机三个实例的实现与验证,展示 Fjfj 的表达能力。
Compared to familiar hardware-description languages like Verilog, rule-based languages like Bluespec offer opportunities to import modularity features from software programming. While Verilog modules are about connecting wires between submodules, Bluespec modules resemble objects in object-oriented programming, where interactions with a module occur only through calls to its methods. However, while software objects can typically be characterized one method at a time, the concurrent nature of hardware makes it essential to consider the repercussions of invoking multiple methods simultaneously. Prior formalizations of rule-based languages conceptualized modules by describing their semantics considering arbitrary sets of simultaneous method calls. This internalized concurrency significantly complicates correctness proofs. Rather than analyzing methods one-at-a-time, as is done when verifying software object methods, validating the correctness of rule-based modules necessitated simultaneous consideration of arbitrary subsets of method calls. The result was a number of proof cases that grew exponentially in the size of the module’s API. In this work, we side-step the exponential blowup through a set of judicious language restrictions. We introduce a new Bluespec-inspired formal language, Fjfj, that supports sequential characterization of modules, while preserving the concurrent hardware nature of the language. We evaluated Fjfj by implementing it in Coq, proving the key framework principle: the refinement theorem. We demonstrated Fjfj’s expressivity via implementation and verification of three examples: a pipelined processor, a parameterized crossbar, and a network switch.
@article{paperbot3105,
title = {Making Concurrent Hardware Verification Sequential},
author = {Thomas Bourgeat and Jiazheng Liu and Adam Chlipala and Arvind},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {PLDI},
year = {2025},
doi = {10.1145/3729331}
}