ramblings
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
module mult_timing_test(
|
||||
input i_clk,
|
||||
|
||||
input logic [132:0] data_a,
|
||||
input logic [127:0] data_b,
|
||||
|
||||
output logic [260:0] data_z
|
||||
);
|
||||
|
||||
logic [132:0] data_a_reg;
|
||||
logic [127:0] data_b_reg;
|
||||
|
||||
|
||||
logic [260:0] partial_result [7];
|
||||
|
||||
logic [260:0] data_z_temp_1[4];
|
||||
logic [260:0] data_z_temp_2_0, data_z_temp_2_1;
|
||||
|
||||
always @(posedge i_clk) begin
|
||||
data_a_reg <= data_a;
|
||||
data_b_reg <= data_b;
|
||||
|
||||
for (int i = 0; i < 7; i++) begin
|
||||
partial_result[i] <= data_a_reg[i*18 +: 18] * data_b_reg;
|
||||
end
|
||||
|
||||
|
||||
data_z_temp_1[0] <= (partial_result[0] << (19*0)) + (partial_result[1] << (19*1));
|
||||
data_z_temp_1[1] <= (partial_result[2] << (19*0)) + (partial_result[3] << (19*1));
|
||||
data_z_temp_1[2] <= (partial_result[4] << (19*0)) + (partial_result[5] << (19*1));
|
||||
data_z_temp_1[3] <= (partial_result[6] << (19*0));
|
||||
|
||||
data_z_temp_2_0 <= data_z_temp_1[0] + (data_z_temp_1[1] << (19*2));
|
||||
data_z_temp_2_1 <= data_z_temp_1[2] + (data_z_temp_1[3] << (19*2));
|
||||
|
||||
data_z <= data_z_temp_2_0 + data_z_temp_2_1;
|
||||
|
||||
// data_z <= data_z_temp_2[0] + (data_z_temp_2[1] << (19*4));
|
||||
|
||||
end
|
||||
|
||||
endmodule
|
||||
Reference in New Issue
Block a user