Rename SymmetricStage into PairSymmetrics, plus small cleanup.

This commit is contained in:
Jean-Paul Chaput 2017-05-26 13:32:30 +02:00
parent 3e825cc228
commit e12e45e495
11 changed files with 37 additions and 30 deletions

View File

@ -3413,7 +3413,6 @@ namespace Anabatic {
if (NetRoutingExtension::isAutomaticGlobalRoute(net)) { if (NetRoutingExtension::isAutomaticGlobalRoute(net)) {
DebugSession::open( net, 144, 150 ); DebugSession::open( net, 144, 150 );
AutoSegment::setAnalogMode( NetRoutingExtension::isAnalog(net) ); AutoSegment::setAnalogMode( NetRoutingExtension::isAnalog(net) );
cerr << net << " AnalogMode:" << NetRoutingExtension::get(net) << endl;
_loadNetGlobalRouting( net ); _loadNetGlobalRouting( net );
Session::revalidate(); Session::revalidate();
DebugSession::close(); DebugSession::close();

View File

@ -192,7 +192,7 @@ stylesTable = \
, (Drawing, 'gmetalv' , { 'color':'200,200,255', 'pattern':'light_antihash1.8', 'border':1 }) , (Drawing, 'gmetalv' , { 'color':'200,200,255', 'pattern':'light_antihash1.8', 'border':1 })
, (Drawing, 'gcut' , { 'color':'255,255,190', 'border':1 }) , (Drawing, 'gcut' , { 'color':'255,255,190', 'border':1 })
, (Drawing, 'Anabatic::Edge' , { 'color':'255,255,190', 'pattern':'0000000000000000', 'border':4, 'threshold':0.02*scale }) , (Drawing, 'Anabatic::Edge' , { 'color':'255,255,190', 'pattern':'0000000000000000', 'border':4, 'threshold':0.02*scale })
, (Drawing, 'Anabatic::GCell', { 'color':'255,255,190', 'pattern':'0000000000000000', 'border':4, 'threshold':0.10*scale }) , (Drawing, 'Anabatic::GCell', { 'color':'255,255,190', 'pattern':'0000000000000000', 'border':2, 'threshold':0.10*scale })
) )
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------

View File

@ -17,7 +17,7 @@
&& latex UsersGuide && latex UsersGuide
&& dvipdfm UsersGuide && dvipdfm UsersGuide
) )
add_dependencies ( doc_HTML socstyle.tex UsersGuide_LaTeX.rst UsersGuide.rst ) add_dependencies ( doc_LaTeX socstyle.tex UsersGuide_LaTeX.rst UsersGuide.rst )
install ( DIRECTORY images/ install ( DIRECTORY images/
DESTINATION ${htmlInstallDir}/images DESTINATION ${htmlInstallDir}/images

View File

@ -32,7 +32,7 @@ namespace Katana {
const Hurricane::BaseFlags Flags::LoadingStage = (1 << 28); const Hurricane::BaseFlags Flags::LoadingStage = (1 << 28);
const Hurricane::BaseFlags Flags::SlowMotion = (1 << 29); const Hurricane::BaseFlags Flags::SlowMotion = (1 << 29);
const Hurricane::BaseFlags Flags::PreRoutedStage = (1 << 30); const Hurricane::BaseFlags Flags::PreRoutedStage = (1 << 30);
const Hurricane::BaseFlags Flags::SymmetricStage = (1 << 31); const Hurricane::BaseFlags Flags::PairSymmetrics = (1 << 31);
} // Anabatic namespace. } // Anabatic namespace.

View File

@ -256,7 +256,7 @@ namespace Katana {
void GraphicKatanaEngine::_runNegociate () void GraphicKatanaEngine::_runNegociate ()
{ {
KatanaEngine* katana = getForFramework( NoFlags ); KatanaEngine* katana = getForFramework( NoFlags );
katana->runNegociate(); katana->runNegociate( Flags::PairSymmetrics );
} }
@ -277,7 +277,7 @@ namespace Katana {
katana->loadGlobalRouting( Anabatic::EngineLoadGrByNet ); katana->loadGlobalRouting( Anabatic::EngineLoadGrByNet );
// Now done through Horus. // Now done through Horus.
//katana->runTest(); //katana->runTest();
katana->runNegociate( Flags::SymmetricStage ); katana->runNegociate( Flags::PairSymmetrics );
//katana->runNegociate(); //katana->runNegociate();
} }
} }
@ -387,11 +387,13 @@ namespace Katana {
, "Save routed design (temporary hack)" , "Save routed design (temporary hack)"
, std::bind(&GraphicKatanaEngine::_save,this) , std::bind(&GraphicKatanaEngine::_save,this)
); );
#if NO_NEED_OF_IT_NOW
_viewer->addToMenu( "placeAndRoute.katana.stepByStep.runTest" _viewer->addToMenu( "placeAndRoute.katana.stepByStep.runTest"
, "Katana - Run &Test" , "Katana - Run &Test"
, "Run Test Program (symmetric routing of gmChamla)" , "Run Test Program (symmetric routing of gmChamla)"
, std::bind(&GraphicKatanaEngine::_runTest,this) , std::bind(&GraphicKatanaEngine::_runTest,this)
); );
#endif
} }

