From d9b14d680a2d083f0a6b46984872fe7bd542d7c1 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Tue, 23 Mar 2021 17:19:38 +0100 Subject: [PATCH] In Katana::protectRoutingPad(), check that the RP is not still on the Plug. --- katana/src/ProtectRoutingPads.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/katana/src/ProtectRoutingPads.cpp b/katana/src/ProtectRoutingPads.cpp index ffa29f2d..c8992e1c 100644 --- a/katana/src/ProtectRoutingPads.cpp +++ b/katana/src/ProtectRoutingPads.cpp @@ -16,6 +16,7 @@ #include #include +#include "hurricane/Error.h" #include "hurricane/DebugSession.h" #include "hurricane/DataBase.h" #include "hurricane/Technology.h" @@ -43,6 +44,7 @@ namespace { using namespace std; + using Hurricane::Error; using Hurricane::DebugSession; using Hurricane::tab; using Hurricane::ForEachIterator; @@ -55,6 +57,7 @@ namespace { using Hurricane::RegularLayer; using Hurricane::Horizontal; using Hurricane::Vertical; + using Hurricane::Plug; using Hurricane::Transformation; using Hurricane::RoutingPad; using Hurricane::Occurrence; @@ -78,6 +81,14 @@ namespace { Net* masterNet = usedComponent->getNet(); Transformation transformation = path.getTransformation(); + if (dynamic_cast(usedComponent)) { + cerr << Error( "Katana::protectRoutingPad(): A RoutingPad of \"%s\" is still on it's Plug.\n" + " (%s)" + , getString(rp->getNet()->getName()).c_str() + , getString(usedComponent).c_str() + ) << endl; + return; + } if (Session::getRoutingGauge()->getLayerType(usedComponent->getLayer()) == Constant::PinOnly) { cdebug_tabw(145,-1); return;