реклама на сайте
подробности

 
 
> Квартус ограничивает разводку проекта по кристаллу
novartis
сообщение Jun 4 2018, 07:33
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Есть проект под Аррию 10. Данные в плис поступают через два трансивера, задействованы Altera Native Phy ядра. Так же задействовано ip ядро pcie.
После компиляции проекта наблюдаю в Chip Planner, что логика в основном сосредоточена в одной области, четко видны границы сверху и снизу.
Я так понимаю, что это области "действия" клоков трансиверов. И та логика, что крутится на частотах из трансиверов, размещается квартусом именно в эти области.
Прикрепленное изображение

Хотелось бы указать квартусу использовать весь кристалл для разводки логики, как это сделать?

И еще вопрос, ядро Altera Transceiver Native Phy выдает клок rx_pma_clkout, как то можно узнать, какой это клок - глобальный, региональный...?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
novartis
сообщение Jun 7 2018, 11:29
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Нагуглил, где можно посмотреть список глобальных, региональных клоков:
Fitter > Resource Section > Global & Other fast signals
Прикрепленное изображение


Получается, что клок из трансивера - периферийный.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jun 7 2018, 12:22
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(novartis @ Jun 7 2018, 14:29) *
Получается, что клок из трансивера - периферийный.

Для Вас это неожиданностью стало? Посмотрите теперь каким клоком тактируется логика, которая плохо разводится. Если эта тактовая - периферийная, то можно попробовать ее сделать глобальной через assignment editor, но не переусердствуйте - глобальные дорожки ценный ресурс. Лучше добавить одну новую общую частоту, сделать ее глобальной и перетактировать логику (не зная архитектуру проекта сложно что-либо посоветовать точнее, самый главный вопрос - каким образом Вы параллельные данные используете на выходе приемника - на какой частоте).
Go to the top of the page
 
+Quote Post
novartis
сообщение Jun 8 2018, 11:27
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Цитата(bogaev_roman @ Jun 7 2018, 17:22) *
Для Вас это неожиданностью стало? Посмотрите теперь каким клоком тактируется логика, которая плохо разводится. Если эта тактовая - периферийная, то можно попробовать ее сделать глобальной через assignment editor, но не переусердствуйте - глобальные дорожки ценный ресурс. Лучше добавить одну новую общую частоту, сделать ее глобальной и перетактировать логику (не зная архитектуру проекта сложно что-либо посоветовать точнее, самый главный вопрос - каким образом Вы параллельные данные используете на выходе приемника - на какой частоте).

Да не то чтобы неожиданностью, раньше не задумывался над этим, мне было всё равно, как там всё разлеглось, если констрейны выполнились.
Логика, которая плохо разводится, тактируется клоками из трансиверов, эти клоки - периферийные.
Я пробовал сделать эти клоки глобальными, в итоге разводится равномерно, где то по середине между pcie и трансиверами, но при этом появляются отрицательные слаки в путях параллельных данных от трансиваеров.
Сейчас поступил так: разделил проект на две части, одну часть тактирую клоками из трансивера, эти клоки периферийные, здесь происходит первоначальная обработка параллельных данных; другую часть тактирую клоком из pll (глобальный клок), здесь уже следующая стадия обработки параллельных данных.

Переход между клоковыми доменами сделал через двухклоковое фифо.
Все разводится отлично, констрейны выполнены.

Но мне надо избавиться от фифо.
По идеи, есть rx_clk0 из трансивера, это периферийный клок. Можно как то создать другой клок gl_clk0 на основе rx_clk0, назначить его глобальным, и сделать переход от клокового домена rx_clk0 в клоковый домен gl_clk0 просто путем задержки на один такт?

Код
gl_clk0    <= rx_clk0;    -- rx_clk0 останется периферийным, gl_clk0 - в sdc файле назначу глобальным

process (rx_clk0)
begin
    if (rising_edge(rx_clk0)) then
        data      <= ....;     --  эти данные тактируются rx_clk0
    end if;
end process;

process (gl_clk0)
begin
    if (rising_edge(gl_clk0)) then
        data_new      <= data;      --  эти данные уже тактируются глобальным клоком gl_clk0
    end if;
end process;


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

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 21:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016