module Top_counter_74163(Qin1,Qin2,Qin3,Carry, Din1,Din2,Din3, CLK, LdN, ClrN,P,T);
input [3:0] Din1;
input [3:0] Din2;
input [3:0] Din3;
input CLK,LdN,ClrN,P,T;
output [3:0] Qin1;
output [3:0] Qin2;
output [3:0] Qin3;
output [2:0] Carry;
wire [3:0] Qin1;
wire [3:0] Qin2;
wire [3:0] Qin3;
wire [2:0] Carry;
counter_74163 A1(.Q(Qin1),
.Cout(Carry[0]),
.D(Din1),
.CLK(CLK),
.LdN(LdN),
.ClrN(ClrN),
.P(P),
.T(T)
);
counter_74163 A2(.Q(Qin2),
.Cout(Carry[1]),
.D(Din2),
.CLK(CLK),
.LdN(LdN),
.ClrN(ClrN),
.P(P),
.T(Carry[0])
);
counter_74163 A3(.Q(Qin3),
.Cout(Carry[2]),
.D(Din3),
.CLK(CLK),
.LdN(LdN),
.ClrN(ClrN),
.P(P),
.T(Carry[1])
);
endmodule
module tb_74163_12bit();
reg CLK,LdN,ClrN,P,T;
reg [3:0] Din1;
reg [3:0] Din2;
reg [3:0] Din3;
wire [3:0] Qin1;
wire [3:0] Qin2;
wire [3:0] Qin3;
wire [2:0] Carry;
Top_counter_74163 m1(.Qin1(Qin1),
.Qin2(Qin2),
.Qin3(Qin3),
.Carry(Carry),
.Din1(Din1),
.Din2(Din2),
.Din3(Din3),
.CLK(CLK),
.LdN(LdN),
.ClrN(ClrN),
.P(P),
.T(T));
initial CLK=1'b0;
always #5 CLK=~CLK;
initial
begin
#5 LdN=0;
#10 LdN=1;
#40 LdN=0;
#10 LdN=1;
#35 LdN=0;
#10 LdN=1;
#55 LdN=0;
#10 LdN=1;
end
initial
begin
Din1=4'b1100;
#55 Din1=4'b1101;
#45 Din1=4'b1101;
#55 Din1=4'b1000;
end
initial
begin
Din2=4'b1110;
#55 Din2=4'b1111;
#100 Din2=4'b1100;
end
initial
begin
Din3=4'b1110;
#100 Din3=4'b1111;
#55 Din3=4'b1110;
end
initial
begin
T=1;
P=1;
#215 P=0;
#10 P=1;
end
initial
begin
ClrN=1;
#185 ClrN=0;
#10 ClrN=1;
end
endmodule