the new SystemC library 2.3.0 was released in July, 2012.It was reported to be able to support modeling of concepts such as power domains and abstract schedulers. Has anyone checked or worked on how SystemC 2.3.0 can support the modeling of power domains and abstract schedulers? Any recommendation of references are appreciated!
Asked
Active
Viewed 251 times
1 Answers
2
SystemC IEEE Std 1666-2011 includes "new process control extensions, which enable and simplify the modelling of power domains and abstract schedulers" according to this website!. So it is these new process control extensions that provide the primitives for power-domain/schedulers modeling.
I examined the SystemC IEEE Std 1666-2005 LRM, and, indeed, the sc_process_handle
class now has more member functions: suspend
, resume
, disable
and enable
, sync_reset_on
and sync_reset_off
, kill
and reset
, throw_it
.
You can follow this example from the LRM to implement power domains (e.g., by disabling/enabling or resetting processes in response to events that trigger power shutdown or power-up sequences):
struct M1: sc_module
{
M1(sc_module_name _name)
{
SC_THREAD(ticker);
SC_THREAD(calling);
SC_THREAD(target);
t = sc_get_current_process_handle();
}
sc_process_handle t;
sc_event ev;
void ticker()
{
for (;;)
{
wait(10, SC_NS);
ev.notify();
}
}
void calling()
{
wait(15, SC_NS);
// Target runs at time 10 NS due to notification
t.suspend();
wait(10, SC_NS);
// Target does not run at time 20 NS while suspended
t.resume();
// Target runs at time 25 NS when resume is called
wait(10, SC_NS);
// Target runs at time 30 NS due to notification
t.disable();
wait(10, SC_NS);
// Target does not run at time 40 NS while disabled
t.enable();
// Target does not run at time 45 NS when enable is called
wait(10, SC_NS);
// Target runs at time 50 NS due to notification
sc_stop();
}
void target()
{
for (;;)
{
wait(ev);
cout << "Target awoke at " << sc_time_stamp() << endl;
}
}
SC_HAS_PROCESS(M1);
};

AndresM
- 1,293
- 10
- 19

Ahmed Nassar
- 4,683
- 2
- 19
- 26