Перейти к содержанию

    

Добрый день! Кто использует при разработке на FPGA tcl скрипты, поделитесь пожалуйста опытом, какие преимущества можно получить за счет использования tcl. Пока обнаружил только преимущество перед gui в виде автоматизации при переносе проектов с одного кристалла на другой. Если можно конкретные примеры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Добрый день! Кто использует при разработке на FPGA tcl скрипты, поделитесь пожалуйста опытом, какие преимущества можно получить за счет использования tcl. Пока обнаружил только преимущество перед gui в виде автоматизации при переносе проектов с одного кристалла на другой. Если можно конкретные примеры.

Ну то, что вы уже описали.

Плюс инструменты функциональной, статической и формальной верификации тоже управляются tcl - скриптами, поэтому можно создать набор целей и провести анализ на эти цели, просто запустив скрипт, в симуляторах gui тоже управляется с помощью tcl, поэтому очень удобно создавать виды осциллограмм, и сохранять их в tcl, а также обрабатывать сигналы, например, группировать их, именовать группы или же сами сигналы (например, разбить регистр на поля), назначать radix'ы, и т.п. Можно также сделать небольшой декодер, например, чтобы вместо 00 отображалось OK, вместо 01 - ERROR.

Изменено пользователем one_eight_seven

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Пока обнаружил только преимущество перед gui в виде автоматизации при переносе проектов с одного кристалла на другой.

Работаю в Windows, gui использую очень редко (только чтобы посмотреть распределение ЛЕ по модулям),

для синтеза/анализа/прошивки запускаю *.bat файлы, tcl не использую - очень не нравится язык.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

vivado принуждает юзеров использовать tcl - через gui в нем некоторые операции отсутствуют, ну или достаточно неудобны (у меня, например, в текстовом редакторе набор каких-то tcl-ных команд, которые я копи-пастю в среду)

 

для asic-ов tcl стандарт, скрипты только на нем - полагаю по мере роста сложности FPGA-шных проектов, то есть количества людей, работающих над одним проектом, будет все меньше gui, все больше tcl

сами скрипты обычно простые - сложнее foreach редко что нужно, ну и иногда функцией (proc) какие-то повторяющиеся последовательности команд объединяются

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Tcl почти что стандарт для контроля FPGA-шного софта.

С помощью tcl много чего можно накрутить под себя.

 

Например в Vivado у меня и автоматизация подключения debug-point для ChipScope, и авто генерация даты/ревизии git/ при компиляции и последующе генерация bit/mcs c правильным именем в нужной папке и с инфо-файлом, и.т.д.

И работа с JTAG-AXI для быстрой отладки периферии без ожидания вечно занятого програмиста.

Для Synplyfy помню извращался с парсингом логов синтеза и автогенерацией xilinx ip корок с требуемыми параметрами.

 

Поищите я на форуме приводил примеры.

 

Ну а ModelSim так это сплошной tcl/tk :) например мой скрипт парсит Vivado-вский скрипт для симуляции .bd чтобы компилировалось так как мне надо а не так хочет Vivado. Или например автоматом расставлять сигналы AXI шины на wave чтобы было как в армии все под линейку красиво было :)

 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Или например автоматом расставлять сигналы AXI шины на wave чтобы было как в армии все под линейку красиво было :)

Не только расставлять сигналы, но и красить их в разные нескучные цвета (использую https://www.random.org/colors/hex ).

Только ради одной этой функции уже стоит tcl хотя бы минимально изучить, хотя на этом уровне даже языка не видно - обычные команды и аргументы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Я еще хотел эту раставлялку (и не только) внедрить в интерфейс ModelSim чтобы во всплывающей менюшке были мои custom команды. Но лень ковырять tcl так глубоко поборола лень делать это через скрипт ручками :laughing: .

 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще повод для Tcl - использование virtual JTAG вместо UART и тп для самопального терминала.

Но терминал получается ооочень медленным (по сравнению с uart). Зато ног/проводов меньше.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Еще повод для Tcl - использование virtual JTAG вместо UART и тп для самопального терминала.

Но терминал получается ооочень медленным (по сравнению с uart). Зато ног/проводов меньше.

Не хватило usb-uart моста, пришлось доделывать терминал (добавил FIFO в virtual JTAG), чтобы поднять скорость.

Удивляет, что много фирменных китов идут с внешними usb-uart мостами - вместо примеров использования jtag. :maniac:

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Не хватило usb-uart моста, пришлось доделывать терминал (добавил FIFO в virtual JTAG), чтобы поднять скорость.

Удивляет, что много фирменных китов идут с внешними usb-uart мостами - вместо примеров использования jtag. :maniac:

 

Вероятно проще поставить драйвер usb-uart для com порта, чем под jtag, если я вас правильно понял. То есть вы используете jtag для информационного обмена ПК-плата? Как FIFO позволяет увеличить скорость, это же просто буфер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В своих проектах использую tcl скрипты для автоматического добавления номера версии и времени компиляции проекта.

 

К примеру, в регистре сохраняется версия прошивки и дата-время компиляции. Для golden и working версии она может быть разная.

Пример такого файла на vhdl

-- created at 07/Dec/2017-13:15:15

-- DO NOT EDIT THIS FILE

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

package compile_time_pkg is

 

constant VER_VALUE : string := "30";

constant COMPILE_TIME : integer := 1512648915;

 

end package compile_time_pkg;

 

Скрипт создает этот файл, потом запускает компиляцию. При каждой последующей компиляции увеличивает, к примеру, счетчик версий и изменяет время на текущее. После успешной компиляции - копирует текущую прошивку в отдельную папку с названием, соответствующим данной прошивке. Что-то типа name_working_v12.bit

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
То есть вы используете jtag для информационного обмена ПК-плата? Как FIFO позволяет увеличить скорость, это же просто буфер?

ПК используется как текстовый терминал. Бодовая скорость большая, средняя - маленькая. FIFO позволяет снять ограничение на бодовую скорость.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Если можно конкретные примеры.
Мой пример в виде проекта для Modelsim-a (проверял на 10.1d Altera Starter Edition) - в скрепке.

cd_ARINC_freq_divider_Modelsim.tcl кладём в корень Modelsim-a (у меня d:\altera\13.0sp1\modelsim_ase\win32aloem)

Из той же папки стартуем Modelsim (d:\altera\13.0sp1\modelsim_ase\win32aloem\modelsim.exe).

После выдачи приглашения Modelsim> запускаем этот скрипт:

набираем do cd_ARINC_freq_divider_Modelsim.tcl (переходим в папку проекта).

(если скрипт cd_* поместили правильно, то уже после набора do cd Modelsim в строке выше сам покажет имя скрипта).

Выполнили скрипт (перешли в папку проекта).

А там уже выполняем Modelsim> do ARINC_freq_divider_simulate.tcl

Примечание скрипт conf_wave_window.tcl использует переменную окружения ... сами найдёте и создадите.

И подкорректируете всё и вся под себя.

 

Вопросы и замечания по проекту очень сильно приветствуются.

ARINC_freq_divider.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти