`timescale 1ns/1ps module argmax_update #( parameter int ROW_BITS = 9, parameter int SCORE_BITS = 10 ) ( input logic [ROW_BITS-1:0] best_index_i, input logic [SCORE_BITS-1:0] best_score_i, input logic [ROW_BITS-1:0] cand_index_i, input logic [SCORE_BITS-1:0] cand_score_i, output logic [ROW_BITS-1:0] best_index_o, output logic [SCORE_BITS-1:0] best_score_o ); always_comb begin best_index_o = best_index_i; best_score_o = best_score_i; if ((cand_score_i > best_score_i) || ((cand_score_i == best_score_i) && (cand_index_i < best_index_i))) begin best_index_o = cand_index_i; best_score_o = cand_score_i; end end endmodule