diff --git a/cumulus/src/plugins/alpha/block/block.py b/cumulus/src/plugins/alpha/block/block.py index 4c499025..d5a7f4bf 100644 --- a/cumulus/src/plugins/alpha/block/block.py +++ b/cumulus/src/plugins/alpha/block/block.py @@ -584,11 +584,11 @@ class Block ( object ): self.checkIoPins() self.spares.build() if self.conf.useClockTree: self.addClockTrees() - self.addHfnBuffers() + if self.conf.useHFNS: self.addHfnBuffers() if editor: editor.fit() #Breakpoint.stop( 0, 'Clock tree(s) done.' ) self.place() - self.findHfnTrees() + if self.conf.useHFNS: self.findHfnTrees() break if self.conf.useClockTree: self.splitClocks() if self.conf.isCoreBlock: self.doConnectCore() diff --git a/cumulus/src/plugins/alpha/block/configuration.py b/cumulus/src/plugins/alpha/block/configuration.py index fb298298..648e16a9 100644 --- a/cumulus/src/plugins/alpha/block/configuration.py +++ b/cumulus/src/plugins/alpha/block/configuration.py @@ -548,23 +548,26 @@ class ChipConf ( object ): # ---------------------------------------------------------------------------- -# Class : "configuration.BufferInterface". +# Class : "configuration.BufferConf". -class BufferInterface ( object ): +class BufferConf ( object ): + """ + Store informations on the buffer(s) to use for Net buffering operations + and clock trees. + """ def __init__ ( self, framework ): - trace( 550, ',+', '\tBufferInterface.__init__()\n' ) + trace( 550, ',+', '\tBufferConf.__init__()\n' ) self.maxSinks = Cfg.getParamInt('spares.maxSinks').asInt() self.masterCell = framework.getCell( Cfg.getParamString('spares.buffer').asString() , CRL.Catalog.State.Views ) if not self.masterCell: trace( 550, '-' ) - raise ErrorMessage( 3, [ 'ClockTree: Buffer cell "{}" not found in library,' \ + raise ErrorMessage( 3, [ 'BufferConf.__init__(): Buffer cell "{}" not found in library,' \ .format(Cfg.getParamString('spares.buffer').asString()) , ' please check the "spares.buffer" configuration parameter in "plugins.conf".' ] ) trace( 550, '\t| masterCell :{}\n'.format(self.masterCell) ) trace( 550, '\t| maximum sinks:{}\n'.format(self.maxSinks) ) - self.count = 0 self.input = None self.output = None @@ -573,7 +576,14 @@ class BufferInterface ( object ): if net.isGlobal(): continue if net.getDirection() & Net.Direction.IN: self.input = net.getName() elif net.getDirection() & Net.Direction.OUT: self.output = net.getName() - + if self.input is None: + raise ErrorMessage( 3, [ 'BufferConf.__init__(): Cannot guess the input terminal of "{}",' \ + .format(Cfg.getParamString('spares.buffer').asString()) + , ' please check that the Nets directions are set.' ] ) + if self.output is None: + raise ErrorMessage( 3, [ 'BufferConf.__init__(): Cannot guess the output terminal of "{}",' \ + .format(Cfg.getParamString('spares.buffer').asString()) + , ' please check that the Nets directions are set.' ] ) trace( 550, '\t| input :"{}"\n'.format(self.input ) ) trace( 550, '\t| output :"{}"\n'.format(self.output) ) trace( 550, '-' ) @@ -589,11 +599,16 @@ class BufferInterface ( object ): def height ( self ): return self.masterCell.getAbutmentBox().getHeight() def createBuffer ( self, cell ): + """ + Create a new buffer *instance* in Cell. The instance is named "spare_buffer_", + where ```` is an ever incrementing counter (self.count). + """ instance = Instance.create( cell, 'spare_buffer_{}'.format(self.count), self.masterCell ) self.count += 1 return instance def resetBufferCount ( self ): + """Reset the buffer instance counter (to use only in case of design reset).""" self.count = 0 @@ -620,7 +635,6 @@ class FeedsConf ( object ): self.feeds.append( (feedWidth,feedCell) ) self.feeds.sort( key=itemgetter(0) ) self.feeds.reverse() - print( self.feeds ) for i in range(len(self.feeds)): trace( 550, '\t[{:>2}] {:>10} {}\n' \ .format(i,DbU.getValueString(self.feeds[i][0]),self.feeds[i][1]) ) @@ -827,7 +841,7 @@ class BlockConf ( GaugeConf ): self.editor = None self.framework = CRL.AllianceFramework.get() self.cfg = CfgCache('',Cfg.Parameter.Priority.Interactive) - self.bufferConf = BufferInterface( self.framework ) + self.bufferConf = BufferConf( self.framework ) self.feedsConf = FeedsConf( self.framework ) self.chipConf = ChipConf( self ) self.bColumns = 2 @@ -840,6 +854,7 @@ class BlockConf ( GaugeConf ): self.fixedHeight = None self.deltaAb = [ 0, 0, 0, 0 ] self.useClockTree = False + self.useHFNS = False self.useSpares = True self.isBuilt = False self.ioPins = [] diff --git a/cumulus/src/plugins/alpha/chip/chip.py b/cumulus/src/plugins/alpha/chip/chip.py index bcc45a70..e5d114e5 100644 --- a/cumulus/src/plugins/alpha/chip/chip.py +++ b/cumulus/src/plugins/alpha/chip/chip.py @@ -68,8 +68,6 @@ class Chip ( Block ): def __init__ ( self, conf ): super(Chip,self).__init__( conf ) - print( 'Core: {}'.format(self.conf.core) ) - print( '| AB: {}'.format(self.conf.core.getAbutmentBox()) ) def validate ( self ): self.conf.validated = True diff --git a/cumulus/src/plugins/alpha/chip/configuration.py b/cumulus/src/plugins/alpha/chip/configuration.py index 4496545c..df2a25e7 100644 --- a/cumulus/src/plugins/alpha/chip/configuration.py +++ b/cumulus/src/plugins/alpha/chip/configuration.py @@ -101,7 +101,6 @@ class ChipConf ( BlockConf ): def __init__ ( self, cell, ioPins=[], ioPads=[] ): trace( 550, ',+', 'ChipConf.__init__(): "{}"'.format(cell.getName()) ) - print( super(ChipConf,self).__init__ ) super(ChipConf,self).__init__( cell, ioPins, ioPads ) # trace( 550, '\tONE LAMBDA = %s\n' % DbU.getValueString(DbU.fromLambda(1.0)) ) self.validated = True @@ -577,7 +576,6 @@ class ChipConf ( BlockConf ): return def checkChipSize ( self ): - print( 'checkChipSize' ) if self.chipSize[0] % self.sliceStep: print( WarningMessage( 'ChipConf.checkChipSize(): Width of "{}" ({})is not on sliceStep ({}), ajusted.' \ .format( self.chipConf.name diff --git a/cumulus/src/plugins/alpha/chip/corona.py b/cumulus/src/plugins/alpha/chip/corona.py index b439142a..f1fc2f61 100644 --- a/cumulus/src/plugins/alpha/chip/corona.py +++ b/cumulus/src/plugins/alpha/chip/corona.py @@ -488,8 +488,6 @@ class Builder ( object ): def __init__ ( self, block ): self.block = block self.innerBb = self.block.bb - print( 'Builder.__init__(): innerBb: {}'.format(self.innerBb) ) - print( self.block.path.getTransformation()) self.block.path.getTransformation().applyOn( self.innerBb ) self.innerBb.inflate( self.hRailSpace/2, self.vRailSpace/2 ) self.southSide = SouthSide( self ) diff --git a/cumulus/src/plugins/alpha/chip/power.py b/cumulus/src/plugins/alpha/chip/power.py index 22aa4b37..80845a44 100644 --- a/cumulus/src/plugins/alpha/chip/power.py +++ b/cumulus/src/plugins/alpha/chip/power.py @@ -220,7 +220,6 @@ class Builder ( object ): return htPlugs = [] for plug in self.conf.coronaCk.getPlugs(): - print( plug ) if plug.getInstance().isTerminalNetlist(): htPlugs.append( plug ) if len(htPlugs) != 1: @@ -228,7 +227,6 @@ class Builder ( object ): .format( self.conf.coronaCk.getName() , self.conf.icore.getName() , len(htPlugs)) ] - print( self.conf.icore ) for plug in htPlugs: message += [ '\n - {} {}'.format(plug,plug.getInstance()) ] raise ErrorMessage( 1, message ) diff --git a/cumulus/src/plugins/alpha/core2chip/core2chip.py b/cumulus/src/plugins/alpha/core2chip/core2chip.py index 891c81ea..f65f299c 100644 --- a/cumulus/src/plugins/alpha/core2chip/core2chip.py +++ b/cumulus/src/plugins/alpha/core2chip/core2chip.py @@ -248,7 +248,6 @@ class IoPad ( object ): @property def pads ( self ): - print( self.ioPadConf ) return self.ioPadConf.pads def __str__ ( self ):