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

Отсутствие сигнала в ila (Vivado)

Среда разработки 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"*) для нужного сигнала. Это в большинстве случаев работает, но не всегда.

Вопрос: Какие ещё существуют методы, обеспечивающие гарантированное наличие необходимых сигналов в отладчике, задаваемом скриптом?

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

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


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

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

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"}]

Но это тоже не всегда спасает от оптимизаций сигналов в шинах во время синтеза (например с константами). :sad:  
Тут поможет только более умный скрипт добавления сигналов с различным контролем отсутствия/переименования цепей. 

 

Удачи! Rob.

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


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

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"}]

Но это тоже не всегда спасает от оптимизаций сигналов в шинах во время синтеза (например с константами). :sad:  
Тут поможет только более умный скрипт добавления сигналов с различным контролем отсутствия/переименования цепей. 

 

Удачи! Rob.

Спасибо! Попробую вариант c MARK_DEBUG.

По поводу умных скриптов у меня была мысль. Но пока я решил ограничить их интеллект. Когда собирается отладчик, предполагается, что все сигналы в нем нужны. Поэтому если скрипт соберет проект, но без какого-либо сигнала, толку от такого отладчика будет мало.

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


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

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

14 minutes ago, attaboy said:

Спасибо! Попробую вариант c MARK_DEBUG.

По поводу умных скриптов у меня была мысль. Но пока я решил ограничить их интеллект. Когда собирается отладчик, предполагается, что все сигналы в нем нужны. Поэтому если скрипт соберет проект, но без какого-либо сигнала, толку от такого отладчика будет мало.

Тут уже были темы по автоматизации ILA,  например такая. Может что еще  полезное найдете. 

 

Удачи! Rob.

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


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

31 минуту назад, RobFPGA сказал:

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

Для  дебага  лучше маркировать сигнал  атрибутом  (* MARK_DEBUG="true" *) .

Я использую совместно с DONT_TOUCH.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...