Remove uniform density option, replaced by densityVariation

This commit is contained in:
Gabriel Gouvine 2023-06-10 14:45:07 +02:00
parent 7f0ab625d2
commit 6f793665c2
10 changed files with 16 additions and 31 deletions

View File

@ -21,7 +21,6 @@ param.setDouble( 1.0 )
Cfg.getParamDouble ( 'etesian.spaceMargin' ).setPercentage( 0.05 ) Cfg.getParamDouble ( 'etesian.spaceMargin' ).setPercentage( 0.05 )
Cfg.getParamDouble ( 'etesian.densityVariation' ).setPercentage( 0.05 ) Cfg.getParamDouble ( 'etesian.densityVariation' ).setPercentage( 0.05 )
Cfg.getParamBool ( 'etesian.uniformDensity' ).setBool ( False )
Cfg.getParamBool ( 'etesian.routingDriven' ).setBool ( False ) Cfg.getParamBool ( 'etesian.routingDriven' ).setBool ( False )
Cfg.getParamString ( 'etesian.feedNames' ).setString ( 'tie_x0,rowend_x0' ) Cfg.getParamString ( 'etesian.feedNames' ).setString ( 'tie_x0,rowend_x0' )
Cfg.getParamString ( 'etesian.cell.zero' ).setString ( 'zero_x0' ) Cfg.getParamString ( 'etesian.cell.zero' ).setString ( 'zero_x0' )

View File

@ -294,7 +294,7 @@ def setupTSMC_c180_c4m ( checkToolkit=None, ndaTop=None ):
cfg.misc.verboseLevel1 = True cfg.misc.verboseLevel1 = True
cfg.misc.verboseLevel2 = True cfg.misc.verboseLevel2 = True
cfg.etesian.graphics = 3 cfg.etesian.graphics = 3
cfg.etesian.uniformDensity = True cfg.etesian.densityVariation = 0.04
cfg.etesian.spaceMargin = 0.04 cfg.etesian.spaceMargin = 0.04
cfg.katana.eventsLimit = 4000000 cfg.katana.eventsLimit = 4000000
af = CRL.AllianceFramework.get() af = CRL.AllianceFramework.get()

View File

@ -36,15 +36,15 @@ You can configure the placer in two ways:
.. code-block:: Python .. code-block:: Python
with overlay.CfgCache(priority=Cfg.Parameter.Priority.UserFile) as cfg: with overlay.CfgCache(priority=Cfg.Parameter.Priority.UserFile) as cfg:
cfg.etesian.effort = 2 cfg.etesian.effort = 2
cfg.etesian.uniformDensity = True cfg.etesian.spaceMargin = 0.8
cfg.etesian.spaceMargin = 0.8 cfg.etesian.densityVariation = 0.1
cfg.etesian.aspectRatio = 1.0 cfg.etesian.aspectRatio = 1.0
With this setup, the cells will be spread uniformally over the With this setup, the placement will have ``80%`` of free space added and
area (``etesian.uniformDensity``), with ``80%`` of free space an aspect ratio of ``100%`` (square shape). Some variations in density
added and an aspect ratio of ``100%`` (square shape). is allowed, with at most ``10%`` unused space.
8.1 Router -- Katana 8.1 Router -- Katana

View File

@ -176,11 +176,10 @@ Etesian Configuration Parameters
| | The extra white space added to the total area | | | The extra white space added to the total area |
| | of the standard cells | | | of the standard cells |
+-----------------------------------+------------------+----------------------------+ +-----------------------------------+------------------+----------------------------+
|``etesian.uniformDensity`` | TypeBool | :cb:`False` | |``etesian.densityVariation`` | TypePercentage | :cb:`5` |
| +------------------+----------------------------+ | +------------------+----------------------------+
| | Whether the cells will be spread envenly | | | Control deviation from uniform density in the |
| | across the area or allowed to form denser | | | placement, as a percentage of area. |
| | clusters |
+-----------------------------------+------------------+----------------------------+ +-----------------------------------+------------------+----------------------------+
|``etesian.effort`` | TypeInt | :cb:`2` | |``etesian.effort`` | TypeInt | :cb:`2` |
| +------------------+----------------------------+ | +------------------+----------------------------+

