3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-07-19 10:52:03 +00:00
This commit is contained in:
Eddie Hung 2019-07-15 11:19:54 -07:00
parent 20e3d2d9b0
commit 1793e6018a

View file

@ -32,11 +32,8 @@ module \$mul (A, B, Y);
input [B_WIDTH-1:0] B; input [B_WIDTH-1:0] B;
output [Y_WIDTH-1:0] Y; output [Y_WIDTH-1:0] Y;
wire [1023:0] _TECHMAP_DO_ = "proc; clean";
generate
if (A_WIDTH<B_WIDTH) begin
generate generate
if (A_WIDTH < B_WIDTH)
\$__mul_gen #( \$__mul_gen #(
.A_SIGNED(A_SIGNED), .A_SIGNED(A_SIGNED),
.B_SIGNED(B_SIGNED), .B_SIGNED(B_SIGNED),
@ -46,12 +43,9 @@ module \$mul (A, B, Y);
) mul_slice ( ) mul_slice (
.A(A), .A(A),
.B(B), .B(B),
.Y(Y[Y_WIDTH-1:0]) .Y(Y)
); );
endgenerate else
end
else begin
generate
\$__mul_gen #( \$__mul_gen #(
.A_SIGNED(B_SIGNED), .A_SIGNED(B_SIGNED),
.B_SIGNED(A_SIGNED), .B_SIGNED(A_SIGNED),
@ -61,11 +55,9 @@ module \$mul (A, B, Y);
) mul_slice ( ) mul_slice (
.A(B), .A(B),
.B(A), .B(A),
.Y(Y[Y_WIDTH-1:0]) .Y(Y)
); );
endgenerate endgenerate
end
endgenerate
endmodule endmodule
module \$__mul_gen (A, B, Y); module \$__mul_gen (A, B, Y);
@ -81,6 +73,7 @@ module \$__mul_gen (A, B, Y);
wire [1023:0] _TECHMAP_DO_ = "proc; clean"; wire [1023:0] _TECHMAP_DO_ = "proc; clean";
genvar i;
generate generate
if (A_WIDTH > `DSP_A_MAXWIDTH) begin if (A_WIDTH > `DSP_A_MAXWIDTH) begin
localparam n_floored = A_WIDTH/`DSP_A_MAXWIDTH; localparam n_floored = A_WIDTH/`DSP_A_MAXWIDTH;
@ -101,8 +94,6 @@ module \$__mul_gen (A, B, Y);
); );
assign partial_sum[0][Y_WIDTH-1:B_WIDTH+`DSP_A_MAXWIDTH]=0; assign partial_sum[0][Y_WIDTH-1:B_WIDTH+`DSP_A_MAXWIDTH]=0;
genvar i;
generate
for (i = 1; i < n-1; i=i+1) begin:slice for (i = 1; i < n-1; i=i+1) begin:slice
\$__mul_gen #( \$__mul_gen #(
.A_SIGNED(A_SIGNED), .A_SIGNED(A_SIGNED),
@ -122,7 +113,6 @@ module \$__mul_gen (A, B, Y);
partial_sum[i-1][(i*`DSP_A_MAXWIDTH)-1:0] partial_sum[i-1][(i*`DSP_A_MAXWIDTH)-1:0]
}; };
end end
endgenerate
\$__mul_gen #( \$__mul_gen #(
.A_SIGNED(A_SIGNED), .A_SIGNED(A_SIGNED),
@ -161,8 +151,6 @@ module \$__mul_gen (A, B, Y);
); );
assign partial_sum[0][Y_WIDTH-1:A_WIDTH+`DSP_B_MAXWIDTH]=0; assign partial_sum[0][Y_WIDTH-1:A_WIDTH+`DSP_B_MAXWIDTH]=0;
genvar i;
generate
for (i = 1; i < n-1; i=i+1) begin:slice for (i = 1; i < n-1; i=i+1) begin:slice
\$__mul_gen #( \$__mul_gen #(
.A_SIGNED(A_SIGNED), .A_SIGNED(A_SIGNED),
@ -187,7 +175,6 @@ module \$__mul_gen (A, B, Y);
partial_sum[i-1][(i*`DSP_B_MAXWIDTH)-1:0] partial_sum[i-1][(i*`DSP_B_MAXWIDTH)-1:0]
}; };
end end
endgenerate
\$__mul_gen #( \$__mul_gen #(
.A_SIGNED(A_SIGNED), .A_SIGNED(A_SIGNED),