blob: 08cd994972d58bd2f2312ca9223051b288c95bd9 [file] [log] [blame]
// Copyright (C) 2019-2022 The SymbiFlow Authors
//
// Use of this source code is governed by a ISC-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/ISC
//
// SPDX-License-Identifier: ISC
module simd_mult (
input wire clk,
input wire [ 7:0] a0,
input wire [ 7:0] b0,
output wire [15:0] z0,
input wire [ 7:0] a1,
input wire [ 7:0] b1,
output wire [15:0] z1
);
dsp_t1_10x9x32 dsp_0 (
.a_i (a0),
.b_i (b0),
.z_o (z0),
.clock_i (clk),
.feedback_i (3'd0),
.load_acc_i (1'b0),
.unsigned_a_i (1'b1),
.unsigned_b_i (1'b1),
.output_select_i (3'd0),
.saturate_enable_i (1'b0),
.shift_right_i (6'd0),
.round_i (1'b0),
.subtract_i (1'b0),
.register_inputs_i (1'b1)
);
dsp_t1_10x9x32 dsp_1 (
.a_i (a1),
.b_i (b1),
.z_o (z1),
.clock_i (clk),
.feedback_i (3'd0),
.load_acc_i (1'b0),
.unsigned_a_i (1'b1),
.unsigned_b_i (1'b1),
.output_select_i (3'd0),
.saturate_enable_i (1'b0),
.shift_right_i (6'd0),
.round_i (1'b0),
.subtract_i (1'b0),
.register_inputs_i (1'b1)
);
endmodule
module simd_mult_inferred (
input wire clk,
input wire [ 7:0] a0,
input wire [ 7:0] b0,
output reg [15:0] z0,
input wire [ 7:0] a1,
input wire [ 7:0] b1,
output reg [15:0] z1
);
always @(posedge clk)
z0 <= a0 * b0;
always @(posedge clk)
z1 <= a1 * b1;
endmodule
module simd_mult_odd (
input wire clk,
input wire [ 7:0] a0,
input wire [ 7:0] b0,
output wire [15:0] z0,
input wire [ 7:0] a1,
input wire [ 7:0] b1,
output wire [15:0] z1,
input wire [ 7:0] a2,
input wire [ 7:0] b2,
output wire [15:0] z2
);
dsp_t1_10x9x32 dsp_0 (
.a_i (a0),
.b_i (b0),
.z_o (z0),
.clock_i (clk),
.feedback_i (3'd0),
.load_acc_i (1'b0),
.unsigned_a_i (1'b1),
.unsigned_b_i (1'b1),
.output_select_i (3'd0),
.saturate_enable_i (1'b0),
.shift_right_i (6'd0),
.round_i (1'b0),
.subtract_i (1'b0),
.register_inputs_i (1'b1)
);
dsp_t1_10x9x32 dsp_1 (
.a_i (a1),
.b_i (b1),
.z_o (z1),
.clock_i (clk),
.feedback_i (3'd0),
.load_acc_i (1'b0),
.unsigned_a_i (1'b1),
.unsigned_b_i (1'b1),
.output_select_i (3'd0),
.saturate_enable_i (1'b0),
.shift_right_i (6'd0),
.round_i (1'b0),
.subtract_i (1'b0),
.register_inputs_i (1'b1)
);
dsp_t1_10x9x32 dsp_2 (
.a_i (a2),
.b_i (b2),
.z_o (z2),
.clock_i (clk),
.feedback_i (3'd0),
.load_acc_i (1'b0),
.unsigned_a_i (1'b1),
.unsigned_b_i (1'b1),
.output_select_i (3'd0),
.saturate_enable_i (1'b0),
.shift_right_i (6'd0),
.round_i (1'b0),
.subtract_i (1'b0),
.register_inputs_i (1'b1)
);
endmodule
module simd_mult_conflict (
input wire clk0,
input wire clk1,
input wire [ 7:0] a0,
input wire [ 7:0] b0,
output wire [15:0] z0,
input wire [ 7:0] a1,
input wire [ 7:0] b1,
output wire [15:0] z1
);
dsp_t1_10x9x32 dsp_0 (
.a_i (a0),
.b_i (b0),
.z_o (z0),
.clock_i (clk0),
.feedback_i (3'd0),
.load_acc_i (1'b0),
.unsigned_a_i (1'b1),
.unsigned_b_i (1'b1),
.output_select_i (3'd0),
.saturate_enable_i (1'b0),
.shift_right_i (6'd0),
.round_i (1'b0),
.subtract_i (1'b0),
.register_inputs_i (1'b1)
);
dsp_t1_10x9x32 dsp_1 (
.a_i (a1),
.b_i (b1),
.z_o (z1),
.clock_i (clk1),
.feedback_i (3'd0),
.load_acc_i (1'b0),
.unsigned_a_i (1'b1),
.unsigned_b_i (1'b1),
.output_select_i (3'd0),
.saturate_enable_i (1'b0),
.shift_right_i (6'd0),
.round_i (1'b0),
.subtract_i (1'b0),
.register_inputs_i (1'b1)
);
endmodule