CPU+コンパイラ自作キャンプのための開発環境構築
何はともあれ、FPGAボードと開発ツールが欲しい
FPGAボード:Tang Nano 9K
他のFPGAボードでは、Verilog記述や回路構成はほとんど共通だが、開発ツールの操作やボードに実装されている外部回路は全く違う
Tang Nano 9Kに限れば、ライセンス申請が不要な「Education Edition」で良い。
「Standard Edition」を使いたい場合は、インストール後、ライセンスの申請を行う
経験上、1日~数日でライセンスが送られてくる
基本的にはその時の最新版を入手すれば良い
例えば、筆者の環境においてembFlash書き込みがGOWIN Programmer V1.9.10.02だと全然ダメで、V1.9.9.03だと一発で成功した経験がある。
コンパイラ開発ツール:何らかのプログラミング言語処理系
筆者はClangを使っている
GCCでも良いし、そもそもC言語である必要もない
CPU+コンパイラ自作キャンプはC言語でコンパイラを作ることを仮定していて、サンプルコードはC言語であるので、読者もC言語を使う方がスムーズに理解できるだろう C言語でなくても、「ソースコード」を入力して「アセンブリコード」あるいは「機械語コード(16進文字列)」を出力できればよい
たいていのプログラミング言語処理系はファイルの入出力や文字列操作が可能なので、コンパイラを作れる
少し複雑な回路を書いたらVerilogの検証をしたくなる
Icarus VerilogはOSSで無料で使えるというのが良い
他にも有名なOSSとしてVerilatorがあるが、筆者は使ったことがない
テストベンチは基本C++で書く必要があるなど、結構癖がありそう
対応しているVerilogの機能も結構制限があるっぽい
Windows + WSLという環境で開発したい場合
WSL
キャンプを進めるのに必須ではないが、使えると便利
筆者としては、WSLを使ってLinuxを利用することで、Icarus VerilogやGitが楽に使えるなあと感じている
UbuntuなどではIcarus VerilogやGitがパッケージ化されていて、簡単にインストールできる
筆者はWindowsでGowin EDAを、Ubuntu on WSLでIcarus Verilogやエディタ(Vim)を使う構成でやることが多い
WSL上のエディタからWindows上のファイルを編集することは問題なくできる
逆に、WSL上のファイルをWindows上で編集することもできる
筆者は、WSL上にGowin EDAのプロジェクトファイルを保存し、Windows上のGowin EDAで開くという構成でやっている
WSL側でファイルを編集してもWindows上で変更が(リアルタイムで)検知されないなどの些細な問題はある