Remove dead antenna diode insertion code

This commit is contained in:
Gabriel Gouvine 2023-06-06 15:57:50 +02:00
parent 1f5549d396
commit db01b4ff55
5 changed files with 1 additions and 64 deletions

@ -1 +1 @@
Subproject commit ea12145d338238d3c92c6863a164d3069560c42e
Subproject commit ef4536534d6941db0c3ae0470cf80102ecd62e21

View File

@ -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 ) );

View File

@ -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<int> 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<DbU::Unit>::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<Segment*>( 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();

View File

@ -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; }

View File

@ -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(); }