• 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 access pcell instance co-ordinates from within Pcell...

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 143
  • Views 18127
  • 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 access pcell instance co-ordinates from within Pcell code.

Jameel
Jameel over 14 years ago
Hi, Is there a way to find out the co-ordinates of the pcell instance from within the pcell code? Say for example, I want to create a pcell that prints a label showing the co-ordinates of the where the pcell is placed. within the code of the pcell I can create the label at the origin but i need to know the co-ordinates of the pcell instance in order to print the label. One way of doing this would be to pass the co-ordinate of the pcell instance as parameters, but am not sure if this is the correct way to do it. Thanks, -Jameel
  • Cancel
Parents
  • Jameel
    Jameel over 14 years ago

    Thanks this works great!

     

    On a different note, I am having trouble streaming out a datbase containing an instance of a pcell. I get the following error when I try to stream out. The pcell works great in layout view.

    \o *WARNING* Pcell evaluation for NQ78Z/encapRodPcell/layout has the following error(s):
    \o *WARNING* ("eval" 0 t nil ("*Error* eval: undefined function" CCScreateBoxAndLabels))
    \o *WARNING* Error kept in "errorDesc" property of the label "pcellEvalFailed" on layer/purpose "marker/error" in the submaster.

     

    Here is the pcell code I am working with.....

    procedure(CCScreateBoxAndLabels(cv w l "dnn")
      let( (rectRodObj)
      ;; create a rectangle on metal1 with x & y dimensions set by w & l
      rectRodObj = rodCreateRect(
          ?name     "myRect"
          ?cvId     cv
          ?layer    list("PI" "drawing")
          ?width    w
          ?length   l
          ?origin   list(0 0)
      )
      ); let
    ); procedure CCScreateBoxAndLabels

    ;; Create the PCell, the "drawing routine" is encapsulated in the
    ;; CCScreateBoxAndLabels function which does all the work

    pcDefinePCell(
      list(ddGetObj("NQ78Z") "encapRodPcell" "layout")
      (
        (w 1.0)
        (l 0.6)
      )
      let( ((cv pcCellView))
        CCScreateBoxAndLabels(cv w l)
      ); let
    )

    ;; Create the CDF for the 'l' and 'w' parameters, the width (w)
    ;; parameter is either hidden or displayed but not editable.
    let( (cellId cdfId)
      when(cellId = ddGetObj("NQ78Z" "encapRodPcell")
        ;; if the cell CDF already exists, delete it
        when( cdfId = cdfGetBaseCellCDF(cellId)
          cdfDeleteCDF(cdfId)
        )
        ;; create the base cell CDF
        cdfId = cdfCreateBaseCellCDF(cellId)
        ;; create the parameters
        cdfCreateParam( cdfId
          ?name     "l"
          ?prompt   "Length"
          ?defValue 0.6
          ?type     "float"
          ?display  "t"
        )
        cdfCreateParam( cdfId
          ?name     "w"
          ?prompt   "Width"
          ?defValue 1.0
          ?type     "float"
          ;; comment out the next line and uncomment the lines below
          ;; it if the parameter is to be visible but not editable
          ?display  "nil"
    ;      ?display "t"
    ;      ?editable        "nil"
        )
        cdfSaveCDF(cdfId)
      ); when
    ); let for CDF creation 

     

     

     

     

    I tried may other simple pcell examples but keep getting the perror at stream out. I am loading the above pcell code when icfb starts up through .cdsinit.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Jameel
    Jameel over 14 years ago

    Thanks this works great!

     

    On a different note, I am having trouble streaming out a datbase containing an instance of a pcell. I get the following error when I try to stream out. The pcell works great in layout view.

    \o *WARNING* Pcell evaluation for NQ78Z/encapRodPcell/layout has the following error(s):
    \o *WARNING* ("eval" 0 t nil ("*Error* eval: undefined function" CCScreateBoxAndLabels))
    \o *WARNING* Error kept in "errorDesc" property of the label "pcellEvalFailed" on layer/purpose "marker/error" in the submaster.

     

    Here is the pcell code I am working with.....

    procedure(CCScreateBoxAndLabels(cv w l "dnn")
      let( (rectRodObj)
      ;; create a rectangle on metal1 with x & y dimensions set by w & l
      rectRodObj = rodCreateRect(
          ?name     "myRect"
          ?cvId     cv
          ?layer    list("PI" "drawing")
          ?width    w
          ?length   l
          ?origin   list(0 0)
      )
      ); let
    ); procedure CCScreateBoxAndLabels

    ;; Create the PCell, the "drawing routine" is encapsulated in the
    ;; CCScreateBoxAndLabels function which does all the work

    pcDefinePCell(
      list(ddGetObj("NQ78Z") "encapRodPcell" "layout")
      (
        (w 1.0)
        (l 0.6)
      )
      let( ((cv pcCellView))
        CCScreateBoxAndLabels(cv w l)
      ); let
    )

    ;; Create the CDF for the 'l' and 'w' parameters, the width (w)
    ;; parameter is either hidden or displayed but not editable.
    let( (cellId cdfId)
      when(cellId = ddGetObj("NQ78Z" "encapRodPcell")
        ;; if the cell CDF already exists, delete it
        when( cdfId = cdfGetBaseCellCDF(cellId)
          cdfDeleteCDF(cdfId)
        )
        ;; create the base cell CDF
        cdfId = cdfCreateBaseCellCDF(cellId)
        ;; create the parameters
        cdfCreateParam( cdfId
          ?name     "l"
          ?prompt   "Length"
          ?defValue 0.6
          ?type     "float"
          ?display  "t"
        )
        cdfCreateParam( cdfId
          ?name     "w"
          ?prompt   "Width"
          ?defValue 1.0
          ?type     "float"
          ;; comment out the next line and uncomment the lines below
          ;; it if the parameter is to be visible but not editable
          ?display  "nil"
    ;      ?display "t"
    ;      ?editable        "nil"
        )
        cdfSaveCDF(cdfId)
      ); when
    ); let for CDF creation 

     

     

     

     

    I tried may other simple pcell examples but keep getting the perror at stream out. I am loading the above pcell code when icfb starts up through .cdsinit.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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