3-bit Multiplier Verilog Code Jun 2026

iverilog -o mul3bit tb_mul3bit.v mul3bit_struct.v && vvp mul3bit

endmodule

// Generate partial products (AND gates) assign pp0 = a[2] & b[0], a[1] & b[0], a[0] & b[0]; assign pp1 = a[2] & b[1], a[1] & b[1], a[0] & b[1]; assign pp2 = a[2] & b[2], a[1] & b[2], a[0] & b[2]; 3-bit multiplier verilog code

module full_adder ( input a, b, cin, output sum, cout ); assign sum = a ^ b ^ cin; assign cout = (a & b) | (b & cin) | (a & cin); endmodule iverilog -o mul3bit tb_mul3bit

// Shift right multiplier mult_reg <= mult_reg >> 1; // Shift left multiplicand for next partial product mcand_reg <= mcand_reg[1:0], 1'b0; bit_count <= bit_count + 1; end a[1] & b[0]

// Better: Explicit bit-slice addition. wire [3:0] sumA, sumB; assign sumA = 1'b0, pp0 + pp1, 1'b0; // Add first two partial products (5-bit) assign sumB = sumA, 1'b0 + pp2, 3'b0; // Add third shifted PP (6-bit)