• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. Fluid GR automation

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 16215
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Fluid GR automation

nvardhan
nvardhan over 6 years ago

Hi,

Is it possible to create a Fluid Guard Ring if we have points? i dont want to click each of the points to get it done.

Thanks & Regards

Neeraj 

 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    Hi Neeraj,

    You just need to instantiate the fluid guard ring as an instance, probably setting the shapeData and shapeType parameters. The shapeData parameter is a string parameter (usually) which may be encoded differently depending on the implementation and whether it's a path or a polygon - best thing to do would be to create some instances and look at the values of these two parameters (note, the parameters do not have to be called shapeData and shapeType, but the standard template-based FGRs that Cadence supply use these parameters).

    You can then create them using dbCreateParamInst or dbCreateParamInstByMasterName and pass the relevant parameters that way. Or create them and then update the ~>shapeData and ~>shapeType parameters as needed - better to create them right up front though probably.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • nvardhan
    nvardhan over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thanks for the tip's. I will add it as an instance do the processing of points as you mentioned.

    Thanks Again

    Neeraj 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • nvardhan
    nvardhan over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    I tried to create the GR as an instance. I am stuck with the ~>shapeData. I have list of points and i am unable to convert them to string. Do we have any specific function which can do this?

    Regards

    Neeraj 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • nvardhan
    nvardhan over 6 years ago in reply to Andrew Beckett

    Got it thanks :). Was using %B for list instead of %L in spritf. 

    Regards

    Neeraj 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • nvardhan
    nvardhan over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    I am able to successfully create the Fluid Guard Ring but i am facing one problem. To create FGR i am taking the points and modifying the points to fall in pitch of the OD and POLY. 

    For Polygon: It works like i want to. The center points of the FGR fall on the points i give.

    For Rectangle: It creates the FGR but it doesnt do on the center points rather than on the inside points.

    Right now i am editing the points by subtracting the OD/2 and PO/2 to make them fall on line. but is it correct? 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to nvardhan

    So are you setting the shapeType to "rect"? If so, the shapeData (for a standard fluid guard ring as produced by the normal template based approach we provide) is really a rectangular filled region where you've specified a string representation of the bBox. That bBox represents the diffusion area.

    Note in all cases that the coordinates in shapeData are relative to the origin of the pcell instance (so relative to the ~>xy of the instance). 

    Normally if I create a rectangular fluid guard ring, it's actually a "path" fluid guard ring where the points correspond to the centre line (again, relative to the ~>xy of the instance).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • nvardhan
    nvardhan over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    First i tried passing shapeType as "rect" and shapeData as "bBox" but this doesn't create the FGR and doesn't through any error message. So i tried shapeType as "polygon" and derived shapeData from bBox as "points", this creates the FGR but not on the points. Below is the code i have as of now, it works good for polygon shapes but not for the rectangle ones.

    procedure(nvGRCreation(cvID gr_type polyPitch odPitch shpID pSub)
    if(car(shpID~>objType) == "rect" then
    foreach(shpPt car(shpID~>bBox)
    modX=polyPitch * round(quotient(lowerLeft(shpPt) polyPitch))
    modY=odPitch * round(quotient(upperRight(shpPt) odPitch))
    newShpPts=append1(newShpPts list(modX modY))
    );foreach
    x1=lowerLeft(lowerLeft(newShpPts))
    x2=lowerLeft(upperRight(newShpPts))
    x3=lowerLeft(upperRight(newShpPts))
    x4=lowerLeft(lowerLeft(newShpPts))
    y1=upperRight(lowerLeft(newShpPts))
    y2=upperRight(upperRight(newShpPts))
    y3=upperRight(lowerLeft(newShpPts))
    y4=upperRight(upperRight(newShpPts))
    pathShpPts=list(list(x1 y1) list(x3 y3) list(x2 y2) list(x4 y4))
    else
    foreach(shpPt car(shpID~>points)
    modX=polyPitch * round(quotient(lowerLeft(shpPt) polyPitch))
    modY=odPitch * round(quotient(upperRight(shpPt) odPitch))
    newShpPts=append1(newShpPts list(modX modY))
    pathShpPts=newShpPts
    );foreach
    );if

    dbCreateParamInst(cvID gr_type nil list(0 0) "R0" 1
    list(list("width" "string" "0.144")
    list("ignore" "boolean" "TRUE")
    list("shapeData" "string" sprintf(nil "%L" newShpPts))
    list("shapeType" "string" car(shpID~>objType))
    list("odFin" "string" "8")
    list("odFinger" "string" "3")
    list("formalVersion" "int" 8)
    list("innerDP" "string" "OFF"))
    t
    )

    );procedure

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to nvardhan

    I suspect you probably should contact customer support for this as we probably need to see your fluid guard rings to be able to work out what the issue is. 

    Your code uses some uninitialised variables, such as newShpPts, so it's not that clear to me what is going on.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information