paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Kami: a platform for high-level parametric hardware specification and its modular verification

Kami:面向高层参数化硬件规范及其模块化验证的平台
ICFP 1(ICFP)2017匹配度 2/10 · 论文是关于硬件高层规范与模块化验证的 Coq 库,属于定理证明与证明工程,但未涉及 LLM/Agent 改进静态分析或形式化验证,也不涉及浮点或贝叶斯程序分析,与用户核心研究方向(PL 与 AI 结合)匹配度低。引用 128 inbox
Joonwon Choi, Muralidaran Vijayaraghavan, Benjamin Sherman, Adam Chlipala, Arvind
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:Kami 是 Coq 库,支持以 Bluespec 风格高层参数化地规范、实现并模块化验证硬件设计。

编程语言研究界已习惯在证明助手中借助归纳、代数化简和重写来验证函数式程序。本文提出 Kami,一个 Coq 库,将类似的表达力与模块化推理能力引入用 Bluespec 风格表达的硬件设计。研究者可在 Coq 内完整地规范、实现和验证真实设计,并最终自动提取到面向 FPGA 的流水线中。其方法基于标签迁移系统,并通过一个案例研究进行评估:验证一个无限族多核系统,这些系统具有缓存一致的共享内存以及实现 RISC-V 基础整数子集的流水线核心。

问题
如何在证明助手中对参数化硬件设计进行表达力强且模块化的规范、实现与验证,并保持到实际硬件实现的路径。
方法
构建 Coq 库 Kami,采用 Bluespec 风格的高层硬件描述与标签迁移系统语义,支持模块化推理并自动提取到面向 FPGA 的综合流程。
评估
通过案例研究评估:在 Coq 中验证一个无限族多核系统,包含缓存一致共享内存与实现 RISC-V 基础整数子集的流水线核心。
原文摘要(Abstract)

It has become fairly standard in the programming-languages research world to verify functional programs in proof assistants using induction, algebraic simplification, and rewriting. In this paper, we introduce Kami, a Coq library that enables similar expressive and modular reasoning for hardware designs expressed in the style of the Bluespec language. We can specify, implement, and verify realistic designs entirely within Coq, ending with automatic extraction into a pipeline that bottoms out in FPGAs. Our methodology, using labeled transition systems, has been evaluated in a case study verifying an infinite family of multicore systems, with cache-coherent shared memory and pipelined cores implementing (the base integer subset of) the RISC-V instruction set.

链接与引用

DOI 原文 · PDF(开放获取) · DBLP

BibTeX
@article{ChoiVSCA17,
  title = {Kami: a platform for high-level parametric hardware specification and its modular verification},
  author = {Joonwon Choi and Muralidaran Vijayaraghavan and Benjamin Sherman and Adam Chlipala and Arvind},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {1},
  number = {ICFP},
  year = {2017},
  doi = {10.1145/3110268}
}