diff --git a/kite/src/BuildPowerRails.cpp b/kite/src/BuildPowerRails.cpp index 7d8daac0..98f03626 100644 --- a/kite/src/BuildPowerRails.cpp +++ b/kite/src/BuildPowerRails.cpp @@ -350,8 +350,8 @@ namespace { ltrace(300) << " getRootNet:" << path << ":" << net << endl; if (net == _blockage) return _blockage; - if (net->getName() == _vdde->getName()) return _vdde; - if (net->getName() == _vsse->getName()) return _vsse; + if (_vdde and (net->getName() == _vdde->getName())) return _vdde; + if (_vsse and (net->getName() == _vsse->getName())) return _vsse; if (net->getType() == Net::Type::POWER ) return _vddi; if (net->getType() == Net::Type::GROUND) return _vssi; diff --git a/kite/src/BuildPreRouteds.cpp b/kite/src/BuildPreRouteds.cpp index 115a70ff..7323e7b6 100644 --- a/kite/src/BuildPreRouteds.cpp +++ b/kite/src/BuildPreRouteds.cpp @@ -25,6 +25,7 @@ #include "hurricane/Horizontal.h" #include "hurricane/Vertical.h" #include "hurricane/RoutingPad.h" +#include "hurricane/Pin.h" #include "hurricane/NetExternalComponents.h" #include "hurricane/NetRoutingProperty.h" #include "hurricane/DeepNet.h" @@ -62,6 +63,7 @@ namespace Kite { using Hurricane::Horizontal; using Hurricane::Vertical; using Hurricane::RoutingPad; + using Hurricane::Pin; using Hurricane::NetExternalComponents; using Hurricane::NetRoutingExtension; using Hurricane::NetRoutingState; @@ -114,8 +116,15 @@ namespace Kite { } } else { forEach ( Component*, icomponent, inet->getComponents() ) { + if (dynamic_cast(*icomponent)) continue; + + const RegularLayer* layer = dynamic_cast(icomponent->getLayer()); + if (layer and (layer->getBasicLayer()->getMaterial() == BasicLayer::Material::blockage)) + continue; + Horizontal* horizontal = dynamic_cast(*icomponent); if (horizontal) { + cerr << horizontal << endl; segments.push_back( horizontal ); isPreRouted = true; if (horizontal->getWidth() != Session::getWireWidth(horizontal->getLayer())) @@ -123,6 +132,7 @@ namespace Kite { } else { Vertical* vertical = dynamic_cast(*icomponent); if (vertical) { + cerr << vertical << endl; isPreRouted = true; segments.push_back( vertical ); if (vertical->getWidth() != Session::getWireWidth(vertical->getLayer())) @@ -130,6 +140,7 @@ namespace Kite { } else { Contact* contact = dynamic_cast(*icomponent); if (contact) { + cerr << contact << endl; isPreRouted = true; contacts.push_back( contact ); if ( (contact->getWidth () != Session::getViaWidth(contact->getLayer()))