Bad computation of the track axis for fixed in NetBuilderHV::_do_xG_1PinM2().
* Bug: In NetBuilderHV::_do_xG_1PinM2(), for METAL2 pins on the EAST side, we were computing the track from the XMax position of the GCell. Now, with complete discoupling of the routing pitches and GCell size, this is most of the time false. Replace with a true computation of the last track of routing area.
This commit is contained in:
parent
2019fa25d7
commit
2084a3bde2
|
@ -805,9 +805,17 @@ namespace Anabatic {
|
|||
AutoSegment* vertical = AutoSegment::create( rpSourceContact, turn, Flags::Vertical );
|
||||
rpSourceContact = turn;
|
||||
|
||||
DbU::Unit axis = getGCell()->getXMax() - Session::getDVerticalPitch();
|
||||
Box cellAb = getAnabatic()->getCell()->getAbutmentBox();
|
||||
RoutingLayerGauge* lgM3 = Session::getLayerGauge( 2 );
|
||||
DbU::Unit axis = lgM3->getTrackPosition( cellAb.getXMin()
|
||||
, cellAb.getXMax()
|
||||
, getGCell()->getXMax() - Session::getDVerticalPitch()
|
||||
, Constant::Superior );
|
||||
if (pinDir == Pin::AccessDirection::WEST)
|
||||
axis = getGCell()->getXMin() + Session::getDVerticalPitch();
|
||||
axis = lgM3->getTrackPosition( cellAb.getXMin()
|
||||
, cellAb.getXMax()
|
||||
, getGCell()->getXMin() + Session::getDVerticalPitch()
|
||||
, Constant::Inferior );
|
||||
cdebug_log(145,0) << "axis:" << DbU::getValueString(axis) << endl;
|
||||
|
||||
vertical->setAxis( axis, Flags::Force );
|
||||
|
|
Loading…
Reference in New Issue