From 94a52bd09c89a984c6567d65f93f1be5c8c16a0c Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Tue, 11 Dec 2012 10:27:13 +0000 Subject: [PATCH] Reduce VIA size of the clock routing grid in M4/M5 to not interfere with standard routing. --- cumulus/src/placeandroute.py | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/cumulus/src/placeandroute.py b/cumulus/src/placeandroute.py index 722cde3d..cdd58d4b 100644 --- a/cumulus/src/placeandroute.py +++ b/cumulus/src/placeandroute.py @@ -2187,13 +2187,10 @@ def createGrid ( my_tuple ) : raise ErrorMessage(2,"RouteCK : bad pad placement.") else : - err = "RouteCk: The pads ("+ str(instance.getName()) +") must be in direct regard of the clock grid\n" - err += "coordinates are : (x1,y1) = (%s,%s) and (x2,y2) = (%s,%s)." \ - % ( DbU.getValueString(gridBoundingBox.getXMin()) - , DbU.getValueString(gridBoundingBox.getYMin()) - , DbU.getValueString(gridBoundingBox.getXMax()) - , DbU.getValueString(gridBoundingBox.getYMax()) ) - raise ErrorMessage(2,err) + message = [ "pyRouteCk: The pads <%s> must be in direct regard of the clock grid" % str(instance.getName()) + , "Clock grid is %s" % str(gridBoundingBox) + ] + raise ErrorMessage(2,message) compContact = Contact ( net, via5, x, y, DbU_lambda(11), DbU_lambda(11) ) @@ -2257,35 +2254,35 @@ def createGrid ( my_tuple ) : xDistance = abs ( xTarget - xContact ) yDistance = abs ( yTarget - yContact ) - Contact(net, via2, xContact, yContact, DbU_lambda(2), DbU_lambda(2) ) - Contact(net, via3, xContact, yContact, DbU_lambda(2), DbU_lambda(2) ) - Contact(net, via4, xContact, yContact, DbU_lambda(2), DbU_lambda(2) ) + Contact(net, via2, xContact, yContact, DbU_lambda(1), DbU_lambda(1) ) + Contact(net, via3, xContact, yContact, DbU_lambda(1), DbU_lambda(1) ) + Contact(net, via4, xContact, yContact, DbU_lambda(1), DbU_lambda(1) ) if xDistance != 0 or yDistance != 0 : if ( xDistance <= yDistance + DbU_lambda(10) ): # test pour faire un horizontal if xDistance != 0 : if abs(xDistance) <= DbU_lambda(3) : - gridContact = Contact ( net, metal5, xTarget, yContact, DbU_lambda(2), DbU_lambda(2) ) + gridContact = Contact ( net, metal5, xTarget, yContact, DbU_lambda(1), DbU_lambda(1) ) layer = metal5 else : - Contact ( net, via5, xContact, yContact, DbU_lambda(2), DbU_lambda(2) ) - gridContact = Contact ( net, via5, xTarget, yContact, DbU_lambda(2), DbU_lambda(2) ) + Contact ( net, via5, xContact, yContact, DbU_lambda(1), DbU_lambda(1) ) + gridContact = Contact ( net, via5, xTarget, yContact, DbU_lambda(1), DbU_lambda(1) ) layer = metal6 Horizontal( gridContact, plugContact, layer, gridContact.getY(), DbU_lambda(2) ) else : - gridContact = Contact ( net, via5, xTarget, yContact, DbU_lambda(2), DbU_lambda(2) ) + gridContact = Contact ( net, via5, xTarget, yContact, DbU_lambda(1), DbU_lambda(1) ) else: if yDistance != 0 : if abs(yDistance) <= DbU_lambda(3) : layer = metal6 - gridContact = Contact ( net, metal6, xContact, yTarget, DbU_lambda(2), DbU_lambda(2) ) - Contact ( net, via5, xContact, yContact, DbU_lambda(2), DbU_lambda(2) ) + gridContact = Contact ( net, metal6, xContact, yTarget, DbU_lambda(1), DbU_lambda(1) ) + Contact ( net, via5, xContact, yContact, DbU_lambda(1), DbU_lambda(1) ) else : - gridContact = Contact ( net, via5, xContact, yTarget, DbU_lambda(2), DbU_lambda(2) ) + gridContact = Contact ( net, via5, xContact, yTarget, DbU_lambda(1), DbU_lambda(1) ) layer = metal5 Vertical ( gridContact, plugContact, layer, gridContact.getX(), DbU_lambda(2) ) else : - gridContact = Contact ( net, via5, xContact, yTarget, DbU_lambda(2), DbU_lambda(2) ) + gridContact = Contact ( net, via5, xContact, yTarget, DbU_lambda(1), DbU_lambda(1) ) del _Xmin del _Ymin