Already placed blocks must be flagged as FIXED instead of PLACED.
* Bug: In cumulus/plugins/block/block.py, when a block is found to have a layout, that is, is already placed & routed, it's instances must be flagged as FIXED instead or PLACED so Etesian will really sees them as unmovable and don't account them to be placed.
This commit is contained in:
parent
63854d80c1
commit
79c5f4db58
|
@ -311,8 +311,13 @@ class Block ( object ):
|
||||||
, IoPin.NORTH : Side( self, IoPin.NORTH )
|
, IoPin.NORTH : Side( self, IoPin.NORTH )
|
||||||
}
|
}
|
||||||
if not self.state.cell.getAbutmentBox().isEmpty():
|
if not self.state.cell.getAbutmentBox().isEmpty():
|
||||||
|
print( ' o Block "{}" is already done, reusing layout.' \
|
||||||
|
.format(self.state.cell.getName()) )
|
||||||
self.state.cell.setTerminalNetlist( True )
|
self.state.cell.setTerminalNetlist( True )
|
||||||
self.state.isBuilt = True
|
self.state.isBuilt = True
|
||||||
|
else:
|
||||||
|
print( ' o Block "{}" will be generated.' \
|
||||||
|
.format(self.state.cell.getName()) )
|
||||||
|
|
||||||
def setUnexpandPins ( self, sides ):
|
def setUnexpandPins ( self, sides ):
|
||||||
"""
|
"""
|
||||||
|
@ -336,8 +341,9 @@ class Block ( object ):
|
||||||
various configuration parameters (aspect ratio, space margin, fixed
|
various configuration parameters (aspect ratio, space margin, fixed
|
||||||
height or width, ...).
|
height or width, ...).
|
||||||
"""
|
"""
|
||||||
if not self.state.cell.getAbutmentBox().isEmpty(): return
|
if not self.state.cell.getAbutmentBox().isEmpty():
|
||||||
if len(self.blockInstances):
|
pass
|
||||||
|
elif len(self.blockInstances):
|
||||||
with UpdateSession():
|
with UpdateSession():
|
||||||
ab = Box( 0, 0, self.state.fixedWidth, self.state.fixedHeight )
|
ab = Box( 0, 0, self.state.fixedWidth, self.state.fixedHeight )
|
||||||
self.state.cell.setAbutmentBox( ab )
|
self.state.cell.setAbutmentBox( ab )
|
||||||
|
@ -481,9 +487,12 @@ class Block ( object ):
|
||||||
so they will appear as ``NetListTerminal`` and we can place them
|
so they will appear as ``NetListTerminal`` and we can place them
|
||||||
in their parent cell.
|
in their parent cell.
|
||||||
"""
|
"""
|
||||||
|
print( ' o Builing block "{}".'.format(self.state.cell.getName()) )
|
||||||
for blockInstance in self.blockInstances:
|
for blockInstance in self.blockInstances:
|
||||||
blockInstance.block.editor = self.state.editor
|
blockInstance.block.editor = self.state.editor
|
||||||
if not blockInstance.block.state.isBuilt:
|
if not blockInstance.block.state.isBuilt:
|
||||||
|
print( ' - Build sub-block "{}".' \
|
||||||
|
.format(blockInstance.block.state.cell.getName()) )
|
||||||
blockInstance.block.build()
|
blockInstance.block.build()
|
||||||
editor = self.state.editor
|
editor = self.state.editor
|
||||||
if editor: editor.setCell( self.state.cell )
|
if editor: editor.setCell( self.state.cell )
|
||||||
|
@ -560,6 +569,6 @@ class BlockInstance ( object ):
|
||||||
|
|
||||||
def place ( self ):
|
def place ( self ):
|
||||||
self.instance.setTransformation( self.transf )
|
self.instance.setTransformation( self.transf )
|
||||||
self.instance.setPlacementStatus( Instance.PlacementStatus.PLACED )
|
self.instance.setPlacementStatus( Instance.PlacementStatus.FIXED )
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue