From 20efd75a326b7e58e30aeebc64b3b35236ec0da4 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Thu, 15 Apr 2021 23:47:21 +0200 Subject: [PATCH] More accurate detection of zero-length segments.in AutoSegment::canReduce(). --- anabatic/src/AnabaticEngine.cpp | 3 +++ anabatic/src/AutoSegment.cpp | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/anabatic/src/AnabaticEngine.cpp b/anabatic/src/AnabaticEngine.cpp index 2dcd6c77..c0e8088a 100644 --- a/anabatic/src/AnabaticEngine.cpp +++ b/anabatic/src/AnabaticEngine.cpp @@ -446,6 +446,7 @@ namespace Anabatic { void AnabaticEngine::_gutAnabatic () { + //DebugSession::open( 159, 160 ); openSession(); _flags.reset( Flags::DestroyBaseContact|Flags::DestroyBaseSegment ); @@ -469,6 +470,7 @@ namespace Anabatic { //if (isegment.second->bloatStackedStrap()) ++bloatedStraps; } sort( reduceds.begin(), reduceds.end() ); + // cerr << "Reduced segment queue:" << endl; // for ( size_t i=0 ; i 0)) return false; AutoContact* source = getAutoSource(); AutoContact* target = getAutoTarget(); @@ -1768,6 +1767,9 @@ namespace Anabatic { // if ( source->isHTee() or source->isVTee() // or target->isHTee() or target->isVTee() ) return false; + cdebug_log(159,0) << " length:" << DbU::getValueString(getAnchoredLength()) << endl; + if (flags & Flags::NullLength) return (getAnchoredLength() == 0); + unsigned int perpandicularDepth = getDepth(); if (isSpinBottom()) { if (perpandicularDepth > 0) --perpandicularDepth; @@ -1776,9 +1778,8 @@ namespace Anabatic { if (perpandicularDepth >= Session::getDepth()) return false; } else return false; - - cdebug_log(159,0) << " length:" << DbU::getValueString(getAnchoredLength()) << endl; - if (getAnchoredLength() >= (Session::getPitch(perpandicularDepth) * 2)) return false; + + if (getAnchoredLength() >= Session::getPitch(perpandicularDepth) * 2) return false; return true; }