• 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. Question/Help with rodCreatePath (have not worked with Skill...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 2203
  • 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

Question/Help with rodCreatePath (have not worked with Skill in a long time)

dpilhorn
dpilhorn over 14 years ago

 I have skill code that I wrote a long time ago to create nwell and substrate paths/rings using rodCreatePath().  I have not coded much skill since then so I am very rusty.  The code is not complex and works great for paths that are not too wide.  When someone uses it to create, for example, a 10um substrate ring to help isolate a large noisy fet, there are tens if not hundreds of thousands of contact shapes created with the ?subRect section of rodCreatePath().  Everything is created correctly, but all the contacts with their associated rod overhead causes everything in the layout to come to a screaching halt when being re-drawn or if someone makes the mistake of trying to stretch the ring.

 That is the problem.  I have been searching for answers, but I can't seem to find a way to create the contacts w/o the rod overhead for the wide paths.  Is there a way to remove the ?subRect and add db created rectangles to the path and still have them be choppable,  or am I out of luck?

Here is my code:

  procedure( pathDone( w done pts )
   if( done then
     cv=geGetEditCellView()

;; code to determine number of contacts wide goes here

        numCont= fix(eval(pForm->sw->value)/.44)
        startOffSet = 0.3
;;printf("test number : %n \n" numCont)
    subRectList = nil
;;; end numCont code
;;; create list of list for subRect property

if( (numCont <= 1) then
subRectList = cons(list(
       ?layer "CA"
       ?length 0.2
       ?width 0.2
       ?space 0.24
       ?gap "minimum"
       ?beginOffset -0.3
       ?endOffset -0.3
       ?choppable t
          ) subRectList) ;end of list
else
 for(i 0 numCont-1
subRectList = cons(list(
       ?layer "CA"
       ?length 0.2
       ?width 0.2
       ?space 0.24
       ?gap "minimum"
       ?beginOffset -0.3
       ?sep -(0.3 + 0.44*i)
       ?justification "left"
       ?endOffset -0.3
       ?choppable t
          ) subRectList);end of list
);end of for
);end of if

;;;;;;;;; end list of list

     epath = rodCreatePath(
       ?cvId cv
       ?layer "RX"
       ?width eval(pForm->sw->value)
       ?pts pts
       ?choppable nil
       ?beginExt 0
       ?endExt 0
       ?encSubPath list(
    list(
       ?layer "M1"
       ?beginOffset 0.0
       ?endOffset 0.0
           ?enclosure 0.0
       ?choppable t
    )
    list(
       ?layer "BP"
           ?enclosure 0.0
        ?beginOffset 0.0
       ?endOffset 0.0
       ?choppable nil
    ));encSubPath

       ?subRect subRectList

    );rodCreatePath  

   else
     println("Path entry completed.")
   )
 ); procedure pathDone

 hiCreateOptionsForm(
    'pForm
    "Enclosed Signal Pair Options"
    list(hiCreateFloatField(
        ?name 'sw
        ?prompt "Signal line width"
        ?defValue 0.4
         );CreateFloatField
    ); list
 )

 enterPath( ?prompts
    list( "Enter the first point."
    "Enter the next point." )
    ?doneProc "pathDone"
    ?form eval(pForm)
    ?pathWidth eval(pForm->sw->value)
    ?pathStyle "Truncate"
 );enterPath

 

Thank you in advance for any help you can offer.

Dan

 

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 14 years ago
    Hi Dan,

    I just tried doing this using the new Fluid Guard ring capability in IC615 and the performance seems pretty reasonable. I created a guard path which is 10um wide and 2mm or so long. It takes a few seconds to build, but because fluid guard rings are pcells, they do not end up with all the shapes (about 280000 in my case) in the current cellView. So that really helps.

    Fluid guard rings are very manipulatable - choppable, stretchable, and can be used as paths, rectangles, rings and so on - and handle multiple rows of vias. They're easy to set up too.

    What version of the software are you using?

    Regards,

    Andrew
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 14 years ago
    Hi Dan,

    I just tried doing this using the new Fluid Guard ring capability in IC615 and the performance seems pretty reasonable. I created a guard path which is 10um wide and 2mm or so long. It takes a few seconds to build, but because fluid guard rings are pcells, they do not end up with all the shapes (about 280000 in my case) in the current cellView. So that really helps.

    Fluid guard rings are very manipulatable - choppable, stretchable, and can be used as paths, rectangles, rings and so on - and handle multiple rows of vias. They're easy to set up too.

    What version of the software are you using?

    Regards,

    Andrew
    • 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