官网:https://chisel.eecs.berkeley.edu/index.html
Chisel:Constructing Hardware in a Scala Embedded Language,CHISEL是在加州大学伯克利分校开发的一种开源硬件构造语言,它支持使用高度参数化的生成器和分层特定领域的硬件语言的高级硬件设计。
下面是官网上列出的一些特性:
- 硬件构造语言(非HLS,不是C到门级电路)
- 嵌入Scala编程语言
- 代数构造与布线
- 抽象数据类型和接口
- 散装连接
- 层次+面向对象+功能构造
- 在Scala中使用metaprogramming 实现高度参数化
硬件构造语言
什么叫硬件构建语言?是来代替Verilog/SystemVerilog的吗?
- 支持特定域语言的分层
- 大型标准库,包括浮点单位
- 多时钟域
- 生成低级别的verilog,用于传递到标准的asic或fpga工具。
- 使用修改后的BSD许可证的GitHub上的开源
- 全套文档
- 越来越多的采用者社区
Chisel可以简单的理解成高度抽象的、高度参数化的Verilog生成器,利用Scala语言的语法糖,来快速高效的开发硬件设计。设计完成后,自动生成Verilog,再经由传统的数字IC设计方法(逻辑综合、APR)变成芯片。
Chisel是基于Scala,也可以说Chisel是用Scala语言写的针对硬件开发的库。用Chisel语言做设计就是在写Scala语言的程序。有点类似UVM是SystemVerilog语言的验证框架库。
Chisel的应用专注在前端设计,提高设计的效率。生成的Verilog是低层次的,也就是类似门级的。目前仍然通过DC或者Genus来综合。与HLS有明显区别,不能直接变成工艺相关的门级电路。也许以后会增加这种功能,得看相关EDA的发展。
Chisel优势
那Chisel相比Verilog有什么优势?
- 抽象程度高、高度参数化
- 前端设计周期缩短
- 可以走敏捷开发流程
- 除了可以生成Verilog,还可以生成C/CPP。
语法特性
都说Chisel开发快,那具体有哪些语法特性:
- 各种变量类型可以转换
- 位宽可以自动推断
- 与Verilog一样可以方便的取位和拼接
- 加减法可以防溢出
- 可以检查敏感信号列表,防止生成latch
- 可以以黑盒子的方式调用Verilog,或者以in-line的方式嵌入Verilog
- 灵活高效的接口定义,再也不需要AUTOARG
- 可以定义多套不同的实现,比如FPGA和ASIC定义不同的RAM
- 可以处理多时钟域,处理异步信号的同步
入门级教程推荐
Scala语言教程
https://docs.scala-lang.org/tour/tour-of-scala.html
伯克利的Chisel教程:
https://github.com/ucb-bar/chisel-tutorial
Chisel的简明用户手册
https://github.com/freechipsproject/chisel3/wiki/Short-Users-Guide-to-Chisel
Jupyter格式的学习资料
https://github.com/freechipsproject/chisel-bootcamp
Chisel与RISC-V
虽然Chisel与RISC-V没有必然联系,但伯克利用Chisel设计的RISC-V CPU,所以大部分的RISC-V的CPU都是采用Chisel语言。由于RISC-V的流行,已经有不少公司在尝试Chisel,用来设计自己的CPU或者加速器。
在开源的世界,硬件的Chisel的地位已经跟软件的Python相当。
图片来自:http://www.csl.cornell.edu/~cbatten/pdfs/batten-osh-pymtl-celerity-spring2018.pdf
推荐两个Chisel的视频
来自Google TPU团队分享使用Chisel的经验
Experiences Building Edge TPU with Chisel
观看链接:
#1 https://www.youtube.com/watch?v=x85342Cny8c&t=0s&list=PL02hojk7ZTSfSBibxsKdaABnZolPP7z1y&index=6
#2 https://pan.baidu.com/s/1xr9iVsl0N1bQ41NK9eEgDQ
Chisel 2018上的Chisel入门介绍
Chisel_Introduction_Intensive_Beginner_Track_Chisel_Community_Conference_2018
观看链接:
#1https://www.youtube.com/watch?v=OhMuPQcyynY&t=338s&list=PL02hojk7ZTSfSBibxsKdaABnZolPP7z1y&index=19
#2https://pan.baidu.com/s/1C7ECxig60Fvmbp8Lc2TMjQ