• 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. hiDisplayForm issue

Stats

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

hiDisplayForm issue

Purge2343
Purge2343 over 5 years ago

Hi,
I have the following error while trying to run cadence in -nograph session, I copied the commands in the gui session and made code.il file to run.

*WARNING* hiDisplayForm: cannot display blocking form d2q_TaskSelect_mylibbrary_mycell_layout before initialization is complete. It is likely that a command in your .cdsinit file is attempting to display the form. Please either change the form to non-blocking (argument "?dontBlock t" to hiCreateAppForm()) or use hiEnqueueCmd() to put the command that displays the form into the command queue and it will be executed once initialization has completed.

Thank you 

  • Cancel
  • AurelBuche
    AurelBuche over 5 years ago

    Hi,

    It will be really hard to help you without your code or at least further explanation?

    What is / contains the code.il file you are talking about?

    Actually the error is pretty clear, it seems you are trying to display a form (in -nograph session !?) before Virtuoso is initialized

    If this is unwanted, you should inhibit the form display. Otherwise you should queue its display using hiEnqueueCmd (or load your code by hand in the CIW shell, Virtuoso will obviously be properly initialized in this case)

    In both cases you will have to investigate your .cdsinit

    Maybe you can provide us with more explanation about what you are trying to achieve?

    Cheers,

    Aurel

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Purge2343
    Purge2343 over 5 years ago in reply to AurelBuche

    library_name="mylib"
    cell_name="mydesign"
    task="layout"
    sel='executeAll
    deOpenCellView(library_name cell_name "layout" "maskLayout" nil "r" )
    cv=d2qDfIIqviCB(geGetWindowCellView())
    int=sprintf(nil "d2q_TaskSelect_%s_%s_layout->d2q_lpe_task_name->value=t" library_name cell_name)
    hiEnqueueCmd(int)
    int1=sprintf(nil "d2q_TaskSelect_%s_%s_layout->d2q_lvs_task_name->value=t" library_name cell_name)
    hiEnqueueCmd(int1)
    int2=sprintf(nil "hiFormDone(d2q_TaskSelect_%s_%s_layout)" library_name cell_name)
    hiEnqueueCmd(int2)

    hiEnqueueCmd("hiDBoxUser(d2qInfoDialog68 nil 1)")----------------------> This command is causing issue
    hiEnqueueCmd("d2qStatusCB(library_name cell_name task sel)")

    hiEnqueueCmd("hiDBoxUser(d2qInfoDialog69 nil 1)")----------------------> this as well

    hiRegTimer("exit()" 1000)

    This is my code1.il file and

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to Purge2343

    I've no idea what these d2q* functions do (they're not from Cadence) but looking at it, it appears to be creating unique dialog boxes for each command. You may struggle to find out what the unique number at the end is because it's probably generated with a gensym and is dependent upon the number of times it as been run.

    What you should do is ask whoever provided these functions to give you a procedural interface that allows you to do the same thing without needing the UI to be involved - that would be far more robust. The API may already exist under the hood to achieve what they're doing through the UI (it's always good practice to provide a procedural interface, and then have the UI call the procedural interface - it helps with this kind of requirement as well as for testing).

    I don't think anyone would be able to help you with the specifics unless they're aware of and have access to this "d2q" stuff.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Purge2343
    Purge2343 over 5 years ago in reply to Andrew Beckett

    Thank you for your reply,

    One more quick question.
    I am trying to send parameters to this function

    QCLEFOUT_BatchRun( @key
        (libName "")
        (cellList list(nil))
        (viewName "abstract")
        (lefFileName list(nil))
        (secondLefName "")
        (cellType "custom")
        (cellClass "BLOCK")
        (cellSite "")
        (symmetry "")
        (bitBlastPins nil)
        (cellHeight nil)
        (xEncCnod nil)
        (yEncCnod nil)
        (guiMode nil)

    )

    but it tells me key is unbounded variable.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 5 years ago in reply to Purge2343

    Did you print the code you used or the description of the function and its arguments?

    I hope your code looks similar to the following:

    QCLEFOUT_BatchRun(
        ?libName ""
        ?cellList list(nil)
        ?viewName "abstract"
        ?lefFileName list(nil)
        ?secondLefName ""
        ?cellType "custom"
        ?cellClass "BLOCK"
        ?cellSite ""
        ?symmetry ""
        ?bitBlastPins nil
        ?cellHeight nil
        ?xEncCnod nil
        ?yEncCnod nil
        ?guiMode nil

    )

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Purge2343
    Purge2343 over 5 years ago in reply to AurelBuche

    One more quick question.

    I am trying to send list to the function that reads symbol then converts to SymboltoString, so when I tried to send values through the list, it is not reading it.

    Is there a way to send symbol values through list?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to Purge2343

    Your question doesn’t make any sense - I cannot work out from your question what you’re doing, what doesn’t work or what you actually want it to do. Please provide some code which shows the issue. 

    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