-
Notifications
You must be signed in to change notification settings - Fork 6
Sdtrig #28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Sdtrig #28
Conversation
core/csr_regfile.sv
Outdated
logic [CVA6Cfg.XLEN-1:0] tselect_q, tselect_d; | ||
logic tselect_valid_q, tselect_valid_d; | ||
logic [$clog2(N_Triggers)-1:0] tselect_idx_q, tselect_idx_d; | ||
logic [CVA6Cfg.XLEN-1:0] triggers_q[N_Triggers-1:0][2:0], triggers_d[N_Triggers-1:0][2:0]; // 2D N trigger array with 3 registers: tdata1, tdata2, tdata3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [CVA6Cfg.XLEN-1:0] triggers_q[N_Triggers-1:0][2:0], triggers_d[N_Triggers-1:0][2:0]; // 2D N trigger array with 3 registers: tdata1, tdata2, tdata3 | |
logic [CVA6Cfg.XLEN-1:0] | |
triggers_q[N_Triggers-1:0][2:0], | |
triggers_d[N_Triggers-1:0][2:0]; // 2D N trigger array with 3 registers: tdata1, tdata2, tdata3 |
core/csr_regfile.sv
Outdated
if (CVA6Cfg.SDTRIG) begin | ||
csr_rdata = tselect_q; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (CVA6Cfg.SDTRIG) begin | |
csr_rdata = tselect_q; | |
if (CVA6Cfg.SDTRIG) begin | |
csr_rdata = tselect_q; |
core/csr_regfile.sv
Outdated
if (CVA6Cfg.SDTRIG) begin | ||
csr_rdata = triggers_q[tselect_idx_q][0]; // tdata1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (CVA6Cfg.SDTRIG) begin | |
csr_rdata = triggers_q[tselect_idx_q][0]; // tdata1 | |
if (CVA6Cfg.SDTRIG) begin | |
csr_rdata = triggers_q[tselect_idx_q][0]; // tdata1 |
core/csr_regfile.sv
Outdated
if (CVA6Cfg.SDTRIG) begin | ||
csr_rdata = triggers_q[tselect_idx_q][1]; // tdata2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (CVA6Cfg.SDTRIG) begin | |
csr_rdata = triggers_q[tselect_idx_q][1]; // tdata2 | |
if (CVA6Cfg.SDTRIG) begin | |
csr_rdata = triggers_q[tselect_idx_q][1]; // tdata2 |
core/csr_regfile.sv
Outdated
if (CVA6Cfg.SDTRIG) begin | ||
csr_rdata = triggers_q[tselect_idx_q][2]; // tdata3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (CVA6Cfg.SDTRIG) begin | |
csr_rdata = triggers_q[tselect_idx_q][2]; // tdata3 | |
if (CVA6Cfg.SDTRIG) begin | |
csr_rdata = triggers_q[tselect_idx_q][2]; // tdata3 |
core/csr_regfile.sv
Outdated
if (CVA6Cfg.SDTRIG) begin | ||
triggers_d[tselect_idx_d][1] = csr_wdata; // tdata2 | ||
end else begin | ||
update_access_exception = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
update_access_exception = 1'b1; | |
update_access_exception = 1'b1; |
core/csr_regfile.sv
Outdated
end | ||
riscv::CSR_TDATA3: | ||
if (CVA6Cfg.SDTRIG) begin | ||
triggers_d[tselect_idx_d][2] = csr_wdata; // tdata3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
triggers_d[tselect_idx_d][2] = csr_wdata; // tdata3 | |
triggers_d[tselect_idx_d][2] = csr_wdata; // tdata3 |
core/csr_regfile.sv
Outdated
if (CVA6Cfg.SDTRIG) begin | ||
triggers_d[tselect_idx_d][2] = csr_wdata; // tdata3 | ||
end else begin | ||
update_access_exception = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
update_access_exception = 1'b1; | |
update_access_exception = 1'b1; |
core/csr_regfile.sv
Outdated
update_access_exception = 1'b1; | ||
end | ||
riscv::CSR_TINFO: begin | ||
update_access_exception = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
update_access_exception = 1'b1; | |
update_access_exception = 1'b1; |
core/csr_regfile.sv
Outdated
@@ -2687,6 +2765,12 @@ | |||
vsatp_q <= vsatp_d; | |||
en_ld_st_g_translation_q <= en_ld_st_g_translation_d; | |||
end | |||
if (CVA6Cfg.SDTRIG) begin | |||
tselect_q <= tselect_d; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
tselect_q <= tselect_d; | |
tselect_q <= tselect_d; |
core/csr_regfile.sv
Outdated
update_access_exception = 1'b1; | ||
end | ||
riscv::CSR_TINFO: begin | ||
update_access_exception = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Write on tinfo should be ignored. Should not generate exception
core/csr_regfile.sv
Outdated
// logic [$clog2(N_Triggers)-1:0] tselect_idx; | ||
// logic [CVA6Cfg.XLEN-1:0] triggers[N_Triggers-1:0][2:0]; // 2D N trigger array with 3 registers: tdata1, tdata2, tdata3 | ||
|
||
logic [CVA6Cfg.XLEN-1:0] tselect_q, tselect_d; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be of size N_TRIGGERS bits
core/csr_regfile.sv
Outdated
|
||
logic [CVA6Cfg.XLEN-1:0] tselect_q, tselect_d; | ||
logic tselect_valid_q, tselect_valid_d; | ||
logic [$clog2(N_Triggers)-1:0] tselect_idx_q, tselect_idx_d; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can use tselect_q.
core/csr_regfile.sv
Outdated
logic [CVA6Cfg.XLEN-1:0] tselect_q, tselect_d; | ||
logic tselect_valid_q, tselect_valid_d; | ||
logic [$clog2(N_Triggers)-1:0] tselect_idx_q, tselect_idx_d; | ||
logic [CVA6Cfg.XLEN-1:0] triggers_q[N_Triggers-1:0][2:0], triggers_d[N_Triggers-1:0][2:0]; // 2D N trigger array with 3 registers: tdata1, tdata2, tdata3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would recommend you have separate singals for TDATA1, TDATA2, and TDATA3.
core/csr_regfile.sv
Outdated
end | ||
riscv::CSR_TDATA1: | ||
if (CVA6Cfg.SDTRIG) begin | ||
csr_rdata = triggers_q[tselect_idx_q][0]; // tdata1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you can use tselect_q for indexing
core/csr_regfile.sv
Outdated
riscv::CSR_TSELECT: | ||
if (CVA6Cfg.SDTRIG) begin | ||
tselect_d = csr_wdata; | ||
tselect_valid_d = (tselect_idx_q < N_Triggers); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No use now
core/csr_regfile.sv
Outdated
if (CVA6Cfg.SDTRIG) begin | ||
tselect_d = csr_wdata; | ||
tselect_valid_d = (tselect_idx_q < N_Triggers); | ||
tselect_idx_d = tselect_q[$clog2(N_Triggers)-1:0]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you can use tselect_q
core/csr_regfile.sv
Outdated
end | ||
riscv::CSR_TDATA1: | ||
if (CVA6Cfg.SDTRIG) begin | ||
triggers_d[tselect_idx_d][0] = csr_wdata; // tdata1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are multiple registers on TDATA1 and all have some WARL fields in them. You need to handle them. For example for now, vs and vu should be hardwired to 0. and should be writable.
update_access_exception = 1'b1; | ||
end | ||
riscv::CSR_TDATA2: | ||
if (CVA6Cfg.SDTRIG) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Check for WARL here also if any. Check spec for that.
update_access_exception = 1'b1; | ||
end | ||
riscv::CSR_TDATA3: | ||
if (CVA6Cfg.SDTRIG) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Check for WARL here also if any. Check spec for that.
core/csr_regfile.sv
Outdated
// if (CVA6Cfg.SDTRIG) begin | ||
// if (trigger_type_d[tselect_q] == 4'd3) begin | ||
// // case(priv_lvl_o) // trigger will only fire if current priv lvl is same as the trigger wants to fire in | ||
// // riscv::PRIV_LVL_M : if (icount32_tdata1_d[tselect_q].m) priv_match = 1'b1; | ||
// // riscv::PRIV_LVL_S : if (icount32_tdata1_d[tselect_q].s) priv_match = 1'b1; | ||
// // riscv::PRIV_LVL_U : if (icount32_tdata1_d[tselect_q].u) priv_match = 1'b1; | ||
// // endcase | ||
// // if (commit_ack_i) begin | ||
// // icount_d--; | ||
// // end | ||
// // if ((icache_d == 0) && priv_match) begin | ||
// //icount32_tdata1_q[tselect_q].pending = 1'b1; | ||
// //icount32_tdata1_q[tselect_q].hit = 1'b1; | ||
// // case (icount32_tdata1_d[tselect_q].action) | ||
// //breakpoint_from_tigger_module_o = 1'b1; | ||
// //6'd1 : debug_from_trigger_module = 1'b1 //into debug mode; | ||
// // default: ; | ||
// // endcase | ||
// // end | ||
// end | ||
// end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
// if (CVA6Cfg.SDTRIG) begin | |
// if (trigger_type_d[tselect_q] == 4'd3) begin | |
// // case(priv_lvl_o) // trigger will only fire if current priv lvl is same as the trigger wants to fire in | |
// // riscv::PRIV_LVL_M : if (icount32_tdata1_d[tselect_q].m) priv_match = 1'b1; | |
// // riscv::PRIV_LVL_S : if (icount32_tdata1_d[tselect_q].s) priv_match = 1'b1; | |
// // riscv::PRIV_LVL_U : if (icount32_tdata1_d[tselect_q].u) priv_match = 1'b1; | |
// // endcase | |
// // if (commit_ack_i) begin | |
// // icount_d--; | |
// // end | |
// // if ((icache_d == 0) && priv_match) begin | |
// //icount32_tdata1_q[tselect_q].pending = 1'b1; | |
// //icount32_tdata1_q[tselect_q].hit = 1'b1; | |
// // case (icount32_tdata1_d[tselect_q].action) | |
// //breakpoint_from_tigger_module_o = 1'b1; | |
// //6'd1 : debug_from_trigger_module = 1'b1 //into debug mode; | |
// // default: ; | |
// // endcase | |
// // end | |
// end | |
// end | |
// if (CVA6Cfg.SDTRIG) begin | |
// if (trigger_type_d[tselect_q] == 4'd3) begin | |
// // case(priv_lvl_o) // trigger will only fire if current priv lvl is same as the trigger wants to fire in | |
// // riscv::PRIV_LVL_M : if (icount32_tdata1_d[tselect_q].m) priv_match = 1'b1; | |
// // riscv::PRIV_LVL_S : if (icount32_tdata1_d[tselect_q].s) priv_match = 1'b1; | |
// // riscv::PRIV_LVL_U : if (icount32_tdata1_d[tselect_q].u) priv_match = 1'b1; | |
// // endcase | |
// // if (commit_ack_i) begin | |
// // icount_d--; | |
// // end | |
// // if ((icache_d == 0) && priv_match) begin | |
// //icount32_tdata1_q[tselect_q].pending = 1'b1; | |
// //icount32_tdata1_q[tselect_q].hit = 1'b1; | |
// // case (icount32_tdata1_d[tselect_q].action) | |
// //breakpoint_from_tigger_module_o = 1'b1; | |
// //6'd1 : debug_from_trigger_module = 1'b1 //into debug mode; | |
// // default: ; | |
// // endcase | |
// // end | |
// end | |
// end |
core/csr_regfile.sv
Outdated
@@ -2604,6 +2737,21 @@ module csr_regfile | |||
vsatp_q <= {CVA6Cfg.XLEN{1'b0}}; | |||
en_ld_st_g_translation_q <= 1'b0; | |||
end | |||
if (CVA6Cfg.SDTRIG) begin | |||
scontext_q <= '0; | |||
tselect_q <= '0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
tselect_q <= '0; | |
tselect_q <= '0; |
core/csr_regfile.sv
Outdated
@@ -2174,6 +2284,36 @@ module csr_regfile | |||
debug_mode_d = 1'b0; | |||
end | |||
end | |||
|
|||
// Triggers Match Logic |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
// Triggers Match Logic | |
// Triggers Match Logic |
core/csr_regfile.sv
Outdated
if (trigger_type_d[tselect_q] == 4'd3) begin // icount match logic | ||
case(priv_lvl_o) // trigger will only fire if current priv lvl is same as the trigger wants to fire in | ||
riscv::PRIV_LVL_M : if (icount32_tdata1_d[tselect_q].m) priv_match = 1'b1; | ||
riscv::PRIV_LVL_S : if (icount32_tdata1_d[tselect_q].s) priv_match = 1'b1; | ||
riscv::PRIV_LVL_U : if (icount32_tdata1_d[tselect_q].u) priv_match = 1'b1; | ||
default: priv_match = 1'b0; | ||
endcase | ||
if (ex_i.valid) begin | ||
in_trap_handler = 1'b1; | ||
icount32_tdata1_d[tselect_q].count = icount32_tdata1_d[tselect_q].count - 1; | ||
end | ||
if (commit_ack_i && mret) in_trap_handler = 1'b0; | ||
if (|commit_ack_i && !in_trap_handler && icount32_tdata1_q[tselect_q].count != 0) begin | ||
icount32_tdata1_d[tselect_q].count = icount32_tdata1_d[tselect_q].count - 1; | ||
end | ||
if ((icount32_tdata1_d[tselect_q].count == 0) && priv_match) begin | ||
icount32_tdata1_d[tselect_q].pending = 1'b1; | ||
//icount32_tdata1_d[tselect_q].hit = 1'b1; | ||
case (icount32_tdata1_d[tselect_q].action) | ||
6'd0 : breakpoint_from_tigger_module = 1'b1; | ||
6'd1 : breakpoint_from_tigger_module = 1'b1; //into debug mode; | ||
default: ; | ||
endcase | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (trigger_type_d[tselect_q] == 4'd3) begin // icount match logic | |
case(priv_lvl_o) // trigger will only fire if current priv lvl is same as the trigger wants to fire in | |
riscv::PRIV_LVL_M : if (icount32_tdata1_d[tselect_q].m) priv_match = 1'b1; | |
riscv::PRIV_LVL_S : if (icount32_tdata1_d[tselect_q].s) priv_match = 1'b1; | |
riscv::PRIV_LVL_U : if (icount32_tdata1_d[tselect_q].u) priv_match = 1'b1; | |
default: priv_match = 1'b0; | |
endcase | |
if (ex_i.valid) begin | |
in_trap_handler = 1'b1; | |
icount32_tdata1_d[tselect_q].count = icount32_tdata1_d[tselect_q].count - 1; | |
end | |
if (commit_ack_i && mret) in_trap_handler = 1'b0; | |
if (|commit_ack_i && !in_trap_handler && icount32_tdata1_q[tselect_q].count != 0) begin | |
icount32_tdata1_d[tselect_q].count = icount32_tdata1_d[tselect_q].count - 1; | |
end | |
if ((icount32_tdata1_d[tselect_q].count == 0) && priv_match) begin | |
icount32_tdata1_d[tselect_q].pending = 1'b1; | |
//icount32_tdata1_d[tselect_q].hit = 1'b1; | |
case (icount32_tdata1_d[tselect_q].action) | |
6'd0 : breakpoint_from_tigger_module = 1'b1; | |
6'd1 : breakpoint_from_tigger_module = 1'b1; //into debug mode; | |
default: ; | |
endcase | |
end | |
if (trigger_type_d[tselect_q] == 4'd3) begin // icount match logic | |
case(priv_lvl_o) // trigger will only fire if current priv lvl is same as the trigger wants to fire in | |
riscv::PRIV_LVL_M: if (icount32_tdata1_d[tselect_q].m) priv_match = 1'b1; | |
riscv::PRIV_LVL_S: if (icount32_tdata1_d[tselect_q].s) priv_match = 1'b1; | |
riscv::PRIV_LVL_U: if (icount32_tdata1_d[tselect_q].u) priv_match = 1'b1; | |
default: priv_match = 1'b0; | |
endcase | |
if (ex_i.valid) begin | |
in_trap_handler = 1'b1; | |
icount32_tdata1_d[tselect_q].count = icount32_tdata1_d[tselect_q].count - 1; | |
end | |
if (commit_ack_i && mret) in_trap_handler = 1'b0; | |
if (|commit_ack_i && !in_trap_handler && icount32_tdata1_q[tselect_q].count != 0) begin | |
icount32_tdata1_d[tselect_q].count = icount32_tdata1_d[tselect_q].count - 1; | |
end | |
if ((icount32_tdata1_d[tselect_q].count == 0) && priv_match) begin | |
icount32_tdata1_d[tselect_q].pending = 1'b1; | |
//icount32_tdata1_d[tselect_q].hit = 1'b1; | |
case (icount32_tdata1_d[tselect_q].action) | |
6'd0: breakpoint_from_tigger_module = 1'b1; | |
6'd1: breakpoint_from_tigger_module = 1'b1; //into debug mode; | |
default: ; | |
endcase |
endcase | ||
end | ||
end | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
end | |
end | |
end |
@@ -2604,6 +2744,21 @@ module csr_regfile | |||
vsatp_q <= {CVA6Cfg.XLEN{1'b0}}; | |||
en_ld_st_g_translation_q <= 1'b0; | |||
end | |||
if (CVA6Cfg.SDTRIG) begin | |||
scontext_q <= '0; | |||
tselect_q <= '0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
tselect_q <= '0; | |
tselect_q <= '0; |
core/cva6.sv
Outdated
.dcache_req_ports_i(dcache_req_ports_cache_id), | ||
.dcache_req_ports_o(dcache_req_ports_id_cache) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
.dcache_req_ports_i(dcache_req_ports_cache_id), | |
.dcache_req_ports_o(dcache_req_ports_id_cache) | |
.dcache_req_ports_i (dcache_req_ports_cache_id), | |
.dcache_req_ports_o (dcache_req_ports_id_cache) |
core/cva6.sv
Outdated
@@ -1199,6 +1202,7 @@ module cva6 | |||
.pmpaddr_o (pmpaddr), | |||
.mcountinhibit_o (mcountinhibit_csr_perf), | |||
.jvt_o (jvt), | |||
.breakpoint_from_tigger_module_o (breakpoint_from_tigger_module), | |||
//RVFI | |||
.rvfi_csr_o (rvfi_csr) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
.rvfi_csr_o (rvfi_csr) | |
.rvfi_csr_o (rvfi_csr) |
core/id_stage.sv
Outdated
.instruction_o (decoded_instruction[i]), | ||
.orig_instr_o (orig_instr[i]), | ||
.is_control_flow_instr_o (is_control_flow_instr[i]) | ||
.is_control_flow_instr_o (is_control_flow_instr[i]), | ||
.breakpoint_from_tigger_module_i (breakpoint_from_tigger_module_i) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
.instruction_o (decoded_instruction[i]), | |
.orig_instr_o (orig_instr[i]), | |
.is_control_flow_instr_o (is_control_flow_instr[i]) | |
.is_control_flow_instr_o (is_control_flow_instr[i]), | |
.breakpoint_from_tigger_module_i (breakpoint_from_tigger_module_i) | |
.instruction_o (decoded_instruction[i]), | |
.orig_instr_o (orig_instr[i]), | |
.is_control_flow_instr_o (is_control_flow_instr[i]), | |
.breakpoint_from_tigger_module_i(breakpoint_from_tigger_module_i) |
core/id_stage.sv
Outdated
@@ -439,6 +442,10 @@ module id_stage #( | |||
is_control_flow_instr[0] | |||
}; | |||
end | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
core/csr_regfile.sv
Outdated
default: priv_match = 1'b0; | ||
endcase | ||
// execute with address | ||
if (mcontrol6_32_tdata1_d[tselect_q].execute && tdata2_d[tselect_q] == commit_instr_i.pc && commit_ack_i && !mcontrol6_32_tdata1_d[tselect_q].select) matched = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (mcontrol6_32_tdata1_d[tselect_q].execute && tdata2_d[tselect_q] == commit_instr_i.pc && commit_ack_i && !mcontrol6_32_tdata1_d[tselect_q].select) matched = 1'b1; | |
if (mcontrol6_32_tdata1_d[tselect_q].execute && tdata2_d[tselect_q] == commit_instr_i.pc && commit_ack_i && !mcontrol6_32_tdata1_d[tselect_q].select) | |
matched = 1'b1; |
core/csr_regfile.sv
Outdated
// execute with address | ||
if (mcontrol6_32_tdata1_d[tselect_q].execute && tdata2_d[tselect_q] == commit_instr_i.pc && commit_ack_i && !mcontrol6_32_tdata1_d[tselect_q].select) matched = 1'b1; | ||
// execute with instruction | ||
if (mcontrol6_32_tdata1_d[tselect_q].execute && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == orig_instr_i)) matched = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (mcontrol6_32_tdata1_d[tselect_q].execute && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == orig_instr_i)) matched = 1'b1; | |
if (mcontrol6_32_tdata1_d[tselect_q].execute && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == orig_instr_i)) | |
matched = 1'b1; |
core/csr_regfile.sv
Outdated
// execute with instruction | ||
if (mcontrol6_32_tdata1_d[tselect_q].execute && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == orig_instr_i)) matched = 1'b1; | ||
// store with data | ||
if (mcontrol6_32_tdata1_d[tselect_q].store && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == commit_instr_i.result)) matched = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (mcontrol6_32_tdata1_d[tselect_q].store && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == commit_instr_i.result)) matched = 1'b1; | |
if (mcontrol6_32_tdata1_d[tselect_q].store && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == commit_instr_i.result)) | |
matched = 1'b1; |
core/csr_regfile.sv
Outdated
// store with data | ||
if (mcontrol6_32_tdata1_d[tselect_q].store && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == commit_instr_i.result)) matched = 1'b1; | ||
// store with address | ||
if (mcontrol6_32_tdata1_d[tselect_q].store && !mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == vaddr_from_lsu_i)) matched = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (mcontrol6_32_tdata1_d[tselect_q].store && !mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == vaddr_from_lsu_i)) matched = 1'b1; | |
if (mcontrol6_32_tdata1_d[tselect_q].store && !mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == vaddr_from_lsu_i)) | |
matched = 1'b1; |
core/csr_regfile.sv
Outdated
// store with address | ||
if (mcontrol6_32_tdata1_d[tselect_q].store && !mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == vaddr_from_lsu_i)) matched = 1'b1; | ||
// load with data | ||
if (mcontrol6_32_tdata1_d[tselect_q].load && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == commit_instr_i.result && commit_instr_i.op == 8'h27)) matched = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (mcontrol6_32_tdata1_d[tselect_q].load && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == commit_instr_i.result && commit_instr_i.op == 8'h27)) matched = 1'b1; | |
if (mcontrol6_32_tdata1_d[tselect_q].load && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == commit_instr_i.result && commit_instr_i.op == 8'h27)) | |
matched = 1'b1; |
core/csr_regfile.sv
Outdated
// load with data | ||
if (mcontrol6_32_tdata1_d[tselect_q].load && mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == commit_instr_i.result && commit_instr_i.op == 8'h27)) matched = 1'b1; | ||
// load with address | ||
if (mcontrol6_32_tdata1_d[tselect_q].load && !mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == vaddr_from_lsu_i)) matched = 1'b1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (mcontrol6_32_tdata1_d[tselect_q].load && !mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == vaddr_from_lsu_i)) matched = 1'b1; | |
if (mcontrol6_32_tdata1_d[tselect_q].load && !mcontrol6_32_tdata1_d[tselect_q].select && (tdata2_d[tselect_q] == vaddr_from_lsu_i)) | |
matched = 1'b1; |
No description provided.