• 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 Design
  3. Creating circle in Virtuoso

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 127
  • Views 19730
  • 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

Creating circle in Virtuoso

zhengli
zhengli over 16 years ago
Hi, Can any one help me how to create a circle snapping to manufacturing grids defined in the technology file? I want to create a circle shape in virtuoso layout editor XL included in iCC 6.1.3. I found out that circle is actually created as a polygon. The problem is that when I export the layout into GDSII file, the ending points of the circle does not snapping to the manufacturing grids. I tried to create several real polygons, it is snapping to the grids. So I was wondering if there should be some additional setting to force circle shape snapping to grids. Please let me know if there is any solutions. Thanks a lot
  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 16 years ago

    This is to compensate for small rounding errors that can occur whenever doing floating point arithmetic.

    For example, if you do:

    floor(1.005/0.005) you end up with 200, not 201, due to the fact that the result of the division is a tiny amount less than 201.

    Adding a small "epsilon" compensates for this - in this case, it's adding 1 DBU. 

    However, since the calculation in this function is using round(), there should really be no need to do this, because it will round to the nearest, rather than round down or up. So I think it's redundant. It shouldn't really break anything (assuming the grid is not 1 DBU!), but it doesn't do anything useful.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 16 years ago

    This is to compensate for small rounding errors that can occur whenever doing floating point arithmetic.

    For example, if you do:

    floor(1.005/0.005) you end up with 200, not 201, due to the fact that the result of the division is a tiny amount less than 201.

    Adding a small "epsilon" compensates for this - in this case, it's adding 1 DBU. 

    However, since the calculation in this function is using round(), there should really be no need to do this, because it will round to the nearest, rather than round down or up. So I think it's redundant. It shouldn't really break anything (assuming the grid is not 1 DBU!), but it doesn't do anything useful.

    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