From e06bad873d81a489153731918ad0929dbb809913 Mon Sep 17 00:00:00 2001 From: Alban Gruin <alban.gruin@irit.fr> Date: Mon, 9 May 2022 11:21:29 +0200 Subject: [PATCH] Revert "sras: size improvements" This reverts commit cd7dabb4927014589bc3107902c5ab23182146e4. --- src/frontend/sras.sv | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/frontend/sras.sv b/src/frontend/sras.sv index 2b192bd8..a1ca5587 100644 --- a/src/frontend/sras.sv +++ b/src/frontend/sras.sv @@ -54,10 +54,6 @@ module sras #( logic overflow; assign overflow = |ovf_counter_q[ptr_spec_q]; - logic [SZ_OVF-1:0] ovf_plus_one, ovf_minus_one; - assign ovf_plus_one = ovf_counter_q[ptr_spec_q] + 1'b1; - assign ovf_minus_one = ovf_counter_q[ptr_spec_q] - 1'b1; - always_comb begin ovf_counter_d = ovf_counter_q; @@ -66,23 +62,23 @@ module sras #( end else if (!bad_spec_i) begin if (push_i && !pop_i) begin if (overflow || prev_plus_one == '0 || pp_plus_one == '0) begin - ovf_counter_d[ptr_spec_d] = ovf_plus_one; + ovf_counter_d[ptr_spec_d] = ovf_counter_q[ptr_spec_q] + 1'b1; end if ((prev_plus_one == '0 || pp_plus_one == '0) && begin_spec_i) begin - ovf_counter_d[ptr_spec_q] = ovf_plus_one; + ovf_counter_d[ptr_spec_q] = ovf_counter_q[ptr_spec_q] + 1'b1; end end else if (!push_i && pop_i) begin if (ovf_counter_q[ptr_spec_q] == '0) begin - ovf_counter_d[ptr_spec_d] = ovf_counter_q[ptr_spec_q]; + ovf_counter_d[ptr_spec_d] = '0; // ovf_counter_d[ptr_spec_d] = ovf_counter_q[ptr_spec_q]; end else begin - ovf_counter_d[ptr_spec_d] = ovf_minus_one; + ovf_counter_d[ptr_spec_d] = ovf_counter_q[ptr_spec_q] - 1'b1; end end else if (begin_spec_i) begin ovf_counter_d[ptr_spec_d] = ovf_counter_q[ptr_spec_q]; end end else if (bad_spec_i && resolved_type_i == ariane_pkg::Return && ovf_counter_q[ptr_spec_q] != '0) begin - ovf_counter_d[ptr_spec_d] = ovf_minus_one; + ovf_counter_d[ptr_spec_d] = ovf_counter_q[ptr_spec_q] - 1'b1; end end @@ -116,8 +112,7 @@ module sras #( assign data_o = stack_q[previous_tos_addr][previous_tos]; ariane_pkg::ras_t to_push; - assign to_push.ra = data_i; - // assign to_push.ra = (can_push) ? data_i : 0; + assign to_push.ra = (can_push) ? data_i : 0; assign to_push.valid = can_push; ariane_pkg::ras_t [DEPTH-1:0] new_stack, prev_stack; @@ -131,14 +126,19 @@ module sras #( if (can_pop) begin new_stack[previous_tos] = to_push; - end else if (can_push) begin + end + + if (can_push) begin new_stack[prev_plus_one] = to_push; end end - for (genvar i = 0; i < DEPTH; i++) begin - assign prev_stack[i] = (i == pp_plus_one && can_push && begin_spec_i) ? to_push : - stack_q[ptr_spec_q][i]; + always_comb begin + prev_stack = stack_q[ptr_spec_q]; + + if (can_push && begin_spec_i) begin + prev_stack[pp_plus_one] = to_push; + end end for (genvar i = 0; i < SpecDepth; i++) begin @@ -148,16 +148,16 @@ module sras #( stack_q[i]; end - // initial stack_q <= '0; + initial stack_q = '0; always_ff @(posedge clk_i or negedge rst_ni) begin + stack_q <= stack_d; + if (~rst_ni) begin - stack_q <= '0; ptr_spec_q <= '0; ptr_backup_q <= '0; tos_q <= '0; ovf_counter_q <= '0; end else begin - stack_q <= stack_d; ptr_spec_q <= ptr_spec_d; ptr_backup_q <= ptr_backup_d; tos_q <= tos_d; -- GitLab