Basic routing-driven placement
This commit is contained in:
parent
6a6def8252
commit
3f182f1cee
|
@ -16,14 +16,13 @@
|
||||||
set_lib_link_mode()
|
set_lib_link_mode()
|
||||||
setup_boost(program_options python regex)
|
setup_boost(program_options python regex)
|
||||||
|
|
||||||
find_package(LibXml2 REQUIRED)
|
|
||||||
find_package(PythonLibs REQUIRED)
|
find_package(PythonLibs REQUIRED)
|
||||||
find_package(PythonSitePackages REQUIRED)
|
find_package(PythonSitePackages REQUIRED)
|
||||||
find_package(VLSISAPD REQUIRED)
|
find_package(VLSISAPD REQUIRED)
|
||||||
find_package(LEFDEF REQUIRED)
|
|
||||||
find_package(HURRICANE REQUIRED)
|
find_package(HURRICANE REQUIRED)
|
||||||
find_package(KATABATIC REQUIRED)
|
find_package(KATABATIC REQUIRED)
|
||||||
find_package(CORIOLIS REQUIRED)
|
find_package(CORIOLIS REQUIRED)
|
||||||
|
find_package(KITE REQUIRED)
|
||||||
find_package(COLOQUINTE REQUIRED)
|
find_package(COLOQUINTE REQUIRED)
|
||||||
find_package(Libexecinfo REQUIRED)
|
find_package(Libexecinfo REQUIRED)
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
${HURRICANE_PYTHON_LIBRARIES}
|
${HURRICANE_PYTHON_LIBRARIES}
|
||||||
${HURRICANE_GRAPHICAL_LIBRARIES}
|
${HURRICANE_GRAPHICAL_LIBRARIES}
|
||||||
${HURRICANE_LIBRARIES}
|
${HURRICANE_LIBRARIES}
|
||||||
|
${KITE_LIBRARIES}
|
||||||
${CONFIGURATION_LIBRARY}
|
${CONFIGURATION_LIBRARY}
|
||||||
${BOOKSHELF_LIBRARY}
|
${BOOKSHELF_LIBRARY}
|
||||||
${CIF_LIBRARY}
|
${CIF_LIBRARY}
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "hurricane/viewer/CellWidget.h"
|
#include "hurricane/viewer/CellWidget.h"
|
||||||
#include "katabatic/GCellGrid.h"
|
#include "katabatic/GCellGrid.h"
|
||||||
#include "katabatic/KatabaticEngine.h"
|
#include "katabatic/KatabaticEngine.h"
|
||||||
|
#include "kite/KiteEngine.h"
|
||||||
#include "crlcore/Utilities.h"
|
#include "crlcore/Utilities.h"
|
||||||
#include "crlcore/Measures.h"
|
#include "crlcore/Measures.h"
|
||||||
#include "crlcore/AllianceFramework.h"
|
#include "crlcore/AllianceFramework.h"
|
||||||
|
@ -630,6 +631,7 @@ namespace Etesian {
|
||||||
|
|
||||||
void EtesianEngine::feedRoutingBack(){
|
void EtesianEngine::feedRoutingBack(){
|
||||||
using namespace Katabatic;
|
using namespace Katabatic;
|
||||||
|
using namespace Kite;
|
||||||
/*
|
/*
|
||||||
* If routing information is present, use it to
|
* If routing information is present, use it to
|
||||||
* * artificially expand the areas given to coloquinte
|
* * artificially expand the areas given to coloquinte
|
||||||
|
@ -638,7 +640,7 @@ namespace Etesian {
|
||||||
DbU::Unit pitch = getPitch();
|
DbU::Unit pitch = getPitch();
|
||||||
const float densityThreshold = 0.9;
|
const float densityThreshold = 0.9;
|
||||||
|
|
||||||
KatabaticEngine* routingEngine = KatabaticEngine::get( getCell() );
|
KiteEngine* routingEngine = KiteEngine::get( getCell() );
|
||||||
if(routingEngine == NULL)
|
if(routingEngine == NULL)
|
||||||
throw Error("No routing information was found when performing routing-driven placement\n");
|
throw Error("No routing information was found when performing routing-driven placement\n");
|
||||||
|
|
||||||
|
@ -794,6 +796,7 @@ namespace Etesian {
|
||||||
_progressReport1(" Final Legalize ." );
|
_progressReport1(" Final Legalize ." );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_placementLB = _placementUB; // In case we run other passes
|
||||||
_updatePlacement( _placementUB );
|
_updatePlacement( _placementUB );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -869,6 +872,33 @@ namespace Etesian {
|
||||||
cmess1 << " o Detailed Placement." << endl;
|
cmess1 << " o Detailed Placement." << endl;
|
||||||
detailedPlace(detailedIterations, detailedEffort, detailedOptions);
|
detailedPlace(detailedIterations, detailedEffort, detailedOptions);
|
||||||
|
|
||||||
|
using namespace Kite;
|
||||||
|
KiteEngine* kiteE = KiteEngine::create(_cell);
|
||||||
|
kiteE->runGlobalRouter(0);
|
||||||
|
kiteE->loadGlobalRouting(Katabatic::EngineLoadGrByNet);
|
||||||
|
kiteE->balanceGlobalDensity();
|
||||||
|
kiteE->layerAssign(Katabatic::EngineNoNetLayerAssign);
|
||||||
|
kiteE->runNegociate();
|
||||||
|
feedRoutingBack();
|
||||||
|
kiteE->destroy();
|
||||||
|
|
||||||
|
UpdateSession::open();
|
||||||
|
forEach(Net*, inet, _cell->getNets()){
|
||||||
|
if(NetRoutingExtension::isManualGlobalRoute(*inet))
|
||||||
|
continue;
|
||||||
|
std::vector<Contact*> pointers;
|
||||||
|
forEach(Component*, icom, (*inet)->getComponents()){
|
||||||
|
Contact * contact = dynamic_cast<Contact*>(*icom);
|
||||||
|
if(contact){
|
||||||
|
pointers.push_back(contact);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(Contact* contact : pointers)
|
||||||
|
contact->destroy();
|
||||||
|
}
|
||||||
|
UpdateSession::close();
|
||||||
|
detailedPlace(detailedIterations, detailedEffort, detailedOptions);
|
||||||
|
|
||||||
cmess2 << " o Adding feed cells." << endl;
|
cmess2 << " o Adding feed cells." << endl;
|
||||||
addFeeds();
|
addFeeds();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue