Altera Design Software
altera.co.jp Design Software - FPGA Design より:
- Quartus® Prime 開発ソフトウェアは、FPGA、CPLD、そして SoC デザインのすべてのフェーズに対して完全なマルチプラットフォーム・デザイン環境を提供するとともに、FPGA、CPLD、および SoC に対し最高の性能および設計生産性を提供します。
この記事では Altera の以下のソフトウェアをダウンロード・インストール・設定する方法を説明します:
- Quartus Prime Standard Edition
- USB-Blaster (I と II) Download Cable Driver
- ModelSim-Altera Edition (Quartus Prime Standard Edition に同梱)
目次
Quartus Prime Standard Edition
AUR でインストール
最新版の Quartus Prime と Modelsim は quartus-freeAUR パッケージでインストールできます。
Quartus Prime を起動するには quartus
を実行してください。
(USB-Blaster を使って) FPGA をプログラムするにはユーザーを plugdev
グループに追加する必要があります。
手動インストール
以下の手順で Arch Linux に Altera Quartus Prime Standard Edition v15.1 をダウンロード・インストール・設定することができます。
Quartus Prime は Altera の FPGA/CPLD 製品などを設計・操作するための Altera の開発ソフトウェアコレクションです。
64ビット環境の Arch Linux を対象にしていますが、32ビットのアプリケーションも問題なく動作するはずです。
Quartus Prime Standard Edition v15.1 は 公式で RHEL 5 と RHEL 6 をサポートしていますが、ディストリビューションとはあまり関係がない大量のプロプライエタリソフトウェアの中の一つなので、Arch Linux にインストールするのはとても簡単です。
Quartus Prime の入手
Altera のダウンロードセクション を開いて、オペレーティングシステムで Linux を選択し、一式ファイルの tar アーカイブ (例: Quartus-15.1.2.193-linux-complete.tar
) を入手してください。
依存パッケージのインストール
メインの Quartus Prime ソフトウェアは64ビットですが、Quartus Prime に付属している Altera ツールの多くは32ビットソフトウェアです。例えば Nios II EDS や Qsys などがそれにあたります。したがって、Arch Linux の Multilib リポジトリから lib32-
ライブラリやプログラムを大量にインストールする必要があります。もちろん、32ビットの Arch Linux を使っている場合、Multilib バージョンは必要ありません。
pacman を使って Multilib のパッケージをインストールするには、まず multilib リポジトリを有効化する必要があります。
以下に記述した必要なパッケージは Altera Software Installation and Licensing (sect. 1-4) から引用しています。
まず必要なパッケージのネイティブバージョンをインストールしてください: expat fontconfig freetype2 xorg-fonts-type1 glibc gtk2 libcanberra libpng libpng12 libice libsm util-linux ncurses tcl tcllibAUR zlib libx11 libxau libxdmcp libxext libxft libxrender libxt libxtst。
そして Multilib バージョンをインストールしてください: lib32-expat lib32-fontconfig lib32-freetype2 lib32-glibc lib32-gtk2 lib32-libcanberra lib32-libpng lib32-libpng12 lib32-libice lib32-libsm lib32-util-linux lib32-ncurses lib32-zlib lib32-libx11 lib32-libxau lib32-libxdmcp lib32-libxext lib32-libxft lib32-libxrender lib32-libxt lib32-libxtst。
これで Quartus Prime をインストール・起動する準備が整いました。
インストール
インストールするには、先にダウンロードした tar アーカイブを展開します:
$ tar -xvf Quartus-15.1.2.193-linux-complete.tar
そして setup.sh
を起動してください。ホームディレクトリの外に Quartus Prime をインストールするときは、root で実行してください:
# ./setup.sh
上述のパッケージが全てインストールされていれば、GUI のインストールウィザードが開きます。コマンドラインのインタラクティブなインストールウィザードが開くかもしれませんが、どちらも同じです。
デフォルトのインストールパスは /root/altera/15.1
ですが、/opt/altera/15.1
の方が好ましいでしょう。この記事では後者を用います。
インストール時 Quartus Prime の64ビットオプションを含めるようにしてください。
Quartus Prime の起動
/opt/altera/15.1
に Quartus Prime をインストールしたら、Quartus Prime のバイナリは /opt/altera/15.1/quartus/bin
に配置されます。Quartus Prime (64ビット版) を起動:
$ /opt/altera/15.1/quartus/bin/quartus --64bit
32ビット版を起動:
$ /opt/altera/15.1/quartus/bin/quartus
Qsys, Nios II EDS, Chip Planner, SignalTap II などの他の Altera ツールは Quartus Prime の Tools メニューから起動できます。何も問題ありません。
Quartus Prime とシステムの統合
以下の方法で Quartus Prime とシステムを統合させることができますが、必須ではありません。
PATH
変数
Quartus の bin
フォルダを PATH
変数に追加することで絶対パスを指定しなくても起動できるようになります。/etc/profile.d
ディレクトリに quartus.sh
ファイルを作成してください:
/etc/profile.d/quartus.sh
export PATH=$PATH:/opt/altera/15.1/quartus/bin
また、実行可能属性を付与してください:
# chmod +x /etc/profile.d/quartus.sh
上記の profile.d
ファイルはログイン時にロードされます。以下のように Bash でファイルを source することで即時適用できます:
$ source /etc/profile.d/quartus.sh
Quartus に関連する他の環境変数は 公式のインストールマニュアル に載っています。
quartus
コマンドが Bash から認識されるようになりますが、64ビット版を起動するには依然として --64bit
引数を付ける必要があります。何回もタイピングするのが面倒なときは quartus64
のようにシェルのエイリアスを設定すると良いでしょう。
アプリケーションメニューエントリ - Quartus Prime
~/.local/share/applications
に quartus.desktop
ファイルを作成することでシステムに (多くのデスクトップ環境やウィンドウマネージャが準拠している) freedesktop.org のアプリケーションメニューエントリを追加できます:
~/.local/share/applications/quartus.desktop
[Desktop Entry] Version=1.0 Name=Quartus Prime Standard Edition v15.1 Comment=Quartus Prime design software for Altera FPGA's Exec=/opt/altera/15.1/quartus/bin/quartus --64bit Icon=/opt/altera/15.1/quartus/adm/quartusii.png Terminal=false Type=Application Categories=Development
USB-Blaster Download Cable Driver
USB-Blaster (I と II) Download Cable はコンピュータから FPGA, CPLD, EEPROM 設定デバイスに設定データをダウンロードするケーブルです。しかしながら Altera は RHEL, SUSE Entreprise, CentOS しか公式にサポートしていないため Arch Linux でも使えるようにするために多少の設定が必要になります。このケーブルに関する詳細は USB-Blaster Download Cable User Guide を参照してください。
新しい udev ルールを作成:
/etc/udev/rules.d/51-altera-usb-blaster.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666" SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666" SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666" SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666" SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="0666"
それから、udevadm
を使ってファイルをリロードします (このコマンドを実行する前に USB 端子から Altera デバイスを切断してください):
# udevadm control --reload
全てが問題ないか確認するために、USB-Blaster Download Cable を使って FPGA や CPLD ボードを接続して次のコマンドを実行:
$ /opt/altera/15.1/quartus/bin/jtagconfig
以下のような出力がされるはずです:
1) USB-Blaster [USB 1-1.1] 020B30DD EP2C15/20
jtagconfig の出力にボードの名前が含まれていない場合、nios2 ツールの起動に問題が発生している可能性があります。この問題を回避するために、/etc/jtagd
に jtagd の設定をコピーしてください:
# mkdir /etc/jtagd # cp /opt/altera/15.1/quartus/linux/pgm_parts.txt /etc/jtagd/jtagd.pgm_parts
それから jtagd を再起動します:
$ jtagconfig 1) USB-Blaster [2-4] 020F30DD $ killall jtagd $ jtagd $ jtagconfig 1) USB-Blaster [2-4] 020F30DD EP3C25/EP4CE22
Quartus Prime の64ビット版をインストールしていないのに "linux64" に関するエラーメッセージが表示される場合、/opt/altera/15.1/quartus
に linux
から linux64
へのシンボリックリンクを作成してください:
# ln -s /opt/altera/15.1/quartus/linux /opt/altera/15.1/quartus/linux64
Standard Edition ライセンスの確認
Quartus Prime の設定インターフェイスから Quartus Prime Standard Edition のライセンスファイルのパスを設定するだけではライセンスの確認は正しく行われません。ライセンスの確認ではデバイス eth0
の MAC アドレスが調べられます。このデバイス名はイーサネットコントローラの古い名前で、現在は起動時に systemd
によって動的にデバイスに (マシンによって異なる) 名前が割り当てられます。デバイスの名前を確認で使われる eth0
に戻す必要があります。
新しい udev ルールを作成:
/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
xx:xx:xx:xx:xx:xx
はネットワークデバイスの IP アドレスに置き換えてください。作成後、udevadm
を使ってファイルをリロードします:
# udevadm control --reload
もしくは systemd-networkd
デーモンを使って起動時に動的にダミーの eth0
ネットワークインターフェイスを作ることもできます。/etc/systemd/network/
ディレクトリに 25-dummy.netdev
ファイルを作成:
/etc/systemd/network/25-dummy.netdev
[Match] Host=hostname [NetDev] Name=eth0 Kind=dummy MACAddress=xx:xx:xx:xx:xx:xx
xx:xx:xx:xx:xx:xx
はライセンスを受けたネットワークデバイスの MAC アドレスに置き換えて hostname
はマシンのホストネームに置き換えてください。最後に systemd-networkd
サービスを起動・有効化します:
# systemctl enable systemd-networkd.service # systemctl start systemd-networkd.service
また、Quartus Prime Standard Edition のライセンスの確認作業では Quartus Prime のライセンスごとにネットワークデバイスの MAC アドレスを確認するため、旧式のネットワークツールである ifconfig
を使用します。ifconfig
ツールは昔のネットワークパッケージ net-tools に入っています。Quartus Prime Standard Edition のライセンスの確認を正しく行わせるため net-tools パッケージをインストールしてください。
トラブルシューティング
Quartus に空のウィンドウが表示される (XMonad)
Quartus の ip エディタや qsys などが表示されないことがあります。この問題を回避するにはウィンドウマネージャによって報告される名前を変更します。例えば: LG3D
。XMonad によって報告される名前を変更する方法は ドキュメント を見てください。
USB Blaster が動作しない
まずは以下のコマンドを実行してください:
$ /opt/altera/quartus/bin/jtagconfig
出力に応じて対応を行ってください:
JTAG chain broken
1) USB-Blaster [3-2] Unable to read device chain - JTAG chain broken
libudev の32ビット版がインストールされていないことが原因です。lib32-libudev0-shim をインストールしてください (ソース)。
Error when scanning hardware - Server error
Connecting to server(s) [........ ] Error when scanning hardware - Server error
/etc/jtagd.conf
または $HOME/.jtagd.conf
を編集して以下の行を記述してください (どちらを編集するかは jtagd を root で実行しているのか、あるいは非特権ユーザーで実行しているのかによります):
Password = "changeme";
そしてサーバーを追加してください:
$ /opt/altera/quartus/bin/jtagconfig --addserver 127.0.0.1 changeme
問題が解決しない場合、jtagd
を再起動してみてください:
# sudo killall -9 jtagd $ /opt/altera/quartus/bin/jtagd
ModelSim-Altera Edition
インストール
ModelSim-Altera Edition は上で書いた Quartus Prime のインストールで使用する一式ファイルの tar アーカイブ Quartus-15.1.2.193-linux-complete.tar
からダウンロード・インストールされます。
Archlinux との互換性
カーネル 4.x 以上
Modelsim は Linux カーネルのバージョン4以上で問題が起こります。vsim
スクリプトを編集して対応して下さい。このファイルは読み取り専用になっていることがあり、そのときは書き込み権限を一時的に付与してから以下の変更を行って下さい:
以下の行を (206行目):
/opt/altera/15.1/modelsim_ae/vco
*) vco="linux_rh60" ;;
以下のように変更します:
/opt/altera/15.1/modelsim_ae/vco
*) vco="linux" ;;
freetype2 2.5.0.1-1
freetype2 バージョン 2.5.0.1-1 から 2.5.0.1-2 にアップグレード (2013年10月 [1]) すると ModelSim で以下のエラーが発生します:
$ vsim Error in startup script: Initialization problem, exiting. Initialization problem, exiting. Initialization problem, exiting. while executing "EnvHistory::Reset" (procedure "PropertiesInit" line 3) invoked from within "PropertiesInit" invoked from within "ncFyP12 -+" (file "/opt/questasim/linux_x86_64/../tcl/vsim/vsim" line 1) ** Fatal: Read failure in vlm process (0,0)
同じ問題で以下のようなメッセージも表示されます:
$ vsim Error in startup script: Initialization problem, exiting. Initialization problem, exiting. while executing "InitializeINIFile quietly" invoked from within "ncFyP12 -+" (file "/mtitcl/vsim/vsim" line 1) ** Fatal: Read failure in vlm process (0,0)
この問題を解決する方法は2つあります。1つはパッケージをダウングレードすることです (Arch Linux Archive を使用)。32ビット版を使っている場合、lib32-freetype2 をダウングレードしてください。もう1つはもっと簡潔な方法で、システム全体のアップデートを止めないで、代わりに ModelSim の freetype のバージョンだけを古いものに置き換えます (元は http://communities.mentor.com/mgcx/message/46770 で提案された方法です):
- altera のフォルダ (例:
$HOME/altera/xx.x/lib32/
) にある lib32-freetype2 2.5.0.1-1 ライブラリやシンボリックリンクをコピー:
libfreetype.so libfreetype.so.6 libfreetype.so.6.10.2
/opt/altera/15.1/modelsim_ae/vco
の ModelSim スクリプトを編集して上の方に以下を追加 (dir=`dirname "$arg0"`
の後):
export LD_LIBRARY_PATH=${dir}/../lib32
Quartus から直接 ModelSim を起動するとエラーが消えない場合があります。そのときは、同じ行を quartus/bin/quartus_sh
に追加してください。
ncurses 5.9
ncurses バージョン 5.9-7 から 6.0-1 (以上) にアップグレード (2015年9月 [2]) すると ModelSim で以下のエラーが発生します:
$ vsim vish: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory [1] + exit 127 vsim
この問題を解決する方法は2つあります。1つは ncurses5-compat-libsAUR を使用してライブラリの32ビット版をコンパイルするように PKGBUILD を修正する方法です (もしくは lib32-ncurses5-compat-libsAUR を使う)。この方法では最新版の ncurses で ncurses5 互換の ABI を提供します。
もう1つの方法は ncurses 5.9 のソースをダウンロード・コンパイルして、生成されたライブラリとシンボリックリンクを freetype2 ライブラリと同じディレクトリにコピーすることです。
GCC 5.x で ncurses 5.9 をコンパイルすると問題が起こることがあります。Arch Linux Archive を使うことでコンパイル済みのライブラリを入手できます。パッケージは http://ala.seblu.net/packages/l/lib32-ncurses/ にあります。
lib32-glibc 2.23-1
lib32-glibc バージョン 2.23-1 からアップグレードすると FlexLM が破壊され ModelSim がライセンスを確認できなくなります。lib32-glibc-2.23-1 のアーカイブ をダウンロードして ${HOME}/altera/xx.x/lib32/glibc223-1
などのディレクトリに展開してください。そして LD_LIBRARY_PATH
環境変数を /opt/altera/xx.x/modelsim_ae/vco
スクリプトの一番上に作成・編集して新しい glibc223-1/usr/lib32
ディレクトリが検索されるようにしてください:
export LD_LIBRARY_PATH=${HOME}/altera/xx.x/lib32;${HOME}/altera/xx.x/lib32/glibc223-1/usr/lib32
詳しくは https://bbs.archlinux.org/viewtopic.php?id=212531 を見てください。
アプリケーションメニューエントリ - ModelSim-Altera Edition
~/.local/share/applications
ディレクトリに modelsim.desktop
ファイルを作成することで、システムのアプリケーションメニューに Modelsim を追加できます:
~/.local/share/applications/modelsim.desktop
[Desktop Entry] Version=1.0 Name=ModelSim-Altera Edition Comment=ModelSim simulation software for Altera FPGA's Exec=/opt/altera/15.1/modelsim_ae/bin/vsim Icon=/opt/altera/15.1/modelsim_ae/modesim.gif Terminal=true Type=Application Categories=Development
トラブルシューティング
"ModelSim Failed to access library 'work'" エラーの解決
解決方法は次のページに載っています: http://jackeyblog.blogspot.com/2005/07/note-myself-modelsim-failed-to-access.html
新しいディレクトリでシミュレーションを実行したときに、以下のエラーが表示される場合:
Error: (vcom-19) Failed to access library 'work' at "work".
新しい work
ディレクトリを作成してください。ModelSim コンソールで以下を実行します:
ModelSim> vlib work
"Error: couldn't open socket: host is unreachable" というエラーでクラッシュする
シミュレーションを開始しようとしたときに以下のエラーで ModelSilm がクラッシュする場合:
Error: couldn't open socket: host is unreachable Trouble making server.
/etc/hosts
ファイルに localhost
のエントリを追加してください:
/etc/hosts
#<ip-address> <hostname.domain.org> <hostname> ... 127.0.0.1 localhost yourhostname