Address STARC05-1.3.1.3 lint issues. Separate resettable and non-resettable registers into different always_ff blocks. Change-Id: I5f1835b0274809d5a96a1f9931b945d13e18934b
diff --git a/hdl/chisel/src/kelvin/BUILD b/hdl/chisel/src/kelvin/BUILD index 51ee1e7..8b3d1c3 100644 --- a/hdl/chisel/src/kelvin/BUILD +++ b/hdl/chisel/src/kelvin/BUILD
@@ -113,7 +113,6 @@ "//hdl/verilog/rvv/common:edff_2d.sv", "//hdl/verilog/rvv/common:multi_fifo.sv", "//hdl/verilog/rvv/design:Aligner.sv", - "//hdl/verilog/rvv/design:MultiFifo.sv", "//hdl/verilog/rvv/design:RvvCore.sv", "//hdl/verilog/rvv/design:RvvFrontEnd.sv", "//hdl/verilog/rvv/design:rvv_backend.sv",
diff --git a/hdl/chisel/src/kelvin/rvv/RvvCore.scala b/hdl/chisel/src/kelvin/rvv/RvvCore.scala index cde9738..de49247 100644 --- a/hdl/chisel/src/kelvin/rvv/RvvCore.scala +++ b/hdl/chisel/src/kelvin/rvv/RvvCore.scala
@@ -405,7 +405,6 @@ addResource("hdl/verilog/rvv/common/edff_2d.sv") addResource("hdl/verilog/rvv/common/multi_fifo.sv") addResource("hdl/verilog/rvv/design/Aligner.sv") - addResource("hdl/verilog/rvv/design/MultiFifo.sv") addResource("hdl/verilog/rvv/design/RvvFrontEnd.sv") addResource("hdl/verilog/rvv/design/rvv_backend_alu_unit_addsub.sv") addResource("hdl/verilog/rvv/design/rvv_backend_alu_unit_execution_p1.sv")
diff --git a/hdl/verilog/rvv/design/MultiFifo.sv b/hdl/verilog/rvv/design/MultiFifo.sv index 27821cd..0182774 100644 --- a/hdl/verilog/rvv/design/MultiFifo.sv +++ b/hdl/verilog/rvv/design/MultiFifo.sv
@@ -64,17 +64,19 @@ end else begin head <= WrapAroundSum(head, valid_in); tail <= WrapAroundSum(tail, ready_out); - - // Update buffer - for (int i = 0; i < N; i++) begin - if (i < valid_in) begin - buffer[WrapAroundSum(head, i)] <= data_in[i]; - end - end m_fill_level <= m_fill_level + valid_in - ready_out; end end + always_ff @(posedge clk) begin + // Update buffer + for (int i = 0; i < N; i++) begin + if (i < valid_in) begin + buffer[WrapAroundSum(head, i)] <= data_in[i]; + end + end + end + always_comb begin for (int i = 0; i < N; i++) begin data_out[i] = buffer[WrapAroundSum(tail, i)];
diff --git a/hdl/verilog/rvv/design/RvvFrontEnd.sv b/hdl/verilog/rvv/design/RvvFrontEnd.sv index facb7d3..97d7e67 100644 --- a/hdl/verilog/rvv/design/RvvFrontEnd.sv +++ b/hdl/verilog/rvv/design/RvvFrontEnd.sv
@@ -118,11 +118,16 @@ for (int i = 0; i < N; i++) begin valid_inst_q[i] <= inst_accepted[i]; valid_inst_count_q <= valid_inst_count_d; - inst_q[i] <= inst_data_i[i]; end end end + always_ff @(posedge clk) begin + for (int i = 0; i < N; i++) begin + inst_q[i] <= inst_data_i[i]; + end + end + // Update configuration architectural state RVVConfigState inst_config_state [N:0]; logic is_setvl [N-1:0]; @@ -199,11 +204,14 @@ always_ff @(posedge clk or negedge rstn) begin if (!rstn) begin config_state_q.vill <= 1; // Config is illegal on reset. + config_state_q.vl <= 16; + config_state_q.vstart <= 0; config_state_q.ma <= 0; config_state_q.ta <= 0; + config_state_q.xrm <= RNU; + config_state_q.xsat <= 0; config_state_q.sew <= SEW8; config_state_q.lmul <= LMUL1; - config_state_q.vl <= 16; end else begin // Update config state next cycle config_state_q <= inst_config_state[N];