Altera Design Software

提供: ArchWiki
ナビゲーションに移動 検索に移動

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 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/applicationsquartus.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/quartuslinux から 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 Starter Edition ではインストールパスとして /opt/altera/15.1/modelsim_ase/ が使われ ModelSim Subscription Edition ではインストールパスとして /opt/altera/15.1/modelsim_ae/ が使われます。以下では ModelSim Subcription Edition を使う場合を想定しています。

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 スクリプトに書き込み権限を付与する必要があります。

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