Chromebookで行うFPGA開発
HDL(ハードウェア記述言語)は、チップ開発に用いられます。チップを集積回路として完成する前に、FPGAでシミュレーションを行ったりします。そうしたHDLを用いたハード設計をChromebookで行うための環境とワークフローのアーキテクチャを示したいと思います。
まず、ChromebookでFPGA開発を行うには大きく分けて2種類あります。それは、
・リモートでサーバー役のWindowsやLinuxのGUIに入って完全にその中で行う方法
・Linux環境(Crostini)を有効にして、ローカルやリモート(CLI)で行う方法
があります。
以下それぞれについて述べ、環境構築について説明します。
完全リモート運用(サーバー内でのみ完結型)
環境構築としては、使用するFPGAベンダーのツールをサーバーにインストールします。
例えばQuartusやVivadoがあります。
サーバーは容量も大きいので、Vivadoの120GB超えのツールを入れても全然大丈夫です。Quartusは無料版では全ツールを入れても数十GBくらいで済むかと思います。
また、これらのツールはメモリも重要です。サーバーはメモリも大きいのでコンパイルなどに有利です。Chromebookローカルで
このサーバーのGUI環境ににリモートデスクトップアプリを用いてアクセスし、開発を行います。
▼おすすめのリモートデスクトップアプリ紹介記事はこちら
この場合、手元に実機がある場合は、その実機への書き込みはできません。
手元の端末にツールが入っていないのでそうなります。
実機が常にサーバーと接続している環境であれば、書き込みもできますし、Webカメラをつけていれば実機のLEDを観察してデバッグを行う、といったワークフローも可能です。
ただしこのワークフローの場合、
GUIごと飛ばすのでネットワークの影響が大きいです。
次に記載する文字情報だけの場合はネットワークの影響が低減されます。
もう一度言いますが、手元の端末にツールが入っていないので、実機を何処かに持ち出したり、実際に組み込む場合には装置のそばで書き込んで修正する、といったことはできなくなります。
なので、手元の端末が何かに依りますがこの場合でも、
書き込みツールだけは手元のマシンに入れておく
と良いと思います。
Linux環境 (Crostini)を有効にして環境を構築する
こちらの方が強力と考えています。幅の広い選択が可能です。構築も1通りではありません。
しかし、その前に使用するChromebookに前提があります。それは、x86アーキテクチャのチップを搭載したマシンをおすすめします。ということです。近頃注目度の上がってきているARM系では制約が大きいです。ARM自体がダメなのではなく、FPGA開発には不向きです。
電力効率で昨今注目されるARM系チップですが、FPGAツールの主要ベンダーであるAMDとAlteraは、現在のところ、ARM系チップで動作するツールを提供していません。OSはLinuxかWindowsで、かつx86アーキテクチャのCPUである必要があります。
この前提を踏まえた上で、次に行きます。構築は主に以下になると思います。
・ローカルにツールをフルで入れて運用する。(ただし手元マシンのメモリ容量には要注意)
・ローカルにはVSCode、Antigravityを入れる。基本は下記a)ですが、ネットワーク状況によっては
b)を回避策として実施します。
a) SSH接続をしてサーバーにあるファイルを手元のVS Codeで編集していくスタイル。
→なのでコンパイルもサーバーが担当。
b) SSH接続せずにローカルで編集、コンパイル時はコードをサーバーに移して、サーバー内の
ベンダーツールでコンパイル。
VSCodeやAntigravityなどのエディターを使って編集する方法であれば、手元マシンのOSやCPUのアーキテクチャに関係なく実行可能です。
上でも書きましたが、書き込みツールだけは手元にあった方が良い気がします。ただこれもワークフローの工夫次第です。
サーバーがWinの場合
WSLを使用しています。
WSLは便利なので、私はUbuntuとAlmaLinuxの両方を入れています。
EDAツールはAlmaLinuxが主流で、企業の装置の採用OSもRHELの採用が多いようです。
WSLでAlmaLinuxを試せるのはAlmaLinux本格サーバー立ち上げ前に簡単に試せたり言語や環境に慣れたりできるので良いと思います。
なのでVS CodeのSSH接続先をこれらのLinuxにしておけばアクセスは容易で開発環境を構築できます。
最後にアーキテクチャを示したいと思います。

まとめ
WSLを用いたHDL開発環境というのがWinの利便性を享受しつつ簡単に構築できる環境になります。
もちろん本格的にはLinuxサーバーが強力であり、スタンダードと思います。
しかし、学習し始めやこれからLinuxを理解し、tclやHDLを習得し、ワークフローを確立していくという際に、簡単に始められて良いと思います。
補足:Chromebookでの書きこみツール設定
Chromebookでの書きこみツール設定を少し書いておきます。
まず、USB-BlasterをLinux環境にパススルーします。右下にポップアップが出て、Linuxに接続しますか?ではい、にして有効にします。

次に、LinuxターミナルでUSBデバイスへのアクセス権限を付与します。
まずnanoというエディタをインストールします。Linux環境を有効にした直後は入っていないと思います。
# パッケージリストの更新
sudo apt update
# nanoのインストール
sudo apt install nano -y
次にアクセス権限を付与するためのudevルールファイルを作成します。
# nanoでファイルを開く(存在しない場合は新規作成されます)
sudo nano /etc/udev/rules.d/51-usb-blaster.rules
nanoが開いたら以下を貼り付けます。
SUBSYSTEM=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0666"
その後、Ctrl + O → Enter で保存し、Ctrl + X で終了します。
書いたルールを反映します。
sudo udevadm control --reload-rules
sudo udevadm trigger
以上でChromebookの書きこみツールの設定の記載を終わります。


コメント