作者 Topic: Chisel/Scala 硬件描述语言: why?  (Read 11185 times)

0成员和33位客人正在查看此主题。

在线的 布鲁尔特

  • 超级贡献者
  • ***
  • 帖子:1973年
  • 国家: NZ.
  • 以前是Sifive,三星r&D
Re: Chisel/Scala 硬件描述语言: why?
« 回复#50开: 2019年1月12日,12:19:31 AM»
也许你*可以*做更多。问那些快乐的家伙'凿出的凿子最重要的质量,使其领先于其他语言,并在这里发布答案。

我问他们,他们给了我昨天在这里发布的链接。

凿子只是硬件创建管道的一部分,它可以在软件中使用很多LLVM。

使用LLVM,您可以拥有各种编程语言编译器,包括CLANG(C / C ++),GO,RUST,FORTRAN,所有这些都会产生LLVM IR(中间表示)。然后,您可以通过IR运行各种无关和机器相关的优化。然后,您将IR馈送到X86或ARM或RISC-V或其他任何代码生成器。如果有人写入新的优化,它将与每种语言和每个处理器一起使用。如果有人写入新的处理器后端,它将与每个编程语言合作。等等。

在凿子的情况下,它'对于人类的高级语言,不仅仅是一些特定的硬件项目,而且为硬件设计的家庭发电机。 凿子输出FIRRTL。 FIRRTL有一般优化器,可以清理设计。 FIRRTL有优化器,将设计塑造以适合更好的FPGA(或更好地适合LUT4或LUT6 FPGA),或者更好地拟合SOC。有"optimizers"对于fiRTL,它会使它混淆,所以您可以向某人提供合成大大的HDL,它将工作,但他们希望赢得'能够弄清楚它是如何运作或改变它。然后,FIRRTL有后端,它会产生Verilog或其他传统HDL以进入物理设计工作流程。

除了能够使用凿子参数化模块之外,还有一个名为外交的工具,可以为不同模块的实例化之间的参数作出限制,诸如在两个模块之间找到最佳总线宽度,或决定是否有一些控制信号是这样的必要或没有选择选项。

不是每个人都需要所有这些东西。如果你'再做一个固定的设计,只能以一种方式实现,然后您可能也可以使用传统工具。它's喜欢向他们的人解释一个完全快乐的写作arm汇编语言的人,为什么他们可能想要使用c(所以他们的代码在x86和powerpc和risc-v上工作)或者为什么他们可能想要使用c ++模板,或者为什么他们可能希望在Perl或Lisp或Liskell中编写一个程序,为它们生成一些C ++代码。
« 上次编辑:2019年1月12日,凌晨12:23:20 AM by Brucehoult »
 
以下用户感谢此帖子: jklasdf., ve7xen, vsmirnov.

离线 遗产

  • 超级贡献者
  • ***
  • !
  • 帖子:4415
  • 国家: CH.
Re: Chisel/Scala 硬件描述语言: why?
« 回复#51开启: 2019年1月12日,上午12:26:48»
如果你不留下线程'T有任何有助于贡献的东西。

你 are irritating people in this topic (yer, I got two PMs telling me how irritating you are), so I wanted to do some 幽默,这是基于像我这样的人真正考虑一个新工具的人:我们在日常工具上度过了我们的免费时间,现在我们想听到我们为什么要在另一个工具中投入时间。
 

离线 阿塔拉多夫

  • 超级贡献者
  • ***
  • 帖子:7255
  • 国家: 我们
    • 个人网站
Re: Chisel/Scala 硬件描述语言: why?
« 回复#52开启: 2019年1月12日,上午12:36:27»
引用:遗产
你在这种行为中的无聊和愚蠢  :palm:
即使有人开玩笑  :palm: :palm:
停止做这个愚蠢的帖子并删除它。你不是在开玩笑,你是拖钓。
亚历克斯
 

离线 遗产

  • 超级贡献者
  • ***
  • !
  • 帖子:4415
  • 国家: CH.
Re: Chisel/Scala 硬件描述语言: why?
« 回复#53开启: 2019年1月12日,晚上12:40:54»
停止做这个愚蠢的帖子并删除它。你不是在开玩笑,你是拖钓。

好的,享受我的忽略列表。
 

离线 遗产

  • 超级贡献者
  • ***
  • !
  • 帖子:4415
  • 国家: CH.
