реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Ошибка компиляции в Vivado 2016.4, Непонятная ошибка в проекте
Anton1990
сообщение Jul 24 2018, 14:43
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 26-04-12
Пользователь №: 71 584



Всем привет.
Проект в Vivado 2016.4
Кристалл Kintex Ultrascale xcku035-ffva1156-2-e.

Изначально проект компилировался и успешно работал.
По мере развития проекта добавил модуль (точно без ошибок и правильно работающий) довольно тяжеловесный.
Проект при генерации файла прошивки вылетел с ошибками и критическими варнингами.
5 critical warnings
[Route 35-54] Net: Zaltys_SVN_inst/zaltys_hdrm_demod_toplevel_inst/tim/tim_top/zaltys_hdrm_demod_tim_tint_u/cbPLFRAME_reg[15]_BUFG is not completely routed.
[Route 35-54] Net: Zaltys_SVN_inst/zaltys_hdrm_demod_toplevel_inst/tim/tim_top/zaltys_hdrm_demod_tim_tint_u/cbPLFRAME_reg[15]_BUFG is not completely routed.
[Route 35-8] Design has 3 unrouted pins, that are still reachable.
[Route 35-1] Design is not completely routed. There is 1 net that is not completely routed.
[Timing 38-282] The design failed to meet the timing requirements. Please see the timing summary report for details on the timing violations.

write bitstream (2 errors)
[DRC 23-20] Rule violation (RTSTAT-2) Partially routed net - 1 net(s) are partially routed. The problem bus(es) and/or net(s) are Zaltys_SVN_inst/zaltys_hdrm_demod_toplevel_inst/tim/tim_top/zaltys_hdrm_demod_tim_tint_u/cbPLFRAME_reg[15]_BUFG.
[Vivado 12-1345] Error(s) found during DRC. Bitgen not run.

Сути ошибки совершенно не понял. Более того сигнал Zaltys_SVN_inst/zaltys_hdrm_demod_toplevel_inst/tim/tim_top/zaltys_hdrm_demod_tim_tint_u/cbPLFRAME_reg[15]_BUFG в исходнике модуля
Zaltys_SVN_inst/zaltys_hdrm_demod_toplevel_inst/tim/tim_top/zaltys_hdrm_demod_tim_tint_u отсутствует. Сигнал cbPLFRAME - это вообще внутренний сигнал совершенно другого модуля, к которому раньше претензий никаких небыло. В общем какая-то чертовщина.
Если кто с подобным сталкивался или лучше меня понимает суть возникшей ошибки подтолкните в направлении ее решения. Заранее спасибо за ответ. Также привожу отчет после имплементации по ресурсам (если это имеет значение).
Post implementation
LUT 75103 203128 36.973236
LUTRAM 9457 112800 8.383865
FF 64777 406256 15.944873
BRAM 129.5 540 23.981482
DSP 64 1700 3.7647057
IO 51 520 9.807693
GT 4 16 25.0
BUFG 11 480 2.2916667
PLL 1 20 5.0
PCIe 1 2 50.0
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jul 24 2018, 15:18
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 182
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(Anton1990 @ Jul 24 2018, 17:43) *
Всем привет.
Проект в Vivado 2016.4
Кристалл Kintex Ultrascale xcku035-ffva1156-2-e.
... /cbPLFRAME_reg[15]_BUFG ...
Судя по всему синтезатор пытается прилепить региональный BUFG на выход регистра имеющего большой fanout а потом не может развести так как потребители этого BUFG разбросаны по кристаллу где попало в разных clock region.

Можно попробовать запретить эти вольности при синтезе атрибутом (* dont_touch="true" *) или (* buffer_type="none" *) для этой цепи ну и ручками попробовтаь расфанаутить (* max_fanout=<number> *)

Удачи! Rob.
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Jul 24 2018, 16:54
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 26-04-12
Пользователь №: 71 584



Цитата(RobFPGA @ Jul 24 2018, 18:18) *
Приветствую!
Судя по всему синтезатор пытается прилепить региональный BUFG на выход регистра имеющего большой fanout а потом не может развести так как потребители этого BUFG разбросаны по кристаллу где попало в разных clock region.

Можно попробовать запретить эти вольности при синтезе атрибутом (* dont_touch="true" *) или (* buffer_type="none" *) для этой цепи ну и ручками попробовтаь расфанаутить (* max_fanout=<number> *)

Удачи! Rob.


Сигнал cbPLFRAME это внутренний сигнал модуля, 16 бит счетчик. Ему вообще нет смысла подключаться через bufg.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jul 24 2018, 17:16
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 182
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(Anton1990 @ Jul 24 2018, 19:54) *
Сигнал cbPLFRAME это внутренний сигнал модуля, 16 бит счетчик. Ему вообще нет смысла подключаться через bufg.
Мне от сюда плохо видно что за счетчик у Вас там нарисован и где именно используются выходы из него.
Вы бы открыли post-map/post-palce netlist по вьювере и посмотрели куда идут эти цепи и какие fanout у них.
Удачи! Rob.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jul 25 2018, 09:24
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Anton1990 @ Jul 24 2018, 23:54) *
Сигнал cbPLFRAME это внутренний сигнал модуля, 16 бит счетчик. Ему вообще нет смысла подключаться через bufg.

А не gated clock или latch ли вы там накодили случайно?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jul 25 2018, 10:42
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 959
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Bad0512 @ Jul 25 2018, 12:24) *
А не gated clock или latch ли вы там накодили случайно?
Не обязательно. Любые сигналы с очень большим фанаутом могут быть пропущены через BUFG. В Зайлинксе я с таким не сталкивался, а в Альтере было дело.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jul 26 2018, 01:52
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(andrew_b @ Jul 25 2018, 17:42) *
Не обязательно. Любые сигналы с очень большим фанаутом могут быть пропущены через BUFG. В Зайлинксе я с таким не сталкивался, а в Альтере было дело.

В Зайлинксе такое бывает только если сигнал где-то используется в качестве такта, либо случайно по ошибке вкрался латч (а он тоже на тактовый вход приходит). Самолично имел дело с сигналами разрешения клока (fanout до нескольких тысяч). Так вот для борьбы с времянками приходилось "вручную" директивами такой fanout "распиливать" на куски по 100 входов. И ни разу не было замечено использования глобальных буферов.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jul 26 2018, 06:55
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 182
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(Bad0512 @ Jul 26 2018, 04:52) *
В Зайлинксе такое бывает только если сигнал где-то используется в качестве такта, либо случайно по ошибке вкрался латч (а он тоже на тактовый вход приходит). Самолично имел дело с сигналами разрешения клока (fanout до нескольких тысяч). Так вот для борьбы с времянками приходилось "вручную" директивами такой fanout "распиливать" на куски по 100 входов. И ни разу не было замечено использования глобальных буферов.
Не повезло Вам wink.gif так как в Xilinx бывает и такое :
Цитата(name'Xilinx Community Forums')
...
According to UG835 this only happens when you specify -bufg_opt to opt_design.
-bufg_opt - (Optional) Perform various optimizations related to global buffers (BUFG/BUFGCE). Insert a buffer on unbuffered clock nets (fanout > 30), insert BUFGs on high fanout nets (fanout > 25k), and perform load-splitting when a high-fanout net drives both combinational and sequential logic: the combinational portion bypasses the BUFG because the added delay is too large.
...
From UG904, bufg insertion is on by default for opt_design. Check table 2-3 at page 52 in below link:
You can restrict the default Optimization by using the command line. Check page 56 in same link.
If you just want to disable the bufg insertion of opt_design use the following command for opt_design:
opt_design -retarget -propconst -sweep -shift_register_opt -bram_power_opt
...
These two thresholds can be modified with the following parameters:
To change the fannout threshold from the default of 50000:
set_param logicopt.thresholdBUFGinsertHFN 20000
To change the threshold of total BUFGs and instantiated BUFHCEs in the design:
set_param logicopt.thresholdBUFGperRegion 15
Note: the parameter name is misleading because the threshold is the total number.
...
А так как в UltaScale BUFG дофига и структура глобальных буферов отличается от предыдущих семейст ( более похожа на древовидную структуру ASIC) то порог использования в качестве драйверов для HF nets может быть ниже.

Удачи! Rob.

Go to the top of the page
 
+Quote Post
Anton1990
сообщение Jul 26 2018, 16:03
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 26-04-12
Пользователь №: 71 584



Цитата(RobFPGA @ Jul 26 2018, 09:55) *
Приветствую!
Не повезло Вам wink.gif так как в Xilinx бывает и такое :
А так как в UltaScale BUFG дофига и структура глобальных буферов отличается от предыдущих семейст ( более похожа на древовидную структуру ASIC) то порог использования в качестве драйверов для HF nets может быть ниже.

Удачи! Rob.


Всем еще раз привет. С проблемой разобрался. Все дело было в IP-ila (логический анализатор). Закоментировал ila и проект развелся и заработал. Перекомпилировал ila, добавив сигналов и увеличив глубину. Собрал проект и все работает. Вот такие вот ядра у вивады :-)
Тему можно закрывать. Всем спасибо.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jul 27 2018, 03:45
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Anton1990 @ Jul 26 2018, 23:03) *
Всем еще раз привет. С проблемой разобрался. Все дело было в IP-ila (логический анализатор). Закоментировал ila и проект развелся и заработал. Перекомпилировал ila, добавив сигналов и увеличив глубину. Собрал проект и все работает. Вот такие вот ядра у вивады :-)
Тему можно закрывать. Всем спасибо.

Недавно наблюдал аналогичную проблему на Kintex. Есть два банка и две корки с сигналами, тактируемыми от региональных буферов RCLK в каждом банке соответственно. Так вот попытка поглядеть в одном ILA сигналы с обеих корок приводит к фейлу при разводке.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2018 - 05:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.00903 секунд с 7
ELECTRONIX ©2004-2016