#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, и вы можете применить настройки конфигурации к любой последовательности, запущенной в этом секвенсоре.