diff --git a/cumulus/src/plugins/alpha/block/configuration.py b/cumulus/src/plugins/alpha/block/configuration.py index 5c14979a..6711f8a8 100644 --- a/cumulus/src/plugins/alpha/block/configuration.py +++ b/cumulus/src/plugins/alpha/block/configuration.py @@ -1398,8 +1398,8 @@ class BlockConf ( GaugeConf ): @property def coreAb ( self ): if not hasattr(self,'coreSize'): return Box() - #trace( 550, '\tcoreAb:[{} {}]\n'.format( DbU.getValueString(self.coreSize[0]) - # , DbU.getValueString(self.coreSize[1]) )) + trace( 550, '\tcoreAb:[{} {}]\n'.format( DbU.getValueString(self.coreSize[0]) + , DbU.getValueString(self.coreSize[1]) )) return Box( 0, 0, self.coreSize[0], self.coreSize[1] ) @property diff --git a/cumulus/src/plugins/alpha/chip/__init__.py b/cumulus/src/plugins/alpha/chip/__init__.py index 69782229..adc1cd23 100644 --- a/cumulus/src/plugins/alpha/chip/__init__.py +++ b/cumulus/src/plugins/alpha/chip/__init__.py @@ -141,8 +141,12 @@ class CoreWire ( object ): trace( 550, '\tbbSegment: {}\n'.format(self.bbSegment) ) self.symSegmentLayer = None for layerGauge in rg.getLayerGauges(): + trace( 550, '\tTrying: {}\n'.format(layerGauge) ) + if layerGauge.getType() == RoutingLayerGauge.Unusable: continue + if layerGauge.getType() == RoutingLayerGauge.BottomPowerSupply: continue if layerGauge.getDepth() > self.conf.topLayerDepth: break if layerGauge.getLayer().getMask() == mask: + trace( 550, '\tUsing: {}\n'.format(layerGauge) ) self.symSegmentLayer = layerGauge.getLayer() if self.preferredDir: self.symContactLayer = self.symSegmentLayer @@ -155,11 +159,15 @@ class CoreWire ( object ): , DbU.getValueString(self.symContactSize[1]) )) else: depth = layerGauge.getDepth() + trace( 550, '\tChoosing PP layer, {}+1 > top={}\n' \ + .format(layerGauge.getDepth(),self.conf.topLayerDepth) ) if layerGauge.getDepth() + 1 > self.conf.topLayerDepth: self.symSegmentLayer = rg.getLayerGauge( depth-1 ).getLayer() depth -= 1 + trace( 550, '\tUsing below layer {}\n'.format( self.symSegmentLayer )) else: self.symSegmentLayer = rg.getLayerGauge( depth+1 ).getLayer() + trace( 550, '\tUsing above layer {}\n'.format( self.symSegmentLayer )) self.symContactLayer = rg.getContactLayer( depth ) if self.side & (West|East): self.symContactSize = ( self.bbSegment.getHeight(), self.bbSegment.getHeight() ) diff --git a/cumulus/src/plugins/alpha/chip/chip.py b/cumulus/src/plugins/alpha/chip/chip.py index d1df6fe3..dc1b2bc6 100644 --- a/cumulus/src/plugins/alpha/chip/chip.py +++ b/cumulus/src/plugins/alpha/chip/chip.py @@ -94,6 +94,8 @@ class Chip ( Block ): self.validate() minHCorona = self.conf.minHCorona minVCorona = self.conf.minVCorona + trace( 550, '\tminHCorona={}\n'.format(DbU.getValueString( minHCorona ))) + trace( 550, '\tminVCorona={}\n'.format(DbU.getValueString( minVCorona ))) else: self.padsCorona = plugins.alpha.harness.pads.Corona( self ) self.padsCorona.doLayout() diff --git a/cumulus/src/plugins/alpha/chip/configuration.py b/cumulus/src/plugins/alpha/chip/configuration.py index 6f4f2536..ab6cdffd 100644 --- a/cumulus/src/plugins/alpha/chip/configuration.py +++ b/cumulus/src/plugins/alpha/chip/configuration.py @@ -153,13 +153,15 @@ class ChipConf ( BlockConf ): self.railsCount = self.cfg.chip.block.rails.count + len(clockNets) trace( 550, '\tself.railsCount: {}\n'.format(self.railsCount) ) hRailsSize = self.railsCount*(self.hRailWidth + self.hRailSpace) + self.hRailSpace + trace( 550, '\thRailsSize={}\n'.format(DbU.getValueString( hRailsSize ))) if hRailsSize % self.sliceHeight: hRailsSize += self.sliceHeight - (hRailsSize % self.sliceHeight) - self.minHCorona = hRailsSize + self.sliceHeight + trace( 550, '\thRailsSize (sliceHeight)={}\n'.format(DbU.getValueString( hRailsSize ))) + self.minHCorona = hRailsSize #+ self.sliceHeight vRailsSize = self.railsCount*(self.vRailWidth + self.vRailSpace) + self.vRailSpace if vRailsSize % self.sliceHeight: vRailsSize += self.sliceHeight - (vRailsSize % self.sliceHeight) - self.minVCorona = vRailsSize + self.sliceHeight + self.minVCorona = vRailsSize #+ self.sliceHeight def chipValidate ( self ): #self.checkPads() diff --git a/cumulus/src/plugins/alpha/chip/pads.py b/cumulus/src/plugins/alpha/chip/pads.py index 455d2d0e..50fd9eff 100644 --- a/cumulus/src/plugins/alpha/chip/pads.py +++ b/cumulus/src/plugins/alpha/chip/pads.py @@ -774,6 +774,7 @@ class Corona ( object ): self.northSide.gap = self.southSide.gap self.eastSide.gap = self.southSide.gap self.westSide.gap = self.southSide.gap + trace( 550, '\tMinimum gap: {}\n'.format(DbU.getValueString( self.southSide.gap ))) for coronaPlug in self.conf.icorona.getPlugs(): chipIntNet = coronaPlug.getNet() if not chipIntNet: @@ -802,6 +803,10 @@ class Corona ( object ): raise ErrorMessage( 1, 'PadsCorona._placeInnerCorona(): Chip net "{}" is not connected to a pad.' \ .format(chipIntNet.getName()) ) self.conf.setupCorona( self.westSide.gap, self.southSide.gap, self.eastSide.gap, self.northSide.gap ) + trace( 550, '\tWest side gap: {}\n'.format(DbU.getValueString( self.westSide.gap ))) + trace( 550, '\tEast side gap: {}\n'.format(DbU.getValueString( self.eastSide.gap ))) + trace( 550, '\tSouth side gap: {}\n'.format(DbU.getValueString( self.southSide.gap ))) + trace( 550, '\tNorth side gap: {}\n'.format(DbU.getValueString( self.northSide.gap ))) self.coreSymBb = self.conf.getInstanceAb( self.conf.icorona ) self.coreSymBb.inflate( self.conf.toSymbolic( self.westSide.gap //2, Superior ) , self.conf.toSymbolic( self.southSide.gap//2, Superior )