Duplicate external compoenents in CRL::GdsDriver to please "Vendor" StreamIn.
* Change: In CRL::GdsStream::operator<<(Cell*), external components needs to be exported twice. First as "METALx.pin" to signal an external component (and give it's name). And second as a "normal" component in "METALx". If the METALx part is forgotten, the "Vendor" StreamIn will not see the METALx.pin as something physical so f***g gaps appears in the wiring. And furthermore, if the TEXT label is above it, the name of the net goes away...
This commit is contained in:
parent
a81f6b27f5
commit
b9c6b5dd80
|
@ -806,6 +806,13 @@ namespace {
|
||||||
Box bb = component->getBoundingBox(layer);
|
Box bb = component->getBoundingBox(layer);
|
||||||
if ((bb.getWidth() == 0) or (bb.getHeight() == 0))
|
if ((bb.getWidth() == 0) or (bb.getHeight() == 0))
|
||||||
continue;
|
continue;
|
||||||
|
(*this) << BOUNDARY;
|
||||||
|
(*this) << LAYER(layer->getGds2Layer());
|
||||||
|
(*this) << DATATYPE(layer->getGds2Datatype());
|
||||||
|
(*this) << bb;
|
||||||
|
(*this) << ENDEL;
|
||||||
|
isOnGrid( component, bb );
|
||||||
|
|
||||||
const BasicLayer* exportLayer = layer;
|
const BasicLayer* exportLayer = layer;
|
||||||
if (NetExternalComponents::isExternal(component)) {
|
if (NetExternalComponents::isExternal(component)) {
|
||||||
string layerName = getString( layer->getName() );
|
string layerName = getString( layer->getName() );
|
||||||
|
@ -813,13 +820,12 @@ namespace {
|
||||||
exportLayer = tech->getBasicLayer( layerName+".pin" );
|
exportLayer = tech->getBasicLayer( layerName+".pin" );
|
||||||
if (not exportLayer) exportLayer = layer;
|
if (not exportLayer) exportLayer = layer;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
(*this) << BOUNDARY;
|
(*this) << BOUNDARY;
|
||||||
(*this) << LAYER(exportLayer->getGds2Layer());
|
(*this) << LAYER(exportLayer->getGds2Layer());
|
||||||
(*this) << DATATYPE(exportLayer->getGds2Datatype());
|
(*this) << DATATYPE(exportLayer->getGds2Datatype());
|
||||||
(*this) << bb;
|
(*this) << bb;
|
||||||
(*this) << ENDEL;
|
(*this) << ENDEL;
|
||||||
isOnGrid( component, bb );
|
}
|
||||||
|
|
||||||
if (NetExternalComponents::isExternal(component) or dynamic_cast<Pin*>(component)) {
|
if (NetExternalComponents::isExternal(component) or dynamic_cast<Pin*>(component)) {
|
||||||
string name = getString( component->getNet()->getName() );
|
string name = getString( component->getNet()->getName() );
|
||||||
|
|
Loading…
Reference in New Issue