From 6401f0d45574272386e2e77c7a8438a7dff7f142 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Mon, 17 Jul 2023 15:06:51 +0200 Subject: [PATCH] In SubSlice::getUsedVTRacks() only consider obstacles in the first V gauge. --- etesian/src/Placement.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/etesian/src/Placement.cpp b/etesian/src/Placement.cpp index cbc06c5e..c2487277 100644 --- a/etesian/src/Placement.cpp +++ b/etesian/src/Placement.cpp @@ -24,6 +24,7 @@ #include "hurricane/Plug.h" #include "hurricane/RoutingPad.h" #include "hurricane/Vertical.h" +#include "hurricane/Horizontal.h" #include "hurricane/NetExternalComponents.h" #include "hurricane/Path.h" #include "hurricane/Library.h" @@ -50,6 +51,7 @@ namespace Etesian { using Hurricane::Plug; using Hurricane::RoutingPad; using Hurricane::Vertical; + using Hurricane::Horizontal; using Hurricane::NetExternalComponents; using Hurricane::DebugSession; using Hurricane::UpdateSession; @@ -57,6 +59,8 @@ namespace Etesian { using CRL::CatalogExtension; using CRL::getTransformation; using CRL::RoutingLayerGauge; + using Constant::LayerGaugeType; + using Constant::Direction; using Etesian::EtesianEngine; @@ -146,7 +150,7 @@ namespace Etesian { return; } - list::iterator imerge = _tiles.end(); + //list::iterator imerge = _tiles.end(); for ( auto itile = _tiles.begin() ; itile != _tiles.end() ; ++itile ) { if ((*itile).getXMin() > flatAb.getXMin()) { _tiles.insert( itile, Tile(flatAb.getXMin(), flatAb.getWidth(), occurrence) ); @@ -630,12 +634,15 @@ namespace Etesian { if (not component->getLayer()->isBlockage()) continue; cdebug_log(121,0) << "Looking at " << component << endl; Vertical* v = dynamic_cast( component ); - if (not v) continue; + if ( not dynamic_cast(component) + and not dynamic_cast(component)) continue; - RoutingLayerGauge* rlg = rg->getLayerGauge( v->getLayer()->getRoutingLayer() ); + RoutingLayerGauge* rlg = rg->getLayerGauge( component->getLayer()->getRoutingLayer() ); if (not rlg) continue; + if (rlg->getType() != LayerGaugeType::Default) continue; + if (rlg->getDirection() != Direction::Vertical) continue; - Box bb = v->getBoundingBox(); + Box bb = component->getBoundingBox(); bb.inflate( -rlg->getWireWidth()/2, 0 ); Transformation transf = tile.getInstance()->getTransformation(); tile.getOccurrence().getPath().getTransformation().applyOn( transf );