aboutsummaryrefslogtreecommitdiffstats
path: root/fpga_interchange/arch.cc
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-05-05 10:36:32 +0100
committergatecat <gatecat@ds0.me>2021-05-07 10:28:59 +0100
commit9a1cad85fe66138c6be2da0ad0a5349240f5a546 (patch)
tree7916c09f6b579d8d011672796f68996d5ebf7f37 /fpga_interchange/arch.cc
parent9b3fb00908739ebd8a6684e68110a35e888b62ef (diff)
downloadnextpnr-9a1cad85fe66138c6be2da0ad0a5349240f5a546.tar.gz
nextpnr-9a1cad85fe66138c6be2da0ad0a5349240f5a546.tar.bz2
nextpnr-9a1cad85fe66138c6be2da0ad0a5349240f5a546.zip
interchange: Adding a basic global buffer placer
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'fpga_interchange/arch.cc')
-rw-r--r--fpga_interchange/arch.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/fpga_interchange/arch.cc b/fpga_interchange/arch.cc
index ee462848..938c4f2c 100644
--- a/fpga_interchange/arch.cc
+++ b/fpga_interchange/arch.cc
@@ -479,6 +479,14 @@ IdString Arch::getWireType(WireId wire) const
return IdString(chip_info->wire_types[wire_type].name);
}
+bool Arch::is_site_wire(WireId wire) const
+{
+ if (wire.tile == -1)
+ return false;
+ const auto &tile_type = loc_info(chip_info, wire);
+ return tile_type.wire_data[wire.index].site != -1;
+}
+
WireCategory Arch::get_wire_category(WireId wire) const
{
int tile = wire.tile, index = wire.index;
@@ -791,6 +799,8 @@ bool Arch::place()
getCtx()->check();
#endif
+ place_globals();
+
std::string placer = str_or_default(settings, id("placer"), defaultPlacer);
if (placer == "heap") {
PlacerHeapCfg cfg(getCtx());