【发布时间】:2019-11-15 22:27:56
【问题描述】:
为了测试 Chisel 代码,我在我的项目目录中启动了一个控制台 sbt,然后是 scala,文件 build.sbt 所在的位置。我可以导入 chisel3 库:
$ cd myproject
$ sbt
sbt:myproject> console
scala> import chisel3._
import chisel3._
然后我可以测试一些数据类型的凿子代码,例如:
scala> val plop = "b01010101".U(20.W)
plop: chisel3.UInt = UInt<20>(85)
但我可以测试 Reg() 或其他 Module() 元素:
scala> val plopReg = RegInit(23.U(24.W))
java.lang.IllegalArgumentException: requirement failed: must be inside Builder context
at scala.Predef$.require(Predef.scala:281)
at chisel3.internal.Builder$.dynamicContext(Builder.scala:232)
at chisel3.internal.Builder$.currentClock(Builder.scala:308)
at chisel3.internal.Builder$.forcedClock(Builder.scala:318)
at chisel3.RegInit$.apply(Reg.scala:155)
at chisel3.RegInit$.apply(Reg.scala:173)
... 36 elided
是否有在控制台中测试这些凿子元素的提示?还是强制写文件代码源?
【问题讨论】:
-
您可以在控制台中使用它们,但您需要在
Module上下文中实例化所有硬件类型(Reg、Wire等)。在github.com/freechipsproject/chisel-bootcamp 中使用ammonite兼容的shell (almond+jupyter) 完成了类似的事情。