New bloat profile for channel routing (named "channel").

This commit is contained in:
Jean-Paul Chaput 2022-10-23 17:44:45 +02:00
parent bba364eecc
commit 288d1c70b9
2 changed files with 42 additions and 0 deletions

View File

@ -147,6 +147,39 @@ namespace Etesian {
}
BloatChannel::BloatChannel ()
: BloatCell("channel")
{ }
BloatChannel::~BloatChannel ()
{ }
DbU::Unit BloatChannel::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->getSliceStep();;
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*4;
// if (xsize < 6) return vpitch*2;
// if (xsize < 8) return vpitch*1;
return vpitch*3;
}
Bloat90Percents::Bloat90Percents ()
: BloatCell("90%")
{ }

View File

@ -99,6 +99,14 @@ namespace Etesian {
};
class BloatChannel : public BloatCell {
public:
BloatChannel ();
virtual ~BloatChannel ();
virtual DbU::Unit getDx ( const Cell*, const EtesianEngine* ) const;
};
class Bloat90Percents : public BloatCell {
public:
Bloat90Percents ();
@ -133,6 +141,7 @@ namespace Etesian {
_bloatCells.insert( new BloatNsxlib () );
_bloatCells.insert( new BloatFlexlib () );
_bloatCells.insert( new Bloat3Metals () );
_bloatCells.insert( new BloatChannel () );
_bloatCells.insert( new Bloat90Percents() );
select( "disabled" );
}