Home
  • Products
  • Solutions
  • Support
  • Company

This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  • Products
  • Solutions
  • Support
  • Company
Community Mixed-Signal Design xmelab: *E,CUVHNF error using Xcelium 19.09-s008

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 64
  • Views 2707
  • 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

xmelab: *E,CUVHNF error using Xcelium 19.09-s008

markris
markris over 1 year ago

Hello everyone,

I have the following error starting a simulation with Xcelium 19.09-s008:

xmelab: *E,CUVHNF (netlist.vams,3630|51): Hierarchical name component lookup failed at 'round'.

Looking at the netlist, exactly at the line 3630, I get that a device parameter is using the "round" function that is correctly solved using Spectre stand alone instead:

nmos_test #(.mult(round(20/2-0.5)),

I guess the issue is related to the fact that the netlist in AMS designer is based on VAMS language it supports only "floor" and not "round" as a rounding function (but the rounding behavior will change obviously). 

However, is there a way cia e a switch in xrunArgs to solve this issue and get the function solved in Xcelium too without changing the design?

Thanks a lot in advance!

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 1 year ago

    Hi Marco,

    In fact I wasn't aware that Spectre supported round - I then found that this was added via CCR 1668374 in an MMSIM15.1/SPECTRE16.1 hotfix a number of years back (although I don't think it's documented - it probably should be). I haven't found any reports of the specific issue with AMS Designer (I can reproduce the issue). As you say, round() is not in the Verilog-AMS standard.

    What's odd here is that the subtraction of 0.5 means that round(N-0.5) is the same as doing floor(N) (other than with negative numbers), so maybe the solution is best to change the expression to use floor()?

    Otherwise I think it would need an enhancement for AMS to support this non-standard function. I did consider defining an analog function to implement round, but you can't use an analog function in this context.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 1 year ago

    Hi Marco,

    In fact I wasn't aware that Spectre supported round - I then found that this was added via CCR 1668374 in an MMSIM15.1/SPECTRE16.1 hotfix a number of years back (although I don't think it's documented - it probably should be). I haven't found any reports of the specific issue with AMS Designer (I can reproduce the issue). As you say, round() is not in the Verilog-AMS standard.

    What's odd here is that the subtraction of 0.5 means that round(N-0.5) is the same as doing floor(N) (other than with negative numbers), so maybe the solution is best to change the expression to use floor()?

    Otherwise I think it would need an enhancement for AMS to support this non-standard function. I did consider defining an analog function to implement round, but you can't use an analog function in this context.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • markris
    markris over 1 year ago in reply to Andrew Beckett

    Hi Andrew,

    Yes I can use floor, but the rounding is a bit different because if I round 1.6, for example, with round I would get 2 and with floor I would get 1 (accordingly to round and floor Spectre reference manual definition).

    But ok, at least you confirm my finding. For now, I would say to not improve anything, since it is simply a known VAMS syntax limitation.

    Thanks for confirming it,

    Marco.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to markris

    Marco,

    I know that round and floor are different. My point was that your example was subtracting 0.5 before doing round; that’s equivalent of doing floor on the expression without the subtraction - ie round(N-0.5) is the same as floor(N). This may or may not help!

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • markris
    markris over 1 year ago in reply to Andrew Beckett

    Yeah, got it. Ok, I will keep in mind. Thanks for your quick reply as always. Wish you a nice day!

    • 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