例のレイトレの開発環境
https://gyazo.com/e6986b02be9f92aa1ae70c6dbba9ed14
自作のRISC-V CPUのリポジトリ
Odeeen
ハードウェア環境
FPGAボード
ULX3S 85F(Lattice 社の ECP5 というFPGAチップを搭載)
開発言語
System Verilog
開発ツール
Yosys + nextpnr
OSS CAD Suite をインストールすると必要なツールが全部入ってくる
シミュレータ
Icarus Verilog
波形ビューア
GTKWave
開発マシン
M1 MacBook
利用したモジュール
FPUコア
UARTコア
SDRAMコントローラ
ファームウェア環境
コンパイラ
MinCaml(レイトレーサがMinCamlで書かれている)
公式のMinCamlはUltraSparcとPowerPCとx86のアセンブリしか出力できないので、RISC-V対応が必要
アセンブラ・リンカ
riscv-gnu-toolchain のものを利用
シミュレータ
Spikeシミュレータを利用
例のレイトレーサー
レイトレーサー (min-rt) は、MinCamlに付属
(厳密には、東大CPU実験のものとは異なるレイトレーサーらしい)
SLDファイル(空間内のオブジェクト配置情報などが記されている)を読み込み、レイトレーシングを実行し、結果をPPMフォーマットでUARTへ出力する
パソコン上でレイトレを動かすこともできる
レイトレに必要なメモリサイズ
レイトレーサーのバイナリサイズは250Kバイトほど(strip したら110Kバイトぐらいになった)
ブロックRAMの起動時に読み込まれる領域に $readmemh 関数で組み込んでおく
実行時に必要なメモリは、スタックに1MB、ヒープに4MB
(stub.c で確保してるメモリの量がこのくらい)
浮動小数点数演算器
浮動小数点演算器(FPU)は既存のものを利用した
単精度(float)にすべきか倍精度(double)にすべきか悩んだが、floatで大丈夫だった