@@ -21,9 +21,6 @@ class Dispatcher extends Module {
2121 val program_pointer = Output (UInt (8 .W ));
2222 });
2323
24- io.read_program_pointer := io.thread_program_pointer;
25- io.read_requested := false .B ;
26-
2724 val opcode_loaded = RegInit (false .B );
2825 io.opcode_loaded := opcode_loaded;
2926 val opcode = RegInit (Operation .NoOp );
@@ -35,19 +32,19 @@ class Dispatcher extends Module {
3532 val program_pointer = RegInit (0 .U (8 .W ));
3633 io.program_pointer := program_pointer;
3734
38- when(io.thread_requesting_opcode) {
39- printf( p " \t [Dispatcher]===== " );
40- printf( p " \n\t\t Marked read requested! \n\n " ) ;
35+ val requested_program_pointer = RegInit ( 0 . U ( 8 . W ));
36+
37+ io.read_requested := true . B ;
4138
42- io.read_requested := true .B ;
39+ when(io.thread_requesting_opcode) {
40+ io.read_program_pointer := io.thread_program_pointer;
41+ requested_program_pointer := io.thread_program_pointer;
42+ }.otherwise {
43+ io.read_program_pointer := io.thread_program_pointer + 1 .U ;
44+ requested_program_pointer := io.thread_program_pointer + 1 .U ;
4345 }
4446
4547 when(io.read_ready) {
46- printf(p " \t [Dispatcher]===== " );
47- printf(p " \n\t\t Read Complete ${io.read_opcode}" );
48- printf(p " \n\t\t Immediate Lower ${io.read_immediate_l}" );
49- printf(p " \n\t\t Immediate Upper ${io.read_immediate_u}\n\n " );
50-
5148 val read_opcode = Operation .safe(io.read_opcode(6 , 3 ))._1;
5249 opcode := read_opcode;
5350 io.opcode := read_opcode;
@@ -105,9 +102,7 @@ class Dispatcher extends Module {
105102 opcode_loaded := true .B ;
106103 io.opcode_loaded := true .B ;
107104
108- program_pointer := io.read_program_pointer;
109- io.program_pointer := io.read_program_pointer;
110-
111- io.read_requested := false .B ;
105+ program_pointer := requested_program_pointer;
106+ io.program_pointer := requested_program_pointer;
112107 }
113108}
0 commit comments