From 7f41cd73c7ce444b98bbf6143279523921630716 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Thu, 15 Apr 2021 23:50:54 +0200 Subject: [PATCH] In EtesianEngine::toColoquinte(), increase the buf_x8 size to solve DRC/LUP. --- etesian/src/EtesianEngine.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/etesian/src/EtesianEngine.cpp b/etesian/src/EtesianEngine.cpp index 35dd148f..d598b65c 100644 --- a/etesian/src/EtesianEngine.cpp +++ b/etesian/src/EtesianEngine.cpp @@ -689,10 +689,13 @@ namespace Etesian { DbU::Unit hpitch = getSliceStep(); DbU::Unit vpitch = getSliceStep(); DbU::Unit sliceHeight = getSliceHeight(); + bool isFlexLib = (getGauge()->getName() == "FlexLib"); - cmess1 << " o Converting <" << getCell()->getName() << "> into Coloquinte." << endl; + cmess1 << " o Converting \"" << getCell()->getName() << "\" into Coloquinte." << endl; cmess1 << ::Dots::asString(" - H-pitch" , DbU::getValueString(hpitch)) << endl; cmess1 << ::Dots::asString(" - V-pitch" , DbU::getValueString(vpitch)) << endl; + if (isFlexLib) + cmess1 << ::Dots::asString(" - Using patches for" , "\"FlexLib\"") << endl; cmess2 << " o Looking through the hierarchy." << endl; for( Occurrence occurrence : getCell()->getTerminalNetlistInstanceOccurrences() ) @@ -814,7 +817,9 @@ namespace Etesian { _instsToIds.insert( make_pair(instance,instanceId) ); _idsToInsts.push_back( make_tuple(instance,vector()) ); - // cerr << "FIXED id=" << instanceId + // cerr << endl; + // cerr << "FIXED " << instance << endl; + // cerr << " id=" << instanceId // << " " << instance << " size:(" << xsize << " " << ysize // << ") pos:(" << xpos << " " << ypos << ")" << endl; ++instanceId; @@ -869,6 +874,10 @@ namespace Etesian { // cerr << instance << " size:(" << xsize << " " << ysize // << ") pos:(" << xpos << " " << ypos << ")" << endl; + string masterName = getString( instance->getMasterCell()->getName() ); + if (isFlexLib and not instance->isFixed() and (masterName == "buf_x8")) + ++xsize; + instances[instanceId].size = point( xsize, ysize ); instances[instanceId].list_index = instanceId; instances[instanceId].area = static_cast(xsize) * static_cast(ysize); @@ -881,7 +890,9 @@ namespace Etesian { |coloquinte::YFlippable; } else { instances[instanceId].attributes = 0; - // cerr << "FIXED id=" << instanceId + // cerr << endl; + // cerr << "FIXED " << instance << endl; + // cerr << " id=" << instanceId // << " " << instance << " size:(" << xsize << " " << ysize // << ") pos:(" << xpos << " " << ypos << ")" << endl; }