Fix, again, the save procedure in cumulus/plugins.chip & block.
* Bug: In cumulus/plugins.chip.Chip.save(), now completely delegate the saving procedure to the base class (i.e. Block.save() which is BlockConf.save()). * Bug/Change: In cumulus/plugins.block.configuration.BlockConf.save(), Now manage all the configutation, whether it is a simple block or a whole chip. In the case of a whole chip we must force the saving on both chip and corona as the later, being P&R will be seen as a terminal block and not recursively saved.
This commit is contained in:
parent
c80e99c0a1
commit
7ffe75110b
|
@ -1207,24 +1207,6 @@ class BlockConf ( GaugeConf ):
|
||||||
trace( 550, '\tNew cloned cell: "{}"\n'.format(masterCell) )
|
trace( 550, '\tNew cloned cell: "{}"\n'.format(masterCell) )
|
||||||
self.cloneds.append( masterCell )
|
self.cloneds.append( masterCell )
|
||||||
return
|
return
|
||||||
|
|
||||||
#def rsave ( self, cell, depth ):
|
|
||||||
# """
|
|
||||||
# Save the complete cell hierarchy. Saves only the physical view, except
|
|
||||||
# for the ones that has been cloned (their names should end up by "_cts"),
|
|
||||||
# for which logical and physical views are to be saved. They are completely
|
|
||||||
# new cells.
|
|
||||||
# """
|
|
||||||
# if depth == 0: print( ' o Block Recursive Save-Cell.' )
|
|
||||||
# flags = CRL.Catalog.State.Physical
|
|
||||||
# if cell.getName().endswith('_cts'): flags |= CRL.Catalog.State.Logical
|
|
||||||
# if cell.isUniquified(): flags |= CRL.Catalog.State.Logical
|
|
||||||
# self.framework.saveCell( cell, flags )
|
|
||||||
# print( ' {}+ {}.'.format(' '*(depth*2), cell.getName() ) )
|
|
||||||
# for instance in cell.getInstances():
|
|
||||||
# masterCell = instance.getMasterCell()
|
|
||||||
# if not masterCell.isTerminalNetlist():
|
|
||||||
# self.rsave( masterCell, depth+1 )
|
|
||||||
|
|
||||||
def save ( self, flags ):
|
def save ( self, flags ):
|
||||||
"""
|
"""
|
||||||
|
@ -1232,19 +1214,24 @@ class BlockConf ( GaugeConf ):
|
||||||
cells, then call rsave().
|
cells, then call rsave().
|
||||||
"""
|
"""
|
||||||
trace( 550,'\tBlockConf.save() on "{}"\n'.format(self.cell.getName()) )
|
trace( 550,'\tBlockConf.save() on "{}"\n'.format(self.cell.getName()) )
|
||||||
|
views = CRL.Catalog.State.Logical
|
||||||
|
if self.routingGauge.isSymbolic():
|
||||||
|
views = views | CRL.Catalog.State.Physical
|
||||||
for cell in self.cloneds:
|
for cell in self.cloneds:
|
||||||
trace( 550, '\tRenaming cloned cell: "{}"\n'.format(cell) )
|
trace( 550, '\tRenaming cloned cell: "{}"\n'.format(cell) )
|
||||||
cell.setName( cell.getName()+'_cts' )
|
cell.setName( cell.getName()+'_cts' )
|
||||||
if self.chip is None:
|
if self.chip is None:
|
||||||
|
topCell = self.cell
|
||||||
self.cell.setName( self.cell.getName()+'_r' )
|
self.cell.setName( self.cell.getName()+'_r' )
|
||||||
views = CRL.Catalog.State.Logical
|
rsave( topCell, views|flags )
|
||||||
if self.routingGauge.isSymbolic():
|
else:
|
||||||
views = views | CRL.Catalog.State.Physical
|
|
||||||
rsave( self.cell, views|flags )
|
|
||||||
if not self.routingGauge.isSymbolic():
|
|
||||||
topCell = self.chip
|
topCell = self.chip
|
||||||
if topCell is None:
|
self.corona.setName( self.corona.getName()+'_r' )
|
||||||
topCell = self.cell
|
self.chip .setName( self.chip .getName()+'_r' )
|
||||||
|
rsave( self.corona, views|flags )
|
||||||
|
rsave( self.chip , views|flags )
|
||||||
|
if not self.routingGauge.isSymbolic():
|
||||||
|
print( ' + {} (GDSII).'.format( topCell.getName() ))
|
||||||
CRL.Gds.save( topCell )
|
CRL.Gds.save( topCell )
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -147,8 +147,3 @@ class Chip ( Block ):
|
||||||
if self.conf.routingGauge.isSymbolic():
|
if self.conf.routingGauge.isSymbolic():
|
||||||
views = views | CRL.Catalog.State.Physical
|
views = views | CRL.Catalog.State.Physical
|
||||||
super(Chip,self).save( flags )
|
super(Chip,self).save( flags )
|
||||||
self.conf.corona.setName( self.conf.corona.getName()+'_r' )
|
|
||||||
self.conf.chip .setName( self.conf.chip .getName()+'_r' )
|
|
||||||
af = CRL.AllianceFramework.get()
|
|
||||||
af.saveCell( self.conf.corona, views|flags )
|
|
||||||
af.saveCell( self.conf.chip , views|flags )
|
|
||||||
|
|
Loading…
Reference in New Issue