Jump to content
    

Размещение компонентов на чипе

Здравствуйте.

Продолжаю бороться с GOWIN GW2AR-LV18EQ144C8/I7

В общем переписал код насколько можно упростив и выделив в отдельные процессы все что можно было.

Вроде бы стало красивее 

image.thumb.png.795a38a42763c82a1e390275facd4d5e.png

 

Однако сколько бы я не бился все равно так или иначе появляются кривые участки кода:

image.thumb.png.52827d046216dfef94bcc49360f2b08a.png

 

Сейчас я так понимаю что он не успевает на заданной частоте обновлять переменную 

signal I_sdrc_addr_buffer:   std_logic_vector(20 downto 0) := (others => '0'); 

Создал буферную переменную и заполняю ее предварительно. Это убрало другую ошибку но видимо за счет того что переменная большая и она размещается где то далеко он все равно делает все плохо.

image.thumb.png.7ac08b40f179af988d3fb2442b697fae.png

 

Так вот я тут обнаружил что в FloorPlanner я могу чуть ли не руками перетащить блоки в любое место чипа.

 

image.thumb.png.2771e6982335de05c310fc60219a976d.png

 

А подскажите пожалуйста по какому принципу тут надо перетаскивать то?? Имеет ли вообще это смысл? 

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

Тут еще есть группы примитивов, может с помощью них я смогу наконец поправить весь проект?

 

Спасибо.

 

 

 

Share this post


Link to post
Share on other sites

Привет! Вручную расставлять логику на кристалле можно, но в вашем случае никак не решит проблему. Любая IDE (даже Gowin 😆) сделает это эффективнее и быстрее.

Обратите внимание на первопричину, почему появляются красные отчеты? Потому что клоки From и To разные. Решайте ЭТУ задачу, она хрестоматийная!

Share this post


Link to post
Share on other sites

Все говорят одно и тоже но никто не может четко на примере пояснить. 

50 МГц питает pll. Дальше получается частота 160 от которой питается блок сдрам. 

Никто туда данные на 50 МГц не передаёт. Откуда там переход этих клоков. 

 

Ну и то что не повлияет тоже странно потому что частоты выросли когда расположил все по углам. 

Но наверное сейчас скажут что это ничего не значит.

 

Share this post


Link to post
Share on other sites

Тут не пример нужен, а стремление разобраться в теме.

Вот страничка с хорошими ссылками на литературу https://support.xilinx.com/s/question/0D52E00006hpUmcSAE/clock-crossing-guide?language=en_US

"Лучше день потерять, потом за 5 минут долететь" 😊

Share this post


Link to post
Share on other sites

Расшифрую немного. Сейчас вы видите в отчете что-то, чего сами не задумывали в дизайне. Значит, IDE собирает какой-то другой проект, НЕ ВАШ. И собирает его неправильно. Вам нужно детально проанализировать каждую строчку репорта - посмотреть код, посмотреть схему, проверить тактирование всех участвующих сигналов. Если IDE говорит, что есть пересечение клоков - то так оно и есть. По крайней мере, в "её" проекте. Вопрос только "где?" и "как это исправить?".

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

Share this post


Link to post
Share on other sites

Вы не представляете сколько я уже всего перечитал. Я перебрал весь код. Все что можно переписал с упрощением. Даже методичку говин. Большинство проблем по улочкам в других модулях ушло. Сейчас висит только сдрам. 

Вот конкретно в этом случае переменная isdrcaddr заполняется в процессе от 160мгц, используется тоже в процессе в том же корковом домене. 

В этом модуле 50 МГц нигде нет. И даже если он есть я физически не могу понять как из той красной надписи понять что надо улучшить.

Как я понял он не успевает задать полностью 20 бит переменной наверное потому что топологически ячейки в разных частях кристалла 

Заглушить мне конечно не кажется очень хорошей идеей.. хочется чтобы было норм 

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

Share this post


Link to post
Share on other sites

2 minutes ago, Worldmaster said:

В этом модуле 50 МГц нигде нет

Не спорьте с компьютером 😆 В тайминг репорте красным по белому написано имя 50MHz-ового сигнала, который влияет на 160MHz сигнал

Share this post


Link to post
Share on other sites

Ну да. Это сигнал приходит из вне с тактового генератора и кормит pll. А pll кормит остальных 160. 

У меня сейчас стадия смирения.. уже готов все переписать но понять бы что.

Share this post


Link to post
Share on other sites

11 минут назад, Worldmaster сказал:

Ну да. Это сигнал приходит из вне с тактового генератора и кормит pll. А pll кормит остальных 160. 

50MHz, кроме PLL, никуда не поступает?

Share this post


Link to post
Share on other sites

Значит есть сигналы формирующиеся и/или использующиеся модулями с разными клоками.

Share this post


Link to post
Share on other sites

Вопрос: "50MHz, кроме PLL, никуда не поступает?"

Ответ: "В модуль сдрам нет."

Мне так видится что ТС темнит - 50MHz идёт куда-то ещё и соответственно есть CDC 50 на 160 (аль на оборот).

Или есть "финт ушами" и с pll  идёт совсем другая частота (и опять CDC).

пс: не видя всего проекта  можно долго гадать на кофейной гуще...

Share this post


Link to post
Share on other sites

Дело не в том что я темню. Я возможно не вижу очевидных вещей. Поэтому и сюда пришёл.

Попозже выложу проект. 

Share this post


Link to post
Share on other sites

1 час назад, Worldmaster сказал:

Дело не в том что я темню. Я возможно не вижу очевидных вещей. Поэтому и сюда пришёл.

Попозже выложу проект. 

По идее, временной анализ идет относительно всех частот в проекте. Надо просто сказать анализатору, что частоты 50 и 160 это разные клоковые пути.

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.

×
×
  • Create New...