目次

FPGA

Xilinx製品開発ツール

Vivado Design Suite

Xilinx製品のハードウェアを開発するための開発環境.
VHDLやVerilogをもちいて,論理回路の設計を行う.
Vivadoのインストール

起動しない.暫く経つと「Error when launching vivado.bat: Launcher time out」メッセージが出る.

AR# 57386 Vivado - 「Error when launching vivado.bat: Launcher time out」というエラー メッセージが表示される
いくつか原因があるが,自分の場合はMicrosoft の再配布可能ライブラリが正しく?インストールされていないこと原因だった.
AR# 53793 インストール - Vivado が起動せず、「INFO: [Common 17-81] couldn't load library "librdi_coretaks.dll": invalid argument...」というエラー メッセージが表示される
コマンドラインからVivado.batを起動したら,上記で取り上げられているメッセージが出ており,再配布可能ライブラリを再インストールしたら無事に起動できた.
注意として,Vivadoがインストールしようとする再配布可能ライブラリより新しいバージョンがすでにインストールされていると再配布可能ライブラリのインストーラがインストールしてくれないので,その場合は一度新しいバージョンの再配布可能ライブラリをアンインストールする.指定のバージョンをインストールしたいのにどうして「新しいバージョン入ってるから入れる必要ないよ」って止めてしまうのだろうか.

XSAファイルの作成

VivadoからVitsにハードウェアの情報を渡すためのファイル.
ブロックデザインの作成後,[File]→[Export]→[Export Hardware…]を選択,エクスポートするパス,xsaファイル名を指定する.
ハードウェア デザイン (XSA ファイル) の作成

Vitis

Xilinx SDKとSDSoCとSDAccelの3つの開発ツールが1つにまとまったソフトウェア開発環境
これら3つのツールは2019.2以降の更新なく,今後はVitisに統合される事になった.
Vivadoからのハードウェア情報を渡すにはxsa(ザイリンクスシェルアーカイブ)というファイルを用いる.
xsaにはハードウェア情報やメタデータが含まれる.このxsaファイルによってVivadoからVitisにハードウェアの情報を受け渡す.
Application Projectを作る際に,Platfomからハードウェア情報としてxsaファイルを選択する.すると,Application Projectと一緒にPlatform Projectが作成される.
Platform Projectをビルドすることで,ザイリンクスプラットフォーム定義ファイル(.xpfm)ファイルを生成する.
Vivado Design Suite からエクスポートした XSA のアプリケーションを作成およびビルド

Vitisにはプロジェクトが3つ存在する。

CPUコアを1つしか使わないうちは上記のプロジェクトはそれぞれ1つずつとなる。(1つのSystemプロジェクト内に1つのApplicationプロジェクト)

IP の世界からこんにちは (5)
Vitisのプロジェクトにて、hwの中に更新されたファイルができる。ここにものを置いても消されるので注意

Vitisでハードウェアの更新

platformプロジェクトを右クリックし「Update Hardware Specification」より、更新したいハードウェアのxsaファイルを選択する。
選択したxsaファイルはtempdsaフォルダに保存される?(要確認)
Update an Existing Vitis Platform's Hardware Specification
Vitis のエンベデッド・ソフトウェア開発フローで Vivado の回路の更新をVitis に反映する
exStickGEとMicroBlazeでDhrystoneを動かしてみた

VitisでPlatfom Projectのビルドやクリーンができない

VitisはPlatform ProjectとApplication Project(System Project)という2つのプロジェクトによって開発を行う.
Platfom Projectのビルドやクリーンが全く終わらない問題が発生した.
どうやら下記のXilinx SDKで生じたのと同様に,環境変数PATHmakeshなどのコマンドがあるとVitisがそっちを使ってしまうため.X 対策案2に書いたように,Vitisの起動時は環境変数PATHの中身をクリーンにして起動する.

コマンドプロンプト

# Vitisのディレクトリに移動
cd C:\Xilinx\Vitis\2019.2
# PATHを消す。このpathは現在起動しているプロンプト内でのみ有効なのでWindows全体には反映されない。
set path =
# それぞれのツールの設定用バッチファイルを実行
settings64.bat
cd bin
# Vitisを起動
vitis.bat

