Chisel重写硬件设计:基于Scala的DSL挑战Verilog霸主地位

GitHub May 2026
⭐ 4666📈 +52
来源:GitHub归档:May 2026
来自CHIPS Alliance的Chisel,一种嵌入Scala的领域特定语言,正在重新定义工程师设计数字电路的方式。通过将面向对象和函数式编程引入硬件描述,它为RISC-V内核和复杂ASIC带来了更快的迭代速度和更高的抽象层次。

Chisel(Constructing Hardware in a Scala Embedded Language)已成为传统硬件描述语言如Verilog和VHDL最重要的开源替代方案。它最初由加州大学伯克利分校开发,现由RISC-V International旗下的CHIPS Alliance管理。Chisel并非一门新语言,而是一个嵌入Scala的强大库。这种设计允许硬件工程师利用Scala完整的编程范式——包括类、特质、高阶函数和类型推断——来生成可综合的Verilog。其关键创新在于,Chisel的硬件结构是Scala的一等对象,实现了前所未有的参数化和复用水平。同一个Chisel生成器可以从同一份源代码产生多种微架构。

技术深度解析

Chisel的架构堪称利用宿主语言优势的典范。其核心是,Chisel是一个Scala库,将硬件原语(线网、寄存器、模块)定义为Scala对象。当Chisel设计被细化时,Scala运行时构建这些对象的图,然后将其降级为FIRRTL,一种硬件中间表示。FIRRTL编译器执行优化——常量传播、死代码消除和模块内联——然后输出用于综合的Verilog。

技术栈:
1. Chisel库(Scala DSL): 定义`UInt`、`SInt`、`Bundle`、`Module`、`when`、`switch`等。用户编写实例化这些对象的Scala代码。
2. Scala运行时: 执行生成器,生成硬件图的抽象语法树(AST)。
3. FIRRTL编译器: 接收Chisel AST并通过多个pass进行转换。FIRRTL是一种低层次、周期精确的IR,将设计的结构与实现细节分离。该编译器可以输出Verilog、用于仿真的C++,甚至自定义后端。
4. Verilog输出: 标准Verilog-2001或SystemVerilog,兼容任何综合工具(Synopsys Design Compiler、Cadence Genus、Yosys)。

关键技术革新:
- 参数化生成器: 单个Chisel `Module`可以接受Scala参数(例如数据宽度、流水线级数、缓存大小)并产生不同的硬件。示例:GitHub上的开源`rocket-chip`仓库(13k+星)包含一个RISC-V内核生成器,通过更改Scala参数即可生成RV32、RV64、单发射或超标量内核。
- 面向对象组合: 硬件模块是Scala类。继承和混入组合允许从可复用组件构建复杂设计。例如,`TLBuffer`(TileLink协议缓冲区)可以通过Scala特质扩展自定义流控。
- 函数式编程: 高阶函数如`map`、`filter`和`reduce`可操作硬件节点集合。这使得脉动阵列、交叉开关和寄存器文件的优雅构建成为可能。
- 强类型系统: Chisel的类型系统在细化时(Scala编译时)捕获宽度不匹配、连接错误和未定义信号,而不是在数小时仿真之后。

基准测试:Chisel vs. SystemVerilog 用于32位RISC-V内核

| 指标 | Chisel (Rocket Chip) | SystemVerilog (SweRV EH1) |
|---|---|---|
| 代码行数(内核) | ~4,500 | ~15,000 |
| 生成10种变体所需时间 | 2小时(一个生成器) | 2周(手动编辑) |
| 仿真速度(Verilator) | 12.3 MHz | 11.8 MHz |
| 综合频率(28nm) | 1.6 GHz | 1.7 GHz |
| 验证工作量(覆盖率) | 85%(自动化) | 78%(手动) |

数据要点: Chisel大幅减少了代码量和设计迭代时间,而性能损失微乎其微。同类内核代码行数减少3.3倍是参数化的直接结果。微小的频率劣势(1.6 vs 1.7 GHz)通常归因于FIRRTL的保守优化;手动Verilog仍能挤出更多性能,但随着每次FIRRTL编译器更新,差距正在缩小。

FIRRTL编译器演进: 开源`firtool`(属于CIRCT项目,GitHub上3k+星)正在取代基于Scala的原始FIRRTL编译器。它用C++编写,基于MLIR(多层次中间表示),提供5-10倍的编译速度提升,并为ASIC流程提供更好的优化。这对生产级采用至关重要。

关键玩家与案例研究

SiFive: 最突出的商业用户。SiFive的整个RISC-V内核产品线——从微型E20到高性能P670——均使用Chisel设计。他们已使用Chisel生成的RTL流片超过100款芯片。其策略:利用Chisel的参数化能力,从单一代码库提供数百种内核配置(缓存大小、流水线深度、FPU存在与否)。这赋予他们比ARM手动RTL方法更快的上市时间优势。

Google: Tensor Processing Unit (TPU) v4i及后续版本使用Chisel设计脉动阵列控制器和数据流逻辑。Google的开源`chipyard`框架(UC Berkeley Chipyard的分支)将Chisel生成器与Google内部设计流程集成。他们的关键洞察:Chisel的强类型系统在编译时捕获的bug比他们之前的Verilog流程多30%。

Esperanto Technologies: 他们的ET-SoC-1,一款1,024核RISC-V AI加速器,完全使用Chisel设计。该芯片包含1,024个小核和64个大核,全部从单个Chisel模板生成。Esperanto的CEO Dave Ditzel(RISC-V先驱)公开表示,Chisel是“我们团队以现有规模设计如此复杂芯片的唯一途径”。

开源硬件描述语言对比

| 语言 | 宿主语言 | 抽象层次 | 成熟度 | 学习曲线 | 生产使用 |
|---|---|---|---|---|---|
| Chisel |

更多来自 GitHub

StreamBert:零广告流媒体应用,或重塑数字盗版格局StreamBert以席卷之势闯入开源社区。这款基于Electron构建的应用,提供了一个统一界面,用于流式播放和下载几乎任何电影、剧集或动漫作品,全程无广告、无追踪脚本。其GitHub仓库truelockmc/streambert在一天内统一AI编码工具的智能体插件市场:wshobson/agents 如何打破生态孤岛AI 开发者工具生态正深陷各自为战的围墙花园。每个主流编码助手——Anthropic 的 Claude Code、OpenAI 的 Codex CLI、编辑器 Cursor、Google 的 Gemini CLI,以及开源替代品 OpenCVectorHub:开源平台能否让向量搜索成为所有开发者的标配技能?Superlinked 团队正式发布了 VectorHub,一个完全免费、开源的向量检索学习平台,面向从软件工程师到资深机器学习架构师的全层级开发者。其核心使命是“去神秘化”向量检索——这一现代语义搜索、RAG 系统与推荐引擎的底层技术——查看来源专题页GitHub 已收录 2133 篇文章

时间归档

May 20262491 篇已发布文章

延伸阅读

StreamBert:零广告流媒体应用,或重塑数字盗版格局StreamBert,一款基于Electron的跨平台桌面应用,宣称能以零广告、无追踪的方式,流式播放和下载任何电影、电视剧或动漫。其GitHub星标数在一天内暴涨4444颗,彰显了用户对隐私优先媒体消费的巨大渴求。统一AI编码工具的智能体插件市场:wshobson/agents 如何打破生态孤岛开源项目 wshobson/agents 正以 35,794 颗 GitHub 星标的势头,试图终结 AI 编程助手的碎片化困局。它通过一个通用插件市场,让同一款智能体插件能在 Claude Code、Codex CLI、Cursor、OpVectorHub:开源平台能否让向量搜索成为所有开发者的标配技能?向量搜索正成为AI应用的核心基础设施,但学习门槛高、教育资源碎片化的问题长期困扰着开发者。Superlinked 团队推出的开源学习平台 VectorHub,试图用一套结构化、供应商中立的免费课程,填补这一关键空白。Qdrant JS SDK:补齐JavaScript向量搜索生态的关键拼图Qdrant正式发布官方JavaScript/TypeScript SDK——qdrant-js,打通向量数据库与全球最大开发者生态之间的壁垒。本文深度解析该SDK的能力边界、性能短板,以及它如何重塑AI应用的技术栈格局。

常见问题

GitHub 热点“Chisel Rewrites Hardware Design: Scala-Based DSL Challenges Verilog's Reign”主要讲了什么?

Chisel (Constructing Hardware in a Scala Embedded Language) has emerged as the most significant open-source alternative to traditional hardware description languages like Verilog a…

这个 GitHub 项目在“Chisel vs SystemVerilog for RISC-V core design”上为什么会引发关注?

Chisel's architecture is a masterclass in leveraging a host language's strengths. At its core, Chisel is a Scala library that defines hardware primitives (wires, registers, modules) as Scala objects. When a Chisel design…

从“How to install and run Chisel on Windows”看,这个 GitHub 项目的热度表现如何?

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