インストール - Xilinx ISE

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

ここでは、SUSEにXilinx ISEをインストールする手順を記載する。
Xilinx ISEのインストールは簡単であるが、Platform USB Cable IIおよびCable IVのドライバのインストールは複雑である。

他のLinuxディストリビューションや他のISE / Vivadoのバージョンも、このページに沿ってインストールできる場合がある。
Xinlix ISEの使用方法、ライセンスの管理方法、HDLの記述方法については説明しない。


依存関係のライブラリのインストール

以下の依存関係のライブラリをインストールする。

sudo zypper install libncurses5



Xilinx ISEのインストール

スーパーユーザになり、Xilinx ISEが存在するメディアに移動して、以下のコマンドを実行する。

su
./xsetup


インストール画面が起動するので、画面の指示に従ってインストールを行う。
Platform USB Cable IIのドライバのインストールを求められたら、ドライバのインストールを選択する。

Xilinx ISEに必要な環境変数について通知するメッセージは無視すること。
詳細は、以降のセクションにあるXilinx ISEの起動スクリプトの設定を参照すること。

また、以下に示す、インストール後に表示されるPlatform USBのドライバのインストールが失敗したというメッセージは無視する。
Platform USBのドライバのインストールおよび設定は、Xilinx ISEのインストール後に行う。

Driver installation failed.
Please check the /.xinstall/install.log file for more information on the cause of the installation failure.


Xilinx ISEのインストール完了後、以下のディレクトリにアクセスする。
(ここには、ファームウェアファイルが存在する)

cd /<Xilinx ISEのインストールディレクトリ>/14.7/ISE_DS/common/bin/lin64/


ファームウェアファイルを/usr/shareディレクトリにコピーする。

sudo cp *.hex /usr/share


xusbdfwu.rulesファイルを/etc/udev/rules.dディレクトリにコピーする。

sudo cp xusbdfwu.rules /etc/udev/rules.d/


/etc/udev/rules.d/xusbdfwu.rulesファイルを、以下のように編集(文字列の置き換え)する。

sudo vi /etc/udev/rules.d/xusbdfwu.rules


$TEMPNODE → $tempnode
BUS → SUBSYSTEMS
SYSFS → ATTRS


また、sedコマンドを実行して、文字列を置き換えすることもできる。
シェルスクリプトとして作成すると便利である。

sudo sed -i -e 's/$TEMPNODE/$tempnode/g' /etc/udev/rules.d/xusbdfwu.rules
sudo sed -i -e 's/BUS/SUBSYSTEMS/g' /etc/udev/rules.d/xusbdfwu.rules
sudo sed -i -e 's/SYSFS/ATTRS/g' /etc/udev/rules.d/xusbdfwu.rules


Xilinx ISE Setup 1.png


もしくは、以下に示すように編集する。

# /etc/udev/rules.d/xusbdfwu.rulesファイル

SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0007", RUN\+="/sbin/fxload -v -t fx2 -I /<Xilinx ISEのインストールディレクトリ>/<バージョン>/ISE_DS/ISE/bin/lin/xusbdfwu.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0009", RUN\+="/sbin/fxload -v -t fx2 -I /<Xilinx ISEのインストールディレクトリ>/<バージョン>/ISE_DS/ISE/bin/lin/xusb_xup.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000d", RUN\+="/sbin/fxload -v -t fx2 -I /<Xilinx ISEのインストールディレクトリ>/<バージョン>/ISE_DS/ISE/bin/lin/xusb_emb.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000f", RUN\+="/sbin/fxload -v -t fx2 -I /<Xilinx ISEのインストールディレクトリ>/<バージョン>/ISE_DS/ISE/bin/lin/xusb_xlp.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0013", RUN\+="/sbin/fxload -v -t fx2 -I /<Xilinx ISEのインストールディレクトリ>/<バージョン>/ISE_DS/ISE/bin/lin/xusb_xp2.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0015", RUN\+="/sbin/fxload -v -t fx2 -I /<Xilinx ISEのインストールディレクトリ>/<バージョン>/ISE_DS/ISE/bin/lin/xusb_xse.hex -D $tempnode"


