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