Hiroshi, 
Here is my response to your review issues, excluding those issues for 
which I consider further discussion is definitely required. Of course, you 
are free to dispute the issues below where I consider no change is 
required. 
My comments are marked [JA] below 
John A 
1       5.5.3   p.29    2nd paragraph 
"sc_set_stop_mode" .
Also, we'd like to confirm the intent of this change from the current 
LRM."
[JA] The intent is that the old LRM did not specify whether 
sc_set_stop_mode is allowed to be called during simulation.
2       6.2.13  p.45    5th paragraph 
It is difficult to understand the second sentence. Does it means that the 
order of reset is implementation defined?
[JA] I think the meaning is fairly clear, but I will try to enhance the 
wording. This sentence just spells out the consequences of the async 
reset, namely
- async_reset_signal specifies (directly or indirectly) an object of type 
sc_signal
- The reset occurs when that signal changes to its active value
- Signals actually change value in the update phase
- The reset is not executed in the update phase, but in the following 
evaluation phase
- The actual call to reset() gets scheduled along with anything else due 
to run in that same evaluation phase, and thus is run in non-deterministic 
order. Asynchronous resets do not take priority over other processes due 
to run in the same delta.
3       6.5.2   p.62 
"The purpose of the namespace ""sc_unnamed"" should be described.
We imagine that this class can be used to set vendor specific classes, and 
so on. If our understanding is correct, the intent of adding vendor 
specific classes, etc. in the LRM should be described."
[JA] No, the only purpose of sc_unnamed is to provides the placeholders 
_1, _2, ... from Boost, which can be used when calling sc_bind. I will add 
a remark which says exactly that.
4       6.5.6   p.61    10th paragraph 
We don't understand the content of this paragraph? What is "_1, _2, _3"?
[JA] See 3 above. The details are described in the Boost documentation, 
not IEEE 1666.
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)
(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.
6       6.6.6.1 p.74    1st paragraph of "resume" 
"The explanation of timing of resume seems to be inconsistent with the 
explanation in ""suspend"".
In ""resume"", ""the process instance shall be made runnable in the 
current evaluation phase"".
In ""suspend"", ""the process instance shall become runnable in the next 
evaluation phase in which resume is called""."
[JA] With resume, given the conditions are satisfied ("if and only if 
..."), the target process is indeed made runnable in the current 
evaluation phase (the evaluation phase in which resume is called) and will 
be selected to run in non-deterministic order.
[JA] With suspend, if the process is currently runnable, it will be 
removed from the set of runnable processes, and hence will not run in the 
evaluation phase in which suspend is called (assuming it has not run 
already). The phrase "next evaluation phase" refers to the conditions for 
subsequently resuming that same process after it has been suspended.
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.
8       6.6.6.2 p.78 
Use cases of sync_reset_on/sync_reset_off are helpful to understand these 
functions and purposes.
[JA] sync_reset_on/off simply give a procedural interface to switch sync 
reset on or off, as opposed to specifying a reset signal.
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).
10      6.6.6.4 p.81    4th paragraph 
The reason of the priorities among kill, reset, and so on, should be 
described.
[JA] I am not sure there is a compelling rationale. We just needed to make 
a choice. Bishnupriya?
11      6.6.7   p.82    1st paragraph 
In the CLARIFICATION sentences, LRM says, "if the most recently created 
process instance was not within the current module, ..., an implementation 
may return either a handle to the most recently created process instance 
or an invalid handle". In this case, returning only "an invalid handle" 
seems to be sufficient. If not, the reason or explanation should be 
described.
[JA] This is a corner case that we missed from IEEE 1666-2005. It is 
unimportant to the user (because we are talking about calling 
sc_get_current_process_handle() from a context where there is no process, 
i.e. a callback), but we thought it important not to overconstrain the 
implementation by being too specific. All this says is that the user can 
rely on sc_get_current_process_handle() not to crash.
12      6.10.4  p.95    5th paragraph 
LRM says, "when a hierarchically named event is constructed, if a empty 
string is passed as a constructor argument, the string name shall be set 
to "event"". It seems to be inconsistent with that event should have 
hierarchical name, or we may misread.
[JA] See the 2nd para. When constructed during elaboration, every event 
shall be hierarchically named, even if constructed using sc_event() or 
sc_event("").
13      9.5     p.424 - 433 
More examples of sc_vector can be helpful to understand its convenience 
instead of using vector of stl. Also, examples of sc_assemble_vector are 
helpful.
[JA] There are examples showing
* Vector-of-ports
* Vector-of-exports
* Vector-of-signals
* Vector-of-modules, including custom constructor arguments
* Binding vector-of-ports to vector-of-signals, with and without iterators
* sc_assemble_vector as the port in a bind operation
* sc_assemble_vector as the export in a bind operation
What else would you like?
14      10.1    p.438   1st paragraph 
Since three compliances belong to different category; a) is about 
simulator implementation, b) and c) are about models, a) and b)/c) are 
explained in the different paragraph.
[JA] You are correct, and that is one of the objectives in making the 
distinction between these terms. I will add a remark to the introductory 
paragraph.
15 
To enable dynamic process, we must define the macro 
"SC_INCLUDE_DYNAMIC_PROCESSES". But the definition and the explanation are 
not given in the LRM. They should be in the LRM.
[JA] The following are definitely features of the OSCI PoC simulator, not 
the IEEE standard
* SC_INCLUDE_DYNAMIC_PROCESSES
* SC_INCLUDE_FX
* SC_FX_EXCLUDE_OTHER
* SC_DEPRECATION_WARNINGS
* sc_report_handler::set_actions("/IEEE_Std_1666/deprecated", ...)
* DEBUG_SYSTEMC
* SC_SIGNAL_WRITE_CHECK DISABLE
-- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Tue Jan 11 03:57:45 2011
This archive was generated by hypermail 2.1.8 : Tue Jan 11 2011 - 03:57:48 PST