Ошибка синтеза иерархических имен в vivado

Используя Vivado 2015.1, я пытаюсь использовать иерархическое имя для доступа к объекту в модуле верхнего уровня моего дизайна. Симуляция работает нормально, но я получаю следующую ошибку синтеза:

[Synth 8-660] unable to resolve 'top' ["child.sv":3]

module top()
    logic foo;
endmodule

module child()
    always(bar) begin
        logic top.foo <= bar;
    end
endmodule

Любые идеи?


person jwanga    schedule 25.06.2015    source источник
comment
С помощью Verilog вы пытаетесь описать аппаратное обеспечение. Язык частично вращается вокруг описания связи между модулями. Как вы описываете логику, было бы очень трудно понять, было ли у foo несколько драйверов. По мере того, как дизайн становится более сложным, такое кодирование в конечном итоге становится непригодным для сопровождения. Невозможно узнать, что устанавливает значение foo.   -  person Morgan    schedule 25.06.2015
comment
Мое предпринятое решение не идеально, однако код, который я разместил, является просто упрощенным примером. В моей фактической реализации foo настолько велик, что сам по себе является основным ограничением памяти в моем проекте. Если бы я передал foo нижнему модулю через порт, то была бы сделана копия, это быстро увеличило бы мой чип, когда я добавляю подмодули. Можете ли вы предложить лучшую стратегию для манипулирования reg в родительском модуле из дочернего модуля без создания копий? Спасибо.   -  person jwanga    schedule 25.06.2015
comment
Будет сделана копия, я в этом не разбираюсь, Копия куда? Проводное соединение будет выполнено, а не скопировано.   -  person Morgan    schedule 25.06.2015


Ответы (2)


Итак, получается, что иерархические имена не поддерживаются в синтезе Vivado.

http://www.xilinx.com/support/documentation/sw_manuals/xilinx2015_1/ug901-vivado-synchronous.pdf

person jwanga    schedule 25.06.2015
comment
Иерархическая привязка должна использоваться только для тестового стенда. Языки SystemVerilog и Verilog предназначены для проектирования и проверки. Если бы иерархическая ссылка была синтезируемой, не было бы смысла иметь порты ввода/вывода/интерфейса. - person Greg; 29.06.2015
comment
иногда проще просто использовать иерархические имена, я использую их очень часто перед изменением всех верхних модулей. Поддерживается в версии 2019.1 - person Alexis; 09.04.2020

Поддерживается в Vivado 2019.1 UG901 введите здесь описание изображения

person Alexis    schedule 09.04.2020
comment
В таблице по-прежнему не указано, предназначена ли поддержка для синтеза или только для моделирования. Но я поверю тебе на слово. - person andrsmllr; 16.07.2020
comment
Эта таблица предназначена для синтеза Verilog, а функция иерархических имен поддерживается, начиная с Vivado 2017.3. - person Tey'; 27.01.2021