From a70382d9f92eea9c065cd015bd956074fe025ab7 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Sat, 22 Jul 2023 16:51:26 +0200 Subject: [PATCH] We have a semantic issue with the blockages layers. Two meanings are possibles: 1. They represent an exact area where no metal should be put, and that area has been computed by the standard cell abstractor and *do not* need to be expanded. This is the forbidden area, period! 2. They match the shapes of the components inside the standard cell (say an horizontal segment). In that case, the blockage *must be expanded* by the minimal spacing rules as any fixed wiring already present. It is not clear to me what is the accepted norm. This commit stays on semantic [1]. The semantic is implemented in PowerRailsPlanes::Rail::doLayout(). --- katana/src/PowerRails.cpp | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/katana/src/PowerRails.cpp b/katana/src/PowerRails.cpp index 4d2b7d41..33ab381a 100644 --- a/katana/src/PowerRails.cpp +++ b/katana/src/PowerRails.cpp @@ -498,8 +498,10 @@ namespace { delta = plane->getLayerGauge()->getPitch(); } } - if (AllianceFramework::get()->getCellGauge()->getName() == Name("StdCellLib")) { + else { + //if (AllianceFramework::get()->getCellGauge()->getName() == Name("StdCellLib")) { delta = plane->getLayerGauge()->getPitch(); + //} } } @@ -551,22 +553,11 @@ namespace { axisMax += delta; } - // if (segment->getId() == 51904) { - // DebugSession::open( 0, 1000 ); - // } Track* track = plane->getTrackByPosition ( axisMin, Constant::Superior ); for ( ; track and (track->getAxis() <= axisMax) ; track = track->getNextTrack() ) { TrackElement* element = TrackFixedSegment::create ( track, segment ); cdebug_log(159,0) << " Insert in " << track << "+" << element << endl; - - // if (segment->getId() == 51904) { - // cerr << " Insert in " << track << endl; - // cerr << " +" << element << endl; - // } } - // if (segment->getId() == 51904) { - // DebugSession::close(); - // } } } else { list::iterator ichunk = _chunks.begin(); @@ -592,15 +583,15 @@ namespace { //} cdebug_log(159,0) << " axisMin:" << DbU::getValueString(axisMin) - << " axisMax:" << DbU::getValueString(axisMax) << endl; + << " axisMax:" << DbU::getValueString(axisMax) << endl; Track* track = plane->getTrackByPosition ( axisMin, Constant::Superior ); for ( ; track and (track->getAxis() <= axisMax) ; track = track->getNextTrack() ) { TrackElement* element = TrackFixedSegment::create ( track, segment ); cdebug_log(159,0) << " Insert in " << track - << "+" << element - << " " << (net->isExternal() ? "external" : "internal") - << endl; + << "+" << element + << " " << (net->isExternal() ? "external" : "internal") + << endl; } } }