Цитата(vikS @ Nov 27 2015, 10:48)

После включения питания калибровка контроллера DDR2 выполняется и сигнал local_init_done устанавливается в 1.
Но затем может в любой момент времени local_init_done стать 0.
Была похожая проблема, правда с QDR.
Просто опишу свою ситуацию, может Вам поможет.
После включения пита local_init_done иногда устанавливался в 0. Причем, как и у Вас только на одной из двух микросхем.
Выяснил, что контроллер при включении питания пишет по нулевому адресу 0x55 и потом пытается вычитать его от туда, меняя при этом задержки толи шины данных, клока (калибрует). Если удачно, то local_init_done <= 1 иначе local_init_done <= 0. При дальнейшей работе калибровка не проводится ( у Вас не так, может потому что DDR2).
Внимательно почитав доки на altmemphy, понял, что на плате перепутана полярность дифференциального клока, и не потому что разводчик платы "редиска", а потому, что в альтеровских доках мелким шрифтом на 100 какой-то странице написано " если ваша память работает по циклу 2.5 или 3.5, то заводите сигнал положительной полярности на вход с отрицательной полярностью и наоборот". Поскольку плату переделать я не мог, то пришлось констрейнами уговорить Quartus , задержать входной клок на пол периода, что получилось.
Далее с local_init_done проблем не было, но были проблемы с тем, что из памяти не всегда читалось то, что туда писалось, особенно если ПЛИС была хорошо закружена. На этот раз проблема была в нехватке питания, и плату пришлось дорабатывать напильником.
Может, я написал немного сумбурно на из моего опыта работы с различными высокоскоростными интерфейсами могу сделать следующие выводы:
1. Зачастую это проблема печатной платы
2. Плисовод в состоянии либо исправить эту проблему, либо четко указать на неё разработчику платы.