blob: 1a2fe0868435c962fce3c645bac85f91bf07a6d9 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// Description sysrst_ctrl combo trigger module
module sysrst_ctrl_combotrg (
input cfg_in0_sel,
input cfg_in1_sel,
input cfg_in2_sel,
input cfg_in3_sel,
input cfg_in4_sel,
input in0,
input in1,
input in2,
input in3,
input in4,
output logic trigger_h_o,
output logic trigger_l_o
);
logic [4:0] cfg_input_sel;
assign cfg_input_sel = {cfg_in0_sel, cfg_in1_sel, cfg_in2_sel, cfg_in3_sel, cfg_in4_sel};
always_comb begin: p_trigger_combo
unique case (cfg_input_sel)
5'b00001: begin
trigger_h_o = (in4 == 1'b1);
trigger_l_o = (in4 == 1'b0);
end
5'b00010: begin
trigger_h_o = (in3 == 1'b1);
trigger_l_o = (in3 == 1'b0);
end
5'b00011: begin
trigger_h_o = (in3 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in3 == 1'b0) && (in4 == 1'b0);
end
5'b00100: begin
trigger_h_o = (in2 == 1'b1);
trigger_l_o = (in2 == 1'b0);
end
5'b00101: begin
trigger_h_o = (in2 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in2 == 1'b0) && (in4 == 1'b0);
end
5'b00111: begin
trigger_h_o = (in2 == 1'b1) && (in3 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in2 == 1'b0) && (in3 == 1'b0) && (in4 == 1'b0);
end
5'b01000: begin
trigger_h_o = (in1 == 1'b1);
trigger_l_o = (in1 == 1'b0);
end
5'b01001: begin
trigger_h_o = (in1 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in1 == 1'b0) && (in4 == 1'b0);
end
5'b01010: begin
trigger_h_o = (in1 == 1'b1) && (in3 == 1'b1);
trigger_l_o = (in1 == 1'b0) && (in3 == 1'b0);
end
5'b01011: begin
trigger_h_o = (in1 == 1'b1) && (in3 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in1 == 1'b0) && (in3 == 1'b0) && (in4 == 1'b0);
end
5'b01100: begin
trigger_h_o = (in1 == 1'b1) && (in2 == 1'b1);
trigger_l_o = (in1 == 1'b0) && (in2 == 1'b0);
end
5'b01101: begin
trigger_h_o = (in1 == 1'b1) && (in2 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in1 == 1'b0) && (in2 == 1'b0) && (in4 == 1'b0);
end
5'b01110: begin
trigger_h_o = (in1 == 1'b1) && (in2 == 1'b1) && (in3 == 1'b1);
trigger_l_o = (in1 == 1'b0) && (in2 == 1'b0) && (in3 == 1'b0);
end
5'b01111: begin
trigger_h_o = (in1 == 1'b1) && (in2 == 1'b1) && (in3 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in1 == 1'b0) && (in2 == 1'b0) && (in3 == 1'b0) && (in4 == 1'b0);
end
5'b10000: begin
trigger_h_o = (in0 == 1'b1);
trigger_l_o = (in0 == 1'b0);
end
5'b10001: begin
trigger_h_o = (in0 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in4 == 1'b0);
end
5'b10010: begin
trigger_h_o = (in0 == 1'b1) && (in3 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in3 == 1'b0);
end
5'b10011: begin
trigger_h_o = (in0 == 1'b1) && (in3 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in3 == 1'b0) && (in4 == 1'b0);
end
5'b10100: begin
trigger_h_o = (in0 == 1'b1) && (in2 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in2 == 1'b0);
end
5'b10101: begin
trigger_h_o = (in0 == 1'b1) && (in2 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in2 == 1'b0) && (in4 == 1'b0);
end
5'b10110: begin
trigger_h_o = (in0 == 1'b1) && (in2 == 1'b1) && (in3 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in2 == 1'b0) && (in3 == 1'b0);
end
5'b10111: begin
trigger_h_o = (in0 == 1'b1) && (in2 == 1'b1) && (in3 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in2 == 1'b0) && (in3 == 1'b0) && (in4 == 1'b0);
end
5'b11000: begin
trigger_h_o = (in0 == 1'b1) && (in1 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in1 == 1'b0);
end
5'b11001: begin
trigger_h_o = (in0 == 1'b1) && (in1 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in1 == 1'b0) && (in4 == 1'b0);
end
5'b11010: begin
trigger_h_o = (in0 == 1'b1) && (in1 == 1'b1) && (in3 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in1 == 1'b0) && (in3 == 1'b0);
end
5'b11011: begin
trigger_h_o = (in0 == 1'b1) && (in1 == 1'b1) && (in3 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in1 == 1'b0) && (in3 == 1'b0) && (in4 == 1'b0);
end
5'b11100: begin
trigger_h_o = (in0 == 1'b1) && (in1 == 1'b1) && (in2 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in1 == 1'b0) && (in2 == 1'b0);
end
5'b11101: begin
trigger_h_o = (in0 == 1'b1) && (in1 == 1'b1) && (in2 == 1'b1) && (in4 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in1 == 1'b0) && (in2 == 1'b0) && (in4 == 1'b0);
end
5'b11110: begin
trigger_h_o = (in0 == 1'b1) && (in1 == 1'b1) && (in2 == 1'b1) && (in3 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in1 == 1'b0) && (in2 == 1'b0) && (in3 == 1'b0);
end
5'b11111: begin
trigger_h_o = (in0 == 1'b1) && (in1 == 1'b1) && (in2 == 1'b1) && (in3 == 1'b1) &&
(in4 == 1'b1);
trigger_l_o = (in0 == 1'b0) && (in1 == 1'b0) && (in2 == 1'b0) && (in3 == 1'b0) &&
(in4 == 1'b0);
end
default: begin
trigger_h_o = 1'b0;
trigger_l_o = 1'b0;
end
endcase
end
endmodule