【发布时间】:2018-04-17 03:16:05
【问题描述】:
引用自 libcores wiki
一个后处理器生成一个针对 FPGA 执行进行调整的 Verilog。第二个生成针对 ASIC 调整的 Verilog。
这是真的吗?如何指定使用哪个后处理器?
我注意到我们可以向chisel发送一个选项'-X xxx',其中'xxx'可以是high,middle,low,verilog......这有关系吗?这些“编译器”的确切含义是什么?
谢谢!
【问题讨论】:
标签: chisel
引用自 libcores wiki
一个后处理器生成一个针对 FPGA 执行进行调整的 Verilog。第二个生成针对 ASIC 调整的 Verilog。
这是真的吗?如何指定使用哪个后处理器?
我注意到我们可以向chisel发送一个选项'-X xxx',其中'xxx'可以是high,middle,low,verilog......这有关系吗?这些“编译器”的确切含义是什么?
谢谢!
【问题讨论】:
标签: chisel
我对 librecores 流程并不完全熟悉,但看了一眼https://github.com/librecores/riscv-sodor,我没有看到任何后处理脚本。可能值得在 repo 上提出问题以要求澄清这一点。
对于一般的 Chisel 设计,人们使用 IR 上的转换来专门针对 FPGA 与 ASIC 的代码。最常见的是处理内存结构。默认情况下发出的行为记忆适用于 FPGA,因为它们被正确推断为 BRAM。对于 ASIC,有一个标准转换可以用黑盒接口替换存储器,这样用户就可以提供使用来自其给定实现技术的 SRAM 宏的实现。
【讨论】:
非常狭窄地解决了您的后一个问题,-X/--compiler 命令行参数决定了使用哪个 FIRRTL 编译器和发射器。
Chisel3 编译器生成 CHIRRTL(FIRRTL 中间表示的高级形式)。 FIRRTL 中间表示 (IR),在 UC Berkeley Technical Report 中有更详细的描述,是一种用于描述电路的简单语言。
FIRRTL 编译器从广义上讲是将 FIRRTL IR 中表示的电路从高级表示(在规范中描述)移动到中级表示,最后到低级表示将很容易映射到 Verilog。 FIRRTL 编译器可以选择在高 FIRRTL、中 FIRRTL 或低 FIRRTL 处提前停止,或者一直到 Verilog。 -X/--compiler 参数告诉它您是否想提前退出并且只针对这些表示之一。
注意:CHIRRTL 最终将被移除,而高 FIRRTL 将由 Chisel 编译器直接发出。
【讨论】: