Modelsim simulation progress in batch/command line mode?

Discussion in 'VHDL' started by Andreas Ehliar, Apr 25, 2007.

  1. On 2007-04-25, M. Hamed <> wrote:
    > Is there a way I can get ModelSim to display the time progress of the
    > simulation when it's running in command line/batch mode similar to
    > what it would do at the bottom of the GUI window?



    Put something like the following in a TCL script:
    proc printsimstate {} {
    global now
    global UserTimeUnit
    echo "Simulator time is $now, timescale is $UserTimeUnit"
    after 5000 printsimstate
    }
    after 5000 printsimstate

    I haven't tested it much since I just wrote it, but it seems to work
    fairly ok.

    /Andreas
     
    Andreas Ehliar, Apr 25, 2007
    #1
    1. Advertising

  2. Andreas Ehliar

    M. Hamed Guest

    Is there a way I can get ModelSim to display the time progress of the
    simulation when it's running in command line/batch mode similar to
    what it would do at the bottom of the GUI window?

    Thank you.
     
    M. Hamed, Apr 25, 2007
    #2
    1. Advertising

  3. On Wed, 25 Apr 2007 17:44:18 +0000 (UTC),
    Andreas Ehliar <> wrote:

    >On 2007-04-25, M. Hamed <> wrote:


    >> Is there a way I can get ModelSim to display the time progress of the
    >> simulation when it's running in command line/batch mode similar to
    >> what it would do at the bottom of the GUI window?

    >
    >
    >Put something like the following in a TCL script:
    >proc printsimstate {} {
    > global now
    > global UserTimeUnit
    > echo "Simulator time is $now, timescale is $UserTimeUnit"
    > after 5000 printsimstate
    >}
    >after 5000 printsimstate


    Andreas,

    nice, but be aware that it will leave an "after" action lying around;
    if you pause the sim (or it reaches a breakpoint) you will continue
    to get "Simulator time is..." messages spitting out of the console
    every five seconds.

    This seems to be closer to a robust solution, although you might
    also want to provide a new timed version of the "continue"
    command too. Just source this Tcl script into ModelSim
    before running the sim, and then use "trun" instead of "run"
    to start the simulation.

    # Smarter version of "run" that displays timings as it runs
    proc trun {args} {
    # Start the periodic runtime display
    after 2000 printSimTime
    # Do the usual run command
    eval run $args
    }
    #
    # Periodic time display, stops itself when the
    # run is stopped or interrupted
    proc printSimTime {} {
    echo "time = $::now"
    if { [string equal running [runStatus]] } {
    after 2000 printSimTime
    }
    }

    In my own experiments I've found that the value of "now" that this
    code reports is not very reliable - presumably, thanks to the very
    heavy CPU loading caused by a busy simulation, things don't always
    get updated as promptly as you might hope. Even so, it's
    better than nothing.
    --
    Jonathan Bromley, Consultant

    DOULOS - Developing Design Know-how
    VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

    Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK

    http://www.MYCOMPANY.com

    The contents of this message may contain personal views which
    are not the views of Doulos Ltd., unless specifically stated.
     
    Jonathan Bromley, Apr 26, 2007
    #3
  4. ["Followup-To:" header set to comp.arch.fpga.]
    On 2007-04-26, Terry Brown <> wrote:
    > Is there a reason people don't suggest just using an always block in the
    > test bench?
    >
    > For example, I use:
    >
    > //this is a status heartbeat for batch mode operation
    > integer microseconds;
    > reg heartbeat;
    > always #10000 microseconds = microseconds + 10;
    > always @ (microseconds)
    > if (heartbeat)
    > $display("%d us",microseconds);
    >
    > This has the advantage on not requiring tcl (and the scripting is an
    > enhanced, pay for it option), and is portable to other simulators.


    The major advantage of using the TCL based approach is that you are sure
    that your simulation status will be printed with the same frequency,
    (more or less depending on the scheduling of the after command in TCL)
    regardless of CPU speed and design complexity.

    On the other hand, your approach is more useful in general since you
    are able to print much more interesting data than the simulation time
    such as for example the number of transactions your testbench has
    performed.


    /Andreas
     
    Andreas Ehliar, Apr 26, 2007
    #4
  5. Andreas Ehliar

    Terry Brown Guest

    On Wed, 25 Apr 2007 11:26:07 -0700, M. Hamed wrote:

    > Is there a way I can get ModelSim to display the time progress of the
    > simulation when it's running in command line/batch mode similar to what
    > it would do at the bottom of the GUI window?
    >
    > Thank you.


    Is there a reason people don't suggest just using an always block in the
    test bench?

    For example, I use:

    //this is a status heartbeat for batch mode operation
    integer microseconds;
    reg heartbeat;
    always #10000 microseconds = microseconds + 10;
    always @ (microseconds)
    if (heartbeat)
    $display("%d us",microseconds);

    This has the advantage on not requiring tcl (and the scripting is an
    enhanced, pay for it option), and is portable to other simulators.

    Terry Brown
    Tyzx, Inc.
     
    Terry Brown, Apr 26, 2007
    #5
  6. Andreas Ehliar

    NigelE Guest

    On Apr 25, 7:26 pm, "M. Hamed" <> wrote:
    > Is there a way I can get ModelSim to display the time progress of the
    > simulation when it's running in command line/batch mode similar to
    > what it would do at the bottom of the GUI window?
    >
    > Thank you.


    ModelSim SE and Questa users can use the JobSpy tool to monitor and
    interact with batch jobs, including those running under LSF and Grid
    Engine load sharing software.

    One of the available JobSpy commands is 'now', which prints the
    current simulation time.

    Have a look at the 'Monitoring Simulations with JobSpy' chapter in the
    User's Manual

    - Nigel
     
    NigelE, Apr 26, 2007
    #6
  7. Andreas Ehliar

    M. Hamed Guest

    Thank you. This seems to work well. I was wondering if it's possible
    to format the time display to display in a certain unit like us or ns.
     
    M. Hamed, Apr 26, 2007
    #7
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Dave
    Replies:
    0
    Views:
    923
  2. andrew
    Replies:
    3
    Views:
    478
    Old Wolf
    Sep 17, 2006
  3. tarekeldeeb
    Replies:
    4
    Views:
    11,273
    tarekeldeeb
    Mar 10, 2009
  4. Mitya Sirenef

    Re: Command Line Progress Bar

    Mitya Sirenef, Dec 26, 2012, in forum: Python
    Replies:
    0
    Views:
    151
    Mitya Sirenef
    Dec 26, 2012
  5. Irmen de Jong

    Re: Command Line Progress Bar

    Irmen de Jong, Dec 26, 2012, in forum: Python
    Replies:
    1
    Views:
    177
    Alec Taylor
    Dec 26, 2012
Loading...

Share This Page