• 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. What setting will impact atof() output

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 16084
  • 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

What setting will impact atof() output

wenckey
wenckey over 6 years ago

I run atof("9.12") in my CIW, it will return 9.11999999999999

And I run virtuoso -nocdsinit, it will return 9.12

What will impact that?

  • Cancel
Parents
  • skillUser
    skillUser over 6 years ago

    Hi,

    This setting controls the display precision:

    sstatus(fullPrecision t)

    you can test the setting using status(fullPrecision).  The documentation states this:

     If t, unformatted print functions (print, println, printlev) print floating point numbers in full precision (usually 16 digits); otherwise, the default is about 7 digits of precision.

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • wenckey
    wenckey over 6 years ago in reply to skillUser

    Thanks a lot Lawrence!!

    What if I want it to return "9.12"?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 6 years ago in reply to wenckey

    sstatus(fullPrecision nil)
    atof("9.12")
    => 9.12

    You didn't state what fullPrecision is currently set to, but I expect that it was set to 't', so setting it to 'nil' should give you the above result.

    Regards,

    Lawrence.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • wenckey
    wenckey over 6 years ago in reply to skillUser

    Works well.

    Thanks a lot!~

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • psill000
    psill000 over 6 years ago in reply to skillUser

    I was working on a script that compared coordinates and the print out showed the coords were the same but, if i did a minus of the two coords I would not get zero. I would get 1e-18.

    Does the sstatus(fullPrecision nil) fix this problem?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to psill000

    No, it won't. That simply means that the default print representation when numbers are printed in the CIW (e.g using println) will show 16 digits rather than 7. The storage of the numbers is unaffected.

    If the numbers both come from the database then they would be exactly the same (the same rounding error for both) - it's only if they've been computed differently. You may need to subtract them and check if the difference is less than (say) a tenth of the database unit (so if DBUperUU is 1000, your database resolution is 0.001 um). So do abs(x1-x2)<0.0001 rather than using ==.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 6 years ago in reply to psill000

    I'm not sure, but as Andrew has repeatedly stated on this forum, regardless of the language (SKILL, Python, C etc.) one should not perform comparisons of floating point numbers the way that you might for strings or integers.

    Try using the nearlyEqual() function to check for equality within a tolerance.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • psill000
    psill000 over 6 years ago in reply to skillUser

    Thanks Andrew and skillUser for the info

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • psill000
    psill000 over 6 years ago in reply to skillUser

    Thanks Andrew and skillUser for the info

    • 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