Skip to content

Commit 230db83

Browse files
Add opcode ready flag to dispatcher
1 parent 3aed957 commit 230db83

4 files changed

Lines changed: 9 additions & 0 deletions

File tree

src/main/scala/main/Core.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class Core extends Module {
4343
io.debug_dispatcher_program_pointer := dispatcher.io.program_pointer;
4444

4545
val thread = Module(new Thread());
46+
thread.io.dispatcher_opcode_loaded := dispatcher.io.opcode_loaded;
4647
thread.io.dispatcher_opcode := dispatcher.io.opcode;
4748
thread.io.dispatcher_program_pointer := dispatcher.io.program_pointer;
4849

src/main/scala/main/Dispatcher.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class Dispatcher extends Module {
1212
val read_ready = Input(Bool());
1313
val read_opcode = Input(Operation());
1414

15+
val opcode_loaded = Output(Bool());
1516
val opcode = Output(Operation());
1617
val program_pointer = Output(UInt(8.W));
1718
});
@@ -21,6 +22,8 @@ class Dispatcher extends Module {
2122
val read_program_pointer = RegInit(0.U(8.W));
2223
io.read_program_pointer := read_program_pointer;
2324

25+
val opcode_loaded = RegInit(false.B);
26+
io.opcode_loaded := opcode_loaded;
2427
val opcode = RegInit(Operation.NoOp);
2528
io.opcode := opcode;
2629
val program_pointer = RegInit(0.U(8.W));
@@ -33,6 +36,7 @@ class Dispatcher extends Module {
3336

3437
when(io.read_ready) {
3538
opcode := io.read_opcode;
39+
opcode_loaded := true.B;
3640
program_pointer := io.read_program_pointer;
3741
read_requested := false.B;
3842
}

src/main/scala/main/Thread.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import _root_.circt.stage.ChiselStage
44

55
class Thread extends Module {
66
val io = IO(new Bundle {
7+
val dispatcher_opcode_loaded = Input(Bool());
78
val dispatcher_opcode = Input(Operation());
89
val dispatcher_program_pointer = Input(UInt(8.W));
910

src/test/scala/main/DispatcherTest.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ class DispatcherTest extends AnyFlatSpec with ChiselScalatestTester {
88
dut.io.thread_requesting_opcode.poke(true.B);
99
dut.io.thread_program_pointer.poke(1.U(8.W));
1010

11+
dut.io.opcode_loaded.expect(false.B);
12+
1113
dut.clock.step(1);
1214

1315
dut.io.read_requested.expect(true.B);
@@ -20,6 +22,7 @@ class DispatcherTest extends AnyFlatSpec with ChiselScalatestTester {
2022

2123
dut.clock.step(1);
2224

25+
dut.io.opcode_loaded.expect(true.B);
2326
dut.io.opcode.expect(Operation.Add);
2427
dut.io.program_pointer.expect(1.U(8.W));
2528
}

0 commit comments

Comments
 (0)