`timescale 1ns/1ns

module comparator_4(
	input		[3:0]       A   	,
	input	   [3:0]		B   	,
 
 	output	 wire		Y2    , //A>B
	output   wire        Y1    , //A=B
    output   wire        Y0      //A<B
);
wire[3:0] y0,y1,y2;
genvar i;
  for (i=0;i<4;i=i+1)
    begin
comparator_1 u(.a(A[i]),.b(B[i]),.y0(y0[i]),.y1(y1[i]),.y2(y2[i]));
	end
assign Y2=y2[3]||y1[3]&y2[2]||y1[3]&y1[2]&y2[1]||y1[3]&y1[2]&y1[1]&y2[0];
assign Y0=y0[3]||y1[3]&y0[2]||y1[3]&y1[2]&y0[1]||y1[3]&y1[2]&y1[1]&y0[0];
assign Y1=&y1;
endmodule

module comparator_1(
input a,
input b,
output y0, y1,y2
);
assign y2=a&~b;
assign y1=a~^b;
assign y0=~a&b;
endmodule