diff --git a/etesian/src/EtesianEngine.cpp b/etesian/src/EtesianEngine.cpp index 0947ce28..9845bcb3 100644 --- a/etesian/src/EtesianEngine.cpp +++ b/etesian/src/EtesianEngine.cpp @@ -1080,6 +1080,18 @@ namespace Etesian { } void EtesianEngine::_coloquinteCallback(coloquinte::PlacementStep step) { + + // Graphical update + GraphicUpdate conf = getUpdateConf(); + bool updatePlacement = conf == GraphicUpdate::UpdateAll; + if (conf == GraphicUpdate::LowerBound && + step == coloquinte::PlacementStep::LowerBound) { + updatePlacement = true; + } + _coloquinteCallbackCore(step, updatePlacement); + } + + void EtesianEngine::_coloquinteCallbackCore(coloquinte::PlacementStep step, bool updatePlacement) { auto placement = _circuit->solution(); if (step == coloquinte::PlacementStep::LowerBound) { *_placementLB = placement; @@ -1088,13 +1100,7 @@ namespace Etesian { *_placementUB = placement; } - // Graphical update - GraphicUpdate conf = getUpdateConf(); - if (conf == GraphicUpdate::UpdateAll) { - _updatePlacement(&placement); - } - else if (conf == GraphicUpdate::LowerBound && - step == coloquinte::PlacementStep::LowerBound) { + if (updatePlacement) { _updatePlacement(&placement); } } diff --git a/etesian/src/PyEtesian.cpp b/etesian/src/PyEtesian.cpp index 7edb0c9e..d631b501 100644 --- a/etesian/src/PyEtesian.cpp +++ b/etesian/src/PyEtesian.cpp @@ -63,7 +63,7 @@ extern "C" { static PyModuleDef PyEtesian_ModuleDef = { PyModuleDef_HEAD_INIT , "Etesian" /* m_name */ - , "Standard cell analytical placer (based on SimPL)." + , "Standard cell analytical placer." /* m_doc */ , -1 /* m_size */ , PyEtesian_Methods /* m_methods */ diff --git a/etesian/src/etesian/EtesianEngine.h b/etesian/src/etesian/EtesianEngine.h index 03af530a..eb614253 100644 --- a/etesian/src/etesian/EtesianEngine.h +++ b/etesian/src/etesian/EtesianEngine.h @@ -185,11 +185,15 @@ namespace Etesian { private: EtesianEngine ( const EtesianEngine& ); EtesianEngine& operator= ( const EtesianEngine& ); + + protected: + virtual void _coloquinteCallback(coloquinte::PlacementStep step); + void _coloquinteCallbackCore(coloquinte::PlacementStep step, bool updatePlacement); + private: inline uint32_t _getNewDiodeId (); Instance* _createDiode ( Cell* ); void _updatePlacement ( const coloquinte::PlacementSolution* ); - void _coloquinteCallback(coloquinte::PlacementStep step); void _checkNotAFeed ( Occurrence occurrence ) const; };