Allow the Y position of the H-Tree horizontal branch to be set.

* Change: In cumulus.block.configuration and cumulus.block.htree, two new
    configuration parameters allow to specify the offset of the horizontal
    branch of the H-Tree manually:
        cfg.spares.htreeRootOffset (first level of the tree)
        cfg.spares.htreeOffset     (subsequent levels)
      The offset is given in number of tracks.
This commit is contained in:
Jean-Paul Chaput 2023-07-19 16:15:22 +02:00
parent d819d46031
commit a14a96f9ed
2 changed files with 7 additions and 5 deletions

View File

@ -25,7 +25,7 @@ from ...CRL import AllianceFramework, RoutingLayerGauge, Catalog,
Gds, Spice
from ...helpers import trace, l, u, n
from ...helpers.io import ErrorMessage, WarningMessage, catch
from ...helpers.overlay import CfgCache, UpdateSession
from ...helpers.overlay import CfgCache, CfgDefault, UpdateSession
from .. import getParameter
from ..rsave import rsave
from ..utils import getPlugByName
@ -80,7 +80,7 @@ class GaugeConf ( object ):
self._plugToRp = { }
self._rpToAccess = { }
self._loadRoutingGauge()
self._routingBb = Box()
self._routingBb = Box()
return
@property
@ -1403,6 +1403,8 @@ class BlockConf ( GaugeConf ):
self.cfg.block.spareSide = None
self.cfg.block.vRailsPeriod = None
self.cfg.katana.dumpMeasures = None
self.cfg.spares.htreeRootOffset = CfgDefault(3)
self.cfg.spares.htreeOffset = CfgDefault(5)
self.chipConf = ChipConf( self )
self.etesian = None
self.katana = None

View File

@ -45,7 +45,7 @@ def unbitify ( rawName ):
class HTree ( object ):
"""
Build a H-Tree on a net occurrene.
Build a H-Tree on a net occurrence.
"""
def __init__ ( self, spares, treeNetOcc, index, flags ):
@ -159,12 +159,12 @@ class HTree ( object ):
or (qt.br and len(qt.br.buffers) > 1) \
or (qt.tr and len(qt.tr.buffers) > 1):
leafFlags |= GaugeConf.HAccess
yoffset = 3
yoffset = gaugeConf.cfg.spares.htreeRootOffset
if not qt.isRoot():
ckParentNet = qt.bInputPlug(0).getNet()
driverContact = gaugeConf.rpAccessByPlugName( qt.buffers[0], bufferConf.input, ckParentNet )
driverY = driverContact.getY()
yoffset = 5
yoffset = gaugeConf.cfg.spares.htreeOffset
trace( 550, '\tdriverContact={}\n'.format( driverContact ))
if qt.bl:
trace( 550, '+,', '\tblContact\n' )