• 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
    Dan,

    The other approach I was going to suggest would be to create a cellView containing the cut shape, and then place a mosaic of these. However, that wouldn't then work with layout XL, I believe, and it certainly would not be choppable.

    I suspect that such a huge number of shapes could be a problem for layout XL anyway - because the extractor will need to deal wth them.

    Creating a pcell might be another approach, but making it choppable would be tricky (without a bunch of utility code to provide those operations). You could make it stretchable by adding stretch handles in the pcell, maybe.

    Regards,


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

    The other approach I was going to suggest would be to create a cellView containing the cut shape, and then place a mosaic of these. However, that wouldn't then work with layout XL, I believe, and it certainly would not be choppable.

    I suspect that such a huge number of shapes could be a problem for layout XL anyway - because the extractor will need to deal wth them.

    Creating a pcell might be another approach, but making it choppable would be tricky (without a bunch of utility code to provide those operations). You could make it stretchable by adding stretch handles in the pcell, maybe.

    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