Firrtl:连接高级硬件设计与硅芯片的无名英雄

GitHub April 2026
⭐ 749
来源:GitHub归档:April 2026
Firrtl,即面向寄存器传输级(RTL)的灵活中间表示,正悄然革新数字硬件设计领域,成为编译器框架的核心枢纽。由Chips Alliance主导开发,它实现了从Chisel等高级语言到优化后Verilog的无缝转换,显著提升了设计的可移植性与验证效率。

Firrtl(面向RTL的灵活中间表示)绝非又一个开源项目;它是新一代硬件设计流程的架构基石。由Chips Alliance维护,Firrtl充当寄存器传输级(RTL)设计的编译器中间表示(IR),其角色类似于软件编译器中的LLVM IR。它的核心功能是将前端硬件描述语言(HDL)与后端实现及验证工具解耦。通过将Chisel(一种嵌入Scala的领域特定语言)等语言转换为标准化、结构化的IR,Firrtl实现了一个多阶段优化流水线——包括常量传播、死代码消除和模块内联——然后再生成最终的Verilog或VHDL。这一抽象层极大地降低了设计复杂度,提升了可移植性,并加速了验证流程。

技术深度解析

Firrtl的架构堪称编译器设计在硬件领域的典范应用。其核心定义了一种形式化、带类型的IR,将数字电路表示为原语图——节点、连线、寄存器、存储器和实例。与混合了结构与行为描述的Verilog不同,Firrtl强制实施严格分离:电路被描述为一组相连的组合逻辑和时序逻辑元件,带有显式数据类型(UInt、SInt、Clock、Reset等)以及扁平的模块层次结构。

编译流水线分为三个阶段:
1. 前端解析:高级HDL(主要是Chisel)生成首轮Firrtl电路。Chisel的`firtool`(前身为`firrtl`编译器)将Scala生成的硬件图转换为这种IR。
2. 优化遍:一系列编译器变换在Firrtl IR上运行。这些包括:
- 常量传播:将由常量值驱动的连线替换为其字面等效值。
- 死代码消除:移除未使用的节点和寄存器。
- 模块内联:展平层次结构以获得更好的优化效果。
- 位宽推断:自动确定所有信号的位宽。
- 存储器降级:将抽象存储器原语转换为供应商特定的实现。
3. 后端代码生成:通过代码生成器将优化后的IR降级为Verilog(或SystemVerilog)。`firtool`工具还支持为形式验证工具(如`symbiyosys`)输出FIRRTL。

一项关键的技术创新是Firrtl的类型系统,它支持任意宽度整数、定点类型(通过扩展)以及像束(bundle)和向量(vector)这样的聚合类型。这使得Chisel能够表达复杂的数据结构(例如AXI4总线接口),并在编译过程中自动展平为Verilog连线。

对于希望进行实验的开发者,开源仓库`chipsalliance/firrtl`(749星)提供了Scala参考实现。一个更现代的改写版本`chipsalliance/firtool`(属于CIRCT项目)使用了来自LLVM的MLIR(多层中间表示),提供了更好的性能和可扩展性。基于CIRCT的流程现已成为Chisel 3.6+的默认选项。

数据要点:根据Chips Alliance基准测试,从原始的基于Scala的Firrtl过渡到基于CIRCT的`firtool`,对于大型设计(例如,RISC-V内核的编译时间从几分钟缩短到几秒)实现了10倍的编译速度提升。这一性能提升对于迭代式硬件开发至关重要。

关键参与者与案例研究

Firrtl生态系统由学术界与工业界的合作驱动,Chips Alliance作为治理机构。

主要贡献者:
- 加州大学伯克利分校ASPIRE实验室:Chisel和Firrtl的发源地。Jonathan Bachrach和Krste Asanović等研究人员开创了使用嵌入在Scala中的高级语言生成硬件的概念。
- SiFive:领先的RISC-V内核IP公司,在其产品线中广泛使用Chisel和Firrtl。SiFive的内核(例如U74、S76)使用Chisel设计,并通过Firrtl编译为Verilog进行流片。
- Google:定制加速器(TPU)的主要采用者。Google的开源`XLS`项目(加速硬件综合)也使用Firrtl作为其高级综合流程的中间格式。
- Antmicro:一家开源硬件咨询公司,将Firrtl集成到其Renode仿真平台中,用于Chisel设计的协同仿真。

案例研究:RISC-V Rocket Chip
同样来自加州大学伯克利分校的Rocket Chip生成器,使用Chisel参数化一个完整的RISC-V SoC。设计流程如下:
1. Chisel源代码描述微架构。
2. Chisel编译器生成Firrtl IR。
3. 运行Firrtl优化(例如位宽推断、常量传播)。
4. 生成Verilog用于仿真(Verilator)或综合(Yosys)。

