* ./kite:
- Change: In RoutingEvent::State::conflictSolve1_v1b(), when finding obstacles in candidates tracks, no longer ignore blockages (segments from pads that connot be broken because they see *no* conflicts...).
This commit is contained in:
parent
c4d93e71e8
commit
4e5ce663d8
|
@ -381,12 +381,16 @@ namespace {
|
||||||
void PowerRailsPlanes::Rail::merge ( DbU::Unit source, DbU::Unit target )
|
void PowerRailsPlanes::Rail::merge ( DbU::Unit source, DbU::Unit target )
|
||||||
{
|
{
|
||||||
Interval chunkMerge ( source, target );
|
Interval chunkMerge ( source, target );
|
||||||
|
ltrace(300) << " Rail::merge() " << chunkMerge << endl;
|
||||||
|
|
||||||
list<Interval>::iterator imerge = _chunks.end();
|
list<Interval>::iterator imerge = _chunks.end();
|
||||||
list<Interval>::iterator ichunk = _chunks.begin();
|
list<Interval>::iterator ichunk = _chunks.begin();
|
||||||
|
|
||||||
while ( ichunk != _chunks.end() ) {
|
while ( ichunk != _chunks.end() ) {
|
||||||
if ( chunkMerge.getVMax() < (*ichunk).getVMin() ) break;
|
if ( chunkMerge.getVMax() < (*ichunk).getVMin() ) {
|
||||||
|
_chunks.insert ( ichunk, chunkMerge );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if ( chunkMerge.intersect(*ichunk) ) {
|
if ( chunkMerge.intersect(*ichunk) ) {
|
||||||
if ( imerge == _chunks.end() ) {
|
if ( imerge == _chunks.end() ) {
|
||||||
|
@ -403,7 +407,7 @@ namespace {
|
||||||
|
|
||||||
if ( imerge == _chunks.end() ) {
|
if ( imerge == _chunks.end() ) {
|
||||||
_chunks.insert ( ichunk, chunkMerge );
|
_chunks.insert ( ichunk, chunkMerge );
|
||||||
ltrace(190) << "| Add on " << DbU::getValueString(_axis) << " " << chunkMerge << endl;
|
ltrace(300) << " | Add on " << DbU::getValueString(_axis) << " " << chunkMerge << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,11 +430,14 @@ namespace {
|
||||||
DbU::Unit axisMin = 0;
|
DbU::Unit axisMin = 0;
|
||||||
DbU::Unit axisMax = 0;
|
DbU::Unit axisMax = 0;
|
||||||
|
|
||||||
|
if ( type == Constant::PinOnly ) {
|
||||||
|
ltrace(300) << " Layer is PinOnly." << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDirection() == Constant::Horizontal ) {
|
if ( getDirection() == Constant::Horizontal ) {
|
||||||
list<Interval>::iterator ichunk = _chunks.begin();
|
list<Interval>::iterator ichunk = _chunks.begin();
|
||||||
for ( ; ichunk != _chunks.end() ; ichunk++ ) {
|
for ( ; ichunk != _chunks.end() ; ichunk++ ) {
|
||||||
if ( type == Constant::PinOnly ) continue;
|
|
||||||
|
|
||||||
ltrace(300) << " chunk: [" << DbU::getValueString((*ichunk).getVMin())
|
ltrace(300) << " chunk: [" << DbU::getValueString((*ichunk).getVMin())
|
||||||
<< ":" << DbU::getValueString((*ichunk).getVMax()) << "]" << endl;
|
<< ":" << DbU::getValueString((*ichunk).getVMax()) << "]" << endl;
|
||||||
|
|
||||||
|
@ -456,8 +463,6 @@ namespace {
|
||||||
} else {
|
} else {
|
||||||
list<Interval>::iterator ichunk = _chunks.begin();
|
list<Interval>::iterator ichunk = _chunks.begin();
|
||||||
for ( ; ichunk != _chunks.end() ; ichunk++ ) {
|
for ( ; ichunk != _chunks.end() ; ichunk++ ) {
|
||||||
if ( type == Constant::PinOnly ) continue;
|
|
||||||
|
|
||||||
ltrace(300) << " chunk: [" << DbU::getValueString((*ichunk).getVMin())
|
ltrace(300) << " chunk: [" << DbU::getValueString((*ichunk).getVMin())
|
||||||
<< ":" << DbU::getValueString((*ichunk).getVMax()) << "]" << endl;
|
<< ":" << DbU::getValueString((*ichunk).getVMax()) << "]" << endl;
|
||||||
|
|
||||||
|
@ -607,7 +612,7 @@ namespace {
|
||||||
{
|
{
|
||||||
Rails* rails = NULL;
|
Rails* rails = NULL;
|
||||||
|
|
||||||
ltrace(300) << " " << net->getName() << " " << (void*)net << endl;
|
ltrace(300) << " Plane::merge() " << net->getName() << " " << (void*)net << endl;
|
||||||
|
|
||||||
if ( getDirection() == Constant::Horizontal ) {
|
if ( getDirection() == Constant::Horizontal ) {
|
||||||
map<Net*,Rails*>::iterator irails = _horizontalRails.find(net);
|
map<Net*,Rails*>::iterator irails = _horizontalRails.find(net);
|
||||||
|
@ -626,6 +631,7 @@ namespace {
|
||||||
} else
|
} else
|
||||||
rails = (*irails).second;
|
rails = (*irails).second;
|
||||||
|
|
||||||
|
ltrace(300) << " Vertical Merging" << endl;
|
||||||
rails->merge ( bb );
|
rails->merge ( bb );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -718,7 +724,10 @@ namespace {
|
||||||
if ( not _activePlane ) return;
|
if ( not _activePlane ) return;
|
||||||
|
|
||||||
Net* topGlobalNet = _globalNets.getRootNet ( net, Path() );
|
Net* topGlobalNet = _globalNets.getRootNet ( net, Path() );
|
||||||
if ( topGlobalNet == NULL ) return;
|
if ( topGlobalNet == NULL ) {
|
||||||
|
ltrace(300) << "Not a global net: " << net << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_activePlane->merge ( bb, topGlobalNet );
|
_activePlane->merge ( bb, topGlobalNet );
|
||||||
}
|
}
|
||||||
|
@ -881,7 +890,8 @@ namespace {
|
||||||
Box bb = contact->getBoundingBox ( basicLayer );
|
Box bb = contact->getBoundingBox ( basicLayer );
|
||||||
transformation.applyOn ( bb );
|
transformation.applyOn ( bb );
|
||||||
|
|
||||||
ltrace(300) << " Merging PowerRail element: " << contact << " bb:" << bb << endl;
|
ltrace(300) << " Merging PowerRail element: " << contact << " bb:" << bb
|
||||||
|
<< " " << basicLayer << endl;
|
||||||
|
|
||||||
_powerRailsPlanes.merge ( bb, rootNet );
|
_powerRailsPlanes.merge ( bb, rootNet );
|
||||||
}
|
}
|
||||||
|
|
|
@ -538,6 +538,7 @@ namespace Kite {
|
||||||
// // NO MOVE UP FOR IT...
|
// // NO MOVE UP FOR IT...
|
||||||
// DebugSession::addToTrace ( getCell(), "mips_r3000_core.mips_r3000_1m_dp.addsub32_carith_se.gi_3_23" );
|
// DebugSession::addToTrace ( getCell(), "mips_r3000_core.mips_r3000_1m_dp.addsub32_carith_se.gi_3_23" );
|
||||||
// DebugSession::addToTrace ( getCell(), "mips_r3000_core.mips_r3000_1m_dp.addsub32_carith_se.gi_3_28" );
|
// DebugSession::addToTrace ( getCell(), "mips_r3000_core.mips_r3000_1m_dp.addsub32_carith_se.gi_3_28" );
|
||||||
|
//DebugSession::addToTrace ( getCell(), "cout_to_pads" );
|
||||||
|
|
||||||
createDetailedGrid ();
|
createDetailedGrid ();
|
||||||
buildPowerRails ();
|
buildPowerRails ();
|
||||||
|
|
|
@ -112,7 +112,7 @@ namespace {
|
||||||
Box bb ( segments[i]->getBoundingBox() );
|
Box bb ( segments[i]->getBoundingBox() );
|
||||||
|
|
||||||
transformation.applyOn ( bb );
|
transformation.applyOn ( bb );
|
||||||
cinfo << "bb: " << bb << endl;
|
//cinfo << "bb: " << bb << endl;
|
||||||
|
|
||||||
if ( direction == Constant::Horizontal ) {
|
if ( direction == Constant::Horizontal ) {
|
||||||
DbU::Unit axisMin = bb.getYMin() - delta;
|
DbU::Unit axisMin = bb.getYMin() - delta;
|
||||||
|
|
|
@ -1584,10 +1584,10 @@ namespace {
|
||||||
}
|
}
|
||||||
otherNet = other->getNet();
|
otherNet = other->getNet();
|
||||||
otherOverlap = other->getCanonicalInterval();
|
otherOverlap = other->getCanonicalInterval();
|
||||||
otherIsGlobal = other->isGlobal();
|
otherIsGlobal = other->isGlobal() or other->isBlockage();
|
||||||
} else {
|
} else {
|
||||||
otherOverlap.merge(other->getCanonicalInterval());
|
otherOverlap.merge(other->getCanonicalInterval());
|
||||||
otherIsGlobal = otherIsGlobal or other->isGlobal();
|
otherIsGlobal = otherIsGlobal or other->isGlobal() or other->isBlockage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( not otherOverlap.isEmpty() ) {
|
if ( not otherOverlap.isEmpty() ) {
|
||||||
|
|
Loading…
Reference in New Issue