Commit 4e7dbee8 authored by Jean-Paul Chaput's avatar Jean-Paul Chaput
Browse files

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.
parent 68812fa0
......@@ -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 ):
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment