FPGA開発日記

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

BOOMの論理合成結果と自作CPUの論理合成結果比較 (6. 命令バッファの改善)

BOOMと自作CPUの合成結果を比較して、ボトルネックになっている部分を調査したい。

命令バッファが完全なCAM構造になってしまっているので改善したい。RingFIFOを導入して、ヘッドのみデコードするように変更する。

ring_fifo_2ptr
  #(.T(scariv_ibuf_pkg::inst_buf_t),
    .DEPTH (scariv_pkg::INST_BUF_SIZE)
    )
u_inst_queue
(
 .i_clk (i_clk),
 .i_reset_n (i_reset_n),

 .i_clear (w_flush_pipeline),

 .i_push (w_ptr_in_fire),
 .i_data (w_inst_buf_load),

 .o_empty (w_inst_buf_empty),
 .o_full  (w_inst_buf_full),

 .i_pop  (w_inst_queue_pop),

 .o_valid0 (w_inst_buf_valid[0]),
 .o_data0  (w_inst_buf_data [0]),
 .o_valid1 (w_inst_buf_valid[1]),
 .o_data1  (w_inst_buf_data [1])
 );

一応これで、簡単なテストは通るようになった。引き続きデバッグしていく。

serialdevice: uart loaded
CSR_MCYCLE written 00000000
CSR_MCYCLE written 00000000
rv32ui-p-simple : PASS
{'pass': 0, 'match': 0, 'error': 0, 'deadlock': 0, 'unknown': 0}