Anton1990 0 24 июля, 2018 Опубликовано 24 июля, 2018 · Жалоба Всем привет. Проект в 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 24 июля, 2018 Опубликовано 24 июля, 2018 · Жалоба Приветствую! Всем привет. Проект в 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anton1990 0 24 июля, 2018 Опубликовано 24 июля, 2018 · Жалоба Приветствую! Судя по всему синтезатор пытается прилепить региональный BUFG на выход регистра имеющего большой fanout а потом не может развести так как потребители этого BUFG разбросаны по кристаллу где попало в разных clock region. Можно попробовать запретить эти вольности при синтезе атрибутом (* dont_touch="true" *) или (* buffer_type="none" *) для этой цепи ну и ручками попробовтаь расфанаутить (* max_fanout=<number> *) Удачи! Rob. Сигнал cbPLFRAME это внутренний сигнал модуля, 16 бит счетчик. Ему вообще нет смысла подключаться через bufg. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 24 июля, 2018 Опубликовано 24 июля, 2018 · Жалоба Приветствую! Сигнал cbPLFRAME это внутренний сигнал модуля, 16 бит счетчик. Ему вообще нет смысла подключаться через bufg.Мне от сюда плохо видно что за счетчик у Вас там нарисован и где именно используются выходы из него. Вы бы открыли post-map/post-palce netlist по вьювере и посмотрели куда идут эти цепи и какие fanout у них. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба Сигнал cbPLFRAME это внутренний сигнал модуля, 16 бит счетчик. Ему вообще нет смысла подключаться через bufg. А не gated clock или latch ли вы там накодили случайно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба А не gated clock или latch ли вы там накодили случайно?Не обязательно. Любые сигналы с очень большим фанаутом могут быть пропущены через BUFG. В Зайлинксе я с таким не сталкивался, а в Альтере было дело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 26 июля, 2018 Опубликовано 26 июля, 2018 · Жалоба Не обязательно. Любые сигналы с очень большим фанаутом могут быть пропущены через BUFG. В Зайлинксе я с таким не сталкивался, а в Альтере было дело. В Зайлинксе такое бывает только если сигнал где-то используется в качестве такта, либо случайно по ошибке вкрался латч (а он тоже на тактовый вход приходит). Самолично имел дело с сигналами разрешения клока (fanout до нескольких тысяч). Так вот для борьбы с времянками приходилось "вручную" директивами такой fanout "распиливать" на куски по 100 входов. И ни разу не было замечено использования глобальных буферов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 26 июля, 2018 Опубликовано 26 июля, 2018 · Жалоба Приветствую! В Зайлинксе такое бывает только если сигнал где-то используется в качестве такта, либо случайно по ошибке вкрался латч (а он тоже на тактовый вход приходит). Самолично имел дело с сигналами разрешения клока (fanout до нескольких тысяч). Так вот для борьбы с времянками приходилось "вручную" директивами такой fanout "распиливать" на куски по 100 входов. И ни разу не было замечено использования глобальных буферов.Не повезло Вам ;) так как в Xilinx бывает и такое : ... 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anton1990 0 26 июля, 2018 Опубликовано 26 июля, 2018 · Жалоба Приветствую! Не повезло Вам ;) так как в Xilinx бывает и такое : А так как в UltaScale BUFG дофига и структура глобальных буферов отличается от предыдущих семейст ( более похожа на древовидную структуру ASIC) то порог использования в качестве драйверов для HF nets может быть ниже. Удачи! Rob. Всем еще раз привет. С проблемой разобрался. Все дело было в IP-ila (логический анализатор). Закоментировал ila и проект развелся и заработал. Перекомпилировал ila, добавив сигналов и увеличив глубину. Собрал проект и все работает. Вот такие вот ядра у вивады :-) Тему можно закрывать. Всем спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 27 июля, 2018 Опубликовано 27 июля, 2018 · Жалоба Всем еще раз привет. С проблемой разобрался. Все дело было в IP-ila (логический анализатор). Закоментировал ila и проект развелся и заработал. Перекомпилировал ila, добавив сигналов и увеличив глубину. Собрал проект и все работает. Вот такие вот ядра у вивады :-) Тему можно закрывать. Всем спасибо. Недавно наблюдал аналогичную проблему на Kintex. Есть два банка и две корки с сигналами, тактируемыми от региональных буферов RCLK в каждом банке соответственно. Так вот попытка поглядеть в одном ILA сигналы с обеих корок приводит к фейлу при разводке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться