chisel3 中的顶级命名
top level naming in chisel3
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",但我想从参数动态生成名称。
这是bug吗?或者我如何更改顶级模块名称?
PS: suggestName 方法也不行!
标志-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
}
}
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",但我想从参数动态生成名称。
这是bug吗?或者我如何更改顶级模块名称?
PS: suggestName 方法也不行!
标志-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
}
}