sudo udevadm control --reload-rules


恐らく、次の設定は不要であるが、念の為に記載しておく。

cd /<Xilinx ISEのインストールディレクトリ>/14.7/ISE_DS/ISE/lib/lin64
sudo mv libstdc++.so libstdc++_org.so
sudo mv libstdc++.so.6 libstdc++_org.so.6
sudo mv libstdc++.so.6.0.8 libstdc++_org.so.6.0.8
sudo ln -s /usr/lib/libstdc++.so .
sudo ln -s libstdc++.so libstdc++.so.6
sudo ln -s libstdc++.so libstdc++.so.6.0.8
cd /<Xilinx ISEのインストールディレクトリ>/14.7/ISE_DS/common/lib/lin64/
sudo mv libstdc++.so libstdc++_org.so
sudo mv libstdc++.so.6 libstdc++_org.so.6
sudo mv libstdc++.so.6.0.8 libstdc++_org.so.6.0.8
sudo ln -s /usr/lib/libstdc++.so .
sudo ln -s libstdc++.so libstdc++.so.6
sudo ln -s libstdc++.so libstdc++.so.6.0.8



Platform Cable USB IIの設定

Platform Cable USB IIの動作確認

  1. Xinlix ISEが起動していないことを確認する。
    また、Platform Cable USB IIがLinuxホストに接続されていないことを確認する。
  2. Platform Cable USB IIの動作に必要な依存関係のライブラリをインストールする。
    sudo zypper install fxload make gcc libpng12-0 libusb-compat-devel

  3. 次に、/etc/udev/rules.d/libusb-driver.rulesファイルを作成する。
    sudo vi /etc/udev/rules.d/libusb-driver.rules
    # /etc/udev/rules.d/libusb-driver.rulesファイル
    ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03fd", MODE="666"

  4. 設定を反映させるため、PCを再起動する。
  5. 再起動後、PCにPlatform Cable USB IIを接続して、Platform Cable USB II本体のLEDが黄色に点灯するかどうか確認する。
    USB延長コードは電源に悪影響を与える可能性があるため、非推奨である。


LEDが黄色に点灯しない場合

Platform Cable USB IIのLEDが黄色に点灯しない場合は、以下のコマンドを実行する。

lsusb | grep Xilinx


Platform Cable USB IIへのファームウェアのアップロードが失敗した場合、次のような行が出力される。
これは、Platform Cable USB IIは認識されていることを示す。

Bus 005 Device 004: ID 03fd:0013 Xilinx, Inc. Platform Cable USB II


ファームウェアのアップロードが成功した場合、以下のように出力される。
ここで重要なのは、上記や下記の赤で記載した番号である。
下記の0008は、Platform Cable USB IIのファームウェアが正しく読み込まれたことを示している。

Bus 005 Device 004: ID 03fd:0008 Xilinx, Inc. Platform Cable USB II


LEDが点灯しない場合は、以下のコマンドを実行する。
この時、hex拡張子のファイルが多く出力される。

