我正在与一个也使用 verilog 的团队合作。 我觉得使用 chisel power 来管理模块之间的互连比裸 verilog 快得多。 从chisel教程可以看出,blackbox wrapper是手工写的,io信号是手工定义的。
是否可以从 verilog 中提取 io 信息并自动定义 chisel blackbox io? (又名,从 verilog 生成黑盒,而不是由某些人通过阅读 verilog 来定义黑盒类。)
例如:
val bbox = blackbox("someModule.v")
然后,bbox 将成为一个功能齐全的黑盒,并定义了所有 ios 和名称。
由于 io 信号在 scala 中是 val
,我想知道是否有实现此目标的元方法。
最佳答案
是的,有!查看 HasBlackBoxInline
:
https://www.chisel-lang.org/chisel3/blackboxes.html#blackboxes-with-in-line-verilog
class BlackBoxRealAdd extends BlackBox with HasBlackBoxInline {
val io = IO(new Bundle() {
val in1 = Input(UInt(64.W))
val in2 = Input(UInt(64.W))
val out = Output(UInt(64.W))
})
setInline("BlackBoxRealAdd.v",
s"""
|module BlackBoxRealAdd(
| input [15:0] in1,
| input [15:0] in2,
| output [15:0] out
|);
|always @* begin
| out <= $realtobits($bitstoreal(in1) + $bitstoreal(in2));
|end
|endmodule
""".stripMargin)
}
默认情况下,此 BlackBox 将以其给定名称发送到输出目录。
关于scala - 有什么方法可以使用凿子从 verilog 文本内容生成黑盒吗? (在scala中根据文本内容定义val),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60955784/