#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
в конструкторе.