~ cd 15. особенности симулятора
Это список известных причуд, которые представляет Icarus Verilog. Идея этой главы заключается в том, чтобы указать, чем Icarus Verilog отличается от стандарта или от других реализаций. Если в этом списке что-то отсутствует, сообщите официальному распространителю.
15.1. Системные задачи — уникальные для Icarus Verilog
Это системные задачи, которые уникальны для Icarus Verilog. Не используйте ни одну из них, если хотите сохранить переносимость кода в других компиляторах Verilog.
15.2. $readmempath
Системные задачи «$readmemb» и «$readmemh» считывают текстовые файлы, содержащие значения данных для заполнения памяти. Обычно эти файлы находятся в текущем рабочем каталоге. Системная задача «$readmempath()» может быть использована для создания пути поиска этих файлов. Например:
reg [7:0] mem [0:7];
initial begin
$readmemh("datafile.txt", mem);
endЗдесь предполагается, что файл «datafile.txt» находится в текущем рабочем каталоге, в котором запущена команда vvp. Но с помощью параметра «$readmempath» можно указать путь поиска:
reg [7:0] mem [0:7];
initial begin
$readmempath(".:alternative:/global/defaults");
$readmemh("datafile.txt", mem);
endВ этом примере «datafile.txt» ищется в каждой из директорий в приведенном выше списке (разделенных символами «:»). Используется первый найденный экземпляр. Так, например, если существует «./datafile.txt», то он будет прочитан вместо «/global/defaults/datafile.txt», даже если последний существует.