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.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;
|
||||
}
|
||||
|
||||
|
|
@ -796,6 +799,13 @@ void Arch::pre_routing()
|
|||
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 {
|
||||
|
|
|
|||
|
|
@ -1319,7 +1319,7 @@ struct Arch : BaseArch<ArchRanges>
|
|||
|
||||
// for better DSP bounding boxes
|
||||
void pre_routing();
|
||||
pool<WireId> dsp_wires, lram_wires;
|
||||
pool<WireId> dsp_wires, lram_wires, dqsbuf_wires;
|
||||
|
||||
// -------------------------------------------------
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue