Worldmaster 0 13 мая Опубликовано 13 мая · Жалоба Здравствуйте. Продолжаю бороться с GOWIN GW2AR-LV18EQ144C8/I7 В общем переписал код насколько можно упростив и выделив в отдельные процессы все что можно было. Вроде бы стало красивее Однако сколько бы я не бился все равно так или иначе появляются кривые участки кода: Сейчас я так понимаю что он не успевает на заданной частоте обновлять переменную signal I_sdrc_addr_buffer: std_logic_vector(20 downto 0) := (others => '0'); Создал буферную переменную и заполняю ее предварительно. Это убрало другую ошибку но видимо за счет того что переменная большая и она размещается где то далеко он все равно делает все плохо. Так вот я тут обнаружил что в FloorPlanner я могу чуть ли не руками перетащить блоки в любое место чипа. А подскажите пожалуйста по какому принципу тут надо перетаскивать то?? Имеет ли вообще это смысл? и как найти ту самую переменную чтобы положить ее прям рядышком с блоков где она обрабатывается?? Если я вообще правильно понял это. Тут еще есть группы примитивов, может с помощью них я смогу наконец поправить весь проект? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 5 14 мая Опубликовано 14 мая · Жалоба Привет! Вручную расставлять логику на кристалле можно, но в вашем случае никак не решит проблему. Любая IDE (даже Gowin 😆) сделает это эффективнее и быстрее. Обратите внимание на первопричину, почему появляются красные отчеты? Потому что клоки From и To разные. Решайте ЭТУ задачу, она хрестоматийная! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 14 мая Опубликовано 14 мая · Жалоба Все говорят одно и тоже но никто не может четко на примере пояснить. 50 МГц питает pll. Дальше получается частота 160 от которой питается блок сдрам. Никто туда данные на 50 МГц не передаёт. Откуда там переход этих клоков. Ну и то что не повлияет тоже странно потому что частоты выросли когда расположил все по углам. Но наверное сейчас скажут что это ничего не значит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 5 14 мая Опубликовано 14 мая · Жалоба Тут не пример нужен, а стремление разобраться в теме. Вот страничка с хорошими ссылками на литературу https://support.xilinx.com/s/question/0D52E00006hpUmcSAE/clock-crossing-guide?language=en_US "Лучше день потерять, потом за 5 минут долететь" 😊 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 5 14 мая Опубликовано 14 мая · Жалоба Расшифрую немного. Сейчас вы видите в отчете что-то, чего сами не задумывали в дизайне. Значит, IDE собирает какой-то другой проект, НЕ ВАШ. И собирает его неправильно. Вам нужно детально проанализировать каждую строчку репорта - посмотреть код, посмотреть схему, проверить тактирование всех участвующих сигналов. Если IDE говорит, что есть пересечение клоков - то так оно и есть. По крайней мере, в "её" проекте. Вопрос только "где?" и "как это исправить?". В одной и предыдущих ваших тем на форуме мы уже обсуждали этот момент. С помощью констрейнов можно легко заглушить все нарушения. Но вам-то, наверное, не отчеты нужны, а работающий дизайн. Поэтому, скорее всего, каждая красная строчка отчета потребует некоторых доработок по коду. Где-то нужно будет добавить синхронизаторы, а где-то - констрейны. Каждый случай потребуется разбирать отдельно, и на форуме это сделать сложно. Почитайте книжки, которые я прикрепил, это самая лучшая литература по теме. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 14 мая Опубликовано 14 мая · Жалоба Вы не представляете сколько я уже всего перечитал. Я перебрал весь код. Все что можно переписал с упрощением. Даже методичку говин. Большинство проблем по улочкам в других модулях ушло. Сейчас висит только сдрам. Вот конкретно в этом случае переменная isdrcaddr заполняется в процессе от 160мгц, используется тоже в процессе в том же корковом домене. В этом модуле 50 МГц нигде нет. И даже если он есть я физически не могу понять как из той красной надписи понять что надо улучшить. Как я понял он не успевает задать полностью 20 бит переменной наверное потому что топологически ячейки в разных частях кристалла Заглушить мне конечно не кажется очень хорошей идеей.. хочется чтобы было норм Что интересно что когда я гоняю блоки по кристаллу частоты растут и порой почти что все становится почти идеально. Вот мне и кажется что нужно переменную расположить максимально близко. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 5 14 мая Опубликовано 14 мая · Жалоба 2 minutes ago, Worldmaster said: В этом модуле 50 МГц нигде нет Не спорьте с компьютером 😆 В тайминг репорте красным по белому написано имя 50MHz-ового сигнала, который влияет на 160MHz сигнал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 14 мая Опубликовано 14 мая · Жалоба Ну да. Это сигнал приходит из вне с тактового генератора и кормит pll. А pll кормит остальных 160. У меня сейчас стадия смирения.. уже готов все переписать но понять бы что. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 14 мая Опубликовано 14 мая · Жалоба 11 минут назад, Worldmaster сказал: Ну да. Это сигнал приходит из вне с тактового генератора и кормит pll. А pll кормит остальных 160. 50MHz, кроме PLL, никуда не поступает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 14 мая Опубликовано 14 мая · Жалоба В модуль сдрам нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 14 мая Опубликовано 14 мая · Жалоба Значит есть сигналы формирующиеся и/или использующиеся модулями с разными клоками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 14 мая Опубликовано 14 мая · Жалоба Вопрос: "50MHz, кроме PLL, никуда не поступает?" Ответ: "В модуль сдрам нет." Мне так видится что ТС темнит - 50MHz идёт куда-то ещё и соответственно есть CDC 50 на 160 (аль на оборот). Или есть "финт ушами" и с pll идёт совсем другая частота (и опять CDC). пс: не видя всего проекта можно долго гадать на кофейной гуще... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 14 мая Опубликовано 14 мая · Жалоба Дело не в том что я темню. Я возможно не вижу очевидных вещей. Поэтому и сюда пришёл. Попозже выложу проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 14 мая Опубликовано 14 мая · Жалоба 1 час назад, Worldmaster сказал: Дело не в том что я темню. Я возможно не вижу очевидных вещей. Поэтому и сюда пришёл. Попозже выложу проект. По идее, временной анализ идет относительно всех частот в проекте. Надо просто сказать анализатору, что частоты 50 и 160 это разные клоковые пути. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 14 мая Опубликовано 14 мая · Жалоба set_clock_groups -exclusive -group {50МГц} -group {160МГц} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться