In SubSlice::getUsedVTRacks() only consider obstacles in the first V gauge.
This commit is contained in:
parent
bf5d4e881d
commit
6401f0d455
|
@ -24,6 +24,7 @@
|
||||||
#include "hurricane/Plug.h"
|
#include "hurricane/Plug.h"
|
||||||
#include "hurricane/RoutingPad.h"
|
#include "hurricane/RoutingPad.h"
|
||||||
#include "hurricane/Vertical.h"
|
#include "hurricane/Vertical.h"
|
||||||
|
#include "hurricane/Horizontal.h"
|
||||||
#include "hurricane/NetExternalComponents.h"
|
#include "hurricane/NetExternalComponents.h"
|
||||||
#include "hurricane/Path.h"
|
#include "hurricane/Path.h"
|
||||||
#include "hurricane/Library.h"
|
#include "hurricane/Library.h"
|
||||||
|
@ -50,6 +51,7 @@ namespace Etesian {
|
||||||
using Hurricane::Plug;
|
using Hurricane::Plug;
|
||||||
using Hurricane::RoutingPad;
|
using Hurricane::RoutingPad;
|
||||||
using Hurricane::Vertical;
|
using Hurricane::Vertical;
|
||||||
|
using Hurricane::Horizontal;
|
||||||
using Hurricane::NetExternalComponents;
|
using Hurricane::NetExternalComponents;
|
||||||
using Hurricane::DebugSession;
|
using Hurricane::DebugSession;
|
||||||
using Hurricane::UpdateSession;
|
using Hurricane::UpdateSession;
|
||||||
|
@ -57,6 +59,8 @@ namespace Etesian {
|
||||||
using CRL::CatalogExtension;
|
using CRL::CatalogExtension;
|
||||||
using CRL::getTransformation;
|
using CRL::getTransformation;
|
||||||
using CRL::RoutingLayerGauge;
|
using CRL::RoutingLayerGauge;
|
||||||
|
using Constant::LayerGaugeType;
|
||||||
|
using Constant::Direction;
|
||||||
using Etesian::EtesianEngine;
|
using Etesian::EtesianEngine;
|
||||||
|
|
||||||
|
|
||||||
|
@ -146,7 +150,7 @@ namespace Etesian {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
list<Tile>::iterator imerge = _tiles.end();
|
//list<Tile>::iterator imerge = _tiles.end();
|
||||||
for ( auto itile = _tiles.begin() ; itile != _tiles.end() ; ++itile ) {
|
for ( auto itile = _tiles.begin() ; itile != _tiles.end() ; ++itile ) {
|
||||||
if ((*itile).getXMin() > flatAb.getXMin()) {
|
if ((*itile).getXMin() > flatAb.getXMin()) {
|
||||||
_tiles.insert( itile, Tile(flatAb.getXMin(), flatAb.getWidth(), occurrence) );
|
_tiles.insert( itile, Tile(flatAb.getXMin(), flatAb.getWidth(), occurrence) );
|
||||||
|
@ -630,12 +634,15 @@ namespace Etesian {
|
||||||
if (not component->getLayer()->isBlockage()) continue;
|
if (not component->getLayer()->isBlockage()) continue;
|
||||||
cdebug_log(121,0) << "Looking at " << component << endl;
|
cdebug_log(121,0) << "Looking at " << component << endl;
|
||||||
Vertical* v = dynamic_cast<Vertical*>( component );
|
Vertical* v = dynamic_cast<Vertical*>( component );
|
||||||
if (not v) continue;
|
if ( not dynamic_cast<Vertical* >(component)
|
||||||
|
and not dynamic_cast<Horizontal*>(component)) continue;
|
||||||
|
|
||||||
RoutingLayerGauge* rlg = rg->getLayerGauge( v->getLayer()->getRoutingLayer() );
|
RoutingLayerGauge* rlg = rg->getLayerGauge( component->getLayer()->getRoutingLayer() );
|
||||||
if (not rlg) continue;
|
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 );
|
bb.inflate( -rlg->getWireWidth()/2, 0 );
|
||||||
Transformation transf = tile.getInstance()->getTransformation();
|
Transformation transf = tile.getInstance()->getTransformation();
|
||||||
tile.getOccurrence().getPath().getTransformation().applyOn( transf );
|
tile.getOccurrence().getPath().getTransformation().applyOn( transf );
|
||||||
|
|
Loading…
Reference in New Issue