Запретить выполнение SC_METHOD без события / триггера - PullRequest
1 голос
/ 28 мая 2020

Мой метод fsm1 выполняется один раз даже без события, и поэтому id1_cmd.read() и id1_value.read() содержат 0, а не правильные значения.

//------------------------------------------------------------------
//  Method:  control::fsm1() 
//  Parameter: None
//  @Sensitivity: ID_1_cmd (unsigned int)
//------------------------------------------------------------------
void control::fsm1() {
   cout << id1_cmd.read() << endl;
   cout << id1_value.read() << endl;

}

//------------------------------------------------------------------
//  Method: Constructor
//------------------------------------------------------------------
SC_CTOR(control) {
    SC_METHOD(fsm1);
    sensitive << id1_cmd;
}

Существует способ предотвратить его выполнение один раз или я должен всегда обрабатывать этот случай в моих методах?

1 Ответ

3 голосов
/ 29 мая 2020

Используйте метод dont_initialize, см. Справочное руководство по языку

SC_CTOR(control) {
    SC_METHOD(fsm1);
    sensitive << id1_cmd;
    dont_initialize();
}
...