Skip to main content

[opensource]: Мои скрипты для EDA/CAE/CAD

Приведенное ниже — описание к коллекции моих EDA-скриптов для работы с тулами для ASIC и FPGA

Конвертор из UCF в XDC

Конвертирует для ПЛИС Xilinx привязки ножек и стандартов из формата ucf (Xilinx ISE) в новый формат xdc (Xilinx Vivado). Использование:

В текущей директории появится файл FILENAME.xdc.

Пример входного ucf-файла

Пример сгенеренного утилитой xdc-файла

Ограничения

Текущая версия парсера позиционно-зависима от порядка перечисления свойств в файле ucf. Необходимо следовать этому формату для корректной работы утилиты.

Планы

Переписать скрипт на новый однострочный формат xdc-файла:

Скрипт

https://github.com/iDoka/eda-scripts/blob/master/ucf-to-xdc.sh

Мониторинг запущенных на сервере Xilinx Vivado

Скрипт находит запущенные процессы Vivado от юзера (vivado-stat-user.sh) или все процессы Vivado на сервере (vivado-stat.sh) и печатает по ним суммарную статистику: утилизацию CPU и ОЗУ. Вешь крайне полезная для ослеживания исчерпания ресурсов (особенно при синтезе под Vitrex-7 2000T).

Запуск:

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

  • CMD — какую конкретно команду отслеживаем (можно сменить на Quartus/Lattice/whatever_you_want)
  • PERIOD — целочисленное значение секунд, определяющее период наблюдения

Пример запуска

Пример вывода скрипта при PERIOD="30s":

Скрипты

  • https://github.com/iDoka/eda-scripts/blob/master/vivado-stat.sh
  • https://github.com/iDoka/eda-scripts/blob/master/vivado-stat-user.sh

Добавление в систему  ethX c произвольным MAC

Скрипт создаёт в системе дополнительный (виртуальный) адаптер с произвольным МАС-адресом. Например, в случае если ваш ноутбук не имеет Ethernet-адаптера или в куче других случаев 🙂

Исключительно для справки: Новые версии FLEXLM могут поддерживать несколько HostID одновременно (не только eth0, но и  eth*)

Использование

  1. Измените под собственные нужны переменные $DEV и $MAC в скрипте fake-nic.sh 
  2. Запустите скрипт из под root-пользователя:

    скрипт установит неодостающие пакеты в вашу систему и добавит сетевой адаптер с заданным $DEV (имя) и $MAC (hostid).

Автовыполнение при загрузке

Небрежный способ поднять сетевой адаптер при каждом старте системы — это добавить в /etc/rc.local следующие строки:

Ограничения

Работа скрипта проверена в ОС RHEL/CentOS 6.x/7.x. Внутри скрипта встроена авто-проверка запуска именно в этих системах.

Планы

  • Передавать DEV и MAC как аргументы командной строки
  • Оформить скрипт для запуска из systemd при каждом старте системы

Скрипт

https://github.com/iDoka/eda-scripts/blob/master/fake-nic.sh

Встраивание номера ревизии в битстрим FPGA

Скрипт впечатывает дату сборки и хэш прошивки в образ битстрима FPGA

Использование

На вход передаётся образ в формате mcs и формат выходного файла (intel либо motorola). В утилите настраиваются адреса, по которым располагать дату и хэшсам: для даты отведено 4 байта (время последней модификации файла прошивки в формате линукс — число секунд, отсчитываемые с эпохи) и 16 байт для результата md5sum от содержимого образа файла прошивки.

Зависимости

Скрипт требует установленного и прописанного в PATH ПО Xilinx Lab Tools и пакета srecord.

Скрипт

https://github.com/iDoka/eda-scripts/blob/master/vergen-fpga.sh

Настройки репозитария git для ASIC/FPGA проектов

Скрипт создает пустой реопзитарий с преднастроенными файлами .gitattributes и .gitignore

Использование

Просто набрать в командной строке:

Зависимости

Необходимо установить клиент finger:

Планы

  • Проверка существования $GIT_DIR, если не существует — создание
  • Автоматическое создание типичной для EDA-проектов структуры папок

Скрипт и файлы

  • https://github.com/iDoka/eda-scripts/blob/master/git-setting.sh
  • https://github.com/iDoka/eda-scripts/tree/master/gitignore
  • https://github.com/iDoka/eda-scripts/tree/master/gitattributes

Подбор параметров блока PLL/DCM для Xilinx FPGA

Скрипт печатает таблицу коэффициентов блока ФАПЧ для ПЛИС Xilinx при удовлетворении допуска в % для заданных опорной и выходной частот.

Использование

  1. Задайте необходимые значения переменным $F_input (Гц), $F_desired (Гц) и $precission (%) в скрипте xilinx-pll-calc.php
  2. Выберите необходимое семейство ПЛИС, например: $FPGA = $SPARTAN6;
  3. Запустите скрипт в интерпретаторе:

    и постарайтесь найти зеленую строку в выводе скрипта:

Ограничения

В настоящий момент скрипт поддерживает следующие семейства ПЛИС Xilinx:

  • Xilinx Spartan-6
  • Xilinx Virtex-7
  • [добавьте сюда своё любимое семейство ПЛИС. см.далее]

Добавление нового семейства ПЛИС

Xilinx, Altera, Lattice?…​ Тул может быть адаптирован под любого производителя и семейство!

 Быстрый путь для добавления нового семейства ПЛИС состоит в заполнении ассоциативного массива (диапазоны мин. и макс. значений частот и коэффициентов берутся из даташита соответствующего семейства):

Нижеприведенная формула приоткроет завесу тайны относительно смысла таких переменных как: M, D, O, FREQ_INP, FREQ_VCO, FREQ_OUT.

Планы

Реализовать режим сцепки последовательно двух ФАПЧ для реализации недостижимых с помощью одной ФАПЧ условий по выходной частоте.

Скрипт

https://github.com/iDoka/eda-scripts/blob/master/xilinx-pll-calc.php

Github

PS: если заметка помогла Вам, поделитесь ей с друзьями или коллегами: