• 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. undefined function uiLoadTrigger in si.log

Stats

  • Locked Locked
  • Replies 19
  • Subscribers 125
  • Views 20060
  • 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

undefined function uiLoadTrigger in si.log

zssfred
zssfred over 7 years ago

I can use uiLoadTrigger in CIW but si.log will complain it is undefined when do auCdl. 

After debugging, this error should come from libInit.il under a PDK library.

Any ideas?

Thanks.

Fred

  • Cancel
  • zssfred
    zssfred over 7 years ago in reply to Andrew Beckett

    Andrew,

    Andrew Beckett said:
    I'm not sure what  you mean by "stretchable handler"

    "stretchable handler" means Options->display->"Stretch Handles".

    Is it a ui trigger?

    Thanks.

    Fred

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to zssfred

    No, that's

    layout displayStretchHandles boolean t

    As I said, the issue is caused by any variable in the .cdsenv file which has "ui" as the first word on the line. Presumably you have some of these?

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • zssfred
    zssfred over 7 years ago in reply to Andrew Beckett

    If you choose to save to ~/.cdsenv in "Display Options", you will see lots of  "ui".

    Thanks.

    Fred

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to zssfred
    zssfred said:
    If you choose to save to ~/.cdsenv in "Display Options", you will see lots of  "ui".

    That doesn't mean they're anything to do with the layout editor though. It saves all loaded variable partitions, and of course the ui has already been loaded at virtuoso startup. I'd remove them from the file if they're not needed - in general, I'd say that a PDK should limit the user preferences it enforces to just those strictly necessary, as otherwise the user's personal preferences get overridden by those from the PDK. So some care should be taken on the choice of which variables to set in the PDK.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • zssfred
    zssfred over 7 years ago in reply to Andrew Beckett

    Instead we want to unify the user preferences for harmony interoperability and communication and better efficiency needed by whole team’s productivity. That is another philosophy though it inccurs habbit challenge in the very beginning. Agree to remove these “ui” entries if they cause errors. But where can I find the documents about them?  At least, I can’t find any about uiLoadTrigger...

    Thanks.

    Fred

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to zssfred

    Hi Fred,

    More details on the "ui" env vars can be found easily in the documentation. For a start, most of them arise from the Options->User Preferences in the CIW - so hit Help on that form and it takes you to the relevant document (chapter 6 Customizing Your Design Environment in current versions of the Virtuoso Design Environment User Guide manual). If  you search through that chapter for .cdsenv there are various links to specifying parts of the form using cdsenv which take you to sections of Chapter 7, Specifying Environment Settings - this covers the ui variables in detail.

    You will not find anything on uiLoadTrigger. This is a private (internal) function which is triggered when the cdsenv is loaded containing "ui" entries and takes care of synchronising the UI-related forms (such as the User Preferences and Log Filter forms). You would never call it yourself - it only shows up because of this bug where it is attempting to call the function in an environment where it isn't defined.

    Whilst I completely understand about unifying user preferences, I don't think doing this via the libInit.il is a good idea. Some of the user preferences are indeed user preferences and don't necessarily impact cross-usage efficiency. By setting them in the libInit.il, you rob the user of the ability to customise them personally. What I would do is set the things that truly are technology-specific there (e.g. default snap spacings, what the default multi-part path template is, that kind of thing), but other unified preferences I would set via a central .cdsenv file which is loaded at startup (probably via the CSF - Cadence Search File mechanism). That allows users to inherit the default settings and most likely use them, but still gives the ability to override them if they want to. The disadvantage of doing this in the libInit.il is that the file is loaded the first time you access the technology library - which will override anything you have previously set in the environment.

    Of course, this depends on how much a company wants to force how individual users work. My experience is that users vary considerably and forcing everyone to adopt the same settings for absolutely everything tends to lead to frustration. I've seen this in PDKs in the past where completely different bindkeys were loaded - and the PDK was being provided outside the company that created it; we were always being asked how to stop those bindkeys from being redefined every time they used that PDK.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • zssfred
    zssfred over 7 years ago in reply to Andrew Beckett
    Andrew Beckett said:
    More details on the "ui" env vars can be found easily in the documentation. For a start, most of them arise from the Options->User Preferences in the CIW - so hit Help on that form and it takes you to the relevant document (chapter 6 Customizing Your Design Environment in current versions of the Virtuoso Design Environment User Guide manual). If  you search through that chapter for .cdsenv there are various links to specifying parts of the form using cdsenv which take you to sections of Chapter 7, Specifying Environment Settings - this covers the ui variables in detail.

    The issue here is there are two "Options" menus -- one in CIW and the other in Layout window. It looks like the settings in "Options" menu in layout window won't yield lines beginning with "ui" if you choose to save them to a file. But now it will save all the settings of whole virtuoso environment including the ones from the "Option" menu in CIW. The ideal design should be just saving all what you are seeing not the whole universe. And users can combine or concatenate different parts by themselves.

    Andrew Beckett said:
    You will not find anything on uiLoadTrigger. This is a private (internal) function which is triggered when the cdsenv is loaded containing "ui" entries and takes care of synchronising the UI-related forms (such as the User Preferences and Log Filter forms). You would never call it yourself - it only shows up because of this bug where it is attempting to call the function in an environment where it isn't defined.

    And is it possible to indicate it is a cadence-internal function by some symbol or hints? It took me too long time in debugging after assuming it is user-defined or PDK-defined function. In my experience, it is really rare to meet cadence-internal function.

    Andrew Beckett said:
    My experience is that users vary considerably and forcing everyone to adopt the same settings for absolutely everything tends to lead to frustration. I've seen this in PDKs in the past where completely different bindkeys were loaded - and the PDK was being provided outside the company that created it; we were always being asked how to stop those bindkeys from being redefined every time they used that PDK.

    Instead we prefer the absolute uniform for we only use this PDK internally. We have seen lots of headache when different people use different color and bindkey and

    dislay-setting etc in collaboration like meeting or co-debugging in one cube.

    Thanks.

    Fred

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to zssfred

    Fred,

    There are several Options menus (in schematic, layout, layout XL, ADE XL, CIW) and places where cdsenv can be saved. The CIW has Options->Save Defaults which gives more control over which partitions get saved, but the others (such as those in the layout options menus) are trying to avoid you losing stuff if you overwrite an existing file. Giving all the flexibility of the Options->Save Defaults on every form would just over-complicate things.

    zssfred said:
    And is it possible to indicate it is a cadence-internal function by some symbol or hints?

    Nowadays (since about IC442 timeframe - so the last 19 years or so) we've had a much stricter rule that newly created internal (private) functions have an underscore at the beginning. There are a few exceptions here and there, and certainly anything older does not necessarily follow this rule (we were not going to risk destabilising the code by renaming lots of functions). In general though, we recommend that customer code uses a prefix that begins with an uppercase letter, and we use lowercase prefixes. Anything that is not in cdsFinder (with a small number of exceptions) is private - although of course it could be a user-defined function that is not following the naming convention.

    Bugs happen though - I'm glad that a CCR to get this fixed has been filed now. I'm sure contacting customer support would have saved you the time in trying to track this down...

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • zssfred
    zssfred over 7 years ago in reply to Andrew Beckett

    Andrew,

    Amazing, you always promptly respond! Need you sleep?( joking, :-) never mind.)

    Monolithic cdsenv file is easy to save but hard to trim. It is just a trade-off.

    It is not simple for people not like you guru to map the lines in cdsenv file to the visual presentations in form/menu.

    As for function naming convention, I already add our company's name in upper case as prefix. But that is only guaranteed in my code. :-(.

    Hope I can be updated about the progress of this CCR.

    Many thanks for your kind help!

    Fred

    • 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