bogaev_roman 0 22 января, 2018 Опубликовано 22 января, 2018 · Жалоба Тут системная проблема и длинный путь - это следствие. Судя по описанию, это проблема не кривой разводки и решается она до парсера, на уровне описания алгоритма путем изменения логики и, как было выше описано, добавлением регистров. Вы можете попробовать все банки прибить гвоздями, но без четкого понимания того, каким образом Ваш алгоритм должен лечь на ПЛИС (архитектурно) это приведет только к ухудшения времянки и дополнительному времени разводки. Лично я считаю хорошим тоном приколотить ВСЮ блочную память гвоздями. Несколько сотен штук - не так и много. Зато экономит кучу времени в дальнейшем. И САПРине сильно легчает. А что если вся эта память управляется из одного места и имеет стыки с интерфейсами типа ethernet или DDR3,которые уже жестко сидят - куда ее прибивать? Нам ТС ничего не поведал об алгоритме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 22 января, 2018 Опубликовано 22 января, 2018 · Жалоба Судя по описанию, это проблема не кривой разводки и решается она до парсера, на уровне описания алгоритма путем изменения логики и, как было выше описано, добавлением регистров. Вы можете попробовать все банки прибить гвоздями, но без четкого понимания того, каким образом Ваш алгоритм должен лечь на ПЛИС (архитектурно) это приведет только к ухудшения времянки и дополнительному времени разводки. А что если вся эта память управляется из одного места и имеет стыки с интерфейсами типа ethernet или DDR3,которые уже жестко сидят - куда ее прибивать? Нам ТС ничего не поведал об алгоритме. Топикстартер ничего не понимает в том о чем он пишет Информация принята. Алгоритм приведен в описание темы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 22 января, 2018 Опубликовано 22 января, 2018 · Жалоба Топикстартер ничего не понимает в том о чем он пишет Информация принята. Алгоритм приведен в описание темы. Возможно, я неправильно выразился - отсутствует структурная схема, конкретно проблемный кусок. Есть дизайн c LDPC DVBS2 с точки зрения реализации в итоговой RTL схеме может варьироваться. Обычная линия задержки может иметь несколько вариантов реализации, не зная реализацию, сложно чем-то помочь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Возможно, я неправильно выразился - отсутствует структурная схема, конкретно проблемный кусок. Тут не в куске проблема. С проблемным куском я и сам бы разобрался :) C fan-out глобальных проблем нет. Структурная схема - Память, сдвигатель, обработчик. Проблема в том, как вежливо объяснить мапперу, что не надо память равномерно по всему кристаллу раскидывать. Память размести компактней, сдвигатель поставь после неё, а обработчик поставь после сдвигателя и перед памятью. А так память раскидал по всему кристаллу и между кристаллами начинает распихивать, сдвигатель, обработчик. Там становится тесно и бах 90 % времни тратиться на распространение сигнала с fanout 2 ..... PS Белый цвет - это блоки памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Тут не в куске проблема. С проблемным куском я и сам бы разобрался :) C fan-out глобальных проблем нет. Структурная схема - Память, сдвигатель, обработчик. Проблема в том, как вежливо объяснить мапперу, что не надо память равномерно по всему кристаллу раскидывать. Память размести компактней, сдвигатель поставь после неё, а обработчик поставь после сдвигателя и перед памятью. А если память взять как инстанс из библиотеки - RAMB32 и т.д. А сдвигатель как SRL32... И память составлять из кусков не по "адресам", а по "данным"... Тогда не понадобится мультиплексор шины данных от разных кусков памяти.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба А если память взять как инстанс из библиотеки - RAMB32 и т.д. А сдвигатель как SRL32... И память составлять из кусков не по "адресам", а по "данным"... Тогда не понадобится мультиплексор шины данных от разных кусков памяти.... Память и так используется как инстанс. Используется циклический сдвигатель. Известный как barrel shifter. Как его сделать на SRL32 не знаю и даже не уверен, что можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Используется циклический сдвигатель. Известный как barrel shifter. Как его сделать на SRL32 не знаю и даже не уверен, что можно. А сигнал сброса в этом сдвигателе используется? Xilinx, ug474_7Series_CLB, page 45: Control Signals • Use control signals only as necessary. • Avoid using a routed global reset signal and minimize use of local resets to maximize opportunity to use FPGA resources. • Use active-High control signals. • Avoid having both set and reset on the same flip-flop. • Avoid control signals on small shift registers and storage arrays in order to use LUTs instead of flip-flops, to maximize utilization and minimize power. То есть, если у регистра сдвига явно прописан сигнал сброса, то синтезатор не сможет имплементировать этот регистр в примитиве "SLICEM SRL Shift Register" и сделает все на FFs. /См. UG474, page 50/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба А сигнал сброса в этом сдвигателе используется? нет :) А нужно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба нет :) А нужно? Не нужно.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Не нужно.. Отлегло :disco: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Проблема в том, как вежливо объяснить мапперу, что не надо память равномерно по всему кристаллу раскидывать. Память размести компактней, сдвигатель поставь после неё, а обработчик поставь после сдвигателя и перед памятью. Использовать Pblocks? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Xilinx, ug474_7Series_CLB, page 45: То есть, если у регистра сдвига явно прописан сигнал сброса, то синтезатор не сможет имплементировать этот регистр в примитиве "SLICEM SRL Shift Register" и сделает все на FFs. /См. UG474, page 50/ Это-то понятно, но только как с помощью SRL реализовать циклический сдвиг 360-ти 8-битных слов? Да еще и с произвольным шагом. Может быть укажите где на это можно посмотреть? Использовать Pblocks? Ключевое слово - вежливо :) Ведь у проекта будет еще верхний уровень, а у него своя логика и память будет. А вообще использовал. Но пока получалось только хуже. Там получается адовая шина данных и не понятно, что с этим делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Это-то понятно, но только как с помощью SRL реализовать циклический сдвиг 360-ти 8-битных слов? Да еще и с произвольным шагом. Может быть укажите где на это можно посмотреть? Может быть, поможет вот это: Define sets of design elements with U Set (U_SET) or HU Set (HU_SET) constraints. • Each element of the set is placed in relation to the other elements of the set by Relative Location (RLOC) constraints. • Logic elements with RLOC constraints and common set names are associated in an RPM. U_SET, HU_SET, and RLOC constraints: • Must be defined as properties in the HDL design files. • Are not supported in Xilinx® Design Constraints format (XDC). См., UG903 (v2017.4) стр. 156. И вот ещё: RLOC Relative Location (RLOC) constraints define the relative placement of logic elements assigned to a set, such as an H_SET, HU_SET, or U_SET. When RLOC is present in the RTL source files, the H_SET, HU_SET, or U_SET properties get translated into a read-only RPM property on cells in the synthesized netlist. The RLOC property is preserved, but becomes a read-only property after synthesis. For more information on using these properties, and defining RPMs, refer to the Vivado Design Suite User Guide: Using Constraints (UG903) [Ref 19]. You can define the placement of any element within the set relative to other elements in the set, regardless of the eventual placement of the entire group onto the target device. For example, if RLOC constraints are applied to a group of eight flip-flops organized in a column, the mapper maintains the column and moves the entire group of flip-flops as a single unit. См, UG912 (v2017.4), стр 307. И пример для сдвигателя: The following Verilog module defines RLOC and HU_SET properties for the shift register Flops in the module. См, UG912 (v2017.4), стр.207. PS: About Relatively Placed Macros A Relatively Placed Macro (RPM) is a list of basic logic elements (BELs) grouped into a set. Examples of logic elements include: • FF • LUT • DSP • RAM RPMs are primarily used to place small groups of logic close together in order to improve resource efficiency and enable faster interconnections. См, UG903 (v2017.4), стр 156. Упс.. Только сейчас заметил, что вся тема про ISE.. Пардон.. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Приветствую! Увы - алгоритм P&R ISE страдает "размазыванием" логики и BRAM в частности по всему кристаллу. Поэтому сначала нужно зафиксить эту память используя AREA_GROUP. Необязательно каждый BRAM отдельно - достаточно назначить регион достаточного размера для соответствующих функциональных блоков памяти. Типа такого: INST "inst_top/inst_1/inst_name" AREA_GROUP = "AG_inst_name"; #AREA_GROUP "AG_inst_name" RANGE = SLICE_X0Y60:SLICE_X23Y99; AREA_GROUP "AG_inst_name" RANGE = RAMB18_X0Y24:RAMB18_X1Y39; AREA_GROUP "AG_inst_name" RANGE = RAMB36_X0Y12:RAMB36_X1Y19, RAMB36_X2Y12:RAMB36_X2Y19; Обычно за 2-3 итерации P&R находится стабильная конфигурация. Заодно такой дизайн "гвоздями" обычно сокращает (и значительно) время сборки для больших проектов. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
starley 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Увеличение количества триггеров приведет к резкому увеличению используемых ресурсов. В ASIC - да, а в ПЛИСе они и так есть, поэтому какой смысл их экономить? Если LUT уже задействован, то триггер под другие сигналы особо уже не используешь, поэтому отказываться от них из экономии в большинстве случаев неразумно. На выходах памяти, предполагающей длинные линии, я обычно ставлю регистры, как раз чтобы потом херней с ее приколачиванием не страдать.Если частоты уж совсем большие, тогда, конечно, только флорпленить остается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться