Forgot to catch Bug exception. GCell manage 5 terminals of a Net.

* Bug: In Hurricane, in HApplication, ExceptionWidget ans PyHurricane.h,
    forgot to catch the Hurricane::Bug exception which was leading to
    terminate() without explanations.
* Change: In Katabatic, In GCellTopology, now support one GCell with
    five metal1 terminal of the same net. This unlikely configuration
    did appear in the SNX for the first time...
This commit is contained in:
Jean-Paul Chaput 2016-03-17 16:54:53 +01:00
parent 13c3efdefd
commit 1ef4bc122f
21 changed files with 87 additions and 48 deletions

View File

@ -29,6 +29,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -34,6 +34,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Hurricane::DataBase;

View File

@ -29,8 +29,10 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Hurricane::Exception;
using Isobar::ProxyProperty;
using Isobar::ProxyError;
using Isobar::ConstructorError;

View File

@ -29,6 +29,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -40,6 +40,8 @@ namespace CRL {
using std::endl;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -1,15 +1,9 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2010-2010, All Rights Reserved
// Copyright (c) UPMC 2010-2016, All Rights Reserved
//
// ===================================================================
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// +-----------------------------------------------------------------+
// | C O R I O L I S |
// | Alliance / Hurricane Interface |
// | |
@ -17,10 +11,7 @@
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
// | =============================================================== |
// | C++ Module : "./PyCatalogState.cpp" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
// +-----------------------------------------------------------------+
#include "hurricane/isobar/PyCell.h"
@ -37,6 +28,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -28,6 +28,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -28,6 +28,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -30,6 +30,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -31,6 +31,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -29,6 +29,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -36,6 +36,8 @@ namespace CRL {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;

View File

@ -36,6 +36,8 @@ namespace Etesian {
using Hurricane::tab;
using Hurricane::trace_on;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Hurricane::ExceptionWidget;

View File

@ -19,12 +19,7 @@
// License along with Hurricane. If not, see
// <http://www.gnu.org/licenses/>.
//
// ===================================================================
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// +-----------------------------------------------------------------+
// | H U R R I C A N E |
// | V L S I B a c k e n d D a t a - B a s e |
// | |
@ -32,14 +27,11 @@
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Header : "./hurricane/Bug.h" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
// +-----------------------------------------------------------------+
# ifndef __HURRICANE_BUG__
# define __HURRICANE_BUG__
#ifndef HURRICANE_BUG_H
#define HURRICANE_BUG_H
# include "hurricane/Exception.h"
@ -75,7 +67,7 @@ namespace Hurricane {
inline int Bug::getCode () const { return _code; }
} // End of Hurricane namespace.
} // Hurricane namespace.
GETSTRING_POINTER_SUPPORT(Hurricane::Bug);
@ -84,4 +76,4 @@ IOSTREAM_POINTER_SUPPORT(Hurricane::Bug);
IOSTREAM_VALUE_SUPPORT(Hurricane::Bug);
# endif // __HURRICANE_BUG__
#endif // HURRICANE_BUG_H

View File

@ -19,12 +19,7 @@
// License along with Hurricane. If not, see
// <http://www.gnu.org/licenses/>.
//
// ===================================================================
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// +-----------------------------------------------------------------+
// | H U R R I C A N E |
// | V L S I B a c k e n d D a t a - B a s e |
// | |
@ -32,14 +27,11 @@
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Header : "./hurricane/Warning.h" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
// +-----------------------------------------------------------------+
# ifndef __HURRICANE_WARNING__
# define __HURRICANE_WARNING__
# ifndef HURRICANE_WARNING_H
# define HURRICANE_WARNING_H
#include "hurricane/Exception.h"
@ -76,7 +68,7 @@ namespace Hurricane {
inline int Warning::getCode () const { return _code; }
} // End of Hurricane namespace.
} // Hurricane namespace.
GETSTRING_POINTER_SUPPORT(Hurricane::Warning);
@ -85,4 +77,4 @@ IOSTREAM_POINTER_SUPPORT(Hurricane::Warning);
IOSTREAM_VALUE_SUPPORT(Hurricane::Warning);
# endif // __HURRICANE_WARNING__
#endif // HURRICANE_WARNING_H

View File

@ -28,6 +28,7 @@
#include <string>
#include <vector>
#include <map>
#include "hurricane/Bug.h"
#include "hurricane/Error.h"
#include "hurricane/Warning.h"
#include "hurricane/isobar/ProxyProperty.h"
@ -1408,6 +1409,16 @@ extern "C" {
PyErr_SetString ( HurricaneError, message.c_str() ); \
return NULL; \
} \
catch ( const Bug& e ) { \
std::string message = "\n" + getString(e); \
PyErr_SetString ( HurricaneError, message.c_str() ); \
return NULL; \
} \
catch ( const Exception& e ) { \
std::string message = "\nUnknown Hurricane::Exception"; \
PyErr_SetString ( HurricaneError, message.c_str() ); \
return NULL; \
} \
catch ( const std::exception& e ) { \
std::string message = "\n" + std::string(e.what()); \
PyErr_SetString ( HurricaneError, message.c_str() ); \
@ -1416,7 +1427,7 @@ extern "C" {
catch ( ... ) { \
std::string message = \
"\nUnmanaged exception, neither a Hurricane::Error nor" \
"std::exception."; \
" a std::exception."; \
PyErr_SetString ( HurricaneError, message.c_str() ); \
return NULL; \
} \

View File

@ -28,6 +28,7 @@
#include <QFrame>
#include <QFont>
#include <QFontMetrics>
#include "hurricane/Bug.h"
#include "hurricane/Error.h"
#include "hurricane/Exception.h"
#include "hurricane/viewer/Graphics.h"
@ -71,6 +72,9 @@ namespace Hurricane {
method();
failure = false;
}
catch ( Bug& e ) {
ExceptionWidget::run( e );
}
catch ( Error& e ) {
ExceptionWidget::run( e );
}

View File

@ -16,6 +16,7 @@
#include <iostream>
#include <iomanip>
#include "hurricane/Bug.h"
#include "hurricane/Error.h"
#include "hurricane/viewer/Graphics.h"
#include "hurricane/viewer/ExceptionWidget.h"
@ -67,6 +68,9 @@ namespace Hurricane {
try {
return QApplication::notify( object, event );
}
catch ( Bug& e ) {
ExceptionWidget::run( e );
}
catch ( Error& e ) {
ExceptionWidget::run( e );
}

View File

@ -658,12 +658,12 @@ namespace {
void _do_xG_xM3 ();
private:
enum ConnexityBits { GlobalBSize = 3
, Metal1BSize = 3
, Metal2BSize = 3
, Metal3BSize = 3
, PadsBSize = 3
, PinsBSize = 3
enum ConnexityBits { GlobalBSize = 4
, Metal1BSize = 4
, Metal2BSize = 4
, Metal3BSize = 4
, PadsBSize = 4
, PinsBSize = 4
};
#define CONNEXITY_VALUE( Gs, M1s, M2s, M3s, pads, pins ) \
@ -683,6 +683,7 @@ namespace {
, Conn_1G_2M1 = CONNEXITY_VALUE( 1, 2, 0, 0, 0 , 0 )
, Conn_1G_3M1 = CONNEXITY_VALUE( 1, 3, 0, 0, 0 , 0 )
, Conn_1G_4M1 = CONNEXITY_VALUE( 1, 4, 0, 0, 0 , 0 )
, Conn_1G_5M1 = CONNEXITY_VALUE( 1, 5, 0, 0, 0 , 0 )
, Conn_1G_1M2 = CONNEXITY_VALUE( 1, 0, 1, 0, 0 , 0 )
, Conn_1G_2M2 = CONNEXITY_VALUE( 1, 0, 2, 0, 0 , 0 )
, Conn_1G_3M2 = CONNEXITY_VALUE( 1, 0, 3, 0, 0 , 0 )
@ -823,6 +824,16 @@ namespace {
_net = fromSegment->getNet();
forEach ( Hook*, hook, fromHook->getHooks() ) {
ltrace(99) << "Topology [" << _connexity.connexity << "] = "
<< "[" << _connexity.fields.globals
<< "+" << _connexity.fields.M1
<< "+" << _connexity.fields.M2
<< "+" << _connexity.fields.M3
<< "+" << _connexity.fields.Pin
<< "+" << _connexity.fields.Pad
<< "] " << _gcell
<< endl;
Segment* toSegment = dynamic_cast<Segment*>( hook->getComponent() );
if (toSegment) {
@ -923,7 +934,8 @@ namespace {
case Conn_1G_1M1: _do_1G_1M1(); break;
case Conn_1G_2M1:
case Conn_1G_3M1:
case Conn_1G_4M1: _do_1G_xM1(); break;
case Conn_1G_4M1:
case Conn_1G_5M1: _do_1G_xM1(); break;
case Conn_1G_1M2:
case Conn_1G_2M2:
case Conn_1G_3M2:

View File

@ -36,6 +36,8 @@ namespace Kite {
using std::ostringstream;
using Hurricane::tab;
using Hurricane::in_trace;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Hurricane::ExceptionWidget;

View File

@ -29,6 +29,7 @@ namespace bopts = boost::program_options;
#include "hurricane/DebugSession.h"
#include "hurricane/DataBase.h"
#include "hurricane/Cell.h"
#include "hurricane/Bug.h"
#include "hurricane/Warning.h"
#include "hurricane/UpdateSession.h"
#include "hurricane/viewer/Script.h"
@ -435,6 +436,10 @@ int main ( int argc, char *argv[] )
if ( not destroyDatabase ) exit ( 0 );
cmess1 << " o Full database deletion (may be buggy)." << endl;
}
catch ( Bug& e ) {
cerr << e.what() << endl;
exit ( 1 );
}
catch ( Error& e ) {
cerr << e.what() << endl;
cerr << "\nProgram stack:\n" << e.where() << endl;