This succeeds in the banking analyzer with only one duplicate, but it shouldn't! It is broadcasting incorrectly
@spatial class HowCanYouBank extends SpatialTest {
override def compileArgs: Args = super.compileArgs and "--noBroadcast"
def main(args: Array[String]): Unit = {
type T = Int
val N = ArgIn[Int]
val np = 2
val ep = 4
val func: Idx => Int = {x => mux(random[Bit], 5.to[T], 10.to[T])}
setArg(N, 888)
Accel {
val mem = SRAM[T](32,ep)
Foreach(N by 1 par 1) { i =>
Foreach(ep by 1 par 1) { j =>
mem(i,j) = j
}
}
Foreach(N by 1 par np) { i =>
val a = func(i)
val b = func(i)
val slice = i % np
Foreach(a by b par ep) { j =>
val c = func(j)
println(r"${mem(c,j)}")
}
}
}
assert(true)
}
}
This succeeds in the banking analyzer with only one duplicate, but it shouldn't! It is broadcasting incorrectly