ChiselException: Cannot reassign to read-only

val shiftOut = RegInit(VecInit.fill(WINOGRAD_N, WINOGRAD_N)(0.U((ACC_W - 1).W)))  

for (i <- 0 until WINOGRAD_N) {
    for (j <- 0 until WINOGRAD_N) {
   
      // val bools = VecInit(shiftOut(i)(j).asBools)

      // for (k <- SHIFT_W until ACC_W - 1){
      //   bools(k) := (shiftOut(i)(j)(SHIFT_W - 1)).asBool
      // }

      // shiftOut(i)(j) := bools.asUInt
      shiftOut(i)(j)(ACC_W - 2, SHIFT_W) := Fill(ACC_W - 2 - SHIFT_W + 1, (shiftOut(i)(j)(SHIFT_W - 1)).asUInt)
      accIn(i)(j) := Mux((convertCntDelay(0)(3) === 0.U) & (convertCntDelay(1)(3) === 0.U), 0.S, accOut(i)(j))
      accValid(i)(j) := (((i.asUInt === 0.U) || (i.asUInt === (WINOGRAD_N - 1).U)) || (convertEnDelay(3)(1).asBool && (((j.asUInt === 0.U) || (j.asUInt === (WINOGRAD_N - 1).asUInt)) || convertEnDelay(3)(0).asBool)))

      val signedAddsubBypassAcc = Module(new SignedAddSubBypass(8, 1))
      signedAddsubBypassAcc.io.CLK := io.clk
      signedAddsubBypassAcc.io.CE := shiftOutValid
      signedAddsubBypassAcc.io.A := accIn(i)(j)
      signedAddsubBypassAcc.io.B := shiftOutMid(i)(j).asSInt
      // signedAddsubBypassAcc.io.B := shiftOut(i)(j)
      signedAddsubBypassAcc.io.B_ZERO := ~ accValid(i)(j)
      accOut(i)(j) := signedAddsubBypassAcc.io.C
    }
  }

Fix:

chisel 不支持part-select赋值

源码注释里就是fix

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值