Bishnupriya, Stuart, All,
The largest number of issues concern the process control extensions,
either pointing out ambiguities or asking for clarification. I will group
together all of the issues in this single email. Please review my answers
below, and give me your take on the open issues.
Thanks,
John A
[Philipp]
5.4.2 end_of_elaboration (2nd enum, (d))
With the unification of SC_THREAD and SC_CTHREAD, is there still a reason
to explicitly forbid SC_CTHREAD during end_of_elaboration? It certainly
works with the reference simulator.
[Bart]
6.6.6.1: resume: what if a method resumes itself when executing the
associated ftion till the end after a suspend call? Same for enable
[Alan]
6.6.6
I'd like to have a simple summary of the process control functions in the
introduction, e.g. what they are (each pair) and the intent behind the
use of each pair. Perhaps just Table 2 in section 6.6.6.4 would be ok?
[JA] I would like to spend some time improving the process control
documentation.
[Hiroshi]
5 6.6.6.1 p.74
"The following cases of calling ""resume"" do not seem to be descrived
clear.
(1) If ""resume"" are called multi processes at the same simulation time,
what happens?
[JA] If h.resume() is called from multiple processes, the process
associated with h is resumed only once ("resume on a process that is not
suspended shall have no effect"). If multiple processes are resumed, they
all become runnable in the same evaluation phase (in arbitrary order)
[Hiroshi]
(2) If ""suspend"" and ""resume"" are successively called to the process
during wait, when does it become runnable? For example, wait(100) -> calls
""suspend"" after 10 ns -> calls ""resume"" after 50 ns, then does process
become runnable after 40 ns?"
[JA] See the 1st para describing resume. The sensitivity of the
process would NOT have caused it to become runnable while it was
suspended, and hence the process will NOT become runnable when it is
resumed.
[Hiroshi]
7 6.6.6.1 p.74 - 75 The difference between
suspend/resume and disable/enable is difficult to understand from the
explanation in the LRM. Use cases can be helpful to understand these
functions and purposes.
[JA] I agree the difference between suspend/resume and
disable/enable is difficult to understand, as are the semantics of process
control in general. I could spend some time including further examples in
the LRM. I could also spend some time writing an introduction to the
process control methods and clarifying the rules, since I am not
particularly satisfied with the text as it stands.
[Hiroshi]
9 6.6.6.4 p.81 Table 2
The "enable" row of Table 2 shows "The current evaluation phase". Is this
correct? Should it be "The next evaluation pahse"?
[JA] It is correct, but it has to be read in the right context.
The earliest time at which a call to enable() can affect the target
process is indeed in the current evaluation phase. For example, a
subsequent immediate notification within the current evaluation phase
could make the target process runnable in the current evaluation phase. On
the other hand, the earliest time at which a call to disable() can affect
the target process is the next evaluation phase (the phase following the
current evaluation phase).
-- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Tue Jan 11 05:58:05 2011
This archive was generated by hypermail 2.1.8 : Tue Jan 11 2011 - 05:58:06 PST