web-dev-qa-db-ja.com

$ readmemh $ writememh関連リソース

突然、$ readmemhと$ writememhを多用するVerilogテストベンチコードを調べさせられました。基本的にはメモリへの読み取りとメモリへの書き込みであることがわかりました。それらのルーチンに関連するいくつかのリソースを指摘していただければ幸いです。 PS:グーグルで検索しても成功しませんでした。 (私は非常に... Verilogに非常に新しいです)

12
Alphaneo

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

乾杯!

19
danielpoe

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
0
Ludwig Schreier