如何设置emitVerilog的生成目录?

how to set generated directory of emitVerilog?

我刚开始使用凿子模板。

我根据 在 DecoupledGCD.scala 中添加了以下语句。

object DecoupledGcdDriver extends App {
    (new ChiselStage)emitVerilog(new DecoupledGcd(16))
}

当我运行

sbt run

verilog 文件本身是在当前目录中生成的。

不过要么我运行

sbt "runMain gcd.DecoupledGcdDriver --help"

sbt "runMain gcd.DecoupledGcdDriver --target-dir <my dir>"

没有任何改变。

我的 build.sbt 来自最新模板:

ThisBuild / scalaVersion     := "2.12.13"
ThisBuild / version          := "0.1.0"
ThisBuild / organization     := "com.github.riggy2013"

lazy val root = (project in file("."))
  .settings(
    name := "chisel-gcd",
    libraryDependencies ++= Seq(
      "edu.berkeley.cs" %% "chisel3" % "3.4.3",
      "edu.berkeley.cs" %% "chiseltest" % "0.3.3" % "test"

我没有足够的“声望”,所以在这里开始一个新线程。

将参数设置为对 ChiselStage 的调用。下面是一个例子。这会将 Verilog 和 FIRRTL 放在输出目录中。如果不存在,将创建输出目录。

object MyAsyncResetModuleGen extends App {  
  val myverilog = (new ChiselStage).emitVerilog(
    new MyAsyncResetModule,
     
    //args
    Array("--target-dir", "output/")
  )
}

扩展 App 只是编写带有参数 args: Array[String]main 函数的语法糖。如果您希望参数传播到 ChiseStage,您需要传播它们:

object DecoupledGcdDriver extends App {
    (new ChiselStage)emitVerilog(new DecoupledGcd(16), args)
}

您可以看到 ChiselStage.emitVerilogChisel API Docs 中接受 args