Почему в SystemC нельзя поставить ожидание в SC_METHOD?

Я просматривал какой-то учебник по SystemC, и там было упоминание, что мы не можем поставить ожидание в SC_METHOD, это не объясняло, почему.


person kartik    schedule 28.05.2013    source источник


Ответы (2)


Это связано с тем, что SC_METHOD не имеет собственного потока выполнения. Каждый раз, когда запускается событие из списка чувствительности SC_METHOD, код SC_METHOD (в идеале) полностью выполняется. Другими словами, вызов wait() в SC_METHOD приведет к зависанию самой симуляции.

Напротив, SC_THREAD имеет собственный поток выполнения, и его активность обычно моделируется внутри цикла, содержащего или не содержащего операторы wait(), который приостанавливает выполнение потока. Всякий раз, когда инициируется событие (из списка чувствительности), выполнение возобновляется с команды, следующей за ранее выданной wait().

person freitass    schedule 28.05.2013

Это особенность языка. SC_METHOD предназначен для выполнения до завершения без отсрочки или потери контекста, в отличие от SC_THREAD.

person zehawk    schedule 30.07.2013