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:
parent
f77741db3f
commit
b1bc22f8e7
|
@ -472,14 +472,16 @@ class GaugeConf ( object ):
|
||||||
minArea = self._routingGauge.getRoutingLayer( depth ).getMinimalArea()
|
minArea = self._routingGauge.getRoutingLayer( depth ).getMinimalArea()
|
||||||
extension = 0
|
extension = 0
|
||||||
if minArea:
|
if minArea:
|
||||||
minLength = DbU.fromPhysical( minArea // DbU.toPhysical( wireWidth, DbU.UnitPowerMicro )
|
minLength = DbU.fromPhysical( minArea / DbU.toPhysical( wireWidth, DbU.UnitPowerMicro )
|
||||||
, DbU.UnitPowerMicro )
|
, DbU.UnitPowerMicro )
|
||||||
minLength = toFoundryGrid( minLength, DbU.SnapModeSuperior );
|
minLength = toFoundryGrid( minLength, DbU.SnapModeSuperior );
|
||||||
if isinstance(segment,Horizontal):
|
if isinstance(segment,Horizontal):
|
||||||
|
trace( 550, '\tminLength={}\n'.format(DbU.getValueString(minLength)) )
|
||||||
uMin = segment.getSource().getX()
|
uMin = segment.getSource().getX()
|
||||||
uMax = segment.getTarget().getX()
|
uMax = segment.getTarget().getX()
|
||||||
segLength = abs( uMax - uMin )
|
segLength = abs( uMax - uMin )
|
||||||
if segLength < minLength:
|
if segLength < minLength:
|
||||||
|
trace( 550, '\texpand\n' )
|
||||||
extension = toFoundryGrid( (minLength - segLength)//2, DbU.SnapModeSuperior )
|
extension = toFoundryGrid( (minLength - segLength)//2, DbU.SnapModeSuperior )
|
||||||
if uMin > uMax:
|
if uMin > uMax:
|
||||||
extension = - extension
|
extension = - extension
|
||||||
|
|
Loading…
Reference in New Issue