こんにちは。
マクニカでインテル® FPGA 製品の技術サポートをしている インテル・F・ハナコ です。
最近よく耳にする “クラウド・コンピューティング(通称クラウド)” に、インテル® FPGA 開発ソフトウェア Quartus® Prime を構築してみた、その続き[#2]です。
クラウドで FPGA 開発ツールQuartus® Prime を動かしてみた [#1/2] で、VNC サーバーと XRDP の起動が確認できたので、続いてローカルマシンからクラウド上の仮想マシンへ RDP 接続します。
ローカルマシンから RDP 接続
Windows OS の “リモートデスクトップ接続” を起動し、コンピュータ名にグローバル IP を入力して接続します。
XRDP のログイン画面が表示されるので、以下の情報を選択および入力してログインします。
パスワードはクラウドで FPGA 開発ツール Quartus® Prime を動かしてみた[#1]の5で設定したパスワードを入力します。
ほら♪ クラウド上の Linux にログインできました!!!
Quartus® Prime Lite Edition をダウンロード&インストール
クラウド上の仮想マシンにおいて、通常どおり WEB ブラウザからダウンロードします。
あるいは Linux のターミナルや Tera Term でコマンドにより Quartus® Prime Lite Edition をダウンロードします。
最近では Lite Edition と言ってもファイルサイズが大きいので、無事にダウンロードできたかを MD5チェックサム照合することをオススメします。
インストール作業は通常通り。
もちろん、この作業もターミナルや Tera Term で実行しても構いません。
ライセンスは Lite Edition なので不要です。
Quartus® Prime Lite Edition でコンパイル
Quartus® Prime を起動します。作業はローカルで行う通常のフローと同様です。
FPGA / CPLD の一般的な開発フロー
クラウド上の仮想マシンからプログラミング
デザインを作成後、コンパイルが完了し、プログラミング用ファイル(.sof/.pof)が生成できました。
このファイルを手元にある(つまり、ローカルマシンに接続されている) FPGA の評価ボードにダウンロードします。
考えられるプログラミング手法は2つ。
A : 仮想マシンから sof/pof をローカルマシンに転送して、ローカルマシンの Programmerで書き込む
B : 仮想マシンとローカルマシンを VPN 接続して、仮想マシンの Programmer から書き込む
簡単な方法は、方法A: 仮想マシンから sof/pof をローカルマシンに転送して、ローカルマシンの Programmerで書き込む方法です。
ファイルの転送も、クラウドのストレージ・サービスの利用や、Tera Term による SSH 接続(SCP 機能)で可能です。
ファイルの共有方法はどうであれ、プログラミング・ファイルをローカルに保存できれば、あとはローカルマシン上の Quartus® Prime Programmer を起動して書き込むだけです。
ハナコのつぶやき
「RDP 接続できていれば、コピペでローカルマシンにファイルを持って来れますよ。」
そして今回ご紹介する方法は、B♪
仮想マシンとローカルマシンを VPN 接続して、仮想マシンの Programmer から書き込む方法です。
仮想マシンとローカルマシンを VPN(Virtual Private Network)で接続します。
今回は費用をかけたくなかったのでソフトウェア VPN 環境を構築して、仮想マシンの Programmer 画面からリモートで書き込みました。
1. VPN サーバーと VPN クライアントをインストールおよび設定する
今回 VPN ソフトウェアに SoftEther VPN を利用しました。
仮想マシンには、SoftEther VPN Server と SoftEther VPN Client をセットアップします。
ローカルマシンには、SoftEther VPN Client をセットアップします。
各ソフトウェアは SoftEther VPN ダウンロードセンター で入手できます。
ハナコのちょこっとポイント♪
ローカルマシン側に、VPN サーバーを GUI でコントロールできる SoftEther VPN サーバー管理マネージャ(SoftEther VPN Server Manager for Windows) も追加セットアップしておくと、VPN サーバーの設定や操作が簡易的にできますのでオススメです。
各セットアップにおける作業内容は以下のとおりです。
- 仮想マシンに SoftEther VPN Server をインストールする
- 仮想マシンに SoftEther VPN Client をインストール&初期設定する
- ローカルマシンに SoftEther VPN Server Manager for Windows をインストールし、仮想マシンの SoftEther VPN Server の初期設定する
- ローカルマシンに SoftEther VPN Client をインストール&初期設定する
これらの操作手順や説明は割愛します。(すみません、弊社の取扱製品ではないもので。)
詳細は、SoftEther VPN マニュアルなどをご参考ください。
2. VPN 接続する
ローカルマシン上にインストールした SoftEther VPN Server Manager を使い、仮想マシン上の SoftEther VPN Server を起動します。
起動を確認できたら、続いて SoftEther VPN Client を起動します。まずは簡単なローカルマシン側から。
(Windows なので GUI マネージャがあるので簡単に起動できて、VPN サーバーに接続できます。)
VPN サーバーに接続できたことを確認したら、次は仮想マシン側の SoftEther VPN Client を起動し、VPN サーバーに接続します。Linux のターミナル、あるいは Tera Term で VPN クライアントのインストール・フォルダへ移動し、コマンドを実行して起動します。
# ./vpnclient start
以下のコマンドで SoftEther VPN コマンドライン入力モードに移行し、“2. Management of VPN Client” を選択します。
# ./vpncmd
接続先のホスト名または IP アドレスに “localhost” を指定し接続します。
あらかじめ作成しておいた接続設定を指定し、VPN サーバーへ接続を開始します。
AccountConnect <接続設定名>;
「The command completed successfully.」のメッセージが確認できれば接続完了です。exit コマンドで SoftEther VPN コマンドライン入力モードから抜けます。
次に ifconfig や ip コマンドで VPN 接続に使用する仮想ネットワークの IP アドレスを確認します。
最後に ping コマンドで VPN クライアント間の開通を確認できれば作業完了です。
ハナコのつぶやき
今回実行しようとしている Programmer のリモート操作において、ping の開通は相互間でなくても大丈夫。最低限クラウド上の仮想マシン側からローカルマシンに向けて開通していれば OK です。
3. 仮想マシンの Quartus® Prime の Programmer でデバイスをプログラミングする
ここで一番の課題は、ローカルマシンに接続されている USB-Blaster™ II ダウンロード・ケーブルが、仮想マシン上の Programmer の Hardware Setup 画面に表示(認識)されるかどうかです。
でも、以下の方法を応用すればできちゃいます!
Quartus® Prime の Programmer をリモート操作してデバイスをプログラミングしてみた
なお、上記の記事に登場する「ローカル」「リモート」と、本記事に登場する各マシンの関係性は以下のとおりです。
どちらの記事も “ローカル” が出てきますので、混乱しないでくださいね。
- 「ローカル」 → クラウド上の仮想マシン
- 「リモート」 → ローカルマシン
Quartus® Prime の Programmer をリモート操作してデバイスをプログラミングしてみたの手順を、「リモートの設定」まで終わったら、通常ローカルマシンで操作しているとき同様に、クラウド上の Quartus® Prime Programmer を起動します。
Hardware Setup 画面を表示し、JTAG Settings タブにおいて、Add Server ボタンをクリック。
“ローカルマシンの IP アドレス” と “パスワード” を入力します。
ローカルマシンの USB-Blaster™ II と無事に接続されれば Connection Status (JTAG Settings タブ)に OK が表示され、Hardware Settings タブ内の Currently selected hardware: のプルダウンリストにローカルマシン上の USB-Blaster™ II が選択できるようになります。
書き込み完了
Programmer の Progress バーが “100%(Successful)” になり、Message ウィンドウに “Successfully performedoperation(s)” の表示を確認したので、プログラミング完了です。
手元にあるボードを見てみると…、
無事に書き込みができているのが確認できました!
ハナコのつぶやき
今回は MAX® 10 に対して、.sof ファイル(CRAM)を書き込む場合と .pof ファイル(CFM)を書き込む場合を試しました。
.sof ファイルは比較的スムーズにストレスなく書き込みできましたが、.pof ファイルはかなり時間がかかりました。
クラウドからのデータを書き込みは、ローカルで書き込む時間と比較して、その差はなんと 20倍※ もありました。
(※もちろんデバイスの容量やインターネット通信環境によります。)
ハナコの結論
クラウドの開発環境において FPGA に書き込みをする場合は、デバッグ(.sof)時に限る!
pof ファイルはローカルマシンで書き込もう。
(もちろん手法 A のように、ローカルマシンに sof/pof を転送した方が断然快適ですけどね。)
今回は、クラウドで FPGA 開発環境が構築できることをご紹介しました。
クラウドを使用しないときは仮想マシンを停止することができるので、その間コストがかかることがありません。
Quartus® Prime を使用する頻度や期間が少ない人や、Quartus® Prime を使用できる高スペックのパソコンを用意したくない人、逆に 今使用しているパソコンよりもハイスペックなパソコンを一時的に使用したい人など、理由は色々かもしれませんが、これからの FPGA 開発環境には「クラウド」と言う選択肢もあると思いますよ。
私は今回無料利用枠で作業しているので、メモリ不足で GUI 操作にはあまり向いていませんでした。
バックグラウンドで VNC や XRDP も稼働中ですし、グラフィックはやはりメモリを使いますからね。
WEB ブラウザでのダウンロードやウィザード(GUI)でインストールも若干ストレスでしたが、Quartus® Prime 自体の GUI が非常に重く、ストレス溜まりまくりでした。
そのため、作業を Linux のターミナルや Tera Term 上で行うことも多かったです。
コンパイル実行もメモリ不足によるエラーが発生することがありました。
今回、ターゲット・デバイスの最小メモリサイズは既定値を満たしていますが、GUI を使ってしまうとその容量ではやっぱり足りないようです。
ちなみに、SSH 接続(Tera Term)でコマンドによるコンパイル実行は問題なく Successful し、スムーズでした。
この記事を参考に FPGA 開発環境をクラウド化して GUI で操作する人は、それなりのメモリ容量を選択されると良いと思います。
(メモリ容量を大きくすると課金枠になると思いますので、あらかじめプロバイダのホームページでご確認ください。)
おすすめ記事/資料はこちら
クラウドサーバーで FPGA 開発ツール Quartus Prime を動かしてみた [#1/2]
FPGA ではじめてのLチカ!
Quartus® Prime の Programmer をリモート操作してデバイスをプログラミングしてみた