
こんにちは。
マクニカでインテル® FPGA 製品の技術サポートをしている インテル・F・ハナコ です。
最近よく耳にする “クラウド・コンピューティング(通称クラウド)”。
今回はここに、インテル FPGA 開発ソフトウェア Quartus® Prime を構築してみました。
クラウドに 64bit の OS をインストールして仮想マシン(インスタンス)を作ります。
今回はライセンスが不要な Quartus Prime Lite Edition を使用。
ツールのインストールに始まり、デザイン設計、コンパイル、そして開発ボードへのプログラミングまで、FPGA 開発を一通りやってみました。
なお、クラウドサーバーによる FPGA 開発はご自分の責任の下で作業を行うようお願い致します。
また、クラウドにおけるセキュリティ対策に関しては、各利用者および各クラウドサービスの環境で対策を講じてください。
[関連情報] インテル PSG がクラウドで FPGA 開発環境の提供を本格スタート!

今回検証で利用した環境
- A 社のクラウド・コンピューティング・サービス(無料利用枠)を利用
- 仮想マシン(on クラウド)のオペレーティング・サービスは Red Hat Enterprise Linux 64bit
私がローカルで作業する OS が Windows なので本当は 簡単に RDP で接続できる Windows にしたいところですが、無料枠内での検証なので、ストレージ容量を節約するために Linux にしました。
- 無料利用枠のメモリ容量は 1GB
Quartus Prime Lite Edition がサポートするデバイス・ファミリで、かつ 開発に必要な推奨物理メモリが 1GB 以下のラインナップを下記の表にまとめました。(2017年3月現在)
Cyclone V は少なくとも6GB以上は必要なので、無料利用枠では残念ながら開発できず断念。
ちなみに Quartus Prime を GUI 操作するのであれば、この提示されたメモリ以上の容量は必要です。(メモリ不足は動きがカクカクしたりフリーズしちゃいます。)
なお開発するデバイスに必要な物理メモリの推奨サイズの情報は、下記資料の Memory Recommendations セクションを参照ください。
Quartus Prime Standard Edition Software and Device Support Release Notes
ファミリ | デバイス |
Cyclone® IV E | EP4CE6, EP4CE10, EP4CE15, EP4CE22, EP4CE30, EP4CE40, EP4CE55, EP4CE75 |
Cyclone IV GX | EP4CGX15, EP4CGX22, EP4CGX30 |
MAX® 10 | 10M02, 10M04, 10M08 |
MAX V / MAX II | ALL |
- Odyssey MAX 10 FPGA Eval Kit を使用
MAX 10 FPGA(10M08)が搭載
クラウド上に仮想マシンを作成
A社のクラウド・コンピューティング・サービスは、ウェブベースで操作を行い管理するタイプです。
ユーザー登録を行い、ログインして作業開始!

まずインスタンス作成です。
ウィザード形式でOSの選択やディスク容量、メモリサイズを指定します。(私は無料利用枠に指定された各項目を選択しました。)
これで仮想マシンは完成です。ものの5分でできちゃいました。
その際、仮想マシンに外部からアクセスするためのセキュリティ設定(TCP ポートの開放)をしておきましょう。
例えば
- サーバーと SSH 接続するためには 22ポート
- UI 作業をリモートデスクトップ(RDP 接続)するためには 3389ポート
などがあります。
また、仮想マシンから(ローカルのパソコンに接続された)ボードにプログラミングを行う場合には、ping 応答が必要なので ICPM プロトコルにも許可が必要です。
Windows からクラウド上の Linux にリモートデスクトップ接続させる環境を構築
ローカルの Windows からクラウド上の仮想マシン(Linux)に接続しアプリケーションを操作するのは、やっぱりGUIがいいね! と言うことで、GUI 操作するための環境を構築します。
Windows 同士の場合にはリモートデスクトップ接続が簡単に行え、GUI 操作環境が簡単に構築できます。
でも今回、ローカルは Windows、クラウド上の仮想マシンは Linux なので、VNC サーバー と XRDP を利用して GUI 操作環境を構築します。
VNC サーバーと XRDP をクラウド上の Linux にインストールし設定するには、まずはクラウド上の Linux に SSH で接続します。
1. SSH クライアントソフトで仮想マシンに SSH 接続する
Windows からクラウド上の Linux に対して SSH 接続するには、SSH クライアントソフト(例えばTera Term や putty など)をインストールする必要があります。今回は Tera Term を利用しました。
クラウドで仮想マシンを作成すると、グローバル IP が発行されます。その IP アドレスを Tera Term に設定して接続してください。

SSH認証画面が表示されます。
ここで SSH 接続のログイン作業を行いますが、各クラウドのプロバイダによって SSH 接続のログイン方法が異なります。
詳細はご利用になるプロバイダのホームページをご覧ください。
なお、私の利用した A 社の場合は、Linux インスタンスに用意された [ユーザ名] を入力し、あらかじめ作成した [秘密鍵] を指定して、ログインします。

