* ./crlcore:

- Bug: In AllianceFramework, do not try to build SxLib gauge if the layers are
        not presents. Prevent cgt to miserably fails if the environment is not
        found.
    - Change: In src/ccore/CMakeLists.txt, try to guess the CORIOLIS_TOP from the
        compilation environment and pass back to sources.
    - Change: Rename hcmos9 into cmos130 in configuration files.
This commit is contained in:
Jean-Paul Chaput 2010-05-27 16:12:04 +00:00
parent fd07e33e1f
commit 2e6242df73
4 changed files with 89 additions and 55 deletions

View File

@ -6,7 +6,7 @@
<config>${CORIOLIS_TOP}/etc/coriolis2/technology.symbolic.xml</config> <config>${CORIOLIS_TOP}/etc/coriolis2/technology.symbolic.xml</config>
</hurricane> </hurricane>
<real> <real>
<config>${CORIOLIS_TOP}/etc/coriolis2/technology.hcmos9.s2r.xml</config> <config>${CORIOLIS_TOP}/etc/coriolis2/technology.cmos130.s2r.xml</config>
</real> </real>
<lef> <lef>
<config>${CORIOLIS_TOP}/etc/coriolis2/cmos.lef</config> <config>${CORIOLIS_TOP}/etc/coriolis2/cmos.lef</config>

View File

