Pull to refresh

Comments 14

Добрый день! Недавно пытался сделать что-то похожее для VHDL и уперся в то, что в отличии от Verilog'a важен порядок компиляции файлов. Серьезные IDE справляются с этим играючи, но «выковырять» от туда, как они это делают — не вышло. В связи с этим вопрос — нет ли каких-то наработок подобного для VHDL?

Пы.Сы.Если честно, то получилось добраться до порядка файлов в компиляции через non-project mode Vivado, но это слишком уж костыльный вариант. Если при этом в проекте есть криптованные ядра, то наличие порядка файлов уже становится мало, а генерить скрипты для симуляции Vivado в этом режиме не может. Создавать каждый раз проект — то же не слишком удобно.
Приветствую!

С VHDL никогда не работал, так что ничего конкретного подсказать, к сожалению, не смогу. Есть мысль попробовать запустить симуляцию вашего проекта, используя NativeLink квартуса и посмотреть, какой скрипт он сгенерит, затем попробовать проанализировать его) Что касается наличия чип-зависимых IP, тут уже нужны библиотеки производителя, их надо использовать при указании библиотек в ModelSim.

Удачи!
А вы попробуйте для начала в ModelSim создать проект, добавить в него все необходимые файлы, а потом запустите Auto-Generating Compile Order. На основе расставленной очередности делайте базовый сценарий. Проектом можно больше не пользоваться, а организовывать все на tcl, sh или что вам нравиться. Входе работы делаем редакцию ручками это уже не так сложно.
некоторые IDE умеют автоматически компилировать исходники (синтезируемое описание) для симуляции. HDL Designer точно умеет сам все скомпилить для модельсима, остается только файлы тестбенча скомпилить, которых обычно намного меньше и не стоит больших трудов их в скрипт добавить. вроде вивада тоже умеет, но могу ошибаться, давно с ней не работал
Похожий подход к отладке видел вот здесь :
— .bat создает и удаляет каталог для всего хлама, связанного с симуляцией;
— .tcl — оперирует компиляцией, сигналами и отладкой
Я у себя добавляю только формирование строки vlog по частям (чтобы не в одну линию).
Достаточно удобно, когда руками (в интерфейсе) делать влом, а с make-файлами связываться еще не хочется.
Спасибо за ссылку, обязательно ознакомлюсь :)
Мне посоветовали добавить опрос, прикрепил его, проголосуйте, пожалуйста) Если будут голоса за линукс, надо будет дополнить статью инструкциями, как то же самое делать в линуксе
на самом деле скриптинг запуска тестбенчей намного более мощная штука. можно при запуске устанавливать параметры в зависимости от который будет исполняться конкретный тест (набор тестов) из всего тестового окружения путем изменения в верхнем уровне тестбенча значений переменных, на основании выбранного теста можно выбирать различные времянки предварительно подготовленные (кстати, намного удобнее держать скрипт создания времянки в отдельном файле, особенно если много сигналов выведено), можно отключать некоторые элементы DUT, особенно если тестируемый модуль имеет множество блоков, что может ускорить симуляцию в некоторых случаях значительно)
Было бы здорово увидеть статью об этом)
не берусь обещаться) я не очень большой в этом специалист, и время не радует своим наличием, но постараюсь)
Первую ссылку заменил, спасибо) В тексте был документ для более старой версии ModelSim. Вторая в тексте точно такая же
1. Добавим, что можно не только .do, но и .tcl
2. Вы напрасно затеваете папку rtl_work. Многие разработчики пользуются дефолтной папкой/библиотекой work и они вас не сразу поймут.
Строчки:
vlib rtl_work
vmap work rtl_work

можно заменить на:
vlib work

3. Кроме того удалять библиотеку не обязательно, можно создавать новую поверх старой. Он конечно напишет предупреждение что библиотека уже есть, но ничего плохого не случится.
4. Зачем брать имена компилируемых файлов в фигурные скобки? Если это coding style, то вы не сможете подставить переменную в путь файла. Например {$dir/your_file.sv} не сработает.
5. -L нужен при линковке сторонних (кроме work) библиотек. work линкуется по умолчанию.
6. В vlog -work work совершенно излишне. Это делается по умолчанию.
Спасибо, поправлю сегодня) изначально я ориентировался на скрипт, который генерит квартус при использовании NativeLink, поэтому о некоторых вещах узнаю сейчас впервые (пп. 4-6)
Sign up to leave a comment.

Articles