* ./kite:

- New: In RoutingEvent::State, in the local segment FSM, if a local terminal
        segment is fully blocked, try at least one dog leg.
This commit is contained in:
Jean-Paul Chaput 2012-12-22 18:22:54 +00:00
parent 2913d8aea1
commit 23e61de0e3
7 changed files with 28 additions and 56 deletions

View File

@ -2,14 +2,9 @@
// -*- C++ -*- // -*- C++ -*-
// //
// This file is part of the Coriolis Software. // This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2008-2010, All Rights Reserved // Copyright (c) UPMC/LIP6 2008-2012, All Rights Reserved
// //
// =================================================================== // +-----------------------------------------------------------------+
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// | C O R I O L I S | // | C O R I O L I S |
// | K i t e - D e t a i l e d R o u t e r | // | K i t e - D e t a i l e d R o u t e r |
// | | // | |
@ -17,10 +12,7 @@
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr | // | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
// | =============================================================== | // | =============================================================== |
// | C++ Module : "./BuildPowerRails.cpp" | // | C++ Module : "./BuildPowerRails.cpp" |
// | *************************************************************** | // +-----------------------------------------------------------------+
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
#include <map> #include <map>

View File

@ -2,14 +2,9 @@
// -*- C++ -*- // -*- C++ -*-
// //
// This file is part of the Coriolis Software. // This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2008-2010, All Rights Reserved // Copyright (c) UPMC/LIP6 2008-2012, All Rights Reserved
// //
// =================================================================== // +-----------------------------------------------------------------+
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// | C O R I O L I S | // | C O R I O L I S |
// | K i t e - D e t a i l e d R o u t e r | // | K i t e - D e t a i l e d R o u t e r |
// | | // | |
@ -17,17 +12,11 @@
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr | // | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
// | =============================================================== | // | =============================================================== |
// | C++ Module : "./DataNegociate.cpp" | // | C++ Module : "./DataNegociate.cpp" |
// | *************************************************************** | // +-----------------------------------------------------------------+
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
#include <cstdlib> #include <cstdlib>
#include <sstream> #include <sstream>
#include "kite/DataNegociate.h" #include "kite/DataNegociate.h"

View File

