Koluchiy 0 18 октября, 2010 Опубликовано 18 октября, 2010 · Жалоба Здравствуйте. Борюсь тут с 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. Всем заранее спасибо за ответы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 18 октября, 2010 Опубликовано 18 октября, 2010 · Жалоба Здравствуйте. Борюсь тут с 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. ... Взято отсюда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 18 октября, 2010 Опубликовано 18 октября, 2010 (изменено) · Жалоба Спасибо. Лишний повод переходить на 12 версию... В 11-й Automax нету. Тем не менее, хотелось бы понять, почему в случае "Yes" синтезатор занимает >100% блоков, и можно ли это исправить... И как убедить работать в нужном ключе Synplify? Изменено 18 октября, 2010 пользователем Koluchiy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба В 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-блоках. Т.е. скомпилить невзирая на размер, что и получается из предыдущего предложения. ... короче всё криво :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба А девайс у Вас какой? См. выше :). "XST places all macros in the DSP blocks whenever possible". Я это понимаю так, что он пытается сделать всё, что возможно, на DSP-блоках, невзирая на занятые ресурсы. Сначала сделает, потом посмотрит получившиеся ресурсы. Грубо говоря, на занятые ресурсы надо смотреть самому :). А зачем тогда возможность выбрать процент заполнения - для красоты? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба я бы попытался применить USE_DSP48, про это написано в XST User Guide for Virtex-6 and Spartan-6 Если точно ясно в каком модуле нужно эти блоки ставить, то прямо в исходном тексте атрибутами, а если неясно, то в UCF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба я бы попытался применить USE_DSP48 +1 Добавить мракосов между RTL кодом и вставкой компонента и не париться. Все максимально под контролем Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба USE_DSP48 Это полный аналог настройки через менюшку, игры с которой описаны выше. Добавить мракосов между RTL кодом и вставкой компонента и не париться. Все максимально под контролем Слишком много телодвижений. И не всегда понятно, лучше станет, или хуже. Хочется именно автоматических действий синтезатора по запихиванию всего-чего-можно в DSP-блоки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба Если вся схема в одном entity (если vhdl), то полный аналог. А если в разных - то возможность управлять синтезом в разных блоках и их экземплярах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба Слишком много телодвижений. И не всегда понятно, лучше станет, или хуже. ну дык извечный выбор "шашечки или ехать" всегда остается за Вами %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба А можно мне ехать с шашечками :rolleyes: . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 21 октября, 2010 Опубликовано 21 октября, 2010 (изменено) · Жалоба Небольшое итого. На 12.3 при выборе Automax оно смогло сделать то, что мне надо. Причем, заняло (далеко)не все наличные DSP-блоки, так что какая-то логика поиска оптимума там есть. На моём, в общем-то не считательном проекте экономия по LUT-ам составила порядка 6-7 процентов. Но вот с времянкой, судя по всему, стало тоскливо - P&R уже крутится скоро час, и, думаю, ничего нужного не накрутит. P.S. По-прежнему интересно, можно ли в Synplify сделать аналогично Automax'у в XST. Изменено 21 октября, 2010 пользователем Koluchiy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться