From 7c8d47a2d189eba4ade672a1b4c7f87425e9cee9 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Fri, 11 Jun 2021 11:46:13 +0200 Subject: [PATCH] More generic criterion for finding under minimum area segments. * Change: In AutoSegment::isMiddleStack(), after checking for obvious non-candidates, relies on axis-to-axis wirelength instead of topological criterions. We will not be able to account all the topologies that may cause problem. So consider every segment whose length is below one perpandicular pitch. --- anabatic/src/AutoSegment.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/anabatic/src/AutoSegment.cpp b/anabatic/src/AutoSegment.cpp index f7b5c935..dc39dd40 100644 --- a/anabatic/src/AutoSegment.cpp +++ b/anabatic/src/AutoSegment.cpp @@ -1652,13 +1652,13 @@ namespace Anabatic { } } - if ((source->isHTee() or target->isHTee()) and isHorizontal()) { - cdebug_log(149,0) << "| false, S/T HTee and horizontal. " << this << endl; + DbU::Unit sourceAxis = 0; + DbU::Unit targetAxis = 0; + getEndAxes( sourceAxis, targetAxis ); + if ((targetAxis - sourceAxis) >= getPPitch()) { + cdebug_log(149,0) << "| Canonical axis length superior to P-Pitch " << this << endl; return false; - } else if ((source->isVTee() or target->isVTee()) and isVertical()) { - cdebug_log(149,0) << "| false, S/T VTee and vertical. " << this << endl; - return false; - } + } cdebug_log(149,0) << " Middle stack or terminal bound." << endl; return true; }