介绍Chisel与Scala的不同与关联。
一. 层次高低
Chisel是使用Scala语言编写的具体代码。从抽象层次上看,Scala更高。
1. 语言与代码
Chisel是使用Scala语言编写的代码。
2. 语言与代码库
Chisel是使用Scala语言编写的代码库。
二. 范围大小
3. 通用语言与领域专用语言
Scala是一门通用语言,可用于各个领域编程。
Chisel使用Scala实现的领域专用语言(DSL),专门用于硬件建模使用。
三. 思维方式不同
4. 软件编程与硬件建模
Scala是一门软件编程语言,其使用基于软件编程思维;
Chisel是硬件模型构建语言,其使用基于硬件模型构建思维;
软件编程的最小单位为汇编指令;
硬件建模的最小单位为硬件模块;
软件编程基于指令执行;
硬件模型基于电磁传播;
四. Chisel:狭义与广义
5. 狭义的Chisel
狭义的Chisel是一个使用Scala语言实现的硬件模型构件库,其各个组成部分与硬件模型分别对应。
总结如下:
a. Chisel使用的UInt/SInt/Bool/Bits,描述硬件模型中使用的类型,最终落实到Wire/Reg上;
b. Chisel使用PrimOp,对应硬件模型中的各种原子操作,如加减乘除,移位等操作;
c. Chisel使用的":=",对应到硬件模型中的连接,把下游连接到上游,接收上游值的变化(电平变化);
d. Chisel使用when/elsewhen/otherwise,描述硬件模型中的选择逻辑;
所有的验证、转换工作都基于硬件模型进行。
6. 广义的Chisel
广义的Chisel,是一个硬件模型构建方法论(methodology)。
包含两个部分:
首先,实现一个硬件模型构件库,用于构建硬件模型;
其次,提高一个层次,使用Scala作为硬件模型生成器;
这个层次的提升极大的提高了硬件模型的构建效率。
硬件模型在Chisel中的叫法为:Hardware graph;
硬件模型生成器在Chisel中的叫法为电路生成器:Circuit generator;
电路生成器源于Verilog的generate。
由于Scala语言的函数式编程方法,而有了极大的提升。