aboutsummaryrefslogtreecommitdiffstats
path: root/ice40/pack.cc
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-02-09 10:31:24 +0000
committerDavid Shah <dave@ds0.me>2019-02-09 10:41:22 +0000
commit170bf8a5ecb9e0806a2ddafc6f7dd8007b21f481 (patch)
tree352307340fc89fb8c74dd7bb0de58c80f293bd86 /ice40/pack.cc
parentdb990d21752ad6eaecc0ca809d8eef4a910cfb03 (diff)
downloadnextpnr-170bf8a5ecb9e0806a2ddafc6f7dd8007b21f481.tar.gz
nextpnr-170bf8a5ecb9e0806a2ddafc6f7dd8007b21f481.tar.bz2
nextpnr-170bf8a5ecb9e0806a2ddafc6f7dd8007b21f481.zip
ice40: Don't create PLLOUT_B buffer for single-output PLL variants
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ice40/pack.cc')
-rw-r--r--ice40/pack.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/ice40/pack.cc b/ice40/pack.cc
index a86083b6..6b3ddefc 100644
--- a/ice40/pack.cc
+++ b/ice40/pack.cc
@@ -1063,7 +1063,12 @@ static void pack_special(Context *ctx)
create_ice_cell(ctx, ctx->id("ICESTORM_PLL"), ci->name.str(ctx) + "_PLL");
packed->attrs[ctx->id("TYPE")] = ci->type.str(ctx);
packed_cells.insert(ci->name);
-
+ if (!is_sb_pll40_dual(ctx, ci)) {
+ // Remove second output, so a buffer isn't created for it, for these
+ // cell types with only one output
+ packed->ports.erase(ctx->id("PLLOUT_B"));
+ packed->ports.erase(ctx->id("PLLOUT_B_GLOBAL"));
+ }
for (auto attr : ci->attrs)
packed->attrs[attr.first] = attr.second;
for (auto param : ci->params)