?https://mp.weixin.qq.com/s/mTmXXBzSizgiigFYVQXKpw
?
?
介绍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语言的函数式编程方法,而有了极大的提升。