Wiping the routing is possible!!

This commit is contained in:
Gabriel Gouvine 2015-04-23 15:16:53 +02:00
parent 3f182f1cee
commit 524b27451e
1 changed files with 18 additions and 3 deletions

View File

@ -886,15 +886,30 @@ namespace Etesian {
forEach(Net*, inet, _cell->getNets()){ forEach(Net*, inet, _cell->getNets()){
if(NetRoutingExtension::isManualGlobalRoute(*inet)) if(NetRoutingExtension::isManualGlobalRoute(*inet))
continue; continue;
std::vector<Contact*> pointers; // First pass: destroy the contacts
std::vector<Contact*> contactPointers;
forEach(Component*, icom, (*inet)->getComponents()){ forEach(Component*, icom, (*inet)->getComponents()){
Contact * contact = dynamic_cast<Contact*>(*icom); Contact * contact = dynamic_cast<Contact*>(*icom);
if(contact){ if(contact){
pointers.push_back(contact); contactPointers.push_back(contact);
} }
} }
for(Contact* contact : pointers) for(Contact* contact : contactPointers)
contact->destroy(); contact->destroy();
// Second pass: destroy unconnected segments added by Knik as blockages
std::vector<Component*> compPointers;
forEach(Component*, icom, (*inet)->getComponents()){
Horizontal * h = dynamic_cast<Horizontal*>(*icom);
if(h){
compPointers.push_back(h);
}
Vertical * v = dynamic_cast<Vertical*>(*icom);
if(v){
compPointers.push_back(v);
}
}
for(Component* comp : compPointers)
comp->destroy();
} }
UpdateSession::close(); UpdateSession::close();
detailedPlace(detailedIterations, detailedEffort, detailedOptions); detailedPlace(detailedIterations, detailedEffort, detailedOptions);