Commit 7961aab0 authored by Jean-Paul Chaput's avatar Jean-Paul Chaput
Browse files

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.
parent 92a3e32a
...@@ -25,7 +25,7 @@ from Hurricane import Breakpoint, DbU, Box, Transformation, Point, \ ...@@ -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 ): ...@@ -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 ): ...@@ -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 )
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment