Skip to content

Commit

Permalink
Merge pull request #3614 from Kevin99214/master
Browse files Browse the repository at this point in the history
Update SRAM.scala to improve perf on non-full sized reads
  • Loading branch information
jerryz123 committed Apr 15, 2024
2 parents c10ce93 + 6ce53a1 commit 87b3a4d
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions src/main/scala/tilelink/SRAM.scala
Expand Up @@ -235,14 +235,15 @@ class TLRAM(
val r_ready = !d_wb && !r_replay && (!d_full || d_ready) && (!r_respond || (!d_win && in.d.ready))
in.a.ready := !(d_full && d_wb) && (!r_full || r_ready) && (!r_full || !(r_atomic || r_sublane))

// ignore sublane if mask is all set
// ignore sublane if it is a read or mask is all set
val a_read = in.a.bits.opcode === TLMessages.Get
val a_sublane = if (eccBytes == 1) false.B else
((in.a.bits.opcode === TLMessages.PutPartialData) && (~in.a.bits.mask.andR)) ||
in.a.bits.size < log2Ceil(eccBytes).U
~a_read &&
(((in.a.bits.opcode === TLMessages.PutPartialData) && (~in.a.bits.mask.andR)) ||
in.a.bits.size < log2Ceil(eccBytes).U)
val a_atomic = if (!atomics) false.B else
in.a.bits.opcode === TLMessages.ArithmeticData ||
in.a.bits.opcode === TLMessages.LogicalData
val a_read = in.a.bits.opcode === TLMessages.Get

// Forward pipeline stage from R to D
when (d_ready) { d_full := false.B }
Expand Down

0 comments on commit 87b3a4d

Please sign in to comment.