* ./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++ -*-
//
// 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 |
// | 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 |
// | =============================================================== |
// | C++ Module : "./BuildPowerRails.cpp" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
// +-----------------------------------------------------------------+
#include <map>

View File

@ -2,14 +2,9 @@
// -*- C++ -*-
//
// 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 |
// | 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 |
// | =============================================================== |
// | C++ Module : "./DataNegociate.cpp" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
// +-----------------------------------------------------------------+
#include <cstdlib>
#include <sstream>
#include "kite/DataNegociate.h"

View File

@ -535,6 +535,8 @@ namespace Kite {
//DebugSession::addToTrace ( getCell(), "wm_rf.nandr0" );
//DebugSession::addToTrace ( getCell(), "adder_sub.gi_2_18" );
//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 ();
buildPowerRails ();

View File

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

View File

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

View File

@ -2,14 +2,9 @@
// -*- C++ -*-
//
// 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 |
// | 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 |
// | =============================================================== |
// | C++ Header : "./DataNegociate.h" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
// +-----------------------------------------------------------------+
#ifndef __KITE_DATA_NEGOCIATE__

View File

@ -3,14 +3,9 @@
// -*- C++ -*-
//
// 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 |
// | 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 |
// | =============================================================== |
// | C++ Header : "./TrackElement.h" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
// +-----------------------------------------------------------------+
#ifndef __KITE_TRACK_ELEMENT__