* ./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:
parent
2913d8aea1
commit
23e61de0e3
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
||||
|
|
|
@ -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 ();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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__
|
||||
|
|
|
@ -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__
|
||||
|
|
Loading…
Reference in New Issue