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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> При добавлении DDR2 UniPHY слетают тайминги, Cyclone V, Quartus 14
DmitryR
сообщение Jan 8 2015, 15:05
Сообщение #1


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Столкнулся со следующей проблемой. Есть некоторый дизайн, в нём одна PLL (плюс ещё пачка CDR в трансиверах, но не о них речь). Эта PLL генерирует несколько частот, например 125 МГц. В SDC файле написано тупо:
- derive_pll_clocks,
- derive_clock_uncertainty,
- плюс ещё буквально несколько строк объявлений false paths between clocks.

Проект копмилируется и нормально укладывается во времянку.

Потом я добавляю в проект контроллер DDR2 UniPHY. И времянка всего проекта разваливается, так как TimeQuest начинает вдруг считать, что у клока, который в PLL объявлен, как 125МГц период должен быть не 8нс, а 3.2нс! Контроллер UniPHY синтезирован без шаринга PLL, в качестве референсной ему подаётся частота с отдельного выхода той же PLL. DRAM применяю далеко не первый раз, последний раз на Cyclone IV, но такого ни разу не случалось.
Go to the top of the page
 
+Quote Post
novartis
сообщение Jan 8 2015, 17:11
Сообщение #2


Местный
***

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



Посмотрите в альтеровской базе, например, по ссылке http://www.altera.com/support/kdb/search?q...type=&sort=

У меня была проблема с DDR3 (Квартус 13.1, Арриа 5), после переноса клока на другую ногу проект просто перестал компилиться.
Выдавал ошибку <что-то там>Failed to find PLL reference clock.
В сообщениях квартуса также выводилась чертовщина с реф-клоком на pll, вроде я ему в sdc говорю, что он 100МГц, а квартус его воспринимает совсем другим (сейчас уже не помню цифру). Я и проект пересобирал с нуля, и танцы с бубенцами устраивал.
В конце концов вбил эту ошибку в гугл и получил ссылку http://www.altera.com/support/kdb/solution...282014_665.html.
Они предложили решить проблему с ошибкой компиляцией так: найти какой-то там их tcl файл, найти в нем такую то строчку, и заменить цифру 9 на большую цифру. Ну да, это помогло, проект скомпилился, только вот осадочек остался после нескольких дней мучений.
Go to the top of the page
 
+Quote Post
sast777
сообщение Jan 8 2015, 19:20
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 5-02-06
Пользователь №: 14 016



Quartus 14.1, Cyclone V, (5CEFA5F23), самостройная плата, LPDDR2 Controller with UniPHY, Enable hard external memory controller.

LPDDR2 - Banks 8A, 9A;
А вот вход клока - пин CLK3p, Bank 4A, 25MHz, сначала был подан на pll_0, выходы pll_0 125MHz подавал на весь QSYS и отдельный выход pll_0 - на вход pll UniPHY.

Использовал как основу проект из "Terasic Cyclone V GX Starter Kit", естественно со своим чипом и пинаутом.

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

Помогло включение между пином CLK3p и входом pll UniPHY мегафункции ALTCLKCTRL.

Фиттер прошел.

В TimeQuest куча слаков. Пока в слаках не разбирался, т.к. в проект включен сгенерированный QSYS'ом неслабый "C5G_QSYS_mem_if_lpddr2_emif_p0.sdc".

NIOS_Memory_test (из базовых) на железе прошел.

Сообщение отредактировал sast777 - Jan 8 2015, 19:33
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 9 2015, 07:33
Сообщение #4


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(novartis @ Jan 8 2015, 21:11) *
Они предложили решить проблему с ошибкой компиляцией так: найти какой-то там их tcl файл, найти в нем такую то строчку, и заменить цифру 9 на большую цифру.

Спасибо, но этот этап я уже прошёл. У меня всё компилируется, но либо ошибка с трактовкой SDC, либо ошибка в самом SDC. То есть времянка неправильно считается.


Цитата(sast777 @ Jan 8 2015, 23:20) *
В TimeQuest куча слаков. Пока в слаках не разбирался, <...> NIOS_Memory_test (из базовых) на железе прошел.

У меня тест тоже проходит, но мне необходимо разобраться в слаках, так как иначе невозможно ручаться за работоспособность проекта.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 9 2015, 08:17
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Может быть эта корка свой sdc подсовывает после основного sdc. а там же тикл, он тупо переопределяет все. В логе не видно сообщения о переопределении tcl переменных ?


