Various bug fixes in the cumulus trackAvoid system.
This commit is contained in:
parent
6b1f57d7f1
commit
01b0489f58
|
@ -1397,14 +1397,15 @@ class BlockConf ( GaugeConf ):
|
||||||
self.ioPinsCounts = {}
|
self.ioPinsCounts = {}
|
||||||
self.ioPinsArg = ioPins
|
self.ioPinsArg = ioPins
|
||||||
self.ioPadsArg = ioPads
|
self.ioPadsArg = ioPads
|
||||||
self.cfg.etesian.aspectRatio = None
|
self.cfg.etesian.aspectRatio = None
|
||||||
self.cfg.etesian.spaceMargin = None
|
self.cfg.etesian.spaceMargin = None
|
||||||
self.cfg.etesian.latchUpDistance = None
|
self.cfg.etesian.latchUpDistance = None
|
||||||
self.cfg.block.spareSide = None
|
self.cfg.block.spareSide = None
|
||||||
self.cfg.block.vRailsPeriod = None
|
self.cfg.block.vRailsPeriod = None
|
||||||
self.cfg.katana.dumpMeasures = None
|
self.cfg.katana.dumpMeasures = None
|
||||||
self.cfg.spares.htreeRootOffset = CfgDefault(3)
|
self.cfg.spares.useFeedTrackAvoid = CfgDefault(False)
|
||||||
self.cfg.spares.htreeOffset = CfgDefault(5)
|
self.cfg.spares.htreeRootOffset = CfgDefault(3)
|
||||||
|
self.cfg.spares.htreeOffset = CfgDefault(5)
|
||||||
self.chipConf = ChipConf( self )
|
self.chipConf = ChipConf( self )
|
||||||
self.etesian = None
|
self.etesian = None
|
||||||
self.katana = None
|
self.katana = None
|
||||||
|
|
|
@ -107,10 +107,10 @@ class HTree ( object ):
|
||||||
gaugeConf.setStackPosition( contact, x, y )
|
gaugeConf.setStackPosition( contact, x, y )
|
||||||
gaugeConf.createVertical ( contact, forkContact, x, 0 )
|
gaugeConf.createVertical ( contact, forkContact, x, 0 )
|
||||||
trackAvoidBox = Box( x, forkContact.getY(), x, y )
|
trackAvoidBox = Box( x, forkContact.getY(), x, y )
|
||||||
if forkContact.getY() > contact.getY():
|
trackAvoidBox.inflate( 0, 0, 0, self.spares.conf.sliceHeight )
|
||||||
trackAvoidBox.inflate( 0, 0, 0, self.spares.conf.sliceHeight )
|
|
||||||
gaugeConf.addTrackAvoid( trackAvoidBox )
|
gaugeConf.addTrackAvoid( trackAvoidBox )
|
||||||
self.spares.trackAvoid( trackAvoidBox )
|
if gaugeConf.cfg.spares.useFeedTrackAvoid and forkContact.getY() > contact.getY():
|
||||||
|
self.spares.trackAvoid( trackAvoidBox )
|
||||||
if len(leaf.buffers) > 1:
|
if len(leaf.buffers) > 1:
|
||||||
tl1Contact = gaugeConf.rpAccessByPlugName( leaf.buffers[1], bufferConf.input, ckNet, GaugeConf.DeepDepth|GaugeConf.HAccess )
|
tl1Contact = gaugeConf.rpAccessByPlugName( leaf.buffers[1], bufferConf.input, ckNet, GaugeConf.DeepDepth|GaugeConf.HAccess )
|
||||||
tl2Contact = gaugeConf.rpAccessByPlugName( leaf.buffers[2], bufferConf.input, ckNet )
|
tl2Contact = gaugeConf.rpAccessByPlugName( leaf.buffers[2], bufferConf.input, ckNet )
|
||||||
|
|
|
@ -1141,6 +1141,10 @@ class Spares ( object ):
|
||||||
nodes.
|
nodes.
|
||||||
"""
|
"""
|
||||||
trace( 540, ',+', '\tSpares.trackAvoid() {}\n'.format( box ))
|
trace( 540, ',+', '\tSpares.trackAvoid() {}\n'.format( box ))
|
||||||
|
if self.conf.isCoreBlock:
|
||||||
|
coreCell = self.conf.corona
|
||||||
|
else:
|
||||||
|
coreCell = self.conf.core
|
||||||
yoffset = 0
|
yoffset = 0
|
||||||
if self.conf.isCoreBlock:
|
if self.conf.isCoreBlock:
|
||||||
yoffset = self.conf.icore.getTransformation().getTy()
|
yoffset = self.conf.icore.getTransformation().getTy()
|
||||||
|
@ -1159,7 +1163,7 @@ class Spares ( object ):
|
||||||
orientation = Transformation.Orientation.MY
|
orientation = Transformation.Orientation.MY
|
||||||
y += sliceHeight
|
y += sliceHeight
|
||||||
transf = Transformation( x, y, orientation )
|
transf = Transformation( x, y, orientation )
|
||||||
instance = self.conf.feedsConf.createFeed( self.conf.corona )
|
instance = self.conf.feedsConf.createFeed( coreCell )
|
||||||
instance.setTransformation( transf )
|
instance.setTransformation( transf )
|
||||||
instance.setPlacementStatus( Instance.PlacementStatus.FIXED )
|
instance.setPlacementStatus( Instance.PlacementStatus.FIXED )
|
||||||
trace( 540, '\ttrackAvoid, feed: {} @{}\n'.format(instance,transf) )
|
trace( 540, '\ttrackAvoid, feed: {} @{}\n'.format(instance,transf) )
|
||||||
|
|
Loading…
Reference in New Issue