Chisel是什么?
Chisel(读作[ˈtʃi:zɔːl]),全名Constructing Hardware in a Scala Embedded Language,是由伯克利开发的硬件构建语言,开源。
下面是官网上列出的一些特性:
硬件构造语言(非HLS)
嵌入在Scala编程语言中
抽象的数据类型和接口
层次化+面向对象+功能化构造
用Scala中的标记来高度参数化
多时钟域
大量的标准库,包括浮点单元
针对ASIC和FPGA产生低层次的Verilog代码
github开源,BSD License
什么叫硬件构建语言?是来代替Verilog/SystemVerilog的吗?
Chisel可以简单的理解成高度抽象的、高度参数化的Verilog生成器,利用Scala语言的语法糖,来快速高效的开发硬件设计。设计完成后,自动生成Verilog,再经由传统的数字IC设计方法(逻辑综合、APR)变成芯片。
我们注意几点:
Chisel是基于Scala,也可以说Chisel是用Scala语言写的针对硬件开发的库。用Chisel语言做设计就是在写Scala语言的程序。有点类似UVM是SystemVerilog语言的验证框架库。
Chisel的应用专注在前端设计,提高设计的效率。
生成的Verilog是低层次的,也就是类似门级的。
目前仍然通过DC或者Genus来综合。
与HLS有明显区别,不能直接变成工艺相关的门级电路。也许以后会增加这种功能,得看相关EDA的发展。
那Chisel相比Verilog有什么优势?
抽象程度高、高度参数化
前端设计周期缩短
可以走敏捷开发流程
除了可以生成Verilog,还可以生成C/CPP。
都说Chisel开发快,那具体有哪些语法特性?
各种变量类型可以转换
位宽可以自动推断
与Verilog一样可以方便的取位和拼接
加减法可以防溢出
可以检查敏感信号列表,防止生成latch
可以以黑盒子的方式调用Verilog,或者以in-line的方式嵌入Verilog
灵活高效的接口定义,再也不需要AUTOARG
可以定义多套不同的实现,比如FPGA和ASIC定义不同的RAM
可以处理多时钟域,处理异步信号的同步
Chisel与RISC-V
虽然Chisel与RISC-V没有必然联系,但伯克利用Chisel设计的RISC-V CPU,所以大部分的RISC-V的CPU都是采用Chisel语言。由于RISC-V的流行,已经有不少公司在尝试Chisel,用来设计自己的CPU或者加速器。
在开源的世界,硬件的Chisel的地位已经跟软件的Python相当。