• 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. Running skill function before simulation to prevent its...

Stats

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

Running skill function before simulation to prevent its start

aakhavan
aakhavan over 8 years ago

I'd like to set up my environment to run a skill function just before a simulation starts to check system load. If the load is too high, it will display a message and prevent the simulation from running. I need to support both ADE-L and ADE-XL. What's the best way to do this?

From what I've found in the documentation, I can add a pre-simulation callback in ADE-XL using the axl* functions and signals/triggers. However, it does not appear that the callback can prevent the simulation from running.

For ADE-L, I've not been able to find a similar pre-sim callback. I could either overwrite all of the toolbar buttons and menu items, or overwrite the run functions. It seems that the UI elements are all re-generated and the callbacks for them changed every time the simulator changes, which poses a problem.

I can overwrite all of the run simulation functions, but I'd have to do so for every simulator (assuming they don't get re-defined on simulator changes).

  • Cancel
Parents
  • aakhavan
    aakhavan over 8 years ago

    Andrew,

    I'm now observing some strange behavior with this setup in ADE-XL only (see skill below).

    When some_condition evaluates true, it appears to work properly, and the simulation proceeds.

    When some_condition evaluates false, however, the AppDBox shows up twice. The first time happens when I click the run button, as expected. The second time comes roughly after the job starts. I also see a few warnings about context cache and context manager. Clicking no on the form causes the sim to stop, as desired, though I suspect its not behaving properly as I get an "Error occurred while simulating the design". The goal here is to display a form to the user that lets them decide whether or not to run the simulations.

    Interestingly, another machine exhibits different behavior: it stops cleanly if I click no on the form, but when I click yes, it runs all the jobs with no errors, but never starts the simulator...

    It seems like there is some other issue going on, but as far as the pre-sim function goes, am I doing something obviously incorrect?

    Thank you!

    procedure(startSimPreFuncXL(session setupdb mode testName)

    let((formResult)

    if(some_condition then

    envSetVal("adexl.simulation" "haltCurrentRunAfterPreRunTrigger" 'boolean nil)

    else

    formResult = hiDisplayAppDBox(...)

    envSetVal("adexl.simulation" "haltCurrentRunAfterPreRunTrigger" 'boolean not(formResult))

    ) ;if

    );let

    );proc

    procedure(addSimPreFuncXL(session)

    axlSessionConnect(session "preRun" 'startSimPreFuncXL)

    t

    )

    axlSessionRegisterCreationCallback('addSimPreFuncXL)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • aakhavan
    aakhavan over 8 years ago

    Andrew,

    I'm now observing some strange behavior with this setup in ADE-XL only (see skill below).

    When some_condition evaluates true, it appears to work properly, and the simulation proceeds.

    When some_condition evaluates false, however, the AppDBox shows up twice. The first time happens when I click the run button, as expected. The second time comes roughly after the job starts. I also see a few warnings about context cache and context manager. Clicking no on the form causes the sim to stop, as desired, though I suspect its not behaving properly as I get an "Error occurred while simulating the design". The goal here is to display a form to the user that lets them decide whether or not to run the simulations.

    Interestingly, another machine exhibits different behavior: it stops cleanly if I click no on the form, but when I click yes, it runs all the jobs with no errors, but never starts the simulator...

    It seems like there is some other issue going on, but as far as the pre-sim function goes, am I doing something obviously incorrect?

    Thank you!

    procedure(startSimPreFuncXL(session setupdb mode testName)

    let((formResult)

    if(some_condition then

    envSetVal("adexl.simulation" "haltCurrentRunAfterPreRunTrigger" 'boolean nil)

    else

    formResult = hiDisplayAppDBox(...)

    envSetVal("adexl.simulation" "haltCurrentRunAfterPreRunTrigger" 'boolean not(formResult))

    ) ;if

    );let

    );proc

    procedure(addSimPreFuncXL(session)

    axlSessionConnect(session "preRun" 'startSimPreFuncXL)

    t

    )

    axlSessionRegisterCreationCallback('addSimPreFuncXL)

    • 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