|
timing in Vivado |
|
|
|
Oct 8 2015, 19:38
|

Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 12-05-09
Из: Нижний Новгород
Пользователь №: 48 978

|
Всем привет. Возникла такая проблема. На virtex7 реализован жирный мультиплексор 16 высокоскоростных потоков в один. Идея в том, что по 16 каналам валяться 64 битные слова с частотой 312МГц. Валяться они пакетами и скважность этих пакетов плавает со временем. Выходной поток имеет такую же пропускную способность(64 бит слова, 312МГц). Чтобы не потерять данные, пока в выходной поток пишем данные с одного канала, данные с других каналов пишутся в fifo. Каждый канал имеет своё собственное fifo размерностью 16384x64. Реализован алгоритм постепенного чтения из каждого фифо в определённой очереди, чтобы ни одно фифо не успело переполниться. Фифо получились большие и места этот мультиплексор занимает очень много.
В итоге всё работает и ничего не теряется, но возникла проблема. Компиляция производится при помощи vivado 2014 и из раза в раз получается разный результат по таймингам. То их нет, то получаются большие тайминги(до 0.5нс). Причём мультиплексор давно написан и никаких изменений в нём не делается. Ему отведён отдельный регион на кристале где ему разводится и другой логики от других модулей там нет. Из сборки к сборке он не меняется.
Я бы понял если бы тайминги были всегда, но компилятору всёже периодически удаётся его нормально развести.
Может кто-нибудь посоветует как с этим бороться. Можно ли зафиксировать как-то результат разводки мультиплексора, или сказать компилятору разводить его пока не будет ошибок по таймингам?
|
|
|
|
|
 |
Ответов
(1 - 11)
|
Oct 8 2015, 19:43
|

Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 12-05-09
Из: Нижний Новгород
Пользователь №: 48 978

|
Цитата(Vascom @ Oct 8 2015, 22:41)  Попробуй Vivado 2015.3, текущий. У старых версий Vivado вообще куча проблем существует. нет возможности, только 2014.4
|
|
|
|
|
Oct 13 2015, 08:20
|

Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 12-05-09
Из: Нижний Новгород
Пользователь №: 48 978

|
FIFO и до этого были приколочены, обложил констрейнами 2/3 всех сигналов в мультиплексоре и он стал почти всегда собираться без таймингов. Цитата После удачной разводки выгрузите размещение компонент вашего мультиплексора в файл констрейнтов (xdc) и затем используйте этот файл при дальнейших сборках вашего проекта. Подскажите пожалуйста как это сделать в vivado?
|
|
|
|
|
Oct 13 2015, 12:36
|
Местный
  
Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339

|
Посмотрите на Vivado XDC Macros Цитата(cerg19 @ Oct 13 2015, 11:20)  обложил констрейнами 2/3 всех сигналов в мультиплексоре и он стал почти всегда собираться без таймингов. По хорошему все сигналы должны подпадать под констрейнты.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|