Skip to content

Commit 5a10e96

Browse files
committed
add spad compute loop fsm and instruction support
1 parent b97b09a commit 5a10e96

File tree

5 files changed

+244
-59
lines changed

5 files changed

+244
-59
lines changed

src/main/scala/gemmini/Controller.scala

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ class Gemmini[T <: Data : Arithmetic, U <: Data, V <: Data](val config: GemminiA
201201
address = Seq(AddressSet(0xff007000L, 0xfff)),
202202
device = regDevice,
203203
beatBytes = 8,
204-
concurrency = 0)
204+
concurrency = 1)
205205

206206
regNode := TLFragmenter(8, 64) := stlNode
207207

@@ -519,8 +519,9 @@ class GemminiModule[T <: Data: Arithmetic, U <: Data, V <: Data]
519519
regCommand.status := io.cmd.bits.status
520520

521521
val raw_cmd_q = Module(new Queue(new GemminiCmd(reservation_station_entries), entries = 2))
522-
raw_cmd_q.io.enq.valid := regValid || io.cmd.valid
523-
io.cmd.ready := raw_cmd_q.io.enq.ready && !regValid
522+
raw_cmd_q.io.enq.valid := regValid // || io.cmd.valid
523+
io.cmd.ready := false.B // raw_cmd_q.io.enq.ready && !regValid
524+
assert(!regValid || raw_cmd_q.io.enq.ready)
524525
raw_cmd_q.io.enq.bits.cmd := Mux(regValid, regCommand, io.cmd.bits)
525526
raw_cmd_q.io.enq.bits.rob_id := DontCare
526527
raw_cmd_q.io.enq.bits.from_conv_fsm := false.B
@@ -540,7 +541,8 @@ class GemminiModule[T <: Data: Arithmetic, U <: Data, V <: Data]
540541
RegField.w(32, gemminiRs1RegMSB)),
541542
0x18 -> Seq(
542543
RegField.w(32, gemminiRs2RegLSB),
543-
RegField.w(32, gemminiRs2RegMSB))
544+
RegField.w(32, gemminiRs2RegMSB)),
545+
0x20 -> Seq(RegField.r(32, io.busy))
544546
)
545547

546548
val raw_cmd = raw_cmd_q.io.deq
@@ -564,7 +566,7 @@ class GemminiModule[T <: Data: Arithmetic, U <: Data, V <: Data]
564566
inputType.getWidth, accType.getWidth, dma_maxbytes, new MvinRs2(mvin_rows_bits, mvin_cols_bits, local_addr_t),
565567
new PreloadRs(mvin_rows_bits, mvin_cols_bits, local_addr_t), new PreloadRs(mvout_rows_bits, mvout_cols_bits, local_addr_t),
566568
new ComputeRs(mvin_rows_bits, mvin_cols_bits, local_addr_t), new ComputeRs(mvin_rows_bits, mvin_cols_bits, local_addr_t),
567-
new MvoutRs2(mvout_rows_bits, mvout_cols_bits, local_addr_t)) }
569+
new MvoutSpadRs1(32, local_addr_t), new MvoutRs2(mvout_rows_bits, mvout_cols_bits, local_addr_t)) }
568570

569571
val unrolled_cmd = Queue(loop_cmd)
570572
unrolled_cmd.ready := false.B

src/main/scala/gemmini/GemminiISA.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ object GemminiISA {
3535
val CLKGATE_EN = 22.U
3636

3737
val STORE_SPAD_CMD = 23.U
38+
val LOOP_WS_CONFIG_SPAD_AB = 24.U
39+
val LOOP_WS_CONFIG_SPAD_C = 25.U
3840

3941
// rs1[2:0] values
4042
val CONFIG_EX = 0.U

0 commit comments

Comments
 (0)