Fix missing VIA & bad offset in htree for low metal techs.
This commit is contained in:
parent
96fe367cc0
commit
38cc00005d
|
@ -143,6 +143,7 @@ class HTree ( object ):
|
||||||
hLeafDepth = gaugeConf.horizontalDepth
|
hLeafDepth = gaugeConf.horizontalDepth
|
||||||
if gaugeConf.horizontalDepth > 2 and (gaugeConf.horizontalDepth > gaugeConf.verticalDepth):
|
if gaugeConf.horizontalDepth > 2 and (gaugeConf.horizontalDepth > gaugeConf.verticalDepth):
|
||||||
hLeafDepth = gaugeConf.horizontalDepth - 2
|
hLeafDepth = gaugeConf.horizontalDepth - 2
|
||||||
|
leafFlags = GaugeConf.OffsetLeft1
|
||||||
blContact = None
|
blContact = None
|
||||||
brContact = None
|
brContact = None
|
||||||
tlContact = None
|
tlContact = None
|
||||||
|
@ -150,6 +151,11 @@ class HTree ( object ):
|
||||||
leftContact = None
|
leftContact = None
|
||||||
rigthContact = None
|
rigthContact = None
|
||||||
driverY = None
|
driverY = None
|
||||||
|
if (qt.bl and len(qt.bl.buffers) > 1) \
|
||||||
|
or (qt.tl and len(qt.tl.buffers) > 1) \
|
||||||
|
or (qt.br and len(qt.br.buffers) > 1) \
|
||||||
|
or (qt.tr and len(qt.tr.buffers) > 1):
|
||||||
|
leafFlags |= GaugeConf.HAccess
|
||||||
if not qt.isRoot():
|
if not qt.isRoot():
|
||||||
ckParentNet = qt.bInputPlug(0).getNet()
|
ckParentNet = qt.bInputPlug(0).getNet()
|
||||||
driverContact = gaugeConf.rpAccessByPlugName( qt.buffers[0], bufferConf.input, ckParentNet )
|
driverContact = gaugeConf.rpAccessByPlugName( qt.buffers[0], bufferConf.input, ckParentNet )
|
||||||
|
@ -157,19 +163,19 @@ class HTree ( object ):
|
||||||
trace( 550, '\tdriverContact={}\n'.format( driverContact ))
|
trace( 550, '\tdriverContact={}\n'.format( driverContact ))
|
||||||
if qt.bl:
|
if qt.bl:
|
||||||
trace( 550, '+,', '\tblContact\n' )
|
trace( 550, '+,', '\tblContact\n' )
|
||||||
blContact = gaugeConf.rpAccessByPlugName( qt.bl.buffers[0], bufferConf.input, ckNet, GaugeConf.OffsetLeft1 )
|
blContact = gaugeConf.rpAccessByPlugName( qt.bl.buffers[0], bufferConf.input, ckNet, leafFlags )
|
||||||
trace( 550, ',-', '\tblContact={}\n'.format(blContact) )
|
trace( 550, ',-', '\tblContact={}\n'.format(blContact) )
|
||||||
if qt.br:
|
if qt.br:
|
||||||
trace( 550, '+,', '\tbrContact\n' )
|
trace( 550, '+,', '\tbrContact\n' )
|
||||||
brContact = gaugeConf.rpAccessByPlugName( qt.br.buffers[0], bufferConf.input, ckNet, GaugeConf.OffsetLeft1 )
|
brContact = gaugeConf.rpAccessByPlugName( qt.br.buffers[0], bufferConf.input, ckNet, leafFlags )
|
||||||
trace( 550, ',-', '\tbrContact={}\n'.format(brContact) )
|
trace( 550, ',-', '\tbrContact={}\n'.format(brContact) )
|
||||||
if qt.tl:
|
if qt.tl:
|
||||||
trace( 550, '+,', '\ttlContact\n' )
|
trace( 550, '+,', '\ttlContact\n' )
|
||||||
tlContact = gaugeConf.rpAccessByPlugName( qt.tl.buffers[0], bufferConf.input, ckNet, GaugeConf.OffsetLeft1 )
|
tlContact = gaugeConf.rpAccessByPlugName( qt.tl.buffers[0], bufferConf.input, ckNet, leafFlags )
|
||||||
trace( 550, ',-', '\ttlContact={}\n'.format(tlContact) )
|
trace( 550, ',-', '\ttlContact={}\n'.format(tlContact) )
|
||||||
if qt.tr:
|
if qt.tr:
|
||||||
trace( 550, '+,', '\ttrContact\n' )
|
trace( 550, '+,', '\ttrContact\n' )
|
||||||
trContact = gaugeConf.rpAccessByPlugName( qt.tr.buffers[0], bufferConf.input, ckNet, GaugeConf.OffsetLeft1 )
|
trContact = gaugeConf.rpAccessByPlugName( qt.tr.buffers[0], bufferConf.input, ckNet, leafFlags )
|
||||||
trace( 550, ',-', '\ttrContact={}\n'.format(trContact) )
|
trace( 550, ',-', '\ttrContact={}\n'.format(trContact) )
|
||||||
flags = GaugeConf.OffsetTop2
|
flags = GaugeConf.OffsetTop2
|
||||||
yoffset = -2
|
yoffset = -2
|
||||||
|
@ -203,14 +209,14 @@ class HTree ( object ):
|
||||||
if qt.br or qt.tr:
|
if qt.br or qt.tr:
|
||||||
gaugeConf.createHorizontal( rightSourceContact, rightContact, rightSourceY, 0 )
|
gaugeConf.createHorizontal( rightSourceContact, rightContact, rightSourceY, 0 )
|
||||||
if tlContact:
|
if tlContact:
|
||||||
tlY = gaugeConf.getTrack( tlContact.getY(), hLeafDepth, 0 )
|
tlY = gaugeConf.getTrack( tlContact.getY(), hLeafDepth, -1 )
|
||||||
elif trContact:
|
elif trContact:
|
||||||
tlY = gaugeConf.getTrack( trContact.getY(), hLeafDepth, 0 )
|
tlY = gaugeConf.getTrack( trContact.getY(), hLeafDepth, -1 )
|
||||||
if blContact:
|
if blContact:
|
||||||
blY = gaugeConf.getTrack( blContact.getY(), hLeafDepth, 0 )
|
blY = gaugeConf.getTrack( blContact.getY(), hLeafDepth, 2 )
|
||||||
trace( 550, '\tblY:{}\n'.format( DbU.getValueString(blY) ))
|
trace( 550, '\tblY:{}\n'.format( DbU.getValueString(blY) ))
|
||||||
elif brContact:
|
elif brContact:
|
||||||
blY = gaugeConf.getTrack( brContact.getY(), hLeafDepth, 0 )
|
blY = gaugeConf.getTrack( brContact.getY(), hLeafDepth, 2 )
|
||||||
trace( 550, '\tblY:{}\n'.format( DbU.getValueString(blY) ))
|
trace( 550, '\tblY:{}\n'.format( DbU.getValueString(blY) ))
|
||||||
if qt.tl:
|
if qt.tl:
|
||||||
self._connectLeaf( qt.tl, ckNet, leftContact, tlContact, leftX, tlY )
|
self._connectLeaf( qt.tl, ckNet, leftContact, tlContact, leftX, tlY )
|
||||||
|
|
Loading…
Reference in New Issue