我一直在研究Chisel的来源,还有各种熔岩(堪萨斯、Chalmer和Xilinx口味)和CLaSH。我正在试着了解什么是主要的卖点凿与其他人。我确定的主要方法是快速模拟。
我想知道,是否有更深入研究的人可以指出其他的优点,缺点和权衡。
(抱歉,如果这是一个过多的讨论性问题。我试着向用户发帖,但显然你需要被接受为会员才能这样做。)
发布于 2015-01-16 06:14:21
首先,声明我是一个重度Chisel用户,但对您提到的基于Haskell的DSEL只略知一二。
我认为Chisel针对多个后端(C++、Verilog等)的能力。是一个显著的优势。生成的C++使周期精确模拟的速度比Verilog/VHDL模拟器快许多倍,因为它避免了这些语言固有的事件驱动模型。
这不是一个固有的限制,但是Lava和CLaSH似乎主要针对FPGA实现,而Chisel已经用于FPGA和ASIC的工作。Chisel也可能得到更好的支持;代码、指令和示例都是available on GitHub,该语言仍在积极开发中。
Haskell和Scala (其父语言)之间也存在差异;如果您对其中一种语言更熟悉,可能会使入门变得更容易。(我将把“语言战争”留给专家。)
发布于 2018-09-11 09:15:13
在Clash教程页面上有一个部分描述了Clash和Lava风格之间的一些权衡(我把它作为参考)。基本上,Clash使用静态分析方法,而Lava风格使用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
https://stackoverflow.com/questions/27472473
复制相似问题