scala - 有什么方法可以使用凿子从 verilog 文本内容生成黑盒吗? (在scala中根据文本内容定义val)

标签 scala chisel

我正在与一个也使用 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/

相关文章:

scala - 是否有一种 Python-ealy 方式来运行具有依赖项的 Scala 脚本?

scala - 无法在 java/scala 中使用 SimpleDateFormat 解析日期

chisel - 如何在 Chisel3 中将 UInt 转换为 SInt 值?

scala - Chisel 既不为 verilog 也不为 C++ 合成

java - 集成 Atmosphere(版本 1.0.13)所需的 java/scala 配置是什么?

Scala 的 Java 监听器接口(interface)

Scala 支持向量机库

cpu-architecture - MemReq 和 MemResp 在 RoccIO 中如何工作 - RISCV

scala - 凿子移位寄存器示例

凿子同步