Disable tie cell insertion in EtesianEngine::toHurricane().

* Change: In Etesianengine::toHurricane(), no longer call interTies().
    This *should* no longer be needed as almost all standard cells
    (SxLib & FlexLib) already contains polarisation contacts.
      So do not need to disturb the placement.
      Secondly, in presence of a H-Tree, when there is not enough
    space to insert a sufficient number of tie cell, the lefmost one
    in the sub-row is shifted to left, overlaping the H-Tree buffer
    cells. This is a bug (even signaled by a warning). But as this
    part is disabled, I won't correct it soon...
This commit is contained in:
Jean-Paul Chaput 2021-10-16 13:45:14 +02:00
parent e80df4538d
commit 5343f9c98b
1 changed files with 9 additions and 1 deletions

View File

@ -16,6 +16,7 @@
#include "hurricane/Error.h" #include "hurricane/Error.h"
#include "hurricane/Warning.h" #include "hurricane/Warning.h"
#include "hurricane/Breakpoint.h"
#include "hurricane/DataBase.h" #include "hurricane/DataBase.h"
#include "hurricane/DebugSession.h" #include "hurricane/DebugSession.h"
#include "hurricane/UpdateSession.h" #include "hurricane/UpdateSession.h"
@ -35,8 +36,9 @@ namespace Etesian {
using namespace std; using namespace std;
using Hurricane::tab; using Hurricane::tab;
using Hurricane::Warning;
using Hurricane::Error; using Hurricane::Error;
using Hurricane::Warning;
using Hurricane::Breakpoint;
using Hurricane::Path; using Hurricane::Path;
using Hurricane::Transformation; using Hurricane::Transformation;
using Hurricane::DataBase; using Hurricane::DataBase;
@ -738,6 +740,8 @@ namespace Etesian {
void EtesianEngine::toHurricane () void EtesianEngine::toHurricane ()
{ {
Breakpoint::stop( 101, "EtesianEngine::toHurricane() called." );
if (not getFeedCells().feedNumbers()) { if (not getFeedCells().feedNumbers()) {
cerr << Warning( "EtesianEngine::readSlices(): No feed cells available, skipping." ) << endl; cerr << Warning( "EtesianEngine::readSlices(): No feed cells available, skipping." ) << endl;
return; return;
@ -813,6 +817,7 @@ namespace Etesian {
_area->buildSubSlices(); _area->buildSubSlices();
_area->showSubSlices(); _area->showSubSlices();
#if DISABLED_TIE_INSERTION
if (getConfiguration()->getLatchUpDistance()) { if (getConfiguration()->getLatchUpDistance()) {
Cell* feed = getFeedCells().getBiggestFeed(); Cell* feed = getFeedCells().getBiggestFeed();
DbU::Unit tieSpacing = getConfiguration()->getLatchUpDistance()*2 - feed->getAbutmentBox().getWidth(); DbU::Unit tieSpacing = getConfiguration()->getLatchUpDistance()*2 - feed->getAbutmentBox().getWidth();
@ -820,12 +825,15 @@ namespace Etesian {
tieSpacing -= feed->getAbutmentBox().getWidth(); tieSpacing -= feed->getAbutmentBox().getWidth();
_area->insertTies( tieSpacing ); _area->insertTies( tieSpacing );
} }
#endif
_area->addFeeds(); _area->addFeeds();
UpdateSession::close(); UpdateSession::close();
//DebugSession::close(); //DebugSession::close();
if (_viewer) _viewer->getCellWidget()->refresh(); if (_viewer) _viewer->getCellWidget()->refresh();
Breakpoint::stop( 101, "EtesianEngine::toHurricane() finished." );
} }