From 238d9dfaba51c345557e4f622a9a50e1e178613c Mon Sep 17 00:00:00 2001 From: Gabriel Gouvine Date: Tue, 6 Jun 2023 15:57:50 +0200 Subject: [PATCH] Remove dead antenna diode insertion code --- coloquinte | 2 +- etesian/src/Configuration.cpp | 5 --- etesian/src/EtesianEngine.cpp | 51 ----------------------------- etesian/src/etesian/Configuration.h | 3 -- etesian/src/etesian/EtesianEngine.h | 4 --- 5 files changed, 1 insertion(+), 64 deletions(-) diff --git a/coloquinte b/coloquinte index ea12145d..ef453653 160000 --- a/coloquinte +++ b/coloquinte @@ -1 +1 @@ -Subproject commit ea12145d338238d3c92c6863a164d3069560c42e +Subproject commit ef4536534d6941db0c3ae0470cf80102ecd62e21 diff --git a/etesian/src/Configuration.cpp b/etesian/src/Configuration.cpp index 7077bcc7..0dc03f5e 100644 --- a/etesian/src/Configuration.cpp +++ b/etesian/src/Configuration.cpp @@ -61,8 +61,6 @@ namespace Etesian { , _routingDriven ( Cfg::getParamBool ("etesian.routingDriven" , false )->asBool()) , _spaceMargin ( Cfg::getParamPercentage("etesian.spaceMargin" , 5.0)->asDouble() ) , _aspectRatio ( Cfg::getParamPercentage("etesian.aspectRatio" ,100.0)->asDouble() ) - , _antennaInsertThreshold - ( Cfg::getParamDouble ("etesian.antennaInsertThreshold", 50.0)->asDouble() ) , _tieName ( Cfg::getParamString ("etesian.tieName" ,"tie_x0" )->asString() ) , _feedNames ( Cfg::getParamString ("etesian.feedNames" ,"tie_x0,rowend_x0")->asString() ) , _diodeName ( Cfg::getParamString ("etesian.diodeName" ,"dio_x0" )->asString() ) @@ -110,7 +108,6 @@ namespace Etesian { , _spreadingConf ( other._spreadingConf ) , _spaceMargin ( other._spaceMargin ) , _aspectRatio ( other._aspectRatio ) - , _antennaInsertThreshold( other._antennaInsertThreshold ) , _tieName ( other._tieName ) , _feedNames ( other._feedNames ) , _diodeName ( other._diodeName ) @@ -146,7 +143,6 @@ namespace Etesian { cmess1 << Dots::asPercentage(" - Space Margin" ,_spaceMargin ) << endl; cmess1 << Dots::asPercentage(" - Aspect Ratio" ,_aspectRatio ) << endl; cmess1 << Dots::asString (" - Bloat model" ,_bloat ) << endl; - cmess1 << Dots::asPercentage(" - Antenna Insert" ,_antennaInsertThreshold ) << endl; cmess1 << Dots::asString (" - Antenna gate Max. WL" ,DbU::getValueString(_antennaGateMaxWL )) << endl; cmess1 << Dots::asString (" - Antenna diode Max. WL",DbU::getValueString(_antennaDiodeMaxWL)) << endl; cmess1 << Dots::asString (" - Latch up Distance",DbU::getValueString(_latchUpDistance)) << endl; @@ -177,7 +173,6 @@ namespace Etesian { record->add ( getSlot( "_spreadingConf" , (int)_spreadingConf ) ); record->add ( getSlot( "_spaceMargin" , _spaceMargin ) ); record->add ( getSlot( "_aspectRatio" , _aspectRatio ) ); - record->add ( getSlot( "_antennaInsertThreshold", _antennaInsertThreshold ) ); record->add ( getSlot( "_tieName" , _tieName ) ); record->add ( getSlot( "_feedNames" , _feedNames ) ); record->add ( getSlot( "_diodeName" , _diodeName ) ); diff --git a/etesian/src/EtesianEngine.cpp b/etesian/src/EtesianEngine.cpp index 4bc56b9e..aa234684 100644 --- a/etesian/src/EtesianEngine.cpp +++ b/etesian/src/EtesianEngine.cpp @@ -476,7 +476,6 @@ namespace Etesian { _placementUB = NULL; //_densityLimits = NULL; _diodeCount = 0; - _antennaDone = false; } @@ -1181,12 +1180,8 @@ namespace Etesian { step == coloquinte::PlacementStep::LowerBound) { _updatePlacement(&placement); } - - // Antenna update - // TODO } - void EtesianEngine::globalPlace ( unsigned options ) { coloquinte::ColoquinteParameters params(getPlaceEffort()); @@ -1208,52 +1203,6 @@ namespace Etesian { } - void EtesianEngine::antennaProtect () - { - DbU::Unit maxWL = getAntennaGateMaxWL(); - if (not maxWL) return; - - cmess1 << " o Inserting antenna effect protection." << endl; - uint32_t count = 0; - int diodeWidth = _diodeCell->getAbutmentBox().getWidth() / getSliceStep(); - cdebug_log(122,0) << "diodeWidth=" << diodeWidth << "p" << endl; - - vector cellWidth = _circuit->cellWidth(); - for (int inet=0 ; inet < _circuit->nbNets() ; ++inet ) { - // TODO: compute net size based on the current placement - // TODO: net ids do not match coloquinte net orders when some nets are empty - DbU::Unit rsmt = std::numeric_limits::max(); - Net* net = std::get<0>( _idsToNets[inet] ); - - if ((rsmt > maxWL) or net->isExternal()) { - cdebug_log(122,0) << "| Net [" << inet << "] \"" << net->getName() << "\" may have antenna effect, " - << DbU::getValueString(rsmt) - << endl; - std::get<2>( _idsToNets[inet] ) |= NeedsDiode; - - for ( RoutingPad* rp : net->getRoutingPads() ) { - Segment* segment = dynamic_cast( rp->getOccurrence().getEntity() ); - if (not segment) continue; - if (segment->getNet()->getDirection() & Net::Direction::DirOut) continue; - - Instance* instance = extractInstance( rp ); - if (instance->getPlacementStatus() == Instance::PlacementStatus::FIXED) - continue; - - auto iinst = _instsToIds.find( instance ); - if (iinst == _instsToIds.end()) continue; - - std::get<1>( _idsToInsts[ (*iinst).second ] ).push_back( rp ); - cellWidth[(*iinst).second] += 2*diodeWidth; - ++count; - } - } - } - _circuit->setCellWidth(cellWidth); - cmess1 << ::Dots::asInt( " - Inserted diodes", count ) << endl; - } - - void EtesianEngine::loadLeafCellLayouts () { AllianceFramework* af = AllianceFramework::get(); diff --git a/etesian/src/etesian/Configuration.h b/etesian/src/etesian/Configuration.h index 3fa0232c..1df1b992 100644 --- a/etesian/src/etesian/Configuration.h +++ b/etesian/src/etesian/Configuration.h @@ -67,7 +67,6 @@ namespace Etesian { inline bool getRoutingDriven () const; inline double getSpaceMargin () const; inline double getAspectRatio () const; - inline double getAntennaInsertThreshold () const; inline string getTieName () const; inline string getFeedNames () const; inline string getDiodeName () const; @@ -92,7 +91,6 @@ namespace Etesian { bool _routingDriven; double _spaceMargin; double _aspectRatio; - double _antennaInsertThreshold; string _tieName; string _feedNames; string _diodeName; @@ -115,7 +113,6 @@ namespace Etesian { inline bool Configuration::getRoutingDriven () const { return _routingDriven; } inline double Configuration::getSpaceMargin () const { return _spaceMargin; } inline double Configuration::getAspectRatio () const { return _aspectRatio; } - inline double Configuration::getAntennaInsertThreshold () const { return _antennaInsertThreshold; } inline string Configuration::getTieName () const { return _tieName; } inline string Configuration::getFeedNames () const { return _feedNames; } inline string Configuration::getDiodeName () const { return _diodeName; } diff --git a/etesian/src/etesian/EtesianEngine.h b/etesian/src/etesian/EtesianEngine.h index 66ba36a9..609e1fa3 100644 --- a/etesian/src/etesian/EtesianEngine.h +++ b/etesian/src/etesian/EtesianEngine.h @@ -94,7 +94,6 @@ namespace Etesian { inline Density getSpreadingConf () const; inline double getSpaceMargin () const; inline double getAspectRatio () const; - inline double getAntennaInsertThreshold () const; inline DbU::Unit getAntennaGateMaxWL () const; inline DbU::Unit getAntennaDiodeMaxWL () const; inline DbU::Unit getLatchUpDistance () const; @@ -133,7 +132,6 @@ namespace Etesian { size_t toColoquinte (); void globalPlace ( unsigned options=0 ); void detailedPlace ( unsigned options=0 ); - void antennaProtect (); void place (); uint32_t doHFNS (); inline void useFeed ( Cell* ); @@ -181,7 +179,6 @@ namespace Etesian { uint32_t _diodeCount; uint32_t _bufferCount; NetNameSet _excludedNets; - bool _antennaDone; protected: // Constructors & Destructors. @@ -218,7 +215,6 @@ namespace Etesian { inline Density EtesianEngine::getSpreadingConf () const { return getConfiguration()->getSpreadingConf(); } inline double EtesianEngine::getSpaceMargin () const { return getConfiguration()->getSpaceMargin(); } inline double EtesianEngine::getAspectRatio () const { return getConfiguration()->getAspectRatio(); } - inline double EtesianEngine::getAntennaInsertThreshold () const { return getConfiguration()->getAntennaInsertThreshold(); } inline DbU::Unit EtesianEngine::getAntennaGateMaxWL () const { return getConfiguration()->getAntennaGateMaxWL(); } inline DbU::Unit EtesianEngine::getAntennaDiodeMaxWL () const { return getConfiguration()->getAntennaDiodeMaxWL(); } inline DbU::Unit EtesianEngine::getLatchUpDistance () const { return getConfiguration()->getLatchUpDistance(); }