New Etesian bloat profile "90%".
* New: In Etesian::BloatCells, new profile for hihgly saturated designs named "90%", as it add, on average, 90% of free space. This has been made for the "ao68000" of Staf Verhaegen and may needs some refinement as it is a bit brutal.
This commit is contained in:
parent
5bbeb0b062
commit
43ea63d98d
|
@ -121,6 +121,39 @@ namespace Etesian {
|
|||
}
|
||||
|
||||
|
||||
Bloat90Percents::Bloat90Percents ()
|
||||
: BloatCell("90%")
|
||||
{ }
|
||||
|
||||
|
||||
Bloat90Percents::~Bloat90Percents ()
|
||||
{ }
|
||||
|
||||
|
||||
DbU::Unit Bloat90Percents::getDx ( const Cell* cell, const EtesianEngine* etesian ) const
|
||||
{
|
||||
int terminals = 0;
|
||||
for ( Net* net : cell->getNets() ) {
|
||||
if (net->isExternal() and not net->isPower()) ++terminals;
|
||||
}
|
||||
|
||||
Box ab ( cell->getAbutmentBox() );
|
||||
DbU::Unit vpitch = etesian->getVerticalPitch();;
|
||||
int xsize = (ab.getWidth() + vpitch - 1) / vpitch;
|
||||
|
||||
// float termRatio = (float)terminals / (float)(ab.getWidth() / vpitch);
|
||||
// if (termRatio > 0.5) {
|
||||
// return vpitch*6;
|
||||
// }
|
||||
|
||||
if (xsize < 4) return vpitch*11;
|
||||
if (xsize < 6) return vpitch*8;
|
||||
if (xsize < 8) return vpitch*6;
|
||||
|
||||
return vpitch*4;
|
||||
}
|
||||
|
||||
|
||||
bool BloatCells::select ( std::string profile )
|
||||
{
|
||||
BloatKey key ( profile );
|
||||
|
|
|
@ -92,6 +92,14 @@ namespace Etesian {
|
|||
};
|
||||
|
||||
|
||||
class Bloat90Percents : public BloatCell {
|
||||
public:
|
||||
Bloat90Percents ();
|
||||
virtual ~Bloat90Percents ();
|
||||
virtual DbU::Unit getDx ( const Cell*, const EtesianEngine* ) const;
|
||||
};
|
||||
|
||||
|
||||
class BloatCells {
|
||||
public:
|
||||
inline BloatCells ( EtesianEngine* );
|
||||
|
@ -114,9 +122,10 @@ namespace Etesian {
|
|||
, _bloatCells()
|
||||
, _dxSpace (0)
|
||||
{
|
||||
_bloatCells.insert( new BloatDisabled() );
|
||||
_bloatCells.insert( new BloatNsxlib () );
|
||||
_bloatCells.insert( new Bloat3Metals () );
|
||||
_bloatCells.insert( new BloatDisabled () );
|
||||
_bloatCells.insert( new BloatNsxlib () );
|
||||
_bloatCells.insert( new Bloat3Metals () );
|
||||
_bloatCells.insert( new Bloat90Percents() );
|
||||
select( "disabled" );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue