开源硬件描述语言Chisel的组合电路设计
2017-03-31雷思磊
雷思磊
(酒泉卫星发射中心,酒泉 735000)
雷思磊
(酒泉卫星发射中心,酒泉 735000)
Chisel是加州大学伯克利分校研究人员设计并发布的一种开源的硬件设计语言,已成功用于实现多种处理器,在介绍Chisel基本概念的基础上,通过一个组合电路设计示例和一个时序电路设计示例,说明应用Chisel进行数字电路设计的主要流程。
Chisel; Scala;开源硬件
引 言
Chisel(Constructing Hardware In a Scala Embedded Language)是由加州大学伯克利分校设计并发布的一种开源硬件描述语言,建立在Scala语言之上,是Scala特定领域语言的一个应用,具有高度参数化的生成器(highly parameterized generators),可以支持高级硬件设计。其产生源于加州大学伯克利分校的研究人员认为现有的硬件描述语言(如VHDL、Verilog HDL等)最初设计的目的是用来仿真的,所以有很多不可综合的语法,此外,VHDL、Verilog HDL缺少目前高级语言具备的一些特性,比如对象、继承等[1],所以设计了Chisel,并将其开源,而因为Chisel就是使用Scala编写的一些类,所以在使用Chisel设计电路时,实际就是在写Scala程序,从而可以使用到Scala的许多高级特性,比如面向对象、函数式编程、类型参数化、类型推断等。
采用Chisel设计的电路,经过编译,可以得到针对FPGA、ASIC的Verilog HDL代码,还可以得到对应的时钟精确C++模拟器,如图1所示。

图1 使用Chisel可以得到多种目标
目前,有多个开源项目使用Chisel作为开发语言,包括采用RISC-V架构的开源标量处理器Rocket[2]、开源乱序执行处理器BOOM(Berkeley Out-of-Order Machine)[3]等。本文首先介绍Chisel的基本概念,然后使用Chisel实现一个简单的组合逻辑电路、一个简单的时序逻辑电路,以此说明应用Chisel进行数字电路设计的主要流程。
