Here is the code that causes java.lang.NullPointerException:
val confidence = SyncReadMem(params.numEntries, UInt(params.confidenceBitsNum.W))
val s0_valid = io.mem.valid
val s0_index = io.mem.bits.pc(params.indxBitsNum-1, 0)
val s1_confidence = RegNext(confidence.read(s0_index, s0_valid))
val s1_inc_confidence = Mux(s1_confidence + 1.U === 0.U, s1_confidence, s1_confidence + 1.U)
val s2_dec_confidence = Mux(s1_confidence === 0.U, s1_confidence, s1_confidence - 1.U)
// val s1_new_confidence = Mux(s1_tag_match && s1_stride_match, s1_confidence + 1.U, s1_confidence - 1.U)
val s1_new_confidence = Mux(s1_tag_match && s1_stride_match, s1_inc_confidence, s2_dec_confidence)
when compile I got error with:
[error] java.lang.NullPointerException
[error] ...
[error] at boom.lsu.IPStridePrefetcherBank.$anonfun$s1_new_confidence$2(IPStirdePrefetcher.scala:82)
[error] at chisel3.internal.prefix$.apply(prefix.scala:49)
[error] at boom.lsu.IPStridePrefetcherBank.$anonfun$s1_new_confidence$1(IPStirdePrefetcher.scala:82)
[error] at chisel3.internal.plugin.package$.autoNameRecursively(package.scala:52)
[error] at boom.lsu.IPStridePrefetcherBank.<init>(IPStirdePrefetcher.scala:82)
[error] at boom.lsu.PrefetchBuffer.$anonfun$banks$2(pre.....
Why does this throw?