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

Как законстрейнить altlvds_rx на с10lp?

Добрый день!


В проекте есть приемник CSI2 на частоте на частоте 300 МГц, 600 Мбит/с в режиме ДДР соответственно. Для приема используется блок altlvds_rx c десериализацией 8. Входной клок заведен на отдельную PLL, и c[0] используется чтобы латчить входные данные.
Данные center-aligned, задержки прописаны по методичке ddr-timing-cookbook. В PLL ставлю нулевую задержку.  Собираю, смотрю тайминги

Fnew1.thumb.jpg.b85b7a216b4aa4ddfd46f42b60145390.jpg

 

Слак по setup. Напрашивается добавить фазы в PLL. Добавляю 90гр и смотрю опять

Fnew2.thumb.jpg.706d215fcdf15f8d06cdfc2284b22371.jpg

Фаза накрутилась, но квартус зачем-то навалил и задержки по данным. Сперва решил, что он куда-то регистры разместил далеко, залокейтил их как в первой сборке, но оказалось он впихнул на вход комбинационную логику которая делает DOUT = DIN и тупо добавляет задержки данных.
Ставил 120гр фазы, квартус уменьшает задержку комбинационной логики, фазы PLL хватает чтоб слак по setup убрать, но теперь надо бороться с холдом... ок, вижу что там нужно вписать теперь мультицикл, так как фронт вылез за launch, вписываю, собираю - он опять увеличил комбинационную задержку так что и по сетапу прослакано...

Можно ли сделать так, чтобы квартус не довавлял/убавлял по свой прихоти эту комбинационную логику пустую? Или я что то не так трактую? Вот таблицы DataPath из репорта до и после добавления мультицикла. +3.5 нс на ровном месте 

Fnew34jpg.thumb.jpg.1596669e42e0cb3d67988c5a8f8a0ab9.jpg  Fnew3.thumb.png.2ef110659325740f87861d0166bb3ee6.png

Я не специалист по заданию ограничений но может как-то это решается? Если нет, то каким путем нужно идти, чтобы добиться сходимости таймингов?

PS 
Проект достался по наследству, он как-то работал в железе до тех пор пока не потребовалось сделать пару изменений. После сборки данные перестали приниматься. Оказалось нет входных констрейнов.
Я немного слышал о ПЛИС и решил, что смогу быстренько подчинить, а он как уж на сковороде:acute: 

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


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

В общем проблема решена, частично. 

Может кому-то будет полезно. Проблема была в длинных интерконнект путях, которые квартус добавлял вместе с моей накруткой фазы в PLL.
Отключил в настройках фиттера функцию Optimize Hold Timinng, после этого фиттер стал более послушным, перестал накидывать эти задержки, и вместе с локейтом регистров это дало результат - по входным данным слаки удалось устранить, приемник заработал как надо.
Правда, еще есть слаки в длинных комбинационных путях fifo, которая стоит после lvds приемников... Я пока-что забил на это, там максимальная величина слакп 0.029 нс. Но в дальнейшем хотелось бы устранить. 

Может посоветуете по-крупному методологию, как с этим можно бороться?

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


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

On 9/16/2022 at 12:38 PM, ig_f said:

длинных комбинационных путях fifo

можете пояснить этот термин - "длинный комбинационный путь"?

Под этим понимается много слоев логики?

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


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

Да, я имел ввиду многослойную логику.

Но счас глянул конкретное место с самым большим слаком, и там всего один LUT в той же ячейке... При этом они в одном LABе. Слак по холду. На картинке прослаканый путь

image.thumb.png.66160d9cfd48d6da84d5244964c013e1.png

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


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

On 9/16/2022 at 2:36 PM, ig_f said:

Слак по холду

если бы туда как-нибудь добавить один логический элемент... и если при этом не появится слак по setup...

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


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

 

17 minutes ago, Yuri124 said:

если бы туда как-нибудь добавить один логический элемент...

Это генерённая fifo из визарда не представляю как туда чего-то добавить. Можно наверно только регистр этот попробовать в другой лаб поместить...
Вот посмотрел сетап для этого пути. Т.е. там дисбаланс чудовищный в пользу сетапа. ПОчему то квартус не смог это разрулить

sslack.thumb.png.b81ea9e51694b1ddba96bd7e608d2f98.png

 

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


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

1 hour ago, ig_f said:

Вот посмотрел сетап для этого пути. Т.е. там дисбаланс чудовищный в пользу сетапа. ПОчему то квартус не смог это разрулить

сами цифры ни о чем не говорят. смотрите детализацию, квартус вам все скажет, почему, отчего и как. 

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


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

попробовать поиграться еще раз с настройками квартуса и /или скомпилировать с разными seed.

При таком незначительном слаке может помочь.

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


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

6 minutes ago, Yuri124 said:

попробовать поиграться еще раз с настройками квартуса и /или скомпилировать с разными seed.

Пока путем релокейта прослаканых регистров в соседний LAB удалосьизбавиться от красных надписей. Понадобилось 5-6 перестановок: локейтишь один, появляется новый) Благо всего пара регистров со слаками было...
Но смущает то, что в списке осталось много регистров со положительным слаком, но небольшим 5 - 20 пс. И при этом по сетапу у них около 12 нс, т.е. огромный запас.
Было бы хорошо подкорректировать, но не вручную же их таскать по чипу? Попробую воспользоваться Ваши советом

Quote

смотрите детализацию

не очень понял, о какой детализации идет речь?

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

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


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

39 minutes ago, ig_f said:

не очень понял, о какой детализации идет речь?

Что-то вроде Report detailed path. он покажет полностью как идет сигнал, где какие дельты и почему. После этого внимательное чтение документации на чип покажет, откуда такое большое/малое время во временном анализе и как с этим бороться. 

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


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

On 9/16/2022 at 6:04 PM, ig_f said:

осталось много регистров со положительным слаком, но небольшим 5 - 20 пс

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

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

Конечно, после окончания разводки может оказаться (после окончательного расчета), что заданные констрейны нарушены, но стало лучше, чем было без них.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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