Remove dead antenna diode insertion code
This commit is contained in:
parent
1f5549d396
commit
db01b4ff55
|
@ -1 +1 @@
|
|||
Subproject commit ea12145d338238d3c92c6863a164d3069560c42e
|
||||
Subproject commit ef4536534d6941db0c3ae0470cf80102ecd62e21
|
|
@ -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 ) );
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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(); }
|
||||
|
|
Loading…
Reference in New Issue