• 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. how to instance array more efficiently

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 144
  • Views 17377
  • 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

how to instance array more efficiently

weihai
weihai over 15 years ago

I create a skill code to layout array (only one dimension) like below.  Does the skill has any function code to layout the X-Y array?  Thanks a lot!

    fet_c_Inst = dbOpenCellView(pcLib "fet_center" "layout")
     fet_c = nil

    ;For loop to place nrow of instances
    for(instNumY 1 evalstring(nrow)    ;in Y direction
 
    ;Instantiate fet_center using calculated variables & user defined parameters
      nfet_c = append(nfet_c list(dbCreateParamInst(pcCV fet_c_Inst nil xLoc:yLoc "R0" instNumY paramList)))
    yLoc = yLoc + stepY
     ) ;; for

  • Cancel
  • The Consultant
    The Consultant over 15 years ago

     Hi,

     

    u can use:

     

    dbCreateParamSimpleMosaic(pcCV fet_c_Instnil t_name xLoc:yLoc "R0" x_rows x_cols x_rowSpacing x_colSpacing paramList)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • weihai
    weihai over 15 years ago

    Thanks for your reply.  The code works very well.   Another 2 questions,

    1. how to get the default value of x_rowSpacing and x_colSpacing like the virtuso does during instance an array of cells?

    2. what's the meaning of "t_name"?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    It does it by finding the width and length of the bBox of the cell being instantiated. If it's a pcell, then you'd really have to instantiate it to find that out - so probably you'd end up using

    inst=dbCreateParamInst(...)
    bBox=inst~>bBox
    width=xCoord(upperRight(bBox))-xCoord(lowerLeft(bBox))
    height=yCoord(upperRight(bBox))-yCoord(lowerLeft(bBox))
    dbDeleteObject(inst)
    dbCreateParamSimpleMosaic(...)

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • weihai
    weihai over 15 years ago

    Yes, I also did like this.  Thank you.

    Andrew Beckett said:

    It does it by finding the width and length of the bBox of the cell being instantiated. If it's a pcell, then you'd really have to instantiate it to find that out - so probably you'd end up using

    inst=dbCreateParamInst(...)
    bBox=inst~>bBox
    width=xCoord(upperRight(bBox))-xCoord(lowerLeft(bBox))
    height=yCoord(upperRight(bBox))-yCoord(lowerLeft(bBox))
    dbDeleteObject(inst)
    dbCreateParamSimpleMosaic(...)

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • GUNEET
    GUNEET over 6 years ago in reply to The Consultant
    The Consultant said:
    paramList

    what is meaning of this list what do it changes in instances

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

    First of all, the forum guidelines (the pinned post at the  top of each forum) tell you not to post on the end of old threads (this is very old, 9 years old!). Secondly, this is explained in the documentation for this function (although I just noticed there's a mistake in the documentation as the example should have list(list("l" "float" 5.0)) as the last argument.

    The idea is that you pass a list of lists, where each sublist is a list of the parameter name, type and value. These parameters normally would be the pcell parameters for the instance you are trying to instantiate as a mosaic (at least the pcell parameters you wish to set).

    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