diff options
author | Eddie Hung <eddie@fpgeh.com> | 2019-07-16 08:52:14 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-16 08:52:14 -0700 |
commit | ba8ccbdea88fe432187e2481a8525cc1c53b4cf4 (patch) | |
tree | ce3c29d03229cfb18392f2ddc835ce66056aeee4 /techlibs/ice40/cells_sim.v | |
parent | a1a04ea79c4d006baa7204ba5ca77870f45aa633 (diff) | |
parent | 5fb27c071bb072644dbb38cf8a516628c2afe15b (diff) | |
download | yosys-ba8ccbdea88fe432187e2481a8525cc1c53b4cf4.tar.gz yosys-ba8ccbdea88fe432187e2481a8525cc1c53b4cf4.tar.bz2 yosys-ba8ccbdea88fe432187e2481a8525cc1c53b4cf4.zip |
Merge pull request #1186 from YosysHQ/eddie/abc9_ice40_fix
abc9/ice40: encapsulate SB_CARRY+SB_LUT4 into one box
Diffstat (limited to 'techlibs/ice40/cells_sim.v')
-rw-r--r-- | techlibs/ice40/cells_sim.v | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/techlibs/ice40/cells_sim.v b/techlibs/ice40/cells_sim.v index b746ba4e5..609facc93 100644 --- a/techlibs/ice40/cells_sim.v +++ b/techlibs/ice40/cells_sim.v @@ -127,7 +127,7 @@ endmodule // SiliconBlue Logic Cells -(* abc_box_id = 2, lib_whitebox *) +(* lib_whitebox *) module SB_LUT4 (output O, input I0, I1, I2, I3); parameter [15:0] LUT_INIT = 0; wire [7:0] s3 = I3 ? LUT_INIT[15:8] : LUT_INIT[7:0]; @@ -136,11 +136,34 @@ module SB_LUT4 (output O, input I0, I1, I2, I3); assign O = I0 ? s1[1] : s1[0]; endmodule -(* abc_box_id = 1, abc_carry="CI,CO", lib_whitebox *) +(* lib_whitebox *) module SB_CARRY (output CO, input I0, I1, CI); assign CO = (I0 && I1) || ((I0 || I1) && CI); endmodule +(* abc_box_id = 1, abc_carry="CI,CO", lib_whitebox *) +module \$__ICE40_FULL_ADDER (output CO, O, input A, B, CI); + SB_CARRY carry ( + .I0(A), + .I1(B), + .CI(CI), + .CO(CO) + ); + SB_LUT4 #( + // I0: 1010 1010 1010 1010 + // I1: 1100 1100 1100 1100 + // I2: 1111 0000 1111 0000 + // I3: 1111 1111 0000 0000 + .LUT_INIT(16'b 0110_1001_1001_0110) + ) adder ( + .I0(1'b0), + .I1(A), + .I2(B), + .I3(CI), + .O(O) + ); +endmodule + // Positive Edge SiliconBlue FF Cells module SB_DFF (output `SB_DFF_REG, input C, D); |