From efc0030aadfef862643dd7156783bd63432402ba Mon Sep 17 00:00:00 2001 From: Pascal Gouedo Date: Tue, 22 Aug 2023 11:39:47 +0200 Subject: [PATCH 1/4] is_hwlp_illegal removal Signed-off-by: Pascal Gouedo --- rtl/cv32e40p_controller.sv | 18 +++++------------- rtl/cv32e40p_id_stage.sv | 1 - 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/rtl/cv32e40p_controller.sv b/rtl/cv32e40p_controller.sv index 7cd3d41d7..65d052273 100644 --- a/rtl/cv32e40p_controller.sv +++ b/rtl/cv32e40p_controller.sv @@ -78,7 +78,6 @@ module cv32e40p_controller import cv32e40p_pkg::*; // HWLoop signls input logic [31:0] pc_id_i, - input logic is_compressed_i, // from hwloop_regs input logic [1:0] [31:0] hwlp_start_addr_i, @@ -208,13 +207,13 @@ module cv32e40p_controller import cv32e40p_pkg::*; // Debug state debug_state_e debug_fsm_cs, debug_fsm_ns; - logic jump_done, jump_done_q, jump_in_dec, branch_in_id_dec, branch_in_id; + logic jump_done, jump_done_q, jump_in_dec, branch_in_id; logic data_err_q; logic debug_mode_q, debug_mode_n; logic ebrk_force_debug_mode; - logic is_hwlp_illegal, is_hwlp_body; + logic is_hwlp_body; logic illegal_insn_q, illegal_insn_n; logic debug_req_entry_q, debug_req_entry_n; logic debug_force_wakeup_q, debug_force_wakeup_n; @@ -292,7 +291,6 @@ module cv32e40p_controller import cv32e40p_pkg::*; jump_in_dec = ctrl_transfer_insn_in_dec_i == BRANCH_JALR || ctrl_transfer_insn_in_dec_i == BRANCH_JAL; branch_in_id = ctrl_transfer_insn_in_id_i == BRANCH_COND; - branch_in_id_dec = ctrl_transfer_insn_in_dec_i == BRANCH_COND; ebrk_force_debug_mode = (debug_ebreakm_i && current_priv_lvl_i == PRIV_LVL_M) || (debug_ebreaku_i && current_priv_lvl_i == PRIV_LVL_U); @@ -317,8 +315,6 @@ module cv32e40p_controller import cv32e40p_pkg::*; hwlp_mask_o = 1'b0; - is_hwlp_illegal = 1'b0; - hwlp_dec_cnt_o = '0; hwlp_end_4_id_d = 1'b0; @@ -527,9 +523,7 @@ module cv32e40p_controller import cv32e40p_pkg::*; else begin - is_hwlp_illegal = is_hwlp_body & (jump_in_dec || branch_in_id_dec || mret_insn_i || uret_insn_i || dret_insn_i || is_compressed_i || fencei_insn_i || wfi_active); - - if(illegal_insn_i || is_hwlp_illegal) begin + if (illegal_insn_i) begin halt_if_o = 1'b1; halt_id_o = 1'b0; @@ -752,9 +746,7 @@ module cv32e40p_controller import cv32e40p_pkg::*; else begin - is_hwlp_illegal = (jump_in_dec || branch_in_id_dec || mret_insn_i || uret_insn_i || dret_insn_i || is_compressed_i || fencei_insn_i || wfi_active); - - if(illegal_insn_i || is_hwlp_illegal) begin + if (illegal_insn_i) begin halt_if_o = 1'b1; halt_id_o = 1'b1; @@ -1565,7 +1557,7 @@ endgenerate property p_no_hwlp; @(posedge clk) (1'b1) |-> ((pc_mux_o != PC_HWLOOP) && (ctrl_fsm_cs != DECODE_HWLOOP) && - (hwlp_mask_o == 1'b0) && (is_hwlp_illegal == 'b0) && (is_hwlp_body == 'b0) && + (hwlp_mask_o == 1'b0) && (is_hwlp_body == 'b0) && (hwlp_start_addr_i == 'b0) && (hwlp_end_addr_i == 'b0) && (hwlp_counter_i[1] == 32'b0) && (hwlp_counter_i[0] == 32'b0) && (hwlp_dec_cnt_o == 2'b0) && (hwlp_jump_o == 1'b0) && (hwlp_targ_addr_o == 32'b0) && (hwlp_end0_eq_pc == 1'b0) && (hwlp_end1_eq_pc == 1'b0) && (hwlp_counter0_gt_1 == 1'b0) && (hwlp_counter1_gt_1 == 1'b0) && diff --git a/rtl/cv32e40p_id_stage.sv b/rtl/cv32e40p_id_stage.sv index 80b5b645e..de831419a 100644 --- a/rtl/cv32e40p_id_stage.sv +++ b/rtl/cv32e40p_id_stage.sv @@ -1137,7 +1137,6 @@ module cv32e40p_id_stage // HWLoop signls .pc_id_i (pc_id_i), - .is_compressed_i(is_compressed_i), .hwlp_start_addr_i(hwlp_start_o), .hwlp_end_addr_i (hwlp_end_o), From ccae381e4e52fb10806da91a939e8162b141421a Mon Sep 17 00:00:00 2001 From: Pascal Gouedo Date: Tue, 22 Aug 2023 11:40:13 +0200 Subject: [PATCH 2/4] ecall removed from authorized instructions in HW Loop body. Signed-off-by: Pascal Gouedo --- rtl/cv32e40p_controller.sv | 6 ------ 1 file changed, 6 deletions(-) diff --git a/rtl/cv32e40p_controller.sv b/rtl/cv32e40p_controller.sv index 65d052273..509c40f82 100644 --- a/rtl/cv32e40p_controller.sv +++ b/rtl/cv32e40p_controller.sv @@ -777,12 +777,6 @@ module cv32e40p_controller import cv32e40p_pkg::*; end - ecall_insn_i: begin - halt_if_o = 1'b1; - halt_id_o = 1'b1; - ctrl_fsm_ns = FLUSH_EX; - end - csr_status_i: begin halt_if_o = 1'b1; ctrl_fsm_ns = id_ready_i ? FLUSH_EX : DECODE_HWLOOP; From 5d16b4c98ade072214b7944b1cedfa43ff92b758 Mon Sep 17 00:00:00 2001 From: Pascal Gouedo Date: Tue, 22 Aug 2023 11:54:42 +0200 Subject: [PATCH 3/4] Added error message to format-verible when command not available. Signed-off-by: Pascal Gouedo --- util/format-verible | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/util/format-verible b/util/format-verible index 69a46a0a4..974ecce81 100755 --- a/util/format-verible +++ b/util/format-verible @@ -11,4 +11,6 @@ then find rtl/ bhv/ -not -path "*rtl/vendor*" \ -name '*.sv' | \ xargs verible-verilog-format --inplace 2> /dev/zero -fi \ No newline at end of file +else +echo "verible-verilog-format not available!" +fi From 770d87cad021807afd740c12b6d0ccd6c7aaf986 Mon Sep 17 00:00:00 2001 From: Pascal Gouedo Date: Tue, 22 Aug 2023 11:54:53 +0200 Subject: [PATCH 4/4] Ran verible. Signed-off-by: Pascal Gouedo --- rtl/cv32e40p_id_stage.sv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtl/cv32e40p_id_stage.sv b/rtl/cv32e40p_id_stage.sv index de831419a..c8d901a18 100644 --- a/rtl/cv32e40p_id_stage.sv +++ b/rtl/cv32e40p_id_stage.sv @@ -1136,7 +1136,7 @@ module cv32e40p_id_stage .trap_addr_mux_o(trap_addr_mux_o), // HWLoop signls - .pc_id_i (pc_id_i), + .pc_id_i(pc_id_i), .hwlp_start_addr_i(hwlp_start_o), .hwlp_end_addr_i (hwlp_end_o),