• 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. Multipart Path (MPP) Bends with Separated Sub-Rectangle...

Stats

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

Multipart Path (MPP) Bends with Separated Sub-Rectangles

resngc
resngc over 10 years ago

Hi!

I am using the multipartPathTemplates SKILL function to construct a MPP consisting of sub-rectangles that are created along a sub-path separated some distance from the master (central) path. The issue is that when an instance of the MPP is created and bent at 90 degrees, there is a gap in sub-rectangle placement around the bend that is larger the further the sub-rectangles are spaced from the master path; essentially no sub-rectangles are populated in the corner region where the bend occurs. This is, in part, because the n_beginSegmentOffset argument defines the relative spacing between the sub-rectangle and the master path, following the new path segment after each bend, and is therefore being supplied with a value large enough to keep all the sub-rectangles spaced evenly apart from one another and aligned properly with other sub-rectangle paths in the MPP structure. Does there exist a way to define sub-rectangle positioning relative to its own path, or sub-path, as opposed to the master path? Is there any known approach to filling in the gaps around bends such that the sub-rectangles maintain their spacing and alignment about these separated paths? Perhaps some lower level SKILL or ROD functions are necessary to achieve this? Again, this issue is present only when the sub-rectangles are spaced apart from (i.e. not coincident with) the master path. If the problem description is unclear please let me know and I will provide a crude illustration highlighting the concept.

Relevant documentation (Cadence Online Support --> Product Pages): Virtuoso Technology Data ASCII Files Reference Product Version 6.1.6 June 2015; see section on multipartPathTemplates

 

Any help is greatly appreciated!

  • Cancel
  • theopaone
    theopaone over 10 years ago
    Please add a illustration. Thanks.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • resngc
    resngc over 10 years ago

    Here is an illustration of the issue:

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 10 years ago

    Hi Ryan,

    I think that this is a bug you should probably file it with Cadence - I encountered something similar with subrects when I was trying to define a double-guardring like structure.  One workaround approach would be to define the subpath as a separate MPP and use an enterFunction to gather points and draw the two or more MPPs using the points gathered.  You'd probably have to do a bit of mathematics with the points to give the appropriate offsets.  You could also calculate all of the shapes yourself, which would be a ton of work ;-)

    Hopefully this might help a little?

    Regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • resngc
    resngc over 10 years ago

    Lawrence,

    Thank you for supplying this workaround concept. As a fairly new SKILL user, I am trying to understand how to apply this.

    There are multiple sub-paths and sub-rectangles which need to be populated at various offsets from the center path. Does this mean I should construct a separate MPP for each sub-path, where in these MPP definitions the sub-path actually becomes the center path and the sub-rectangles fall along this center path, and have each drawn separately? As long as multiple MPPs can be invoked simultaneously, as if to emulate a single MPP through clicking and placing in the layout, this could work.

    I am not yet familiar with Enter Functions, but I think I may have found a few in a SKILL reference booklet; unfortunately the documentation is very limited for each (e.g. enterPoints, which prompts for entry of a list of points; or enterPath, which enters a path in the current window; or enterLine, which enters a multi-segment line in the current window). Which functions in particular would you recommend using to gather points and subsequently draw multiple MPPs? Could you provide any sort of example that could achieve this concept for a single arbitrarily offset sub-path with sub-rectangles from which I could adjust values as needed to produce the desired offsets?

     

    Regards,

    Ryan

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 10 years ago

    Hi Ryan,

    Take a look at this solution (which I wrote), it shows how to use enterPath() to gather points and call a function that uses the entered points (CCSslotMetalCB in that example) - this is where you would have one or more calls to rodCreatePath() to create the master and sub paths.

    I think this is close to what you need, I hope it helps!

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 10 years ago
    One more point - to make it easier to write the code, develop the MPP graphically in the Virtuoso Layout Suite window and then save the "template" to a file - this structure is almost identical to what you pass to rodCreatePath() - then you just change the hardcoded values to the parameters that you want to control (like 'width' in the slotted metal example). Regards, Lawrence.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    It would be helpful if you provided your problematic code to understand the problem better.

    Following on from Lawrence's suggestion, you could also use which provides a way to directly draw an MPP using a template using SKILL.

    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