|
При добавлении DDR2 UniPHY слетают тайминги, Cyclone V, Quartus 14 |
|
|
|
Jan 8 2015, 15:05
|
Профессионал
    
Группа: Свой
Сообщений: 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, но такого ни разу не случалось.
|
|
|
|
|
Jan 8 2015, 17:11
|

Местный
  
Группа: Свой
Сообщений: 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 на большую цифру. Ну да, это помогло, проект скомпилился, только вот осадочек остался после нескольких дней мучений.
|
|
|
|
|
Jan 8 2015, 19:20
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Jan 9 2015, 07:33
|
Профессионал
    
Группа: Свой
Сообщений: 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 (из базовых) на железе прошел. У меня тест тоже проходит, но мне необходимо разобраться в слаках, так как иначе невозможно ручаться за работоспособность проекта.
|
|
|
|
|
Jan 9 2015, 09:32
|
Профессионал
    
Группа: Свой
Сообщений: 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. Трэш какой-то.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|