el.d 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Здравствуйте. Подскажите пожалуйста, как сказать Виваде, чтобы в случае если все DSP блоки задействованы, то остальную математику пускай делает на LUTах? Покрутил настройки синтеза - не получилось никак (( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Было бы логично так и делать. А что-значит "никак"? Не разводится вообще? Ошибка какая? Насколько я успел понять, потыкав Виваду палочкой, она заточена на скриптование. Соответственно, настройки синтеза/разводки в гуях весьма скудные. Все мало-мальски серьёзные и нетривиальные опции задаются через xdc. Почитайте руководство по xdc, может, там что-то будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
el.d 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Было бы логично так и делать. А что-значит "никак"? Не разводится вообще? Ошибка какая? Насколько я успел понять, потыкав Виваду палочкой, она заточена на скриптование. Соответственно, настройки синтеза/разводки в гуях весьма скудные. Все мало-мальски серьёзные и нетривиальные опции задаются через xdc. Почитайте руководство по xdc, может, там что-то будет. Угу, пишет что надо 137% DSP блоков, а больше 100% она естестно использовать не может, а додуматься перекинуть часть операций на луты сама не может.... При этом в 2016я Вивада додумывалась, но 16ю мне неудобно использовать по ряду причин... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Вряд ли 2016я додумывалась до такого. Наверное просто код другой был. В общем, если эти DSP в разных модулях, то ты можешь в коде указать где использовать блоки, а где логику. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
el.d 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Вряд ли 2016я додумывалась до такого. Наверное просто код другой был. В общем, если эти DSP в разных модулях, то ты можешь в коде указать где использовать блоки, а где логику. Я вот прямо сейчас ради эксперимента откомпилил один и тот же проект в 2016.2 и в 2017.2. В 2016.2 проект собрался, в 2017.2 - нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Так может он там вообще DSP не задействовал. Или не задействовал их для операций вычитания, например. Но если модули одинаковые и DSP блоки требуются одинаковые, то вивадо не сделает часть из них на логике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
el.d 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Так может он там вообще DSP не задействовал. Или не задействовал их для операций вычитания, например. Но если модули одинаковые и DSP блоки требуются одинаковые, то вивадо не сделает часть из них на логике. В 2016.2 задействовано 100% DSP блоков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Ну значит не повезло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Осваивайте директивы синтеза. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Может попробовать использовать грязный трюк - использовать асинхронный резет на части кода и тогда синтезатор не сможет сделать DSP ячейки и придется луты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Ресет и так всегда лучше делать асинхронным. Это не влияет на способность синтезатора использовать DSP-блоки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 25 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Может попробовать использовать грязный трюк - использовать асинхронный резет на части кода и тогда синтезатор не сможет сделать DSP ячейки и придется луты? Зачем все эти трюки, если есть атрибут: (* use_dsp = "no" *) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Ресет и так всегда лучше делать асинхронным. Это не влияет на способность синтезатора использовать 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. Зачем все эти трюки, если есть атрибут: (* use_dsp = "no" *) ? Забыл про него, спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 25 января, 2018 Опубликовано 25 января, 2018 · Жалоба А можете аргументировать? Вот 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 автоматом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться