attaboy 0 11 марта, 2021 Опубликовано 11 марта, 2021 (изменено) · Жалоба Среда разработки Vivado 2020.1. Есть общий скрипт, который запускает все стадии сборки проекта (в project mode). Констрейны задаются в одном файле *.xdc, а ila задается в отдельном файле *.xdc. Отладочные порты в ila.xdc задаются записями вида: create_debug_port u_ila_0 probe set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe1] set_property port_width 32 [get_debug_ports u_ila_0/probe1] connect_debug_port u_ila_0/probe1 [get_nets [list {top_mod/sig1[*]}]] Такая запись предполагает, что порт sig1 существует и имеет разрядность 32 бита. При этом возникает проблема - Vivado может соптимизировать этот сигнал или поменять имя. В этом случае скрипт выдает ошибку. Я борюсь с этим с помощью (*keep="true"*) для нужного сигнала. Это в большинстве случаев работает, но не всегда. Вопрос: Какие ещё существуют методы, обеспечивающие гарантированное наличие необходимых сигналов в отладчике, задаваемом скриптом? Изменено 11 марта, 2021 пользователем attaboy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 11 марта, 2021 Опубликовано 11 марта, 2021 · Жалоба Приветствую! 28 minutes ago, attaboy said: Такая запись предполагает, что порт sig1 существует и имеет разрядность 32 бита. При этом возникает проблема - Vivado может соптимизировать этот сигнал или поменять имя. В этом случае скрипт выдает ошибку. Я борюсь с этим с помощью (*keep="true"*) для нужного сигнала. Это в большинстве случаев работает, но не всегда. Вопрос: Какие ещё существуют методы, обеспечивающие гарантированное наличие необходимых сигналов в отладчике, задаваемом скриптом? Для дебага лучше маркировать сигнал атрибутом (* MARK_DEBUG="true" *) . IMHO работает лучше чем keep, есть возможность добавляя свои атрибуты находить разные группы сигналов для отладки, ну и быстро включать/выключать дебаг через параметры. localparam _DBG_ = "true"; // "false", "true" (* MARK_DEBUG=_DBG_, DBG_GROUP="CORE_CFG" *) logic [REG_NUM_WH-1:0] wr_addr; (* MARK_DEBUG=_DBG_, DBG_GROUP="CORE_DATA" *) logic [ 31:0] wr_data; ... ... [get_nets -hier -filter {MARK_DEBUG==true && DBG_GROUP=="CORE_CFG"}] Но это тоже не всегда спасает от оптимизаций сигналов в шинах во время синтеза (например с константами). Тут поможет только более умный скрипт добавления сигналов с различным контролем отсутствия/переименования цепей. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 11 марта, 2021 Опубликовано 11 марта, 2021 · Жалоба 14 minutes ago, RobFPGA said: Приветствую! Для дебага лучше маркировать сигнал атрибутом (* MARK_DEBUG="true" *) . IMHO работает лучше чем keep, есть возможность добавляя свои атрибуты находить разные группы сигналов для отладки, ну и быстро включать/выключать дебаг через параметры. localparam _DBG_ = "true"; // "false", "true" (* MARK_DEBUG=_DBG_, DBG_GROUP="CORE_CFG" *) logic [REG_NUM_WH-1:0] wr_addr; (* MARK_DEBUG=_DBG_, DBG_GROUP="CORE_DATA" *) logic [ 31:0] wr_data; ... ... [get_nets -hier -filter {MARK_DEBUG==true && DBG_GROUP=="CORE_CFG"}] Но это тоже не всегда спасает от оптимизаций сигналов в шинах во время синтеза (например с константами). Тут поможет только более умный скрипт добавления сигналов с различным контролем отсутствия/переименования цепей. Удачи! Rob. Спасибо! Попробую вариант c MARK_DEBUG. По поводу умных скриптов у меня была мысль. Но пока я решил ограничить их интеллект. Когда собирается отладчик, предполагается, что все сигналы в нем нужны. Поэтому если скрипт соберет проект, но без какого-либо сигнала, толку от такого отладчика будет мало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 11 марта, 2021 Опубликовано 11 марта, 2021 · Жалоба Приветствую! 14 minutes ago, attaboy said: Спасибо! Попробую вариант c MARK_DEBUG. По поводу умных скриптов у меня была мысль. Но пока я решил ограничить их интеллект. Когда собирается отладчик, предполагается, что все сигналы в нем нужны. Поэтому если скрипт соберет проект, но без какого-либо сигнала, толку от такого отладчика будет мало. Тут уже были темы по автоматизации ILA, например такая. Может что еще полезное найдете. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 11 марта, 2021 Опубликовано 11 марта, 2021 · Жалоба 31 минуту назад, RobFPGA сказал: Приветствую! Для дебага лучше маркировать сигнал атрибутом (* MARK_DEBUG="true" *) . Я использую совместно с DONT_TOUCH. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться