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

Интересный баг в Vivado

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

 

Есть проект, довольно давно отлаженный и работающий.

Kintex US+, Vivado 2019.

 

Понадобилось из него сделать релиз - убрать всякие штуки для отладки.

Я убираю все VIO и ILA, начинаю компилировать - и всё, проект вообще не компилируется.

Implementation занимает несколько часов (вместо получаса), на выходе сообщение, что 50 цепей вообще невозможно развести, и еще 100500 цепей с плохими таймингами.

Добавляю обратно ILA с каким-нибудь любым сигналом, или VIO вообще без подключенных сигналов (только тактовый и сброс) - и снова всё отлично компилится.

 

Кто-нибудь сталкивался? Куда копать?

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


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

23 минуты назад, Koluchiy сказал:

Implementation занимает несколько часов (вместо получаса), на выходе сообщение, что 50 цепей вообще невозможно развести, и еще 100500 цепей с плохими таймингами.

Безотносительно к ILA я бы предположил наличие в проекте более чем одного частотного домена, не все пути между которыми описаны или исключены констрейнами. В результате Vivado тратит безумное время на бессмысленный анализ и вытягивание межклоковых взаимодействий.

 

Почему добавление ILA резко меняет поведение - могу предположить разве что добавление каких-то констрейнов (например, клокового домена ILA Hub), которые исправляют данную ситуацию.

 

Я бы в первую очередь посмотрел репорт Clock Interaction, и только если там нет никаких неожиданностей, стал бы копать уже сам факт наличия ILA.

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


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

Я заметил, что влияние оказывают даже цепи помеченные, как MARK_DEBUG, но не подключенные к ILA

 

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


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

Было такое на чужом проекте. Без ИЛА не работал. Когда компоненты криво сделаны. После того, как проект полностью переписали, артефакты ушли.

Скорее всего без ИЛА синтезатор что-то оптимизирует, и эти цепи вообще исчезают. Потому синтезатор и тупить начинает.

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


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

еще был у меня глюк на какой то вивадо, что влиял тип иерархии в синтезе. На плоском нетлисте не разводилось. Разбираться не стал, поставил структурированный нетлист и все пошло. 

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


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

14 часов назад, Koluchiy сказал:

Кто-нибудь сталкивался? Куда копать?

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

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


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

Частотных доменов много, клоки описаны, межклоковые описаны. Выключить-включить пробовал :).

Давайте без банальных версий, скучно же.

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


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

У меня при таких глюках reset_project помогает, а еще перезагрузка системы.

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

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


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

5 minutes ago, Koluchiy said:

Частотных доменов много, клоки описаны, межклоковые описаны. Выключить-включить пробовал :).

Давайте без банальных версий, скучно же.

Это  вам скучно  - так как вы логи наверное читаете, а они скучны.  А мы  развлекаемся пытаясь угадать в лотерею 6 из 49  что у вас там так наворочено.  :declare:

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


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

reset_project не помогает, ручная чистка проекта не помогает, инкрементальная сборка выключена.

 

Может ли описанное выше поведение быть следствием заморочек каких-нибудь IP-Блоков?

Ну типа, если есть дебаг в проекте - буду компилироваться, если нет - не буду.

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


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

13 minutes ago, Koluchiy said:

Может ли описанное выше поведение быть следствием заморочек каких-нибудь IP-Блоков?

Сделайте им Clear Cache: Tools->Settings->Project Settings->IP->Clear Cache.

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


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

У меня похожее поведение было в следствии внутренних констрейнов ILA.

В частности просто прикрутив клоковую к ILA без всяких дебажных сигналов собирало нормально проект, а без ILA - всё валилось на STA и очень долго собирало (утилизация около 15%).

Увы как решил вопрос - не припоминаю. Наверное просто пересоздал все IP и пересобрал проект с нуля, благо там не так много было модулей.

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


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

3 hours ago, blackfin said:

Сделайте им Clear Cache: Tools->Settings->Project Settings->IP->Clear Cache.

Это я делал, просто удаляя папку .cache

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


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

В общем, это была крякающая утка.

По неизвестной причине, при изъятии из проекта средств отладки, компиляция начинала идти по какому-то совсем другому пути, и имевшаяся структура PBlock'ов не хотела компилироваться.

При относительно небольшом изменении границ PBlock'ов или их параметров, снова начинало все компилироваться.

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


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

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

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

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

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

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

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

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

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

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