More accurate layout detection in CRL::GdsDriver.
* Bug: In CRL::GdsDriver::hasLayout(), a Cell was saved in the GDSII stream only if it has a layout, but the check was not accurate enough. In the Arlet6502, the whole core was missing. Now check for the abscence of Plugs (not unfinished Nets) and PLACED/FIXED instances.
This commit is contained in:
parent
4344023221
commit
bf0d1ef350
|
@ -55,6 +55,10 @@ namespace {
|
||||||
|
|
||||||
bool hasLayout ( const Cell* cell )
|
bool hasLayout ( const Cell* cell )
|
||||||
{
|
{
|
||||||
|
for ( Instance* instance : cell->getInstances() ) {
|
||||||
|
if (instance->getPlacementStatus() != Instance::PlacementStatus::UNPLACED)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
for ( Net* net : cell->getNets() ) {
|
for ( Net* net : cell->getNets() ) {
|
||||||
for ( Component* component : net->getComponents() ) {
|
for ( Component* component : net->getComponents() ) {
|
||||||
if (dynamic_cast<Plug*>(component) == NULL) return true;
|
if (dynamic_cast<Plug*>(component) == NULL) return true;
|
||||||
|
@ -667,7 +671,9 @@ namespace CRL {
|
||||||
GdsStream gstream ( cellFile );
|
GdsStream gstream ( cellFile );
|
||||||
|
|
||||||
DepthOrder cellOrder ( cell );
|
DepthOrder cellOrder ( cell );
|
||||||
for ( auto element : cellOrder.getCellDepths() ) gstream << element.first;
|
for ( auto element : cellOrder.getCellDepths() ) {
|
||||||
|
gstream << element.first;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue