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

Борьба с DSP-блоками

Здравствуйте.

 

Борюсь тут с DSP-блоками микросхем Spartan-6.

 

Суть борьбы в следующем.

Есть проект, в котором умножителей, как и ЦОС, вообще нету, и DSP-блоки в общем не нужны.

Но поскольку они есть, а обыкновенной логики "несколько" нехватает, решил я попытаться использовать DSP-блоки в качестве сумматоров и регистров.

 

При этом, явно создавать эти блоки через Core generator желания нет, т.к. заранее непонятно, где более выгодно применять эти блоки, а где менее выгодно. Соответственно хотца, чтобы синтезатор сам решал этот вопрос исходя из верилогового описания.

 

Итого.

1. Включил использование DSP-блоков в настройках XST (Use DSP Block = Auto).

Результат: ни одного DSP-блока не подключено.

 

2. Поставил Use DSP Block = Yes.

Результат: Синтезатор развел на DSP-блоки что можно и что нельзя, в результате количество необходимых DSP-блоков получилось примерно в 2 раза больше, чем было в микросхеме, и Mapper выдал ошибку "девайс переполнен".

 

3. Поставил DSP Utilization ratio = 50 (было 100).

Резальтат: аналогично п. 2.

 

4. Поставил обратно Use DSP Block = Auto, выбрал для проекта микросхему, которая чуть меньше, чем надо для проекта (в надежде на то, что раз не влезает, то будет использовать DSP-блоки).

Фигвам, синтезировал без использования DSP-блоков, Mapper выдал ошибку "девайс переполнен".

 

5. Попробовал синтезировать через Synplify. Настроек касательно DSP-блоков в ней никаких не обнаружил, результат аналогичен п. 4.

 

В общем, какая-то фигня. Кто-нибудь пробовал делать что-то аналогичное?

Можно ли заставить синтезаторы перекладывать Верилог (операции суммирования и накопления) в DSP-блоки, или всё только ручками?

 

Юзаю ISE 11.5.

 

Всем заранее спасибо за ответы.

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


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

Здравствуйте.

 

Борюсь тут с DSP-блоками микросхем Spartan-6.

Возможно это поможет

The following properties apply to the Synthesize process using the Xilinx Synthesis Technology (XST) synthesis tool.

...

# Use DSP Block (Spartan-3A DSP, Spartan-6, Virtex-5, and Virtex-6 devices only)

Specifies whether or not DSP blocks are utilized. Select an option from the drop-down list.

 

* Auto

XST examines the benefits of placing these macros in DSP blocks, and then determines the most efficient implementation.

* Automax

XST attempts to maximize DSP block utilization within the limits of available resources on the selected device. In addition to the macros considered in the Auto setting, Automax considers additional functions, such as adders, counters, and standalone accumulators, as candidates for DSP block implementation. Xilinx® recommends that you use Automax when a tightly packed device is your primary concern, and you are attempting to free up LUT resources.

Note This setting is supported for Spartan-6 and Virtex-6 devices only.

Caution! Using this setting may degrade circuit performance compared to the default Auto setting. Do not use Automax when performance is your primary implementation goal.

* Yes

XST places all macros in the DSP blocks whenever possible. This option enables you to see how many DSP blocks are used for a compiled submodule.

* No

XST uses standard FPGA resources for these macros.

 

By default, this property is set to Auto.

 

...

 

Взято отсюда

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


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

Спасибо.

Лишний повод переходить на 12 версию... В 11-й Automax нету.

 

Тем не менее, хотелось бы понять, почему в случае "Yes" синтезатор занимает >100% блоков, и можно ли это исправить...

И как убедить работать в нужном ключе Synplify?

Изменено пользователем Koluchiy

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


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

В 11-й Automax нету.
А девайс у Вас какой? Видели в приведённом выше тексте такое: "Note This setting is supported for Spartan-6 and Virtex-6 devices only"?

 

 

Тем не менее, хотелось бы понять, почему в случае "Yes" синтезатор занимает >100% блоков, и можно ли это исправить...
А на это есть такая цитата: "XST places all macros in the DSP blocks whenever possible". Я это понимаю так, что он пытается сделать всё, что возможно, на DSP-блоках, невзирая на занятые ресурсы. Сначала сделает, потом посмотрит получившиеся ресурсы.

"This option enables you to see how many DSP blocks are used for a compiled submodule" - а тут я понимаю, что эта опция позволяет весь проект измерить в DSP-блоках. Т.е. скомпилить невзирая на размер, что и получается из предыдущего предложения.

... короче всё криво :)

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


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

А девайс у Вас какой?

См. выше :).

 

"XST places all macros in the DSP blocks whenever possible". Я это понимаю так, что он пытается сделать всё, что возможно, на DSP-блоках, невзирая на занятые ресурсы. Сначала сделает, потом посмотрит получившиеся ресурсы.

Грубо говоря, на занятые ресурсы надо смотреть самому :).

А зачем тогда возможность выбрать процент заполнения - для красоты? :)

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


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

я бы попытался применить USE_DSP48, про это написано в XST User Guide for Virtex-6 and Spartan-6

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

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


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

я бы попытался применить USE_DSP48

+1 Добавить мракосов между RTL кодом и вставкой компонента и не париться. Все максимально под контролем

 

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


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

USE_DSP48

Это полный аналог настройки через менюшку, игры с которой описаны выше.

 

Добавить мракосов между RTL кодом и вставкой компонента и не париться. Все максимально под контролем

Слишком много телодвижений. И не всегда понятно, лучше станет, или хуже.

Хочется именно автоматических действий синтезатора по запихиванию всего-чего-можно в DSP-блоки.

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


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

Если вся схема в одном entity (если vhdl), то полный аналог. А если в разных - то возможность управлять синтезом в разных блоках и их экземплярах.

 

 

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


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

Слишком много телодвижений. И не всегда понятно, лучше станет, или хуже.

ну дык извечный выбор "шашечки или ехать" всегда остается за Вами %)

 

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


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

Небольшое итого.

 

На 12.3 при выборе Automax оно смогло сделать то, что мне надо.

Причем, заняло (далеко)не все наличные DSP-блоки, так что какая-то логика поиска оптимума там есть.

На моём, в общем-то не считательном проекте экономия по LUT-ам составила порядка 6-7 процентов.

 

Но вот с времянкой, судя по всему, стало тоскливо - P&R уже крутится скоро час, и, думаю, ничего нужного не накрутит.

 

P.S. По-прежнему интересно, можно ли в Synplify сделать аналогично Automax'у в XST.

Изменено пользователем Koluchiy

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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