Ubuntu 18.04にVivado 2019.2をインストールする

# 1. 概要

Vivado新バージョンが出たのでインストールしました。起動時にディレクトリのパーミッションに関するエラーと、ボードファイルのディレクトリパスのエラーが出たのでメモを残しておきます。

# 2. 環境

- Ubuntu 18.04.3
- Vivado 2019.2

# 3. Vivadoインストール

いつもどおりにインストーラをダウンロードしてきて、実行権付与して、実行します。ひたすらダウンロードを待てばインストールの完了です。

```
$ chmod +x Xilinx_Unified_2019.2_1024_1831_Lin64.bin
$ sudo ./Xilinx_Unified_2019.2_1024_1831_Lin64.bin
```

途中でUbuntu 18.04.3はサポートしていませんと脅されたり、Vitisをインストールするよう誘惑されますが、心を無にしてVivadoのインストールを続けます。

![not_supported_os.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271649/b38aeaf6-e6fe-7735-7feb-35a50b067956.png)

![select_product2install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271649/966aad6f-38c9-7c5c-3594-c375ec133ba4.png)

![summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271649/91f717ab-a891-4da1-d0bb-952173e1b3b9.png)

![finish.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271649/7979ea5d-5278-a9be-84af-00bf2b639242.png)

デバイスはZYNQとArtixしか選択していないので、Download Sizeは15GBほど、Disk Usageは51GBほどでした。それでも４時間ほどは待ったと思います。Installation Summaryに`UNIFIED Xilinx Installer`とあったり、そもそもインストーラのファイル名に`Unified`とあったり、ハードウェア開発のツールもソフトウェア開発のツールもこれ一つでインストールできますよということですかね。

さて、設定ファイルを読み込んでvivadoを起動してみます。

```
$ source source /tools/Xilinx/Vivado/2019.2/settings64.sh
$ vivado &
****** Vivado v2019.2 (64-bit)
  **** SW Build 2700185 on Thu Oct 24 18:45:48 MDT 2019
  **** IP Build 2699827 on Thu Oct 24 21:16:38 MDT 2019
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

start_gui
ERROR: [Common 17-267] Couldn't open 'libjvm.so': 'libjvm.so: cannot open shared object file: No such file or directory'
Make sure you are using a supported OS of RHEL5.x or greater.

ERROR: [Common 17-211] Error loading jvm.
```

これはサポートしていないOSにインストールした罰かと思いましたが、[Xilinxサポート](https://www.xilinx.com/support/answers/73047.html)にちゃんとありました。インストールしたユーザと起動しようとするユーザが違うと出るエラーみたいです。次のコマンドでパーミッションの変更をすると無事Vivadoが起動しました。

```
$ sudo chmod -R o=g  /tools/Xilinx/Vivado/2019.2/tps/lnx64/jre9.0.4
$ sudo chmod -R o=g  /tools/Xilinx/.xinstall/Vivado_2019.2/tps/lnx64/jre9.0.4
```


# 4. Vivadoボードファイルのパス設定

Vivado 2019.2をインストールしていつも通りTclスクリプトを実行してプロジェクトを作成したところ、zybo-z7-10のボードファイルがないと怒られてしまいました。

 ```
$ vivado -mode batch -source ./script/create_project.tcl
  ****** Vivado v2019.2 (64-bit)
  **** SW Build 2700185 on Thu Oct 24 18:45:48 MDT 2019
  **** IP Build 2699827 on Thu Oct 24 21:16:38 MDT 2019
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

source ./script/create_project.tcl
# create_project seven_segment ./project -part xc7z010clg400-1
# set_property board_part digilentinc.com:zybo-z7-10:part0:1.0 [current_project]
ERROR: [Board 49-71] The board_part definition was not found for digilentinc.com:zybo-z7-10:part0:1.0. The project's board_part property was not set, but the project's part property was set to xc7z010clg400-1. Valid board_part values can be retrieved with the 'get_board_parts' Tcl command. Check if board.repoPaths parameter is set and the board_part is installed from the tcl app store.
INFO: [Common 17-206] Exiting Vivado at Sun Nov 10 12:07:33 2019...
```

Tclの中身はこんな感じでプロジェクト名とディレクトリ、ターゲットを設定しています。

```
$ cat ./script/create_project.tcl
create_project project ./project -part xc7z010clg400-1
set_property board_part digilentinc.com:zybo-z7-10:part0:1.0 [current_project]
```

ボードファイルは下図のようにあらかじめプロジェクト作成画面で、Update Board Repositoriesを使ってダウンロードしたはずですが、どこにあるんでしょうか。。。ちなみにTclスクリプトではなくGUI画面でプロジェクトを作成するとエラーは出ないのでどこかにダウンロードはできているみたいです。

![update_boardfile.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271649/76d56136-56f9-8157-4efb-73c0cf177d4c.png)

いつも手動でダウンロードしてきていた場所`<インストールディレクトリ>/Vivado/2019.2/data/boards/board_files/`を探してもありません。

```
$ ls /tools/Xilinx/Vivado/2019.2/data/boards/board_files/
ac701  li-imx274-mipi  xm105  zc702  zc706  zcu102  zcu104  zcu106  zed
```

調べたところ別ディレクトリにインストールされていました。

```
$ ls ~/.Xilinx/Vivado/2019.2/xhub/board_store/XilinxBoardStore/Vivado/2019.2/boards/Digilent/
arty         arty-s7-50  cmod-s7-25   cora-z7-10  nexys_video  zybo-z7-10
arty-a7-100  arty-z7-10  cmod_a7-15t  genesys2    sword        zybo-z7-20
arty-a7-35   arty-z7-20  cmod_a7-35t  nexys4      zedboard
arty-s7-25   basys3      cora-z7-07s  nexys4_ddr  zybo
```

これらのファイルをいつものディレクトリにコピーしても良いのですが、ここにパスを通すみたいなことを[ここ](https://forums.xilinx.com/t5/Design-Entry/Running-quot-Update-Board-Repositories-quot-in-Project-Creation/td-p/990219)とか、[ここ](https://github.com/Xilinx/XilinxBoardStore/wiki/Accessing-the-Board-Store-Repository)に書いてあったのでパスを通すことにします。

１行目に`board.repoPaths`パラメータにボードファイルのあるディレクトリを設定する記述を追加しました。

```
$ cat ./script/create_project.tcl
set_param board.repoPaths ~/.Xilinx/Vivado/2019.2/xhub/board_store
create_project seven_segment ./project -part xc7z010clg400-1
set_property board_part digilentinc.com:zybo-z7-10:part0:1.0 [current_project]
```

これで無事tclスクリプトからプロジェクトを作成できるようになりました。