dxp 34 30 ноября, 2021 Опубликовано 30 ноября, 2021 · Жалоба 6 часов назад, RobFPGA сказал: Я когда то приводил тут на форме свой подход подключения debug через скрипты. Вот: Классный подход. Так жизнь облегчил! Ещё раз спасибо уважаемому @RobFPGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 30 ноября, 2021 Опубликовано 30 ноября, 2021 · Жалоба 10 hours ago, Longiel said: Просто при вытаскивании сигналов через отладчик синтезировать проект заново не потребуется. А если трогаешь исходники - попадаешь на синтез. Синтез обычно идёт меньше разводки и размещения, но... на крупных проектах терять по 40-50 минут тоже не хочется. Если названия сигналов не меняются, в принципе без разницы, как их добавлять - через скрипт или GUI. А если они поменялись, то через GUI тоже проблематично добавлять после синтеза. Был data_ack, а стал data_ack_1. Вроде похоже, но не факт, что повторяет поведение исходного сигнала. Поэтому по хорошему в любом случае нужно закреплять сигналы чере mark_debug, независимо от способа их подключения. Если сидеть и ждать, пока проект синтезируется и разведется, то конечно 40-50 минут - это ощутимо. Но для больших проектов как правило синтез и имплементация проходят "в фоне" на специально выделенных серверах. Запустил на ночь проект на сборку и пошел домой. Плюс минус 1-2 часа мало кого интересует. Ну или даже если днем запустил на сборку - все равно на время сборки проекта занимаешься другими делами и время не теряется. 10 hours ago, Longiel said: Я просто понять пытаюсь как это у вас выглядит. Настроечные данные для скриптов это: название сигнала, путь к модулю, путь к дебагу... наверное этого достаточно? Вот например скрипт создания ila, которым я пользуюсь: В процессе создания скрипта конечно пришлось приложить некоторые усилия, чтобы он работал корректно. Но сейчас я задаю клоки, список интересующих сигналов, и все. Скрипт обладает некоторым интеллектом. Например, ширину шины определяет автоматически (в отличие от задания шины через GUI), если вдруг какой-то сигнал (кроме первого в списке) соптимизировался после синтеза, скрипт скажет об этом в лог-файле и продолжит работу (а если такое произойдет при создании ila через GUI - это ошибка). Этот скрипт подгружается другим скриптом, который у меня разворачивает проект и запускает все процессы. Поэтому я могу сделать несколько tcl с ila, и для каждого ila соберется своя имплементация. Это необходимо, когда все сигналы сразу не вмещаются в отладчик. Делаем один impl_run с о одним набором сигналов, а потом другой impl_run - с другим набором сигналов, и т.д. То есть в общем запускается один скрипт, который подгружает десяток других скриптов, в том числе и скрипты с ila, и на выходе выдает набор прошивок, которые хотелось получить - с разными ila, с разными стратегиями синтеза и имплементации и т.д. Очень удобно, но конечно такой подход оправдан для крупных проектов, где вычисления проводятся на специально выделенных машинах. Spoiler # Generalized script to create ila v2.21 # # Set clock for debug_hub set dbg_hub_clk "clk_mgmt/inst/clk_out1" # Setup parameters of debug core set dbg_core_name u_ila_0 set dbg_core_clk "clk_mgmt/inst/clk_out1" # List all signals must be listed one signal per line, started and ended by "" # At list one name must exist in in data_lst_obj # set ila_name "ila_gen_v22" set data_lst_obj "sopc/data1_buf[*] sopc/mod1/data2_buf[*] sopc/mod2/reg3 " # # Open log file in current dir set TclPath [file dirname [file normalize [info script]]] set logLoc [string range ${TclPath} 0 [string last / ${TclPath}]-1] set ilaPath ${logLoc}/ila_log.txt set fp [open ${ilaPath} a+] puts ${fp} "----------------------${ila_name}--------------------------" create_debug_core ${dbg_core_name} ila set_property ALL_PROBE_SAME_MU true [get_debug_cores ${dbg_core_name}] set_property ALL_PROBE_SAME_MU_CNT 4 [get_debug_cores ${dbg_core_name}] set_property C_ADV_TRIGGER true [get_debug_cores ${dbg_core_name}] set_property C_DATA_DEPTH 1024 [get_debug_cores ${dbg_core_name}] set_property C_EN_STRG_QUAL true [get_debug_cores ${dbg_core_name}] set_property C_INPUT_PIPE_STAGES 0 [get_debug_cores ${dbg_core_name}] set_property C_TRIGIN_EN false [get_debug_cores ${dbg_core_name}] set_property C_TRIGOUT_EN false [get_debug_cores ${dbg_core_name}] set_property port_width 1 [get_debug_ports ${dbg_core_name}/clk] connect_debug_port ${dbg_core_name}/clk [get_nets ] set obj_len [llength ${data_lst_obj}] set data_obj [lindex ${data_lst_obj} 0] #probe0 always exists set probe_obj "${dbg_core_name}/probe0" set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports ${probe_obj}] set_property port_width [llength [get_nets ]] [get_debug_ports ${probe_obj}] connect_debug_port ${probe_obj} [lsort -dictionary [get_nets ]] # First item created, count it set obj_len [expr ${obj_len} - 1] set probe_idx 1 set data_idx 1 while {${obj_len} > 0} { set data_obj [lindex ${data_lst_obj} ${data_idx}] if {[llength [get_nets ]] == 0} { puts ${fp} "Data object ${data_obj} does not exist" } else { create_debug_port ${dbg_core_name} probe set probe_obj "${dbg_core_name}/probe${probe_idx}" set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports ${probe_obj}] set_property port_width [llength [get_nets ]] [get_debug_ports ${probe_obj}] connect_debug_port ${probe_obj} [lsort -dictionary [get_nets ]] set probe_idx [expr ${probe_idx} + 1] } set data_idx [expr ${data_idx} + 1] set obj_len [expr ${obj_len} - 1] } # Close log file close ${fp} # -------------------------Dbg hub settings--------------------------- set_property C_CLK_INPUT_FREQ_HZ 300000000 [get_debug_cores dbg_hub] set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub] set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub] connect_debug_port dbg_hub/clk [get_nets list ${dbg_hub_clk}]] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Longiel 2 30 ноября, 2021 Опубликовано 30 ноября, 2021 · Жалоба Благодарю за примеры скриптов и ссылки. Есть в какую сторону модернизировать свой набор bat-файлов для пересборки проекта) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 30 ноября, 2021 Опубликовано 30 ноября, 2021 · Жалоба 13 hours ago, Longiel said: Если разрядность входного порта в Debug.v параметризировать, то получится удобно подключать. А внутри что - всё по ИЛИ в дебаг пин? В сам отладчик какие сигналы подключаете - внутренние регистры в Debug.v? Минус правда сразу вылазит - потом сигналы надо переименовать в отладчике, если их много, конечно. нет. ничего не параметризируется. У меня ЦОС - мне хватает и такой отладки для ускорения. в отладчике debDATA1,debDATA2,debDATA3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться