芯片微架构设计语言(二)-Chisel

芯片微架构设计语言(二)- Chisel

各专栏更新如下👇:

OAI-5G开源通信平台实践: OAI (Open Air Interface) 是目前开源5G/4G项目中最完善、最成熟的一个,并且仍然在持续更新。本专栏详细介绍OAI 终端(UE) 基站(gNB)核心网(5GC)三个网元的安装部署配置及运行组网等各方面实践经验,可在通用硬件平台下快速体验和深入学习5G网络功能、协议流程等。19 篇内容 · 13931 阅读

OpenWRT: 分享openwrt产品实践中遇到的问题及解决方法.内容涵盖网络路由、VPN隧道技术、流媒体平台推流拉流、嵌入式平台SIP软终端、ARM平台固件编译、文件系统移植、openwrt定制等55 篇内容 · 88803 阅读

5G CPE终端: CPE功能组成及应用原理介绍;主流厂家CPE功能 性能评测;CPE关键技术分析及实践44 篇内容 · 30230 阅读

Linux音视频采集及视频推拉流应用实践详解: Linux/openwrt 系统音视频采集, 视频推拉流、私有媒体服务搭建实践, 分享IT运营、网络开发、路由器研发等实践中遇到的问题及经验总结。21 篇内容 · 16755 阅读

得力工具: 分享日常工作中一些有用、好用、高效的小工具和小技术27 篇内容 · 29941 阅读

北京开源芯片研究院,包云岗老师团队的“xiangshan"香山开源处理器微架构就是Chisel 实现。包老师团队曾经做过起初对比实验验证,Chisel 在容易上手、设计效率、性能等方面相对Verilog有综合优势。

香山代码仓库路径: GitHub - OpenXiangShan/XiangShan: Open-source high-performance RISC-V processor

Chisel(Constructing Hardware In a Scala Embedded Language)是一种基于 Scala 的硬件构造语言(Hardware Construction Language, HCL),由加州大学伯克利分校(UC Berkeley)的 RISC-V 团队主导开发,旨在简化硬件设计流程,尤其适用于复杂数字电路(如处理器、FPGA 加速器等)的高效建模与生成。与传统的 Verilog/VHDL 相比,Chisel 以代码简洁性、可重用性和参数化设计能力为核心优势,已成为 RISC-V 处理器及开源硬件生态中的重要工具。

核心特点

  1. 基于 Scala 的嵌入式语言
    Chisel 并非独立语言,而是嵌入在 Scala(一种多范式编程语言)中的领域特定语言(DSL)。这意味着开发者可以直接利用 Scala 的编程特性(如面向对象、函数式编程、类型系统)进行硬件设计,同时借助 Scala 的生态工具(如 IDE、调试器)提升开发效率。
  2. 参数化与生成式设计
    支持通过 “参数” 动态配置硬件模块的功能和结构,例如:
    • 定义一个可配置位宽的加法器(width: Int),通过修改参数即可生成 8 位、32 位或 64 位版本;
    • 设计可扩展的处理器核,通过参数开关启用 / 禁用特定指令(如 RISC-V 的乘法扩展M)。
      这种特性极大减少了重复代码,尤其适合需要多版本适配的芯片设计(如不同性能、功耗需求的产品)。
  3. 高级抽象与硬件语义结合
    提供比 Verilog 更高级的抽象能力,同时精确映射硬件行为:
    • UInt(32.W)表示 32 位无符号整数,RegInit(0.U)定义初始值为 0 的寄存器,语义清晰;
    • 通过 “组合逻辑”(:=赋值)和 “时序逻辑”(Reg寄存器)明确区分硬件中的组合电路和时序电路,避免 Verilog 中因always @(*)带来的歧义。
  4. 可重用组件库与模块化
    内置丰富的硬件原语(如多路选择器Mux、加法器+)和标准接口(如Decoupled流接口),支持模块化设计。开发者可将常用功能封装为 “黑盒” 组件(如缓存控制器、总线接口),通过组合复用快速构建复杂系统。例如,RISC-V 处理器的整数核(ALU)、控制单元等模块可独立开发后拼接,大幅提升代码复用率。
  5. 自动生成 RTL 代码
    Chisel 代码最终会通过编译器(如chisel3)自动转换为 Verilog/VHDL 等传统硬件描述语言,供后续的综合、仿真和流片流程使用。这一过程无需手动编写 RTL,减少了人为错误,同时保持了与现有 EDA 工具链的兼容性。

与传统 HDL(Verilog/VHDL)的对比

维度ChiselVerilog/VHDL
抽象层次高级抽象,接近软件编程思维底层抽象,需直接描述硬件结构(如门级、寄存器传输级)
代码量同等功能下代码量减少 50%-80%代码冗长,重复逻辑多
参数化能力原生支持参数化设计,动态生成硬件结构依赖generate语句,语法繁琐且功能有限
可维护性模块化和类型系统提升可读性,便于调试缺乏类型检查,大型项目易出现 “线网混乱”
适用场景复杂处理器、可配置 IP 核、开源硬件项目简单电路、ASIC/FPGA 的底层时序约束设计

典型应用场景

  1. RISC-V 处理器设计
    Chisel 是 RISC-V 生态的 “官方推荐工具”,伯克利的 RISC-V 处理器(如 Rocket、BOOM)均由 Chisel 编写。例如,Rocket 处理器的整数核、缓存系统通过 Chisel 的参数化配置,可灵活支持 32 位 / 64 位架构、不同缓存大小,极大简化了多版本适配工作。
  2. 开源硬件项目
    广泛应用于开源硬件社区,如:
    • LowRISC:基于 Chisel 开发开源 RISC-V 芯片,支持安全扩展;
    • Sifive Freedom 系列:商用 RISC-V 处理器的 Chisel 实现,兼顾性能与可定制性。
  3. 复杂数字电路(如加速器)
    适合设计 AI 加速器、网络处理器等需要高度并行和可配置的电路。例如,通过 Chisel 的 “向量类型” 快速建模深度学习加速器的并行计算单元。

工作流程

  1. 用 Chisel 编写硬件代码(.scala文件),定义模块、接口和连接关系;
  2. 通过 Chisel 编译器(如chiseltest)生成 Verilog 代码;
  3. 将生成的 Verilog 导入传统 EDA 工具(如 Synopsys Design Compiler)进行综合、时序分析和流片;
  4. 利用 Chisel 的测试框架(如ChiselTest)编写测试用例,验证硬件功能。

总结

Chisel 的出现革新了硬件设计模式 —— 它将软件领域的 “抽象思维” 和 “代码复用” 引入硬件开发,尤其适合大规模、可配置、需要快速迭代的数字电路设计(如 RISC-V 处理器)。对于开源硬件生态而言,Chisel 降低了复杂芯片的开发门槛,推动了硬件设计的 “民主化”(类似软件领域的开源协作)。如果你计划参与 RISC-V 处理器设计或复杂数字电路开发,Chisel 是值得优先掌握的工具。

感谢阅读,还请多多支持🌹 点赞👍收藏⭐评论✍️.

关注公众号 「月光技术杂谈」 ,获取技术资料!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月光技术杂谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值