Доступ к Verilog Genvar сгенерировал экземпляры в коде моделирования
-
27-10-2019 - |
Вопрос
Это вопрос об verilog. Я работаю с Xilinx ISE в качестве среды разработки.
Я пытаюсь получить доступ к переменным в моделировании, которое автоматически генерируется с помощью GenVar, но я получаю следующую ошибку -> HDLCOMPILER: 71
Пример проблемы:
genvar i;
generate
for(i=0; i < N; i=i+1)
begin:Sys_Modules
TypeXModule #(.width(10)) xmod(.dataY(dataY)));
end
endgenerate
Когда я запускал синтез или симуляцию, я вижу, что создаются экземпляры sys_modules [0..n-1] .xmod.
Когда я пытаюсь добавить линию к моделированию, доступа к массиву sys_modules:
Sys_modules [i] .xmod.datay
Я получаю следующую ошибку:
HDLCOMPILER: 71 Datay не объявлен в соответствии с префиксом XMOD
Есть ли способ получить доступ к автоматически сгенерированным значениям в моделировании?
Спасибо!
Решение
Законно написать иерархическую ссылку на сгенерированный экземпляр. Функциональность описана в разделах 2.7.2 и 12.1.3 стандарта IEEE Verilog. Тем не менее, индекс экземпляра должен быть постоянным, чтобы его можно было разрешить во время компиляции.
Другие советы
Вы не можете использовать иерархические ссылки по перекрестному инстановке в синтезированном Verilog.
Я думаю, тебе не повезло. Симуляторы, похоже, не любят литературы вне модуля (OOMR), указывающие на сгенерированные блоки, как вы обнаружили.
В последнее время я столкнулся с аналогичной проблемой при создании параметризованного монитора Testbench. Я бы переменный номер подблокировался, созданный в зависимости от parameter
. Анкет В рамках этого мне нужно было иметь Toplevel .start()
Задача, которая назвала .start()
Задачи в каждом из созданных модулей. Я не мог использовать for
петля, чтобы сделать это из -за этой проблемы OOMR.
Так что мне пришлось:
- Определить а
reg
что топлевель.start()
задача переключена - написать
always @
Блок запустил этоreg
- записывать еще один
generate
Раздел в этом всегда блокирует, чтобы вызовать.start()
на каждом из подмодулей.
Если вам действительно нужно заглянуть в свой generate
D Модули, может быть, вы могли бы попробовать обходной путь, как выше? Например, проделайте автобус в Toplevel и используйтеgenerate
Заявление, чтобы заглянуть в свой оригинал generate
D Смотанции для копирования/назначения интересных сигналов на этот автобус Toplevel.