From 047bf149212a8fd600ec863d7b7fc7612b270041 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Wed, 18 Jan 2023 23:42:17 +0100 Subject: [PATCH] Wrong computation of the up/down dogleg layer for 2 layers gauges. * Bug: In Anabatic::AutoHorizontal::_makeDogleg(), the up/down flag was incorrectly computed when the RoutingGauge RL where not the lower one. This was leading to making doglegs in non-routable layers (but present in the gauge for other purposes). --- anabatic/src/AutoHorizontal.cpp | 2 +- anabatic/src/AutoVertical.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/anabatic/src/AutoHorizontal.cpp b/anabatic/src/AutoHorizontal.cpp index 0f3172ca..3746a698 100644 --- a/anabatic/src/AutoHorizontal.cpp +++ b/anabatic/src/AutoHorizontal.cpp @@ -875,7 +875,7 @@ namespace Anabatic { bool upLayer = true; if (Session::getRoutingGauge()->isTwoMetals()) { - upLayer = (depth == 0); + upLayer = (not Session::getRoutingGauge()->isVH()); } else if (Session::getRoutingGauge()->isVH()) { upLayer = (depth < 2); } else { diff --git a/anabatic/src/AutoVertical.cpp b/anabatic/src/AutoVertical.cpp index d23b3aa6..790c0438 100644 --- a/anabatic/src/AutoVertical.cpp +++ b/anabatic/src/AutoVertical.cpp @@ -736,7 +736,7 @@ namespace Anabatic { bool upLayer = true; if (Session::getRoutingGauge()->isTwoMetals()) { - upLayer = (depth == 0); + upLayer = (Session::getRoutingGauge()->isVH()); } else if (Session::getRoutingGauge()->isVH()) { upLayer = (depth < 2); } else {