Bad computation of minimal area of stacked VIAs in Cumulus.

* Bug: In cumulus/plugins.block.configuration.GaugeConf.expandMinArea(),
    The minimal length of the segment intermediate wires where computed
    for the minimal area using an integer division ( // ), which is
    stupid for less than 1.0 values. They are real quantities at this
    point...
      This was making the DRC of ls180 failing.
This commit is contained in:
Jean-Paul Chaput 2021-10-07 00:39:24 +02:00
parent f77741db3f
commit b1bc22f8e7
1 changed files with 3 additions and 1 deletions

View File

@ -472,14 +472,16 @@ class GaugeConf ( object ):
minArea = self._routingGauge.getRoutingLayer( depth ).getMinimalArea()
extension = 0
if minArea:
minLength = DbU.fromPhysical( minArea // DbU.toPhysical( wireWidth, DbU.UnitPowerMicro )
minLength = DbU.fromPhysical( minArea / DbU.toPhysical( wireWidth, DbU.UnitPowerMicro )
, DbU.UnitPowerMicro )
minLength = toFoundryGrid( minLength, DbU.SnapModeSuperior );
if isinstance(segment,Horizontal):
trace( 550, '\tminLength={}\n'.format(DbU.getValueString(minLength)) )
uMin = segment.getSource().getX()
uMax = segment.getTarget().getX()
segLength = abs( uMax - uMin )
if segLength < minLength:
trace( 550, '\texpand\n' )
extension = toFoundryGrid( (minLength - segLength)//2, DbU.SnapModeSuperior )
if uMin > uMax:
extension = - extension