SKILL update user interface

Discussion in 'Cadence' started by S. Badel, Aug 3, 2005.

  1. S. Badel

    S. Badel Guest

    hi all,

    I have SKILL scripts which take long time to run on large designs. These scripts write
    output to a log file, which i'd like to be able to display as the script goes on (tail)
    to show the status in real-time.

    I tried using a viewfile window for this, but as the SKILL script is running this window
    is not updated (nor is any window belonging to the icfb process, which is quite annoying too).

    So, is there a way to update the user interface just like the tcl/tk update command for example?

    stéphane
     
    S. Badel, Aug 3, 2005
    #1
  2. I wonder if (hiUpdate) could help you.

    A+
     
    Jean-Marc Bourguet, Aug 3, 2005
    #2
  3. How about in another Xwindow ... " tail -f <FILENEME>"


    -- Gerry
     
    Gerry Vandevalk, Aug 3, 2005
    #3
  4. Have you looked at the ipc* routines? I tried to solve my "execute OCEAN
    scripts from inside DFII" by using the ipcSkillProcess. Problem was that
    DFII executed the next line in the OCEAN script before the previous had
    returned, so I would have to write my own synchronizing mechanism. There
    is a fairly good example in the documentation with sourcecode for an
    external program in c. If you want to use Tcl instead, you have to load
    package TclX because you want to communicate with descriptors other than
    stdout and stdin.
     
    Svenn Are Bjerkem, Aug 4, 2005
    #4
  5. S. Badel

    rkdocc Guest

    Yes... you need to use autoUpdate argument...
    Example:
    (progn
    ,(win = (view file winSpec title autoUpdate))
    )


    thanks,
    ronald
     
    rkdocc, Aug 7, 2005
    #5
  6. S. Badel

    Erik Wanta Guest

    Stéphane:
    ;tail the output.log file
    hiEnableTailViewfile(view("yourlogfile"))
     
    Erik Wanta, Aug 9, 2005
    #6
  7. S. Badel

    S. Badel Guest

    I know that, my problem is that while the SKILL is running the user interface
    is frozen. it's kind of annoying.

    thanks,
    stéphane
     
    S. Badel, Aug 9, 2005
    #7
  8. The fundamental problem is due to SKILL not being multi-threaded.

    I don't think there's really any way around this unless you can allow the
    toplevel a look in every now and again. I've done this kind of thing before by
    doing:

    procedure(doPart1()
    .....
    .....
    hiRegTimer("doPart2()" 0)
    )

    procedure(doPart2()
    ....
    ....
    hiRegTimer("doPart3()" 0)
    )

    etc. Or of course some code which refers to some data structure to keep track
    of how far it has got. Effectively you're implementing some kind of cooperative
    multi-tasking; giving the "OS" (i.e. DFII) a chance to update its windows,
    before the SKILL code gets restarted via the timer.

    Regards,

    Andrew.
     
    Andrew Beckett, Aug 9, 2005
    #8
  9. S. Badel

    rkdocc Guest

    why not run the Skill code as separate batch process?

    That way you could still use Opus
    while a separate process running Skill and shows it in the log window.

    This is what I do:
    (ipcBeginProcess (strcat "exec " fullCmd) "" "" "" "" (strcat "+"
    logFile)))
    (ipcWaitForProcess cid)
    (printf "tool: Batch %s process %d started %s\n" fullCmd
    cid->processId (getCurrentTime))
    ;; open log window to check logfile
    window = (view logFile winSpec title autoUpdate)

    The only time your user interface is frozen is the time between
    ipcBeginProcess and ipcWaitForProcess.. Usually under 2 seconds.

    thanks,
    ronald
     
    rkdocc, Aug 12, 2005
    #9
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.