$readmemb()でメモリの初期値を設定する
$readmemb()の書式
2進数で初期値を設定する場合は$readmemb()を使い、16進数で初期値を設定する場合は$readmemh()を使う($readmemhの書式は$readmemb()と同じである)。
$readmemb("初期値が記述されたファイルの絶対パス", 初期値を格納する配列);
$readmemb()を使ったROMの記述例
module rom (input logic [31:0] Readaddress, output logic [31:0] Readdata); // 32bit 10ワードのメモリを宣言 logic [31:0] mem [0:9]; // 初期値(rom.dat)を設定 initial begin $readmemb("$HOME/rom.dat", mem); end assign Readdata = mem[Readaddress]; endmodule
初期値(rom.dat)の記述例
2進数の記述は"_"で区切ることができる。
00000000_00000000_00000000_00000000 00000000_00000000_00000000_00000001 00000000_00000000_00000000_00000010 00000000_00000000_00000000_00000011 00000000_00000000_00000000_00000100 00000000_00000000_00000000_00000101 00000000_00000000_00000000_00000110 00000000_00000000_00000000_00000111 00000000_00000000_00000000_00001000 00000000_00000000_00000000_00001001