From 3bd1d56582bf20406832ba8299ee42691df82f99 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Sat, 12 Jun 2021 16:21:10 +0200 Subject: [PATCH] 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. --- anabatic/src/AutoSegment.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/anabatic/src/AutoSegment.cpp b/anabatic/src/AutoSegment.cpp index dc39dd40..b141ec28 100644 --- a/anabatic/src/AutoSegment.cpp +++ b/anabatic/src/AutoSegment.cpp @@ -1615,7 +1615,12 @@ namespace Anabatic { bool AutoSegment::isMiddleStack () const { 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* target = getAutoTarget(); if (not source or not target) {