diff options
| author | gatecat <gatecat@ds0.me> | 2021-07-08 16:58:44 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-08 16:58:44 +0100 | 
| commit | 7b62c7fa50dda23321f0e81cd0002e46370fc45c (patch) | |
| tree | 3eea19e4b01e4e12b186ce7d571aeeef3cfe4fc5 /fpga_interchange/arch_pack_clusters.cc | |
| parent | 6829e4c197758a4bd68449e4843a6b3992ca3723 (diff) | |
| parent | b64642fc9919a009fc4c286a15fc255dff549ed5 (diff) | |
| download | nextpnr-7b62c7fa50dda23321f0e81cd0002e46370fc45c.tar.gz nextpnr-7b62c7fa50dda23321f0e81cd0002e46370fc45c.tar.bz2 nextpnr-7b62c7fa50dda23321f0e81cd0002e46370fc45c.zip | |
Merge pull request #756 from acomodi/fix-clustering-runtime
interchange: reduce run-time to check dedicated interconnect
Diffstat (limited to 'fpga_interchange/arch_pack_clusters.cc')
| -rw-r--r-- | fpga_interchange/arch_pack_clusters.cc | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/fpga_interchange/arch_pack_clusters.cc b/fpga_interchange/arch_pack_clusters.cc index 18162aa4..f4e50233 100644 --- a/fpga_interchange/arch_pack_clusters.cc +++ b/fpga_interchange/arch_pack_clusters.cc @@ -193,6 +193,8 @@ bool Arch::getClusterPlacement(ClusterId cluster, BelId root_bel,      const Context *ctx = getCtx();      const Cluster &packed_cluster = clusters.at(cluster); +    auto &cluster_data = cluster_info(chip_info, packed_cluster.index); +      CellInfo *root_cell = getClusterRootCell(cluster);      if (!ctx->isValidBelForCellType(root_cell->type, root_bel))          return false; @@ -205,8 +207,6 @@ bool Arch::getClusterPlacement(ClusterId cluster, BelId root_bel,              next_bel = root_bel;          } else {              // Find next chained cluster node -            auto &cluster_data = cluster_info(chip_info, packed_cluster.index); -              IdString next_bel_pin(cluster_data.chainable_ports[0].bel_source);              WireId next_bel_pin_wire = ctx->getBelPinWire(next_bel, next_bel_pin);              next_bel = BelId(); @@ -256,7 +256,8 @@ bool Arch::getClusterPlacement(ClusterId cluster, BelId root_bel,                  WireId bel_pin_wire = ctx->getBelPinWire(next_bel, bel_pin);                  ExpansionDirection direction = port_type == PORT_IN ? CLUSTER_UPHILL_DIR : CLUSTER_DOWNHILL_DIR; -                pool<BelId> cluster_bels = find_cluster_bels(ctx, bel_pin_wire, direction); +                pool<BelId> cluster_bels = +                        find_cluster_bels(ctx, bel_pin_wire, direction, (bool)cluster_data.out_of_site_clusters);                  if (cluster_bels.size() == 0)                      continue; | 
