開発日記

Erlangをダラダラ書きます。

RISC-V 動き

Top <=> Core <=> Memory

Mainパッケージ

Topクラス

・IO入出力

・コア生成

・メモリ生成

・コアとメモリポート接続

・コアとTopの出力ポート接続

Memoryクラス

・IO入出力

・メモリの実体生成

・メモリロード

・命令読み出し

・読み込みデータ読み出し

・メモリ書き込み

Coreクラス

・IO入出力

レジスタ生成

CSRレジスタ生成

・GP決定(riscv-testsと併用,RISC-V用ユニットテストパッケージ)

IF

 ・命令呼び出し

 ・プログラムカウンタ更新

ID

 ・オペランド解読

 ・符号拡張即値解読

 ・各命令のパターン生成

EXE

 ・オペランド決定

 ・演算決定

 ・条件分岐決定

MEM

 ・メモリ書き込み

 ・CSR決定

WB

 ・WB決定

・終了判定(テストプログラムの終了判定に使う,ChiselTestパッケージと併用)

デバッグ(printf)

Subパッケージ

Constsクラス

グローバル変数の定義

・定数の定義(Enumに変更できる?)

Instructionsクラス

RISC-Vの各命令をBitPatで定義