技术深度解析
CIRCT的架构是其最核心的差异化优势。与传统EDA工具依赖单一、封闭的内部表示不同,CIRCT利用MLIR定义了一组相互关联的“方言”(Dialect),每个方言代表硬件设计流程中特定层级的抽象。
方言栈: 核心流程从高层抽象向低层表示流动:
1. 高层方言(例如 `func`、`scf`、`arith`): 这些是标准的MLIR方言,用于表示算法行为、控制流和算术运算。它们是Google XLS或AMD Vitis HLS等HLS工具的入口点,这些工具可以将输出直接导向CIRCT。
2. HW方言: 这是第一个硬件专用层。它引入了模块、实例、连线以及基本操作(AND、OR、触发器)等概念。这是一种结构化但仍属抽象的电路表示。
3. Comb、Seq方言: 这两个方言进一步细化了HW方言。`Comb`处理组合逻辑,而`Seq`则引入带有显式时钟和复位语义的时序元件(寄存器、存储器)。时序和状态在此被正式表示。
4. SV方言: 该方言直接表示SystemVerilog结构,允许忠实地降级(Lowering)到标准RTL。它处理always块、赋值、模块实例化甚至断言。
5. 更低层方言(例如 `FIRRTL`、`LLHD`): CIRCT还支持特定硬件IR的方言。`FIRRTL`方言至关重要,因为它是Chisel硬件构建语言所使用的IR。这为基于Scala的Chisel生态系统与更广泛的CIRCT基础设施之间提供了直接桥梁。`LLHD`方言则是另一种更通用的、类似VHDL/Verilog的IR。
降级流水线: 魔法发生在将一种方言转换为另一种方言的Pass中。例如,一个Pass可能将 `scf.for` 循环(来自HLS)转换为 `hw` 和 `seq` 方言中的有限状态机(FSM)。另一个Pass可能执行重定时(Retiming),在组合逻辑之间移动寄存器以改善时序收敛。这些Pass是模块化且可组合的,这与商业工具中封闭、黑盒式的优化形成鲜明对比。
关键开源仓库:
- llvm/circt: 主仓库。包含方言定义、转换Pass以及 `circt-opt` 和 `circt-translate` 等工具。近期活动频繁,贡献主要集中在改进FIRRTL导入/导出流水线以及增加对SystemVerilog断言的支持。
- llvm/llvm-project: CIRCT所依赖的上游MLIR和LLVM核心。MLIR基础设施的任何改进(例如新的模式重写能力)都将直接惠及CIRCT。
- chipsalliance/firrtl: 参考FIRRTL编译器。CIRCT旨在成为其即插即用的替代品或补充后端,提供更好的优化和代码生成能力。
性能与基准测试数据: 尽管针对CIRCT的全面、标准化基准测试仍在完善中,但早期结果已令人鼓舞。针对一组常见的Chisel设计,将CIRCT的FIRRTL编译器与标准SFC(Scala FIRRTL Compiler)进行比较,显示出显著改进。
| 指标 | SFC (Scala FIRRTL Compiler) | CIRCT (FIRRTL 后端) | 改进幅度 |
|---|---|---|---|
| 编译时间 (Rocket Chip) | 45 秒 | 18 秒 | 快 60% |
| 编译时间 (小型 ALU) | 2.1 秒 | 0.8 秒 | 快 62% |
| 输出 Verilog 行数 (Rocket Chip) | 125,000 | 118,000 | 减少 5.6% |
| 峰值内存占用 (Rocket Chip) | 2.8 GB | 1.9 GB | 减少 32% |
数据要点: CIRCT在性能上展现出对现有FIRRTL编译器的明显优势,尤其对于像RISC-V Rocket Chip这样的大型设计。编译时间和内存占用的减少对于强调快速迭代的敏捷硬件开发至关重要。
关键参与者与案例研究
CIRCT并非单打独斗。其开发由一个主要行业参与者组成的联盟推动,这些参与者看到了开放、统一的硬件编译基础设施的战略价值。
- Google: 主要推动者。Google在其TPU(张量处理单元)设计流程中内部使用CIRCT,并将其作为XLS HLS工具的后端。Google的投资表明其致力于摆脱针对其定制芯片需求的、被供应商锁定的EDA流程。
- SiFive: 作为领先的RISC-V IP提供商,SiFive对敏捷硬件设计有浓厚兴趣。他们使用CIRCT编译基于Chisel的RISC-V内核,受益于性能提升以及编写自定义优化Pass的能力。SiFive的工程师是FIRRTL方言和转换Pass的主要贡献者。
- Intel: Intel通过其oneAPI倡议和在HLS方面的工作参与其中。CIRCT为Intel的HLS工具提供了一个潜在的通用后端,使其能够面向更广泛的硬件平台,包括FPGA和定制加速器。