Issue a warning when the blockage net (for OBS) do not exists.
This commit is contained in:
parent
1253eeeef4
commit
a0880da706
|
@ -451,6 +451,7 @@ namespace {
|
||||||
LefParser* parser = (LefParser*)ud;
|
LefParser* parser = (LefParser*)ud;
|
||||||
|
|
||||||
const Layer* layer = NULL;
|
const Layer* layer = NULL;
|
||||||
|
const Layer* blockageLayer = NULL;
|
||||||
Cell* cell = parser->getCell();
|
Cell* cell = parser->getCell();
|
||||||
Net* blockageNet = cell->getNet( "blockage" );
|
Net* blockageNet = cell->getNet( "blockage" );
|
||||||
|
|
||||||
|
@ -464,9 +465,17 @@ namespace {
|
||||||
lefiGeometries* geoms = obstruction->geometries();
|
lefiGeometries* geoms = obstruction->geometries();
|
||||||
for ( int igeom=0 ; igeom < geoms->numItems() ; ++ igeom ) {
|
for ( int igeom=0 ; igeom < geoms->numItems() ; ++ igeom ) {
|
||||||
if (geoms->itemType(igeom) == lefiGeomLayerE) {
|
if (geoms->itemType(igeom) == lefiGeomLayerE) {
|
||||||
layer = parser->getLayer( geoms->getLayer(igeom) )->getBlockageLayer();
|
layer = parser->getLayer( geoms->getLayer(igeom) );
|
||||||
|
blockageLayer = layer->getBlockageLayer();
|
||||||
|
}
|
||||||
|
if (not blockageLayer) {
|
||||||
|
cerr << Error( "DefImport::_obstructionCbk(): No blockage layer associated to \"%s\".\n"
|
||||||
|
" (while parsing \"%s\")"
|
||||||
|
, getString( layer->getName() ).c_str()
|
||||||
|
, getString( cell ).c_str()
|
||||||
|
) << endl;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
if (not layer) continue;
|
|
||||||
|
|
||||||
if (geoms->itemType(igeom) == lefiGeomRectE) {
|
if (geoms->itemType(igeom) == lefiGeomRectE) {
|
||||||
lefiGeomRect* r = geoms->getRect(igeom);
|
lefiGeomRect* r = geoms->getRect(igeom);
|
||||||
|
@ -474,14 +483,14 @@ namespace {
|
||||||
double h = r->yh - r->yl;
|
double h = r->yh - r->yl;
|
||||||
Segment* segment = NULL;
|
Segment* segment = NULL;
|
||||||
if (w >= h) {
|
if (w >= h) {
|
||||||
segment = Horizontal::create( blockageNet, layer
|
segment = Horizontal::create( blockageNet, blockageLayer
|
||||||
, parser->fromUnitsMicrons( (r->yl + r->yh)/2 )
|
, parser->fromUnitsMicrons( (r->yl + r->yh)/2 )
|
||||||
, parser->fromUnitsMicrons( h )
|
, parser->fromUnitsMicrons( h )
|
||||||
, parser->fromUnitsMicrons( r->xl )
|
, parser->fromUnitsMicrons( r->xl )
|
||||||
, parser->fromUnitsMicrons( r->xh )
|
, parser->fromUnitsMicrons( r->xh )
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
segment = Vertical::create( blockageNet, layer
|
segment = Vertical::create( blockageNet, blockageLayer
|
||||||
, parser->fromUnitsMicrons( (r->xl + r->xh)/2 )
|
, parser->fromUnitsMicrons( (r->xl + r->xh)/2 )
|
||||||
, parser->fromUnitsMicrons( w )
|
, parser->fromUnitsMicrons( w )
|
||||||
, parser->fromUnitsMicrons( r->yl )
|
, parser->fromUnitsMicrons( r->yl )
|
||||||
|
|
Loading…
Reference in New Issue