View File

@ -468,6 +468,7 @@ namespace Katana {
void KatanaEngine::runTest () void KatanaEngine::runTest ()
{ {
#if PUT_HERE_WHATEVER_YOU_WANT_TO_TEST
if (getCell()->getName() != "gmchamla") if (getCell()->getName() != "gmchamla")
throw Error( "KatanaEngine::runTest() Work only on \"gmchamla\" (loaded:\"%s\")." throw Error( "KatanaEngine::runTest() Work only on \"gmchamla\" (loaded:\"%s\")."
, getString(getCell()->getName()).c_str() , getString(getCell()->getName()).c_str()
@ -482,6 +483,7 @@ namespace Katana {
setSymmetricPair( getCell(), "ampp_4" , "ampn_4" ); setSymmetricPair( getCell(), "ampp_4" , "ampn_4" );
setSymmetricPair( getCell(), "ampp_2" , "ampn_2" ); setSymmetricPair( getCell(), "ampp_2" , "ampn_2" );
setSymmetricPair( getCell(), "ampp_1" , "ampn_1" ); setSymmetricPair( getCell(), "ampp_1" , "ampn_1" );
#endif
} }
void KatanaEngine::printCompletion () const void KatanaEngine::printCompletion () const
@ -675,8 +677,12 @@ namespace Katana {
} }
_routingPlanes.clear(); _routingPlanes.clear();
//for ( auto symmetric : _symmetrics ) delete symmetric.second; while ( not _symmetrics.empty() ) {
_symmetrics.clear(); auto element = _symmetrics.begin();
if (element->first == element->second->getNet()) delete element->second;
_symmetrics.erase( element->first );
}
Session::close(); Session::close();
} }

View File

@ -443,22 +443,6 @@ namespace Katana {
while ( not _eventQueue.empty() and not isInterrupted() ) { while ( not _eventQueue.empty() and not isInterrupted() ) {
RoutingEvent* event = _eventQueue.pop(); RoutingEvent* event = _eventQueue.pop();
if (tty::enabled()) {
cmess2 << " <event:" << tty::bold << right << setw(8) << setfill('0')
<< RoutingEvent::getProcesseds() << tty::reset
<< " remains:" << right << setw(8) << setfill('0')
<< _eventQueue.size()
<< setfill(' ') << tty::reset << ">" << tty::cr;
cmess2.flush ();
} else {
cmess2 << " <event:" << right << setw(8) << setfill('0')
<< RoutingEvent::getProcesseds() << setfill(' ') << " "
<< event->getEventLevel() << ":" << event->getPriority() << "> "
<< event->getSegment()
<< endl;
cmess2.flush();
}
if (ofprofile.is_open()) { if (ofprofile.is_open()) {
size_t depth = _katana->getConfiguration()->getLayerDepth( event->getSegment()->getLayer() ); size_t depth = _katana->getConfiguration()->getLayerDepth( event->getSegment()->getLayer() );
if (depth < 6) { if (depth < 6) {
@ -477,6 +461,22 @@ namespace Katana {
event->process( _eventQueue, _eventHistory, _eventLoop ); event->process( _eventQueue, _eventHistory, _eventLoop );
count++; count++;
if (tty::enabled()) {
cmess2 << " <event:" << tty::bold << right << setw(8) << setfill('0')
<< RoutingEvent::getProcesseds() << tty::reset
<< " remains:" << right << setw(8) << setfill('0')
<< _eventQueue.size()+1
<< setfill(' ') << tty::reset << ">" << tty::cr;
cmess2.flush ();
} else {
cmess2 << " <event:" << right << setw(8) << setfill('0')
<< RoutingEvent::getProcesseds()-1 << setfill(' ') << " "
<< event->getEventLevel() << ":" << event->getPriority() << "> "
<< event->getSegment()
<< endl;
cmess2.flush();
}
//if (count and not (count % 500)) { //if (count and not (count % 500)) {
// _pack( count, false ); // _pack( count, false );
//} //}
@ -574,8 +574,8 @@ namespace Katana {
Session::getKatanaEngine()->_check( overlaps, "after _createRouting(GCell*)" ); Session::getKatanaEngine()->_check( overlaps, "after _createRouting(GCell*)" );
#endif #endif
if (flags & Flags::SymmetricStage) { if (flags & Flags::PairSymmetrics) {
_katana->runSymmetricRouter(); _katana->pairSymmetrics();
Session::revalidate(); Session::revalidate();
} }

View File

@ -95,7 +95,7 @@ extern "C" {
LoadObjectConstant(PyTypeKatanaFlags.tp_dict,(uint64_t)Katana::Flags::NoFlags ,"NoFlags" ); LoadObjectConstant(PyTypeKatanaFlags.tp_dict,(uint64_t)Katana::Flags::NoFlags ,"NoFlags" );
LoadObjectConstant(PyTypeKatanaFlags.tp_dict,(uint64_t)Katana::Flags::SlowMotion ,"SlowMotion" ); LoadObjectConstant(PyTypeKatanaFlags.tp_dict,(uint64_t)Katana::Flags::SlowMotion ,"SlowMotion" );
LoadObjectConstant(PyTypeKatanaFlags.tp_dict,(uint64_t)Katana::Flags::PreRoutedStage,"PreRoutedStage"); LoadObjectConstant(PyTypeKatanaFlags.tp_dict,(uint64_t)Katana::Flags::PreRoutedStage,"PreRoutedStage");
LoadObjectConstant(PyTypeKatanaFlags.tp_dict,(uint64_t)Katana::Flags::SymmetricStage,"SymmetricStage"); LoadObjectConstant(PyTypeKatanaFlags.tp_dict,(uint64_t)Katana::Flags::PairSymmetrics,"PairSymmetrics");
} }

View File

@ -392,7 +392,7 @@ namespace Katana {
using namespace std; using namespace std;
void KatanaEngine::runSymmetricRouter () void KatanaEngine::pairSymmetrics ()
{ {
for ( Net* net : getCell()->getNets() ) { for ( Net* net : getCell()->getNets() ) {
if (not NetRoutingExtension::isSymmetric(net)) continue; if (not NetRoutingExtension::isSymmetric(net)) continue;

View File

@ -37,7 +37,7 @@ namespace Katana {
static const Hurricane::BaseFlags LoadingStage; static const Hurricane::BaseFlags LoadingStage;
static const Hurricane::BaseFlags SlowMotion; static const Hurricane::BaseFlags SlowMotion;
static const Hurricane::BaseFlags PreRoutedStage; static const Hurricane::BaseFlags PreRoutedStage;
static const Hurricane::BaseFlags SymmetricStage; static const Hurricane::BaseFlags PairSymmetrics;
public: public:
inline Flags ( uint64_t ); inline Flags ( uint64_t );
inline Flags ( const Super& ); inline Flags ( const Super& );

View File

@ -114,9 +114,9 @@ namespace Katana {
void setFixedPreRouted (); void setFixedPreRouted ();
void digitalInit (); void digitalInit ();
void analogInit (); void analogInit ();
void pairSymmetrics ();
void runNegociate ( Flags flags=Flags::NoFlags ); void runNegociate ( Flags flags=Flags::NoFlags );
void runGlobalRouter (); void runGlobalRouter ();
void runSymmetricRouter ();
void runTest (); void runTest ();
virtual void finalizeLayout (); virtual void finalizeLayout ();
void _runKatanaInit (); void _runKatanaInit ();