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

Как уменьшить время распространения сигнала (route)?

Тут системная проблема и длинный путь - это следствие.

Судя по описанию, это проблема не кривой разводки и решается она до парсера, на уровне описания алгоритма путем изменения логики и, как было выше описано, добавлением регистров. Вы можете попробовать все банки прибить гвоздями, но без четкого понимания того, каким образом Ваш алгоритм должен лечь на ПЛИС (архитектурно) это приведет только к ухудшения времянки и дополнительному времени разводки.

Лично я считаю хорошим тоном приколотить ВСЮ блочную память гвоздями. Несколько сотен штук - не так и много. Зато экономит кучу времени в дальнейшем. И САПРине сильно легчает.

А что если вся эта память управляется из одного места и имеет стыки с интерфейсами типа ethernet или DDR3,которые уже жестко сидят - куда ее прибивать? Нам ТС ничего не поведал об алгоритме.

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


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

Судя по описанию, это проблема не кривой разводки и решается она до парсера, на уровне описания алгоритма путем изменения логики и, как было выше описано, добавлением регистров. Вы можете попробовать все банки прибить гвоздями, но без четкого понимания того, каким образом Ваш алгоритм должен лечь на ПЛИС (архитектурно) это приведет только к ухудшения времянки и дополнительному времени разводки.

 

А что если вся эта память управляется из одного места и имеет стыки с интерфейсами типа ethernet или DDR3,которые уже жестко сидят - куда ее прибивать? Нам ТС ничего не поведал об алгоритме.

 

Топикстартер ничего не понимает в том о чем он пишет :biggrin:

Информация принята.

Алгоритм приведен в описание темы.

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


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

Топикстартер ничего не понимает в том о чем он пишет :biggrin:

Информация принята.

Алгоритм приведен в описание темы.

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

Есть дизайн c LDPC DVBS2
с точки зрения реализации в итоговой RTL схеме может варьироваться. Обычная линия задержки может иметь несколько вариантов реализации, не зная реализацию, сложно чем-то помочь.

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


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

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

Тут не в куске проблема. С проблемным куском я и сам бы разобрался :)

C fan-out глобальных проблем нет.

Структурная схема - Память, сдвигатель, обработчик.

Проблема в том, как вежливо объяснить мапперу, что не надо память равномерно по всему кристаллу раскидывать.

Память размести компактней, сдвигатель поставь после неё, а обработчик поставь после сдвигателя и перед памятью.

А так память раскидал по всему кристаллу и между кристаллами начинает распихивать, сдвигатель, обработчик.

Там становится тесно и бах 90 % времни тратиться на распространение сигнала с fanout 2 .....

PS Белый цвет - это блоки памяти.

post-15243-1516783859_thumb.png

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


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

Тут не в куске проблема. С проблемным куском я и сам бы разобрался :)

C fan-out глобальных проблем нет.

Структурная схема - Память, сдвигатель, обработчик.

Проблема в том, как вежливо объяснить мапперу, что не надо память равномерно по всему кристаллу раскидывать.

Память размести компактней, сдвигатель поставь после неё, а обработчик поставь после сдвигателя и перед памятью.

А если память взять как инстанс из библиотеки - RAMB32 и т.д. А сдвигатель как SRL32...

И память составлять из кусков не по "адресам", а по "данным"... Тогда не понадобится мультиплексор шины данных от разных кусков памяти....

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


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

А если память взять как инстанс из библиотеки - RAMB32 и т.д. А сдвигатель как SRL32...

И память составлять из кусков не по "адресам", а по "данным"... Тогда не понадобится мультиплексор шины данных от разных кусков памяти....

Память и так используется как инстанс.

Используется циклический сдвигатель. Известный как barrel shifter.

Как его сделать на SRL32 не знаю и даже не уверен, что можно.

 

 

 

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


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

Используется циклический сдвигатель. Известный как 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/

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


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

Проблема в том, как вежливо объяснить мапперу, что не надо память равномерно по всему кристаллу раскидывать.

Память размести компактней, сдвигатель поставь после неё, а обработчик поставь после сдвигателя и перед памятью.

Использовать Pblocks?

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


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

Xilinx, ug474_7Series_CLB, page 45:

То есть, если у регистра сдвига явно прописан сигнал сброса, то синтезатор не сможет имплементировать этот регистр в примитиве "SLICEM SRL Shift Register" и сделает все на FFs. /См. UG474, page 50/

Это-то понятно, но только как с помощью SRL реализовать циклический сдвиг 360-ти 8-битных слов? Да еще и с произвольным шагом. Может быть укажите где на это можно посмотреть?

 

Использовать Pblocks?

Ключевое слово - вежливо :)

Ведь у проекта будет еще верхний уровень, а у него своя логика и память будет.

А вообще использовал.

Но пока получалось только хуже.

Там получается адовая шина данных и не понятно, что с этим делать.

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


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

Это-то понятно, но только как с помощью 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.. Пардон.. ;)

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


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

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

 

Увы - алгоритм 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.

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


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

Увеличение количества триггеров приведет к резкому увеличению используемых ресурсов.

В ASIC - да, а в ПЛИСе они и так есть, поэтому какой смысл их экономить? Если LUT уже задействован, то триггер под другие сигналы особо уже не используешь, поэтому отказываться от них из экономии в большинстве случаев неразумно. На выходах памяти, предполагающей длинные линии, я обычно ставлю регистры, как раз чтобы потом херней с ее приколачиванием не страдать.Если частоты уж совсем большие, тогда, конечно, только флорпленить остается.

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


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

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

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

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

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

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

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

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

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

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