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

#c #c #systemc

#c #c #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 портах.

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

Комментарии:

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

Ответ №1:

Ставится sensitive << clk перед SC_METHOD в конструкторе.