Есть ли рекомендуемый способ автоматизировать подключение порта модуля?

Я пытаюсь понять или исследовать лучшие практики проектирования ASIC в Verilog. Я работаю над блоком среднего размера с ~ 20 субмодулями (каждый ~ 1000 строк кода). Это кропотливая работа - вручную создать экземпляры всех подмодулей и выполнить подключение к порту для создания RTL верхнего уровня.

Я хочу написать сценарий для автоматизации этого. Пока мы можем определить входы / выходы всех подмодулей и то, как каждый подмодуль связан друг с другом, не должно быть очень сложно автоматически сгенерировать верхний уровень. Однако у меня недостаточно опыта в автоматизации проектирования. Мне было интересно, может ли кто-нибудь подсказать мне, с чего начать.

  • Есть ли какой-нибудь инструмент с открытым исходным кодом для достижения того, что я пытаюсь сделать? Пока не нашел.
  • Есть ли какой-нибудь стандартизованный способ генерировать синтезируемый код такого рода?

Я буду очень признателен за любой вклад или совет.


person newbie    schedule 08.04.2016    source источник
comment
Вы можете использовать .* неявные соединения портов, если патентный модуль имеет те же переменные, что и имена портов в подмодуле. Но используйте его осторожно.   -  person rahulcodesinverilog    schedule 08.04.2016
comment
Вы можете создать Perl-скрипт и входные файлы модулей и сгенерировать один верхний файл, в котором вы можете выполнить некоторую логику и создать экземпляры подмодулей в верхнем файле. Попробуйте использовать небольшой модуль, а затем расширьте его в соответствии с вашими требованиями. Вы не можете попросить прямой сценарий, но можете, но это возможно.   -  person Prakash Darji    schedule 08.04.2016
comment
Не автоматическое решение, но я часто делаю вот что. Вставьте определение подмодуля (т.е. module #(...) (input logic ..., output logic ...);, а затем добавьте имя экземпляра и удалите все направления и типы портов. Теперь используйте функцию записи макроса в редакторе, чтобы сделать это: CUT . PASTE ( PASTE ). Затем дважды щелкните имя каждого порта, чтобы выделить его, а затем выполните макрос. Это изменит some_name на .some_name(some_name). Если порт и имя подключения совпадают, значит, работа выполнена. Если нет, легко сделать еще немного двойного щелчка, копирования и вставки. Мне не нравится .*.   -  person Matthew Taylor    schedule 08.04.2016


Ответы (1)


В зависимости от того, какой текстовый редактор вы используете, вы можете использовать некоторые уже существующие инструменты. Для Emacs существует надстройка, которая поддерживает автоматическое создание и подключение сигналов, при условии, что вы следуете определенным соглашениям об именах:

http://www.veripool.org/wiki/verilog-mode/Verilog-mode_veritedium

Для пользователей vim есть несколько плагинов, которые позволяют использовать сценарий Emacs, например этот:

http://www.vim.org/scripts/script.php?script_id=1875

person rdr    schedule 08.04.2016