Re: Chisel/Scala 硬件描述语言: why?
« 回复#54开启: 2019年1月12日,上午12:41:34»
@brucehoult.
好的,假设我使用凿子/比例,我得到...自动生成的VHDL文件。这对我的ModelIM和其他HDL模拟器有益,我通常需要使用。但是,现在假设我在模特的波浪视图中得到了一个问题:在凿子/ scala来源上恢复问题是多么困难?

这让我有点困惑(可能需要尝试自己)

P.S.
LLVM在x86上运行良好。在mips上......它's full of problems.
 

在线的 布鲁尔特

  • 超级贡献者
  • ***
  • 帖子:1973年
  • 国家: NZ.
  • 以前是Sifive,三星r&D
Re: Chisel/Scala 硬件描述语言: why?
« 回复#55 on: 2019年1月12日,12:41:41»
也许这是有用的:
或这个:
 

离线 obiwanjacobi.

  • 频繁的贡献者
  • **
  • 帖子:985
  • 国家: NL.
  • 什么'这个yippee-yayoh pin你谈到了!?
    • Marctronix博客
Re: Chisel/Scala 硬件描述语言: why?
« 回复#56开启: 2019年1月15日,07:01:26»
看着第一个,完美无缺。
感谢布鲁斯。
Arduino模板库 | 齐齐尔Z80计算机
错误的代码不应该编译!
 

离线 或者chguy.

  • 超级贡献者
  • ***
  • 帖子:2243
  • 国家: 加利福尼亚州
Re: Chisel/Scala 硬件描述语言: why?
« 回复#57开启: 2019年1月15日,02:16:33 PM»
看着第一个,完美无缺。

我也看了它。看起来很有意思。演示文稿完全专注于SoC - 基本上他介绍了一个迅速构建SoC的工具包。一世'从来没有与ASIC一起工作,所以它'很难我理解为什么很难将UART添加到设计中。我经常使用UART进行测试,并将测试UART模块添加到FPGA设计只需要一分钟(合成/实现时间不包括)。 HDL块非常容易放在FPGA上。 Xilinx甚至有一个图形方法,您只需实例化IP模块并使用鼠标绘制连接。你可以建立一个"SoC"以这种方式在几小时内没有写任何代码。不是每个人都使用这种方法,但很多人。最终,FPGA工具分析逻辑,分析内容'S内部FPGA(LUT,DSP,RAM,FIFO等)并相应地映射设计。如果使用凿子编译到Verilog,然后通过FPGA工具合成Verilog,则无论如何,FPGA工具将为您提供此操作。除非你专门针对某些元素,否则我不'T看到任何原因在外部执行此操作。该工具还将在总线上自动删除额外电线,工具将删除它们。 Asics肯定是非常不同的,我不'T关于ASIC工具知之甚少,但我希望合成工具至少具有与FPGA工具相同的智力水平,至少判断价格。

第二个很难看 - 我可以'真的看看幻灯片上什么,所以我只能听。它没有'似乎扬声器期望Firttl优化来改善设计。相反,他介绍了一个方法来找到错误的FIRRTL,如果你做一些愚蠢的事情可能会导致。他的解决方案是回去重写。这与典型的设计流程与FPGA定时工具类似 - 如果您编写愚蠢的话,您的设计将失败时间,该工具将向您展示失败的关键路径,然后您将重写并重新编写。
 

离线 Bassman59.

  • 超级贡献者
  • ***
  • 帖子:1626
  • 国家: 我们
  • 是的,我这样做是为了生活
Re: Chisel/Scala 硬件描述语言: why?
« 回复#58开启: 2019年1月15日,04:01:14 PM»
我也看了它。看起来很有意思。演示文稿完全专注于SoC - 基本上他介绍了一个迅速构建SoC的工具包。

对于那些不是基于SoC的设计 - 我猜测的是大多数 - 这种方法没有提供真正的益处。

引用
I'从来没有与ASIC一起工作,所以它'很难我理解为什么很难将UART添加到设计中。

添加硬件不是。

引用
我经常使用UART进行测试,并将测试UART模块添加到FPGA设计只需要一分钟(合成/实现时间不包括)。 HDL块非常容易放在FPGA上。 Xilinx甚至有一个图形方法,您只需实例化IP模块并使用鼠标绘制连接。你可以建立一个"SoC"以这种方式在几小时内没有写任何代码。不是每个人都使用这种方法,但很多人。

