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);
|
||||
if ((bb.getWidth() == 0) or (bb.getHeight() == 0))
|
||||
continue;
|
||||
(*this) << BOUNDARY;
|
||||
(*this) << LAYER(layer->getGds2Layer());
|
||||
(*this) << DATATYPE(layer->getGds2Datatype());
|
||||
(*this) << bb;
|
||||
(*this) << ENDEL;
|
||||
isOnGrid( component, bb );
|
||||
|
||||
const BasicLayer* exportLayer = layer;
|
||||
if (NetExternalComponents::isExternal(component)) {
|
||||
string layerName = getString( layer->getName() );
|
||||
|
@ -813,13 +820,12 @@ namespace {
|
|||
exportLayer = tech->getBasicLayer( layerName+".pin" );
|
||||
if (not exportLayer) exportLayer = layer;
|
||||
}
|
||||
(*this) << BOUNDARY;
|
||||
(*this) << LAYER(exportLayer->getGds2Layer());
|
||||
(*this) << DATATYPE(exportLayer->getGds2Datatype());
|
||||
(*this) << bb;
|
||||
(*this) << ENDEL;
|
||||
}
|
||||
(*this) << BOUNDARY;
|
||||
(*this) << LAYER(exportLayer->getGds2Layer());
|
||||
(*this) << DATATYPE(exportLayer->getGds2Datatype());
|
||||
(*this) << bb;
|
||||
(*this) << ENDEL;
|
||||
isOnGrid( component, bb );
|
||||
|
||||
if (NetExternalComponents::isExternal(component) or dynamic_cast<Pin*>(component)) {
|
||||
string name = getString( component->getNet()->getName() );
|
||||
|
|
Loading…
Reference in New Issue