Я пытаюсь понять или исследовать лучшие практики проектирования ASIC в verilog. Я работаю над блоком среднего размера с ~ 20 вспомогательными модулями (каждая 1000 строк кода). Это кропотливая работа, чтобы вручную создать экземпляр всего субмодуля и подключиться к порту для создания RTL верхнего уровня.Есть ли какой-либо рекомендуемый способ автоматизации подключения порта модуля?
Я хочу написать сценарий для автоматизации этого. Пока мы можем определить входные/выходные данные всех подмодулей и то, как каждый из подмодулей связан друг с другом, не должно быть слишком сложно автоматически генерировать верхний уровень. Однако у меня недостаточно опыта в автоматизации проектирования. Мне было интересно, может ли кто-нибудь дать мне несколько указаний о том, как начать.
- Есть ли какой-либо инструмент с открытым исходным кодом для достижения того, что я пытаюсь сделать? Я пока не нашел.
- Есть ли стандартизованный способ генерации синтезируемого кода такого рода?
Я буду признателен за любые материалы или советы.
Вы можете использовать '*' неявные соединения порта, если патентный модуль имеет те же переменные, как имена портов в подмодуль.. Но используйте его осторожно. – rahulcodesinverilog
Вы можете создавать скрипты perl и вставлять файлы модулей и генерировать один верхний файл, где вы можете сделать некоторые stings-логики и создавать субмодули в верхнем файле. Попробуйте с небольшим модулем, а затем расширьте его своим требованием. Вы не можете запрашивать прямой скрипт, но можете, но это возможно. –
Не автоматическое решение, но вот что я часто делаю. Вставьте определение субмодуля (т.е. «module # (...) (логика ввода ..., логика вывода ...);», а затем добавьте имя экземпляра и удалите все направления и типы портов. Теперь используйте макросъемку функцию в редакторе, чтобы сделать это: 'CUT. PASTE (PASTE)'. Затем дважды щелкните каждое имя порта, чтобы выделить его, а затем выполните макрос. Это изменяет 'some_name' на' .some_name (some_name) '. Если порт и имя соединения одно и то же, а затем выполненная работа. Если нет, легко сделать двойной щелчок, копирование и вставку. Мне не нравится '. *'. –