FPGA開発日記

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

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (4. 生成されたVerilogコードの解析)

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

NaxRiscvのVerilogコードだが、やっぱり何が書いてあるのかさっぱりわからない。

とりあえず、FetchPCプラグインのモジュールを切り出して、何が起きているのかを確認したい。

多分FetchPCをモジュールとして切り出すと、界面のインタフェースは以下のようになると思う:

module pcplugin
  (
   input logic          clk,
   input logic          reset,

   output logic         fetchPc_output_valid,
   input logic          fetchPc_output_ready,
   output logic [39: 0] fetchPc_output_payload,

   input logic          FetchPlugin_stages_0_ready,

   input logic          jump_pcLoad_valid,
   input logic [39: 0]  jump_pcLoad_payload_pc,

   );

FetchPCの出力を今度はFetchPluignに渡して、それがキャッシュに渡される、という感じかな。

    //FETCH
    plugins += new FetchPlugin()
    plugins += new PcPlugin(resetVector)
    plugins += new FetchCachePlugin(
...

問題は、この界面がVerilogファイル生成時にごちゃまぜにされており、モジュールの切り分けがうまくいかないところだ。 FetchCachePluginはキャッシュに相当するところなのでこれはちゃんと切り分けたいのだが...