--------------------
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 9 2015, 08:20
Сообщение #6


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Очевиндно, но это явный косяк - не должна корка ничего переопределять за своими пределами. Собственно в этом и вопрос - как её заставить этого не делать, но сохранить работоспособность? Переменных в моём SDC, как я уже писал, никаких нет.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jan 9 2015, 08:40
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 DmitryR
тут без Qsys не получится,
выложите Qsys-шаблон где валится и версию Q - тогда можно глянуть..
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 9 2015, 08:45
Сообщение #8


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Kuzmi4 @ Jan 9 2015, 12:40) *
выложите Qsys-шаблон где валится и версию Q - тогда можно глянуть..

У меня в проекте не используется Qsys.

Что самое интересное - сейчас обнаружил, что времянка разваливается, даже если в проект включить только контроллер, не включая его SDC.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Jan 9 2015, 09:00
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(DmitryR @ Jan 9 2015, 11:20) *
Очевидно, но это явный косяк - не должна корка ничего переопределять за своими пределами. Собственно в этом и вопрос - как её заставить этого не делать, но сохранить работоспособность? Переменных в моём SDC, как я уже писал, никаких нет.

В документе emi.pdf на стр. 208 встречается вот такая фраза:
[attachment=89256:emi.jpg]
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 9 2015, 09:32
Сообщение #10


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(blackfin @ Jan 9 2015, 13:00) *
В документе emi.pdf на стр. 208 встречается вот такая фраза:

Замечание вроде правильное, но почему-то не помогает. Разница, правда, есть: если поставить dram.qip ниже SDC - времянка раскосячивается в том числе и в самом контроллере. Если же сделать, как написано - времянка dram анализируется нормально, но в остальном проекте тем не менее нет.

Хотят вот тут: http://www.altera.com/support/kdb/solution...032012_191.html написано, что этот фикс как раз влияет на DDR Timing, а у меня как раз сам контроллер в порядке.

Ещё момент - в директиву derive_pll_clocks поставил опцию -use_net_names. В результате ожидаемый период сократился ещё вдвое: он должен быть 8, при включении конроллера становится 3.2, при включении этой опции - 1.6. Трэш какой-то.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 9 2015, 11:52
Сообщение #11


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



А у меня такой ещё вопрос: в TimeQuest есть какой-нибудь способ выяснить, откуда он взял констрейн? Ну вот например он мне показывает, что период клока должен быть 3.2 вместо ожидаемых мной 8-ми. Можно его как-то попросить сказать, исходя из какой команды в каком файле он так решил?
Go to the top of the page
 
+Quote Post
krux
сообщение Jan 9 2015, 12:32
Сообщение #12


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



а что происходит если убрать pll_0?
собирается?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 9 2015, 12:39
Сообщение #13


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(krux @ Jan 9 2015, 16:32) *
а что происходит если убрать pll_0?
собирается?

Нет, не может DLL разместить (у меня вход с кварца и память на разных сторонах кристалла).
Go to the top of the page
 
+Quote Post
krux
сообщение Jan 9 2015, 13:03
Сообщение #14


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



а с pll_0 получается только 125 или ещё какие-то частоты? это исходя из предположения что отводы от одной pll до другой имеются не на всех делителях, а только на первых двух (c0, c1)

можно пробовать перебирать варианты:
- пропустить refclock с одной стороны на другую через GCLK?
- пропустить refclock с одной стороны на другую через altiobuf_bidir на "пустом" (внешне электрически никуда не подключенном, если такой есть) CLKIN выводе, с той стороны где расположен контроллер?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 9 2015, 14:11
Сообщение #15


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(DmitryR @ Jan 9 2015, 19:52) *
А у меня такой ещё вопрос: в TimeQuest есть какой-нибудь способ выяснить, откуда он взял констрейн? Ну вот например он мне показывает, что период клока должен быть 3.2 вместо ожидаемых мной 8-ми. Можно его как-то попросить сказать, исходя из какой команды в каком файле он так решил?

можно пошагово запускать анализ, в ручную тыкая на этапы анализа. или посмотреть все клоки, которые объявлены в проекте


--------------------
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 8th July 2025 - 10:26
Рейтинг@Mail.ru


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