chisel3中的顶级命名

时间:2017-05-23 15:22:17

标签: scala chisel

class generator(options: Map[String, Any]) {
  trait for_module extends abstractModule {
    //generates trait with params
  }
  class my_module extends abstractModule with for_module
  def exec = {
    ...
    Driver.execute(Array("-tn", "SomeName", "-td", "SomePath"), () => new my_module)
    ...

  }
}
object generator {
  def main(args: Array[String]) = {
    ...
    val a = generator(someopts)
    a.exec
  }
}

在此代码标志中-tn应更改顶级电路的名称,但它只更改顶级文件名。顶级模块名称如" module generatormy_module",但我想从params动态生成名称。

是dat bug吗?或者我如何更改顶级模块名称?

PS:suggestName方法也不起作用!

1 个答案:

答案 0 :(得分:0)

标志-tn并非用于更改顶级电路,仅用于指定它并将其用作文件名中的默认值。指定Chisel模块名称的方法是覆盖desiredName方法。您可以使用Module构造函数的参数覆盖它,使其更具可编程性。修改上面的例子:

class generator(options: Map[String, Any]) {
  trait for_module extends abstractModule {
    //generates trait with params
  }
  class my_module(name: String) extends abstractModule with for_module {
    override def desiredName = name
  }
  def exec = {
    val topName = "SomeName"
    Driver.execute(Array("-tn", topName, "-td", "SomePath"), () => new my_module(topName))
    ...

  }
}
object generator {
  def main(args: Array[String]) = {
    ...
    val a = generator(someopts)
    a.exec
  }
}