首页 > 解决方案 > 如何使用 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())))
}

标签: chisel

解决方案


使用-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


推荐阅读