Fix HTree to corona's edge wiring in horizontal direction.

* Bug: In cumulus/plugins.chip.powerplane.Builder._connectHTree(),
    when building the stacked VIAs over the corona Pin and the
    root buffer RoutingPad, pass the GaugeConf.HAccess flag so the
    stack stops at METAL4 (top horizontal layer).
      Before we where also adding a VIA up to METAL5 which was unused
    and caused a minimal area violation.
This commit is contained in:
Jean-Paul Chaput 2021-06-11 11:47:02 +02:00
parent 68812fa0ca
commit 4e7dbee831
1 changed files with 8 additions and 6 deletions

View File

@ -26,7 +26,8 @@ from helpers.io import ErrorMessage, WarningMessage
from helpers.overlay import UpdateSession
import plugins
import plugins.chip
from plugins.alpha.block.bigvia import BigVia
from plugins.alpha.block.bigvia import BigVia
from plugins.alpha.block.configuration import GaugeConf
__all__ = [ 'Builder' ]
@ -489,11 +490,6 @@ class Builder ( object ):
raise ErrorMessage( 1, message )
with UpdateSession():
coronaAb = self.conf.cellPnR.getAbutmentBox()
bufferRp = self.conf.rpAccessByOccurrence( Occurrence(htPlugs[0], Path()), coronaNet, 0 )
pinRp = self.conf.rpAccessByOccurrence( Occurrence(coronaPin , Path()), coronaNet, 0 )
trace( 550, '\tpinRp={}\n'.format(pinRp) )
self.conf.expandMinArea( bufferRp )
self.conf.expandMinArea( pinRp )
if coronaPin.getAccessDirection() == Pin.Direction.NORTH:
isVertical = True
axis = coronaAb.getYMax()
@ -508,6 +504,10 @@ class Builder ( object ):
elif coronaPin.getAccessDirection() == Pin.Direction.WEST:
isVertical = False
axis = coronaAb.getXMin()
flags = 0 if isVertical else GaugeConf.HAccess
bufferRp = self.conf.rpAccessByOccurrence( Occurrence(htPlugs[0], Path()), coronaNet, flags )
pinRp = self.conf.rpAccessByOccurrence( Occurrence(coronaPin , Path()), coronaNet, flags )
trace( 550, '\tpinRp={}\n'.format(pinRp) )
if isVertical:
pitch = self.conf.hRoutingGauge.getPitch()
yaxis = axis + 2 * pitch * trackNb
@ -537,6 +537,8 @@ class Builder ( object ):
self.conf.createVertical ( contact1, contact2, xaxis , 0 )
self.conf.createHorizontal( contact2, pinRp , yaxisPin, 0 )
trace( 550, '\txaxis(track)={}\n'.format(DbU.getValueString(xaxis)) )
self.conf.expandMinArea( bufferRp )
self.conf.expandMinArea( pinRp )
return
def connectHTrees ( self, hTrees ):