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:
parent
58c78c5d78
commit
bddf1ceef5
|
@ -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 );
|
||||
|
|
|
@ -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 );
|
||||
|
|
Loading…
Reference in New Issue