@ -535,6 +535,8 @@ namespace Kite {
//DebugSession::addToTrace ( getCell(), "wm_rf.nandr0" ); //DebugSession::addToTrace ( getCell(), "wm_rf.nandr0" );
//DebugSession::addToTrace ( getCell(), "adder_sub.gi_2_18" ); //DebugSession::addToTrace ( getCell(), "adder_sub.gi_2_18" );
//DebugSession::addToTrace ( getCell(), "adder_sub.pi_3_20" ); //DebugSession::addToTrace ( getCell(), "adder_sub.pi_3_20" );
//DebugSession::addToTrace ( getCell(), "core.iram.na4_x1_2_sig" );
//DebugSession::addToTrace ( getCell(), "core.ialu.mx3_x2_4_sig" );
createDetailedGrid (); createDetailedGrid ();
buildPowerRails (); buildPowerRails ();

View File

@ -141,7 +141,7 @@ extern "C" {
Cell* cell = kite->getCell(); Cell* cell = kite->getCell();
PyObject* iterator = PyObject_GetIter(pyRoutingNets); PyObject* iterator = PyObject_GetIter(pyRoutingNets);
PyObject* pyNetName = NULL; PyObject* pyNetName = NULL;
while( pyNetName = PyIter_Next(iterator) ) { while( (pyNetName = PyIter_Next(iterator)) ) {
if (not PyString_Check(pyNetName)) { if (not PyString_Check(pyNetName)) {
PyErr_SetString(ConstructorError, "KiteEngine.loadGlobalRouting(): The second argument must be a container of strings."); PyErr_SetString(ConstructorError, "KiteEngine.loadGlobalRouting(): The second argument must be a container of strings.");
return NULL; return NULL;

View File

@ -950,7 +950,7 @@ namespace {
, DbU::Unit axisHint=0 , DbU::Unit axisHint=0
); );
bool ripupPerpandiculars ( unsigned int flags=0 ); bool ripupPerpandiculars ( unsigned int flags=0 );
void repackPerpandiculars (); void repackPerpandiculars ( bool ripInserted=true );
bool ripple (); bool ripple ();
bool goOutsideGCell (); bool goOutsideGCell ();
bool minimize (); bool minimize ();
@ -1856,7 +1856,8 @@ namespace {
success = Manipulator(segment,*this).desalignate(); success = Manipulator(segment,*this).desalignate();
break; break;
case DataNegociate::Minimize: case DataNegociate::Minimize:
if ( isFullBlocked() ) { if ( isFullBlocked() and not segment->isTerminal() ) {
ltrace(200) << "Is Fully blocked." << endl;
nextState = DataNegociate::Unimplemented; nextState = DataNegociate::Unimplemented;
break; break;
} }
@ -3455,7 +3456,7 @@ namespace {
} }
void Manipulator::repackPerpandiculars () void Manipulator::repackPerpandiculars ( bool ripInserted )
{ {
ltrace(200) << "Manipulator::repackPerpandiculars()" << endl; ltrace(200) << "Manipulator::repackPerpandiculars()" << endl;
@ -3468,8 +3469,13 @@ namespace {
if ( perpandicular->isGlobal() ) continue; if ( perpandicular->isGlobal() ) continue;
if ( not data ) continue; if ( not data ) continue;
if ( RoutingEvent::getStage() == RoutingEvent::Repair ) if ( RoutingEvent::getStage() == RoutingEvent::Repair ) {
if (data->getTrack() and not ripInserted) continue;
data->setState ( DataNegociate::Repair ); data->setState ( DataNegociate::Repair );
if (data->getStateCount() > 1)
data->resetStateCount();
}
_S.addAction ( perpandicular, SegmentAction::SelfRipupPerpand ); _S.addAction ( perpandicular, SegmentAction::SelfRipupPerpand );
} }
_S.addAction ( _segment, SegmentAction::SelfRipup|SegmentAction::EventLevel4 ); _S.addAction ( _segment, SegmentAction::SelfRipup|SegmentAction::EventLevel4 );
@ -4119,6 +4125,9 @@ namespace Kite {
ltrace(200) << "Insert in free space." << endl; ltrace(200) << "Insert in free space." << endl;
Session::addInsertEvent ( _segment, S.getCost(0).getTrack() ); Session::addInsertEvent ( _segment, S.getCost(0).getTrack() );
S.setState ( State::SelfInserted ); S.setState ( State::SelfInserted );
//Manipulator(_segment,S).repackPerpandiculars (false);
//S.doActions ();
//queue.commit ();
} else { } else {
switch ( S.getData()->getStateCount() ) { switch ( S.getData()->getStateCount() ) {
case 1: case 1:

View File

@ -2,14 +2,9 @@
// -*- C++ -*- // -*- C++ -*-
// //
// This file is part of the Coriolis Software. // This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2008-2010, All Rights Reserved // Copyright (c) UPMC/LIP6 2008-2012, All Rights Reserved
// //
// =================================================================== // +-----------------------------------------------------------------+
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// | C O R I O L I S | // | C O R I O L I S |
// | K i t e - D e t a i l e d R o u t e r | // | K i t e - D e t a i l e d R o u t e r |
// | | // | |
@ -17,12 +12,7 @@
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr | // | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
// | =============================================================== | // | =============================================================== |
// | C++ Header : "./DataNegociate.h" | // | C++ Header : "./DataNegociate.h" |
// | *************************************************************** | // +-----------------------------------------------------------------+
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
#ifndef __KITE_DATA_NEGOCIATE__ #ifndef __KITE_DATA_NEGOCIATE__

View File

@ -3,14 +3,9 @@
// -*- C++ -*- // -*- C++ -*-
// //
// This file is part of the Coriolis Software. // This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2008-2010, All Rights Reserved // Copyright (c) UPMC/LIP6 2008-2012, All Rights Reserved
// //
// =================================================================== // +-----------------------------------------------------------------+
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// | C O R I O L I S | // | C O R I O L I S |
// | K i t e - D e t a i l e d R o u t e r | // | K i t e - D e t a i l e d R o u t e r |
// | | // | |
@ -18,12 +13,7 @@
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr | // | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
// | =============================================================== | // | =============================================================== |
// | C++ Header : "./TrackElement.h" | // | C++ Header : "./TrackElement.h" |
// | *************************************************************** | // +-----------------------------------------------------------------+
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
#ifndef __KITE_TRACK_ELEMENT__ #ifndef __KITE_TRACK_ELEMENT__