2. VNC サーバーと XRDP をインストールし、VNCサーバーの初期設定をする
ローカルの Windows にインストールされている “リモートデスクトップ接続” を利用して、クラウド上のLinux を遠隔で かつ GUI 操作するために XRDP と VNC サーバー(今回は TigerVNC サーバーを利用)をインストールします。
# yum -y install xrdp tigervnc-server
その後、VNC サービスの初期設定(ユーザー名、画面サイズ、パスワード設定など)を行います。
まず、VNCサーバーの設定ファイルをコピーします。
# cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
コピー作成したファイルに対して編集します。
# vi /etc/systemd/system/vncserver@:1.service
<USER> をクラウドのユーザーアカウント名に編集し、必要に応じて画面サイズ(-geometry)を設定します。

保存後、変更内容を反映させます。
# systemctl daemon-reload
VNC接続する際のパスワードを設定します。(設定はしますがログイン時は使用しません)
まずは root のパスワード。
# vncpasswd
root 以外にユーザーも必要な場合には、
# vncpasswd <user_name>;
で VNC パスワードを追加設定してください。
続いて XRDP の初期設定を変更します。
元の color 設定では XRDP 接続のログイン時にエラーになるため、32bit から 24bit に変更しておきます。
# vi /etc/xrdp/xrdp.ini
max_bpp=32 を max_bpp=24 へ変更し、保存します。
3. デスクトップ環境をインストールする
Linux へリモートデスクトップ接続でログインした際に GUI 操作するため、デスクトップ環境をインストールします。
# yum groupinstall graphical-server-environment
システム起動時の動作モード(デフォルト)が GUI で起動するように設定します。
# systemctl set-default graphical.target
4. ファイアウォールの無効化、SELinux の無効化
クラウドのインスタンス(仮想マシン)としてセキュリティ(仮想ファイアウォール)設定がされているため、Linux としてのファイアウォールは無効化しました。(これがネックになって接続できないのも困るので...)
ファイアウォールを停止させ、
ファイアウォールの自動起動を無効化します。
# systemctl stop firewalld
# systemctl disable firewalld
以下のコマンドでステータスを確認します。
# systemctl status firewalld

また、XRDP の起動に失敗する可能性があるため、SELinux を無効にしました。コレ、ハナコのちょこっとポイントです♪
SELinux を無効にするため、設定ファイルを編集し、
# vi /etc/selinux/config
SELINUX=enforcing を SELINUX=disabled に変更します。

保存後、変更をすぐに反映させます。
# systemctl daemon-reload
システムを再起動後、SELinux のステータスをチェックし、無効(Disabled)になっていることを確認します。
# getenforce
Disabled
5. 仮想マシンにパスワードを設定する
クラウド上の仮想マシンにリモートデスクトップ接続をするときに、このユーザー名とパスワードを使用してログインします。
まずは root のパスワードを設定。
# passwd
もし、ユーザーアカウントを使用する場合は
# passwd <user_name>;
6. VNC サーバーと XRDP を起動する
VNC サーバーの自動起動設定をします。
# systemctl enable vncserver@:1.service
VNC サーバーを起動します。
# systemctl start vncserver@:1.service
VNC サーバーが起動したかステータスを確認します。
# systemctl status vncserver@:1.service
続いて XRDP の自動起動設定をします。
# systemctl enable xrdp.service
XRDP を起動します。
# systemctl start xrdp.service
XRDP が起動したかステータスを確認します。
# systemctl status xrdp.service
VNC サーバーと XRDP の起動が確認できたら、Tera Term の作業は終了です。
続いて、ローカルからクラウドマシンへ RDP 接続します。
クラウドサーバーで FPGA 開発ツール Quartus Prime を動かしてみた [#2/2]

近年、インテルの FPGA、CPLD の開発環境を構築しようとすると、開発ソフトウェアの Quartus® Prime を使用するために、そこそこハイスペックなパソコンを用意しなければなりません。その必要条件の一つは、CPU が64bitタイプでなければならないこと!
2017年現在、32bit マシン環境には Quartus® Prime をインストールできないんです。
メモリ不足やディスク容量不足なら、増設してどうにか…、とできますが、CPU はそうはいきません。
適したスペックのパソコンが手元に無いけれども ”FPGA でちょっと遊んでみたい” と言うユーザーには、“CPU の壁”が立ちはだかるわけです。
もっと多くのユーザーに気軽に Quartus® Prime を使ってほしい!そんな想いで今回クラウドに Quartus® Prime Lite Edition をインストールしてみました。
おすすめ記事/資料はこちら
ほんとのほんとの導入編: その1. 開発をはじめるための環境づくり
Quartus - サポート Windows OS 対応表
Quartus - サポート・デバイス 対応表
あるいは別の見方をすれば、Stratix® 10 や Arria® 10 などをコンパイルできるハイスペックマシンを用意する際に、物理的なパソコンを購入するのではなくクラウドの仮想マシンを検討する、と言う選択肢も今後はあると思います。
何かの参考になれば幸いです。

おすすめ記事/資料はこちら
クラウドサーバーで FPGA 開発ツールQuartus Prime を動かしてみた [#2/2]
FPGA ではじめてのLチカ!
ほんとのほんとの導入編: その1. 開発をはじめるための環境づくり
Quartus - サポート Windows OS 対応表
Quartus - サポート・デバイス 対応表