Oceanhorn: Monster of Uncharted Seas, Oceanhorn 2: Knights of the Lost Realm, Oceanhorn: Chronos Dungeon

8 Bit Array Multiplier: Verilog Code

assign final_sum[7] = final_carry[6];

// Final row (i=7) wire [7:0] final_carry; generate for (j = 0; j < 7; j = j + 1) begin if (j == 0) ha ha_final (.a(pp[7][0]), .b(s[6][0]), .sum(s[7][j]), .carry(final_carry[j])); else fa fa_final (.a(pp[7][j]), .b(s[6][j]), .cin(final_carry[j-1]), .sum(s[7][j]), .cout(final_carry[j])); end assign s[7][7] = final_carry[6]; endgenerate 8 bit array multiplier verilog code

This work implements an using structural and dataflow modeling in Verilog. 2. Multiplication Algorithm Let the multiplicand be ( A = A_7A_6...A_0 ) and multiplier be ( B = B_7B_6...B_0 ). The product ( P = A \times B ) is computed as: assign final_sum[7] = final_carry[6]; // Final row (i=7)

[ P = \sum_i=0^7 (A \cdot B_i) \cdot 2^i ] The product ( P = A \times B

// Generate partial products: pp[i][j] = A[i] & B[j] genvar i, j; generate for (i = 0; i < 8; i = i + 1) begin : pp_gen for (j = 0; j < 8; j = j + 1) begin : bit_gen assign pp[i][j] = A[i] & B[j]; end end endgenerate

Abstract —This paper presents the design, implementation, and simulation of an 8-bit array multiplier using Verilog HDL. Array multipliers offer a regular structure suitable for VLSI implementation. The design utilizes full adders and half adders arranged in a systolic array to compute the product of two 8-bit unsigned numbers, resulting in a 16-bit output. The code is synthesized for generic digital design and validated through simulation testbenches. 1. Introduction Multiplication is a fundamental arithmetic operation in digital signal processing (DSP), microprocessors, and AI accelerators. While sequential multipliers save area, parallel array multipliers achieve high speed by computing partial products simultaneously. The array multiplier is particularly attractive due to its regular layout, making it easy to fabricate and pipeline.