Fix last DRC incorrect case in TrackSegment::isMiddleStack().

* Bug: In TrackSegment::isMiddleStack(), formerly, all global segments
    where discarted. But in the routing repair stage, segments can go
    *outside* their GCell boundaries, allowing globals to became of
    null length.
       Hence, for global, we now also check the wirelength.
This commit is contained in:
Jean-Paul Chaput 2021-06-12 16:21:10 +02:00
parent f9e4daace9
commit 3bd1d56582
1 changed files with 6 additions and 1 deletions

View File

@ -1615,7 +1615,12 @@ namespace Anabatic {
bool AutoSegment::isMiddleStack () const bool AutoSegment::isMiddleStack () const
{ {
cdebug_log(149,0) << "AutoSegment::isMiddleStack() - " << this << endl; cdebug_log(149,0) << "AutoSegment::isMiddleStack() - " << this << endl;
if (isGlobal() or isNonPref()) return false; if (isNonPref()) return false;
if (isGlobal()) {
if (getLength() > getPPitch()) return false;
cdebug_log(149,0) << "| Considering this global anyway because it is too short. " << endl;
}
AutoContact* source = getAutoSource(); AutoContact* source = getAutoSource();
AutoContact* target = getAutoTarget(); AutoContact* target = getAutoTarget();
if (not source or not target) { if (not source or not target) {