Полная версия этой страницы:
DDR SDRAM для VIRTEX 4
sancheez
Jul 13 2010, 23:53
Здравствуйте.
Кто знает, каким образом избавиться от ошибки: Memory overflow, you mast increase the part_mem_bits parameter or `define FULL_MEM - данная ошибка появляется при попытке контроллера сменить строку в банке памяти. Речь идет о оживлении КОРЫ памяти для Virtex4. Память микроновская MT46V64M16, кора сгенерена в Xilinx ISE.
P.S. увеличение параметра part_mem_bits результата не дает.
Заранее спасибо!
DmitryR
Jul 14 2010, 00:31
А можно чуть попобробнее: кто печатает эту ошибку, откуда известно, что она совпадает с моментом смены строки, что такое смена строки вообще (этот контроллер умеет несколько строк держать открытыми) etc.
sancheez
Jul 14 2010, 02:07
Я сгенерил кору в CORE GENе Xilinx, MIG - memory interface generator для памяти указанной выше. После генерации появляется и сама модель памяти DDR_model.v которая, собственно, заменяет память при симуляции. В этом файле прописаны всякие debug сообщения выскакивающие при определенных условиях или ошибках. Я написл пользовательский модуль - который должен посылать и выводить данные сначала с коры контроллера, а он в свою очередь с памяти. Этот самый файл DDR_model.v в момент симмуляции записи данных в память выводит сообщения о том, по какому адресу и какие данные загоняются в память, как только заполнены все колонки, выводится сообщение указанное в первом сообщении. На сколько я понимаю, кора она же контроллер должна переключать строки и даже банки памяти автоматом. Открытыми несколько строк держать врядли может. Делает (precharge) а в это время данные пишутся в FIFO.
DmitryR
Jul 14 2010, 02:11
Я бы для начала попробовал модель памяти поставить нормальную, от Micron (доступна для скачивания на сайте). Ну и конечно надо проверить по даташиту конфигурацию памяти, которую вы задали при генерации корки - совпадает ли у нее row/col/bank размерность с размерностями реальной памяти.
sancheez
Jul 14 2010, 02:17
Модель памяти на Микроновском сайте и в коре совпадают. При генерации все параметры проверял не однократно. На мой взгляд моя проблема в том, как задать FULL_MEM.
проведите поиск по исходникам на предмет закоментированной "`define FULL_MEM" и соответствующие параметры sg и x из файла ddr_parameters.vh
если ничего нет просто добавьте в модель DDR памяти эту строчку подбно этому
Код
* 5.5 SPH 01/13/2005 - The model will issue a halt on illegal command sequences.
* JMK 02/11/2005 - Changed the display format for numbers to hex.
* 5.6 JMK 04/22/2005 - Fixed Write with auto precharge calculation.
* 5.7 JMK 08/05/2005 - Changed conditions for read with precharge truncation error.
* - Renamed parameters file with .vh extension.
********************************************************************************
********/
// DO NOT CHANGE THE TIMESCALE
// MAKE SURE YOUR SIMULATOR USE "PS" RESOLUTION
`timescale 1ns / 1ps
`define sg6
`define x16
`define FULL_MEM
module ddr (Dq, Dqs, Addr, Ba, Clk, Clk_n, Cke, Cs_n, Ras_n, Cas_n, We_n, Dm);
`include "ddr_parameters.vh"
// Port Declarations
inout [DQ_BITS - 1 : 0] Dq;
inout [DQS_BITS - 1 : 0] Dqs;
input [ADDR_BITS - 1 : 0] Addr;
input [1 : 0] Ba;
input Clk;
sancheez
Jul 14 2010, 03:33
Спасибо, теперь только после изменения файла ddr_model.v и запуске симуляции вылетает Questasim
Gothard
Jul 15 2010, 05:29
Ответить точно не могу, но насколько я помню модель памяти имитирует не полный объем памяти реальной м/с (в целях экономии оперативки при моделировании).
Вероятно во время моделирования вы заняли весь этот объем, а при параметре FULL_MEM у вас просто не хватило оперативки для модели.
Попробуйте найти параметр part_mem_bits и изменить его.
sancheez
Jul 15 2010, 06:46
QuestaSim выдавал следующую ошибку:
Fatal: (vsim -u) ***** Memory allocation failure. ***** Please check your system for available memory and swap space. Я стал в окно WAVE добавлять меньше сигналов и проблема исчезла... память пишется на ура!!! Спасибо вам за мудрые советы
KPiter
Jul 22 2010, 08:05
Это не кора, а модель памяти. Read me не помог?
#An associative array has been implemented to reduce the amount of
#static memory allocated by the DDR model. The number of
#entries in the associative array is controlled by the part_mem_bits
#parameter, and is equal to 2^part_mem_bits. For example, if the
#part_mem_bits parameter is equal to 10, the associative array will be
#large enough to store 1024 write data transfers to unique addresses.
#The following is simulation with setting the part_mem_bits parameter to 10.
vsim -t ps -Gpart_mem_bits=20 ddr -novopt work.tb
sancheez
Jul 22 2010, 13:05
part_mem_bits не решили проблемы. помогло `define FULL_MEM
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.