2016-04-08 3 views
5

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

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

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

Я буду признателен за любые материалы или советы.

+2

Вы можете использовать '*' неявные соединения порта, если патентный модуль имеет те же переменные, как имена портов в подмодуль.. Но используйте его осторожно. – rahulcodesinverilog

+0

Вы можете создавать скрипты perl и вставлять файлы модулей и генерировать один верхний файл, где вы можете сделать некоторые stings-логики и создавать субмодули в верхнем файле. Попробуйте с небольшим модулем, а затем расширьте его своим требованием. Вы не можете запрашивать прямой скрипт, но можете, но это возможно. –

+0

Не автоматическое решение, но вот что я часто делаю. Вставьте определение субмодуля (т.е. «module # (...) (логика ввода ..., логика вывода ...);», а затем добавьте имя экземпляра и удалите все направления и типы портов. Теперь используйте макросъемку функцию в редакторе, чтобы сделать это: 'CUT. PASTE (PASTE)'. Затем дважды щелкните каждое имя порта, чтобы выделить его, а затем выполните макрос. Это изменяет 'some_name' на' .some_name (some_name) '. Если порт и имя соединения одно и то же, а затем выполненная работа. Если нет, легко сделать двойной щелчок, копирование и вставку. Мне не нравится '. *'. –

ответ

4

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

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

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

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

Смежные вопросы