John,
Very good point.
For the dont_initialize() case, we should partition it according to before and after initialization phase.
"Disabling a process before simulation has started (e.g., from one of the callback phases), or before the process has executed for the first time, shall have the following behavior:
*
if the process was declared with dont_initiaze(), then the disable shall take effect immediately, and the process shall not be eligible to run again until it is enabled
*
if the process was not declared with dont_initialize(), then the default behavior is to schedule the process in the initialization phase. If the process is disabled before the initilaization phase, the disable shall take effect immediately, and the process shall not be eligible to run again until it is enabled. If the process is disabled after the initialization phase, the disable shall take effect only after the first default execution of the process.
Works?
Thanks,
-Bishnupriya
________________________________
From: john.aynsley@doulos.com [mailto:john.aynsley@doulos.com]
Sent: Thursday, September 02, 2010 8:25 PM
To: Bishnupriya Bhattacharya; systemc-p1666-technical@eda.org
Subject: disable and the Initiialization Phase
Bishnupriya,
The revised spec says:
"Disabling a process before simulation has started (e.g., from one of the callback phases), or before the process has executed for the first time, shall have the following behavior:
* If the process was declared with dont_initialize(), then the disable shall take effect immediately, and the process shall not be eligible to run again until it is enabled
* If the process was not declared with dont_intialize(), then that implies the process has already been scheduled to run for the first time, and the disable shall take effect only after the first default execution of the process "
That I don't like! LRM 4.2.1.1 says that processes are made runnable during the initialization phase, which occurs after elaboration. If a process is disabled during elaboration, I see no reason why it should execute during initialization. That would seem to contradict the rule that a process cannot get added to the set of runnable processes while it is disabled (Scheduling Insights para 3).
John A
-- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Fri Sep 3 03:27:21 2010
This archive was generated by hypermail 2.1.8 : Fri Sep 03 2010 - 03:27:21 PDT