这一流程使得Rocket内核能够从单发射顺序设计快速迭代到超标量乱序内核(BOOM),而无需重写Verilog后端。

竞争方案对比:
| 工具/IR | 源语言 | 后端 | 关键优势 | 关键劣势 |
|---|---|---|---|---|
| Firrtl | Chisel, 自定义HDL | Verilog, SystemVerilog | 强大的优化能力,形式验证支持 | 学习曲线陡峭(Scala) |
| Yosys | Verilog, SystemVerilog | 多种(ASIC, FPGA) | 成熟,广泛的供应商支持 | 无高级语言前端 |
| CIRCT (MLIR) | Chisel, CIRCT方言 | Verilog, LLVM | 高性能,可扩展性 | 仍在演进中,工具链较少 |
| SpinalHDL | Scala DSL | Verilog | 语法比Chisel更简洁 | 生态系统较小 |

数据要点:Firrtl作为编译器IR而非直接综合工具的独特定位,使其在形式验证和多阶段优化方面具有优势。然而,它对Scala的依赖限制了其在偏好Python或C++的硬件工程师中的采用。

更多来自 GitHub

CausalNex 仓库沦陷:开源 AI 供应链安全的当头棒喝QuantumBlack Labs 的 CausalNex 仓库,曾是一款备受瞩目的开源因果推断与贝叶斯网络建模库,如今因 HackerOne 用户 shamim_12 报告的安全漏洞而被标记为危险。该漏洞的具体性质——是恶意代码注入、后门Pyro 2.0:Uber 概率编程框架重新定义贝叶斯 AIPyro 是由 Uber AI Labs 开发、基于 PyTorch 构建的开源概率编程语言(PPL),已成为研究人员和工程师将不确定性量化融入深度学习的关键工具。与传统神经网络输出点估计不同,Pyro 允许模型表达其预测的置信度(或缺乏置Floci:开源AWS模拟器,挑战云端依赖,重塑本地开发体验Floci(floci-io/floci)已崭露头角,成为开发者在本地开发与测试中摆脱昂贵、始终在线的AWS环境的理想替代方案。作为完全开源的项目,它提供与Amazon最常用服务——对象存储S3、无服务器函数Lambda和NoSQL数据库D查看来源专题页GitHub 已收录 1005 篇文章

时间归档

April 20262290 篇已发布文章

延伸阅读

Amlogic-S9xxx-Armbian:如何将廉价电视盒子变身高性能Linux服务器一场静默的革命正在全球地下室和家庭实验室中上演:废弃的电视盒子正被改造成强大而廉价的Linux服务器。GitHub项目`ophub/amlogic-s9xxx-armbian`提供了关键的软件桥梁,为数十款消费级SoC芯片提供精心维护的ArLibratbag:一个Linux DBus守护进程如何统一游戏鼠标配置多年来,使用高端游戏鼠标的Linux用户,一直面临着专有Windows软件与零散社区脚本的割裂困境。Libratbag,一个看似低调的DBus守护进程项目,正悄然崛起为解决这一痛点的关键基础设施层。它通过提供标准化的设备配置协议,赋能用户与Piper与libratbag:开源力量如何解锁Linux游戏硬件生态多年来,Linux玩家面临两难抉择:要么忍受高端游戏键鼠的基础功能,要么双系统切换至Windows使用厂商软件。如今,开源组合libratbag及其GTK前端Piper正系统性地瓦解这道壁垒。这场由社区驱动的技术革命,标志着Linux生态重开放计算计划的遗产:Facebook归档硬件蓝图如何重塑云计算格局诞生于Facebook超大规模效率需求的开放计算计划,曾以激进的开放理念彻底革新数据中心硬件设计。如今其创始代码库虽已归档,但其技术基因已渗透当今所有主流云平台。本文深度剖析OCP的技术遗产、从企业项目到行业标准的蜕变之路,及其归档背后的产

常见问题

GitHub 热点“Firrtl: The Unsung Hero Bridging High-Level Hardware Design and Silicon”主要讲了什么?

Firrtl (Flexible Intermediate Representation for RTL) is not just another open-source project; it is the architectural backbone of a new generation of hardware design flows. Mainta…

这个 GitHub 项目在“How does Firrtl compare to LLVM IR for hardware design”上为什么会引发关注?

Firrtl's architecture is a masterclass in compiler design applied to hardware. At its core, it defines a formal, typed IR that represents digital circuits as a graph of primitives—nodes, wires, registers, memories, and i…

从“Chisel vs SpinalHDL vs SystemVerilog for digital design”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 749,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。