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

Как зафиксировать разводку отдельного модуля в Quartus ?

Продолжаю войну с впихиванием проекта в Cyclone 10 GX. На данный момент он состоит из 8 DDC, добился, что 7 из них работают нормально, хочу их разводку зафиксировать.
Как можно зафиксировать их разводку, что бы при перекомпиляции она не менялась ?

И другой вопрос, менее актуальный. Как указать фиттеру, размещать части модуля рядом друг с другом, а не раскидывать их по кристаллу. Это чисто для эстетической оптимизации ))

Сейчас размещение выглядит так: 

image.thumb.png.f0b1cf3fa9376133bb9bf7039f893576.png

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


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

1 hour ago, Digi said:

И другой вопрос, менее актуальный. Как указать фиттеру, размещать части модуля рядом друг с другом, а не раскидывать их по кристаллу. Это чисто для эстетической оптимизации ))

Не скажу про Quartus, но в Vivado для этого используется Pblock, где можно задать границы размещения любого элемента.

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


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

1 hour ago, Digi said:

Как можно зафиксировать их разводку, что бы при перекомпиляции она не менялась ?

Это зависит от версии Quartus'а: 1.6. Incremental Block-Based Compilation Flow

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


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

По второму вопросу LogicLock Region

По первому наверное Partition с Final типом поможет (только надо следить за времянкой при Partition). Я еще Back Annotation использую, но именно тут много нюансов.

1 hour ago, Digi said:

На данный момент он состоит из 8 DDC, добился, что 7 из них работают нормально

Когда уже сложно и оптимизацией кода уже не поможешь, наверное придется вникать самому в разводку и начать помогать квартусу. Тут весь арсенал Chip Planner в помощь. Я смотрю, какие пути плохо получаются, открываю их в планнере и начинаю крутить вертеть, чтобы они все таки успели

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


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

2 hours ago, new123 said:

открываю их в планнере и начинаю крутить вертеть, чтобы они все таки успели

Это высший дзен, требующий просветленного сознания)))

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


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

2 hours ago, attaboy said:

Это высший дзен, требующий просветленного сознания)))

жизнь заставит, не так раскорячишься ) У меня очень плотно угол чипа забит и очень надо там развести все без задержки и конвееров. Алгоритм простой я выработал, щелкаю Routing Utilization и как правило, слаки на путях, проходящие через красные зоны. Вот их то я и растаскиваю, чтобы Long и Short interconnect подосвободились.

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


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

10 часов назад, Digi сказал:

Продолжаю войну с впихиванием проекта в Cyclone 10 GX. На данный момент он состоит из 8 DDC, добился, что 7 из них работают нормально, хочу их разводку зафиксировать.
Как можно зафиксировать их разводку, что бы при перекомпиляции она не менялась ?

И другой вопрос, менее актуальный. Как указать фиттеру, размещать части модуля рядом друг с другом, а не раскидывать их по кристаллу. Это чисто для эстетической оптимизации ))

Всё тут:

https://youtu.be/zcYbUwIDx7c

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


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

On 7/20/2021 at 7:58 AM, Digi said:

Продолжаю войну с впихиванием проекта в Cyclone 10 GX. На данный момент он состоит из 8 DDC, добился, что 7 из них работают нормально, хочу их разводку зафиксировать.
Как можно зафиксировать их разводку, что бы при перекомпиляции она не менялась ?

И другой вопрос, менее актуальный. Как указать фиттеру, размещать части модуля рядом друг с другом, а не раскидывать их по кристаллу. Это чисто для эстетической оптимизации ))

 

 

Про фиксацию и закреплении региона Вам отписали, интересен другой момент - все DDC работают от общей тактовой частоты? Всю логику квартус прибил, судя по всему, к входным/выходным портам, разбросанным по всему периметру кристалла.

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


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

22.07.2021 в 09:53, bogaev_roman сказал:

Про фиксацию и закреплении региона Вам отписали, интересен другой момент - все DDC работают от общей тактовой частоты? Всю логику квартус прибил, судя по всему, к входным/выходным портам, разбросанным по всему периметру кристалла.

DDC пришлось раскидать на разные тактовые частоты. Основная частота заходит на PLL а с PLL 8 частот с такими же параметрами заходят на свои DDC.  Так как если их повесить на одну, то время компиляции значительно возрастает и ни один DDC не работает. Хотя предупреждений у TimeQuest нет. Перестаёт корректно работать CIC фильтр.

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


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

Приветствую!

1 hour ago, Digi said:

DDC пришлось раскидать на разные тактовые частоты. Основная частота заходит на PLL а с PLL 8 частот с такими же параметрами заходят на свои DDC.  

 

Странное решение, особенно если вы  не крутите фазы  на этих  клоках. (и если  Qu их  не оптимизирует опять в один) .

Это значит  что то в дизайне  у вас не хорошо  особенно с учетом - 

