突然、$ readmemhと$ writememhを多用するVerilogテストベンチコードを調べさせられました。基本的にはメモリへの読み取りとメモリへの書き込みであることがわかりました。それらのルーチンに関連するいくつかのリソースを指摘していただければ幸いです。 PS:グーグルで検索しても成功しませんでした。 (私は非常に... Verilogに非常に新しいです)
Readmem/writememについて何かを見つけるのはそれほど簡単ではないことに同意します。ここで少し見つけることができます: http://fullchipdesign.com/index_files/readmemh.htm
とにかく、これらの関数について言うことはあまりありませんが、構文は次のとおりです。
$readmem[hb]("File",ArrayName,StartAddr,EndAddr)
$writemem[hb]("File",ArrayName,StartAddr,EndAddr)
Verilogはファイル形式について非常に慎重であり、テキストファイルのビット数は配列のビット数と一致する必要があります。
配列を定義し、データで埋めて、writememh/writemembで書き出し、後で印刷することで、少し遊んでみることをお勧めします。
このような何かがあなたを始めるはずです(試してはいけません!)。
integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries
initial begin
for (i=0; i<16; i++) begin
memory = i;
end
$writememb("memory_binary.txt", memory);
$writememh("memory_hex.txt", memory);
end
乾杯!
HEXファイルの読み取りは次のように機能します。
integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries
initial begin
for (i=0; i<16; i++) begin
memory = i;
end
$readmemh("memory_binary.txt", memory);
end