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

Memory Interface Generator MIG3.5 от Xilinx

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

Подскажите пожалуйста, я сгенерировал в MIG контроллер DDR3, сделал ВСЁ по мануалу (ug406) топом сделал testbanch из папки design_example/sim и попытался всё это дело просимулировать в modelsim6.5. Результаты весьма омрачающие...

1) модель памяти MIG генерирует ТОЛЬКО на верилоге. Я в верилоге не пишу, и поэтому так и не понял, почему modelsim пишет что 2001 редакция верилога не понимает глобальное объявление parametеr? и не понимает вставки 'include. A MIG всё делает с глобальным объявлением параметров.

Пример (102,103,104,,,,,126,127,128 - номер строк)

файл ddr3.v

............

 

102 `include "ddr3_model_parameters.vh"

103

104 parameter check_strict_mrbits = 1;

parameter check_strict_timing = 1;

parameter feature_pasr = 1;

parameter feature_truebl4 = 0;

 

// text macros

`define DQ_PER_DQS DQ_BITS/DQS_BITS

`define BANKS (1<<BA_BITS)

`define MAX_BITS (BA_BITS+ROW_BITS+COL_BITS-BL_BITS)

`define MAX_SIZE (1<<(BA_BITS+ROW_BITS+COL_BITS-BL_BITS))

`define MEM_SIZE (1<<MEM_BITS)

`define MAX_PIPE 4*CL_MAX

 

// Declare Ports

input rst_n;

input ck;

input ck_n;

input cke;

input cs_n;

input ras_n;

input cas_n;

input we_n;

126 inout [DM_BITS-1:0] dm_tdqs;

127 input [bA_BITS-1:0] ba;

128 input [ADDR_BITS-1:0] addr;

129 inout [DQ_BITS-1:0] dq;

inout [DQS_BITS-1:0] dqs;

inout [DQS_BITS-1:0] dqs_n;

output [DQS_BITS-1:0] tdqs_n;

input odt;

...... и т.д.

 

файл ddr3_model_parameters.vh содержит такие строки

 

parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used

parameter ADDR_BITS = 14; // MAX Address Bits

parameter ROW_BITS = 14; // Set this parameter to control how many Address bits are used

parameter COL_BITS = 11; // Set this parameter to control how many Column bits are used

parameter DQ_BITS = 4; // Set this parameter to control how many Data bits are used **Same as part bit width**

parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used

 

 

при этом моделсим пишет

 

# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(102): Cannot open `include file "ddr3_model_parameters.vh".

# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(126): Undefined variable: DM_BITS.

# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(127): Undefined variable: BA_BITS.

# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(128): Undefined variable: ADDR_BITS.

# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(129): Undefined variable: DQ_BITS.

# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(130): Undefined variable: DQS_BITS.

# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(137): Undefined variable: TDLLK.

# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(166): Undefined variable: BL_BITS.

 

короче не видит 'include

 

Кто нибудь знает почему, и как выкрутиться??

Заранее спасибо

 

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


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

Я ничего не понимаю в верилоге, но предположу, что вот эта строка:

# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(102): Cannot open `include file "ddr3_model_parameters.vh".

обозначает, что симулятор не нашел файл ddr3_model_parameters.vh там где ожидал его найти, а соответственно не смог взять из него параметры. Разбирайтесь с путями.

 

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


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

я в верилоге тоже не очень, но все эти файлы создаёт COREGENERATOR, так что не с путями проблема. но что бы перепробовать всё, я ему полный путь прописывал, всё равно ругается.. :(

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


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

http://dbaspot.com/forums/arch/253795-newb...es-verilog.html

 

Пишут:

Thanks for the help. That enabled me to get it working.

 

I moved the `include after the port definitions and that fixed ISE

problem.

 

I changed the properties on each .V source file to include the

directory where the include file was located (even though it was the

same directory as the source .v files). This fixed the ModelSim

problem.

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


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

Спасибо

прописал ему полный путь `include "F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model_parameters.vh", моделсим его скушал, но то что было описано в ddr3_model_parameters.vh он так и не увидел...

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


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

2 _ANDREW

заархивируте ваш проект и выложите, а то можно долго телепатировать :biggrin:

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


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

У вас инклюде файл не подключается.

 

перед запуском компиляций введите команду

pwd

путь который будет указан должен содержать include file ddr3_model_parameters.vh

 

 

а еще проще засунуть вместо строчки этой сам файл в ручную, как то сам так делал когда с DDR1 разбирался, чтоб не тратить время на разбирательство откуда ногирастут у этих проблем.

еще возможно надо будет предать како нито define вместе с командой vsim

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


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

Скажите, а для какой микросхемы вы генерируете ядро?

Попробовал для virtex-6 и для spartan-6 сделать DDR3 на VHDL - делает, если попросить

в меню CORE Generator

Project->Project Options->Generation->

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


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

Всем спасибо за помощь!!

Сегодня поковырял снова эту проблему, и выяснил, что моделсим не видит 'ifdef, а весь файл ddr3_model_parameters.vh написан под несколько микросхем памяти а конкретная выбирается с помощью условий ifdef

`ifdef QUAD_RANK

`define DUAL_RANK // also define DUAL_RANK

parameter CS_BITS = 4; // Number of Chip Select Bits

parameter RANKS = 4; // Number of Chip Selects

`else `ifdef DUAL_RANK

parameter CS_BITS = 2; // Number of Chip Select Bits

parameter RANKS = 2; // Number of Chip Selects

`else

parameter CS_BITS = 2; // Number of Chip Select Bits

parameter RANKS = 1; // Number of Chip Selects

`endif `endif

 

я убрал эту универсальность, всё сделал под конкретную микруху без ifdef и всё заработало... но это не порядок.. надо разбираться...

на следующей неделе встречаюсь с гуру моделсима... у меня к нему масса вопросов... так что разберусь - отпишусь!!!

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


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

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

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

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

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

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

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

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

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

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