The previous fix for low metal tech, must apply only for them in htree.

This commit is contained in:
Jean-Paul Chaput 2023-01-19 14:54:00 +01:00
parent 38cc00005d
commit f7b2a4f5bb
3 changed files with 11 additions and 5 deletions

View File

@ -492,6 +492,7 @@ extern "C" {
accessorVectorFromVoid(getLayerGauges,PyRoutingGauge,RoutingGauge,RoutingLayerGauge) accessorVectorFromVoid(getLayerGauges,PyRoutingGauge,RoutingGauge,RoutingLayerGauge)
DirectGetBoolAttribute(PyRoutingGauge_isSymbolic ,isSymbolic ,PyRoutingGauge,RoutingGauge) DirectGetBoolAttribute(PyRoutingGauge_isSymbolic ,isSymbolic ,PyRoutingGauge,RoutingGauge)
DirectGetBoolAttribute(PyRoutingGauge_isSuperPitched,isSuperPitched,PyRoutingGauge,RoutingGauge) DirectGetBoolAttribute(PyRoutingGauge_isSuperPitched,isSuperPitched,PyRoutingGauge,RoutingGauge)
DirectGetBoolAttribute(PyRoutingGauge_isTwoMetals ,isTwoMetals ,PyRoutingGauge,RoutingGauge)
DirectSetBoolAttribute(PyRoutingGauge_setSymbolic ,setSymbolic ,PyRoutingGauge,RoutingGauge) DirectSetBoolAttribute(PyRoutingGauge_setSymbolic ,setSymbolic ,PyRoutingGauge,RoutingGauge)
DirectGetBoolAttribute(PyRoutingGauge_isHV ,isHV ,PyRoutingGauge,RoutingGauge) DirectGetBoolAttribute(PyRoutingGauge_isHV ,isHV ,PyRoutingGauge,RoutingGauge)
DirectGetBoolAttribute(PyRoutingGauge_isVH ,isVH ,PyRoutingGauge,RoutingGauge) DirectGetBoolAttribute(PyRoutingGauge_isVH ,isVH ,PyRoutingGauge,RoutingGauge)
@ -508,6 +509,8 @@ extern "C" {
, "The RoutingGauge is for symbolic technology." } , "The RoutingGauge is for symbolic technology." }
, { "isSuperPitched" , (PyCFunction)PyRoutingGauge_isSuperPitched , METH_NOARGS , { "isSuperPitched" , (PyCFunction)PyRoutingGauge_isSuperPitched , METH_NOARGS
, "The RoutingGauge is super-pitched." } , "The RoutingGauge is super-pitched." }
, { "isTwoMetals" , (PyCFunction)PyRoutingGauge_isTwoMetals , METH_NOARGS
, "The RoutingGauge has only two routing metal layers." }
, { "isHV" , (PyCFunction)PyRoutingGauge_isHV , METH_NOARGS , { "isHV" , (PyCFunction)PyRoutingGauge_isHV , METH_NOARGS
, "The first routing layer (metal2) is horizontal." } , "The first routing layer (metal2) is horizontal." }
, { "isVH" , (PyCFunction)PyRoutingGauge_isVH , METH_NOARGS , { "isVH" , (PyCFunction)PyRoutingGauge_isVH , METH_NOARGS

View File

@ -119,6 +119,8 @@ class GaugeConf ( object ):
@property @property
def routingBb ( self ): return self._routingBb def routingBb ( self ): return self._routingBb
def isTwoMetals ( self ): return self._routingGauge.isTwoMetals()
def getRoutingLayer ( self, depth ): def getRoutingLayer ( self, depth ):
return self._routingGauge.getRoutingLayer( depth ) return self._routingGauge.getRoutingLayer( depth )

View File

@ -151,11 +151,12 @@ class HTree ( object ):
leftContact = None leftContact = None
rigthContact = None rigthContact = None
driverY = None driverY = None
if (qt.bl and len(qt.bl.buffers) > 1) \ if gaugeConf.isTwoMetals():
or (qt.tl and len(qt.tl.buffers) > 1) \ if (qt.bl and len(qt.bl.buffers) > 1) \
or (qt.br and len(qt.br.buffers) > 1) \ or (qt.tl and len(qt.tl.buffers) > 1) \
or (qt.tr and len(qt.tr.buffers) > 1): or (qt.br and len(qt.br.buffers) > 1) \
leafFlags |= GaugeConf.HAccess 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 )