16
Program:
module mul4(a,b,p);
input[3:0]a,b;
output[7:0]p;
wire[15:1]c;
wire[10:0]q;
wire[6:1]s;
andf a0(a[0],b[0],p[0]);
andf a1(a[1],b[0],c[1]);
andf a2(a[2],b[0],c[2]);
andf a3(a[3],b[0],c[3]);
andf a4(a[0],b[1],c[4]);
andf a5(a[1],b[1],c[5]);
andf a6(a[2],b[1],c[6]);
andf a7(a[3],b[1],c[7]);
andf a8(a[0],b[2],c[8]);
andf a9(a[1],b[2],c[9]);
andf a10(a[2],b[2],c[10]);
andf a11(a[3],b[2],c[11]);
andf a12(a[0],b[3],c[12]);
andf a13(a[1],b[3],c[13]);
andf a14(a[2],b[3],c[14]);
andf a15(a[3],b[3],c[15]);
fulladd f0(c[1],c[4],1'b0,p[1],q[0]);
fulladd f1(q[0],c[2],c[5],s[1],q[1]);
fulladd f2(q[1],c[3],c[6],s[2],q[2]);
fulladd f3(q[2],1'b0,c[7],s[3],q[3]);
fulladd f4(s[1],1'b0,c[8],p[2],q[4]);
fulladd f5(q[4],s[2],c[9],s[4],q[5]);
fulladd f6(q[5],s[3],c[10],s[5],q[6]);
fulladd f7(q[6],q[3],c[11],s[6],q[7]);
fulladd f8(s[4],1'b0,c[12],p[3],q[8]);
fulladd f9(q[8],s[5],c[13],p[4],q[9]);
fulladd f10(q[9],s[6],c[14],p[5],q[10]);
fulladd f11(q[10],q[7],c[15],p[6],p[7]);
endmodule
Test Bench
module multest;
reg[3:0]ta,tb;
wire[7:0]tp;
mul4 m1(ta,tb,tp);
initial
begin
ta=4'b0011;
tb=4'b0011;
#100
ta=4'b0111;
tb=4'b0011;
#100
ta=4'b1000;
tb=4'b0011;
#100
ta=4'b0011;
tb=4'b1001;
end
endmodule