FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Vivado Simulatorを使ってUVMに入門する (20. スコアボードを活用するDUTを作りたい)

前回はこちら: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