是什么让vivado'S Soc工具(和它之前的EDK,和Altera's版,和微笑'S版本)对SoC设计有效的是,当您在硬件中实例化IP内核时,还会获得固件设备驱动程序。您可以获得核心位置的基地地址's寄存器生活在处理器中'S Memory Map,您可以使用一些方便的功能来使用它。如果您更改连接或添加功能,则在场景后面,工具将保持一切顺限。

我不'看到任何骗子的东西都是这种情况,虽然有些聪明的人可能已经解决了这一点。
 

在线的 布鲁尔特

  • 超级贡献者
  • ***
  • 帖子:1973年
  • 国家: NZ.
  • 以前是Sifive,三星r&D
Re: Chisel/Scala 硬件描述语言: why?
« 回复#59开启: 2019年1月15日,08:09:19 PM»
第二个很难看 - 我可以'真的看看幻灯片上什么,所以我只能听。它没有'似乎扬声器期望Firttl优化来改善设计。相反,他介绍了一个方法来找到错误的FIRRTL,如果你做一些愚蠢的事情可能会导致。他的解决方案是回去重写。这与典型的设计流程与FPGA定时工具类似 - 如果您编写愚蠢的话,您的设计将失败时间,该工具将向您展示失败的关键路径,然后您将重写并重新编写。

不同之处在于,使用他的FIRRTL分析工具,他发现设计在几秒钟内不好,而不是在FPGA合成中等待几个小时。
 

离线 或者chguy.

  • 超级贡献者
  • ***
  • 帖子:2243
  • 国家: 加利福尼亚州
Re: Chisel/Scala 硬件描述语言: why?
« 回复#60开启: 2019年1月15日,09:08:05 PM»
不同之处在于,使用他的FIRRTL分析工具,他发现设计在几秒钟内不好,而不是在FPGA合成中等待几个小时。

真的。 FPGA合成/实现软件非常效率。
 

离线 Bassman59.

  • 超级贡献者
  • ***
  • 帖子:1626
  • 国家: 我们
  • 是的,我这样做是为了生活
Re: Chisel/Scala 硬件描述语言: why?
« 回复#61开启: 2019年1月16日,06:01:01 AM»
第二个很难看 - 我可以'真的看看幻灯片上什么,所以我只能听。它没有'似乎扬声器期望Firttl优化来改善设计。相反,他介绍了一个方法来找到错误的FIRRTL,如果你做一些愚蠢的事情可能会导致。他的解决方案是回去重写。这与典型的设计流程与FPGA定时工具类似 - 如果您编写愚蠢的话,您的设计将失败时间,该工具将向您展示失败的关键路径,然后您将重写并重新编写。

