Использование переменной super.body () недопустимо, поскольку считается «не объявленным» - PullRequest
0 голосов
/ 08 апреля 2019

Я расширил использование моего virtual task body() в классе последовательности, а в объявлении родительского класса body() я объявил переменную.Однако при использовании его в расширенном классе 'body() я столкнулся с ошибкой компиляции Identifier 'q' has not been declared yet.

Вот пример:

// Inside a base sequence class
virtual task body();
  byte q [$];
  ... 
  .. // rest of the code
  .
endtask : body


// Inside extended sequence class
virtual task body();
  super.body();

  q.push_back('hFF); // X Compilation error: Identifier 'q' has not been declared yet.

  ... 
  .. // rest of the code
  .

endtask : body

Я не вижу никакой логической причины, почемуПеременная не была замечена.Я, конечно, могу объявить это вне области задач в качестве члена класса, но я хочу уточнить эти незначительные дыры в моем понимании SV.

Любая помощь, пожалуйста?Заранее спасибо.

1 Ответ

0 голосов
/ 08 апреля 2019

q локально для задачи body в суперклассе. Задача body в производном классе - это другая задача и, следовательно, другая область. Вы не сможете увидеть его из задачи body в производном классе, равно как и из любой другой задачи.

...