|
Post by gchopra on May 3, 2013 4:09:35 GMT
Could somebody explain the difference between dynamic and static processes in SystemC.
|
|
|
Post by gunjan on May 3, 2013 4:39:17 GMT
A process has static sensitivity if it contains one or more calls to wait(). The sensitivity is set before the simulation starts running, usually be using "sensitive" in its parent module's constructor.
Dynamic sensitivity is where a process contains one or more calls to wait(a_time_value) or wait(a_named_event). It is dynamic because the conditions that cause a thread process to wake up change as each wait statement is executed when the simulation runs.
|
|
|
Post by gchopra on May 3, 2013 5:22:54 GMT
A process has static sensitivity if it contains one or more calls to wait(). The sensitivity is set before the simulation starts running, usually be using "sensitive" in its parent module's constructor. Dynamic sensitivity is where a process contains one or more calls to wait(a_time_value) or wait(a_named_event). It is dynamic because the conditions that cause a thread process to wake up change as each wait statement is executed when the simulation runs. Hello Gunjan, Static & Dynamic process is totally different to static & Dynamic sensitivity list. Here you are talking about static & Dynamic sensitivity list but i want to know about Static & Dynamic process.
|
|
|
Post by amitk3553 on May 3, 2013 10:42:38 GMT
Could somebody explain the difference between dynamic and static processes in SystemC. Static processes are created before the start of simulation, by calling e.g. SC_THREAD macro or sc_spawn in the constructor or end_elaboration callback. Dynamic processes are created by calling sc_spawn within another process (which will not be executed until the simulation is running). Regards Amit Kumar
|
|
|
Post by gchopra on May 6, 2013 9:05:11 GMT
Hello Amit Kumar,
Thanks For your reply !!!
|
|
|
Post by karandeep963 on May 6, 2013 10:14:18 GMT
A static process is a process created during the construction of the module hierarchy or from the before_end_of_elaboration callback.
A dynamic process is a process created from the end_of_elaboration callback or during simulation.
Technically, the process macros and sc_spawn ( launches the function called as a dynamic process,) can each create either static or dynamic processes.
Static processes must use event finders when being made sensitive to ports, but dynamic processes cannot use event finders when being made sensitive.
|
|
|
Post by amitk3553 on May 6, 2013 10:26:11 GMT
A static process is a process created during the construction of the module hierarchy or from the before_end_of_elaboration callback. A dynamic process is a process created from the end_of_elaboration callback or during simulation. Technically, the process macros and sc_spawn ( launches the function called as a dynamic process,) can each create either static or dynamic processes. Static processes must use event finders when being made sensitive to ports, but dynamic processes cannot use event finders when being made sensitive. "Static processes must use event finders when being made sensitive to ports, but dynamic processes cannot use event finders when being made sensitive"Event finders means made sensitive to some events or something else. Please explain the BLUE line.
|
|
|
Post by karandeep963 on May 7, 2013 3:09:01 GMT
An event finder function is called when creating static sensitivity to events through a port. Because port binding may be deferred, it may not be possible for the implementation to retrieve an event to which a process is to be made sensitive at the time the process instance is created. Instead, an application should call an event finder function, in which case the implementation shall defer the adding of events to the static sensitivity of the process until port binding has been completed. These deferred actions shall be completed by the implementation before the callbacks to function end_of_elaboration.
Member functions pos and neg shall return a reference to class sc_event_finder, where the event finder
object itself shall be constructed using the member function posedge_event or negedge_event, respectively
|
|