Проблемы с обработкой значений sc_logic в SystemC

Я пишу приложение для имитации аппаратной системы с использованием библиотек SystemC. Моя проблема заключается в обработке типа sc_logic. Рассмотрим простой модуль

SC_MODULE(MyModule) {
   sc_in_clk clk;
   sc_out<sc_logic> outsig;
   void main_process();
   SC_CTOR(MyModule) {
      SC_METHOD(main_process);
      sensitive << clk;
   }
};

Рассмотрим реализацию процесса:

void MyModule::main_process() {
   this->outsig.write(SC_LOGIC_1);
}

ХОРОШО. Проблема: outsig всегда равно '0' и никогда не меняет своего значения. Я пишу много сигналов в своей симуляции, но эта проблема возникает только с sc_logic значениями в sc_out портах.

Кто-нибудь может мне помочь?


person Andry    schedule 13.04.2011    source источник
comment
Я не помню ничего особенного в sc_logic. Я думаю, что значение по умолчанию равно 0, поэтому запись SC_LOGIC_1 должна запускать выходной порт и прикрепленный к нему сигнал. Это определенно работает, когда я пишу этот тестовый пример, используя библиотеку GBL (www.gbresearch.com/gbl). Возможно, вам нужно проверить, действительно ли приходит clk и вызывается main_process(). Установите точку останова отладки в main_process.   -  person Gene Bushuyev    schedule 01.06.2011


Ответы (1)


Поместите sensitive << clk перед SC_METHOD в конструкторе.

person Giovanni Funchal    schedule 07.07.2011