From 7abfd3677318152e1ff70d68a6664422b7efe5e6 Mon Sep 17 00:00:00 2001 From: David Shah Date: Tue, 19 Jun 2018 13:35:01 +0200 Subject: ice40: Don't deduplicate local tracks when counting Signed-off-by: David Shah --- ice40/arch_place.cc | 19 +++++++++---------- python/dump_design.py | 4 ++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/ice40/arch_place.cc b/ice40/arch_place.cc index 6223c801..c8806852 100644 --- a/ice40/arch_place.cc +++ b/ice40/arch_place.cc @@ -39,8 +39,7 @@ static bool logicCellsCompatible(const Context *ctx, { bool dffs_exist = false, dffs_neg = false; const NetInfo *cen = nullptr, *clk = nullptr, *sr = nullptr; - static std::unordered_set locals; - locals.clear(); + int locals_count = 0; for (auto cell : cells) { if (bool_or_default(cell->params, "DFF_ENABLE")) { @@ -51,11 +50,11 @@ static bool logicCellsCompatible(const Context *ctx, sr = get_net_or_empty(cell, "SR"); if (!is_global_net(ctx, cen) && cen != nullptr) - locals.insert(cen->name); + locals_count++; if (!is_global_net(ctx, clk) && clk != nullptr) - locals.insert(clk->name); + locals_count++; if (!is_global_net(ctx, sr) && sr != nullptr) - locals.insert(sr->name); + locals_count++; if (bool_or_default(cell->params, "NEG_CLK")) { dffs_neg = true; @@ -77,16 +76,16 @@ static bool logicCellsCompatible(const Context *ctx, *i2 = get_net_or_empty(cell, "I2"), *i3 = get_net_or_empty(cell, "I3"); if (i0 != nullptr) - locals.insert(i0->name); + locals_count++; if (i1 != nullptr) - locals.insert(i1->name); + locals_count++; if (i2 != nullptr) - locals.insert(i2->name); + locals_count++; if (i3 != nullptr) - locals.insert(i3->name); + locals_count++; } - return locals.size() <= 32; + return locals_count <= 32; } bool isBelLocationValid(Context *ctx, BelId bel) diff --git a/python/dump_design.py b/python/dump_design.py index 3408ef9d..37309f6f 100644 --- a/python/dump_design.py +++ b/python/dump_design.py @@ -1,5 +1,5 @@ # Run ./nextpnr-ice40 --json ice40/blinky.json --run python/dump_design.py -for cell, cinfo in sorted(design.cells, key=lambda x: x.first): +for cell, cinfo in sorted(ctx.cells, key=lambda x: x.first): print("Cell {} : {}".format(cell, cinfo.type)) print("\tPorts:") for port, pinfo in sorted(cinfo.ports, key=lambda x: x.first): @@ -21,5 +21,5 @@ for cell, cinfo in sorted(design.cells, key=lambda x: x.first): print("\t\t{}: {}".format(param, val)) if cinfo.bel.index != -1: - print("\tBel: {}".format(chip.getBelName(cinfo.bel))) + print("\tBel: {}".format(ctx.getBelName(cinfo.bel))) print() -- cgit v1.2.3