首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在控制台中测试chisel ()?

是否可以在控制台中测试chisel ()?
EN

Stack Overflow用户
提问于 2019-11-08 16:25:01
回答 1查看 342关注 0票数 1

为了测试Chisel代码,我在我的项目的目录中启动了一个控制台sbt,然后是scala,这里是文件build.sbt。我可以导入chisel3库:

代码语言:javascript
复制
$ cd myproject
$ sbt
sbt:myproject> console
scala> import chisel3._
import chisel3._

然后,我可以测试一些数据类型的凿子代码,例如:

代码语言:javascript
复制
scala> val plop = "b01010101".U(20.W)
plop: chisel3.UInt = UInt<20>(85)

但是我可以测试Reg()或其他Module()元素:

代码语言:javascript
复制
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

在控制台中有测试这些凿子元素的提示吗?还是必须编写文件代码源代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-15 14:27:56

这里要做的是,UInt是一种Chisel类型,而Reg是一种硬件类型。

您只能在模块内使用硬件类型。我经常做一些类似的事情,在控制台上与他们一起玩:

代码语言:javascript
复制
import chisel3._
import chisel3.stage.{ChiselStage, ChiselGeneratorAnnotation}
import chisel3.util.Cat

import firrtl.EmittedCircuitAnnotation

class Foo extends MultiIOModule {
  val in = IO(Input(Bool()))
  val out = IO(Output(Bool()))

  val tmp = RegNext(~in)

  out := tmp
}

val args = Array(
  "-X", "verilog",
  "-E", "high",
  "-E", "middle",
  "-E", "low",
  "-E", "verilog")

(new ChiselStage).execute(args, Seq(ChiselGeneratorAnnotation(() => new Foo)))

然后,您可以查看chisel3顶级目录中的各种输出。

更多信息

具体来说,UInt (以及类似的东西)是生成类的工厂方法(从技术上讲,UInt是一个扩展UIntFactory的对象)。当您执行UInt(4.W)时,这就是构建一个新的UInt。您应该能够在任何您想要的地方构造新的类,这就是为什么这在控制台上工作的原因。

但是,当您执行与全局可变状态交互的Reg(UInt(4.W))时,在精化过程中使用它将寄存器与特定模块关联起来。此全局可变状态存储在Builder中。您得到的错误来自于Builder,您尝试使用它的方法,而不首先在模块中使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58770374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档