aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/anlogic/arith_map.v
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-08-08 11:40:09 +0100
committerDavid Shah <dave@ds0.me>2019-08-08 11:40:09 +0100
commit83b2e0272333cfcc2529e0833723a52c066146a6 (patch)
tree9985b7f840383419ebd5b189023ca6871a02d5a9 /techlibs/anlogic/arith_map.v
parentb8cd4ad64ae9a45faecffc1a6b92a8219755bc60 (diff)
parentfb568ddb4e2ccaab352d9d062f6b4926aca75680 (diff)
downloadyosys-83b2e0272333cfcc2529e0833723a52c066146a6.tar.gz
yosys-83b2e0272333cfcc2529e0833723a52c066146a6.tar.bz2
yosys-83b2e0272333cfcc2529e0833723a52c066146a6.zip
Merge branch 'xc7dsp' of github.com:YosysHQ/yosys into xc7dsp
Diffstat (limited to 'techlibs/anlogic/arith_map.v')
-rw-r--r--techlibs/anlogic/arith_map.v24
1 files changed, 8 insertions, 16 deletions
diff --git a/techlibs/anlogic/arith_map.v b/techlibs/anlogic/arith_map.v
index 11cd140ec..6d6a7ca37 100644
--- a/techlibs/anlogic/arith_map.v
+++ b/techlibs/anlogic/arith_map.v
@@ -42,10 +42,9 @@ module _80_anlogic_alu (A, B, CI, BI, X, Y, CO);
wire [Y_WIDTH-1:0] AA = A_buf;
wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf;
wire [Y_WIDTH+1:0] COx;
- wire [Y_WIDTH+1:0] C = {COx, CI};
+ wire [Y_WIDTH+2:0] C = {COx, CI};
wire dummy;
- (* keep *)
AL_MAP_ADDER #(
.ALUTYPE("ADD_CARRY"))
adder_cin (
@@ -55,19 +54,6 @@ module _80_anlogic_alu (A, B, CI, BI, X, Y, CO);
genvar i;
generate for (i = 0; i < Y_WIDTH; i = i + 1) begin: slice
- if(i==Y_WIDTH-1) begin
- (* keep *)
- AL_MAP_ADDER #(
- .ALUTYPE("ADD"))
- adder_cout (
- .c(C[Y_WIDTH]),
- .o(COx[Y_WIDTH])
- );
- assign CO = COx[Y_WIDTH];
- end
- else
- begin
- (* keep *)
AL_MAP_ADDER #(
.ALUTYPE("ADD")
) adder_i (
@@ -76,9 +62,15 @@ module _80_anlogic_alu (A, B, CI, BI, X, Y, CO);
.c(C[i+1]),
.o({COx[i+1],Y[i]})
);
- end
end: slice
endgenerate
/* End implementation */
+ AL_MAP_ADDER #(
+ .ALUTYPE("ADD"))
+ adder_cout (
+ .c(C[Y_WIDTH+1]),
+ .o(COx[Y_WIDTH+1])
+ );
+ assign CO = COx[Y_WIDTH+1];
assign X = AA ^ BB;
endmodule \ No newline at end of file