• 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. UI created using skill APIs

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 142
  • Views 13515
  • 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

UI created using skill APIs

SrBraj
SrBraj over 5 years ago

Dear Sir/Madam

I have created an UI using the skill APIs. In this UI I have many fields including the library names and cell names. 

In my UI, I want to display the cell names in the "'cellName" field from the library selected in the "libName" field. I have written the following code:

hiCreateCyclicField(
       ?name           'libName
       ?choices        sort( ddGetLibList()~>name 'alphalessp )
       ?prompt         "Library"
       ?defValue         "PRIMLIB"
       ?callback       "aquaQrc~>cellName~>choices = sort( ddGetObj(aquaQrc~>libName~>value)~>cells~>name 'alphalessp )" ; callback
      )

...

..

hiCreateCyclicField(
       ?name           'cellName
       ;?choices        sort( ddGetObj(car(ddGetLibList()~>name))~>cells~>name 'alphalessp )  ; commented
       ?choices        sort( ddGetObj(aquaQrc~>libName~>value)~>cells~>name 'alphalessp )  ; Uncommented
       ?prompt         "CellName"
       ?callback       "aquaQrc~>cellName~>choices = sort( ddGetObj(aquaQrc~>libName~>value)~>cells~>name 'alphalessp )" ; callback
       )

I get the below mentioned error using the above code, 

*Error* eval: unbound variable - aquaQrc

Steps to reproduce the issue:

I. invoke virtuoso (all the skill files are loaded at the time of invoking the virtuoso)

ii. click menu to create UI, (The UI is enabled by menu)

but If I load the skill file again using the load command on CIW, click Menu, my UI is created and function as designed without any error. 'cellName field display the cellnames from the default "PRIMLIB" library.

If I uncomment the commented line, and comment the line below it, then I don't get any error, but 'cellName field doesn't show the cellnames from the default "PRIMLIB" library.

Seems like, formHandle aquaQrc isn't created just after the virtuoso is started.

Can you please suggest some work-around to this problem?

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    Presumably it's because the form isn't created until after you create the fields (nothing to do with when virtuoso is started). Since the choices is only setting the default value (and you update the choices dynamically as the library field is updated), simply doing:

    ?choices sort( ddGetObj("PRIMLIB")~>cells~>name 'alphalessp ) ; Uncommented

    would be sufficient (i.e. populate the field based on the default library name set in the previous cyclic field).

    However, better still would be to use the dedicate fields that do this already for you - they avoid you having to write code to populate the choices. See this example.

    Andrew.

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

    Presumably it's because the form isn't created until after you create the fields (nothing to do with when virtuoso is started). Since the choices is only setting the default value (and you update the choices dynamically as the library field is updated), simply doing:

    ?choices sort( ddGetObj("PRIMLIB")~>cells~>name 'alphalessp ) ; Uncommented

    would be sufficient (i.e. populate the field based on the default library name set in the previous cyclic field).

    However, better still would be to use the dedicate fields that do this already for you - they avoid you having to write code to populate the choices. See this example.

    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