1 hour ago, Digi said:

 Так как если их повесить на одну, то время компиляции значительно возрастает и ни один DDC не работает. Хотя предупреждений у TimeQuest нет. Перестаёт корректно работать CIC фильтр.

Длительное  время сборки при единственном клоке показатель того P&R  пытается уложится во времянки что для плотного по размещению  дизайна  с высокими частотами отнюдь не легко.  
Если после успешного P&R ошибок анализа нет, (и если функциональный сим работает),  а после P&R такой дизайн валится значит либо в самом дизайне глюки, либо скорее всего констрейны неполны/неправильны. Костыльное решение в виде разноса клоков по выходам PLL лишь доказывает это.  

 

Удачи! Rob. 

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


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

On 7/25/2021 at 6:00 PM, Digi said:

DDC пришлось раскидать на разные тактовые частоты. Основная частота заходит на PLL а с PLL 8 частот с такими же параметрами заходят на свои DDC.  Так как если их повесить на одну, то время компиляции значительно возрастает и ни один DDC не работает. Хотя предупреждений у TimeQuest нет. Перестаёт корректно работать CIC фильтр.

Вот, а после PLL сигнал тактовой частоты заходит на клокконтрол, которые разбросаны по всему периметру, и ,если логика в отдельных модулях независима, то квартус должен каждый клокконтрол прибить поближе к этой логике. В общем убедитесь, что созданы реально 8 тактовых частот (если квартус их обьединил - добавьте ограничения, чтобы убрать эту оптимизацию) и они находятся близко к своей логике (если далеко - прибить гвоздями). Помимо этого, для упрощения разводки советую пустить эти частоты не по глобальному клоку, а региональному (если они реально используются только для тактирования логики DDC).
Ну и, как заметили выше, - если ошибок таймквест не выдает, но не работает - либо некорректное описание временных ограничений, либо какие-то ограничения забыли написать (если фунциональное моделирование работает правильно).

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


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

Приветствую!

16 minutes ago, bogaev_roman said:

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

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


Если клок общий то global clock лучшее  решение  так как гарантирует  одинаковость задержек и scew клока по всему кристаллу. 
Regional clock  хорош лишь  в случае если источник этого клока (трансивер или другая периферия) тут же рядом с потребителями этого клока. 

 

Удачи! Rob.

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


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

On 7/30/2021 at 3:24 PM, RobFPGA said:

Приветствую!

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


Если клок общий то global clock лучшее  решение  так как гарантирует  одинаковость задержек и scew клока по всему кристаллу. 
Regional clock  хорош лишь  в случае если источник этого клока (трансивер или другая периферия) тут же рядом с потребителями этого клока. 

 

Удачи! Rob.

Если есть независимые партиции, которые могут работать на разных тактовых частотах мне не требуется синфазность (они будут будут синхронными, не подменяйте понятия), пересинхронизацию сделать через буфера не проблема, это первое. Второе, глобальный клок перед региональным имеет только одно преимущество - он может работать по всему кристаллу, при этом даже по документации максимальное быстродействие у них одинаковое, а вот skew у него будет гораздо выше, чем у регионального, в случае если клокконтрол находится от основной логики на другом конце чипа. Одно условие для его использования требуется - логика действительно должна быть не очень жирной, чтобы поместилась в одном регионе.
Во всех хайспид интерфейсах производитель старается использовать в корках по возможности именно региональные клоки - и в гигабитных трансиверах и в ддр контроллерах и прочее, хотя там есть и вторая причина - глобальная тактовая дорожка - слишком ценный ресурс и его мало.

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


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

Приветствую!

26 minutes ago, bogaev_roman said:

Если есть независимые партиции, ...

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

 

26 minutes ago, bogaev_roman said:

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

Использование  регионального клока  в таких  интерфейсах  имеет скорее другую подоплеку - тайминги  между  периферий и регулярной логикой. Так как источник клока обычно сама эта периферия то использование глобального клока  обычно увеличивает общую задержку от источника клока до потребителей.  Так как надо тянуть клок от периферии  до глобального буфера.  И за этого не всегда возможно уложится у тайминги между периферий и логикой.  Буфера регионального  клока  обычно ближе  к периферии  и помогают решить эту проблему.   

  

Удачи! Rob.

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


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

50 minutes ago, RobFPGA said:

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

А вы уверены что увеличивается только лишь общая задержка? При работе временного анализатора при рассчетах arrival/reqied time время распространения клока не фиксированная величина и дельта тем больше, чем больше расстояние (абстрактно конечно), а если брать еще и разные временные углы, то будут не очень приятные цифры.

Data Arrival Time = Launch Edge + Longest tCLK + µtCO + Longest tD

Data Arrival Time = Launch Edge + Shortest tCLK + min µtCO + Shortest tD

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

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


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

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

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

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

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

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

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

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

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

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