|
как на RTL заставить синтезатор использовать выделенные межкаскадные связи BCOUT-> BCIN в DSP48 Xilinx?, если вставить макрос DSP48, то связь есть, а если * на RTL - то нет |
|
|
|
Oct 1 2014, 08:41
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Здравствуйте. Не могу на RTL заставить синтезатор использовать выделенные межкаскадные связи BCOUT-> BCIN в DSP48 Xilinx. Если вставляю макрос DSP48, то такая связь работает, а если описывают просто на RTL через символы * и +, то не хочет подсоединять через выделенные, подсоединяет через обычные порты. В прикреплении реализовал умножитель 35 на 35 битов из примера Spartan-6 FPGA DSP48A1 Slice, стр. 29, там сигнал B использует выделенные межкаскадные связи BCOUT -> BCIN. В исходнике с помощью параметра можно переключаться между 2мя различными вариантами: через макрос и просто через конструкции языка. Никак не получается заставить синтезатор использовать эти выделенные связи по второму варианту. Как уже только не исхитрялся, и атрибут KEEP_HIERARCHY ставил, и USE_DSP48, фантазия кончилась... Пробовал в ISE и в Vivado. Вообще мне надо под SPARTAN6, а Vivado его не поддерживает, пришлось в Vivado выбрать Virtex7, а там архитектура DSP48 немножко другая... хотя суть та же. Исходник под Vivado не менял. А в таком виде Vivado тоже не справилась, не захотела увидеть и провести межкаскадные связи. Хотя вот в старом документе (в свежем этого абзаца уже нет) XST User Guide for Virtex-4, Virtex-5, Spartan-3, and Newer CPLD Devices на стр. 222 говорится: Цитата If your design contains several interconnected macros, where each macro can be implemented on DSP48, XST attempts to interconnect DSP48 blocks using fast BCIN/BCOUT and PCIN/PCOUT connections. Such situations are typical in filter and complex multiplier descriptions. XST can build complex DSP macros and DSP48 chains across the hierarchy when Keep Hierarchy (KEEP_HIERARCHY) is set to no. This is the default in ISE® Design Suite. Я пробовал и включать, и отключать KEEP_HIERARCHY (см. исходники) - не помогло. Может кому удавалось заставить синтезатор? Проблема чисто теоретическая конечно, т.к. ну не использовал он эти связи, да и фиг с ним, через обычные связи частота нисколько не ниже. Только рассыпухи чуть больше съело на внешнее дублирование задержек. Проблема скорее из разряда холивара, что написание на RTL в виде конструкций языка ничем не уступает применению громоздких макросов, имеющему кучу своих минусов. Пока что применение макросов выигрывает. Пусть и пренебрежимо незначительно.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
 |
Ответов
|
Jun 29 2015, 04:43
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Теперь вот самый обычный сумматор не хочет на DSP-блоках синтезироваться... то ли лыжи не едут по запарке... CODE // separating I and Q components of the local beamformers signal and the one from adjacent FPGA wire signed [BEAM_BW-1 : 0] loc_i, loc_q, adj_i, adj_q; assign loc_i = fifo_out [BEAM_BW -1 : 0 ]; assign loc_q = fifo_out [BEAM_BW*2 -1 : BEAM_BW]; assign adj_i = adj_data_f_al [BEAM_BW -1 : 0 ]; assign adj_q = adj_data_f_al [BEAM_BW*2 -1 : BEAM_BW];
// pipeline registers inside of adder DSP block (* use_dsp48 = "yes" *) reg signed [BEAM_BW-1 : 0] loc_i_int, loc_q_int, adj_i_int, adj_q_int; always @(posedge clk) begin loc_i_int <= loc_i; loc_q_int <= loc_q; adj_i_int <= adj_i; adj_q_int <= adj_q; end // adder itself (* use_dsp48 = "yes" *) reg signed [BEAM_BW-1 : 0] sum_i, sum_q; always @(posedge clk) begin sum_i <= loc_i_int + adj_i_int; sum_q <= loc_q_int + adj_q_int; end
BEAM_BW = 16. Предположил, что синтезатор "считает", что слишком жирно ставить сумматор для складывания 16 битов. Поставил 30 - не полегчало. В настройках синтеза в ISE стоит -use_dsp48 = Auto. Предположил, что в коде что-то криво описано, и такой сумматор в принципе невпихуем в DSP. Поставил Auto Max - реализовало на DSP. Т.е. код получается нормальный? Тогда почему же не синтезирует при Auto? Ему же русским по белому написано в коде: (* use_dsp48 = "yes" *)
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
Сообщений в этой теме
Krys как на RTL заставить синтезатор использовать выделенные межкаскадные связи BCOUT-> BCIN в DSP48 Xilinx? Oct 1 2014, 08:41 Bad0512 Цитата(Krys @ Oct 1 2014, 15:41) Здравств... Oct 1 2014, 09:33 Krys Спасибо за опыт. К стати, в том же примере, которы... Oct 1 2014, 09:48 Bad0512 Цитата(Krys @ Oct 1 2014, 16:48) Спасибо ... Oct 1 2014, 10:10  Krys Цитата(Bad0512 @ Oct 1 2014, 17:10) Что з... Oct 2 2014, 02:20   Bad0512 Цитата(Krys @ Oct 2 2014, 09:20) Вместо и... Oct 2 2014, 04:00    Krys Цитата(Bad0512 @ Oct 2 2014, 11:00) Будет... Oct 2 2014, 07:40   Amurak Цитата(Krys @ Oct 2 2014, 06:20) А описыв... Oct 2 2014, 05:56    Bad0512 Цитата(Amurak @ Oct 2 2014, 12:56) Как ва... Oct 2 2014, 06:07 TRILLER Добрый день. Раз уж заговорили про симплифай.
Одна... Oct 1 2014, 11:22 sallador Цитата(Krys @ Oct 1 2014, 12:41) Может ко... Oct 2 2014, 06:25 Krys Хочу похвастаться своими успехами.
Вот такую схему... Jun 8 2015, 09:25 Timmy Цитата(Krys @ Jun 8 2015, 12:25) Хочу пох... Jun 8 2015, 09:46 Krys да он ничего не значит, просто его надо ставить, е... Jun 8 2015, 10:05 sallador Цитата(Krys @ Jun 29 2015, 08:43) Теперь ... Aug 21 2015, 11:14 Krys Странно, что аккумулятор со входом сброса синтезир... Jun 29 2015, 06:36 Bad0512 Цитата(Krys @ Jun 29 2015, 12:36) Странно... Jun 29 2015, 08:57 Krys вопрос чисто принципиальный. Синтезатор ослушался ... Jun 29 2015, 10:02 TRILLER Цитата(Krys @ Jun 29 2015, 13:02) ...прям... Jun 29 2015, 10:31 Krys ну понятно, что оно везде "рекомендация... Jul 6 2015, 02:09 Krys Мне "как отдельный компонент" не хочется... Aug 24 2015, 04:19 Krys Ещё некоторая дополнительная информация от моего к... Mar 13 2017, 02:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|