mirror of https://github.com/YosysHQ/nextpnr.git
nexus: Fix slow routing around DQSBUFs
Signed-off-by: gatecat <gatecat@ds0.me>
This commit is contained in:
parent
f8097c3127
commit
da46844ca6
|
|
@ -736,7 +736,10 @@ BoundingBox Arch::getRouteBoundingBox(WireId src, WireId dst) const
|
||||||
bb.y0 = std::max<int>(0, bb.y0 - 7);
|
bb.y0 = std::max<int>(0, bb.y0 - 7);
|
||||||
bb.y1 = std::min<int>(chip_info->width, bb.y1 + 7);
|
bb.y1 = std::min<int>(chip_info->width, bb.y1 + 7);
|
||||||
}
|
}
|
||||||
|
if (dqsbuf_wires.count(src) || dqsbuf_wires.count(dst)) {
|
||||||
|
bb.x0 = std::max<int>(0, bb.x0 - 6);
|
||||||
|
bb.x1 = std::min<int>(chip_info->width, bb.x1 + 6);
|
||||||
|
}
|
||||||
return bb;
|
return bb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -796,6 +799,13 @@ void Arch::pre_routing()
|
||||||
lram_wires.insert(wire);
|
lram_wires.insert(wire);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ci->type == id_DQSBUF_CORE) {
|
||||||
|
for (auto &port : ci->ports) {
|
||||||
|
WireId wire = getBelPinWire(ci->bel, port.first);
|
||||||
|
if (wire != WireId())
|
||||||
|
dqsbuf_wires.insert(wire);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
namespace {
|
namespace {
|
||||||
|
|
|
||||||
|
|
@ -1319,7 +1319,7 @@ struct Arch : BaseArch<ArchRanges>
|
||||||
|
|
||||||
// for better DSP bounding boxes
|
// for better DSP bounding boxes
|
||||||
void pre_routing();
|
void pre_routing();
|
||||||
pool<WireId> dsp_wires, lram_wires;
|
pool<WireId> dsp_wires, lram_wires, dqsbuf_wires;
|
||||||
|
|
||||||
// -------------------------------------------------
|
// -------------------------------------------------
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue