* ./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:
parent
fd07e33e1f
commit
2e6242df73
|
@ -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>
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue