前回はこちら:msyksphinz.hatenablog.com
前回までで作っているUVMの環境では、DUTは入力を即時出力するようなデザインなのでイマイチ面白くない。
UVMのスコアボードは、中間結果を取っておいてそれを使って比較できるはずなので、メモリなどの記憶素子も検証できるはずだ。
とりあえず以下のデザインで、Read/Writeによって正しい値が出力されることを検証したい。ちょっとやってみよう。
module mem ( input logic i_clk, input logic i_valid, input logic [ 7: 0] i_addr, input logic i_rw, // Read = 0, Write = 1 input logic [31: 0] i_data, output logic [31: 0] o_data ); logic [31: 0] mem[256]; always_ff @ (posedge i_clk) begin if (i_valid & i_rw) begin mem[i_addr] <= i_data; end end always_ff @ (posedge i_clk) begin if (i_valid & !i_rw) begin o_data <= mem[i_addr]; end end endmodule // mem