Takes even further appart the HTree buffer input/output.
This commit is contained in:
parent
084eee3b39
commit
550b087f05
|
@ -65,11 +65,12 @@ class GaugeConf ( object ):
|
||||||
OffsetLeft1 = 0x0002
|
OffsetLeft1 = 0x0002
|
||||||
OffsetRight1 = 0x0004
|
OffsetRight1 = 0x0004
|
||||||
OffsetTop1 = 0x0008
|
OffsetTop1 = 0x0008
|
||||||
OffsetBottom1 = 0x0010
|
OffsetTop2 = 0x0010
|
||||||
DeepDepth = 0x0020
|
OffsetBottom1 = 0x0020
|
||||||
UseContactWidth = 0x0040
|
DeepDepth = 0x0040
|
||||||
ExpandWidth = 0x0080
|
UseContactWidth = 0x0080
|
||||||
SourceExtend = 0x0100
|
ExpandWidth = 0x0100
|
||||||
|
SourceExtend = 0x0200
|
||||||
|
|
||||||
def __init__ ( self ):
|
def __init__ ( self ):
|
||||||
self._cellGauge = None
|
self._cellGauge = None
|
||||||
|
@ -308,6 +309,7 @@ class GaugeConf ( object ):
|
||||||
yoffset = 0
|
yoffset = 0
|
||||||
if flags & GaugeConf.OffsetBottom1: yoffset = 1
|
if flags & GaugeConf.OffsetBottom1: yoffset = 1
|
||||||
if flags & GaugeConf.OffsetTop1: yoffset = -1
|
if flags & GaugeConf.OffsetTop1: yoffset = -1
|
||||||
|
if flags & GaugeConf.OffsetTop2: yoffset = -2
|
||||||
trace( 550, '\tyoffset:{}\n'.format(yoffset) )
|
trace( 550, '\tyoffset:{}\n'.format(yoffset) )
|
||||||
if startDepth == 0:
|
if startDepth == 0:
|
||||||
contact1 = Contact.create( rp, self._routingGauge.getContactLayer(0), 0, 0 )
|
contact1 = Contact.create( rp, self._routingGauge.getContactLayer(0), 0, 0 )
|
||||||
|
|
|
@ -143,33 +143,49 @@ class HTree ( object ):
|
||||||
trContact = None
|
trContact = None
|
||||||
leftContact = None
|
leftContact = None
|
||||||
rigthContact = None
|
rigthContact = None
|
||||||
|
driverY = None
|
||||||
|
if not qt.isRoot():
|
||||||
|
ckParentNet = qt.bInputPlug(0).getNet()
|
||||||
|
driverContact = gaugeConf.rpAccessByPlugName( qt.buffers[0], bufferConf.input, ckParentNet )
|
||||||
|
driverY = driverContact.getY()
|
||||||
if qt.bl:
|
if qt.bl:
|
||||||
|
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, GaugeConf.OffsetLeft1 )
|
||||||
|
trace( 550, ',-', '\tblContact={}\n'.format(blContact) )
|
||||||
if qt.br:
|
if qt.br:
|
||||||
|
trace( 550, '+,', '\trlContact\n' )
|
||||||
brContact = gaugeConf.rpAccessByPlugName( qt.br.buffers[0], bufferConf.input, ckNet, GaugeConf.OffsetLeft1 )
|
brContact = gaugeConf.rpAccessByPlugName( qt.br.buffers[0], bufferConf.input, ckNet, GaugeConf.OffsetLeft1 )
|
||||||
|
trace( 550, ',-', '\tbrContact={}\n'.format(brContact) )
|
||||||
if qt.tl:
|
if qt.tl:
|
||||||
|
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, GaugeConf.OffsetLeft1 )
|
||||||
|
trace( 550, ',-', '\ttlContact={}\n'.format(tlContact) )
|
||||||
if qt.tr:
|
if qt.tr:
|
||||||
|
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, GaugeConf.OffsetLeft1 )
|
||||||
flags = GaugeConf.OffsetTop1
|
trace( 550, ',-', '\ttrContact={}\n'.format(trContact) )
|
||||||
yoffset = -1
|
flags = GaugeConf.OffsetTop2
|
||||||
|
yoffset = -2
|
||||||
if qt.bl or qt.tl:
|
if qt.bl or qt.tl:
|
||||||
|
trace( 550, '\tLeft branch\n' )
|
||||||
leafContact = blContact if brContact else tlContact
|
leafContact = blContact if brContact else tlContact
|
||||||
leftSourceContact = gaugeConf.rpAccessByPlugName( qt.buffers[0], bufferConf.output, ckNet , GaugeConf.HAccess|flags )
|
leftSourceContact = gaugeConf.rpAccessByPlugName( qt.buffers[0], bufferConf.output, ckNet , GaugeConf.HAccess|flags )
|
||||||
leftSourceX = gaugeConf.getNearestVerticalTrack ( leftSourceContact.getX(), 0 )
|
leftSourceX = gaugeConf.getNearestVerticalTrack ( leftSourceContact.getX(), 0 )
|
||||||
leftSourceY = gaugeConf.getNearestHorizontalTrack( leftSourceContact.getY(), 0, yoffset )
|
if driverY is None: driverY = leftSourceContact.getY()
|
||||||
|
leftSourceY = gaugeConf.getNearestHorizontalTrack( driverY, 0, yoffset )
|
||||||
leftContact = gaugeConf.createContact( ckNet, leafContact.getX(), leftSourceContact.getY(), 0 )
|
leftContact = gaugeConf.createContact( ckNet, leafContact.getX(), leftSourceContact.getY(), 0 )
|
||||||
leftX = gaugeConf.getNearestVerticalTrack( leftContact.getX(), 0 )
|
leftX = gaugeConf.getNearestVerticalTrack( leftContact.getX(), 0 )
|
||||||
gaugeConf.setStackPosition( leftSourceContact, leftSourceX, leftSourceY )
|
gaugeConf.setStackPosition( leftSourceContact, leftSourceX, leftSourceY )
|
||||||
leftContact .setX( leftX )
|
leftContact .setX( leftX )
|
||||||
leftContact .setY( leftSourceY )
|
leftContact .setY( leftSourceY )
|
||||||
flags = 0
|
flags = 0
|
||||||
yoffset = 0
|
|
||||||
if qt.br or qt.tr:
|
if qt.br or qt.tr:
|
||||||
|
trace( 550, '\tRight branch\n' )
|
||||||
leafContact = brContact if brContact else trContact
|
leafContact = brContact if brContact else trContact
|
||||||
rightSourceContact = gaugeConf.rpAccessByPlugName( qt.buffers[0], bufferConf.output, ckNet , GaugeConf.HAccess|flags )
|
rightSourceContact = gaugeConf.rpAccessByPlugName( qt.buffers[0], bufferConf.output, ckNet , GaugeConf.HAccess|flags )
|
||||||
|
if driverY is None: driverY = rightSourceContact.getY()
|
||||||
rightSourceX = gaugeConf.getNearestVerticalTrack( rightSourceContact.getX(), 0 )
|
rightSourceX = gaugeConf.getNearestVerticalTrack( rightSourceContact.getX(), 0 )
|
||||||
rightSourceY = gaugeConf.getNearestHorizontalTrack( rightSourceContact.getY(), 0, yoffset )
|
rightSourceY = gaugeConf.getNearestHorizontalTrack( driverY, 0, yoffset )
|
||||||
rightContact = gaugeConf.createContact( ckNet, leafContact.getX(), rightSourceContact.getY(), 0 )
|
rightContact = gaugeConf.createContact( ckNet, leafContact.getX(), rightSourceContact.getY(), 0 )
|
||||||
rightX = gaugeConf.getNearestVerticalTrack( rightContact.getX(), 0 )
|
rightX = gaugeConf.getNearestVerticalTrack( rightContact.getX(), 0 )
|
||||||
gaugeConf.setStackPosition( rightSourceContact, rightSourceX, rightSourceY )
|
gaugeConf.setStackPosition( rightSourceContact, rightSourceX, rightSourceY )
|
||||||
|
|
Loading…
Reference in New Issue