module maxmin4(
input [3:0] a,
input [3:0] b,
input [3:0] c,
input [3:0] d,
output reg [3:0] max,
output reg [3:0] min
);
reg [3:0] max1, min1;
reg [3:0] max2, min2;
reg [3:0] discard;
task minmax(
input [3:0] ta,
input [3:0] tb,
output [3:0] tmin,
output [3:0] tmax
);
begin
tmax = (ta > tb) ? ta : tb;
tmin = (ta < tb) ? ta : tb;
end
endtask
always @* begin
minmax(a, b, min1, max1);
minmax(c, d, min2, max2);
minmax(max1, max2, discard, max);
minmax(min1, min2, min, discard);
end
endmodule