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

моделирование DDR2 SDRAM контроллера с UniPHY

Та у меня сейчас тоже рутина навалилась,отложил пока разработки. Последнее что придумалось - если контроллер DDR создавать не из IP Catalog, а из QSYS то мы получим папку с исходниками контроллера. Вот и мелькнула мысль тупо скомпилить эти исходники в симуляторе. Попробовал, но споткнулся на библиотеках. Я пишу на VHDL поэтому подключение верилоговских библиотек меня просто ставит в ступор. Пока отложил. Если бы кто-то из интересующихся этой темой любителей верилога проверил этот путь было бы замечательно.

 

Столкнулся с той же проблемой. Есть желание отсимулировать DDR3, но не получается.

Однако мною обнаружено следующее. Я работаю в 14.1 Квартусе. Скачал 15.1. Поставил и наблюдаю интерестную вещь.

При генерации HDML файлов в QSYS от 15.1 квартуса выдается некая наводка, как править скрипты для симуляции IP:

 

15_1.jpg

 

Для сравнения 14-1 Квартус писал так:

 

14_1.jpg

 

Пошел изучать наводку.

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


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

DDR and DDR2 SDRAM ECC от altera

Reference Design

 

Во вложении проект на VHDL с тестбенчем

an415.zip

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


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

Столкнулся с той же проблемой. Есть желание отсимулировать DDR3, но не получается.

Однако мною обнаружено следующее. Я работаю в 14.1 Квартусе. Скачал 15.1. Поставил и наблюдаю интерестную вещь.

При генерации HDML файлов в QSYS от 15.1 квартуса выдается некая наводка, как править скрипты для симуляции IP:

 

15_1.jpg

 

Для сравнения 14-1 Квартус писал так:

 

14_1.jpg

 

Пошел изучать наводку.

2 videoscan: напишите в личку

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


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

2 videoscan: напишите в личку

здесь поделиться не желаете? ;)

 

Возможно другим Ваш ответ тоже будет полезен

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


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

здесь поделиться не желаете? ;)

 

Возможно другим Ваш ответ тоже будет полезен

 

Если поднимет автор - пусть он отчет и пишет :) А я ему как коллеге по борьбе с изображениями помогу, но писать не буду

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


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

DDR and DDR2 SDRAM ECC от altera

Reference Design

 

Во вложении проект на VHDL с тестбенчем

 

Это не UniPHY, а старый ALTMEMPHY контроллер.

 

Небольшой оффтопик: для Arria 10 Altera форсит External Memory Interface (EMIF) IP,

так что UniPHY тоже старый. :maniac:

 

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


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

Если поднимет автор - пусть он отчет и пишет :) А я ему как коллеге по борьбе с изображениями помогу, но писать не буду

 

Если получу удобоваримый и полезный обществу результат - напишу.

 

Это не UniPHY, а старый ALTMEMPHY контроллер.

 

Небольшой оффтопик: для Arria 10 Altera форсит External Memory Interface (EMIF) IP,

так что UniPHY тоже старый. :maniac:

Это да. Все так быстро меняется от версии к версии, что уследить тяжело.

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


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

У меня скрипт почти весь отрабатывается без ошибок, только в конце спотыкается на следующей строке:

vsim -t 1ps -L altera -L lpm -L sgate -L altera_mf -L altera_lnsim -L arriav -L rtl_work -L work -L myDDR2q -voptargs="+acc"  top_tb

Причём ошибок вагон с тележкой. Подскажите,уважаемые знатоки,что бы это значило?

Вот строки из указанного файла начиная со строки 210:

    defparam 
        uaddress_pad.extend_oe_disable = "UNUSED",
        uaddress_pad.intended_device_family = DEVICE_FAMILY,
        uaddress_pad.invert_output = "OFF",
        uaddress_pad.lpm_hint = "UNUSED",
        uaddress_pad.lpm_type = "altddio_out",
        uaddress_pad.oe_reg = "UNUSED",
        uaddress_pad.power_up_high = "OFF",
        uaddress_pad.width = MEM_ADDRESS_WIDTH;

