Руководство по проектированию ST-DDR3 от Everspin для контроллеров Xilinx FPGA
Магниторезистивная память произвольного доступа с переносом спинового момента (STT-MRAM) – это технология, обеспечивающая производительность, энергонезависимость, долговечность и представлена в виде памяти типа DDR3, которая получила название ST-DDR3. Интерфейс, разработанный в рамках стандартов JEDEC, позволяет применять STT-MRAM в составе различных систем с учетом описанных модификаций их контроллеров памяти, где требуется энергонезависимая память STT-MRAM. Данный документ может быть использован в качестве руководства для инженеров по использованию контроллера памяти FPGA Xilinx при взаимодействии с энергонезависимой памятью ST-DDR3 от Everspin.
Включение ST-DDR3
ST-DDR3 - это STT-MRAM, которая использует интерфейс DDR3. Это означает, что ST-DDR3 от Everspin является энергонезависимой памятью, и инженер обязан понимать различия между традиционной энергозависимой памятью DDR3 и ST-DDR3. Инициализация процесса начинается с известного генератора интерфейса памяти (MIG) 4Gb DDR3 SDRAM-1333, полученного из среды разработки Xilinx Vivado. Основные отличия от 4Gb DDR3 SDRAM-контроллера:
- Тайминг (ускорение синхронизации со строками, увеличение ширины счетчика, уменьшение размеров CAS-страницы).
- Включение питания (калибровка – использование режима «анти-скрибблинг» в процессе калибровки).
- Отключение питания (скремблирование либо перемещение соответствующих объектов данных в массив постоянного запоминающего устройства).
- Производительность: увеличение глубины пайплайнов (наборов последовательно подключенных элементов обработки данных), увеличение эффективности передачи данных.
Примечание: также в целях реализации надежной системы энергонезависимой памяти ST-DDR3, однако не в рамках действия текущего документа, была создана схема двойной коррекции ошибок (DEC). Подробная информация будет приведена в документации на ECC-память.
Интерфейс памяти DDR3 SDRAM-1333 от Everspin
Логика интерфейса DDR3 в среде проектирования Xilinx будет создана на основе входных параметров, которыми являются скорость чтения и тайминг 4Gb SDRAM DDR3-1333. Первым предварительным шагом является реализация JEDEC-совместимого контроллера DDR3, поскольку MIG не может реализовывать логику интерфейса с параметрами, не соответствующими текущему стандарту JEDEC. Поскольку устройства Everspin 256Mb ST-DDR3 1333 и DDR3-1333 SDRAM 4Gb наиболее близки по своим характеристикам, используйте параметры тайминга, применимые к 4Gb DDR3 SDRAM 1333 spec SDRAM DDR3L-1333 (Таблица 8, Параметры тайминга, используемые для измерений IDD – единицы измерения тактовой частоты (Clock Units), при этом руководствуйтесь только ссылкой на часть 15). Если устройство №15 недоступно, выберите 15E, а также убедитесь, что параметр CL (задержка чтения) равен 10. После создания логики интерфейса DDR3, для включения энергонезависимой ST-DDR3 памяти, вы сможете изменить характеристики параметров тайминга, включения и отключения питания, а также производительности.
Настоятельно рекомендуем создать экземпляр «тестбенч» (среда проверки корректности созданной модели) в Vivado после реализации MIG. Для этого кликните правой кнопкой мыши по файлу с расширением «.xci» и выберите пункт «Open IP Example Design ...». Vivado автоматически создаст новый проект со всеми необходимыми файлами тестирования, которые необходимы для имитации вашего нового MIG. Подробная информация по созданию MIG в Xilinx представлена в учебных пособиях: emory Interfaces Design Hub - UltraScale DDR3/DDR4 Memory;
Designing a Memory Interface and Controller with Vivado MIG for UltraScale
Примечание: при создании и внесении изменений в MIG был использован Vivado версий 2017.2 и 2018.1.
Модификации контроллеров Xilinx FPGA
Все изменения в существующем контроллере Xilinx MIG DDR3 с целью включения в работу ST-DDR3, как уже говорилось ранее, классифицируются как тайминг, включение, отключение и производительность.
Тайминги
В Таблице 1 перечислены основные параметры тайминга для устройства SDRAM-1333 4Gb и связанные с ним изменения, необходимые для использования устройства STT-MRAM STDDR3-1333. Убедитесь, что реализованный MIG соответствует всем приведенным в таблице значениям.
Символьное обозначение | DDR3 1333 SDRAM | ST-DDR-3 1333 STTMRAM | |||
---|---|---|---|---|---|
Наносекунды (минимум) | Такты (минимум) | Наносекунды (минимум) | Такты (минимум) | ||
Такт | tCK | 1,5 | 1,5 | ||
Задержка чтения | CL | 10 | 10 | ||
Задержка записи | CWL | 7 | 7 | ||
Минимальное время между двумя командами CAS | tCCD | 4 | 4 | ||
Внутренняя команда чтения для первичных данных | tAA | 15 | 10 | 14 | 10 |
Задержка между активизацией и внутренними командами чтения или записи | tRCD | 15 | 10 | 95 | 64 |
Время команды предзагрузки | tRP | 15 | 10 | 66 | 44 |
Промежуток времени между соседними командами активизации | tRC | 51 | 34 | 170 | 114 |
Период времени между командами предзагрузка и активация | tRAS | 36 | 24 | 103 | 69 |
Восстановление записи, задержка между командами предзагрузка и запись | tWR | 15 | 10 | 15 | 10 |
Промежуток времени между командами активизации, различные банки | tRRD | 6 | 4 | 30 | 20 |
Минимальное время активности четырех окон (активных строк) | tFAW | 30 | 20 | 120 | 80 |
Задержка между командами регенерация и активизация (от 1 Гб до 8 Гб) | tRFC | 74-234 | Не используется |
Ширина столбца и разность счетчиков
В приведенной выше Таблице 1 перечислены все ключевые тайминги, а в Таблице 2 приведены соответствующие различия столбцов и счетчиков.
Параметр (биты) | JEDEC DDR3 | 256Mb ST-DDR3 |
---|---|---|
Ширина входа/выхода | x8 | x8 |
Размер страницы | 8192 | 512 |
tRASf | 3 | 6 |
TXN_FIFO_DEPTH | 4 | 8 |
TXN_FIFO_PWIDTH | 2 | 3 |
CAS_FIFO_DEPTH | 4 | 8 |
CAS_FIFO_PWIDTH | 2 | 3 |
trcd_cntr / trcd_cntr_nxt | 4 | 6 |
trp_cntr | 5 | 7 |
tras_cntr_rb / tras_cntr_rb_nxt | 4 | 6 |
Ширина адреса столбца (биты) | А0 – А9 (10) | А 0 – А 5 (6) |
На производительность оказывают влияние снижение размеров CAS-страницы и увеличение ширины счетчиков. Об этом будет рассказано в разделе Производительность.
Включение питания
Более подробная информация о последовательности включения питания памяти DDR находится в документации от Micron под названием TN-46-08: Initialization Sequence for DDR SDRAM.
В процессе включения питания данная последовательность, состоящая из 20 шагов, должна обрабатываться в документированном порядке с целью обеспечения правильного функционирования с учетом следующих исключений:
- В ST-DDR3 команда Обновить не используется. Шаги 15 и 17 – это команды автоматического обновления, которые игнорируются устройствами STT-MRAM.
- Во время выполнения шага калибровки, который является следующим после шагов инициализации, переключите устройство ST-DDR3 в режим NOMEM через Регистр Режима 2 или MR2 [8] = 1 до калибровки и отключите после калибровки MR2 [8] = 0 во избежание повреждения данных в процессе выравнивания записи. Иначе этот процесс называется «анти-скрибблинг». Поскольку ST-DDR3 – это энергонезависимая память, процесс записи в момент калибровки может привести к перезаписи уже существующих данных. Поэтому в процессе калибровки данная функция должна быть отключена.
Настройки регистра Mode Register
Поддержка полного Mode Register доступна и должна устанавливаться в качестве следующего этапа в процессе инициализации включения питания либо после сброса в целях корректного функционирования ST-DDR3 1333. При программировании Mode Register необходимо опираться на следующую последовательность:
- Mode Register 2 (MR2) – 0x0110, MR2[8] = 1
- Mode Register 3 (MR3) – 0x0000
- Mode Register 1 (MR1) – 0x0044
- Mode Register 0 (MR0) – 0x0b60
- После калибровки и до нормально функционирования.
- Mode Register 2 (MR2) – 0x0010, MR2[8] = 0
Примечание: MR2 [8] = 1 это NOMEM-режим (режим «анти-скрибблинг»), предотвращающий перезапись имеющихся данных в массиве энергонезависимой памяти. MR2 [8] = 0 отключает NOMEM-режим до момента записи в массив энергонезависимой памяти.
Отключение питания (Scram)
Scram не является командой либо кодом операции. Scram – процедура отключения питания. Буквально это означает, что питание больше не будет подаваться, и контроллер должен гарантировать энергонезависимость всех открытых страниц, буферов, содержимого DRAM и произвести запись в энергонезависимый массив в максимально сжатые сроки. Чтобы гарантировать энергонезависимость, требуется выполнение команд Precharge(PRE) - "Предзагрузка" или Precharge All(PREA) - "Предзагрузка Всего" с целью переноса данных в массив энергонезависимой памяти.
В некоторых системах, использующих совместно DRAM/MRAM, емкость DRAM, превышает емкость MRAM. Контроллер должен гарантировать (в процессе нормального функционирования) тот факт, что объем важных данных, которые содержатся в DRAM и должны быть сохранены после отключения питания, не превышает размер массива MRAM. Если указанное выше условие соблюдается, нормальный процесс отключения питания должен длиться не более 10 микросекунд в большинстве ситуаций. Однако эта величина зависит от устройства системы и должна быть рассчитана, смоделирована и измерена с целью гарантирования записи данных в массив энергонезависимой памяти при выполнении команд PRE или PREA. Последовательность выполнения процедуры Scram:
- Контроллер получил команду отключения или обнаружил, что входное напряжение (12 В, постоянный ток) стало падать, определил перенапряженность, перегрузку тока или перегрев. Объемная емкость на выходе DC-to-DC должна обеспечивать работоспособность FPGA и MRAM и/или DRAM достаточное время для завершения последующих четырех этапов. Многие системы обеспечивают достаточную емкость для выполнения описанного выше требования, однако пренебрегать этим параметром не рекомендуется. Смотрите контрольный список уровня платы в одном из разделов ниже.
- Завершение всех ожидающих запросов доступа к MRAM на верхнем уровне MIG. Алгоритм управления завершает перенос всех данных и информации о состоянии в интерфейс MRAM MIG.
- Включение и удерживание в активном состоянии входного сигнала MRAM MIG
power_fail_has_scramed
. Тем самым MIG получает информацию о том, что алгоритм управления завершен, и он также должен выполнить команду Scram и перенести все команды записи в энергонезависимый массив MRAM. Также MIG должен отключить периодические команды чтения. Логика управления должна запретить работу команд чтения и записи в MRAM MIG, если сигналpower_fail_has_scramed
активен. inflight_writes
является выходным сигналом состояния. После выполнения команд записи MIG выполняет команду Предзагрузка Всего (PREA), чтобы закрыть все открытые страницы и сохранить данные в массиве энергонезависимой памяти.- Ожидание выходного сигнала
ddr3_cntr_power_fail_complete
. Он указывает на то, что все ожидающие команды записи MIG уже находятся в энергонезависимой памяти MRAM, а все страницы закрыты. Продолжайте подачуpower_fail_ has_scramed
для входного сигнала MRAM MIG, поскольку он также отключает периодические команды чтения. - Все готово для безопасного отключения питания для MRAM без потери данных.
- Если алгоритм управление принимает решение о повторном запуске (например, если произошел сбой мощности) без выполнения перезагрузки, сигнал
power_fail_has_scramed
может быть отменен, а MIG в свою очередь выполнит отменуddr3_cntr_power_fail_complete
. Периодические команды чтения будут перезапущены, а команды чтения и записи смогут снова выполняться.
Производительность
Ниже приведен список оптимизаций STT-MRAM для повышения производительности системы:
- Отключенный или значительно расширенный интервал обновления (tREFI), поскольку ST-DDR3 не требует регенерации.
- Наличие адресного упорядочивания/сопоставления для максимизации производительности минимизации износа для ROW-BANK-COL.
- Увеличение глубины очереди команд/данных для активизации/предзагрузки с целью управления задержками доступа к более длинной строке и CAS-странице меньших размеров для STT-MRAM.
- Увеличение нагрузки на шину благодаря доступу к данным во время выполнения каждого такта.
Изменения в DDR3 MIG
В Таблице 3 перечислены все изменения в MIG для каждой категории, а также измененные модули, входящие в состав контроллера DDR3 MIG для XCKU060-2FFVA1156E. Everspin представил результат работы функции diff (Linux) в виде файла патча для каждого из измененных модулей. Внесение этих изменений в каждый модуль позволит использовать все параметры тайминга, включения и отключения питания, а также производительности, которые были описаны выше.
MRAM_ddr3_v2_0.sv | MRAM_ddr3_v2_0_ddr3.sv | MRAM_ddr3_v2_0_ddr3_mem_infc.sv | ddr3_v1_4_cal.sv | ddr3_v1_4_mc.sv | ddr3_v1_4_mc_arb_mux_p.sv | ddr3_v1_4_mc_group.sv | ddr3_v1_4_mc_ref.sv | ddr3_v1_4_ui.sv | ddr3_v1_4_ui_rd_data.sv | ddr3_v1_4_ui_wr_data.sv | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Номер файла | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
Тайминг | Установки тайминга и изменения ширины счетчика | × | × | × | × | |||||||
Включение | Изменения «анти-скрибблинг» (режим NOMEM) | × | ||||||||||
Отключение | Входной сигнал SCRAM для сброса команд записи с закрытием страницы CAS | × | × | × | × | × | ||||||
Отключение | Сигналы статуса выхода Scram | × | × | × | × | × | × | |||||
Производительность | Автоматические предзагрузки на 8-м BL8 CAS-страницы | × | × | × | × | × | ||||||
Производительность | Дублирование FIFO-DEPTH | × | ||||||||||
Производительность | Изменения для ускоренной отправки запросов | × |
Файлы с результатами работы функции diff для DDR3 MIG
На сайте Everspin можно скачать 11 файлов патчей для реализации системы. Каждый из этих файлов является результатом вывода функции diff (Linux) и был создан в процессе сопоставления 4Gb DDR3 MIG и 256Mb ST-DDR3 MIG и имеет расширение «.patch». Файлы патчей могут быть выполнены инженером вручную для внесения соответствующих модификаций или с использованием встроенной в Linux функции patch для обновления существующих модулей и создания соответствующих файлов, на основе которых может быть реализован модуль контроллера MIG, совместимый с ST-DDR3. Процесс проектирования состоит из следующих этапов:
- Создание совместимого с 4Gb DDR3 MIG в Vivado.
- Создание «тестбенча» путем нажатия правой кнопкой мыши на файл с расширением «.xci» и выбором пункта меню «Open IP Example Design ...». В результате Vivado создаст новый каталог проекта с названием, окончанием которого будут символы «_0_ex». Новый каталог проекта будет выглядеть примерно так:
/<home directory>/<user defined MIG name>_0_ex /<user defined MIG name>_0_ex.srcs/sources_1/ip/<user defined MIG name>/rtl
- Процесс симуляции с помощью «тестбенча», созданного Xilinx, для того, чтобы убедиться в работоспособности 4Gb DDR3 MIG.
- Запуск 11 файлов патчей.
- Повторный синтез и симуляция среды для обеспечения функционирования 256Mb STT-DDR3 MIG.
В подкаталоге rtl найдите 5 следующих подкаталогов:
Cal, clocking, controller, ip_top, ui.
Переместите патчи 1-3 в каталог ip_top
, переместите четвертый патч в каталог cal
, 5-8 патчи – в каталог controller
и патчи 9-11 – в каталог ui
.
Запускайте каждый патч для соответствующих DDR3 MIG. Каждый новый созданный файл является новым модулем, совместимым с ST-DDR3.
$patch [original file] -i [patch file] -o [output file]
Исходный файл соответствует исходному файлу модуля DDR3 MIG. Все файлы патчей перечислены ниже:
- 1-ddr3_0.sv.patch
- 2-ddr3_0_ddr3.sv.patch
- 3-ddr3_mem_intfc.sv.patch
- 4-ddr3_v1_4_cal.sv.patch
- 5-ddr3_v1_4_mc.sv.patch
- 6-ddr3_v1_4_mc_arb_mux_p.sv.patch
- 7-ddr3_v1_4_mc_group.sv.patch
- 8-ddr3_v1_4_mc_ref.sv.patch
- 9-ddr3_v1_4_ui.sv.patch
- 10-ddr3_v1_4_ui_rd_data.sv.patch
- 11-ddr3_v1_4_ui_wr_data.sv.patch
Каждый файл патча соответствует модулю, указанному в Таблице 1. После успешного выполнения команды patch должен быть получен выходной файл с тем же именем, что и исходное соответствующее имя файла DIG3 MIG. Для обеспечения безопасного резервного копирования каждого файла перед внесением изменений можно использовать следующую инструкцию:
$cp filename.sv filename.sv.org $patch filename.sv.org -i filename.sv.patch -o filename.sv.save $cp filename.sv.save filename.sv
Если команда patch отработала с ошибкой, необходимо внести соответствующие изменения вручную. Обратите внимание: правильность выполнения процесса не гарантируется, все изменения должны быть внесены корректно.
Файлы схемы nvNITRO
nvNITRO - это эталонная платформа, разработанная Everspin, которая использовалась для создания платы PCIe Gen3 x8 PCIe на базе STT-MRAM. Контроллер Xilinx представляет собой FPGA XCKU060-2FFVA1156E, поддерживающий 36 устройств STT-MRAM и использующий 4 разряда для энергонезависимой памяти общим объемом 1 Гб. Файлы системы Orcad можно найти на веб-сайте Everspin.
Схемы nvNITRO
Файлы схем nvNITRO в формате «.pdf» доступны на сайте Everspin.
Дополнительные элементы
Вы можете найти дополнительные элементы на сайте Everspin:
- Файлы патчей MIG
- Файлы схем Orcad для nvNITRO
- Схемы nvNITRO в формате «.pdf»
- Файлы визуализации Allegro
Контрольный список уровня платы
Ниже приведен список элементов уровня платы, которые должны быть учтены инженером для успешной реализации системы:
- Следуйте инструкциям по реализации высокоскоростной маршрутизации и аппаратного проектирования от PCI-Sig, JEDEC, Xilinx и Micron для проектирования на основе PCIe и DDR3.
- В ST-DDR3 также применяются те же правила компоновки высокоскоростной передачи сигналов и лучшие достижения, которые используются в DDR3. Смотрите DDR3 SDRAM Unbuffered DIMM Design Specification(требуется логин JEDEC). В этой же спецификации указаны соответствующие объемная и развязывающая емкости для каждого устройства (см. Таблицу 12 спецификации DDR3 Unbuffered DIMM Design Specification).
- Xilinx предлагает руководство по созданию высокоскоростной системы PCB, которая также включает в себя развязывающую и объемную емкости для каждого устройства (см. Таблицы 1-12 в UltraScale Architecture PCB User Guide). Xilinx также предлагает руководство по реализации высокоскоростных PCB, используемых для других семейств устройств.
- Требования к питанию STT-DDR3 (смотрите Таблицу 10 в спецификации ST-DDR3 256 Мб https://www. Everspin.com/file/156503/download).
- Требования к питанию FPGA от Xilinx представлены в Xilinx Power Estimator (XPE) для оценки наихудшего использования мощности.
- Реализация схемы захвата и пина FPGA с использованием среды разработки Xilinx Vivado должна выполняться при постоянном проведении анализов полученных результатов (итеративно) для гарантии обеспечения требуемой функциональности FPGA и маршрутизации внешнего сигнала.
- Как уже было сказано ранее в разделе Отключение питания, грамотно реализованная последовательность скремблирования не должна превышать по длительности 10 мкс. Требования к развязывающим и объемным емкостям для переходных изменений нагрузки всегда будут выше, чем к объемной емкости, необходимой для удовлетворения условия, что время удержания не превысит 10 мкс. Этими значениями нельзя пренебрегать, также как и проведением расчетов, симулированием и измерением времени удержания для каждой системы.
- VDDQ, VDD, VrefDQ, VrefCA и ZQ для ST-DDR3 соответствуют казанным в спецификации к DDR3 1.5V (смотрите Таблицу 4).
Параметр | JEDEC DDR3 | 256Mb ST-DDR3 |
VDDQ, VDD, Vrefdq, Vrefca, ZQ |
1.5V, 1.5V, VDDQ/2, VDDQ/2, VSSQ |
1.5V, 1.5V, VDDQ/2, VDDQ/2, VSSQ |
Заключение
STT-MRAM от Everspin - превосходная альтернатива архитектурам контроллеров на основе DRAM для решения проблем детерминизма ввода-вывода, обеспечения высокой производительности и надежности в устройствах корпоративного класса без необходимости использования альтернативных источников энергии, таких как аккумуляторы/суперконденсаторы, или для использования адресной энергонезависимой памяти. STT-MRAM позволяет оптимизировать скорость, производительность, выносливость, время задержки и надежность, параллельно уменьшая сложность и обеспечивая расширенные функциональные возможности.