Перейти к содержанию
    

MicroBlaze. Ошибки в работе с DDR3 памятью

Здравствуйте,

 

в проекте с MicroBlaze использую контроллер DDR3 памяти - axi_s6_ddrx. Все работает хорошо, но время от времени при переразводке проекта возникает такой симптом: начинаю дебажить программу в SDK, программа грузится, иду по шагам, после нескольких шагов получаю сообщение вида

 

Error: MicroBlaze Pipeline Stalled on a Blocking Instruction or Invalid Bus Access
    Stalled PC: 0xc0000030
Try Resetting the Processor to Continue..

 

Код грузится во внешнюю DDR3 память. Причем, если не повезло с разводкой ошибка возникает всегда, только на разных адресах. Бывает что программа вообще не загружается, не проходит проверка elf файла.

 

Насколько я понимаю происходит неправильное чтение инструкции из DDR3 памяти и MicroBlaze дает клина. Т.е проблема в DDR3 контроллере. Частота DDR3 памяти 300МГц.

 

Кристалл забит на 80% и я понимаю, что это не очень хорошо. Из констрейнов относящихся к теме, имеется по сути один - на тактовую частоту входного клока, который идет на корку clock_generator. Он выполняется.

 

Нужны ли какие-нибудь констрейны для правильной работы DDR3 контроллера или за всем этим следит генератор корок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Генератор корок генерирует констрейны (в отдельный UCF файл), а вы разумеется должны этот файл включить в свой проект и добиться выполнения всех констрейнов в нем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, он генерирует и сам подключает, но там только констрейны касающиеся размещения пинов, несколько TIG, а констрейнов на клоки или данные нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую доску SP-605, по схематику на ней стоит MT41J64M16LA-187E. На самом деле, кажется что-то другое, по крайней мере логотипа микрона не видно. Кристалл на ней со спидгрейдом -3, НЕ инженерный сэмпл, слава Богу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Чиповод

у меня SP-605 с ES чипом, память микроновская. DDR3 пробовал давно и без Blaze-а, но бегало без ошибок :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Чиповод

у меня SP-605 с ES чипом, память микроновская. DDR3 пробовал давно и без Blaze-а, но бегало без ошибок :laughing:

Это хорошо, а то народ жалуется, что в инженерных сэмплах MCB сырой был. А как вы кстати тестировали на ошибки?

 

Я тут разбираюсь со своими зверушками. Clock для памяти среда XPS предложила мне сделать без глобальных клоковых буферов. Я, в таком случае, решил зажать его констрейном MAX_SKEW. Это помогло, из 8 разводок - 7 оказалось удачных (раньше было примерно 50 на 50). Но нужно, конечно, окончательно разобраться.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..А как вы кстати тестировали на ошибки?....

Та вот начитался я как и вы про "сырой MCB", ну и наваял специально проектиГ - там внутри всё проверялось, генерились тестовые паттерны по разному. После проверки отправлялся результат (+ подсветка леда если ошибка хоть одна была ), и всё запускалось по кругу. "Беспредела" не было замечено ;)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На сааметрами памчмом деле, кажется что-то другое

В этом может быть проблема, если у той микрухи например CAS Latency другая.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гонял немножко DDR3 на SP605 с ES.

Особо хитрых тестов не генерил, но в тех, которые генерил, проблем не было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помнится раньше у Xilinx были софтовые тесты для памяти. Может попробовать маленький софтик в BRAM, а DDR3 затестировать насмерть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помнится раньше у Xilinx были софтовые тесты для памяти. Может попробовать маленький софтик в BRAM, а DDR3 затестировать насмерть?
Проблема в том, что ошибки я вижу так сказать не вооруженным глазом, но бывает так, что целый день работаю без ошибок. Все зависит от везения в разводке.

 

Вообщем подозрение с самой микросхемы DDR3 памяти и сырости MCB Спартана я решил пока снять. Плата SP-605 Rev.D, микросхема оказалась все-таки Micron, та самая что на схематике.

 

Пока лечил свой проект тем, что лочил в PlanAhead кусок с axi_ddr коркой, это работало, но при каждом серьезном изменении проекта эту работу приходилось делать заново, иначе Router не мог развести проект.

 

Сейчас я временно облегчил проект до 60% - проблема исчезла.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже не очень хорошо помню, но вообще там было достаточно много требований к тому, как генерить различные частоты для MCB.

Соблюдены ли эти требования?

 

P.S. Была такая корка, уже не помню, то ли на S3, то ли на V5, то ли на S6.

Пошли ошибки при выполнении из SDRAM (не помню, какая конкретно память).

Оказалось, что в начале программы был маленький тестик этой самой SDRAM, который писал всякое поверх кода :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...