我们正在尝试在Chisel 2中使用Chisel BlackBox构造。除非我们尝试测试行为,否则一切正常。
Chisel2中Blackboxing的问题是使用C后端进行模拟。
在Chisel3中,我们可以将Chisel指向Verilog源,它有Verilator生成C ++代码并自动集成。在Chisel2中,它没有使用Verilator。相反,它直接从Chisel代码生成C ++。所以Chisel 2并没有为BlackBox中的Verilog生成C ++行为。
我们尝试的是手动使用Verilator从Verilog代码生成C ++。但我们还没有弄清楚如何将C ++与Chisel 2生成的C ++集成在一起。问题是每次我们调用sbt时它都会重新生成c ++代码,因此所有手动修改都会丢失。
我们还研究了将c ++代码移植到Scala中,但看起来我们必须通过JNI(Java Native Interface)移植我们的verilog RTL的c ++模型才能运行模拟。
有没有人有可行的解决方案将Chisel 2生成的C ++代码与Chisel Black Box内部的verilog生成的C ++代码集成?