如何使用 ChiselStage 将模块拆分为单独的文件?

How do you split modules into individual files using ChiselStage?

我想将模块拆分成文件,就像以前的 --split-modules 标志一样。将这个标志传递给 ChiselStage 会抛出一个错误,表明它已被弃用,但是我找不到任何关于 ChiselStage 支持的参数的文档。

我正在执行 ChiselStage 如下:

object GenerateAsaSec extends App {
  val chiselStage = new ChiselStage
  chiselStage.execute(Array("-X", "verilog", "--split-modules", "--target-dir", "genrtl"), Seq(ChiselGeneratorAnnotation(() => new MyModule())))
}

-e--emit-modules 与您要发出的特定形式一起使用(chirrtlhighmiddlelowverilogmverilogsverilog)请求特定发射器为 运行 并拆分所有模块(或 -E/--emit-circuit在一个文件中发射电路的发射器)。

下面应该做你想做的:

chiselStage.execute(
  Array(
    "-X", "verilog", 
    "-e", "verilog", 
    "--target-dir", "genrtl"), 
  Seq(ChiselGeneratorAnnotation(() => new MyModule()))
)

切线地,那里的错误消息比我想象的还要糟糕。它应该提到一些关于 -e 的事情。抱歉造成混淆!

有趣的是,它被删除的原因是处理像 --split-modules 这样的全局选项很棘手。发射器只是变换。当用户可能想要由 运行 混合转换生成的混合文件输出时,拥有一个影响所有下游转换的全局选项变得很奇怪。例如,当前版本允许发出一个高级电路(-E high)和每个文件一个模块的 Verilog(-e verilog)作为对 ChiselStage.[= 的相同调用的参数。 27=]