Discriminate between I/O pin and block pin in NetBuilder.
* Bug: In NetBuilder::setStartHook(), trigger the "move up" of global routing only when encountering RoutingPad of a macro block and *not* an I/O pin of the whole block (at the edge). Boils down to look if the RoutingPad is anchored on a Pin or a Segment (macro block).
This commit is contained in:
parent
1babec2e91
commit
53db943d14
|
@ -505,6 +505,7 @@ namespace Anabatic {
|
|||
continue;
|
||||
}
|
||||
|
||||
bool isPin = (dynamic_cast<Pin*>( rp->getOccurrence().getEntity() ) != nullptr);
|
||||
size_t rpDepth = 0;
|
||||
for ( size_t depth=0 ; depth < Session::getRoutingGauge()->getDepth() ; ++depth ) {
|
||||
if (layer->getMask() == Session::getRoutingLayer(depth)->getMask()) {
|
||||
|
@ -512,7 +513,8 @@ namespace Anabatic {
|
|||
break;
|
||||
}
|
||||
}
|
||||
if ((rpDepth > 0) and not Session::getRoutingGauge()->isSuperPitched()) {
|
||||
if ((rpDepth > 0) and not isPin
|
||||
and not Session::getRoutingGauge()->isSuperPitched()) {
|
||||
_flags |= ToUpperRouting;
|
||||
cdebug_log(145,0) << "ToUpperRouting set, getFlags():" << getFlags() << endl;
|
||||
}
|
||||
|
@ -530,7 +532,7 @@ namespace Anabatic {
|
|||
//continue;
|
||||
}
|
||||
|
||||
if (dynamic_cast<Pin*>(rp->getOccurrence().getEntity())) _connexity.fields.Pin++;
|
||||
if (isPin) _connexity.fields.Pin++;
|
||||
}
|
||||
|
||||
cdebug_log(145,0) << "| Component to connect: " << anchor << endl;
|
||||
|
|
Loading…
Reference in New Issue