Comments 19
« Мы не хотим логи и путсы, мы хотим пошаговую отладку с брекпойнтами!» - неправильно ты, Дядя Федор, бутерброд ешь….
Console log - наше все.
С TCL давно не работал, но после erlang, pl/Sql, pg/Sql понимаешь что писать в лог единственный способ отладки . Особенно кое-где код многопоточный
Я в своих самых свежих скриптах, остановился на своем варианте dputs.
namespace eval tardil {
# debug verbosity
variable debug 0
}
proc ::tardil::dbg_puts {args} {
variable debug
if { ${debug} >= [expr [info level]-1] } {
array set inf [info frame -1]
set empty_prefix ""
for {set i 0} {${i}<[expr [info level]-1]} {incr i} {
set empty_prefix " ${empty_prefix}"
}
puts "${empty_prefix}\[$inf(proc)\] [lindex ${args} 0]"
}
}
# Устанавливаем глубину на которых будут работать dbg_puts
set ::tardil::debug 99
Данный вариант позволяет контролировать глубину стека вызовов процедур, на котором срабатывает эта dbg_puts
. В вывод dbg_puts
добавляется префикс в виде пробела (в зависимости от глубины стека) и имени процедуры из которой была вызвана dbg_puts
с аргументами. Правда, только сейчас заметил, что это справедливо, когда руками вызываю в консоли Vivado, а если из скрипта вызвана (который запущен как source ./path_script.tcl ), то что то идет не так ..
Мы пробовали автоматизировать процессы разработки проектов для ПЛИС на tcl скриптах. Потом достаточно быстро ушли от него, подглядев некоторые решения у программистов.
Сборка и компиляция проекта у нас идёт через Conan. Симуляция с помощью VUnit.
GUI открывается только в редких случаях для отладки.
Для того, чтобы собрать проект на локальном компьютере в консольке запускаются три команда "git clone","conan install" и "conan build".
Как показала практика, писать скрипты на питоне значительно приятнее, чем на tcl.
Мы пробовали автоматизировать процессы разработки проектов для ПЛИС на tcl скриптах
Ну сборка проекта и запуск остального это всего лишь малая часть. Я больше занимаюсь анализом нетлистов и мне приходится писать много процедур со всякими get_cells, get_nets и тд. Как это делать без Tcl я себе мало представляю.
Сборка и компиляция проекта у нас идёт через Conan.
Спасибо, посмотрю что это такое, никогда об этом не слышал
Как показала практика, писать скрипты на питоне значительно приятнее, чем на tcl.
Ну тут у каждого свои тараканы, у меня с точностью да наоборот
Ну сборка проекта и запуск остального это всего лишь малая часть. Я больше занимаюсь анализом нетлистов и мне приходится писать много процедур со всякими get_cells, get_nets и тд.
Кстати, SDC это тоже tcl.
Вместо Conan, рекомендую смотреть в сторону старого доброго make. Который вроде как благодаря go переживает второе рождение.
Если не заморачиваться с автоматическими правилами, то все достаточно просто.
Плюс стандартная тулза. Проверено временем :)
Дальше к ней можете скрипты на чем хотите прикручивать. Хоть на bash хоть на tcl.
Просто супер!
Для начинающих (а может и не только) в начале пути можно порекомендовать использование пакета tclcon с напуском GUI:
package require Tk
package require tkcon
tkcon Init

Лично я предпочитаю использовать tclexecomp:

За статью огромное спасибо.
Супер. Но есть проблема которую я описал. Не самая простая задача (если вообще выполнимая) команды наших сред разработки сделать видимыми для этих интерпретаторов или пробросить вызов Tk из интерпретаторов наших сред.
К сожалению, мне это пока не удалось. Но за наводку большое спасибо, изучу этот вопрос
А где про телевизор ? :)
(Шутка юмора)
Единственное что смущает в статье- почему она в блоге «ненормальное программирование»? tcl это как раз про нормальное программирование, ненормальное это js и иже с ними :)
Спасибо, зело полезная статья
UPD: Все же удалось это все дело запустить и в гуишной консоли вивады. Правда без излишеств, но уже что-то. И пользовательский ввод тоже оказывается был доступен в гуишной консоли, но еще пойди попробуй догадаться каким образом :)
Так што путь к пошаговой отладке Tcl-скриптов полностью открыт, пользуйтесь xD
Да, забыл указать на пруф https://t.me/fpgasystems_events/3289
Efinix FPGA! Its Efinity IDE uses Python for scripting!
Просто оставлю для истории выложенную запись доклада по теме статьи на конференции https://t.me/fpgasystems_events/3296
Да как отлаживать этот ваш Tcl?