Я просматривал какой-то учебник по SystemC, и там было упоминание, что мы не можем поставить ожидание в SC_METHOD, это не объясняло, почему.
Почему в SystemC нельзя поставить ожидание в SC_METHOD?
Ответы (2)
Это связано с тем, что SC_METHOD
не имеет собственного потока выполнения. Каждый раз, когда запускается событие из списка чувствительности SC_METHOD
, код SC_METHOD
(в идеале) полностью выполняется. Другими словами, вызов wait()
в SC_METHOD
приведет к зависанию самой симуляции.
Напротив, SC_THREAD
имеет собственный поток выполнения, и его активность обычно моделируется внутри цикла, содержащего или не содержащего операторы wait()
, который приостанавливает выполнение потока. Всякий раз, когда инициируется событие (из списка чувствительности), выполнение возобновляется с команды, следующей за ранее выданной wait()
.
Это особенность языка. SC_METHOD предназначен для выполнения до завершения без отсрочки или потери контекста, в отличие от SC_THREAD.