View File

@ -24,8 +24,8 @@ with overlay.CfgCache(priority=Cfg.Parameter.Priority.UserFile) as cfg:
cfg.misc.minTraceLevel = 1900 cfg.misc.minTraceLevel = 1900
cfg.misc.maxTraceLevel = 3000 cfg.misc.maxTraceLevel = 3000
cfg.etesian.effort = 2 cfg.etesian.effort = 2
cfg.etesian.uniformDensity = True
cfg.etesian.spaceMargin = 0.8 cfg.etesian.spaceMargin = 0.8
cfg.etesian.densityVariation = 0.1
cfg.etesian.aspectRatio = 1.0 cfg.etesian.aspectRatio = 1.0
cfg.katana.eventsLimit = 1000000 cfg.katana.eventsLimit = 1000000
cfg.katana.termSatReservedLocal = 6 cfg.katana.termSatReservedLocal = 6

View File

@ -176,11 +176,10 @@ Etesian Configuration Parameters
| | The extra white space added to the total area | | | The extra white space added to the total area |
| | of the standard cells | | | of the standard cells |
+-----------------------------------+------------------+----------------------------+ +-----------------------------------+------------------+----------------------------+
|``etesian.uniformDensity`` | TypeBool | :cb:`False` | |``etesian.densityVariation`` | TypePercentage | :cb:`5` |
| +------------------+----------------------------+ | +------------------+----------------------------+
| | Whether the cells will be spread envenly | | | Control deviation from uniform density in the |
| | across the area or allowed to form denser | | | placement, as a percentage of area. |
| | clusters |
+-----------------------------------+------------------+----------------------------+ +-----------------------------------+------------------+----------------------------+
|``etesian.effort`` | TypeInt | :cb:`2` | |``etesian.effort`` | TypeInt | :cb:`2` |
| +------------------+----------------------------+ | +------------------+----------------------------+

View File

