ウィークリーレポート:2026/02/24

Claude CodeでRISC-Vを作成してみた

次のプロンプトでRISC‐Vを生成してみた。

FPGAに実装するハードウェアで実装されたROSIX対応のリアルタイムOS内蔵RISC-Vを開発する

- 言語: SystemVerilog
- ターゲット: FPGA
- ターゲットデバイス: Xilinx Spartan UltraScale+
- RISC-V: RV32IM(ほかは必要な機能を実装する)
- パイプライン: 5段パイプライン
- メモリ: 命令メモリ=64kB以上、データメモリ16kB以上
  - メモリはBlockRAM(BRAM)を推論できる記述を使用する
- つぎの機能をハードウェアで実装する
  - リアルタイムOS
  - POSIX対応
  - CPUからAXI4バスを経由してAPBバスで周辺ペリフェラルと接続される
  - HyperRAMを接続する
  - 周辺ペリフェラル
    - UART
    - GPIO
    - QSPI(将来予定)
    - I2C(将来予定)
- 実装の検討結果で必要になったハードウェアや機能は追加する
- ソフトウェアのエコ環境を用意する
- サンプル・アプリケーションを用意する

一般的なCPUにRTOSを組み込んだものを作らせるというものである。

  • RISC‐Vのコア部分はなんなく作成し、テストもバッチリだった。
  • RTOSのタスクスケジューラ部分は問題なさそうな回路に仕上がっている
    • ただし、ちゃんとテストされてない
  • シェルを後で追加した
    • シェルはシミュレーション時間が長いので出来ないと断られた

どうも動かないのでシミュレーションで確認するとPOSIXはecallで対応しているけど、ecallの実行タイミングがあまり考慮されてなさそうだな。