fix multiple transfer issue in loaduop (#4442)
authorLiangfu Chen <liangfu.chen@harman.com>
Thu, 28 Nov 2019 06:45:58 +0000 (14:45 +0800)
committerThierry Moreau <moreau@uw.edu>
Thu, 28 Nov 2019 06:45:58 +0000 (22:45 -0800)
vta/hardware/chisel/src/main/scala/core/LoadUop.scala

index fcde836..3432ec6 100644 (file)
@@ -173,7 +173,7 @@ class LoadUop(debug: Boolean = false)(implicit p: Parameters) extends Module {
         }
       }
       .elsewhen(io.vme_rd.data.fire()) {
-        when(xcnt === xlen - 1.U) {
+        when((xcnt === xlen - 1.U) && (xrem === 0.U)) {
           wmask := "b_01".U.asTypeOf(wmask)
         }.otherwise {
           wmask := "b_11".U.asTypeOf(wmask)
@@ -183,7 +183,7 @@ class LoadUop(debug: Boolean = false)(implicit p: Parameters) extends Module {
     when(io.vme_rd.cmd.fire()) {
       wmask := "b_10".U.asTypeOf(wmask)
     }.elsewhen(io.vme_rd.data.fire()) {
-      when(sizeIsEven && xcnt === xlen - 1.U) {
+      when(sizeIsEven && (xcnt === xlen - 1.U) && (xrem === 0.U)) {
         wmask := "b_01".U.asTypeOf(wmask)
       }.otherwise {
         wmask := "b_11".U.asTypeOf(wmask)