Метод $ readmemh не идеален для этого типа непрерывной обработки данных.
Вместо этого я бы использовал тот же метод, который вы использовали бы в стандартном языке программирования: откройте файл, прочитайте необходимые данные из него, закройте файл. Таким образом, вы можете обрабатывать файлы размером много мегабайт, но вам не нужно много мегабайт памяти.
fd = $fopen(filename,"rb");
if (fd==0)
begin
$display("%m @%0t: Could not open file '%s'",$time,filename);
$stop;
end
else
begin
$display("%m @%0t: Opened %s for reading",$time,filename);
file_is_open = 1'b1;
end
if (file_is_open)
value= $fgetc(fd);
ПРЕДУПРЕЖДЕНИЕ:
Используется двоичный файл. Ваш $ readmemh использует файл ASCII. Вы можете, если хотите, прочитать файл ASCII, но затем вы должны выполнить преобразование ASCII в шестнадцатеричный код самостоятельно, написав небольшую функцию Verilog.