Do not consider route-through for CLB tiles
This commit is contained in:
parent
d2597bcd8d
commit
c128df127b
10
xc7/arch.cc
10
xc7/arch.cc
@ -115,7 +115,6 @@ std::vector<Tilewire> TorcInfo::construct_wire_to_tilewire(const Segments& segme
|
|||||||
currentTilewire.setTileIndex(tileIndex);
|
currentTilewire.setTileIndex(tileIndex);
|
||||||
for(WireIndex wireIndex(0); wireIndex < wireCount; wireIndex++) {
|
for(WireIndex wireIndex(0); wireIndex < wireCount; wireIndex++) {
|
||||||
currentTilewire.setWireIndex(wireIndex);
|
currentTilewire.setWireIndex(wireIndex);
|
||||||
|
|
||||||
const auto& currentSegment = segments.getTilewireSegment(currentTilewire);
|
const auto& currentSegment = segments.getTilewireSegment(currentTilewire);
|
||||||
|
|
||||||
if (!currentSegment.isTrivial()) {
|
if (!currentSegment.isTrivial()) {
|
||||||
@ -134,6 +133,8 @@ std::vector<Tilewire> TorcInfo::construct_wire_to_tilewire(const Segments& segme
|
|||||||
}
|
}
|
||||||
std::vector<Arc> TorcInfo::construct_pip_to_arc(const std::vector<Tilewire>& wire_to_tilewire, const DDB& ddb, std::vector<std::vector<int>> &wire_to_pips_uphill, std::vector<std::vector<int>> &wire_to_pips_downhill)
|
std::vector<Arc> TorcInfo::construct_pip_to_arc(const std::vector<Tilewire>& wire_to_tilewire, const DDB& ddb, std::vector<std::vector<int>> &wire_to_pips_uphill, std::vector<std::vector<int>> &wire_to_pips_downhill)
|
||||||
{
|
{
|
||||||
|
const auto &tiles = ddb.getTiles();
|
||||||
|
|
||||||
std::vector<Arc> pip_to_arc;
|
std::vector<Arc> pip_to_arc;
|
||||||
wire_to_pips_downhill.resize(wire_to_tilewire.size());
|
wire_to_pips_downhill.resize(wire_to_tilewire.size());
|
||||||
|
|
||||||
@ -144,7 +145,12 @@ std::vector<Arc> TorcInfo::construct_pip_to_arc(const std::vector<Tilewire>& wir
|
|||||||
const auto &tw = wire_to_tilewire[i];
|
const auto &tw = wire_to_tilewire[i];
|
||||||
if (tw.isUndefined()) continue;
|
if (tw.isUndefined()) continue;
|
||||||
arcs.clear();
|
arcs.clear();
|
||||||
const_cast<DDB&>(ddb).expandSegmentSinks(tw, arcs, DDB::eExpandDirectionNone, false /* inUseTied */, true /*inUseRegular */, true /* inUseIrregular */, false /* inUseRoutethrough */);
|
|
||||||
|
const auto& tileInfo = tiles.getTileInfo(tw.getTileIndex());
|
||||||
|
const auto tileTypeName = tiles.getTileTypeName(tileInfo.getTypeIndex());
|
||||||
|
bool clb = boost::starts_with(tileTypeName, "CLB");
|
||||||
|
|
||||||
|
const_cast<DDB&>(ddb).expandSegmentSinks(tw, arcs, DDB::eExpandDirectionNone, false /* inUseTied */, true /*inUseRegular */, true /* inUseIrregular */, !clb /* inUseRoutethrough */);
|
||||||
|
|
||||||
auto index = pip_to_arc.size();
|
auto index = pip_to_arc.size();
|
||||||
pip_to_arc.insert(pip_to_arc.end(), arcs.begin(), arcs.end());
|
pip_to_arc.insert(pip_to_arc.end(), arcs.begin(), arcs.end());
|
||||||
|
Loading…
Reference in New Issue
Block a user