diff --git a/src/fpnew_opgroup_block.sv b/src/fpnew_opgroup_block.sv index 7d873a8f..f01df05f 100644 --- a/src/fpnew_opgroup_block.sv +++ b/src/fpnew_opgroup_block.sv @@ -28,6 +28,7 @@ module fpnew_opgroup_block #( parameter logic TrueSIMDClass = 1'b0, parameter logic CompressedVecCmpResult = 1'b0, parameter fpnew_pkg::rsr_impl_t StochasticRndImplementation = fpnew_pkg::DEFAULT_NO_RSR, + parameter int unsigned LockRepetition = 1, // Do not change localparam int unsigned NUM_FORMATS = fpnew_pkg::NUM_FP_FORMATS, localparam int unsigned NUM_OPERANDS = fpnew_pkg::num_operands(OpGroup), @@ -61,7 +62,7 @@ module fpnew_opgroup_block #( // Output handshake output logic out_valid_o, input logic out_ready_i, - input logic out_lock_i, + input logic [LockRepetition-1:0] out_lock_i, // Indication of valid data in flight output logic busy_o ); @@ -227,7 +228,8 @@ module fpnew_opgroup_block #( rr_arb_tree_lock #( .NumIn ( NUM_FORMATS ), .DataType ( output_t ), - .AxiVldRdy ( 1'b1 ) + .AxiVldRdy ( 1'b1 ), + .InternalRedundancy ( LockRepetition > 1 ) ) i_arbiter ( .clk_i, .rst_ni, diff --git a/src/fpnew_top.sv b/src/fpnew_top.sv index b191abd5..19de83ca 100644 --- a/src/fpnew_top.sv +++ b/src/fpnew_top.sv @@ -310,8 +310,8 @@ module fpnew_top #( logic [NUM_OPGROUPS-1:0] in_opgrp_ready, out_opgrp_valid, out_opgrp_ready, out_opgrp_ext, opgrp_busy; rr_stacked_t [NUM_OPGROUPS-1:0] out_opgrp_data; - localparam int REP = RedundancyFeatures.TripplicateRepetition ? 3 : 1; - logic [REP-1:0] out_rr_lock; + localparam int LockRepetition = RedundancyFeatures.TripplicateRepetition ? 3 : 1; + logic [LockRepetition-1:0] out_rr_lock; logic [NUM_FORMATS-1:0][NUM_OPERANDS-1:0] is_boxed; @@ -372,7 +372,8 @@ module fpnew_top #( .TagType ( submodules_stacked_t ), .TrueSIMDClass ( TrueSIMDClass ), .CompressedVecCmpResult ( CompressedVecCmpResult ), - .StochasticRndImplementation ( StochasticRndImplementation ) + .StochasticRndImplementation ( StochasticRndImplementation ), + .LockRepetition (LockRepetition) ) i_opgroup_block ( .clk_i, .rst_ni,