scala 一个关于某个值只读的难题

bihw5rsg  于 12个月前  发布在  Scala
关注(0)|答案(1)|浏览(163)

我在编译过程中没有得到任何错误,但是当我尝试运行代码时,它失败了。我不确定为什么会发生这个错误。以前,当我编写RCA时,(代码在下面),我遇到了类似的问题,但改变编码风格解决了它。我是Chisel的初学者,我怀疑它可能与变量有关,但是在官方文档中找不到详细的解释,我在别人的代码中也找过类似的问题,但是还是看不懂,不知道为什么会这样,请问有没有人可以解释一下?


的数据
下面是代码

class ManchesterAdder(n: Int) extends Module {
  val io = IO(new Bundle {
    val a = Input(UInt(n.W))
    val b = Input(UInt(n.W))
    val cin = Input(UInt(1.W))
    val sum = Output(UInt(n.W))
    val cout = Output(UInt(1.W))
  })

  var chain = Module(new Manchestercarrychain(n))
  chain.io.cin := io.cin

  for (i <- s until < n) {
    chain.io.cin(i) := io.a(i) ^ io.b(i)
  }

  val sumReg = RegInit(o.U(n.W))
  val coutReg = RegInit(o.U(1.W))
  sumReg := chain.io.g(n - 1) ^ chain.io.p(n - 1)
  coutReg := chain.io.cout

  io.sum := sumReg
  io.cout := coutReg
}

字符串
这里是错误

[48/48] temp.run
Exception in thread "main" chisel3.packageschiselException: Cannot reassign to read-only ManchesterAdder.?: OpResultIBoc
at ... (
at adder.ManchesterAdder.SanonfunSnew$10(Manchester_Adder.scala:39.
at scala.collection.immutable.Range.foreach$mVcSsp(Range.scala:190
at adder.ManchesterAdder.<init>(Manchester-Adder.scala:38
at adder.generates.SanonfunSnew$10(generate .scala: 20)
at ... ()
... (stack trace trimmed to user code only. Rerun with .-full-stacktrace to see the full stack trace)
at
1 targets failed
temp.run subprocess failed

vmpqdwk3

vmpqdwk31#

由于行数不匹配,很难准确地看到堆栈跟踪中显示的错误。
但这句话似乎是错的:

val sumReg = RegInit(o.U(n.W))
  val coutReg = RegInit(o.U(1.W))

字符串
变量o似乎没有在源代码中声明。
不应该是0吗?

val sumReg = RegInit(0.U(n.W))
  val coutReg = RegInit(0.U(1.W))

相关问题