From ba23a362fb488d149c4da89d17880a97ea2882bb Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Sat, 21 May 2022 13:19:28 +0200 Subject: [PATCH] Bad protection layer used in NetBuilderHV::doRp_AutoContact(). Bug: In NetBuilderHV::doRp_AutoContact(), when encountering a punctual RoutingPad in METAL1, create the protection in the METAL2 layer instead of METAL1 (current layer). --- anabatic/src/NetBuilderHV.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/anabatic/src/NetBuilderHV.cpp b/anabatic/src/NetBuilderHV.cpp index 74a25dd3..80fa722e 100644 --- a/anabatic/src/NetBuilderHV.cpp +++ b/anabatic/src/NetBuilderHV.cpp @@ -182,6 +182,7 @@ namespace Anabatic { // Non-M1 terminal or punctual M1 protections. if (isInsideBlockage(gcell,rp)) flags |= NoProtect; if ( ((rpDepth != 0) or (sourcePosition == targetPosition)) and not (flags & NoProtect) ) { + if (rpDepth == 0) rpDepth = 1; map::iterator irp = getRpLookup().find( rp ); if (irp == getRpLookup().end()) { AutoContact* sourceProtect = AutoContactTerminal::create( sourceGCell @@ -199,7 +200,7 @@ namespace Anabatic { sourceProtect->setFlags( CntFixed ); targetProtect->setFlags( CntFixed ); - AutoSegment* segment = AutoSegment::create( sourceProtect, targetProtect, direction ); + AutoSegment* segment = AutoSegment::create( sourceProtect, targetProtect, direction, rpDepth ); segment->setFlags( AutoSegment::SegFixed ); getRpLookup().insert( make_pair(rp,segment) );