不同之处在于,使用他的FIRRTL分析工具,他发现设计在几秒钟内不好,而不是在FPGA合成中等待几个小时。
[/引用

By "design is bad,"你的意思是逻辑是不正确的,这就是我们有测试台和验证的原因,或者't meet timing?
 

离线 vsmirnov.

  • 贡献者
  • 帖子:14
  • 国家: 我们
Re: Chisel/Scala 硬件描述语言: why?
« 回复#62开启: 2020年12月14日,06:28:47»
只是我的2C关于凿子/ SPINALHDL VS VERILOG / VHDL作为软件工程师的讨论,探索硬件加速器的设计空间。免责声明:因为我'M不是硬件工程师,我对此主题的看法是软件偏见的。

凿子的问题(我'M目前在玩)是输出是Verilog,所有重要的工具都与此输出工作,而不是原始输入。 (或)从* .v返回* .cala来源的情况下没有明确的方式。此源映射(所有高级编程语言存在)在凿子而不是一个人可能想象的情况下不是那么简单的事情。因为Chisel HDL不是C或Java等经典编程语言。它'S一种元图 - 重度语言,源是成分(一个程序生成另一个程序的程序),所以普通源映射不会'在这里工作。 Afaik,凿子模拟在作品中,还有 CIRCT. Chris Lattner项目,旨在重复FiRTL(凿子)背后的想法'在更系统的地面上的中间代表。但目前,据我所知,自动流量大多是单向的:从Scala源到Verilog。如果在Verilog侧出现问题,则反向映射可能很棘手。

凿子可能会在必要地/不可避免的情况下闪耀。因为Scala专门设计为"中/大的Metaprogramming"。例如,如果您需要非常特定的CPU核心,则SV可能是进入的方式。但如果您需要能够快速实现某些子空间 设计空间 对于一类CPU核心,必须是必要的元图。并且通常这种成分数目远远超过"模板实例化"。 C ++具有图灵完整的模板元标记(TMP),我可以使用高级规格生成相当复杂的算法和数据结构,但写作和维护模板元图是真正的疼痛。这件事是不可扩展的。 TMP没有't scale at all. It's that simple.

如果人们认为使用Perl / Pythog生成Verilog是解决方案,而不是我有坏消息。这一点'T刻度(在大量编程的含义中)同样的方式C ++ TMP'缩放。当然,当所有要求事先已知(封闭世界假设)时,它可能会非常好,但它不起作用'为开放世界工作。您会发现自己为此设计一些成分语言语言。在最好的情况下,您将求助于Scala,Haskell甚至现代C ++。

这就是为什么凿子在Sifive闪耀(我'M不是无论如何与他们联系),因为它们正在销售自定义配置的CPU内核,可以使用用户提供的软件加速器(在凿子中或Verilog中)增强。我不'T知道这一useCase在硬件设计中的常见程度,但在软件工程元图中是目前是基石。它'在任何地方使用。但不是无处不在 - 明确。您可以轻松地不知道它编写一些JavaScript,Java或有时甚至C.

因此,凿子是Scala的DSL,用于编写HDL 发电机 通过捎带Scala提供的成分计算基础设施非常强大。 RISC-V +加速器是一个委员会验证的展示,可为这个以软件为中心的技术。

如果是Scala.'没有必要强大的成分曲线图(如果SV / VHDL提供的参数化足够),那么凿子将是Verilog的不可接受的开销。

少量添加。上面有人认为,在Verilog中为FPGA设计添加一些模块可能与键入这句话一样简单。那'真的。但凿子中的成分臂远远超出了简单的构图。作为其他人也提到,凿子有外交。我们可以将其视为特定于应用的类型 约束求解器 允许不同的模块在整个设计中同意各种自由参数的值。没有约束解决,这是大型设计的痛苦手动工作。
« 上次编辑:2020年12月14日,06:43:36 vsmirnov »
 
以下用户感谢此帖子: 埃德瓦德, Emece67., Ditbho.

在线的 布鲁尔特

  • 超级贡献者
  • ***
  • 帖子:1973年
  • 国家: NZ.
  • 以前是Sifive,三星r&D
Re: Chisel/Scala 硬件描述语言: why?
« 回复#63开启: 2020年12月14日,08:25:30»
似乎是一个公平的摘要。

使元编程更令人调试的东西是如果有能力保存和查看元编程的结果,请在转换为远远差异和无法识别的原始来源之前。

喜欢"gcc -E".

与c ++的一个伟大的痛苦是它'T有这种模板的设施。
 
以下用户感谢此帖子: Ditbho.

离线 Ditbho.

  • 频繁的贡献者
  • **
  • 帖子:303
  • 国家: GB.
Re: Chisel/Scala 硬件描述语言: why?
« 回复#64开: 2020年12月14日,下午12:28:26»
喜欢"gcc -E".

"-E"告诉gcc在预处理阶段停止,您得到的输出是CC1编译器实际在扩展所有宏后的内容。我已经使用了几次更好地了解*哪个* #if #else块在实际使用中。

诀窍!漂亮的例子 :D
« 上次编辑:2020年12月15日,09:04:37 AM由Ditbho »
 

离线 siliconwizard.

  • 超级贡献者
  • ***
  • 帖子:5962
  • 国家: FR.
Re: Chisel/Scala 硬件描述语言: why?
« 回复#65开启: 2020年12月14日,06:29:42 PM»
这是一个非琐碎的问题,但是那些"code generators"非常受欢迎,一般来说,在学术界。大学研究人员有点痴迷于一般的代码发电机。一世 '看到了很多。行业奥特洛,通常是谨慎的。有时它们旨在允许某种级别的正式验证,有时允许更多抽象或两者的组合。

尽管一般的一些工具和凿子尤其是有趣的,但警惕的原因之一是长期支持,或者任何支持。例如,当你时,为凿子安顿下来'重新成为一个工业公司,是一个艰难的选择。你赢了'知道是否或当它基本上是一个被遗弃的项目。你'LL还有一个艰难的时间发现能够正确使用它的工程师 - 或者学习/训练阶段可能很长。另一个点是鲁棒性。代码生成器是如何核实的?它'常常难以将代码生成器与行业成熟的工具进行比较。然后是,生成的代码通常很难理解,因此这可能变得难以实现低级模拟或其他任务。

至于可配置性,坦率地,写得良好的VHDL或SystemVerilog都允许在没有太多问题的情况下编写可配置的设计。一些额外的功能可以让它变得更加容易,但这绝对是可行的。

Sifive是由Berkely研究人员创立的,他们与凿子合作 - 有点旋转,所以原因是它'使用的是显而易见的,而不仅仅是与凿子的固有优点有关,或者至少有它'循环理由。

正如vsmirnov所指出的那样,凿子肯定是特定的好处,但上面说,我至少在工业环境中没有使用它。虽然只是mho。
 

在线的 布鲁尔特

  • 超级贡献者
  • ***
  • 帖子:1973年
  • 国家: NZ.
  • 以前是Sifive,三星r&D
Re: Chisel/Scala 硬件描述语言: why?
« 回复#66开启: 2020年12月14日,09:39:30 PM»
尽管一般的一些工具和凿子尤其是有趣的,但警惕的原因之一是长期支持,或者任何支持。例如,当你时,为凿子安顿下来'重新成为一个工业公司,是一个艰难的选择。你赢了'知道是否或当它基本上是一个被遗弃的项目。

废弃的开源项目的后果与废弃商业产品的后果完全不同。如果它是你想要的工作,它会继续这样做,没有人能告诉你你'不允许继续使用它。您还拥有适应后来的操作系统版本,或生成不同的Verilog或修复错误的所有内容。好吧 - 除了技能之外的一切必要,也许,但你可能会找到一个人来合同。

引用
你'LL还有一个艰难的时间发现能够正确使用它的工程师 - 或者学习/训练阶段可能很长。另一个点是鲁棒性。代码生成器是如何核实的?

我发现这么担心通常超越。每个大型和/或旧公司都有同样的严重和复杂的东西,在内部开发,但通常记录得多,*绝对*不可能雇用已经了解它们的人,并曾经写过他们的人继续前进'在更糟糕的位置。
 
以下用户感谢此帖子: Ditbho., vsmirnov.

离线 TGZZZ.

  • 超级贡献者
  • ***
  • 帖子:13131
  • 国家: GB.
    • 玩得开心更多,更少
Re: Chisel/Scala 硬件描述语言: why?
« 回复#67开: 2020年12月14日,09:52:01 PM»
软件工程师始终想要发明语言和/或实现编译器。
硬件工程师总是想发明微处理器。

由于生产周围工具套件所需的努力,这两者都被误导, 而招聘/培训好人使用利基工具。

对于那些相同的原因,另一个软件妄想是在标准语言中的特定于域特定库是完全充分的并且没有缺点时的域特定语言。

但是,在大学的时候,我记得一位面试官给出了一位面试官,说明我对写帕斯卡编译器零兴趣,另一个采访者注意到我有一个首选的微处理器,最重要的决策因素是使您的工具用它。
有谎言,该死的谎言,统计数据和ADC / DAC规范。
滑翔机飞行员's aphorism: "跨度没有替代品". Retort: "有一个替代品:技能+想象力。但是你可以 span".
正玩得开心 做更多,少
 
以下用户感谢此帖子: Ditbho.

离线 vsmirnov.

  • 贡献者
  • 帖子:14
  • 国家: 我们
Re: Chisel/Scala 硬件描述语言: why?
« 回复#68开启: 2020年12月15日,01:00:38»
我看到这种成分编程论点有点令人困惑,所以让我用凿子分享我的故事。

我有一个长期的个人 项目 在高级数据结构的区域。它'主要是一个个人研究和乐趣的源泉,但我有一些非琐碎的生产经验。这个想法有点类似于凿子/ rocetetchip,而不是产生硬件,而不是发电'm生成特定于应用程序 数据存储和处理引擎 基于高级要求。实施非常不同,Memoria正在使用C ++ TMP,因为它的成分曲线核心甚至没有凿子差不多's one.

由于高CPU成本,高级数据结构被认为是不切实际的。数据通常以某种压缩格式存储在内存中,因此每个访问操作可能在其时间复杂度的O-估计中具有非常大的隐藏常数。 OOO有很多帮助,但并不是't真正的区别。然而,潜力是巨大而非常吸引人的。例如,我们可以使用压缩的多维空间树(每个节点的空间复杂度)来编码功能逼近并使用它而不是多层的感知(模数维度的诅咒)。感知物具有线性复杂性,形成隐藏层中的参数的数量,但空间树具有对数复杂性。功率受限用例的巨大差异。

计算密集型应用程序需要特殊的硬件,从另一侧,必须具有软件驱动的设计。或者 软件硬件共同设计,如果我不'误用了这个术语。我试图跳入HDL区域以开发Memoria的应用程序加速器,但实际上HDL是另一个全职+作业。和我'm已经有两个(常规工作和个人项目)。无论如何,没有与HBM内存的FPGA,以及我的所有这样的事情'M与内存界限交谈。但最近我可以用8GM HBM购买Alveo U50,这是一个像我这样的爱好者的游戏更换者。另外,Arty A7-100作为一个"starter kit".

很短的故事短,我能够在几个周末在我的arty a7-100上运行的DDR3在我的ARTY A7-100上运行定制版本的RV64多核设置。零对英雄。原始自由SDK不为E310软RISC-V核提供DDR3(因为它'S MCU),我必须自己解决问题。重要的是,我在设计空间内有很多自由。我可以实施单身"fat"OOO核心,甚至是多芯SOC,或多芯(U50 + ON U50)的小型核心系统,配备了专用加速器。

后者是最重要的。给定特定的问题,我可以推断它需要的硬件加速(矩阵乘法,FP-contensic,整数,内存密集,以前的一些特定内存层级等的一些组合)和 生成 用于RVXX核心的特定加速器,以及 软件部分.

这是软件硬件共同设计的(在列表中我看到它是怎么看的)。 Chisel + Rocketchip负责硬件部分。但为了更好地了解这项技术,应该进入更大的过程的背景下,有多个发电机负责系统的不同方面。

凿子,作为独立技术,即使为自己也不令人印象深刻。 Scala对Metaprogramming很好,正如我上面所说的那样,但不幸的是它's not 够好了鉴于现代要求。 Scala.'S构建工具仍然基于好老"make"80日的范式,但现在"on steroids"。我们所需要的是基于全功能的基于数据平台,具有精确的外部自动化和集成的RESTful API,将整个构建过程与通过此API的所有中间工件一起公开到像IDE这样的外部工具,我们需要在中间的顶部需要可扩展的分析数据。与今天'S Scala您将难以在IDE中正常运行的Rocketchip。新兴语言更广告模式是正确的方式,但它'仍在婴儿期间。 C ++无处可靠近和Scala,但我'm working to 解决这种情况.

当然,凿子的整个凿子不是HDL本身,而不是Scala。它 'S利用中间代表预处理进行各种自动化任务的先进软件工程实践正在进入传统保守的硬件设计和工程。凿子只是早期的鸟类之一。更好的事情即将到来。感谢Rocketchip,我可以在几个周末在我的项目中跳动全新的地区。是的,它'是活着的好时机 :)

 

 

离线 或者chguy.

  • 超级贡献者
  • ***
  • 帖子:2243
  • 国家: 加利福尼亚州
Re: Chisel/Scala 硬件描述语言: why?
« 回复#69开: 2020年12月15日,04:31:25 AM»
但目前,据我所知,自动流量大多是单向的:从Scala源到Verilog。如果在Verilog侧出现问题,则反向映射可能很棘手。

It'很简单。如果您有HDL语言,则必须将其编译为某些内容。那里'没有汇编程序。所以Verilog它是。

可能存在一些汇编 - 等效的HDL语言,例如ISE中的XDL。但是我可以'T Envision语言创建者有足够的胆量来编写一个编译器,它将其语言编译为XDL。
 
以下用户感谢此帖子: vsmirnov.

离线 vsmirnov.

  • 贡献者
  • 帖子:14
  • 国家: 我们
Re: Chisel/Scala 硬件描述语言: why?
« 回复#70开启: 12月15日,2020年,04:46:33»
引用
但是我可以'T Envision语言创建者有足够的胆量来编写一个编译器,它将其语言编译为XDL。

手表 CIRCT项目。一世'm sure they have.

但是,据我所知,凿子的问题并不是它编制了Verilog而不是一些低级表示。但是,在该Firrtl编译器中(DID)不保留源映射元数据。因此,没有简单的方法,verilog代码的部分对应于scala代码的哪一部分。并且模拟是在Verilog中完成的,而不是Scala。更糟糕的是,编译器是(是)渴望重命名每个新编译的所有内容。那些今天抱怨的人有一只长长的胡须,所以我希望自那以来的许多问题至少已经纠正了。

与此相反,CIRCT项目基于MLIR(多层中间表示),该MLIR(多层中间表示)将源元数据保存为一个  primary goals. It'S针对性SV,但MLIR可以通过标准编译技术降低到相当任何基本的正式语言。 
« 上次编辑:2020年12月15日,05:17:50 AM by vsmirnov »
 

离线 TGZZZ.

  • 超级贡献者
  • ***
  • 帖子:13131
  • 国家: GB.
    • 玩得开心更多,更少
Re: Chisel/Scala 硬件描述语言: why?
« 回复#71: 2020年12月15日,08:42:22»
从中编译任何东西时"higher level"对A的代表"lower level"代表性,失去了信息。例子:c->asm, LISP->C, Chisel->Verilog.

唯一的方法是以元数据的形式编码含义/意义。

如果您正在下降那条路线,您需要了解磨机建筑正在做什么以及为什么。 //en.wikipedia.org/wiki/Mill_CPU_Architecture
有谎言,该死的谎言,统计数据和ADC / DAC规范。
滑翔机飞行员's aphorism: "跨度没有替代品". Retort: "有一个替代品:技能+想象力。但是你可以 span".
正玩得开心 做更多,少
 
以下用户感谢此帖子: Ditbho.

离线 ali_asadzadeh.

  • 超级贡献者
  • ***
  • 帖子:1358
  • 国家: 加利福尼亚州
Re: Chisel/Scala 硬件描述语言: why?
« 回复#72开启: 2020年12月15日,08:51:57»
需要在凿子/ scala等方面的良好教程,更多的初学者友好步骤如何做事,等等。因为我们大多数人都做了很多Verilog或VHDL,所以问题是我们如何轻松转向这种新方法,当然我想让我的生活更轻松 ^  -  ^
I'M数字专家来自8位到64位
 
以下用户感谢此帖子: Ditbho., vsmirnov.

离线 Ditbho.

  • 频繁的贡献者
  • **
  • 帖子:303
  • 国家: GB.
Re: Chisel/Scala 硬件描述语言: why?
« 回复#73开: 2020年12月15日,09:26:48»
It'很简单。如果您有HDL语言,则必须将其编译为某些内容。那里'没有汇编程序。所以Verilog它是。

HDL代表"硬件描述语言", it'在RTL顶部的一个级别,它就不了't实际编译,它将信息提供给RTL级别。

RTL代表寄存器传输级别,它需要RTL模型,它直接编译到Gatelevel,需要物理实现细节。

然后由合成器使用gatelevel来构建比特流(需要更多的物理实现细节),然后将比特流加载到CPLD / FPGA中'S配置芯片,通常是静态RAM或闪光灯。

It'S合成器不支持,但技术上HDL也可以描述模拟物品,让您的"hardware description"与pspice兼容。
 
凿子/ scala是"one level above" HDL.

希望这种模式是正确的,如果是这样的话'是整个新工具链的层次结构:

凿子/ scala - > HDL -> RTL -> GL ->比特流或其他什么
« 上次编辑:2020年12月15日,09:51:11 AM由Ditbho »
 

离线 或者chguy.

  • 超级贡献者
  • ***
  • 帖子:2243
  • 国家: 加利福尼亚州
Re: Chisel/Scala 硬件描述语言: why?
« 回复#74开: 2020年12月15日,04:22:35 PM»
因此,没有简单的方法,verilog代码的部分对应于scala代码的哪一部分。并且模拟是在Verilog中完成的,而不是Scala。

当然,应该可以创建一个直接模拟Scala的工具。

Verilog不是一个低级演示文稿(汇编程序是c)。只是另一个HDL。您可以在FPGA上综合并实现它,或者您可以将其用于ASICS。你不能用scala做到这一点。如果供应商支持Scala,你会'T需要Verilog。在那之前,你必须遭受任何不便的人。
 
以下用户感谢此帖子: vsmirnov.


分享我

掘客  Facebook  诽谤  可口的  Technorati.  推特  谷歌  雅虎
SMF.