post-18832-1464329980_thumb.png

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


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

У меня скрипт почти весь отрабатывается без ошибок, только в конце спотыкается на следующей строке:

vsim -t 1ps -L altera -L lpm -L sgate -L altera_mf -L altera_lnsim -L arriav -L rtl_work -L work -L myDDR2q -voptargs="+acc"  top_tb

Причём ошибок вагон с тележкой. Подскажите,уважаемые знатоки,что бы это значило?

Вот строки из указанного файла начиная со строки 210:

    defparam 
        uaddress_pad.extend_oe_disable = "UNUSED",
        uaddress_pad.intended_device_family = DEVICE_FAMILY,
        uaddress_pad.invert_output = "OFF",
        uaddress_pad.lpm_hint = "UNUSED",
        uaddress_pad.lpm_type = "altddio_out",
        uaddress_pad.oe_reg = "UNUSED",
        uaddress_pad.power_up_high = "OFF",
        uaddress_pad.width = MEM_ADDRESS_WIDTH;

попробуйте отключить оптимизацию "voptargs="+acc" использовав "-novopt"

 

пример скрипта с оптимизацией и без

 

vsim -t 1ns -L altera -L lpm -L sgate -L altera_mf -L stratixiv -L work -voptargs="+acc" work.dsp_test

vsim -t 100ps -L altera -L lpm -L sgate -L altera_mf -L stratixiv -L work -novopt work.dsp_test

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


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

попробуйте отключить оптимизацию "voptargs="+acc" использовав "-novopt"

 

пример скрипта с оптимизацией и без

 

vsim -t 1ns -L altera -L lpm -L sgate -L altera_mf -L stratixiv -L work -voptargs="+acc" work.dsp_test

vsim -t 100ps -L altera -L lpm -L sgate -L altera_mf -L stratixiv -L work -novopt work.dsp_test

Спасибо! Это первое что мне пришло в голову вчера, совершенно ничего не изменяется, ошибки те же.

Извиняюсь,пропустил ключ -novopt, с ним вроде пошло дальше , но ошибок стало больше и они другие. Теперь пошли ошибки симуляции.

post-18832-1464335553_thumb.png

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


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

Докладываю текущую ситуацию.

 

Мои действия:

У меня Quartus 14.1 купленный. Работа пишется для Arria V (есть в наличии Arria V Development Kit).

Нужен интерфейс DDR3. Проект написан на VHDL. Контроллер памяти сделан на QSYS.

1. Проект создан. Из GUI Quartus я запускаю RTL simulation.

При этом вызывается ModelSim Altera Start Edition и автоматически запускается программа сборки библиотек проекта.

 

2. Дальше мне надо откомпилировать testbensh, что я делаю из GUI ModelSim командой Compile|compile/. После этого в библиотеке Work появляется еще и мой testBensh.

 

3. Далее вызываю Simulation|Start Simulation и указываю на файл testBensh. При этом появляется диагностика

"Warning: (vsim-3473) Component instance "mem_if_ddr3_emif_0 : sdram_v1_mem_if_ddr3_emif_0" is not bound"

и производится повторная сборка всех библиотек (опять же work создается в том числе). В окне Object ModelSim появляются список сигналов, которые можно смотреть, но память в симуляторе не оживает.

 

4. Сборка компонента sdram_v1_mem_if_ddr3_emif_0 описана в файле msim_setup.tcl в который сгенерирован QSYS для компонента DDR3.

 

5. Влезаю в файл msim_setup.tcl и пытаюсь его запустить (немного подредактировав).

 

6. При попытке чтения одного из файлов субмодуля - ругается.

 

** Error: (vlog-7) Failed to open design unit file "./../submodules/mentor/altera_merlin_slave_translator.sv" in read mode.

 

Я посмотрел на этот файл - а он закодирован! типа:

 

`pragma protect begin_protected

`pragma protect version = 1

`pragma protect encrypt_agent = "Model Technology", encrypt_agent_info = "DEV-6.6"

`pragma protect author = "Altera"

`pragma protect data_method = "aes128-cbc"

`pragma protect key_keyowner = "MTI" , key_keyname = "MGC-DVT-MTI" , key_method = "rsa"

`pragma protect key_block encoding = (enctype = "base64", line_length = 64, bytes = 128)

H5SdFtKX3sxZ5d8fD91rl7piWFK+iK95Pvs3J5JdmJXCYd2RAKtPOwRcMxh+Bjyp

G5VIQiK7bFCX1Rtic/d8I3BLbIYy3bKEzO6YZie95mziqLx3qKftEV/eDo1VD+zy

MQbBEHzhgqBVWceph4S3P0fpppzR39xqdBqHdhX+qDY=

`pragma protect data_block encoding = (enctype = "base64", line_length = 64, bytes = 17584)

BBS0gVDFJl5fGtindDy6AEdOE8+SqXnOl9jG4GB5XszVQRWC3sjXsb0Nnekd3Io8

lcPdzgH9EZ8771GrnJjCZnNhRRYhKFzBObv63p5wCXUXio4ouPYaq/yf2zsRSQ0W

......

 

Как этот так? Что Quartus кривой?

 

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


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

2. Дальше мне надо откомпилировать testbensh, что я делаю из GUI ModelSim командой Compile|compile/. После этого в библиотеке Work появляется еще и мой testBensh.

 

3. Далее вызываю Simulation|Start Simulation и указываю на файл testBensh. При этом появляется диагностика

"Warning: (vsim-3473) Component instance "mem_if_ddr3_emif_0 : sdram_v1_mem_if_ddr3_emif_0" is not bound"

 

Все должно работать, если забыть про GUI ModelSim и пользоваться процедурами из

..\mentor\msim_setup.tcl. Пример - ..\mentor\run.do

 

 

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


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

Комментирую по просьбе из соседней темы.

 

Я этим занимался 3 года назад и на 12.3. Поэтому мало чего уже помню в деталях, да и что-то могло и поменяться.

Начинал, как сейчас помню, с запуска тестбенчей, сгенеренных вместе с ядром. Советую ТС тоже этим заняться, а потом уже что-то свое делать.

 

Все должно работать, если забыть про GUI ModelSim и пользоваться процедурами из

..\mentor\msim_setup.tcl. Пример - ..\mentor\run.do

Тоже что-то такое помню, что запускались эти тестбенчи как-то не по-русски. Деталей не помню.

 

Что касается картинки, на которой все данные хххХХХХхххх.

Вообще, это нормально. Там надо какое-то время (симуляции) чтобы оно подумало, прежде чем начнет подавать признаки жизни.

Скорее всего, где-то там должна быть галочка про сокращение времени инициализации в симуляторе (не уверен).

В тестбенч советую добавить всяких сигналов типа init_done, reset_done или какие там еще есть.

 

В принципе, все оно ок работает (ну, может, в новых версиях не работает, в старых работало).

В любом случае, надо сначала запустить в симуляторе - будет понятнее, как потом запускать в железе. А то, в железе запускать, помню, тоже было интересно :).

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


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

Спасибо! На днях собираюсь опять вернуться к этой теме ибо действительно отладка в железе - это нечто!

Кстати,если фиттер при сборке не ругается - это есть необходимое и достаточное условие для нормального функционирования IP? Дело в том что я немного отошёл от варианта распиновки предложенного скриптом, но фиттер проглотил и не ругается. А вот если я выложу здесь схему подключения SDRAM к FPGA найдутся ли желающие окинуть её зорким оком? Ребята, очень на вас надеюсь, ситуация совсем поганая...

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


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

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

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

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

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

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

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

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

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

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