aboutsummaryrefslogtreecommitdiffstats
path: root/ice40
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-12-14 19:27:20 +0000
committergatecat <gatecat@ds0.me>2021-12-14 19:27:20 +0000
commita946ed0206cda29ce1bfe7f5a09f1b5e3d21794d (patch)
treeddfc2c7888d4be2d027022adf37f979384dc9640 /ice40
parent256134d6158b59831462f26f0011627eda10beb2 (diff)
downloadnextpnr-a946ed0206cda29ce1bfe7f5a09f1b5e3d21794d.tar.gz
nextpnr-a946ed0206cda29ce1bfe7f5a09f1b5e3d21794d.tar.bz2
nextpnr-a946ed0206cda29ce1bfe7f5a09f1b5e3d21794d.zip
ice40: Pack LUT at start of carry chain if there is 1 candidate
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'ice40')
-rw-r--r--ice40/pack.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/ice40/pack.cc b/ice40/pack.cc
index 0db78992..921e73e0 100644
--- a/ice40/pack.cc
+++ b/ice40/pack.cc
@@ -203,6 +203,8 @@ static void pack_carries(Context *ctx)
CellInfo *carry_lc = nullptr;
if (carry_ci_lc && carry_lcs.find(carry_ci_lc->name) != carry_lcs.end()) {
carry_lc = carry_ci_lc;
+ } else if (ci_const && carry_lcs.size() == 1) {
+ carry_lc = ctx->cells.at(*(carry_lcs.begin())).get();
} else {
// No LC to pack into matching I0/I1, insert a new one
std::unique_ptr<CellInfo> created_lc =