Hi John,
I have no objection.
I think providing the state transition chart with related API
call (and simulation phase) will help to understand the overall
flow.
I was looking at Figure 28 of the LRM and thought it.
BTW, the label of Figure 28 "rb" transport may be "nb" transport.
Regards,
Kaz
--
Kaz Yoshinaga
Tel: +81-45-478-3228
email: yoshi@starc.or.jp
From: john.aynsley@doulos.com
Subject: RE: sc_pause
Date: Fri, 12 Nov 2010 13:49:13 +0000
> It seems we are all set. I will write up the sc_pause/sc_get_status
> proposal in the LRM. As usual, shout if you want to raise objections.
>
> John A
>
>
>
>
>
> From:
> Bishnupriya Bhattacharya <bpriya@cadence.com>
> To:
> "john.aynsley@doulos.com" <john.aynsley@doulos.com>
> Cc:
> "alan.fitch@doulos.com" <alan.fitch@doulos.com>,
> "owner-systemc-p1666-technical@eda.org"
> <owner-systemc-p1666-technical@eda.org>, "systemc-p1666-technical@eda.org"
> <systemc-p1666-technical@eda.org>, "Jeremiassen, Tor" <tor@ti.com>
> Date:
> 11/11/2010 16:33
> Subject:
> RE: sc_pause
>
>
>
> John,
>
> The implicit pause part is what I was trying to get to. Its clear now.
>
> The rest of the clarifications all look good.
>
> Thanks,
> -Bishnupriya
>
> From: john.aynsley@doulos.com [mailto:john.aynsley@doulos.com]
> Sent: Thursday, November 11, 2010 2:20 PM
> To: Bishnupriya Bhattacharya
> Cc: alan.fitch@doulos.com; owner-systemc-p1666-technical@eda.org;
> systemc-p1666-technical@eda.org; Jeremiassen, Tor
> Subject: RE: sc_pause
>
> Bishnupriya,
>
> As it stands, the proposal says "On return from sc_start without sc_stop
> having been called, the simulation is left in the paused state. " In
> other words, on return from sc_start() without sc_stop() having been
> called, there is an implicit sc_pause().
>
> In other words, the SC_RUNNING bit will only be set when sc_get_status()
> is called from a process during the evaluation phase or from a primitive
> channel during the update phase.
>
> Just to complete the picture, is_running() is false during
> start_of_simulation() and end_of_simulation(), and we are changing the LRM
> such that it is no longer required to be false when called from a
> destructor. We are also adding the recommendation that sc_start() should
> call sc_stop() when necessary, so that is_running() typically would return
> false when called from a destructor.
>
> John A
>
>
>
> From:
> Bishnupriya Bhattacharya <bpriya@cadence.com>
> To:
> "john.aynsley@doulos.com" <john.aynsley@doulos.com>
> Cc:
> "alan.fitch@doulos.com" <alan.fitch@doulos.com>,
> "owner-systemc-p1666-technical@eda.org"
> <owner-systemc-p1666-technical@eda.org>, "systemc-p1666-technical@eda.org"
> <systemc-p1666-technical@eda.org>, "Jeremiassen, Tor" <tor@ti.com>
> Date:
> 10/11/2010 16:56
> Subject:
> RE: sc_pause
>
>
>
>
> John,
>
> Comments below on sc_sim_status().
>
> From: john.aynsley@doulos.com [mailto:john.aynsley@doulos.com]
> Sent: Wednesday, November 10, 2010 4:23 PM
> To: Bishnupriya Bhattacharya
> Cc: alan.fitch@doulos.com; owner-systemc-p1666-technical@eda.org;
> systemc-p1666-technical@eda.org; Jeremiassen, Tor
> Subject: RE: sc_pause
>
> #! SystemVerilog
> join_none
> disable fork;
>
>
> Bishnupriya,
>
> On return from sc_start(whatever), I am saying the SC_RUNNING bit will
> always be 0, and either the SC_STOPPED or the SC_PAUSED bit will be 1.
>
>>>> [bpriya: So in sc_main() in between sc_start() calls, SC_RUNNING bit
> is always 0. The SC_STOPPED part is clear. I'm not clear about SC_PAUSED.
> After a sc_start(), if the sc_start() did not return due to sc_stop(), is
> SC_PAUSED bit set always set, irrespective of whether sc_pause() was
> called or not? Or is it only set if sc_pause() was called()? ]
>
> Thanks,
> -Bishnupriya
>
> I agree sc_pause() should always finish the delta cycle such that one
> evaluation phase cannot be split across a pause.
>
> Re. resuming a process after a pause, what's wrong with:
>
> sc_pause();
> wait(SC_ZERO_TIME);
>
> ?
>
> John A
>
>
>
> From:
> Bishnupriya Bhattacharya <bpriya@cadence.com>
> To:
> "alan.fitch@doulos.com" <alan.fitch@doulos.com>, "john.aynsley@doulos.com"
> <john.aynsley@doulos.com>
> Cc:
> "owner-systemc-p1666-technical@eda.org"
> <owner-systemc-p1666-technical@eda.org>, "systemc-p1666-technical@eda.org"
> <systemc-p1666-technical@eda.org>, "Jeremiassen, Tor" <tor@ti.com>
> Date:
> 10/11/2010 10:22
> Subject:
> RE: sc_pause
>
>
>
>
>
> John,
>
> Did you respond to Alan's second question below? If you did, I missed it.
> I've the same question:
>
> Suppose sc_main() calls sc_start(), and a process calls
> sc_pause(SC_STOP_IMMEDIATE). This will make sc_start() return to sc_main()
> right after the current process finishes, and while there maybe processes
> remaining in the runnable q. When the next sc_start() is issued from
> sc_main(), I suppose these runnable processes should all execute? What
> happens to the delta cycle count? Should the delta cycle count be the
> same? Essentially here the eval phase of one delta cycle is spanning
> across two sc_start() calls and across stuff that can happen in between in
> sc_main(). Does this seem a little worrisome? e.g. if one of the runnable
> processes gets killed in sc_main() before the next sc_start()? Well that
> actually is taken care of by kill() semantics. Could anything else
> unexpected happen? In any case, we need to clarify the behavior here. For
> sc_stop(), we do not need to deal with this because simulation cannot
> resume.
>
> "On return from sc_start without sc_stop having been called, the
> simulation is left in the paused state. On return from sc_start after
> sc_stop has been called, the simulation is left in the stopped state. In
> either case, simulation will remain in the running state until all
> processes have ceased executing prior to the return from sc_start"
>
> Clarification: If sc_start(100, SC_NS) returns to sc_main() w/o any
> sc_pause() having been called, what does sc_sim_status() return? What if
> sc_start() returns because of sc_pause()? In either cases, both the
> SC_RUNNING bit and SC_PAUSED bit is set?
>
> One final comment. sc_pause() is an useful mechanism by which a process is
> interrupting/pausing the simulation. In a SystemC simulator with an
> interactive prompt, it can provide a natural point where control can
> return to the prompt - similar to making sc_start() return - and users can
> introspect or configure things perhaps at the prompt. Now suppose a
> process determines that it needs some configuration/user-input, and it
> calls sc_pause() to that purpose. But it further wants to wake up and get
> scheduled when simulation resumes again. Is it warranted to provide an
> event that is notified when simulation is resumed again with sc_start()?
> This could be made generic, and not tied particularly to
> sc_pause()/resumption - e.g. sc_start() can always notify an event at its
> onset.
>
> void run() {
> while (1) {
> // do stuff
> if (condition) {
> sc_pause();
> wait(sc_simulation_resume_event); // or wait(sc_start_event)
> ...
> }
> }
> }
>
> We also have the option of tying it entirely to sc_pause() and making it
> less generic - e.g. "sc_pause(bool block = false)". If you call
> sc_pause(true) from thread process then it will block till simulation is
> resumed again with sc_start() - the specifics can be left implementation
> defined. The Cadence simulator has had a similar pause() functionality,
> and this blocking feature has been found to be useful. What do people
> think?
>
> Thanks,
> -Bishnupriya
>
> From: owner-systemc-p1666-technical@eda.org [
> mailto:owner-systemc-p1666-technical@eda.org] On Behalf Of
> alan.fitch@doulos.com
> Sent: Monday, November 08, 2010 7:41 PM
> To: john.aynsley@doulos.com
> Cc: owner-systemc-p1666-technical@eda.org;
> systemc-p1666-technical@eda.org; Jeremiassen, Tor
> Subject: Re: sc_pause
>
> Hi John,
> a couple of questions:
>
> just to clarify, if I had in sc_main
>
> sc_start(100, SC_NS); // inside here the code calls sc_pause at say time
> = 50 ns
> sc_start (100, SC_NS); // this would resume at 50 ns
>
> Secondly, if I called
>
> sc_start(SC_ZERO_TIME); // call sc_pause with SC_STOP_IMMEDIATE during
> the evaluation phase
>
> // now what happens? do other runnable processes complete the rest of the
> delta above when resumed
> sc_start(1, SC_NS);
>
> regards
> Alan
>
> --
> Alan Fitch
> Senior Consultant
>
> Doulos - Developing Design Know-how
> VHDL * Verilog * SystemVerilog * SystemC * PSL * Perl * Tcl/Tk * Project
> Services
>
> Doulos Ltd. Church Hatch, 22 Market Place, Ringwood, Hampshire, BH24 1AW,
> UK
> Tel: + 44 (0)1425 471223 Email:
> alan.fitch@doulos.com
> Fax: +44 (0)1425 471573 http://www.doulos.com
>
> --------------------------------------------------------------------------------
> Doulos Ltd is registered in England and Wales with company no. 3723454
> Its registered office is 4 Brackley Close, Bournemouth International
> Airport,
> Christchurch, BH23 6SE, UK.
>
> This message (and associated files) may contain information that is
> confidential,
> proprietary, privileged, or subject to copyright. It is intended solely
> for the use
> of the individual to whom it is addressed and others authorised to receive
> it. If
> you have received this email in error, please notify the sender and delete
> all
> copies. This message may contain personal views which are not the views of
> Doulos, unless specifically stated.
>
> From:
> john.aynsley@doulos.com
> To:
> systemc-p1666-technical@eda.org
> Cc:
> "Jeremiassen, Tor" <tor@ti.com>
> Date:
> 08/11/2010 13:59
> Subject:
> sc_pause
> Sent by:
> owner-systemc-p1666-technical@eda.org
>
>
>
>
>
>
> Folks,
>
> The next topic to finish off is the addition of sc_pause and sc_get_status
> , as originally proposed by Tor. We got to the point of being almost ready
> to close this discussion months ago. I summarize the current proposal
> below. Please give this your careful consideration and either vote "yes"
> or raise any objections you may have.
>
> Thanks,
>
> John A
>
>
>
> Add a function sc_pause that is similar to sc_stop except that it puts
> simulation into the paused state. Simulation can be restarted from the
> paused state by calling sc_start again.
>
> sc_pause uses sc_stop_mode to determine precisely when to pause (or we
> could introduce a new sc_pause_mode, if people wish)
>
> sc_pause leaves the simulation time at its current value such that
> sc_start would continue from that time
>
> On return from sc_start without sc_stop having been called, the
> simulation is left in the paused state. On return from sc_start after
> sc_stop has been called, the simulation is left in the stopped state. In
> either case, simulation will remain in the running state until all
> processes have ceased executing prior to the return from sc_start
>
> Make a change to the scheduler spec such that on return from sc_start()
> due to event starvation, the simulation time remains at the time of the
> last event. This can only come about after every process has either
> terminated or executed wait(...) with no time-out.
>
> When paused, sc_is_running() shall return true.
>
> Change the LRM such that sc_is_running() is not obliged to return false
> when called from a destructor; sc_is_running would return true unless
> sc_stop had been called
>
> Add a global function sc_get_status whose value is a bit mask, used as
> follows:
>
> if (sc_get_status() & (SC_PAUSED |
> SC_STOPPED |
> SC_END_OF_SIMULATION) )
> ...
>
> The full list of simulation phases is:
> SC_ELABORATION
> SC_BEFORE_END_OF_ELABORATION
> SC_END_OF_ELABORATION
> SC_START_OF_SIMULATION
> SC_RUNNING
> SC_PAUSED
> SC_STOPPED
> SC_END_OF_SIMULATION
>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
>
>
>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Sun Nov 14 16:30:29 2010
This archive was generated by hypermail 2.1.8 : Sun Nov 14 2010 - 16:30:35 PST