• 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. Flowchart problem

Stats

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

Flowchart problem

tyanata
tyanata over 12 years ago

 Hello,

I am trying to create procedure trigerred by starting of a simulation in ocean script with many corners using runParam() command.

I found  way to do that with the Flowchart fucntions and it works ( I am using IC6.15 and ADE-L is opened), see the code bellow:

 

procedure(Sim_trigger_PCT()
        let((sess_local)
                if(asiGetCurrentSession() != nil then

                         sess_local = asiGetCurrentSession()
                        asiChangeFlowchartStep(asiGetFlowchart(sess_local)
                                ?name 'asiNetlist
                                ?preFunc 'CCSLoadScript_try
                        )
                );;if
        );;let
);;proc
 

procedure( CCSLoadScript_try(sess)
                printf("Test\n")
);;proc

 

 But I want procedure CCSLoadScript_try to have more arguments, see the same code little bit modified:

 

procedure(Sim_trigger_PCT()
        let((sess_local num_local)

                num_local = 1
                if(asiGetCurrentSession() != nil then

                         sess_local = asiGetCurrentSession()
                        asiChangeFlowchartStep(asiGetFlowchart(sess_local)
                                ?name 'asiNetlist
                                ?preFunc (CCSLoadScript_try sess_local num_local)
                        )
                );;if
        );;let
);;proc
 

procedure( CCSLoadScript_try(sess num)
                printf("Test %d\n" num)
);;proc

 

In that case the script is trigerred only once (there is only one text note "Test 1" in the log file), and then NO simulation has been done.

 

Thanks in advance for the help!

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    The reason why you only got one "Test 1" is because it actually called your function at the time you called asiChangeFlowchartStep, not at netlisting time. It would have tried to use the return value of the function as the preFunc, which is not what you want.

    You can't just add arbitrary function signatures - the preFunc will always be called with a single argument in this case - so adding more won't help you. However, you could take advantage of SKILL++ lexical scoping - so for example, if you use the code below (put it in a file with ".ils" as the suffix) - and it will then work. The globalProc is defined within the scope containing num_local and so can access it.

    procedure(Sim_trigger_PCT()
        let((sess_local num_local)

        globalProc(CCSLoadScript_try(sess)
            printf("Test %d\n" num_local)
            ; just for fun, increment the variable
            num_local++
        )

        num_local = 1
        if(asiGetCurrentSession() != nil then
            sess_local = asiGetCurrentSession()
            asiChangeFlowchartStep(asiGetFlowchart(sess_local)
            ?name 'asiNetlist
            ?preFunc 'CCSLoadScript_try
            )
        );;if
        );;let
    );;proc
     

    Kind Regards,

    Andrew.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • tyanata
    tyanata over 12 years ago

     Hello Andrew,

    Thanks for the response, from Cadence Support I received and another workaround also.

    So I will try both of them.

    • 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