@ -57,7 +57,6 @@ namespace Etesian {
(Cfg::getParamEnumerate ("etesian.effort" , Standard )->asInt()) ) (Cfg::getParamEnumerate ("etesian.effort" , Standard )->asInt()) )
, _updateConf ( static_cast<GraphicUpdate> , _updateConf ( static_cast<GraphicUpdate>
(Cfg::getParamEnumerate ("etesian.graphics" , FinalOnly )->asInt()) ) (Cfg::getParamEnumerate ("etesian.graphics" , FinalOnly )->asInt()) )
, _spreadingConf ( Cfg::getParamBool ("etesian.uniformDensity" , false )->asBool()? ForceUniform : MaxDensity )
, _routingDriven ( Cfg::getParamBool ("etesian.routingDriven" , false )->asBool()) , _routingDriven ( Cfg::getParamBool ("etesian.routingDriven" , false )->asBool())
, _spaceMargin ( Cfg::getParamPercentage("etesian.spaceMargin" , 5.0)->asDouble() ) , _spaceMargin ( Cfg::getParamPercentage("etesian.spaceMargin" , 5.0)->asDouble() )
, _densityVariation ( Cfg::getParamPercentage("etesian.densityVariation", 5.0)->asDouble() ) , _densityVariation ( Cfg::getParamPercentage("etesian.densityVariation", 5.0)->asDouble() )
@ -106,7 +105,6 @@ namespace Etesian {
, _cg (NULL) , _cg (NULL)
, _placeEffort ( other._placeEffort ) , _placeEffort ( other._placeEffort )
, _updateConf ( other._updateConf ) , _updateConf ( other._updateConf )
, _spreadingConf ( other._spreadingConf )
, _spaceMargin ( other._spaceMargin ) , _spaceMargin ( other._spaceMargin )
, _densityVariation ( other._densityVariation) , _densityVariation ( other._densityVariation)
, _aspectRatio ( other._aspectRatio ) , _aspectRatio ( other._aspectRatio )
@ -140,7 +138,6 @@ namespace Etesian {
cmess1 << Dots::asIdentifier(" - Cell Gauge" ,getString(_cg->getName())) << endl; cmess1 << Dots::asIdentifier(" - Cell Gauge" ,getString(_cg->getName())) << endl;
cmess1 << Dots::asInt (" - Place Effort" ,_placeEffort ) << endl; cmess1 << Dots::asInt (" - Place Effort" ,_placeEffort ) << endl;
cmess1 << Dots::asInt (" - Update Conf" ,_updateConf ) << endl; cmess1 << Dots::asInt (" - Update Conf" ,_updateConf ) << endl;
cmess1 << Dots::asInt (" - Spreading Conf" ,_spreadingConf ) << endl;
cmess1 << Dots::asBool (" - Routing driven" ,_routingDriven ) << endl; cmess1 << Dots::asBool (" - Routing driven" ,_routingDriven ) << endl;
cmess1 << Dots::asPercentage(" - Space Margin" ,_spaceMargin ) << endl; cmess1 << Dots::asPercentage(" - Space Margin" ,_spaceMargin ) << endl;
cmess1 << Dots::asPercentage(" - Spread Margin" ,_densityVariation ) << endl; cmess1 << Dots::asPercentage(" - Spread Margin" ,_densityVariation ) << endl;
@ -173,7 +170,6 @@ namespace Etesian {
record->add ( getSlot( "_cg" , _cg ) ); record->add ( getSlot( "_cg" , _cg ) );
record->add ( getSlot( "_placeEffort" , (int)_placeEffort ) ); record->add ( getSlot( "_placeEffort" , (int)_placeEffort ) );
record->add ( getSlot( "_updateConf" , (int)_updateConf ) ); record->add ( getSlot( "_updateConf" , (int)_updateConf ) );
record->add ( getSlot( "_spreadingConf" , (int)_spreadingConf ) );
record->add ( getSlot( "_spaceMargin" , _spaceMargin ) ); record->add ( getSlot( "_spaceMargin" , _spaceMargin ) );
record->add ( getSlot( "_densityVariation" , _densityVariation ) ); record->add ( getSlot( "_densityVariation" , _densityVariation ) );
record->add ( getSlot( "_aspectRatio" , _aspectRatio ) ); record->add ( getSlot( "_aspectRatio" , _aspectRatio ) );

View File

@ -48,9 +48,6 @@ namespace Etesian {
, LowerBound=2 , LowerBound=2
, FinalOnly =3 , FinalOnly =3
}; };
enum Density { ForceUniform=1
, MaxDensity =2
};
class Configuration { class Configuration {
public: public:
@ -63,7 +60,6 @@ namespace Etesian {
inline CellGauge* getCellGauge () const; inline CellGauge* getCellGauge () const;
inline Effort getPlaceEffort () const; inline Effort getPlaceEffort () const;
inline GraphicUpdate getUpdateConf () const; inline GraphicUpdate getUpdateConf () const;
inline Density getSpreadingConf () const;
inline bool getRoutingDriven () const; inline bool getRoutingDriven () const;
inline double getSpaceMargin () const; inline double getSpaceMargin () const;
inline double getDensityVariation () const; inline double getDensityVariation () const;
@ -89,7 +85,6 @@ namespace Etesian {
CellGauge* _cg; CellGauge* _cg;
Effort _placeEffort; Effort _placeEffort;
GraphicUpdate _updateConf; GraphicUpdate _updateConf;
Density _spreadingConf;
bool _routingDriven; bool _routingDriven;
double _spaceMargin; double _spaceMargin;
double _densityVariation; double _densityVariation;
@ -112,7 +107,6 @@ namespace Etesian {
inline CellGauge* Configuration::getCellGauge () const { return _cg; } inline CellGauge* Configuration::getCellGauge () const { return _cg; }
inline Effort Configuration::getPlaceEffort () const { return _placeEffort; } inline Effort Configuration::getPlaceEffort () const { return _placeEffort; }
inline GraphicUpdate Configuration::getUpdateConf () const { return _updateConf; } inline GraphicUpdate Configuration::getUpdateConf () const { return _updateConf; }
inline Density Configuration::getSpreadingConf () const { return _spreadingConf; }
inline bool Configuration::getRoutingDriven () const { return _routingDriven; } inline bool Configuration::getRoutingDriven () const { return _routingDriven; }
inline double Configuration::getSpaceMargin () const { return _spaceMargin; } inline double Configuration::getSpaceMargin () const { return _spaceMargin; }
inline double Configuration::getDensityVariation () const { return _densityVariation; } inline double Configuration::getDensityVariation () const { return _densityVariation; }

View File

@ -90,7 +90,6 @@ namespace Etesian {
inline DbU::Unit getFixedAbWidth () const; inline DbU::Unit getFixedAbWidth () const;
inline Effort getPlaceEffort () const; inline Effort getPlaceEffort () const;
inline GraphicUpdate getUpdateConf () const; inline GraphicUpdate getUpdateConf () const;
inline Density getSpreadingConf () const;
inline double getSpaceMargin () const; inline double getSpaceMargin () const;
inline double getDensityVariation () const; inline double getDensityVariation () const;
inline double getAspectRatio () const; inline double getAspectRatio () const;
@ -208,7 +207,6 @@ namespace Etesian {
inline DbU::Unit EtesianEngine::getFixedAbWidth () const { return _fixedAbWidth; } inline DbU::Unit EtesianEngine::getFixedAbWidth () const { return _fixedAbWidth; }
inline Effort EtesianEngine::getPlaceEffort () const { return getConfiguration()->getPlaceEffort(); } inline Effort EtesianEngine::getPlaceEffort () const { return getConfiguration()->getPlaceEffort(); }
inline GraphicUpdate EtesianEngine::getUpdateConf () const { return getConfiguration()->getUpdateConf(); } inline GraphicUpdate EtesianEngine::getUpdateConf () const { return getConfiguration()->getUpdateConf(); }
inline Density EtesianEngine::getSpreadingConf () const { return getConfiguration()->getSpreadingConf(); }
inline double EtesianEngine::getSpaceMargin () const { return getConfiguration()->getSpaceMargin(); } inline double EtesianEngine::getSpaceMargin () const { return getConfiguration()->getSpaceMargin(); }
inline double EtesianEngine::getDensityVariation () const { return getConfiguration()->getDensityVariation(); } inline double EtesianEngine::getDensityVariation () const { return getConfiguration()->getDensityVariation(); }
inline double EtesianEngine::getAspectRatio () const { return getConfiguration()->getAspectRatio(); } inline double EtesianEngine::getAspectRatio () const { return getConfiguration()->getAspectRatio(); }

View File

@ -29,7 +29,7 @@ def cfg_setup():
cfg.etesian.aspectRatio = 1.00 cfg.etesian.aspectRatio = 1.00
cfg.etesian.aspectRatio = [10, 1000] cfg.etesian.aspectRatio = [10, 1000]
cfg.etesian.spaceMargin = 0.10 cfg.etesian.spaceMargin = 0.10
cfg.etesian.uniformDensity = False cfg.etesian.densityVariation = 1.0
cfg.etesian.routingDriven = False cfg.etesian.routingDriven = False
#cfg.etesian.latchUpDistance = u(30.0 - 1.0) #cfg.etesian.latchUpDistance = u(30.0 - 1.0)
cfg.etesian.latchUpDistance = 0 cfg.etesian.latchUpDistance = 0