From fddf11516abe4ad0cc70dce7af76ab2ae6b37e67 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Fri, 3 Oct 2014 19:00:02 +0200 Subject: [PATCH] More accurate tests in Katabatic to stop whining about bad doglegs. * Change: In Katabatic, in AutoSegment::canonize() and Session::_canonize() no longer tag Global as WeakGlobal also. This avoid to try to make dogleg on them when we shouldn't. They where staying WeakGlobal even when there were no longer connected to a global. * Change: In Katabatic, in AutoSegment::makeDogleg(), suppress the bug for pad message when we are in the global routing stage. At that point it is allowed to make doglegs under the pads are they are "layer change" ones. --- .gitignore | 8 ++++++++ katabatic/src/AutoSegment.cpp | 9 ++++++--- katabatic/src/Session.cpp | 4 ++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index ed40a9fb..afe2ec81 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,11 @@ documentation/UsersGuide/UsersGuide.pdf documentation/UsersGuide/UsersGuide.out documentation/UsersGuide/UsersGuide.toc documentation/UsersGuide/UsersGuide.html + +documentation/RDS/RDS.aux +documentation/RDS/RDS.dvi +documentation/RDS/RDS.out +documentation/RDS/RDS.pdf +documentation/RDS/RDS.tex +documentation/RDS/RDS.toc + diff --git a/katabatic/src/AutoSegment.cpp b/katabatic/src/AutoSegment.cpp index fd0f0d7c..cb690f65 100644 --- a/katabatic/src/AutoSegment.cpp +++ b/katabatic/src/AutoSegment.cpp @@ -1048,8 +1048,10 @@ namespace Katabatic { canonical->setFlags( SegCanonical ); if (hasGlobal) { - for ( size_t i=0 ; isetFlags( SegWeakGlobal ); + for ( size_t i=0 ; iisGlobal()) + segments[i]->setFlags( SegWeakGlobal ); + } } else { for ( size_t i=0 ; iunsetFlags( SegWeakGlobal ); @@ -1742,7 +1744,8 @@ namespace Katabatic { unsigned int rflags = 0; - if (doglegGCell->isUnderIoPad()) { + if ( doglegGCell->isUnderIoPad() + and (Session::getKatabatic()->getState() != EngineGlobalLoaded) ) { cerr << Bug( "Attempt to make a dogleg in a GCell under a Pad\n" " %s\n" " %s" diff --git a/katabatic/src/Session.cpp b/katabatic/src/Session.cpp index 97df43d4..f7ca3459 100644 --- a/katabatic/src/Session.cpp +++ b/katabatic/src/Session.cpp @@ -172,8 +172,8 @@ namespace Katabatic { ltrace(110) << "Canonical: " << canonical << endl; for ( size_t j=0 ; jsetFlags ( SegWeakGlobal ); - else aligneds[j]->unsetFlags( SegWeakGlobal ); + if (isWeakGlobal and not aligneds[j]->isGlobal()) aligneds[j]->setFlags ( SegWeakGlobal ); + else aligneds[j]->unsetFlags( SegWeakGlobal ); if (aligneds[j] == canonical) continue; if (aligneds[j]->isCanonical()) {