На самом деле это довольно широко описано в SystemVerilog LRM . Взгляните на Раздел 23.3.2.4 Подключение экземпляров модуля с использованием подстановочных знаков именованных соединений портов (. *) . Цитируя первую часть этого раздела:
SystemVerilog может неявно создавать экземпляры портов с использованием подстановочного синтаксиса. * Для всех портов, где имя порта экземпляра совпадает с именем подключаемого порта, а их типы данных эквивалентны. Это устраняет необходимость перечисления любого порта, в котором имя и тип объявления соединения соответствуют имени и эквивалентному типу порта экземпляра.
Чтобы отразить это на вашем примере: предположим, что модуль circuit
имеет порты a
, b
, y
и d
.
Вы можете подключить их полностью в явном виде, как описано в Разделе 23.3.2.2 в LRM. Это необходимо, если имена или ширина не совпадают:
circuit UUT
(.a (a),
.b (b),
.c (c),
.y (y));
Вы также можете использовать неявные соединения с именованными портами (Раздел 23.3.2.3 LRM):
circuit UUT
(.a,
.b,
.c,
.y);
Однако,Самый быстрый способ, если вы не хотите вводить все порты, это убедиться, что имена и типы сигналов совпадают в иерархии. Затем вы можете просто использовать подстановочные имена именованных подключений:
circuit UUT
(.*);
Пожалуйста, имейте в виду, что последний метод может затруднить отладку вашего RTL, поскольку он становится более сложным при трассировке сигналов привысокий уровень.
Бонус: В дополнение к LRM взгляните на бумагу Sutherland & Mills Synthesizing SystemVerilog - развеивает миф о том, что SystemVerilog предназначен только для проверки . В разделе 7 дается отличная сводка о различных типах соединений портов и о преимуществах соединений точка-имя и точка-звезда.