Незаконное присвоение классу mtiUvm.uvm_pkg::uvm_component

#system-verilog #uvm

#системный журнал проверки #uvm

Вопрос:

Я получаю эту ошибку при попытке получить доступ к uvm_config_db для доступа к переменной. Я погуглил и нашел следующий ответ на форумах accellera:

http://forums.accellera.org/topic/406-compilation-error-regarding-illegal-class-assignment/

Вы не можете использовать это как контекст внутри последовательности; вы должны полагаться на полное имя последовательности.

Кто-нибудь может объяснить, почему это так? Спасибо

Комментарии:

1. Отредактируйте свой вопрос, чтобы он был более конкретным. Оставьте ссылку там, но добавьте туда и свой код, чтобы людям, читающим вопрос, было проще точно понять, в чем проблема. Помните, цель состоит не только в том, чтобы получить ответ на ваш вопрос за вас, но и в том, чтобы другие люди могли извлечь выгоду в будущем.

Ответ №1:

Значение, которое вы передаете для контекста, в uvm_config_db::get/set , в вашем случае this , должно относиться к компоненту UVM. На основе значения context создается полный иерархический путь, к которому применяется параметр конфигурации. Если this это последовательность (которая не наследуется от uvm_component , то она не будет иметь фиксированной иерархии.

Что я обычно делаю в последовательностях, так это:

 uvm_config_db #(some_type)::get(p_sequencer, "", "some_field", some_field);
  

p_sequencer является компонентом UVM, и вы можете применить настройки конфигурации к любой последовательности, запущенной в этом секвенсоре.