Доступ к Verilog Genvar сгенерировал экземпляры в коде моделирования

StackOverflow https://stackoverflow.com/questions/7339696

Вопрос

Это вопрос об 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() на каждом из подмодулей.

Если вам действительно нужно заглянуть в свой generateD Модули, может быть, вы могли бы попробовать обходной путь, как выше? Например, проделайте автобус в Toplevel и используйтеgenerate Заявление, чтобы заглянуть в свой оригинал generateD Смотанции для копирования/назначения интересных сигналов на этот автобус Toplevel.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top