IEEE 1800-2017 LRM сообщает в разделе 25.9 Виртуальные интерфейсы , что:
Хотя интерфейс может содержать иерархические ссылки на объекты вне его телаили порты, которые ссылаются на другие интерфейсы, запрещается использовать интерфейс, содержащий эти ссылки в объявлении виртуального интерфейса.
Является ли следующий пример такой запрещенной иерархической ссылки?
interface some_other_intf();
bit some_signal;
endinterface
interface some_intf();
some_other_intf intf();
task foo();
intf.some_signal <= 0;
endtask
endinterface
virtual some_intf some_vif;
У меня есть инструмент, который жалуется на строку, содержащую intf.some_signal <= 0
.Хотя intf.some_signal
является иерархической ссылкой, это относительная ссылка, поэтому я не понимаю, почему это было бы запрещено.
intf
является частью тела интерфейса.Я не уверен, как интерпретировать порты , которые ссылаются на другие интерфейсы часть.