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

Vivado 2017.2 DSP блоки

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

Подскажите пожалуйста, как сказать Виваде, чтобы в случае если все DSP блоки задействованы, то остальную математику пускай делает на LUTах? Покрутил настройки синтеза - не получилось никак ((

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


Ссылка на сообщение
Поделиться на другие сайты
Было бы логично так и делать. А что-значит "никак"? Не разводится вообще? Ошибка какая?

Насколько я успел понять, потыкав Виваду палочкой, она заточена на скриптование. Соответственно, настройки синтеза/разводки в гуях весьма скудные. Все мало-мальски серьёзные и нетривиальные опции задаются через xdc. Почитайте руководство по xdc, может, там что-то будет.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(andrew_b @ Jan 23 2018, 12:51) <{POST_SNAPBACK}>
Было бы логично так и делать. А что-значит "никак"? Не разводится вообще? Ошибка какая?

Насколько я успел понять, потыкав Виваду палочкой, она заточена на скриптование. Соответственно, настройки синтеза/разводки в гуях весьма скудные. Все мало-мальски серьёзные и нетривиальные опции задаются через xdc. Почитайте руководство по xdc, может, там что-то будет.

Угу, пишет что надо 137% DSP блоков, а больше 100% она естестно использовать не может, а додуматься перекинуть часть операций на луты сама не может.... При этом в 2016я Вивада додумывалась, но 16ю мне неудобно использовать по ряду причин...

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


Ссылка на сообщение
Поделиться на другие сайты
Вряд ли 2016я додумывалась до такого. Наверное просто код другой был.
В общем, если эти DSP в разных модулях, то ты можешь в коде указать где использовать блоки, а где логику.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Vascom @ Jan 23 2018, 12:22) <{POST_SNAPBACK}>
Вряд ли 2016я додумывалась до такого. Наверное просто код другой был.
В общем, если эти DSP в разных модулях, то ты можешь в коде указать где использовать блоки, а где логику.

Я вот прямо сейчас ради эксперимента откомпилил один и тот же проект в 2016.2 и в 2017.2. В 2016.2 проект собрался, в 2017.2 - нет.

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


Ссылка на сообщение
Поделиться на другие сайты
Так может он там вообще DSP не задействовал. Или не задействовал их для операций вычитания, например. Но если модули одинаковые и DSP блоки требуются одинаковые, то вивадо не сделает часть из них на логике.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Vascom @ Jan 23 2018, 12:28) <{POST_SNAPBACK}>
Так может он там вообще DSP не задействовал. Или не задействовал их для операций вычитания, например. Но если модули одинаковые и DSP блоки требуются одинаковые, то вивадо не сделает часть из них на логике.

В 2016.2 задействовано 100% DSP блоков.

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


Ссылка на сообщение
Поделиться на другие сайты
Может попробовать использовать грязный трюк - использовать асинхронный резет на части кода и тогда синтезатор не сможет сделать DSP ячейки и придется луты?

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


Ссылка на сообщение
Поделиться на другие сайты
Ресет и так всегда лучше делать асинхронным. Это не влияет на способность синтезатора использовать DSP-блоки.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(_Ivan_33 @ Jan 24 2018, 12:23) <{POST_SNAPBACK}>
Может попробовать использовать грязный трюк - использовать асинхронный резет на части кода и тогда синтезатор не сможет сделать DSP ячейки и придется луты?

Зачем все эти трюки, если есть атрибут: (* use_dsp = "no" *) ?

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Vascom @ Jan 24 2018, 12:28) <{POST_SNAPBACK}>
Ресет и так всегда лучше делать асинхронным. Это не влияет на способность синтезатора использовать DSP-блоки.


А можете аргументировать?
Вот ug901 страница 69 -
Coding Guidelines
•Do not set or reset Registers asynchronously.
°Control set remapping becomes impossible.
°Sequential functionality in device resources such as block RAM components and
DSP blocks can be set or reset synchronously only.


Цитата(blackfin @ Jan 24 2018, 12:38) <{POST_SNAPBACK}>
Зачем все эти трюки, если есть атрибут: (* use_dsp = "no" *) ?


Забыл про него, спасибо!

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(_Ivan_33 @ Jan 24 2018, 18:44) <{POST_SNAPBACK}>
А можете аргументировать?
Вот ug901 страница 69 -
Coding Guidelines
•Do not set or reset Registers asynchronously.
°Control set remapping becomes impossible.
°Sequential functionality in device resources such as block RAM components and
DSP blocks can be set or reset synchronously only.

Хм, заставили меня попотеть, почитать документацию...
Признаю свою частичную неправоту: действительно регистры в DSP-блоках могут быть только с синхронным ресетом, однако эти блоки всё равно могут использоваться для арифметических операций и использовать внешние регистры, только не оптимально с точки зрения FPGA получается.
Асинхронный ресет просто у нас в проекте используется. И, поскольку далее проект реализуется в виде ASIC, то на FPGA всё должно быть один в один.

Но всё же, даже если в коде регистры с асинхронным ресетом, то большой перемножитель всё равно будет сделан на DSP-блоке самим Vivado автоматом.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация