Ispd05 bookshelf parser bad scaling bug correction.

* Bug: In CRL Core, in Ispd05Bookshelf, as the pitch is already expressed
    in DbU, do not apply DbU::toLambda() in any expression where it is used.
* Change: In Etesian, In AddFeeds, do not try insert feeds if there is no
    cell feed avalaible.
This commit is contained in:
Jean-Paul Chaput 2015-03-02 23:29:08 +01:00
parent 58c78c5d78
commit bddf1ceef5
2 changed files with 14 additions and 13 deletions

View File

@ -73,8 +73,8 @@ namespace {
Cell* master = af->createCell( node->getName() );
Box abutmentBox( DbU::fromLambda( 0.0 )
, DbU::fromLambda( 0.0 )
, DbU::fromLambda( node->getWidth ()*pitch )
, DbU::fromLambda( node->getHeight()*pitch )
, node->getWidth ()*pitch
, node->getHeight()*pitch
);
master->setAbutmentBox( abutmentBox );
Point cellCenter = abutmentBox.getCenter();
@ -83,8 +83,8 @@ namespace {
for ( auto ipin : node->getPins() ) {
Bookshelf::Pin* pin = ipin.second;
Point pinCenter ( cellCenter.getX() + DbU::fromLambda(pin->getX()*pitch)
, cellCenter.getY() + DbU::fromLambda(pin->getY()*pitch) );
Point pinCenter ( cellCenter.getX() + pin->getX()*pitch
, cellCenter.getY() + pin->getY()*pitch );
if (not abutmentBox.contains(pinCenter))
cerr << Error( "Ispd05::load(): Pin <%s> of node <%s> is outside abutment box.\n"
" (AB:[%dx%d], pin:(%d,%d))"
@ -114,10 +114,10 @@ namespace {
Transformation toTransformation ( Bookshelf::Node* node )
{
DbU::Unit x = DbU::fromLambda( node->getX ()*pitch );
DbU::Unit y = DbU::fromLambda( node->getY ()*pitch );
DbU::Unit width = DbU::fromLambda( node->getWidth ()*pitch );
DbU::Unit height = DbU::fromLambda( node->getHeight()*pitch );
DbU::Unit x = node->getX ()*pitch;
DbU::Unit y = node->getY ()*pitch;
DbU::Unit width = node->getWidth ()*pitch;
DbU::Unit height = node->getHeight()*pitch;
switch (node->getOrientation()) {
@ -211,11 +211,7 @@ namespace CRL {
double x2 = (irow->getSitewidth()*irow->getNumsites())*pitch + x1;
double y2 = (irow->getHeight() )*pitch + y1;
Box rowBox = Box( DbU::fromLambda(x1)
, DbU::fromLambda(y1)
, DbU::fromLambda(x2)
, DbU::fromLambda(y2)
);
Box rowBox = Box( x1, y1, x2, y2 );
abutmentBox.merge( rowBox );
}
cell->setAbutmentBox( abutmentBox );

View File

@ -359,6 +359,11 @@ namespace Etesian {
void EtesianEngine::addFeeds ()
{
if (not getFeedCells().feedNumbers()) {
cerr << Warning( "No feed cells available, skipping." ) << endl;
return;
}
UpdateSession::open();
SliceHoles sliceHoles ( this );