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

Инициализация ROM из файла в Verilog 2001.

Доброго времени суток.

Столкнулся с необходимость описывать ROM на Verilog, под семейство Xilinx.

Для этих целей использую $readmemb/$readmemh.

Пока длина шины данных меньше или равна 32, то инициализация идет нормально.

Как только больше,  в симуляторе Active-HDL version 9.3, Verilog 2001, возникает предупреждение.

# PLI: $readmemh  Too many digits in memory word in file *.txt at line 61437, position 1. Word size is 40 bits [systf:LDM14]

В стандарте на Verilog 2001 ограничений на длину слова нет.

В документации на Active-HDL, тоже не нашел.

Подскажите пожалуйста, можно ли что-нибудь с этим сделать?
Всем спасибо.

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


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

Приветствую!

Вы бы привели пример того что содержится в строке 61437 вашего текстового файлы, ну и как и куда вы его читаете. Ведь до этой строки все читается вроде как нормально? 

А мы затем попробуем погадать на этой гуще. :to_take_umbrage:

Удачи! Rob. 

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


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

7 minutes ago, RobFPGA said:

Вы бы привели пример того что содержится в строке 61437 вашего текстового файлы, ну и как и куда вы его читаете. Ведь до этой строки все читается вроде как нормально? 

Тоже самое, что и в предыдущих строчках.

40 нулей и единиц :)

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

Там все легко воспроизводится.

Чтобы не гадать не кофейной гуще :)

test.txt

Test.v

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


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

38 minutes ago, Tpeck said:

# PLI: $readmemh  Too many digits in memory word in file *.txt at line 61437, position 1. Word size is 40 bits [systf:LDM14]

Зацепился глаз: readmem_H_ или readmem_B_ ?

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


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

4 minutes ago, nice_vladi said:

Зацепился глаз: readmem_H_ или readmem_B_ ?

И так, и так. Я думал, что в Hex меньше чисел, но он считает цифры в бинарном виде %)

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


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

Приветствую!

25 minutes ago, Tpeck said:

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

В примере 

reg [39 : 0] ram [255:0];

А в файле  011111110100111100000000111110111010111000000101 - ровно 48  бит!   Может  надо  "осетра" в файле урезать до 40 бит,  или "руки" развести пошире (reg [47 : 0] ram [255:0];) :unknw:

Удачи! Rob.

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


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

2 minutes ago, RobFPGA said:

А в фале  011111110100111100000000111110111010111000000101 - ровно 48  бит!   Может  надо  "осетра" в файле урезать до 40 бит,  или "руки" развести пошире (reg [47 : 0] ram [255:0];) :unknw:

Спасибо. :)

Там целый набор файлов с различной шириной, когда копировал ошибся :(

Полез в aldec, а там оказывается параметр множителя шины с верхнего уровня (VHDL) на нижний (Verilog) передавался криво.

Сначала он был natural, потом передал на integer - это видимо стало узким местом :(

Прописал ручками для одного набора - заработало, начал менять обратно, Aldec упал.

После перезапуска Aldec - данная ошибка перестала возникать. 

Всем спасибо за оперативную помощь.

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


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

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

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

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

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

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

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

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

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

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