What is the function of $readmemh and $writememh in Verilog?

前端 未结 1 620
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-05 17:41

I have been looking at some Verilog testbench code that heavily uses $readmemh and $writememh.

I have a vague understanding that these functions

1条回答
  •  北恋
    北恋 (楼主)
    2021-02-05 17:53

    I agree its not too easy to find something about readmem/writemem. You can find a little bit here: https://www.fullchipdesign.com/readmemh.htm

    Anyway there is not too much to say about these functions, the syntax is:

    $readmem[hb]("File", ArrayName, StartAddr, EndAddr)
    $writemem[hb]("File", ArrayName, StartAddr, EndAddr)
    

    Verilog is very picky about the file format, the number of bit in the text file have to match the number of bits in the array.

    I recommend you play around a little bit by defining an array, filling it up with data write it out with writememh/writememb and print it out afterwards.

    Something like this should get you started (not tried out!).

    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] = i;
        end
        $writememb("memory_binary.txt", memory);
        $writememh("memory_hex.txt", memory);
    end
    

    0 讨论(0)
提交回复
热议问题