SystemC 2.3.0 поддерживает моделирование доменов мощности и абстрактных планировщиков.

новая библиотека SystemC 2.3.0 была выпущена в июле 2012 года. Сообщалось, что она может поддерживать моделирование таких концепций, как домены мощности и абстрактные планировщики. Кто-нибудь проверял или работал над тем, как SystemC 2.3.0 может поддерживать моделирование доменов мощности и абстрактных планировщиков? Любая рекомендация ссылок приветствуется!


person coder    schedule 04.02.2013    source источник


Ответы (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