новая библиотека SystemC 2.3.0 была выпущена в июле 2012 года. Сообщалось, что она может поддерживать моделирование таких концепций, как домены мощности и абстрактные планировщики. Кто-нибудь проверял или работал над тем, как SystemC 2.3.0 может поддерживать моделирование доменов мощности и абстрактных планировщиков? Любая рекомендация ссылок приветствуется!
SystemC 2.3.0 поддерживает моделирование доменов мощности и абстрактных планировщиков.
Ответы (1)
SystemC IEEE Std 1666-2011 включает "новый процесс расширения управления, которые позволяют и упрощают моделирование доменов питания и абстрактных планировщиков" согласно этот сайт!. Таким образом, именно эти новые расширения управления процессами предоставляют примитивы для моделирования энергетических доменов/планировщиков.
Я изучил SystemC IEEE Std 1666-2005 LRM, и действительно, класс sc_process_handle
теперь имеет больше функций-членов: suspend
, resume
, disable
и enable
, sync_reset_on
и sync_reset_off
, kill
и reset
, throw_it
.
Вы можете следовать этому примеру из LRM для реализации доменов мощности (например, путем отключения/включения или сброса процессов в ответ на события, которые вызывают отключение или включение питания):
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);
};
person
Ahmed Nassar
schedule
03.04.2013