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

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

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

Продолжаю бороться с 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

 

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

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

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

 

Спасибо.

 

 

 

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


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

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

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

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


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

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

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

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

 

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

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

 

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


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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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


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

2 minutes ago, Worldmaster said:

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

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

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


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

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

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

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


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

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

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

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

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


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

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

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


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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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