Bug fix: Always select the Pin as best RoutingPad component.

* Bug: In Anabatic::Configuration::selectRpComponent(), always select
    the Pin as the best component. It is mandatory for a block that
    we pick up the terminal at the periphery and not one deep inside
    the block.
* Bug: In Hurricane::RoutingPad::setOnBestcomponent(), same rule as
    in Anabatic, if there is any, the Pin must always be the best
    RoutingPad component.
This commit is contained in:
Jean-Paul Chaput 2020-08-02 18:12:52 +02:00
parent a971f6f91b
commit be2f9f8a45
2 changed files with 11 additions and 0 deletions

View File

@ -465,6 +465,12 @@ namespace Anabatic {
continue;
}
if (dynamic_cast<Pin*>(component)) {
cdebug_log(112,0) << " Pins are always considered best candidates:" << component << endl;
bestComponent = component;
break;
}
Component* candidate = dynamic_cast<Segment*>(component);
if (not candidate
or (candidate->getLayer()->getMask() != metal1->getMask()) )

View File

@ -350,6 +350,11 @@ namespace Hurricane {
for ( Component* component : NetExternalComponents::get(plug->getMasterNet()) ) {
if (not bestComponent) { bestComponent = component; continue; }
if (dynamic_cast<Pin*>(component)) {
bestComponent = component;
break;
}
switch (flags & ComponentSelection) {
case LowestLayer:
if (component->getLayer()->below(bestComponent->getLayer()))