79 lines
3.0 KiB
Systemverilog
79 lines
3.0 KiB
Systemverilog
// Generated by CIRCT firtool-1.151.0
|
|
module PLICFanIn(
|
|
input [2:0] io_prio_0,
|
|
io_prio_1,
|
|
io_prio_2,
|
|
io_prio_3,
|
|
io_prio_4,
|
|
io_prio_5,
|
|
io_prio_6,
|
|
io_prio_7,
|
|
io_prio_8,
|
|
io_prio_9,
|
|
io_prio_10,
|
|
input [10:0] io_ip,
|
|
output [3:0] io_dev,
|
|
output [2:0] io_max
|
|
);
|
|
|
|
wire [3:0] effectivePriority_1 = {io_ip[0], io_prio_0};
|
|
wire [3:0] effectivePriority_2 = {io_ip[1], io_prio_1};
|
|
wire [3:0] effectivePriority_3 = {io_ip[2], io_prio_2};
|
|
wire [3:0] effectivePriority_4 = {io_ip[3], io_prio_3};
|
|
wire [3:0] effectivePriority_5 = {io_ip[4], io_prio_4};
|
|
wire [3:0] effectivePriority_6 = {io_ip[5], io_prio_5};
|
|
wire [3:0] effectivePriority_7 = {io_ip[6], io_prio_6};
|
|
wire [3:0] effectivePriority_8 = {io_ip[7], io_prio_7};
|
|
wire [3:0] effectivePriority_9 = {io_ip[8], io_prio_8};
|
|
wire [3:0] effectivePriority_10 = {io_ip[9], io_prio_9};
|
|
wire [3:0] effectivePriority_11 = {io_ip[10], io_prio_10};
|
|
wire [3:0] left_left_left_1 = effectivePriority_1 < 4'h9 ? 4'h8 : effectivePriority_1;
|
|
wire [3:0] left_left_right_1 =
|
|
effectivePriority_2 >= effectivePriority_3
|
|
? effectivePriority_2
|
|
: effectivePriority_3;
|
|
wire _left_left_T = left_left_left_1 >= left_left_right_1;
|
|
wire [3:0] left_left_1 = _left_left_T ? left_left_left_1 : left_left_right_1;
|
|
wire [3:0] left_right_left_1 =
|
|
effectivePriority_4 >= effectivePriority_5
|
|
? effectivePriority_4
|
|
: effectivePriority_5;
|
|
wire [3:0] left_right_right_1 =
|
|
effectivePriority_6 >= effectivePriority_7
|
|
? effectivePriority_6
|
|
: effectivePriority_7;
|
|
wire _left_right_T = left_right_left_1 >= left_right_right_1;
|
|
wire [3:0] left_right_1 = _left_right_T ? left_right_left_1 : left_right_right_1;
|
|
wire _left_T = left_left_1 >= left_right_1;
|
|
wire [3:0] left_1 = _left_T ? left_left_1 : left_right_1;
|
|
wire [3:0] right_left_1 =
|
|
effectivePriority_8 >= effectivePriority_9
|
|
? effectivePriority_8
|
|
: effectivePriority_9;
|
|
wire [3:0] right_right_1 =
|
|
effectivePriority_10 >= effectivePriority_11
|
|
? effectivePriority_10
|
|
: effectivePriority_11;
|
|
wire _right_T = right_left_1 >= right_right_1;
|
|
wire [3:0] right_1 = _right_T ? right_left_1 : right_right_1;
|
|
wire _GEN = left_1 >= right_1;
|
|
assign io_dev =
|
|
_GEN
|
|
? {1'h0,
|
|
_left_T
|
|
? {1'h0,
|
|
_left_left_T
|
|
? {1'h0, effectivePriority_1 > 4'h8}
|
|
: {1'h1, effectivePriority_2 < effectivePriority_3}}
|
|
: {1'h1,
|
|
_left_right_T
|
|
? {1'h0, effectivePriority_4 < effectivePriority_5}
|
|
: {1'h1, effectivePriority_6 < effectivePriority_7}}}
|
|
: {2'h2,
|
|
_right_T
|
|
? {1'h0, effectivePriority_8 < effectivePriority_9}
|
|
: {1'h1, effectivePriority_10 < effectivePriority_11}};
|
|
assign io_max = _GEN ? left_1[2:0] : right_1[2:0];
|
|
endmodule
|
|
|