ls -l /usr/share/*.hex


もし、hex拡張子のファイルが存在しない場合は、Xilinx ISEを再インストールする。
この時、インストール時に、Platform Cable USB IIドライバが選択されていることを確認する。


Platform Cable USB IIのドライバのインストール

  1. 以下に示すWebサイトから、Platform Cable USB IIのドライバのソースコードをダウンロードする。
    http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver?a=snapshot;h=HEAD;sf=tgz
    または
    http://www.rmdir.de/~michael/xilinx/

    ※注意
    usb-driver-HEAD-<スナップショット名>.tar.gzファイルをダウンロードできない場合は、Xilinxへメールで連絡してファイルを送信してもらうことができる。

    git cloneコマンドを実行して、ソースコードをダウンロードすることもできる。
    git clone git://git.zerfleddert.de/usb-driver
    cd usb-driver

  2. ダウンロードしたファイルを解凍する。
    tar xf usb-driver-HEAD.tar.gz

  3. 解凍したディレクトリに移動して、libusb-driverをビルドする。
    make -j $(nproc)

  4. libusb-driver.soファイルが生成されたかどうか確認する。

  5. libusb-driver.soファイルを、~/InstallSoftware/Xilinx_ISEディレクトリにコピーする。
    mkdir -p ~/InstallSoftware/Xilinx_ISE
    cp libusb-driver.so ~/InstallSoftware/Xilinx_ISE



Xilinx ISEの起動スクリプトの設定

Xilinx ISEはいくつかの環境変数を必要とするため、シェルスクリプトを使用して初期化することが好ましい。
なお、このシェルスクリプトは、一般ユーザで実行する。

  1. Xilinx ISEのインストールディレクトリに、ISE-Start.shファイルを作成する。
    以下の内容を、ISE-Start.shファイルに記述する。
    sudo vi /opt/Xilinx/14.7/ISE_DS/ISE-Start.sh

    #!/bin/sh
    source /<Xilinx ISEのインストールディレクトリ>/14.7/ISE_DS/settings64.sh # uncomment if required
    #source /opt/Xilinx/10.1/ISE/settings32.sh # comment if required
    #source /opt/Xilinx/11.1/ISE/settings32.sh # uncomment if required
    export LD_PRELOAD=/<上記のセクションでコンパイルしたlibusb-driver.soが存在するディレクトリ>/libusb-driver.so
    ise # comment if neccessary
    #impact # uncomment if neccessary
    exit
  2. ISE-Start.shファイルに実行権限を付加する。
    sudo chmod 755 /opt/Xilinx/14.7/ISE_DS/ISE-Start.sh
  3. デスクトップにISE-Start.shファイルのランチャーを作成する。
    このアイコンを押下することで、Xilinx ISEが起動する。
    また、Xilinx ISEのライセンスとPlatform Cable USB IIの設定を行うことにより、Platform Cable USB IIまたはParallel IVを使用する準備ができる。
  4. 最後に、デスクトップエントリファイルを作成する。
# ~/.local/share/applications/Xilinx_ISE-14_7.desktopファイル

[Desktop Entry]
Type=Application
Name=Xilinx ISE 14.7
GenericName=Xilinx ISE
Comment=FPGA Design
Exec="/opt/Xilinx/14.7/ISE_DS/ISE-Start.sh" %F
Icon=/home/<ユーザ名>/.icons/ISE_DS_Logo.png
StartupWMClass=Xilinx_ISE
Terminal=false
Categories=Development;Xilinx;


※注意 1
使用しているXilinx ISEのバージョンおよびシステムアーキテクチャ(x86またはx64)に応じて、sourceで始まる行をコメントまたはコメント解除する。

※注意 2
Impactを直接実行する場合は、iseで始まる行をコメントアウトして、Impactで始まる行をコメント解除する。


Digilentプラグインのインストール

Digilentプラグインを使用すると、Xilinxの開発環境において、Digilent USB-JTAG FPGAコンフィギュレーション回路を直接使用できる。
Impact、ChipScope Pro、EDK Xilinx Microprocessor Debugger(XMD)、DK Xilinx Software Development Kit(SDK)がサポートされている。

必須環境において、Digilent Adept Runtime 2.9以降が必要となる。

Digilentプラグインのインストール手順を、以下に記載する。

  1. Digilentの公式Webサイトから、Digilentプラグインをダウンロードする。
    https://reference.digilentinc.com/software/digilent-plugin-xilinx-tools/start
    または
    https://store.digilentinc.com/digilent-plugin-for-xilinx-tools-download-only/

  2. ダウンロードしたDigilentプラグインを解凍して、以下のディレクトリに移動する。
    cd libCseDigilent_<バージョン名>-x86_64/ISE14x/plugin

  3. Xilinx ISEのインストールディレクトリにある古いDigilentプラグインをバックアップする。
    cd /<Xilinx ISEのインストールディレクトリ>/14.7/ISE_DS/ISE/lib/lin64/plugins/Digilent/libCseDigilent
    sudo mv libCseDigilent.so libCseDigilent_org.so
    sudo mv libCseDigilent.xml libCseDigilent_org.xml

    上記で解凍したディレクトリにある2つのプラグインを、
    /<Xilinx ISEのインストールディレクトリ>/14.7/ISE_DS/ISE/lib/lin64/plugins/Digilent/libCseDigilentディレクトリにコピーする。
    cd libCseDigilent_<バージョン名>-x86_64/ISE14x/plugin
    sudo cp libCseDigilent.so libCseDigilent.xml /<Xilinx ISEのインストールディレクトリ>/14.7/ISE_DS/ISE/lib/lin64/plugins/Digilent/libCseDigilent



Adeptランタイムのインストール

Digilent製品を使用する場合、Adeptランタイムのインストールが必要である。
このセクションでは、Adeptランタイムのインストール手順を記載する。

Adeptランタイムは、以下のWebサイトからダウンロードする。
https://store.digilentinc.com/digilent-plugin-for-xilinx-tools-download-only/
Adeptランタイムの実行に必要な依存関係のライブラリをインストールする。

sudo zypper install avahi libavahi-core7 libavahi-glib1 libavahi-common3 libavahi-client3


もし、最新のlibusbライブラリをソースコードからビルドおよびインストールする必要がある場合は、以下の手順を行う。

  1. libusbライブラリのビルドに必要なライブラリをインストールする。
    sudo zyper install libudev-devel
  2. libusbのGithubにアクセスして、libusbライブラリのソースコードをダウンロードする。
  3. ダウンロードしたファイルを解凍して、ビルド用ディレクトリを作成する。
    tar xf libusb-<バージョン>.tar.bz2
    cd libusb-<バージョン> && mkdir build && cd build
  4. libusbライブラリをビルドおよびインストールする。
    ../configure --prefix=<libusbライブラリのインストールディレクトリ>
    make -j $(nproc)
    make install
  5. ~/.profileファイル等に、環境変数LD_LIBRARY_PATHPKG_CONFIG_PATHの設定を追記する。
    export LD_LIBRARY_PATH="/<libusbライブラリのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
    export PKG_CONFIG_PATH="/<libusbライブラリのインストールディレクトリ>/lib64/pkgconfig:$(pkg-config --variable pc_path pkg-config)"


自動インストール

以前、Adeptランタイムをインストールしている場合、既に/etc/ld.so.conf.d/digilent-adept.confファイルが存在している可能性がある。
もし、古いファイルが含まれている場合、新しいAdeptランタイムをインストールする前に、手動で削除する必要がある。

手動でAdeptラインタイムを削除する場合、以下に示すディレクトリおよびファイルを削除する。

sudo rm -rf /usr/lib64/digilent/adept
sudo rm -rf /usr/local/share/digilent
sudo rm -rf /usr/sbin/dftdrvdtch
sudo rm -rf /etc/digilent-adept.conf
sudo rm -rf /etc/udev/rules.d/52-digilent-usb.rules


基本的なインストールでは、install.shファイルを実行する。
ほとんどの環境において、必要な全てのコンポーネントをインストールすることができる。

sudo ./install.sh


もし、何らかの理由でインストールできない場合やインストールプロセスをより細かく制御する場合は、各コンポーネントを手動でインストールする方法を、以下に記載する。

手動インストール

Adept共有ライブラリ

Degilentライブラリのランタイムは複数の共有ライブラリで構成されている。
これらのライブラリは、/lib64ディレクトリにある。

該当するディレクトリの内容は、ランタイムがインストールされているディストリビューションに適した場所にコピーする必要がある。
/usr/local/lib64/digilent/adeptと/usr/lib64/digilent/adeptを推奨する。

以下のコマンドを実行して、Adept共有ライブラリをインストールする。

sudo mkdir -p /usr/lib64/digilent/adept
sudo cp -fd lib/* /usr/lib64/digilent/adept
sudo chmod -R 755 /usr/lib64/digilent/adept


ダイナミックローダ設定ファイル(digilent-adept-libraries.conf)

Adeptランタイムを使用するアプリケーションがダイナミックローダを実行するためには、ランタイムが構成する共有ライブラリを見つける必要がある。

digilent-adept-libraries.confファイルには、x86およびx64のランタイムのデフォルトのインストールパスが含まれている。
このファイルを編集して、インストールに適したパスを含むようにする。

以下のコマンドを実行して、ダイナミックローダ設定ファイルをインストールする。

sudo cp -f digilent-adept-libraries.conf /etc/ld.so.conf.d
sudo chmod 644 /etc/ld.so.conf.d/digilent-adept-libraries.conf


次に、ダイナミックローダでキャッシュを更新する必要がある。
以下のコマンドを実行して、キャッシュを強制的に更新する。

sudo /sbin/ldconfig


ファームウェアイメージ

Adeptランタイムには、ランタイムが正しく機能するために、インストールする必要のあるファームウェアイメージが含まれる。
これらのイメージは、data/firmwareディレクトリにある。

Adeptランタイムは、firmwareディレクトリ直下にあるDigilentディレクトリで、これらのイメージを見つけることを想定している。
既知の場所に配置された構成ファイルは、Digilentディレクトリへのパスをランタイムに通知するために使用される。
構成ファイルについては、「AdeptRuntimeConfigurationFile」というタイトルのセクションで説明しています。
また、ディレクトリへのパスは、環境変数DIGILENT_DATA_DIRで指定することもできる。

Digilentディレクトリは、ユーザの任意の場所に配置できる。
一般的に、このディレクトリは/usr/share/digilent/adept/dataに配置される。
例えば、Digilentディレクトリを使用する場合は、ファームウェアイメージを/usr/share/digilent/adept/data/firmwareにインストールする。

以下のコマンドを実行して、ファームウェアイメージをインストールする。

sudo mkdir -p /usr/share/digilent/adept/data/firmware
sudo cp -f data/firmware/*.HEX /usr/share/digilent/adept/data/firmware
sudo cp -f data/firmware/*.so  /usr/share/digilent/adept/data/firmware
sudo chmod 644 /usr/share/digilent/adept/data/firmware/*.HEX
sudo chmod 755 /usr/share/digilent/adept/data/firmware/*.so


既知の問題

VMware Workstationを使用しており、かつ、ゲストOSがLinuxの場合、Adeptランタイムにおいて問題が発生する可能性がある。
VMware Workstationは、USB SET_INTERFACEリクエストをWindowsホストに渡さないため、Linuxカーネルとデバイス間の通信に失敗することがある。
この問題は、プロセスがインターフェイスを解放するたびにUSBデバイスにSET_INTERFACEリクエストを送信するLinuxカーネル 2.6.28以前で発生する。

また、VMware Workstationを使用しており、DigilentのUSBデバイスとの通信に問題がある場合は、以下に示す環境変数を設定する。
以下の環境変数を設定すると、SET_INTERFACEリクエストの回避が可能になる。

vi ~/.profile


# ~/.profileファイル

ADEPT_SETIFWAEN=1


ただし、DigilentのUSBデバイスと正常に通信できるようになるが、永続的な解決策としては推奨しない。
最も良い解決策は、より新しいカーネルにアップグレードして使用する、または、ホストOSでAdeptランタイムを使用することである。

また、古いUdevを使用している場合、/devディレクトリにUSBデバイスのエントリが作成されない。
USBデバイスのエントリが存在しない場合、一般ユーザにDigilentのUSBデバイスの読み書きの権限を付加することができない。
そのため、古いUdevでAdeptランタイムを使用する場合は、スーパーユーザ権限が必要となる。


Adeptユーティリティのインストール

Adeptユーティリティとは

Adeptユーティリティは、Adeptランタイムと組み合わせて使用することにより、Digilentのデバイスを管理および通信するためのコマンド群である。

Adeptユーティリティは、以下に示す3つのソフトウェアで構成されている。

  • Adeptユーティリティ(dadutil)
    Digilentデバイスの検出、デバイス情報の問い合わせ、デバイステーブルの操作、デバイス情報の設定等のコマンドを提供する。
  • JTAG Configユーティリティ(djtgcfg)
    コマンドを使用して、Digilentボード上のFPGAおよびCPLDの初期化、プログラム、消去を行うことができる。
  • NetFPGA-SUME Flash Configurationユーティリティ(djtgcfg)
    DigilentのNetFPGA-SUME上のフラッシュメモリの特定のセクションにビットまたはビンファイルを書き込むことができるユーティリティである。


Adeptユーティリティの自動インストール

Adeptユーティリティのインストールは、同梱のinstall.shファイルをスーパーユーザ権限で実行する。
このinstall.shファイルは、適切な機能を実現するために必要な全てのコンポーネントをインストールする。

sudo ./install.sh


Adeptユーティリティの手動インストール

Adeptユーティリティの実行ファイルを任意のディレクトリにコピーする。

cp /<Adeptユーティリティが存在するディレクトリ>/bin64/* /<Adeptユーティリティのインストールディレクトリ>/bin
chmod 755 /<Adeptユーティリティのインストールディレクトリ>/bin/dadutil
chmod 755 /<Adeptユーティリティのインストールディレクトリ>/bin/djtgcfg

# または

sudo cp /<Adeptユーティリティが存在するディレクトリ>/bin64/* /usr/local/bin
sudo chmod 755 /usr/local/bin/dadutil
sudo chmod 755 /usr/local/bin/djtgcfg


次に、ビットストリームファイルをインストールする。
Adeptユーティリティに含まれるソフトウェアは、FPGA上で動作するソフトウェア固有のロジックと通信する場合がある。
Adeptユーティリティには、通信に必要なソフトウェア固有のロジックを定義するビットファイルが含まれている。

これらのビットファイルは、 該当するソフトウェアに対応する名前のディレクトリ内に格納されている。
例えば、dsumecfg向けのビットファイルはbitstreams/dsumecfgディレクトリに格納されている。

各ビットファイルは、$DigilentPath/$ApplicationName/bitstreamsにコピーする必要がある。
$DigilentPathは、/etc/digilent-adept.confファイルのDigilentPathキーに定義されているパス、$ApplicationNameはソフトウェア名である。
初期設定では、$DigilentPathの値は/usr/share/diglientである。

ビットストリームをインストールして、パーミッションを設定する。

sudo mkdir -p /usr/share/digilent/dsumecfg/bitstreams
sudo cp -f /<Adeptユーティリティのインストールディレクトリ>/bitstreams/dsumecfg/* /usr/share/digilent/dsumecfg/bitstreams
sudo chmod 644 /usr/share/digilent/dsumecfg/bitstreams/*


最後に、MANファイルをインストールする。
Adeptユーティリティは、提供するソフトウェアごとにMANファイルが存在する。
インストールすることにより、man <ソフトウェア名>コマンドを実行して、特定のソフトウェアのドキュメントを読むことができる。

MANファイルは、manpathコマンドおよびecho $MANPATHで示されるディレクトリにインストールする。
初期設定では、/usr/local/manディレクトリ、/usr/share/man等となる。

AdeptユーティリティのMANファイルをインストールして、パーミッションを設定する。

sudo cp -f /<Adeptユーティリティのインストールディレクトリ>/man/dadutil.1 /usr/local/man/man1
sudo chmod 644 /usr/local/man/man1/dadutil.1


Adeptユーティリティのアンインストール

以下に示すファイルおよびディレクトリを削除する。

sudo rm -rf /<Adeptユーティリティのインストールディレクトリ>/bin/dadutil /<Adeptユーティリティのインストールディレクトリ>/bin/djtgcfg
sudo rm -rf /usr/share/digilent/dsumecfg/bitstreams
sudo rm -rf /usr/local/man/man1/dadutil.1