Jump to content

    
Digi

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

Recommended Posts

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

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

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

image.thumb.png.f0b1cf3fa9376133bb9bf7039f893576.png

Share this post


Link to post
Share on other sites
1 hour ago, Digi said:

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

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

Share this post


Link to post
Share on other sites

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

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

1 hour ago, Digi said:

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

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

Share this post


Link to post
Share on other sites
2 hours ago, new123 said:

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

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

Share this post


Link to post
Share on other sites
2 hours ago, attaboy said:

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

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

Share this post


Link to post
Share on other sites
10 часов назад, Digi сказал:

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

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

Всё тут:

https://youtu.be/zcYbUwIDx7c

Share this post


Link to post
Share on other sites
On 7/20/2021 at 7:58 AM, Digi said:

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

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

 

 

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

Share this post


Link to post
Share on other sites
22.07.2021 в 09:53, bogaev_roman сказал:

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

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

Share this post


Link to post
Share on other sites

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

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. 

Share this post


Link to post
Share on other sites
On 7/25/2021 at 6:00 PM, Digi said:

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

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

Share this post


Link to post
Share on other sites

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

16 minutes ago, bogaev_roman said:

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

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


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

 

Удачи! Rob.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.