Chisel 背景
Verilog HDL开发效率低,不能满足芯片规模的高速发展。相对而言,软件开发效率变强很多,这是由于其高抽象层次的编程语言。于是出现了基于Scala为宿主语言开发的硬件构建语言,以减少硬件设计的反馈环,提高生产力。
Chisel是一种开源,RTL级的硬件描述语言,并不是HLS语言(行为级描述的高级语言如C直接生产RTL而不会看到寄存器级别的东西),可以加速ASIC和FPGA数字逻辑设计的高级电路生成和设计重用。
Chisel将硬件构造原语添加到Scala编程语言中,为设计者提供了现代编程语言的能力,可以编写复杂的、可参数化的电路生成器,从而生成可综合的Verilog。这种生成器方法能够创建可重用的组件和库,例如Chisel标准库中的FIFO队列和仲裁器,从而提高设计中的抽象级别,同时保持精细的控制。
最初是在RISC-V处理器开发时出现的,由于处理器芯片迭代快速,很多模块可以通过派生和重载来产生,包括SOC设计中模块的重用,chisel可以体现自身优势。 类似的还有SpinalHDL语言。
Chisel 特性
-
内嵌scala语言,语法基本相似,继承了其便于封装、扩展的特性
-
面向对象以及功能构建的语言,即类的集成和派生可用;强大的函数式编程方式,参数化、代码复用更加方便高效
-
工作步骤:Chisel转换为verilog
(1) Chisel编译器,将Chisel代码转换成AST中间数据
(2) Firrtl编译器,将AST数据转换成Firrtl代码
(3) Firrtl编译器,将Firrtl代码转换成Verilog代码 -
端口互连简单
-
chisel编辑器能实现功能强大的错误检查
问题尚存
- 学术界产物,短期内难以取代Verilog
- Chisel需要先转换成verilog,而转换后的verilog信号名有大量的命名替换(Chisel源码修改后原来的名称可能发生变化),这会给问题定位和代码覆盖率收集带来很多障碍
- 不支持主流的EDA工具