gpt4 book ai didi

chisel - 与经典硬件描述语言相比,Chisel 有哪些优势?

转载 作者:行者123 更新时间:2023-12-03 21:35:58 30 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

2年前关闭。




Improve this question




Chisel 是 Verilog 和 VHDL 等经典硬件描述语言 (HDL) 的替代品。我使用 Verilog 的经验及其在工业界和学术界的现有流行程度表明,它是一种发展良好的成熟语言。

使用 Chisel 一段时间的人可以分享您的经验并帮助解释 Chisel 相对于经典 HDL 的效用吗?

到目前为止,作为一名本科 IC 设计学生,我的经历包括:

  • Verilog 行业领先,拥有广泛的仿真支持
  • Chisel 不支持 Verilog 支持的所有结构,例如模拟元素
  • Chisel 参数化提供与 Verilog 等效的功能
  • 最佳答案

    由于多种原因,这是一个非常难以回答的问题。 Chisel 社区正试图统一一个易于理解的具体答案。主要有两个角度:

  • 通过新的语言功能和库的可用性提高生产力
  • 由于硬件编译器结构而改进了特化

  • 语言功能/电源答案

    考虑以下类似的问题, “Python 通过 C 提供什么实用程序?” 指示没有实用程序的响应可能会提出以下几点:
  • 我能用 C 写的所有东西我都能用 Python 写。两者都有 forwhile 等,我写的代码看起来一样: printf("hello\n") vs. print("hello")
  • C 具有 Python 不喜欢内联汇编的特性
  • 两者都是图灵完备的

  • 这种推理方式的问题在于,它忽略了 Python 提供了新的编程范式,可以让您提高工作效率的事实:
  • 面向对象编程
  • 函数式编程

  • 实际上,从设计生产力和代码重用的角度来看,Python 可以被视为一种更强大的语言。语言能力是出了名的难以客观评估。 Paul Graham 在他的 "Beating the Averages" essay 中将其描述为“Blub Paradox”。 Graham 的论点是,精通较弱语言的工程师无法评估更强大语言的效用。

    换句话说,上面列出的范式的存在并不强制您使用它们。因此,完全有可能编写外观和感觉都与 C 一样的 Python(并以此为理由完全摒弃 Python!)。

    Chisel 是一种领域特定语言 (DSL),用于描述嵌入在 Scala 中的硬件电路。就其本质而言,它提供了与 Verilog 等效的构造,例如 moduleInput/ OutputReg 等。对于您的问题有问题,这会导致最基本的 Chisellog 示例看起来与编写 Veri 的人完全一样,而且看起来也与人们完全一样像 Verilog。 这通常被用作驳回 Chisel 以支持 Verilog 的论据。 然而,这类似于根据“Hello World”示例的结构进行编程语言选择。

    这意味着一个更好的问题是: “我可以用 Python 构建哪些对 C 来说难以克服的东西?”

    回答这个问题需要案例研究,并且(很快)超出了“Hello World”比较的范围。考虑用 C 和 Python 构建机器学习库,例如,“我将如何用 C 构建 Tensorflow?”由于 Tensorflow 之类的东西需要抽象,这将非常困难。

    您可以通过查看成熟的 Chisel 项目来考虑类似的示例比较。两个突出的例子是 Rocket-ChipDiplomacy 。前者是任意片上系统 (SoC) 设计的生成器。 Rocket Chip 使用后者来处理参数协商问题---在任意 SoC 中,我希望将连接在一起的 N 组件的参数作为我连接的函数(例如,地址宽度、内部逻辑、一致性协议(protocol))。至关重要的是,Rocket-Chip 和 Diplomacy 都可以用作库(有一些困难将在 future 解决)。具体来说,这意味着用户非常接近能够以与“仅导入图形库”相同的方式“仅导入 RISC-V 微处理器”。

    由于语言特性/功能加上库的可用性,真正的实用指标变为:
  • 描述某个组件需要多少行代码?
  • 该语言允许我构建的抽象有多强大?
  • 该语言在多大程度上实现了代码重用?

  • 对于不受支持的构造,例如负边沿触发的事物和异步重置( FIRRTLChisel 现在都支持异步重置),Chisel 始终通过 Verilog 黑匣子提供逃生舱口组合。然而,所有这些实际上只是寻找开发人员的功能。

    硬件编译器答案

    Chisel 是硬件编译器框架的一部分,看起来很像应用于硬件生成的 LLVM。 Chisel-to-Verilog 过程构成了多阶段编译器的一部分。 “Chisel 阶段/前端”将 Chisel 编译为 电路 中间表示,称为 FIRRTL(RTL 的灵活中间表示)。 “FIRRTL 阶段/中端”然后优化 FIRRTL 并应用用户自定义转换。最后,“Verilog 阶段/后端”基于优化的 FIRRTL 发出 Verilog。

    这种编译器结构虽然微妙,但可以实现以下功能:
  • 前后端解耦,可以写其他前后端。 Verilog 前端通过 Yosys 存在,其他语言可以直接针对 FIRRTL,例如 Magma 是它自己的类似 Chisel 的 Python 语言,可以针对 FIRRTL。新前端获得现有中端优化和可用后端的所有优势。也可以编写新的后端,例如,VHDL 后端只需要一个有动力的开发人员来编写。
  • 电路 IR 的引入使电路的自动化特化/转换成为可能。这已被用来将电路转换为 FPGA 优化版本,运行速度比未优化版本( MidasFireSim )更快,启用硬件断点/断言( Dessert ),并添加运行时可配置故障注入(inject)功能( Chiffre )。直接在 Verilog 上进行这些优化将是难以克服的复杂和脆弱。

  • 从这个角度来看,这个问题更接近于 “C++ 和 LLVM 比手动编写的汇编语言提供了什么实用程序?”

    在讨论编译器时,通常会出现 Chisel(一种硬件构造语言)与高级综合 (HLS) 的问题。这里的区别因素是,从根本上说,Chisel 仍然是一种强大的描述电路的语言,而 HLS 是将程序转换为电路的途径。

    结论

    总而言之,思考这个问题的更好方法是, “Chisel 能在 Verilog 之外实现什么?” 这是一个很难回答的问题,需要比较两种语言提供的编程范式集。目前,根据我自己的经验,解决这个问题的最好方法是深入研究成熟的 Chisel 代码库并尝试自己使用它(并保留几个月的判断力)。这些方法的困难在于这需要时间。此外,阅读这些代码库和做出这些类型判断的必要技能在硬件工程师中并不普遍。硬件工程师通常非常精通 C,但可能从未见过(任何深度)面向对象编程、函数式编程或利用现代软件工程原理编写的复杂项目。这往往会造成偏见,人们正在寻找理由解雇 Chisel(或类似语言),而不是使用它的理由。

    进一步阅读
  • Adam Izraelevitz et al., Reusability is FIRRTL Ground: Hardware Construction Languages, Compiler Frameworks, and Transformations, ICCAD, 2017.
  • Paul Graham, Beating the Averages, Online, April 2001.
  • 关于chisel - 与经典硬件描述语言相比,Chisel 有哪些优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53007782/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com