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}