Adjust blockage area over SRAM.

* Change: In cumulus/plugins.block.macro, the METAL2 blockage was
    allowing horizontal tracks to be used but the METAL3 blockage
    was conflicting with the end of the perpandiculars.
      The router was not able to manage that, so we slightly expand
    the METAL2 blockage to encompass the unreachable track.
      For the same reason, add a METAL4 blockage over METAL2.
This commit is contained in:
Jean-Paul Chaput 2021-06-09 15:11:43 +02:00
parent 92a3e32aaf
commit 7961aab0e1
1 changed files with 8 additions and 2 deletions

View File

@ -25,7 +25,7 @@ from Hurricane import Breakpoint, DbU, Box, Transformation, Point, \
Cell, Instance, Rectilinear Cell, Instance, Rectilinear
import CRL import CRL
from CRL import RoutingLayerGauge from CRL import RoutingLayerGauge
from helpers import trace, dots from helpers import trace, dots, l, u, n
from helpers.io import ErrorMessage, WarningMessage, catch from helpers.io import ErrorMessage, WarningMessage, catch
from helpers.overlay import UpdateSession from helpers.overlay import UpdateSession
from plugins.alpha.block.bigvia import BigVia from plugins.alpha.block.bigvia import BigVia
@ -158,7 +158,7 @@ class Macro ( object ):
if isinstance(component,Rectilinear) and component.getLayer() == blockageMetal2: if isinstance(component,Rectilinear) and component.getLayer() == blockageMetal2:
bb = component.getBoundingBox() bb = component.getBoundingBox()
bb.inflate( minSpacingMetal2 + xMinAdjust bb.inflate( minSpacingMetal2 + xMinAdjust
, minSpacingMetal2 , minSpacingMetal2 + u(0.19)
, minSpacingMetal2 , minSpacingMetal2
, minSpacingMetal2 ) , minSpacingMetal2 )
Horizontal.create( component.getNet() Horizontal.create( component.getNet()
@ -167,6 +167,12 @@ class Macro ( object ):
, bb.getHeight() , bb.getHeight()
, bb.getXMin() , bb.getXMin()
, bb.getXMax() ) , bb.getXMax() )
Horizontal.create( component.getNet()
, blockageMetal4
, bb.getYCenter()
, bb.getHeight()
, bb.getXMin()
, bb.getXMax() )
elif isinstance(component,Rectilinear) and component.getLayer() == blockageMetal3: elif isinstance(component,Rectilinear) and component.getLayer() == blockageMetal3:
bb = component.getBoundingBox() bb = component.getBoundingBox()
bb.inflate( 2*minSpacingMetal3, minSpacingMetal3/2 ) bb.inflate( 2*minSpacingMetal3, minSpacingMetal3/2 )