Chisel、Lava和CLaSH有什么区别?

8

我一直在研究 Chisel 的源代码以及各种 Lava(Kansas、Chalmers 和 Xilinx 版本)和 CLaSH。我试图理解 Chisel 相对于其他技术的主要优势,发现其最主要的卖点是快速模拟。

我想知道那些深入研究过的人能否指出其他的优点、缺点和权衡。

(如果这太多是讨论性问题了,我很抱歉。我试着发布到 chisel-users,但显然需要成为会员才能这样做。)

2个回答

8
首先,我要声明我是一位熟练的Chisel用户,但对于您提到的基于Haskell的DSELs只有初步了解。
我认为Chisel能够针对多个后端(C ++,Verilog等)是一个重要的优势。生成的C ++可以以比Verilog / VHDL模拟器快得多的速度进行周期精确的模拟,因为它避免了这些语言固有的事件驱动模型。
这不是固有的限制,但Lava和CLaSH似乎主要针对FPGA实现,而Chisel已用于FPGA和ASIC的工作。 Chisel也可能得到更好的支持;代码、说明和示例都在 GitHub上可用,并且该语言仍在积极开发中。
此外,Haskell和Scala(父语言)之间也存在差异;如果您更喜欢其中之一,那么开始起步可能会更容易。(我将把“语言战争”留给专家们。)

2
Clash教程页面上有一节描述了Clash和Lava flavors之间的一些权衡(我将其作为参考)。基本上,Clash采用静态分析方法,而Lava flavors则采用DSEL(特定领域嵌入式语言)方法。这些差异可能与Chisel和Clash之间的差异非常相似,因为Chisel也遵循DSEL方法。因此,使用Clash,您可以编写Haskell代码,然后使用Clash编译器将其编译为VHDL、Verilog、SystemVerilog。我不太熟悉Chisel或DSEL,但我知道它不仅仅是将代码编译成HDL。

FWIW,我曾经考虑过在项目中使用Chisel,我发现生态系统、文档和社区都非常好,但我不喜欢Scala风格。进一步的FP研究使我了解到了Haskell和Clash。我喜欢纯函数式的硬件设计风格,Haskell的紧密耦合使我能够“两全其美”地学习硬件和Haskell。像前面的答案一样,Clash vs Chisel更多是语言决策,而Clash vs Lavas则更多是DSEL vs静态分析(编译)决策。有关后者决策的更多阅读,请参见参考资料。

参考资料:http://hackage.haskell.org/package/clash-prelude-1.2.5/docs/Clash-Tutorial.html#g:20


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接