BEHAVIORAL DESCRIPTION
module array_multiplier(A, B, P);
input [3:0] A, B;
output [7:0] P;
reg [7:0] P_reg = 0;
assign P = P_reg;
always @(*)
begin
P_reg = 0;
if(B[0] == 1) P_reg = P_reg + (A << 0);
if(B[1] == 1) P_reg = P_reg + (A << 1);
if(B[2] == 1) P_reg = P_reg + (A << 2);
if(B[3] == 1) P_reg = P_reg + (A << 3);
end
endmodule
TEST BENCH:--
module tb_array_multiplier;
reg [3:0] A, B;
wire [7:0] P;
array_multiplier uut (A, B, P);
initial
begin
A = 4'b0011; B = 4'b0101; #10;
A = 4'b1111; B = 4'b0001; #10;
A = 4'b1010; B = 4'b0011; #10;
A = 4'b0110; B = 4'b0110; #10;
A = 4'b1111; B = 4'b1111; #10;
end
endmodule
OUTPUT