@ -68,7 +68,7 @@ namespace CRL {
db = DataBase::create (); db = DataBase::create ();
_environment.loadFromShell (); _environment.loadFromShell ();
_environment.loadFromXml (); _environment.loadFromXml ();
string userEnvironment = Environment::getEnv ( "HOME", "<HomeDirectory>" ); string userEnvironment = Environment::getEnv ( "HOME", "<HomeDirectory>" );
_environment.loadFromXml ( userEnvironment+"/.environment.alliance.xml", false ); _environment.loadFromXml ( userEnvironment+"/.environment.alliance.xml", false );
@ -108,57 +108,81 @@ namespace CRL {
// Temporary: create the SxLib routing gauge. // Temporary: create the SxLib routing gauge.
Technology* technology = db->getTechnology(); Technology* technology = db->getTechnology();
RoutingGauge* sxlibRg = RoutingGauge::create ( "sxlib" ); RoutingGauge* sxlibRg = RoutingGauge::create ( "sxlib" );
sxlibRg->addLayerGauge ( RoutingLayerGauge::create( technology->getLayer("METAL1") const Layer* routingLayer = NULL;
, Constant::Vertical
, Constant::PinOnly switch ( 1 ) {
, 0 // Depth (?). default:
, 0 // Density. routingLayer = technology->getLayer("METAL1");
, DbU::lambda(0) // Offset. if ( routingLayer == NULL ) break;
, DbU::lambda(5) // Pitch.
, DbU::lambda(2) // Wire width. sxlibRg->addLayerGauge ( RoutingLayerGauge::create( routingLayer
, DbU::lambda(3) // Via width. , Constant::Vertical
) ); , Constant::PinOnly
sxlibRg->addLayerGauge ( RoutingLayerGauge::create( technology->getLayer("METAL2") , 0 // Depth (?).
, Constant::Horizontal , 0 // Density.
, Constant::Default , DbU::lambda(0) // Offset.
, 1 // Depth (?). , DbU::lambda(5) // Pitch.
, 7.7 // Density. , DbU::lambda(2) // Wire width.
, DbU::lambda(0) // Offset. , DbU::lambda(3) // Via width.
, DbU::lambda(5) // Pitch. ) );
, DbU::lambda(2) // Wire width.
, DbU::lambda(3) // Via width. routingLayer = technology->getLayer("METAL2");
) ); if ( routingLayer == NULL ) break;
sxlibRg->addLayerGauge ( RoutingLayerGauge::create( technology->getLayer("METAL3")
, Constant::Vertical sxlibRg->addLayerGauge ( RoutingLayerGauge::create( routingLayer
, Constant::Default , Constant::Horizontal
, 2 // Depth (?). , Constant::Default
, 0 // Density. , 1 // Depth (?).
, DbU::lambda(0) // Offset. , 7.7 // Density.
, DbU::lambda(5) // Pitch. , DbU::lambda(0) // Offset.
, DbU::lambda(2) // Wire width. , DbU::lambda(5) // Pitch.
, DbU::lambda(3) // Via width. , DbU::lambda(2) // Wire width.
) ); , DbU::lambda(3) // Via width.
sxlibRg->addLayerGauge ( RoutingLayerGauge::create( technology->getLayer("METAL4") ) );
, Constant::Horizontal
, Constant::Default routingLayer = technology->getLayer("METAL3");
, 3 // Depth (?). if ( routingLayer == NULL ) break;
, 0 // Density.
, DbU::lambda(0) // Offset. sxlibRg->addLayerGauge ( RoutingLayerGauge::create( routingLayer
, DbU::lambda(5) // Pitch. , Constant::Vertical
, DbU::lambda(2) // Wire width. , Constant::Default
, DbU::lambda(3) // Via width. , 2 // Depth (?).
) ); , 0 // Density.
sxlibRg->addLayerGauge ( RoutingLayerGauge::create( technology->getLayer("METAL5") , DbU::lambda(0) // Offset.
, Constant::Vertical , DbU::lambda(5) // Pitch.
, Constant::Default , DbU::lambda(2) // Wire width.
, 4 // Depth (?). , DbU::lambda(3) // Via width.
, 0 // Density. ) );
, DbU::lambda(0) // Offset.
, DbU::lambda(5) // Pitch. routingLayer = technology->getLayer("METAL4");
, DbU::lambda(2) // Wire width. if ( routingLayer == NULL ) break;
, DbU::lambda(3) // Via width.
) ); sxlibRg->addLayerGauge ( RoutingLayerGauge::create( routingLayer
, Constant::Horizontal
, Constant::Default
, 3 // Depth (?).
, 0 // Density.
, DbU::lambda(0) // Offset.
, DbU::lambda(5) // Pitch.
, DbU::lambda(2) // Wire width.
, DbU::lambda(3) // Via width.
) );
routingLayer = technology->getLayer("METAL5");
if ( routingLayer == NULL ) break;
sxlibRg->addLayerGauge ( RoutingLayerGauge::create( routingLayer
, Constant::Vertical
, Constant::Default
, 4 // Depth (?).
, 0 // Density.
, DbU::lambda(0) // Offset.
, DbU::lambda(5) // Pitch.
, DbU::lambda(2) // Wire width.
, DbU::lambda(3) // Via width.
) );
}
addRoutingGauge ( sxlibRg ); addRoutingGauge ( sxlibRg );
CellGauge* sxlibCg = CellGauge::create ( "sxlib" CellGauge* sxlibCg = CellGauge::create ( "sxlib"

View File

@ -1,4 +1,14 @@
# Try to find a reasonable CORIOLIS_TOP value.
if( NOT("$ENV{CORIOLIS_USER_TOP}" STREQUAL "") )
set ( CORIOLIS_USER_TOP "$ENV{CORIOLIS_USER_TOP}" )
else( NOT("$ENV{CORIOLIS_USER_TOP}" STREQUAL "") )
if( NOT("$ENV{CORIOLIS_TOP}" STREQUAL "") )
set ( CORIOLIS_TOP "$ENV{CORIOLIS_TOP}" )
endif( NOT("$ENV{CORIOLIS_TOP}" STREQUAL "") )
endif( NOT("$ENV{CORIOLIS_USER_TOP}" STREQUAL "") )
include ( ${QT_USE_FILE} ) include ( ${QT_USE_FILE} )
include_directories ( ${CIF_INCLUDE_DIR} include_directories ( ${CIF_INCLUDE_DIR}
@ -18,7 +28,7 @@
${CRLCORE_SOURCE_DIR}/src/ccore/toolbox ${CRLCORE_SOURCE_DIR}/src/ccore/toolbox
) )
add_definitions ( -DCORIOLIS_TOP="${PROJECT_BINARY_DIR}" add_definitions ( -DCORIOLIS_TOP="${CORIOLIS_TOP}"
-DSYS_CONF_DIR="${SYS_CONF_DIR}" -DSYS_CONF_DIR="${SYS_CONF_DIR}"
) )

View File

@ -32,7 +32,7 @@ namespace CRL {
bool XmlParser::_load ( const string& path, bool warnNotFound ) bool XmlParser::_load ( const string& path, bool warnNotFound )
{ {
QFile file ( path.c_str() ); QFile file ( path.c_str() );
if ( !file.open(QFile::ReadOnly|QFile::Text) ) { if ( path.empty() or (not file.open(QFile::ReadOnly|QFile::Text)) ) {
if ( warnNotFound ) { if ( warnNotFound ) {
cerr << "[ERROR] Cannot open " << _getMessage(OpenFile) << " file:" << endl; cerr << "[ERROR] Cannot open " << _getMessage(OpenFile) << " file:" << endl;
cerr << " \"" << path << "\"." << endl; cerr << " \"" << path << "\"." << endl;