PoweShell

# Vitisのディレクトリに移動
cd C:\Xilinx\Vitis\2019.2
# PATHを消す。このpathは現在起動しているプロンプト内でのみ有効なのでWindows全体には反映されない。
$ENV:path=""
# それぞれのツールの設定用バッチファイルを実行
settings64.bat
cd bin
# Vitisを起動
vitis.bat

math.hの関数が使えない

リンカのオプションで引数mを追加しておく.
AR# 5297114.4 - SDK - sin、cos、tan 関数を含むアプリケーションをSDK の ARM コンパイラでコンパイルするとエラーになる

Cortex-A9プロッサ載せてるののデフォルトでは無効になってるのは以外. Cortex-A9は単精度浮動小数点数までしかハードウェアのユニットが乗ってないので,基本的には半精度浮動小数点数(float)を意識してやる.そのコード,本当に倍精度必要?
GCCがデフォで倍精度なのが原因

WSL2のUbuntu20.04に環境構築

Ubuntu+GUIを使えるようにするを参照して,WSL2上のUbuntu20.04とそのGUI環境を用意しておく.
XilinxのダウンロードページからLinux用インストーラを入手する.120MBくらいのやつ
2021年3月20日時点での2019.2のインストーラは「XilinxUnified2019.211062127_Lin64.bin」
WSL2でUbuntu20.04を起動し,ターミナルを開いてセットアップしていく.必要に応じて管理者権限

chmod +x Xilinx_Unified_2019.2_1106_2127_Lin64.bin  #実行権限の付与
./Xilinx_Unified_2019.2_1106_2127_Lin64.bin

Vitis 2019.2のUbuntuの公式サポートは18.04.2 LTSまで,インストール時に警告が出るが無視してそのままインストールを続行
Ubuntu20.04にVitis2019.2をインストールしたけど,Vivadoが起動しなかった.
libncurses5パッケージをインストールしたらVivadoが起動できた.

apt install libncurses5

同様の症状の記事ををみつけた.
Install Vivado 2020 in Ubuntu20
issue : Can't launch Vivado 2019.1
Boardファイルいれて開発ボード登録するか,BSP更新する.売ってるボードの情報は基本的に全部ダウンロードされるっぽい.
まぁこれまでボード設定ファイルを手動ローカルでしかやれてなかったのもおかしな話といえばそう.
Application Projectを作ろうと思ったらmakeが入ってなってエラーになった. WSL2でインストールしたまっさらなUbuntuなので,gccとかmakeとかプログラミングに使うソフトを全くインストールしていなかった.
buidl-essenrialをaptでインストールして,setting64.sh走らせたらVitisでmakeが認識された.
無事にPlatform,System,Application Projectが成功してBOOT.BINが生成された.

apt install build-essential

Install Vitis 2019.2 on Linux-Ubuntu   Vitis 2019.2 をインストールした

Xilinx SDK

Xilinx製品のソフトウェアを開発するための開発環境.
ZynqのPS部(Cortex-Aコアとか)のコードを書く.
SDKは今後Vitisというソフトウェアに統合された.今後はVitisがメインになる模様

Xilinx SDKでmakeしても.elfが生成されない

どうやらmake.exeが環境変数に存在するとPATHを更新してそっちを使いに行く模様。

対策案1

環境変数(PATH)には登録しない。しかし他のMakeコマンドを使うソフトもあるのでその兼ね合いは?

対策案2

起動時にPATHを読みにいくらしいので、これを無効化する。

# Xilinx SDKのディレクトリに移動
cd C:\Xilinx\SDK\2018.2
# PATHを消す。このpathは現在起動しているプロンプト内でのみ有効なのでWindows全体には反映されない。
set path =
# それぞれのツールの設定用バッチファイルを実行(一応)
settings64.bat
cd bin
# SDKを起動
xsdk.bat

Xilinx SDKでプロジェクトがビルド出来ない
AR# 43293 13.2 EDK - Make: Interrupt/Exception caught (code=0xc0000fd, addr=0x4227d3)

これは2018.2では発生したいた問題だけど、2019.1では発生していないことが分かった。 バージョンが上がったことでここは対策が打たれたのか?