• 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 20073
  • 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
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Hi Fred,

    I assume you're not calling uiLoadTrigger in the libInit.il file - if so, it's a private function and should't be called.

    I did find some reports if this showing if the libInit.il contained calls to envLoadFile() which loaded a cdsenv file containing "ui" entries, but I think this was fixed a very long time ago (I didn't yet do any experiments).

    Before me doing any experiments, which IC subversion are you using? In other words, what does help->about report?

    Regards,

    Andrew.

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

    Andrew,

    I am using 6.1.7.isr12.

    Many thanks for your always prompt help in this forum in so many years!

    Fred

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

    Andrew,

    Yes. It turns out loading cdsenv is the culprit.

     ;; load library .cdsenv file
        ;fred  when( ddObj = ddGetObj(libName nil nil ".cdsenv")
        ;fred     printf("\tLoading %s/%s ... " libName ddObj~>name)
        ;fred     if( errset(PasEnvLoadFile(ddGetObjReadPath(ddObj))) then
        ;fred        printf("done!\n")
        ;fred     else
        ;fred        success = nil
        ;fred        printf("failed!\n")
        ;fred     )
        ;fred  ) ; ** when ddObj **

    Is PasEnvLoadFile(ddGetObjReadPath related?

    Thanks.

    Fred

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

    Hi Fred,

    I checked, and PasEnvLoadFile is a wrapper around envLoadFile, and is loading the .cdsenv file in the root of your PDK library. I tried an example I had which has this construct using IC617 ISR19 and that works fine - no errors in "si" when doing CDL netlisting.

    When I get into the office today, I'll check again with ISR12.

    However, I see that you've now logged a case with customer support, so probably best to avoid duplication of effort and let the AE who gets assigned this work through the problem.

    Regards,

    Andrew.

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

    Andrew,

    Did you enable CDS_FILTER_CDSENV_WARNINGS ?

    If we can get workaround here, I will ask to close that case. And I will avoid such duplication in future.

    Thanks for your kind help.

    Fred

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

    Hi Fred,

    zssfred said:

    Did you enable CDS_FILTER_CDSENV_WARNINGS ?

    No, should I have done? You didn't mention it before. I tried in ISR19 with and without this env var (set to "yes"), and it made no difference - I still don't see the undefined function message.

    A workaround would almost certainly be to put this in the libInit.il before the PasEnvLoadFile call somewhere (although we really should fix the underlying problem if there is still one in current ISRs):

    unless(isCallable('uiLoadTrigger)
      procedure(uiLoadTrigger() t)
    )

    Regards,

    Andrew.

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

    Andrew,

    No, I did not. I just recalled this envvar setting when I replied last post.

    Your hacking works well in my test. But not sure whether if really helps to solidify the .cdsenv setting on purpose in gui layout mode.

    In si batch mode, the ui triggers should be irrelevant, I think.

    Anyway, I will try isr19 after the long time of downloading.

    BTW, may I have your email? The AE already sent mail to me and I can add you into the loop.

    Thanks.

    Fred

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

    Hi Fred,

    I checked with ISR12 and couldn't see the problem. However, I checked again and realised that I'd looked at the wrong .cdsenv file and so it didn't have any ui entries. When I added those into the .cdsenv file inside the library containing the PasEnvLoadFile call in the libInit.il then I see the problem in IC617 ISR12 and ISR19. 

    This is what should be fixed. However, I can't really see any good reason why a PDK should be setting ui cdsenv settings - look in the file in the library for anything such as:

    ui accelInput boolean nil
    ui focusToFieldSelectsText boolean t

    anything with ui at the beginning. It's a strange thing for a PDK to set, in my opinion.

    The workaround code I gave should be harmless. In an environment that supports a user interface, it won't do anything, and in executables such as "si", it just prevents the ui trigger from failing (there's nothing the ui trigger could usefully do anyway).

    No need for me to provide my email address (I certainly wouldn't in a public forum anyway) - please provide this info to my colleague that you're working with and they can file a CCR to get this addressed. I'm in the loop on too many things already - so can afford to not be included on this one! (although maybe the AE you're working with can put me on cc for the CCR they file so I can see it).

    Regards,

    Andrew.

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

    Andrew,

    The purpose why we use .cdsenv in a PDK is to enable stretchable handler if we just merely provide PDK library to users. It looks like this way won't work at all.

    We have to still suggest users to load .cdsenv via .cdsinit. That should be a working way, right?

    I will forward your post to the AE.

    Thank you so much!

    Fred

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

    Hi Fred,

    There's no problem with setting .cdsenv variables as whole - it's specifically any "ui" variables in the .cdsenv file that cause the problem. I'm not sure what  you mean by "stretchable handler" but I don't think that's a "ui" cdsenv variable. If you don't have ui variables in the .cdsenv file loaded from libInit.il then you won't hit this bug.

    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