Do not make dogleg on segments in non-preferred routing direction.

* Bug: In AutoContactTurn::updateTopology(), in some case we were making
    doglegs on segments in non-preferred routing direction (mostly M2).
    This must be never be done. As, by construction, at least one segment
    of the turn must be in the preferred routing direction, always use
    this one to make the dogleg.
      This bug is likely to explain the remaining "bad spin" in the
    final self-check of the routing data-structure.
This commit is contained in:
Jean-Paul Chaput 2022-05-12 17:54:05 +02:00
parent d3b7251eac
commit ab13a02eed
1 changed files with 3 additions and 1 deletions

View File

@ -263,7 +263,9 @@ namespace Anabatic {
setFlags( CntBadTopology );
} else {
if (delta > 1) {
if (_horizontal1->isInvalidatedLayer()) {
bool updateH1 = (_horizontal1->isInvalidatedLayer() and not _horizontal1->isNonPref())
or _vertical1->isNonPref();
if (updateH1) {
//_horizontal1 = static_cast<AutoHorizontal*>( _horizontal1->makeDogleg(this) );
_horizontal1->makeDogleg(this);
cdebug_log(145,0) << "Update h1: " << _horizontal1 << endl;