組込みLinux Ultra96v2 でVitisやってみる その1 準備と予備知識(フロー、用語、ファイル名)

Vitisは、Cで書いたアプリケーションプログラムをFPGAのロジックに変換して、AIや画像処理やサーバー処理などを高速に実行できる出来るらしいです。  Xilinxでサンプルのベクトル和プログラムvaddが用意されているので、このvaddをVitisを使ってFPGAで走らせてみたいと思います。 2022.2版を参考できる情報が少なく、めっちゃ苦労しました。 また、初学者として用語やファイル名が沢山でてくるので、まとめてみました。

必要なもの

  • Ultra96V2と周辺
    • 電源(Avnetの電源を使っています)
    • UART-USB変換器(DSD TECH SH-U09C5 USB to TTL UARTコンバーター( FTDIチップサポート付き 5V 3.3V 2.5V 1.8V TTLサポートを使っています。 しかし、この場合ケーブルを自作せねばなりません。(その2参照))
  • uBuntu PCかWindowsであればVMWare等仮想環境を入れてuBuntuを入れる。 
    • 私のuBuntuは2020.04.6で、ちゃんと動作しました。
    • ハードディスクは最低でも500GBあったほうがいいです。 Vitisのインストール時に270GB必要になります。 vaddの簡単なサンプルの1つのプロジェクトで、PetaLinuxが41GBでVitisが7.3GB作ります。 Vivadoは0.1GB以下。 Vitisでビルドを始めると、1プロジェクト約73GB位でした。 なので、最初は500GBでもいいですが、本格的にするには個人的には2TBくらい欲しいかな。
    • SSDがいいです。 私のPCはHDDなので書込が遅いのでビルドにめっちゃ時間がかかります。
    • メモリは最低でも16GB以上あったほうがいいです。 私の古いPCは搭載最大容量の8GBですが、Vitisで簡単なvaddのサンプルをビルドする際でも、8GBで足りずhddをswapとして使うのでめっちゃ遅いです。 8GBでもまだ止まっていないですが、Vitisのビルドのswapに5GB使っているのでHDDへのアクセスが多くHDDの故障が心配です。 私のPCの場合はコアが2つで、8GBとswap 5GB使っていて、タスクが1つしか走っていない時は、メモリ使用やswapも減るので、1コアx6GB位あったほうがいいと思います。 Vitisでは使うコア数も指定出来るので、使うコア数x6GBかな。 まあ個人的には最低32GB、Vitis用にバリバリ使うなら12コア以上で128GBがいいかな。 
  • Vitis 2022.2 インストール
  • Vivado:VitisをインストールしたらVivadoも一緒に入ってくるので、『組込みLinux Vitis Unified Software Platform 2022.2インストールと起動方法』を参照
  • PetaLinux 2022 別途インストール
  • XRT(Xilinx Runtime) 2022 別途インストール

開発フロー

こんな感じで開発します。 Vitisを使うには、VivadoもPetaLinuxもXRTも使います。

開発ステップ生成されるファイル実施内容
1. Vivado

ハード構成構築
.bit(FPGAの基本ハード構成、Vitisに渡す)
.xsa(PetaLinuxとVitisに渡すハード構成:ハードウェプラットフォーム)
1. Avnetのボードサポートファイルを入手して格納

2. ブロックダイヤグラムを作成

3. ビットストリーム作成(.bit)

4. ハードウェアプラットフォームExport(.xsa)
2. PetaLlinux

Linux関連構築
image.ub  (Kernelイメージ)
zynqmp_fsbl.elf (1stブートローダー)
bl31.elf (ARM用のセキュアブートローダーの一種)
pmufw.elf
u-boot.elf  (U-BOOT)
system.dtb (デバイスツリーブロブ)
rootfs.tar.gz (ルートファイルシステム)
rootfs.cpio
sysroots   (SDK)
.spfm(ソフトウェアプラットフォーム)
1. Vivadoで生成した.xsaを取り込んでPetaLinuxプロジェクト作成。

2. Kernel, rootfs, u-boot, busybox等のmenuconfigを設定して一括ビルド。(個別ビルドも可能)

3. Sysroot(SDK)をビルド
*Vitis用アプリ開発にはKernelモジュールの生成が必要なので、SDKが必要。
3. 個別編集.bifファイルを作成1.ブート時に読み込むファイルの順番を指定する。
BOOT.BINを生成する際に使われる。
4. Vitis

プラットフォーム作成
Target Platform
.xpfm(1.Vivadoで生成した
.xsaを取り込んでプラットフォームプロジェクト作成
2.以下ファイルを指定してプラットフォームビルド
・bifファイル
・各種Bootフィアル
・rootfs.cpio
・SysrootディレクトリPATH
5. Vitis

Accelerated Application作成
vector_add (ユーザー空間の実行ファイル)
krnl_vadd.xo(多分、ユーザーアプリがKernel空間のXRTにアクセスする実行ファイル)
binary_container_1.xcbin (BitstreamやXRTやkrnl_vadd.xo等が含まれている)
1. Vitisプラットフォームを指定してアプリケーションプロジェクトを作成

ファイルの格納場所入れるファイル
6. microSDに各種ファイルを入れ/BOOT/パーティションboot.scr (PetaLinux生成)
BOOT.BIN (Vitis生成)*
image.ub(Vitis生成)*
*これらは最初にPetaLinuxが生成しますが、最終的にVitisのディレクトリから取り出します。 BOOT.BINはPetaLinuxで生成されたものから64byteほど増えています。 image.ubは同じものです。
/ROOTFS/パーティションrootfs.tar.gz を展開する(PetaLinux生成)
/ROOTFS/パーティションのホームディレクトリ
私の場合は初期値のままなので、/ROOTFS/home/petalinux/
binary_container_1.xcbin
vector_add

用語

Vitisを使う時に色々な用語やファイル名がでてきてわかりにくいので、ここにまとめておきます。

並びもばらばらで抜けもありますが、今後も理解しながら充実させていきます。

用語説明
0000:00:00.0Kernelメッセージに表示されました。

ドメイン番号:最初の4桁
バス番号:次の2桁
デバイス番号:次の2桁
ファンクション番号:最後の番号
0000:00:00.0は、デバイスのPCIeのアドレス
ACAPAdaptive Compute Acceleration Platform
ACEAXI coherency extension
AXIプロトコルの拡張
AMBA 4.0
ACPAcceleration Coherency Port
APUとFPGAの接続
SCUにある128bitのAXIスレーブ
AES-GCMAESは、Advanced Encryption Standard で共通鍵暗号アルゴリズム。
GCMは、認証タグ付き暗号文利用モード(暗号化と認証の両方の機能を持つ) Galois Counter Mode 
ガロア認証:暗号文が改ざんされていないことを検知する。
カウンターモード:処理の並列化が可能。
AFIApplication Firmware Image.
AHBAdvanced High-Performance Bus
AMBA 2.0/3.0
シングルチャンネル共有バス
読み出しデータバスと書込データバスが別
AIEAdaptive Intelligent Engine
Versal SoCなどに搭載されている。
AMBAAdvanced Microcontroller Bus Architecture
オンチップバス規格の一つ。 AMBA 5.0
AXI, AHB, APB. ASBなどの総称。
APAccess Port
APBAdvanced Peripheral Bus
低速の周辺バス
AMBA 1.0/2.0
APUApplication Processing Unit
Xilinxの場合は、Linux等のアプリを実行するプロセッサのことでCortex-A53コアの事。

一般的にはAccelerated Processing Unitで、CPUとGPUと一つにしたプロセッサのAMDの呼称。
ASBAdvanced System Bus
システム・バス
AMBA 1.0/2.0
ASGWLCSP
ATCMinterface
TCMの一種
ATFARM Trusted Firmware
AXIAdvanced eXtensible Interface
バスの規格でなく接続インターフェースの規格
マスタースレーブ通信Peer to Peer
マルチチャンネルで同時に複数のアクセスが出来る
バースト転送
AMBA 3.0/4.0
4つのチャンネルで接続。アドレス・チャネル,読み出しチャネル,書き込みチャネル,書き込み応答チャネル
各チャンネルは2線ハンドシェイク
アドレスは各データ塊の先頭アドレスしか送らないので転送量が少ない。 スレーブでアドレス生成して格納。
高性能化するには2次キャッシュに接続する。
マルチプロセッサの場合AXIがバスが占有されないのでAHBより良い。
AXLFAccelerator Link Format
ホストCPUとFPGA上のアクセラレーターの接続インターフェースを記述するのに使われるバイナリフォーマット。
BDBlock Design
BDFBoard Design File
Xilinx Vivado HLx toolsで使用される
BISTBuilt-in Self-Test
永続故障によるハードのランダムフォルトを検出する。
RPUに含まれる
BPUBattery Power Domain
BSPBoard Support Package
開発ボード上でOSを正常に可動させる為に必要なソフトウェア一式と設定が入っている。 XilinxのBSPはLinuxやボード上のデバイスを利用するドライバやライブラリ等が含まれる。 Xilinx BSP=HDF+Bitstream
BTCMinterface
TCMの一種
CASColumn Address Strobe
DDRなどDRAMメモリアクセス:列アドレスを取得する信号。 RASと併用する。
CCICache-coherent interconnect (CCI) ACE-Lite ports
CCIRGMIIVideoデータを転送するインターフェース
Camera and Camcorder Interface (CCI)
CCIRGMII stands for "Camera and Camcorder Interface (CCI) Reduced Gigabit Media Independent Interface (RGMII)
CLBConfigurable Logic Block
=4 LUTs (for Zynq UltraScale+)
CMAContinuous Memory Access
CSGFCCSP
CSUConfiguration Security Unit
ROM を内蔵しFSBLを実行しコンフィギュレーションを行う。
ロジックが改ざんされないように、AES-GCMやRSA等暗号復元ロジックも搭載している。
d-cacheData cache
マイクロプロセッサ内部に設けられた高速な記憶装置であるキャッシュメモリの一種で、データを一時的に保管する領域。
D-PHY通信の物理層
Data(1,2,4)とCLK
HS(High Speed)、差動200mV、Max2.5Gbps、30cm
LP(Low Power)、SE1.2V、Max10Mbps、30cm
D-PHY ver3.0 9Gbps
DAPDebug Access Port
APとDPをセットにしたもの
DCMDigital Clock Manager
古い仕組み
MMCMを使う。
DFXDynamic Function eXchange
Distributed RAMFPGA内に分散して配置されるRAM
DKMSDynamic Kernel Module Support
DLL Delay Locked Loop
クロック周波数を設定した倍率の周波数に変換する。
PLLと違って発振器でなく、入力クロックを遅延させて次のクロックのエッジの位相を合わせてクロックを作り出す。
DPDebug port
DPACC ,APACCAccess Command?
DPとAPのプライベート命令(35bit長)
◆コマンド
[34:3]:データ
[2:1]:レジスタオフセットアドレスの[3:2]
[0]:RD(1) or WR(0)
◆レスポンス
[34:3]:データ
[2:0]:Ack
DPUDeep Learning Processing Unit
DRMDirect Rendering Manager
Kernlドライバー
DRM KMSはディスプレイパイプラインを設定する。
DTGXilinx Device Tree Generator
ハードウェアプロジェクトからdtsを生成する。
EBREBR SRAM
EDAElectronic Design Automation
FPGAの設計作業ツール。  
EMIOExtended Multiplexed Input/Output
Zynq で使用される。
FPD-DMAFull-Power domain
FPUFloating Point Unit
浮動小数点
GEMRubyのPackage manager
.gem形式で保存されている。
GEMGraphics Execution Manager
DRMドライバーはGEMメモリマネージャーを付く買う
GFCGigabit Frame Checker
GICGeneric Interrupt Controller
GPLLGlobal Phase Locked Loop
Graph APISNSなどで使われるGraph DatabaseにアクセスするAPI
GTHGigabit Transceiver Hard IP
Zynq UltraScale+ GTH (16.3Gb/s)
GTMGigabit Transceiver Module
Versal プレミアムシリーズ GTM (112Gb/s)
チップ間
チップと光モジュール間
GTPGigabit Transceiver Platform(コスト重視:低消費電力)
Artix™ 7 GTP (6.6Gb/s)
Spartan™ 6 GTP (3.2Gb/s)
GTRGigabit Transceiver
Zynq UltraScale+™ GTR (6Gb/s)
GTXTransceiver(ミッドレンジ)
Zynq 7000 GTX (12.5Gb/s)
Kintex 7 GTX (12.5Gb/s)
GTYGigabit Transceiver Yellow
Zynq UltraScale+ GTY (32.75Gb/s)
チップ間、チップと光モジュール間
GTZGigabit Transceiver Zynq UltraScale+(ミッドレンジ)
7 シリーズ GTZ (28.05Gb/s): 28nm FPGA で最高レート
HADDRアドレス・バス
HBMHigh Bandwidth Memory
HDHigh-Density bank 1.8V
HDFハード情報
HDLHardware Definition Language
VHDL、SystemVerilog
HLSHigh Level Synthesis
高位合成ツールの事。
C/C++で記述したコードをFPGAで処理できる。(VHDLやVerilogで記述しなくても良い)
HPHigh-Performance bank 1.2V
HPCHigh Performance Computing
複雑で膨大な演算を高速で処理すること。
XilinxでのHPC0は高速データ転送と信号処理のHigh Performance I/Oバンク。 PCIe、DDR等をサポートする
HP0は、LDVSやHSTLを含むGPIO用のHigh Performance I/Oバンク。
HPMHigh Performance Master
AXIインターフェース
HPPLHigh Performance Peripheral Libraries
HPShardware platform specification
HRDATA読み出しデータ・バス
HSIHigh-Speed Serial Interface
HSSIOHigh Speed Serial I/O
HWDATA書き込みデータ・バス
i-cacheInstruction cache
マイクロプロセッサ内部に設けられた高速な記憶装置であるキャッシュメモリの一種で、プログラムを一時的に保管する領域。
Interlakenスケーラブル(レーン数)な外部高速チップ間通信 LogiCORE™ IP UltraScale™が必要
UltraScale+ 最大帯域150G 12.5Gb/s ~ 25.78125Gb/s で最大 6 レーン
Versal ACAP 最大帯域600Gbps(48 transceiver必要)
Virtex UltraScale 25g_6l_gty 25.78125
IOPPSが使用するI/O。USB, Ethernet, CAN, UARTなど。
PSが使用するGPIOはMIO.
IPIInter-Processor Interrupt
KDSKernel Driver Stack
FPGAで実行するAccelerated Applicationとユーザーアプリケーションと通信するドライバインターフェース。
以下の3つを含む
1.ユーザー空間ランタイムライブラリ
2.Kernel空間ドライバ
3.FPGA上のFirwareランタイム
KMSKernel Mode Setting
LBGBGA
LFGBGA
LCLogic Cell
他のデバイスのLogic Element相当。
LUTとは異なる。 LUTよりカウント数が多い。
LPD-DMALow Power Domain
LPD-PLLPDからPL
LUTLook Up Table
マルチプレクサとFlip Flopからなる。
Intel系は4入力
Xilinx系は5か6入力
LVDSLow Voltage Differential Signal
低電圧作動信号
HDMIやDisplayPortなどにも使われる高速通信方式。
MCSMicro Controller System
MicroBlaze(Soft processor)の事。
MEM-APMemory Access Port
デバッグ用のメモリ空間(レジスタ等)にアクセスするポート
MicroBlazeXilinxのFPGA上に作ることが出来る、ソフトマイクロプロセッサ。 32bit、32レジスタ
MIOMultiplexed I/O
ZynqのPS(FPGAでない部分)部と直接接続できるI/Oピン
MIPIMobile Industry Processor Interface
2008年制定。
スマートフォンや、産業機器、車載用途など主にカメラ周りの製品内で使われるインターフェース。
D-PHYの物理層とDSI/CSI-2プロトコルを使う。
MMCMMixed-Mode Clock Manager
PLLのSuperset
1クロックから複数の周波数を生成できる。
11.2ps単位で位相シフトできる。
PLLとの違い
1.最小最大の周波数範囲が狭い
2.分数除算がある
3.ダイナミック位相シフト可能
4.4つの出力クロックに対して補数出力あり
PLLと共通
1.パワーダウンモード
2.周波数号お世
3.入力クロック切替
MMUMemory Management Unit
物理アドレスと論理アドレスの変換(=ページング)とキャッシュの設定をする。
MRCMemory Resource Controller
Xilinxデバイスに搭載されている。 メモリー領域を分けてKernelに割り当てることができる。
NRZNon Return to Zero
伝送路符号の一種
差動でなくSE
OCMOn-Chip Memory(RAM)
FPGAのOCMは通常外部メモリより高速。
ONFI3.1Open NAND Flash Interface
OpenCLマルチコアCPUやGPU、Cellプロセッサ、DSPなどによる異種混在の計算資源を利用した並列コンピューティングのためのクロスプラットフォームなAPI。
PAMPluggable Authentication Modules
各ソフト共通で利用できる認証システム
PLProgrammable Logic
FPGAの部分
PL-LPDPLからLPD間
PLLPhase Locked Loop
クロック周波数を設定した倍率の周波数に変換する
PMUPlatform Management Unit
電源シーケンスの管理
PS電源レールの改ざんを防ぐ電源安全ルーチンの実装
PMUFWPlatform Management Unit Firmware
PMU Processorのテンプレートアプリを供給する。
PMUFW は、FSBL が提供する設定オブジェクトを待つ。
XSDB コマンド
mwr 0xaddress 0xvalue: Memory 64bit Write?
after 1000 : 1000 μs 待つ?
dow file_name : download?
con : 実行
PSProcessing System
ARMコア側の部分のこと
PS-GTRGigabit Transceiver SubsystemとPSの接続
PSUpsu_cortexa3_0
QEMUQuick Emulator
QoRQuality of Result
論理合成ツールで優れた設計品質の事
QoRQuality of Result
結果の品質
RASRow Address Strobe
DDRなどDRAMメモリアクセス:行アドレスを取得する信号。 CASと併用する。
RFRadio Frequency
Giga bit Ethernet の無線化など
RPURealtime Processing Unit

リアルタイム動作するCortex-R5のコアの事
RTLRegister Transfer Language
レジスタ転送言語
HDLと呼ばれることもある。 Verilogなどの事。
これをコンパイルするとネットリストになる。
sbcSingle Board Computer
SCUSnoop Control Unit
SESingle Ended
差動でなく片側がGNDでもう一方が信号。 UART、RS232Cなど。
SEVSend Event
命令
SMMUSystem Memory Management Unit
アドレス空間を仮想化してI/OやDMAを扱えるデバイスのアイソレーションを図り、DMA attackを回避する
sstate-cacheShared State cache
ビルド時間を短縮する
Sysrootターゲットで動作するKernelと同じバージョンの、ヘッダーファイル群やKernelモジュール用Cライブラリーなどが含まれたディレクトリとフィアル群。
TCFTarget Communication Framework
Linux ユーザー空間アプリをデバッグする為のLinux内のサーバー。
XSDBコマンドを使ってデバッグ出来る。
XILINXのJTAGサーバ(hw_server:デバッグエンジン)のこと。
TCMTightly Coupled Memory
PSに近いので低遅延でアクセスできる。
TCMTightly Coupled Memory
Memory map
AMD Technical Information Portal
TTCTriple Timer Counter
ULPIUSB3.0に接続
v++Vitis Compiler
vaddVector Add
XilinxがVitis用に提供しているベクトル和を計算するファイル。 PL用とPC用が生成され、それぞれ同じ結果に成るか確認できる。 このファイルを使い、VitisのHLSが正常に動作しているか確認できる。
vadd.xclbin
VCUVideo Control Unit
VPLVitis Programming Language
C++をベースとしてFPGAをプログラムするHigh Level ハードウェア記述言語
WFEWait for event
内部通信方法
WRPLLWide-Range Phase-Locked Loop
xbutilXilinx Binary Utility
xbsakは廃止予定でxbutilに置き換わる。
XRTに含まれるコマンドラインユーティリティ。
以下の4つのコマンド
program
examine
configure
reset
以下のコマンドは2022.2では使用できない。
query
load
validate
XML-RPCXML形式のデータをHTTPでやり取りするためのプロトコル。
XML-RPCサーバが必要。
XPEXilinx Power Estimator
XRTXilinx Run Tim
OpenCLのAPIやCPU-FPGA間のドライバが含まれている。 ApplicationからFPGAをconfigurationするにはXRTが必要。
XSAXilinx Support Archive
Vivadoで生成し、Vitisで使用できるファイル。
ハードウェアコンポーネント。 ソフトウェアコンポーネントのSPFMファイルと名前を一致させる必要がある。
アクセラレーションプラットフォームには、ハードウェアコンポーネントとソフトウェアコンポーネントの両方が必要。
XSCTXilinx Software Command-Line Tool
ユーザーはコマンド ラインから SDK ツールにアクセスできる。
XSDBコマンド等が使える。
XSDBXilinx Software Debugger
hw_server およびその他の TCF サーバー用のコマンドライン インターフェイス
zoclZynq OpenCL
Zynq/ZynqMPで使われるOpenCL API
PSとPL間のSMMUベース共有仮想メモリとCMAベースの共有物理メモリをサポートする。
zyxclmm_drmDRMと相互作用するXilinx's Zynq Linux distributionのKernelモジュール
エンベディットVitisプラットフォーム向け共通イメージハードウェアプラットフォームとソフトウェアプラットフォームからビルドされた最終プラットフォーム。 ハード情報とソフト情報のファイル群が含まれている。 (.xpfmファイル)
ソフトウェアプラットフォームVitisで使用するために、PetaLinuxで生成(.spfmファイル)するソフトウェア情報のファイル群。
ハードウェアプラットフォームVitis用にVivadoで作成(.xsaファイル)するハードウェア構成ファイル群を集めたもの。

ファイル名

拡張子関係ソフト説明
.cacheVivadoディレクトリ
.genVivadoディレクトリ
.hwVivadoディレクトリ
.ip_user_filesVivadoディレクトリ
.xprVivadoでプロジェクトを作った時に生成されるXilinx Project
プロジェクトファイル。
ダブルクリックするとプロジェクトが開く。
.sdkディレクトリ
ハード定義が入っているらしい。
Vivado 2022で合成したが、.sdkディレクトリは生成されなかった。
.simVivadoディレクトリ
.srcsVivadoディレクトリ
各種プロジェクトのソースフィアルを入れるディレクトリ。
.bitファイルもここに生成される。
.xsaVivadoでFile/Export/Export Platformで生成して、PetaLinuxで使うXilinx Support Archive
Vitis のAccelerated Applicationにするには、
spfmと同じファイル名でないといけない。
u-boot-dtb.elfu-boot.elfにデバイスツリーdtbが含まれている。
u-boot.binu-bootイメージの最終形。
ATF, PMUFW, FSBL, U-Boot イメージが入る。
◆従来のファイル名
boot/bl31.elf
boot/u-boot.elf
boot/system.dtb
u-boot-dtb.binu-boot.binにデバイスツリーdtbが含まれている。
image.ubbootable kernel image
とデバイスツリーを含む
- Image(Linux Kernel)
- zynq.dtb(Device Tree Blob)
image.ubは、BOOT.BIN、boot.scrと一緒に/BOOT/に入れる

Fit image name
petalinux-configで設定。
zynqmp_fsbl.elfFist Stage Boot Loader
bl31.elfARM Trusted Firmware
BL:Boot Loader
pmufw.elfPlatform Management Unit Firmware
Vivadoで.hdlから生成される
system.dtbVivadoがソースを作成し、PetaLinuxがビルドシステムのデバイスツリーブロブ(バイナリ)。
Overlayを使えるようになっている。
BOOT.BINBOOT.BINには、以下が入る。
- pmufw.elf(Platform Management Unit Firmware)
- fsbl.elf(First Stage Boot Loader)
- bl31.elf(ARM Trusted Firmware)
- u-boot.elf
- Bitstream <---BOOT.BINからPLを起動する場合。
BOOT.BINとimage.ubとboot.scrをSDカードのFAT32第一パーティションに入れてブートする。
ルートFS はext4パーティションにrootfs.tar.gzを解凍して入れる。(sudo)

初期値ではPetaLinuxはu-boot.elfからJTAG/BOOT.BINを作る。
bootgenはu-boot.elfからsymbolsを取り除く。 BOOT.BINにu-boot-dtb.elfを使うことも出来る。
uboot.elfu-boot-spl.binと同様で、fsbl.elfや.binとマージさせるためのu-bootイメージファイル。
Second Stage Boot Loader
linux.bif Boot Image Format
BOOT.BIN のレイアウトを定義します。
Bootgen のブート コンポーネント構造を記述する BIF (linux.bif)
起動順に記載する。
ZynqとVersalは記述文法が異なる。
コメントは、/* */ か //。
sysrootKernel空間で動作するKernelモジュール(ドライバ)生成するために使用するKernelヘッダーファイルやCライブラリ群とディレクトリ群。
plm.elf
pmc_cdo.bin
image.gz
.bin全FPGAデバイスで使用未処理の実行可能バイナリファイル
.dtb全FPGAデバイスで使用Device Tree Blob
デバイスツリーをコンパイルしたバイナリファイル
.gz全FPGAデバイスで使用未処理の実行可能バイナリファイル
.elf全FPGAデバイスで使用Executable Linking FIle
複数の実行ファイルをリンクした実行可能バイナリファイル
.int全FPGAデバイスで使用レジスタ初期化ファイル
.nky全FPGAデバイスで使用AES暗号化鍵
.pub全FPGAデバイスで使用RSA暗号化鍵
.pem全FPGAデバイスで使用RSA暗号化鍵
.sig全FPGAデバイスで使用Signature
Bootgen または HSM によって生成される署名ファイル。
.bitZynq-7000
Zynq UltraScale+ MPSoC
Versal以外FPGA
BIT ファイル ヘッダーを除くビットストリーム
.rbtZynq-7000
Zynq UltraScale+ MPSoC
Versal以外FPGA
BIT ファイル ヘッダーを除くビットストリーム
.bdfBoard Definition File
ボードで使用する端子設定情報を含むファイル。
.pllgm_port2.pl
.dtdboard.dtd part0_pins.dtd preset.dtd
.xdcXilinx Design Constraintファイル
Xilinxの場合、ピン配や設定も.xdcでTcl文法で記述する。
.bdBlock Design ファイル
VivadoでCreate HDL Wrapperした時にVerilog Wrapperファイルと共に生成される。
インターフェース名.xml
インターフェース名_rtl.xml
xgui/IP名_バージョン.tcl自分のIP
RTLソース自分のIP
component.xml自分のIP
IP中のXILINX IP名/IP中のXILINX IP名.xci自分のIP
.bb
fsbl-firmware.bb
plm-fimeware.bb
PetaLinuxBitBakeのレシピファイル
fsbl.bb (旧レシピ)
plm.bb (旧レシピ)
.bbclassPetaLinuxBitBakeのclass
xilinx_zynqmp_defconfig/build/tmp/work-shared/zynqmp-generic/kernel-source/arch/arm64/configs/
.mcsMicro Controller Systemファイル
MicroBlaze向けPROMに書き込む為のファイル
.wicFlashメモリやSDから起動する為のパーティション構造も入ったイメージファイル。
パーティション構造定義wksファイルを参照して作る。(Linux、Windows、Mac共通)
◆解凍方法
$ xz -d petalinux-cdimage.wic.xz
.wskOpenEmbedded Kickstart
.wicを作る時の設定ファイル。
.xclbinVitisで生成される。Xilinx Compiled Binary
以下を含む
1. PLに展開するFPGAユーザープログラムのBitstream(VerilogやVHDLで記述)
2. PS部のハード設定
3. ハードウェアカーネル(.xo)(C/C++等で記述)
v++(Vitis Compiler)で生成される。
.xclbinは、Xilinx runtime APIかXRTかOpenCLでruntimeにFPGAにロードされる。
.xoXilinx object
ハードウェアカーネル
XilinxのFPGA開発としてのハードウェアカーネルとは、ユーザーが開発したFPGAで実行される関数部分の事。
Cプログラム等を高速に実行するためにVitisで.xoとして生成され、他のハードとリンクされxclbinファイルのFPGA Bitstreamとなって、FPGAにロードされる。 FPGA1個に対して、関数が複数あれば、.xoファイルは複数個存在するが、xclbinは1個歯科存在しない。
bblayer.conf
prserve.sqlite3
components/yoct/conf/local.confMACHINEがリストされている
components/yoct/conf/bblayers.conf
system.bitFPGAの内部接続を設定するBitstream。
Optionally PL (FPGA) bitstream
Block Design等で生成。
.spfmSoftware Platform file
Vitis のAccelerated Applicationにするには、
xsaと同じファイル名でないといけない。
.saifSimulation Active File
.xpfmVitisで作るXilinx Platform ファイル

コメント