Chisel是Verilog和VHDL等经典硬件描述语言(HDL)的替代品.我在Verilog的经验及其在工业界和学术界的现有流行表明,它是一种发达的成熟语言.
使用Chisel一段时间的人可以分享您的经验并帮助解释Chisel对经典HDL的效用吗?
到目前为止,我作为本科IC设计专业学生的经历包括:
sel*_*dge 21
出于多种原因,这是一个难以置信的难题.Chisel社区正在尝试统一一个易于理解的具体答案.主要有两个角度:
想想以下类似的问题,"Python提供什么实用程序?" 表示没有效用的响应可能会带来以下几点:
for,while等我写的代码看起来是一样的:printf("hello\n")对print("hello")这种推理的问题在于它忽略了Python提供新的编程范例这一事实,这些范例允许您提高工作效率:
这些范式的存在并不会迫使你使用它们.因此,完全有可能编写外观和感觉就像C一样的Python.
Chisel是一种领域特定语言(DSL),用于描述Scala中嵌入的硬件电路.通过它的本质来说,它提供了相当于构造到VERILOG一样module,Input/ Output,Reg等问题在于你的问题,这将导致这两个最基本的凿例子看起来就像Verilog和还让不让人写凿,看起来就像Verilog的.这通常被用来作为驳斥Chisel以支持Verilog的论据.但是,这类似于根据"Hello World"示例的结构选择编程语言.
这意味着一个更好的问题是:"我可以用Python构建什么,这对C来说是难以克服的?"
回答这个问题需要案例研究,并且(很快)超出"Hello World"比较的范围.考虑在C与Python中构建机器学习库,例如,"我将如何在C中构建Tensorflow?" 由于像Tensorflow这样的抽象需要,这将是非常困难的.
您可以通过查看成熟的Chisel项目来考虑类似的示例比较.两个突出的例子是Rocket-Chip和Diplomacy.前者是任意片上系统(SoC)设计的发生器.后者被Rocket Chip用来处理参数协商的问题---在一个任意的SoC中我想把N我连接在一起的组件的参数作为我连接的函数(例如,地址宽度,内部逻辑,一致性协议).至关重要的是,Rocket-Chip和Diplomacy都可以用作图书馆(有一些困难将在未来得到解决).具体地说,这意味着用户非常接近能够"仅导入RISC-V微处理器",就像它们"只导入图形库"一样.
由于语言功能和库,实际的实用程序指标变为:
对于不受支持的构造,如负边缘触发事物和异步重置,Chisel总是通过Verilog黑盒提供逃生舱口.但是,所有这些都只是寻找开发人员的功能.
Chisel构成硬件编译器框架的一部分,看起来非常类似于应用于硬件生成的LLVM.Chisel-to-Verilog过程构成了多阶段编译器的一部分."Chisel stage/front-end"将Chisel编译为称为FIRRTL(RTL的灵活中间表示)的电路 中间表示."FIRRTL阶段/中端"然后优化FIRRTL并应用用户自定义转换.最后,"Verilog stage/back-end"基于优化的FIRRTL发出Verilog.
虽然很微妙,但这个编译器结构可以实现以下功能:
从这个角度来看,问题更接近于"C++和LLVM提供了什么实用程序而不是手动编写的汇编语言?"
在讨论编译器时,通常出现Chisel(硬件构造语言)与高级综合(HLS)的问题.这里的区别因素是,从根本上说,Chisel仍然是描述电路的强大语言,而HLS是将程序转换为电路的路径.
总而言之,思考这个问题的一个更好的方法是,"凿子能够超越 Verilog?" 这是一个困难的问题,没有精辟的答案,需要比较两种语言提供的编程范例集.目前,根据我自己的经验,解决这个问题的最佳方法是在成熟的Chisel代码库上进行深度潜水,并尝试自己使用它(并扣留几个月的判断).这些方法的困难在于需要时间.此外,阅读这些代码库并做出这些类型的判断所必需的技能组合在硬件工程师中并不普遍.硬件工程师通常非常精通C,但可能从未见过(在任何深度)面向对象编程,函数编程或利用现代软件工程原理编写的复杂项目.这倾向于设置偏见,人们正在寻找解雇Chisel(或类似语言)的理由而不是使用它的理由.