例のレイトレを動かすのに苦労したところ
苦労した点
レイトレを動かすまでに苦労したのは苦労したのはこのへん。
OCamlに不慣れ
RAMが足りない問題
開発マシンがmacOS
メモリの同期バスインターフェース
開発ツールのダウンロードサイズがデカすぎ
OCamlに不慣れ
コンパイラをRISC-Vへ移植するためにはOCamlの理解が必要
独特な世界観でとっつきにくい
「プログラミングの基礎(浅井本)」で克服
慣れると気持ちよくなってくる
エコシステムが古くさい → 最近は良くなってきてるかも?
ビルドシステム(Dune)
パッケージシステム(OPAM)
RAMが足りない問題
レイトレには5MBのRAMが必要(スタック1MB、ヒープ4MB)
SDRAMが必要(PSRAMでもいい)
SDRAMコントローラーの難易度が高い
挑戦してみるもうまく動かず、2〜3年停滞
(XilinxのMIGの存在は知っていたが、ULX3Sでやりたい)
いい感じにSDRAMコントローラーを発見 → SDRAM動いた
開発マシンがmacOS
AlteraもXilinxもmacOSには未対応
仮想環境は面倒で遅い...
Lattice社のECP5
yosys + nextpnr
macOSに対応
ULX3S
FemtoRV
ZucherSOC
メモリの同期バスインターフェース
CPU自作入門書に出てくるバスは、だいたい非同期バス
同期バスへのステップアップに苦労
AXIやWishboneも難しくてよく分からん...
理解のきっかけ
PicoRV32のバス
「VALIDとREADYを使ったインターフェース」
開発ツールのダウンロードサイズがデカすぎ
Altera → インテルに買収された後、開発ツールをダウンロードできない時期が続く → さよならAltera
Xilinx → 開発ツールが数十GB超えで、仮想環境へのインストールにもひと苦労
ULX3S + yosys → 小さくて軽くてmacOSネイティブで動く
Gowin + yosys → 配置・配線がECP5と比較すると遅いかも
ECP5 → 5分
Gowin → 30分