axi を使用した zynq ultrascale+ デバイスへの …...リファレンス デザイン...

50
XAPP1303 (v1.0.2) 2017 2 27 1 japan .xilinx.com この資料は表記のバージ ョ ンの英語版を翻訳し たもので、 内容に相違が生じ る場合には原文を優先し ます。 資料によっては英語版の更新に対応していないものがあります。 日本語版は参考用 と し てご使用の上、 最新情報につき ま し ては、 必ず最新英語版を ご参照 く だ さ い。 概要 このアプリケーション ノ ー ト では、 Zynq® UltraScale+™ MPSoC LogiCORE™ IP UltraScale+ Architecture Soft Error Mitigation (SEM) Controller (以下、 SEM コントローラー ) を統合して使用する方法について説明し ます。 SEM コントロー ラーをプロセッシング システム (PS) に統合する方法を例として示したリファレンス デザインが付属します。 このデザイ ン は、 ザ イ リ ン ク ス ZCU102 ボー ド を ターゲ ッ ト と し ていますが、 変更すれば別のデバイ ス、 フ ァ ミ リ アーキテクチャ、 ボードでも使用できます。 PS AXI4-Lite インターフェイスを使用して SEM コン ト ローラーに接続されます。 AXI4-Lite インターフェイスは、 SEM コン ト ローラーの状態の監視と、 エラー条件が発生した場合のデバッグに必要です。 SEM ント ローラーからレポート される情報は、 このインターフェイスを使用して FIFO から読み出されます。 これらのレポー ト には SEM コン ト ローラーの状態に関する最も詳細な情報が含まれます。 制御、 ステータ ス、 割り込みの情報が、 AXI4-Lite レジスタ インターフェイスを介して提供されますが、 レジスタ インターフェイスで提供されるステータス情報 は、 FIFO か ら読み出される レポー ト 情報ほど詳細ではあ り ません。 割 り 込みは設定変更可能であ り 、 SEM コントロー ラーがコンフィギュレーション メモリにエラーを検出した場合など、 SEM コ ン ト ローラーの処理が必要な場合に PS へ通 知する目的で使用されます。 このアプリケーション ノ ー ト と は別に、 Zynq UltraScale+ MPSoC LogiCORE IP UltraScale+ Architecture SEM Controller 統合して使用する方法を 『Zynq UltraScale+ デバイスへの LogiCORE SEM IP の統合』 (XAPP1298) [参照 1] で説明していま す。 この方法では、 AXI4-Lite インターフェイスではなく、 Zynq MPSoC プロセッサの EMIO (Extended Multiplexed I/O) ら最小限の汎用 I/O (GPIO) ピンを使用して SEM コント ローラーと通信し、 これを管理しています。 リファレンスデザイン リファレンス デザインは Vivado® Design Suite 2016.2 IP インテグレーターを使用して作成されています。 このアプリケーション ノートの は、ザイリンクスのウェブサイトからダウンロードでき ます。 1 および2 に示す リ フ ァ レ ン ス デザインでは、 AXI4-Lite を使用して、 SEM コン ト ローラーを Zynq UltraScale+ MPSoC に接続しています。 このデザインは、 次に示す Vivado IP インテグレーター ブロックで構成されます。 Zynq UltraScale+ MPSoC Processor System Reset - リセット デ ィ アサー ト の順序付けを制御 AXI Interconnect - 複数の AXI ペリフェラルを Zynq UltraScale+ MPSoC ブ ロ ッ ク へ接続可能 AXI Interrupt Controller -すべての AXI ペリフェラルから Zynq UltraScale+ MPSoC ブ ロ ッ ク への単一割 り 込みを提供 Utility Buffer - IBUFDS として設定されたバッファー UltraScale Architecture Soft Error Mitigation Controller AXI2SEM モジュール - UltraScale Soft Error Mitigation コン ト ローラーに対する AXI インターフェイスを提供するため のさまざまなモジュール Constant - 信号またはバスに定数値を駆動するために使用 Concat - 複数の信号または幅の狭い複数のバスを連結して 1 つの幅の広いバスを作成するために使用 Slice - バスから一部のビッ ト を除去するために使用 詳細は、 「ハー ド ウ ェ ア」 に示す123 を参照してください。 アプリケーション ノート : Zynq UltraScale+ デバイス XAPP1303 (v1.0.2) 2017 2 27 AXI を使用した Zynq UltraScale+ デバイス への LogiCORE SEM IP の統合 著者: Michael Welter

Upload: others

Post on 02-Mar-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  1japan.xilinx.com

この資料は表記のバージ ョ ンの英語版を翻訳したもので、 内容に相違が生じる場合には原文を優先します。 資料によっては英語版の更新に対応していないものがあります。 日本語版は参考用としてご使用の上、 最新情報につきましては、 必ず最新英語版をご参照ください。

概要

このアプリ ケーシ ョ ン ノートでは、 Zynq® UltraScale+™ MPSoC に LogiCORE™ IP UltraScale+ Architecture Soft Error Mitigation (SEM) Controller (以下、 SEM コン ト ローラー ) を統合して使用する方法について説明します。 SEM コン ト ローラーをプロセッシング システム (PS) に統合する方法を例と して示した リ ファレンス デザインが付属します。 このデザインは、 ザイ リ ンクス ZCU102 ボードをターゲッ ト と していますが、 変更すれば別のデバイス、 ファ ミ リ アーキテクチャ、ボードでも使用できます。 PS は AXI4-Lite インターフェイスを使用して SEM コン ト ローラーに接続されます。 AXI4-Lite インターフェイスは、 SEM コン ト ローラーの状態の監視と、 エラー条件が発生した場合のデバッグに必要です。 SEM コン ト ローラーからレポート される情報は、 このインターフェイスを使用して FIFO から読み出されます。 これらのレポートには SEM コン ト ローラーの状態に関する最も詳細な情報が含まれます。 制御、 ステータス、 割り込みの情報が、AXI4-Lite レジスタ インターフェイスを介して提供されますが、 レジスタ インターフェイスで提供されるステータス情報は、 FIFO から読み出されるレポート情報ほど詳細ではあ り ません。 割り込みは設定変更可能であ り、 SEM コン ト ローラーがコンフ ィギュレーシ ョ ン メモ リにエラーを検出した場合など、 SEM コン ト ローラーの処理が必要な場合に PS へ通知する目的で使用されます。

このアプリ ケーシ ョ ン ノート とは別に、Zynq UltraScale+ MPSoC に LogiCORE IP UltraScale+ Architecture SEM Controller を統合して使用する方法を 『Zynq UltraScale+ デバイスへの LogiCORE SEM IP の統合』 (XAPP1298) [参照 1] で説明しています。 この方法では、 AXI4-Lite インターフェイスではなく、 Zynq MPSoC プロセッサの EMIO (Extended Multiplexed I/O) から最小限の汎用 I/O (GPIO) ピンを使用して SEM コン ト ローラーと通信し、 これを管理しています。

リファレンス デザイン

リ ファレンス デザインは Vivado® Design Suite 2016.2 IP インテグレーターを使用して作成されています。

このアプリ ケーシ ョ ン ノートの リ ファレンス デザイン ファ イルは、 ザイ リ ンクスのウェブサイ トからダウンロードできます。

図 1 および図 2 に示すリ ファレンス デザインでは、 AXI4-Lite を使用して、 SEM コン ト ローラーを Zynq UltraScale+ MPSoC に接続しています。 このデザインは、 次に示す Vivado IP インテグレーター ブロ ッ クで構成されます。

• Zynq UltraScale+ MPSoC

• Processor System Reset - リセッ ト ディアサートの順序付けを制御

• AXI Interconnect - 複数の AXI ペリ フェラルを Zynq UltraScale+ MPSoC ブロ ッ クへ接続可能

• AXI Interrupt Controller -すべての AXI ペリ フェラルから Zynq UltraScale+ MPSoC ブロ ッ クへの単一割り込みを提供

• Utility Buffer - IBUFDS と して設定されたバッファー

• UltraScale Architecture Soft Error Mitigation Controller

• AXI2SEM モジュール - UltraScale Soft Error Mitigation コン ト ローラーに対する AXI インターフェイスを提供するためのさまざまなモジュール

• Constant - 信号またはバスに定数値を駆動するために使用

• Concat - 複数の信号または幅の狭い複数のバスを連結して 1 つの幅の広いバスを作成するために使用

• Slice - バスから一部のビッ ト を除去するために使用

詳細は、 「ハード ウェア」 に示す図 1、 図 2、 図 3 を参照してください。

アプリケーシ ョ ン ノート : Zynq UltraScale+ デバイス

XAPP1303 (v1.0.2) 2017 年 2 月 27 日

AXI を使用した Zynq UltraScale+ デバイスへの LogiCORE SEM IP の統合著者: Michael Welter

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  2japan.xilinx.com

AXI2SEM は AXI Interconnect を介して PS に接続します。 AXI Interconnect によ り、 その他の AXI ペリ フェラルから PS への接続が可能になり ます。 このリ ファレンス デザインでは、 AXI Interrupt Controller も AXI Interconnect に接続します。AXI2SEM モジュールには多数のサブモジュールが含まれており、 事実上、 PS と SEM コン ト ローラー間の通信ブリ ッジの役割を果たします。 ブロ ッ ク デザインの詳細は、 図 3 を参照してください。 AXI2SEM のレジスタ インターフェイスを使用するこ とで、 PS から SEM コン ト ローラーにコマンドを送信できます。 また、 SEM コン ト ローラーの状態およびステータス情報を PS に提供するためにも使用されます。 AXI2SEM のレジスタ定義については、 「付録 A—AXI2SEM のレジスタ定義」 を参照してください。 PS は AXI4-Lite インターフェイスを使用して、すべての SEM コマンドを FIFO に書き込みます。 SEM コン ト ローラーのステータス情報はすべて、 同じ AXI4-Lite インターフェイスを使用して、 も う 1 つの FIFO から読み出されます。 AXI2SEM ICAP レジスタを使用するために、 ICAP インターフェイスがアービ ト レーシ ョ ンされます。

リ ファレンス デザインでは、 AXI4-Lite インターフェイスは 100MHz で動作し、 SEM は 74.25MHz の非同期クロ ッ ク レートで動作します。 デザインを実証するために最小限の割り込みを使用します。 PS は ICAP レジスタを介して SEM コン トローラー を初期化後、 SEM Ready 割り込みのアサート を検出します。 これは SEM の初期化が完了したこ とを示します。割り込みが処理され、 初期化レポートがログ FIFO から読み出されます。 SEM UART インターフェイスは使用されないため、 ログ FIFO に SEM コン ト ローラーの ASCII ステータス情報が含まれます。次に PS が、PL のコンフ ィギュレーシ ョ ン メモ リに訂正可能なエラーを挿入します。 このエラーを SEM コン ト ローラーが検出し、 訂正します。 これによ り、 訂正ステート割り込みが ト リガーされます (この割り込みは、 SEM コン ト ローラーの status_correction 信号によって ト リガーされる )。 PS はこの割り込みを処理し、 ログ FIFO からの訂正レポート を読み出します。 最後に、 PS が訂正不可能なエラーを挿入します。 SEM コン ト ローラーはこのエラーを検出しても訂正できませんが、 SEM コン ト ローラー の status_uncorrectable 信号によ り訂正不可能な割り込みが生成されます。 この割り込みが処理される と、 FPGA のリ コンフ ィギュレーシ ョ ンが要求されます。

重要: このアプリ ケーシ ョ ンとすべての付属ファイルは、 デモンス ト レーシ ョ ンのみを目的と して提供されています。 また、 すべてのファイルは現状有姿で提供されています。 リ ファレンス デザインは、 ド ロ ップイン ソ リ ューシ ョ ンと しての使用を意図しているものではあ り ません。 新しいデザインにリ ファレンス デザインを統合する場合、 統合後のソリ ューシ ョ ンが機能および信頼性の目標を満たしているかを検証する必要があ り ます。

ハードウェア

リファレンス デザイン

図 1 に、 リ ファレンス デザインの概略ブロ ッ ク図を示します。 評価ボードの JTAG ポート を PC に接続し、 シ リ アル ポート を USB に接続します。 よ り詳細な Vivado IP インテグレーターの図は、図 2 を参照してください。 SEM コン ト ローラーへのコマンド送信には PS を使用します。 AXI2SEM モジュールは、 レジスタ インターフェイス モジュール内で AXI ト ランザクシ ョ ンを SEM コマンドに変換します。 その後、 SEM コン ト ローラーにこのコマンドを送信します。 AXI2SEM モジュールは、 レジスタ インターフェイスを介して PS に SEM ステータスを提供します。 PS に割り込みを送るため、AXI2SEM モジュールに IP 割り込みコン ト ローラーがインスタンシエート されます。 SEM のエラー軽減措置は割り込みに基づいている必要があ り ます。 AXI2SEM からの割り込みは AXI Interrupt Controller に接続され、 こ こから割り込みが PS に送信されます。 AXI Interrupt Controller で複数の AXI ペリ フェラルの割り込みが単一の割り込みに集約され、 PS に接続されます。 このリ ファレンス デザインでは、 その他の AXI ペリ フェラルは AXI2SEM モジュールのみです。

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  3japan.xilinx.com

AXI2SEM では、 表 1 に示した信号を評価ボードの GPIO LED に接続してステータス情報を示します。

M

X-Ref Target - Figure 1

図 1:概略ブロック図

表 1: AXI2SEM の GPIO 接続

信号名 GPIO LED 説明

irq GPIO LED[4] PS への割り込み要求

cap_req GPIO LED[5] ICAP の要求

cdc_icap_grant GPIO LED[6] ICAP の許可

cdc_icap_release GPIO LED[7] ICAP の解放

Processing System (PS) Programmable Logic (PL)

LEDs

AXI Interconnect

DIP

Swi

tche

s

Terminal

Evaluation Board

JTAG

PC

Processor System

Resetpl_ resetn0

pl_clk0

M_AXI_ HPMO_LPD

AXI INTC

AXI2SEM

peripheral_ aresetninterconnect_ aresetn

interrupt

irqpl_ps_irq0

LVDS CLK

SEM Controller

mon

itor_

txm

onito

r_rx

icap

_*

stat

us_*

74.25MHz

100MHz

Existing Core

Existing IP Core

Custom VHDL ModuleX18115-022217

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  4japan.xilinx.com

X-Ref Target - Figure 2

図 2: Vivado IP インテグレーター図

X18116-022217

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  5japan.xilinx.com

図 3 に、 AXI2SEM のブロッ ク図を示します。

X-Ref Target - Figure 3

図 3: AXI2SEM ブロック図

X18734-022217

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  6japan.xilinx.com

axi2sem.vhd

この VHDL モジュールはラ ッパー ファ イルで、 AXI Interconnect と SEM コン ト ローラー間のブリ ッジを提供するサブモジュールと ロジッ クを含みます。

このモジュールのソース コードを含むアプリ ケーシ ョ ン ノート付属の ZIP ファ イルは、<path>/Projects/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source にあ り ます。 次にデザイン階層を示します。

axi2sem.vhd|-- axi_lite_ipif.vhd|-- interrupt_control.vhd`-- axi2sem_core.vhd |-- axi2sem_reg_intf.vhd |-- axi2sem_cdc.vhd | |-- send_ascii_fsm | |-- xpm_cdc_single * | |-- xpm_cdc_array_single * | |-- xpm_cdc_async_rst * | ‘-- xpm_fifo_async ** `-- ascii_parser.vhd |-- init_check.vhd |-- rom_check.vhd `-- crc_check.vhd

* The XPM_CDC modules are provided with Vivado tools.** The XPM_FIFO modules are enabled when the reference design is created. Refer to 「プロジェク ト を作成する」 for more information.

このモジュールは、 LogiCORE IP AXI4-Lite IP Interface (IPIF) モジュール (axi_lite_ipif.vhd)、 LogiCORE IP Interrupt Control モジュール (interrupt_control.vhd)、 axi2sem_core モジュールをインスタンシエート します。 前述の LogiCORE IP モジュールは、 この リ ファレンス デザインで利用した既存のデザインです。 モジュール動作の詳細は、 それぞれの資料を参照して ください。

• 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) [参照 2]

• 『AXI4-Lite IPIF LogiCORE IP 製品ガイ ド』 (PG155) [参照 3]

LogiCORE IP Interrupt Control モジュール [参照 2] を使用して、 複数の AXI2SEM 割り込みを単一の割り込み (ip2intc_irpt) に集約し、 AXI Interrupt controller の入力信号 (intr) [参照 4] に接続しました。 エラー軽減措置はすべて、 受信した割り込みに基づいて実行する必要があ り ます。 何らかの割り込みが発生したら、 AXI2SEM レジスタをデバッグに使用します。 AXI2SEM レジスタは、 SEM コン ト ローラーの状態の定期的な監視にも使用します。

LogiCORE IP Interrupt Controller では最大 32 の割り込みを生成できます。 このデザインでは 12 の割り込みが接続されていますが、 リ ファレンス デザインで有効になっているのは 4 つのみです。 表 2 では、 有効な割り込みを太字で示しています。 割り込みは個別に有効化でき、 必要に応じて増やすこ と もできます。 各割り込みには、 パススルー (反転または非反転)、 レジスタ レベル (反転または非反転)、 立ち上がりエッジ検出または立ち下がりエッジ検出を個別に設定できます。詳細は、 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) を参照してください [参照 2]。 表 2 に、リ ファレンス デザインの割り込みを示します。

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  7japan.xilinx.com

重要: このアプリ ケーシ ョ ンとすべての付属ファイルは、 デモンス ト レーシ ョ ンのみを目的と して提供されています。 また、 すべてのファイルは現状有姿で提供されています。 リ ファレンス デザインは、 ド ロ ップイン ソ リ ューシ ョ ンと して使用を意図しているものではあ り ません。 新しいデザインにリ ファレンス デザインを統合する場合、 統合後のソ リ ューシ ョ ンが機能および信頼性の目標を満たしているかを検証する必要があ り ます。

表 2 に未テス ト と記された割り込みはテス ト されていませんが、 意図した動作をする と予想されています。 ユーザー システムでは、 次の割り込みを有効にして監視するこ とを推奨します。

SEM Ready、 Status Uncorrectable、 Status Correction、 Status Initialization、 Initialization Error、 Heartbeat Timeout、 Log FIFO Overflow、 Log FIFO Full、 Log FIFO Underflow

訂正ステート を通過する と、 常に、 SEM コン ト ローラーのステータス訂正信号によって訂正ステート割り込みが生成されるため、 ROM Detected 割り込みと CRC Detected 割り込みは必ずしも監視する必要はあ り ません。 この動作は、 Status Uncorrectable 割り込みも同じです。 訂正不可能な割り込みが発生する前に必ず Status Correction 割り込みが生成されます。つま り、 訂正可能な割り込みの後に訂正不可能な割り込みが処理されます。 SEM が検出したエラーが訂正可能であるかど うかに関係なく、 訂正可能な割り込みがアサート された時点で、 すべての SEM ログ情報がログ FIFO に書き込まれます。 必要な場合、 これらの割り込みを使用してアサート された割り込みのタイプを特定できますが、 AXI2SEM レジスタのエラー レジスタを読み出すこ とでも、 発生したエラーのタイプを特定できます。

注記: status_correction 信号から割り込みが生成された場合、 SEM コン ト ローラーが訂正を実行したという意味ではあ り ません。 この割り込みは、 SEM コン ト ローラーの訂正ステートが通過したこ とのみを示しています。 訂正の実行時にアサート される割り込みを作成するには、 デザインにロジッ クを追加する必要があ り ます。 その場合、status_correction 信号の立ち下がりエッジを status_uncorrectable 信号と組み合わせて使用します。status_correction 信号の立ち下がりエッジで status_uncorrectable が 0 である場合、 訂正が実行されています。 status_correction 信号の立ち下がりエッジで status_uncorrectable が 1 である場合、 訂正不可能なエラーが発生しています。

Status Initialization 割り込みはテス ト済みですが、 リ ファレンス デザインでは、 SEM Ready 割り込みを使用するこ とを推奨します。 SEM Ready 割り込みは、 init_check.vhd モジュールによって駆動されます。 SEM コン ト ローラーの初期化プロセスが完了し、 コン ト ローラーのステートがアイ ドル、 検出のみ、 監視のいずれかになるまでアサート されません。 初期化プロセスが完了する と Status Initialization 割り込みがアサート されますが、 SEM コン ト ローラーがアイ ドル、検出のみ、 監視のどのステートに遷移したこ とを示す情報は提供されません。 また、 SEM Ready レジスタが特定の値に設定されたこ とをソフ ト ウェア アプリ ケーシ ョ ンで検証できますが、 レジスタの読み出し前にソフ ト ウェアを待機させなくても、 SEM Ready 割り込みを検出する とすぐにレジスタを読み出すこ とができます。

表 2: AXI2SEM の割り込み

割り込み名 設定 有効/無効 テスト状況

SEM Ready 立ち上がりエッジ検出 有効 テスト済み

CRC Detected 立ち上がりエッジ検出 無効 未テス ト

ROM Detected 立ち上がりエッジ検出 無効 未テス ト

Status Uncorrectable 立ち上がりエッジ検出 有効 テスト済み

Status Correction 立ち下がりエッジ検出 有効 テスト済み

Status Initialization 立ち下がりエッジ検出 無効 テス ト済み

Initialization Error 立ち上がりエッジ検出 無効 未テス ト

Heartbeat Timeout 立ち上がりエッジ検出 有効 未テスト

Log FIFO Overflow 立ち上がりエッジ検出 無効 未テス ト

Log FIFO Full 立ち上がりエッジ検出 無効 未テス ト

Log FIFO Underflow 立ち上がりエッジ検出 無効 未テス ト

Log FIFO Data Available 立ち上がりエッジ検出 無効 未テス ト

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  8japan.xilinx.com

axi_lite_ipif.vhd

詳細は、『AXI4-Lite IPIF LogiCORE IP 製品ガイ ド』 (PG155) [参照 3] を参照してください。 このモジュールのソース コードを含む ZIP ファ イルは、 MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0 にあ り ます。

interrupt_control.vhd

詳細は、 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) [参照 2] を参照してください。 このモジュールのソース コードを含む ZIP ファ イルは、 MPSoC_AXI2SEM/Vivado/hdl/interrupt_control_v3_1 にあ ります。

axi2sem_core.vhd

このモジュールはラ ッパー ファ イルで、 SEM レジスタ インターフェイス モジュール (axi2sem_reg_intf.vhd)、SEM/AXI ク ロ ッ ク乗せ換えモジュール (axi2sem_cdc)、 ASCII 解析ロジッ ク モジュール (ascii_parser.vhd) をインスタンシエート します。

axi2sem_reg_intf.vhd

このモジュールは、 「付録 A—AXI2SEM のレジスタ定義」 に記載したすべてのレジスタをインスタンシエート します。SEM コン ト ローラーのコマンド、 状態、 ステータスに関するさまざまな情報を提供し、 この情報への AXI インターフェイスも提供します。 レジスタ定義の詳細は、 表 4、 「AXI2SEM レジスタ マップ」 を参照してください。 SEM コン ト ローラーの動作の詳細は、『UltraScale Architecture Soft Error Mitigation Controller LogiCORE IP 製品ガイ ド』 (PG187) [参照 5] を参照して ください。

axi2sem_cdc.vhd

このモジュールは、 AXI と SEM 間のすべてのクロ ッ ク乗せ換えロジッ クを提供します。 また、 XPM (Xilinx Parameterized Macros) を使用します。 ク ロ ッ ク乗せ換えロジッ クは XPM_CDC マクロを使用し、 非同期 FIFO (ログ FIFO およびコマンド FIFO) は XPM_FIFO マクロを使用します。XPM_CDC マクロの詳細は、『UltraScale アーキテクチャ ライブラ リ ガイ ド』 (UG974) [参照 6] を参照して ください。 実装されている XPM_CDC マクロは次のとおりです。

• xpm_cdc_single

• xpm_cdc_array_single

• xpm_cdc_async_rst

このアプリ ケーシ ョ ン ノートの作成時点で、 XPM_FIFO マクロは 2016.2 のベータ リ リースでした。 したがって、 このマクロには一定の制限事項があ り ます。 詳細は、 次に示す 「XPM_FIFO のサポート対象外機能 (2016.2 xpm_fifo ベータ  リ リース)」 および 「XPM_FIFO のサポート対象機能 (2016.2 xpm_fifo ベータ  リ リース)」 リ ス ト と、MPSoC_AXI2SEM/ip/xpm_fifo/limitations ディ レク ト リ を参照してください。 リ ス トに含まれていない機能をサポート対象と見なすのではなく、 質問や不明な点がある場合は FAE までお問い合わせください。 XPM_FIFO マクロの作成に必要なテンプレートが ZIP ファ イルに含まれています。 これを有効にしてください。 詳細は、 「PL デザインの生成」を参照して ください。

XPM_FIFO のサポート対象外機能 (2016.2 xpm_fifo ベータ  リ リース)

° 非対称データ幅

° ECC

° DOUT リセッ ト値

° プログラマブルなフル/空

° データ カウン ト

° フルを 1 にリセッ トするためのオプシ ョ ン

XPM_FIFO のサポート対象機能 (2016.2 xpm_fifo ベータ  リ リース)

° ネイティブ インターフェイス

° ク ロ ッ ク ド メ イン (共通、 個別)

° 読み出しモード (標準、 First Word Fall Through (FWFT))

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  9japan.xilinx.com

° 幅: 1 ~ 1024 (対称のみ)

° 深さ : 最大 8192 (2 のべき乗)

° FIFO 読み出しレイテンシ: 0、 1

- 値 0: FWFT のみに適用

- 値 1: 標準読み出しモードのみに適用

° アンダーフロー /オーバーフロー

将来の Vivado ツール リ リースでは、 このモジュールのインスタンシエーシ ョ ンが変更される予定です。 したがって、2016.2 よ り後の Vivado バージ ョ ンをターゲッ トにする場合は該当部分のコードを変更して、 リ ファレンス デザインに含まれる XPM_FIFO 用のテンプレート を無効にする必要があ り ます。 テンプレートの有効化方法は、 「PL デザインの生成」を参照して ください。

ログ FIFO には、 初期化、 ステータス、 訂正レポート などの SEM コン ト ローラー ログ レポートが含まれています。 構成は次のとおりです。

FIFO_MEMORY_TYPE => "bram", --string; "auto", "bram", "lutram", "uram" or "builtin";FIFO_WRITE_DEPTH => 8192, --positive integerWRITE_DATA_WIDTH => 8, --positive integerREAD_MODE => "fwft", --string; "std" or "fwft";FIFO_READ_LATENCY => 0, --positive integer; 0 or 1;READ_DATA_WIDTH => 8, --positive integerCDC_SYNC_STAGES => 2, --positive integerWRCOUNT_TYPE => "disable_wr_dc", --do not changePROG_FULL_THRESH => 10, --do not changeRDCOUNT_TYPE => "disable_rd_dc" --do not changePROG_EMPTY_THRESH => 10, --do not changeDOUT_RESET_VALUE => "0", --do not changeRDCLK_FASTER => 0, --do not changeECC_MODE => "no_ecc", --do not changeEN_ECC_PIPE => 0, --do not changeWAKEUP_TIME => 0, --do not changeAUTO_SLEEP_TIME => 0 --do not change

SEM コン ト ローラーへのコマンド送信にはコマンド FIFO を使用します。 構成は次のとおりです。

FIFO_MEMORY_TYPE => "bram", --string; "auto", "bram", "lutram", "uram" or "builtin";FIFO_WRITE_DEPTH => 1024, --positive integerWRITE_DATA_WIDTH => 8, --positive integerREAD_MODE => "fwft", --string; "std" or "fwft";FIFO_READ_LATENCY => 0, --positive integer; 0 or 1;READ_DATA_WIDTH => 8, --positive integerCDC_SYNC_STAGES => 2, --positive integerWRCOUNT_TYPE => "disable_wr_dc", --do not changePROG_FULL_THRESH => 10, --do not changeRDCOUNT_TYPE => "disable_rd_dc", --do not changePROG_EMPTY_THRESH => 10, --do not changeDOUT_RESET_VALUE => "0", --do not changeRDCLK_FASTER => 0, --do not changeECC_MODE => "no_ecc", --do not changeEN_ECC_PIPE => 0, --do not changeWAKEUP_TIME => 0, --do not changeAUTO_SLEEP_TIME => 0 --do not change

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  10japan.xilinx.com

send_ascii_fsm.vhd

このモジュールは、 SEM コン ト ローラーに SEM コマンドを送信します。 コマンドは ASCII 形式で、 コマンド レジスタに含まれるコマンド ビッ ト (Command [10:0]) のいずれかが書き込まれるまで開始されません。 コマンド レジスタ内の各ビッ ト を使用して、 SEM コマンド と同じ形式でコマンドが作成されます。 コマンドの詳細は、 『UltraScale Architecture Soft Error Mitigation Controller LogiCORE IP 製品ガイ ド』 (PG187) [参照 5] を参照して ください。各コマンドが一度に 1 バイトずつ、 コマンド FIFO に書き込まれます。 Command [10:0] の 1 ビッ トだけに 1 が書き込まれてコマンドが開始される と、書き込みビジー信号 (Command[27]) がアサート され、 コマンド FIFO にコマンドの最終バイ トが書き込まれるまでアサートが維持されます。

ascii_parser.vhd

このモジュールはラ ッパー ファ イルで、 init_check.vhd モジュール、 crc_check.vhd モジュール、rom_check.vhd モジュールをインスタンシエート します。

init_check.vhd

このモジュールは、 SEM コン ト ローラーの初期化に関するステータス情報を提供します。 SEM が ICAP にアクセスする (icap_request = 1、 icap_grant = 1、 icap_release = 0) まで待機したのち、 初期化レポート内で ASCII パターンをチェッ ク します。 このサンプル初期化レポート を使用して、 チェッ クの実行順序が番号付けされます。

SEM_ULTRA_V3_1 SC 01 1. Checks for SC FS 04 AF 01 ICAP OK 2. Checks for OK RDBK OK 3. Checks for OK INIT OK 4. Checks for OK SC 02 O> 5. Checks for 'I>' or 'O>' or 'D>'

このモジュールの FSM がチェッ クを進めるのに従って、 SEM Ready レジスタ内のビッ トがセッ ト されます。 SEM 初期化プロセスが完了した後で、 SEM が ICAP の制御を失う と、 初期化レポートのチェッ ク プロセスが再開されます。 初期化が完了する と、 FSM はソフ ト リセッ ト コマンド (R XX で、 XX がドン ト ケア) もチェ ッ ク します。 FSM がキャ リ ッジ リターンが後ろに付く ソフ ト リセッ ト コマンドを検出する と、 初期化レポートのチェッ ク プロセスが再開されます。

rom_check.vhd

このモジュールは、 SEM コン ト ローラーで ROM エラーが発生したかど うかをチェッ ク します。 SEM コン ト ローラーから受け取った ASCII 文字を、 ROM の ASCII 表現 (52 4F 4D) と比べてチェッ ク します。 このチェッ クは、 ASCII 文字がログ FIFO に書き込まれる前に実行されます。 ROM パターンに一致した場合、 エラー レジスタ [3] (ROM 検出) が High にアサート されます。 アサート された後、 ク リ アされるまでこのビッ トはアサート を保持します。 このビッ ト をク リ アするには、 エラー レジスタ [3] に 1 を書き込みます。

crc_check.vhd

このモジュールは、 SEM コン ト ローラーでデバイスレベルの訂正不可能な CRC エラーが発生したかど うかをチェッ ク します。 SEM コン ト ローラーから受け取った ASCII 文字を、 CRC の ASCII 表現 (43 52 43) と比べてチェッ ク します。 このチェッ クは、 ASCII 文字がログ FIFOに書き込まれる前に実行されます。 CRC パターンに一致した場合、 エラー レジスタ [1] (CRC 検出) が High にアサート されます。 アサート された後、 それを保持します。 このビッ トはク リ アできません。

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  11japan.xilinx.com

ソフ トウェア アプリケーシ ョ ン

アプリケーシ ョ ン ファイル

このアプリ ケーシ ョ ン ノートでは、 ハード ウェア デザイン用のソフ ト ウェア アプリ ケーシ ョ ンを提供しています。 このアプリ ケーシ ョ ンは次の 3 つのファイルで構成されています。

• MPSoC_AXI2SEM/SDK/source/axi2sem_pl_intr_test.h: このファ イルは、 AXI Interrupt Controller レジスタ、AXI2SEM レジスタ、 AXI2SEM IP Interrupt Controller レジスタへのアクセスに便利な各種オフセッ ト を提供します。

• MPSoC_AXI2SEM/SDK/source/axi2sem_pl_intr_test.c: これはメ イン アプリ ケーシ ョ ンで、 端末を介してユーザーと、 AXI4-Lite を介して SEM コン ト ローラーと インターフェイスします。 このファ イルには、 その作成に必要な手順がコ メン ト と して含まれています。

• MPSoC_AXI2SEM/SDK/source/axi2sem_intr.c: これは、 AXI2SEM の割り込みハンド ラーです。 対象の割り込みは、 SEM Ready、 Correction 、 Uncorrectable、 Heartbeat Present です。 その他の割り込みが有効になっている場合、すべてのソフ ト ウェア ファ イルを変更して追加する必要があ り ます。 割り込みを検出する と、 はじめに IPISR ビットがク リ アされ、 次に AXI INTC IAR ビッ トへの書き込みによ り AXI INTC IPR ビッ トがク リ アされます。

アプリ ケーシ ョ ンの完全なログは、 このアプリ ケーシ ョ ン ノートに付属する次の ZIP ファ イルに含まれています。

MPSoC_AXI2SEM/teraterm_axi2sem_intc.log

推奨: これらのアプリ ケーシ ョ ンは 『Zynq UltraScale+ MPSoC テクニカル リ ファレンス マニュアル』 (UG1085) [参照 7] と 『Zynq UltraScale+ MPSoC レジスタ リ ファレンス』 (UG1087) [参照 8] に基づいて作成されています。これらの文書を参考にして ください。

リファレンス デザイン

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  12japan.xilinx.com

ツール フローおよび検証

表 3 に、 リ ファレンス デザインで使用したツール フローおよび検証手順を示します。

表 3: リファレンス デザインの詳細

パラメーター 説明

全般

開発元 ザイ リ ンクス

ターゲッ ト デバイス xczu9eg-ffvb1156

ソース コードの提供 あ り

ソース コードの形式 (提供される場合) VHDL、 C

既存のザイ リ ンクス アプリ ケーシ ョ ン ノート / リ ファレンス デザイン、 サードパーティ、 Vivado ツールからデザインへのコード /IP の使用 (使用した場合はその詳細)

UltraScale Soft Error Mitigation (ベータ )

XPM_FIFO_ASYNC (2016.2 ベータ )

XPM_CDC_SINGLE

XPM_CDC_ARRAY_SINGLE

XPM_CDC_ASYNC_RST

Zynq UltraScale+ MPSoC

Processor System Reset

AXI Interconnect

AXI Interrupt Controller

Utility Buffer

Constant

AXI4-Lite IPIF

Interrupt Control

シミ ュレーシ ョ ン

論理シ ミ ュレーシ ョ ンの実施 なし

タイ ミ ング シ ミ ュレーシ ョ ンの実施 なし

論理シ ミ ュレーシ ョ ンおよびタイ ミ ング シ ミ ュレーシ ョン用テス トベンチの提供

なし

テス トベンチの形式

使用したシ ミ ュレータ /バージ ョ ン

SPICE/IBIS シ ミ ュレーシ ョ ンの実施 なし

インプリ メンテーシ ョ ン

使用した合成ツール/バージ ョ ン Vivado design suite 2016.2

使用したインプリ メンテーシ ョ ン ツール/バージ ョ ン Vivado design suite 2016.2

スタティ ッ ク タイ ミ ング解析の実施 あ り

ハードウェア検証

ハードウェア検証の実施 あ り

使用したプラ ッ ト フォーム Zynq UltraScale+ MPSoC ZCU102 評価ボード

必要な環境

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  13japan.xilinx.com

必要な環境

このデザインは次のハードウェアと ソフ ト ウェアを使用して開発されています。 AXI2SEM、 XPM_FIFO、 SEM、 「その他のバージ ョ ンのソフ ト ウェアをターゲッ ト とする場合」 の詳細は、 「制限事項と検討事項」 を参照してください。

ハードウェア

• HW-Z1-ZCU102 Rev B 以降

• ZU9EG シ リ コン

• JTAG プログラ ミ ング ケーブル

• JTAG 接続用の USB ケーブル

• UART 接続用の USB ケーブル

ソフ トウェア

• Vivado Design Suite 2016.2

• ソフ ト ウェア開発キッ ト (SDK) 2016.2

• シ リ アル UART 接続用の Tera Term 4.83

リファレンス デザイン ファイル

最上位のリ ファレンス デザイン ファ イル xapp1303-integrating-sem-ip-with-axi.zip には 1 つのリ ファレンス デザインが含まれます。 リ ファレンス デザインのディ レク ト リ構造を次に示します。

必要な環境

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  14japan.xilinx.com

ディ レク ト リ構造

MPSoC_AXI2SEM |-- teraterm_axi2sem_intc.log | - Full log file from running the SW Application |-- readme.txt | - This file |-- ip | |-- sem_ultra_v3_1 <-- Packaged IP required for ZU9EG support | `-- xpm_fifo <-- In Beta release - see limitations | |-- limitations | | |-- LIMITATIONS_XPM_FIFO.txt | | `-- XPM_EA_Cust_r3.pptx | `-- templates | |-- debug.xml | |-- index.html | |-- systemverilog.xml | |-- template.xsl | |-- verilog.xml | |-- vhdl.xml | `-- xdc.xml |-- SDK | |-- boot_img | | |-- axi2sem_intc_a53_0.elf | | |-- BOOT.bin | | |-- fsbl_a53_0.elf | | |-- output.bif | | `-- zu9eg_sem_wrapper.bit | `-- source | |-- axi2sem_intr.c | |-- axi2sem_pl_intr_test.c | `-- axi2sem_pl_intr_test.h `-- Vivado |-- hdl | |-- axi_lite_ipif_v3_0 <-- VHDL source provided in XAPP | |-- axi2sem | | |-- constraints | | | `-- zu9eg_sem.xdc | | `-- axi2sem | | |-- ascii_parser.vhd | | |-- axi2sem.vhd | | |-- axi2sem_cdc.vhd | | |-- axi2sem_core.vhd | | |-- axi2sem_reg_intf.vhd | | |-- crc_check.vhd | | |-- init_check.vhd | | |-- rom_check.vhd | | `-- send_ascii_fsm.vhd | `-- interrupt_control_v3_1 <-- VHDL source provided in XAPP `-- tcl |-- board_repository.tcl |-- ip_repository.tcl `-- source_hdl.tcl

ip

このディ レク ト リには、 ZCU102 ボード上の ZU9EG デバイスをサポート した SEM UltraScale+ ファ ミ リのパッケージ済みデザイン (sem_ultra_v3_1) が格納されます。

必要な環境

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  15japan.xilinx.com

SDK

• SDK/boot_img

° BOOT.bin - ELF および BIT ファ イルを含むブート イ メージ ファ イル

° fsbl_a53_0.elf - FSBL (First Stage Boot Loader) ソフ ト ウェア アプリ ケーシ ョ ン データを含む

° output.bif - BOOT イ メージの作成に必要なファイルの参照先を記述した、 SDK で生成されるファ イル

° axi2sem_intc_a53_0.elf - AXI2SEM ソフ ト ウェア アプリ ケーシ ョ ン データを含む

° zu9eg_sem_wrapper.bit

• SDK/source

° axi2sem_pl_intr_test.h - 各種 AXI2SEM レジスタにアクセスするためのアドレス オフセッ ト と割り込みマスクを含むヘッダー ファ イル

° axi2sem_pl_intr_test.c - このリ ファレンス デザインの演習用ソフ ト ウェア アプリ ケーシ ョ ン

° axi2sem_intr.c - ソフ ト ウェア アプリ ケーシ ョ ンの割り込みハンド ラー

Vivado

このディ レク ト リには、 AXI2SEM の VHDL ソース ファ イルと インスタンシエート されたサブモジュール (axi_lite_ipif_v3_0 および interrupt_control_v3_1) が含まれます。 リ ファレンス デザインを一から作成する際に役立つ Tcl ファ イルも含まれています。

• hdl/axi_lite_ipif_v3_0 - このディ レク ト リには、 AX4-Lite IP Interface (IPIF) のソース コードが含まれます。 このソース コードは AXI2SEM モジュールにインスタンシエート されます。 詳細は、 『AXI4-Lite IPIF LogiCORE IP 製品ガイ ド』 (PG155) [参照 3] を参照してください。

• hdl/axi2sem - AXI2SEM モジュール向けのすべての VHDL ソース ファ イルを含む

° ascii_parser.vhd

° axi2sem.vhd

° axi2sem_cdc.vhd

° axi2sem_core.vhd

° axi2sem_reg_intf.vhd

° crc_check.vhd

° init_check.vhd

° rom_check.vhd

° send_ascii_fsm.vhd

• hdl/interrupt_control_v3_1 - IP Interrupt Controller 用のソース コードで、 AXI2EM モジュールにインスタンシエート されます。 詳細は、 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) [参照 2] を参照して ください。

参考と して、 3 つの Tcl ファ イルを格納しています。 リ ファレンス デザインを一から作成する場合、 これらのファイルを実際のディ レク ト リ構造に合わせて編集してから Vivado Tcl コンソールで実行してください。

• tcl/board_repository.tcl - Zynq UltraScale+ ZCU102 HeadStart ウェブサイ トからダウンロード したボード ファイルのパスを設定するために使用します。

• tcl/ip_repository.tcl - SEM コン ト ローラーのビルドのリポジ ト リ をローカル リ ポジ ト リに設定するために使用します。

• tcl/source_hdl.tcl - Vivado ツールの各 VHDL ラ イブラ リに対して、 axi_lite_ipif_v3_0、 axi2sem、interrupt_control_v3_1 デザインを追加、 インポート、 割り当てするための Tcl コマンドが含まれます。

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  16japan.xilinx.com

ライセンス

SEM コン ト ローラー のライセンス

このザイ リ ンクス LogiCORE IP モジュールは、 ザイ リ ンクス エンドユーザー ライセンス規約のも とザイ リ ンクス Vivado Design Suite を使用して追加コス ト なしで提供されています。

この IP およびその他のザイ リ ンクス LogiCORE IP モジュールに関する情報は、 IP コアのウェブサイ トから入手できます。その他のザイ リ ンクス LogiCORE IP モジュールおよびツールの価格や提供状況については、 ザイ リ ンクス販売代理店にお問い合わせください。

リファレンス デザインの実行手順

セッ トアップ

こ こからはセッ ト アップ手順について説明します。 リ ファレンス デザインを一から作成する場合は、 「 リ ファレンス デザインの作成」 へ進んでください。 付属の ZIP ファ イルから リ ファレンス デザインを実行する場合は、 「 リ ファレンス デザインの実行」 へ進んでください。 このセクシ ョ ンでは、 リ ファレンス デザインの実行に必要なその他のセッ ト アップ情報についても説明します。

リファレンス デザインの作成

リ ファレンス デザインを一から生成する場合は次の手順に従ってください。 XPM_FIFO の制限事項の詳細は、「axi2sem_cdc.vhd」 を参照してください。 リ ファレンス デザインを作成するには、 次の手順に従います。

Vivado 2016.2 用の ZCU102 ボード  ファイルのダウンロード

デザインには、 このファイルをダウンロードする必要があ り ます。

注記: ZCU102 ボード ファ イルは Vivado Design Suite 2016.2 に付属しておらず、 このアプリ ケーシ ョ ン ノートにも含まれません。 ボード ファ イルは Zynq UltraScale+ ZCU102 HeadStart ウェブサイ トからダウンロード して ください。

重要: 登録後、 ファ イルにアクセスできるよ うになるまで 2 日ほどかかるこ とがあ り ます。

1. Zynq UltraScale+ ZCU102 HeadStart ウェブサイ トにアクセスします。

2. [Documentations and Designs] タブをク リ ッ ク します。

3. [ZCU102 ES1/ES2 Board Files] が表示されるまでスク ロールします。

4. 「ZCU102 2016.2 Board Files」 と記載されたファイルの [ZCU102 Board Files] リ ンクをク リ ッ ク します。

注記:必ず 2016.2 ボード ファ イルを使用してください。

5. ラ イセンス契約に同意する場合は、 [I Accept] をク リ ッ ク します。

6. デザイン ファ イルをダウンロード し、 中身を解凍します。

PL デザインの生成

こ こでは、 リ ファレンス デザインに対する PL ビッ ト ス ト リームを一から生成する方法について説明します。xapp1303-integrating-sem-ip-with-axi.zip を解凍します。 MPSoC_AXI2SEM フォルダーの readme.txt ファイルを参照して ください。

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  17japan.xilinx.com

プロジェク ト を作成する

注記: こ こからの手順では、 <path> = C:/Projects と します。

1. ディ レク ト リ を MPSoC_AXI2SEM に移動します。

cd <path>/MPSoC_AXI2SEM

2. Vivado Design Suite を起動します。

3. プロジェク ト を作成する前に、 Tcl コンソールで ZCU102 ボード リ ポジ ト リ ファ イルのパスを設定し、 ベータの XPM FIFO テンプレート を有効にします。 次に例を示します。

a. set_param board.repoPaths C:/Projects/zcu102

(source C:/Projects/MPSoC_AXI2SEM/Vivado/tcl/board_repository.tcl)

b. set_param templates.setDir

<path>/MPSoC_AXI2SEM/ip/xpm_fifo/templates

4. 新規プロジェク ト を作成して次のよ うに設定します。

a. [Project Name]: zu9eg_sem

b. [Project Location]: <path>/MPSoC_AXI2SEM. [Next] をク リ ッ ク します。

c. [RTL Project] をオンにし、 [Do not specify sources at this time] をオンにします。 [Next] をク リ ッ ク します。

d. [Boards] をク リ ッ ク し、 [Vendor] で [xilinx.com]、 [Display Name] で [Zynq UltraScale+ ZCU102 Evaluation Board] を選択します。 図 4 を参照して ください。

e. [Next] をク リ ッ ク し、 [Finish] をク リ ッ ク します。

X-Ref Target - Figure 4

図 4: ボードの選択

X18133-022217

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  18japan.xilinx.com

5. プロジェク トが開いたら、Vivado Tcl コンソールで ZU9EG デバイスに対応する SEM コン ト ローラーの IP リ ポジ ト リ パスを設定します。 また、 XPM_CDC および XPM_FIFO マクロを有効にします。

a. set_property ip_repo_paths C:/Projects/MPSoC_AXI2SEM/ip/sem_ultra_v3_1 [current_project]

b. update_ip_catalog -rebuild

IP の重複に関する次の警告は無視します。

WARNING: [IP_Flow 19-1663] Duplicate IP found for xilinx.com:ip:sem_ultra:3.1. The one found in IP location c:/Projects/MPSoC_AXI2SEM/sem_ultra_v3_1 will take precedence over the same IP in the Xilinx installed IP.

c. set_property XPM_LIBRARIES {XPM_CDC XPM_FIFO} [current_project]

(source C:/Projects/MPSoC_AXI2SEM/Vivado/tcl/ip_repository.tcl)

ファイルを追加する

1. プロジェク トに AXI2SEM、 IP Interrupt Control、 AXI_LITE_IPIF のソース ファイルを追加し、 ライブラ リ を設定します。

Tcl ファ イルを変更して Vivado ツールでソース と して設定するか、 または次のコマンドのパス情報を変更します。 例と して、 次のコマンドを Vivado Tcl コンソールに入力します。

source C:/Projects/MPSoC_AXI2SEM/Vivado/tcl/source_hdl.tcl

a. add_files -norecurse -scan_for_includes {<path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/axi2sem.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/crc_check.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/axi2sem_core.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/init_check.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/ascii_parser.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/axi2sem_cdc.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/axi2sem_reg_intf.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/send_ascii_fsm.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/rom_check.vhd}

import_files -force -norecurse {<path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/axi2sem.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/crc_check.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/axi2sem_core.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/init_check.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/ascii_parser.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/axi2sem_cdc.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/axi2sem_reg_intf.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/send_ascii_fsm.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/source/rom_check.vhd}

set_property library axi2sem_v0_0 [get_files {<path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/source/axi2sem_reg_intf.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/source/send_ascii_fsm.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/source/rom_check.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/source/axi2sem.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/source/crc_check.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/source/axi2sem_core.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/source/init_check.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/source/ascii_parser.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/source/axi2sem_cdc.vhd}]

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  19japan.xilinx.com

b. add_files -norecurse -scan_for_includes <path>/MPSoC_AXI2SEM/Vivado/hdl/interrupt_control_v3_1/hdl/src/vhdl/interrupt_control.vhd

import_files -force -norecurse <path>/MPSoC_AXI2SEM/Vivado/hdl/interrupt_control_v3_1/hdl/src/vhdl/interrupt_control.vhd

set_property library interrupt_control_v3_1_3 [get_files <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/vhdl/interrupt_control.vhd]

c. add_files {<path>/MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0/hdl/src/vhdl/pselect_f.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0/hdl/src/vhdl/address_decoder.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0/hdl/src/vhdl/slave_attachment.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0/hdl/src/vhdl/ipif_pkg.vhd}

import_files -force -norecurse {<path>/MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0/hdl/src/vhdl/axi_lite_ipif.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0/hdl/src/vhdl/pselect_f.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0/hdl/src/vhdl/address_decoder.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0/hdl/src/vhdl/slave_attachment.vhd <path>/MPSoC_AXI2SEM/Vivado/hdl/axi_lite_ipif_v3_0/hdl/src/vhdl/ipif_pkg.vhd}

set_property library axi_lite_ipif_v3_0_3 [get_files {<path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/vhdl/axi_lite_ipif.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/vhdl/pselect_f.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/vhdl/address_decoder.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/vhdl/slave_attachment.vhd <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.srcs/sources_1/imports/vhdl/ipif_pkg.vhd}]

2. プロジェク トに制約を追加します。

a. add_files -fileset constrs_1 -norecurse <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/constraints/zu9eg_sem.xdc

b. import_files -fileset constrs_1 -force <path>/MPSoC_AXI2SEM/Vivado/hdl/axi2sem/constraints/zu9eg_sem.xdc

3. [Create Block Design] をク リ ッ ク し、 [Design name] に 「zu9eg_sem」 と入力します。

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  20japan.xilinx.com

IP を図に追加する

1. Vivado の [Diagram] タブで [Add IP] を右ク リ ッ ク し、 [Zynq UltraScale+ MPSoC] をク リ ッ ク します。

a. [Run Block Automation] をク リ ッ ク します。 図 5 を参照してください。

b. [Apply Board Presets] がオンであるこ とを確認します。 [OK] をク リ ッ ク します。

c. Zynq UltraScale+ MPSoC ブロ ッ クをダブルク リ ッ ク し、 次のよ うに設定します。

d. [Clock Configuration] → [Low Power Domain Clocks] → [PL Fabric Clocks] → [PL0] に [100] MHz を設定します。図 6 を参照して ください。

X-Ref Target - Figure 5

図 5: ブロック  オート メーシ ョ ンの実行

X-Ref Target - Figure 6if

図 6: IP のリカスタマイズ ‐ クロック設定

X18136-022217

X18547-120916

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  21japan.xilinx.com

e. [PS-PL Configuration] → [General] → [Interrupts] → [PL to PS] → [IRQ0[0:7]] に [1] を設定します。図 7 を参照してください。

2. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Add IP] をク リ ッ ク します。

a. 検索ボッ クスを使用して Processor System Reset を見つけてク リ ッ ク します。 デフォルト設定を使用します。

3. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Add IP] をク リ ッ ク します。

a. 検索ボッ クスを使用して AXI Interconnect を見つけてク リ ッ ク します。 デフォルト設定を使用します。

4. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Add IP] をク リ ッ ク します。

a. 検索ボッ クスを使用して Utility Buffer を見つけてク リ ッ ク します。

b. それぞれの入力ピンをク リ ッ ク して選択し、 右ク リ ッ クで [Make External] をク リ ッ ク します。

c. IBUF_DS_P から 「icap_clk_p」 に名前を変更します ([Diagram] でピン名をク リ ッ ク して選択し、 [External Port Properties] で名前を編集)。 図 8 を参照してください。

X-Ref Target - Figure 7

図 7: IP のリカスタマイズ ‐ PL から  PS への設定

X-Ref Target - Figure 8

図 8: [External Port Properties] ‐ icap_clk_p

X18548-120916

X18549-120916

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  22japan.xilinx.com

d. IBUF_DS_N から 「icap_clk_n」 に名前を変更します ([Diagram] でピン名をク リ ッ ク して選択し、 [External Port Properties] で名前を編集)。 図 9 を参照してください。

5. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Add IP] をク リ ッ ク します。

a. 検索ボッ クスを使用して AXI Interrupt Controller を見つけてク リ ッ ク します。

b. AXI Interrupt Controller アイコンをダブルク リ ッ ク します。 [Interrupt Output Connection] を [Single] に変更します。

c. [irq] ピンをク リ ッ ク して選択し、 右ク リ ッ クで [Make External] をク リ ッ ク します。

6. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Add IP] をク リ ッ ク します。

a. 検索ボッ クスを使用して Ultrascale Soft Error Mitigation を見つけてク リ ッ ク します。

b. [Duplicate IP] ウ ィンド ウで [Add Active IP] をク リ ッ ク します。

c. アイコンをダブルク リ ッ ク します。 ド ロ ップダウン リ ス トから [Mitigation and Testing] を選択します。 [Controller Clock Period] が [13468 ns (74.25MHz)] に設定されているこ とを確認します。 [OK] をク リ ッ ク します。

d. [cap_req] ピンをク リ ッ ク して選択し、 右ク リ ッ クで [Make External] をク リ ッ ク します。

7. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Add Module] をク リ ッ ク します。

a. 検索ボッ クスを使用して axi2sem.vhd を見つけてク リ ッ ク します。

b. 次のピンをク リ ッ ク して選択し、 右ク リ ッ クで [Make External] をク リ ッ ク します。

- cdc_icap_grant

- cdc_icap_release

8. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Add IP] をク リ ッ ク します。

a. 検索ボッ クスを使用して Constant を見つけてク リ ッ ク します。

b. [Const Width] を 1 に設定し、 [Const Val] を 0 に設定します (UltraScale Soft Error Mitigation の command_strobe、aux_error_cr_ne、 aux_error_cr_es、 aux_error_uc 信号と、 Processor System Reset の mb_debug_sys_rst 信号に接続)。

9. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Add IP] をク リ ッ ク します。

a. 検索ボッ クスを使用して Constant を見つけてク リ ッ ク します。

b. [Const Width] を 1 に設定し、 [Const Val] を 1 に設定します (プロセッサ リセッ ト ブロ ッ クの ext_reset_in および dcm_locked 信号に接続)。

10. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Add IP] をク リ ッ ク します。

a. 検索ボッ クスを使用して Constant を見つけてク リ ッ ク します。

b. [Const Width] を 44 に設定し、 [Const Val] を 0 に設定します (UltraScale Soft Error Mitigation の command_code 信号に接続)。

Vivado IP インテグレーターの図で接続を完成させる

1. 図 2 「Vivado IP インテグレーター図」 のよ うにデザインを接続します。

2. [Address Editor] ウ ィンド ウで [axi_intc_0] をド ラ ッグ アンド ド ロ ップし、 [Data] の下に表示します。

X-Ref Target - Figure 9

図 9: [External Port Properties] ‐ icap_clk_n

X18550-120916

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  23japan.xilinx.com

a. 同じ処理を [axi2sem_0] に対して繰り返します。 図 10 を参照してください。

3. [Diagram] タブの何もない画面上で右ク リ ッ ク して [Validate Design] をク リ ッ ク します。

a. ポップアップ ウ ィンド ウで [OK] をク リ ッ ク します。

次の警告は無視します。

° WARNING: [BD 17-145] Zynq UltraScale IP doesn't support simulation

° WARNING: [BD 41-702] Propagation TCL tries to overwrite USER strength parameter CLOCK_PERIOD(13468) on '/sem_ultra_0' with propagated value(10000). Command ignored

° WARNING: [xilinx.com:ip:axi_intc:4.1-4] /axi_intc_0: Could not determine interrupt input port type - using default interrupt type Rising Edge. Please change this manually if necessary.

° WARNING: [BD 41-237] Bus Interface property AWUSER_WIDTH does not match between /zynq_ultra_ps_e_0_axi_periph/s00_couplers/auto_ds/S_AXI(0) and /zynq_ultra_ps_e_0/M_AXI_HPM0_LPD(16)

° WARNING: [BD 41-237] Bus Interface property ARUSER_WIDTH does not match between /zynq_ultra_ps_e_0_axi_periph/s00_couplers/auto_ds/S_AXI(0) and /zynq_ultra_ps_e_0/M_AXI_HPM0_LPD(16)

4. [Hierarchy] → [Sources] で zu9eg_sem (zu9eg_sem.bd) を右ク リ ッ ク し、 [Create HDL Wrapper] をク リ ッ ク します。

a. ダイアログ ボッ クスで [Let Vivado manage wrapper and auto-update] をオンにします。 [OK] をク リ ッ ク します。

5. zu9eg_sem_wrapper.v を右ク リ ッ ク して [Set As Top] をク リ ッ ク します。

6. ブロ ッ ク デザイン キャンバスの何もないと ころで右ク リ ッ ク して [Validate Design] をク リ ッ ク します。

a. [Rerun Validate Design] をク リ ッ ク します (手順 3)。

X-Ref Target - Figure 10

図 10: Address Editor

X18553-022217

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  24japan.xilinx.com

ブロック  デザインとビッ トス ト リームを生成する

1. Flow Navigator で [Generate Block Design] をク リ ッ ク します。

a. [Generate] をク リ ッ ク します (図 11 参照)。

2. Flow Navigator で [Generate Bitstream] をク リ ッ ク し、 インプ リ メン ト したデザインを開き、 すべてのタイ ミ ング制約が満たされているこ とを確認します。

注記:図 12 に一覧を示す XPM_CDC の重要な警告は、 このデザインの機能性に影響を与えないため無視してかまいません。

X-Ref Target - Figure 11

図 11:出力ファイルの生成

X-Ref Target - Figure 12

図 12:無視できる XPM_CDC の重要な警告

X18559-120916

X18560-120916

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  25japan.xilinx.com

3. ビッ ト ス ト リームをエクスポートするには、 [File] → [Export] → [Export Hardware] をク リ ッ ク します。 [Include bitstream] をオンにします。

4. [File] → [Launch SDK] をク リ ッ ク します。

これで SDK が起動してソフ ト ウェア アプリ ケーシ ョ ンを作成できるよ うにな り ます。 「PS ソフ ト ウェア アプリ ケーシ ョンの生成」 に進みます。

PS ソフ トウェア アプリケーシ ョ ンの生成

こ こでは、 リ ファレンス デザインのソフ ト ウェア アプリ ケーシ ョ ンの部分を一から生成する方法について説明します。

注記: こ こからの手順では、 <path> = C:/Projects と します。

1. [File] → [New] → [Application Project] をク リ ッ ク して、 FSBL アプリ ケーシ ョ ン プロジェク ト を作成します。

a. [Project name] に 「fsbl_a53_0」 と入力します。 [Next] をク リ ッ ク します。

b. [Zynq MP FSBL] を選択します。 [Finish] をク リ ッ ク します。 図 13 を参照してください。

X-Ref Target - Figure 13

図 13: Zynq MP FSBL テンプレート

X18159-022217

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  26japan.xilinx.com

2. アプリ ケーシ ョ ン プロジェク ト を作成します。

a. [File] → [New] → [Application Project] をク リ ッ ク します。

b. [Project name] に 「axi2sem_intc_a53_0」 と入力します。 [Next] をク リ ッ ク します。

c. [Hello World] を選択します。 [Finish] をク リ ッ ク します。

d. [Project Explorer] で helloworld.c を右ク リ ッ ク し、 [Delete] をク リ ッ ク します。 図 14 を参照してください。

e. axi2sem_intr.c をコピーします。コピー元: <path>/MPSoC_AXI2SEM/SDK/source/axi2sem_intr.c コピー先: <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.sdk/axi2sem_intc_a53_0/src/axi2sem_intr.c にコピーします。

f. axi2sem_pl_intr_test.c をコピーします。コピー元: <path>/MPSoC_AXI2SEM/SDK/source/axi2sem_pl_intr_test.c コピー先: <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.sdk/axi2sem_intc_a53_0/src/axi2sem_pl_intr_test.c

g. axi2sem_pl_intr_test.h をコピーします。コピー元: <path>/MPSoC_AXI2SEM/SDK/source/axi2sem_pl_intr_test.hコピー先: <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.sdk/axi2sem_intc_a53_0/src/axi2sem_pl_intr_test.h

X-Ref Target - Figure 14

図 14: Hello World の削除

X18722-022217

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  27japan.xilinx.com

3. src ディ レク ト リ を右ク リ ッ ク します。 [Refresh] をク リ ッ クする と、 コピーしたファイルが表示されます。 図 15 を参照して ください。

次のエラーが表示される場合

‘XPAR_FABRIC_AXI_INTC_0_IRQ_INTR' undeclared (first use in this function)

xparameters.h ファ イルに次の行を追加します。

/* Definitions for Fabric interrupts connected to psu_acpu_gic */#define XPAR_FABRIC_AXI_INTC_0_IRQ_INTR 121

ブート  イメージの作成

1. FSBL ELF ファ イルを boot_img ディ レク ト リにコピーします。コピー元: <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.sdk/fsbl_a53_0/Debug/fsbl_a53_0.elf

コピー先: <path>/MPSoC_AXI2SEM/SDK/boot_img/fsbl_a53_0.elf

2. BIT ファ イルを boot_img ディレク ト リにコピーします。コピー元: <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.sdk/zu9eg_sem_wrapper_hw_platform_0/zu9eg_sem_wrapper.bit

コピー先: <path>/MPSoC_AXI2SEM/SDK/boot_img/zu9eg_sem_wrapper.bit

3. axi2sem_intc_a53_0 ELF ファ イルを boot_img ディ レク ト リにコピーします。コピー元: <path>/MPSoC_AXI2SEM/zu9eg_sem/zu9eg_sem.sdk/axi2sem_intc_a53_0/Debug/axi2sem_intc_a53_0.elf

コピー先: <path>/MPSoC_AXI2SEM/SDK/boot_img/axi2sem_intc_a53_0.elf

4. [Xilinx Tools] → [Create Boot Image] をク リ ッ ク します。 次の 3 つのパーティシ ョ ンが追加されています。

° fsbl_a53_0.elf

° zu9eg_sem_wrapper.bit

° axi2sem_intc_a53_0.elf

5. [Architecture] を [Zynq MP] に変更します。

X-Ref Target - Figure 15

図 15: [Project Explorer]

X18606-122116

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  28japan.xilinx.com

6. [Create Boot Image] ダイアログ ボッ クスで [Output BIF file path] を次のよ うに設定します。<path>/MPSoC_AXI2SEM/SDK/boot_img/output.bif

a. [Output path] が上記と同じあるこ とを確認します。 図 16 を参照してください。

X-Ref Target - Figure 16

図 16: ブート  イメージの作成

X18564-022217

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  29japan.xilinx.com

7. [Add] をク リ ッ ク してパーティシ ョ ンを追加します。

a. [Create Boot Image] ダイアログ ボッ クスで [Add] をク リ ッ ク し、 fsbl_a53_0.elf パーティシ ョ ンを追加します。

b. [Add partition] ダイアログ ボッ クスで、 [File path] を次のよ うに設定します。<path>/MPSoC_AXI2SEM/SDK/boot_img/fsbl_a53_0.elf[OK] をク リ ッ ク します。

c. [Partition type] が [bootloader]、[Destination Device] が [PS]、[Destination CPU] が [A53 x64] であるこ とを確認します (図 17 参照)。

X-Ref Target - Figure 17

図 17: FSBL ブート  パーティシ ョ ン

X18565-120916

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  30japan.xilinx.com

8. [Create Boot Image] ダイアログ ボッ クスで [Add] をク リ ッ ク し、2 番目のパーティシ ョ ンに BIT ファイルを追加します。

a. [Add partition] ダイアログ ボッ クスで、 [File path] を次のよ うに設定します。<path>/MPSoC_AXI2SEM/SDK/boot_img/zu9eg_sem_wrapper.bit[OK] をク リ ッ ク します。

b. [Partition type] が [datafile]、 [Destination Device] が [PL] であるこ とを確認します。 図 18 を参照してください。

X-Ref Target - Figure 18

図 18: BIT パーティシ ョ ン

X18566-120916

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  31japan.xilinx.com

9. [Create Boot Image] ダイアログ ボッ クスで [Add] をク リ ッ ク し、 3 番目のパーティシ ョ ンに axi2sem_intc_a53_0.elf ファ イルを追加します。

a. [Add partition] ダイアログ ボッ クスで、 [File path] を次のよ うに設定します。<path>/MPSoC_AXI2SEM/SDK/boot_img/axi2sem_intc_a53_0.elf[OK] をク リ ッ ク します。

b. [Partition type] が [datafile]、 [Destination Device] が [PS]、 [Destination CPU] が [A53 0] であるこ とを確認します。図 19 を参照して ください。

X-Ref Target - Figure 19

図 19: AXI2SEM ブート  パーティシ ョ ン

X18567-120916

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  32japan.xilinx.com

10. [Boot image partitions] を確認します。 図 20 を参照してください。 [Create Image] をク リ ッ ク します。

作成したデザイン ファ イルを使用して リ ファレンス デザインを実行できます。「 リ ファレンス デザインの実行」 の 手順 2 「ボードをセッ ト アップする」 に進みます。

リファレンス デザインの実行

このセクシ ョ ンでは、 イ メージ ファ イルを JTAG を介して ZCU102 ボードにダウンロードする方法について説明します。また、 PS を使用して SEM コン ト ローラーを初期化し、 AXI4-Lite インターフェイスを介して SEM コン ト ローラーと インターフェイスする方法についても説明します。 SEM ステータス情報の表示には、 PS UART ターミナルを使用します。

1. リ ファレンス デザイン ファ イルを解凍する : xapp1303-integrating-sem-ip-with-axi.zip を解凍します。MPSoC_AXI2SEM フォルダーの readme.txt ファ イルを参照してください。

2. ボードをセッ ト アップする : 電源、 USB UART ケーブル、 および JTAG プログラ ミ ング ケーブルをボードに接続します。 MODE[3:0] ピンを ON ON ON ON (SW6) に設定します。 この DIP スイ ッチは、 [ON] と書かれた方へ矢印の向きに動かすと 0 とな り ます。 DIP スイ ッチのラベル 1 ~ 4 は MODE ピン 0 ~ 3 に対応します (図 21 および図 22 参照)。電源をオンにします。

X-Ref Target - Figure 20

図 20: ブート  イメージ パーティシ ョ ンの確認

X18723-022217

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  33japan.xilinx.com

重要: ZCU102 ボードに電源が入っているこ と、 USB UART ケーブルと JTAG ケーブルが接続されているこ と、 JTAG ケーブル ド ラ イバーがインス トールされているこ とを確認してください。 手順 3 を参照してください。

3. UART ド ラ イバーをセッ ト アップし、 COM ポート を選択します。

a. Tera Term ターミナルを 2 つ起動し、 次のよ うにシ リ アル接続を設定します。

X-Ref Target - Figure 21

図 21: ZCU102 ボード—MODE ピンと  DIP スイッチ

X-Ref Target - Figure 22

図 22: MODE[3:0] DIP スイッチの設定 (ON ON ON ON)

X18124-022217

X18664-011617

ボー レート 115200

設定 データ ビッ ト 8、 パリ ティなし、 ス ト ップ ビッ ト 1

フロー制御 なし

端末 ID VT100

改行コード (送信) CR (端末は CR を行末と して送信)

改行コード (受信) CR + LF (端末は CR を行末と して受信し、 CR + LF に展開)

ローカル エコー なし

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  34japan.xilinx.com

推奨: この接続を初めて機能させる場合は、 Silicon Labs の USB UART ド ラ イバーのインス トールが必要になるこ とがあ ります。 詳細は、 『Silicon Labs CP210x USB-to-UART インス トール ガイ ド』 (UG1033) [参照 9] を参照してください。

b. Tera Term の [Device Manager] で、PS UART の Silicon Labs Quad CP210x USB to UART Bridge: Interface 0 (COMXX) に関連付けられている 「COM XX」 ポート を選択します。 COM XX は、 使用するコンピューターによって異なり ます。 図 23 を参照して ください。

フラ ッシュ  メモリをプログラムする

1. SDK を開きます。

2. [Xilinx Tools] → [Program Flash] をク リ ッ ク します。 次のよ うに設定します。

3. プログラムが完了したら、 ボードの電源をオフにします。

4. MODE[3:0] ピンを ON ON OFF ON (SW6) に設定します。 この DIP スイ ッチは、 [ON] と書かれた方へ矢印の向きに動かすと 0 とな り ます。 DIP スイ ッチのラベル 1 ~ 4 は MODE ピン 0 ~ 3 に対応します (図 24 参照)。

5. ボードの電源をオンにします。

6. アプリ ケーシ ョ ンが開始します。 PS UART ターミナルに表示される指示に従って、 SEM コン ト ローラーが正し く動作しているかど うかを確認して ください。 ソフ ト ウェア アプリ ケーシ ョ ンの詳細は、 「ソフ ト ウェア アプリ ケーシ ョンの結果」 を参照して ください。

X-Ref Target - Figure 23

図 23:デザイン用の COM ポートの選択

[Image File] MPSoC_AXI2SEM/SDK/boot_img/BOOT.bin

[Offset] 0x00000000

[Flash Type] qspi_quad_parallel

[FSBL File] MPSoC_AXI2SEM/SDK/boot_img/fsbl_a53_0.elf

X-Ref Target - Figure 24

図 24: MODE[3:0] DIP スイッチの設定 (ON ON OFF ON)

X18127-120516

• • • • • • •• • • • • • •

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  35japan.xilinx.com

結果

リ ファレンス デザインの出力は、 アプリ ケーシ ョ ン ノート付属の ZIP ファ イルのメ イン ディ レク ト リに格納された次のログ ファ イルを参照してください。

teraterm_axi2sem_intc.log - PS からの UART 出力のログ ファ イル。 ログ FIFO から情報が読み出されるため、SEM コン ト ローラーの出力もこ こに含まれます。

レジスタの定義については、 「付録 A—AXI2SEM のレジスタ定義」 を参照して ください。

ソフ トウェア アプリケーシ ョ ンの結果

このアプリ ケーシ ョ ンは PS UART を初期化し、 PL コンフ ィギュレーシ ョ ン ロジッ クの制御を PCAP から ICAP へ移します (SEM コン ト ローラーは ICAP を必要とする )。 また、 SEM コン ト ローラーとのインターフェイスには AXI4-Lite を使用します。 SEM のステータスおよび状態情報を読み出し、 SEM にコマンドを送信するためには、 レジスタ インターフェイスが使用されます。 割り込みはエラー軽減措置の実行に使用されます。 ログを構成する 3 つのスニペッ ト を、 図 25、図 26、 図 27 に示します。

PS が PCAP を無効にし、 ICAP を有効にします。 PS は PL リセッ ト を発行し (必須ではないが、 正し く動作するこ とを示すために実施)、AXI2SEM IP Interrupt Controller (IER および GIE) と AXI Interrupt Controller (IER および MER) の割り込みを有効にします。 割り込みが有効化された後、 PS は SEM コン ト ローラー に CAP アクセスを許可します。

ICAP アービ ト レーシ ョ ン

PS は次の手順を使用して、 SEM コン ト ローラーに CAP へのアクセスを許可します。

1. ICAP レジスタを読み出して、 ビッ ト 2 (icap_request) がアサート されているこ とを確認します。 これは、 SEM が CAP へのアクセスを要求しているこ とを意味します。

2. ビッ ト 2 がセッ ト されている場合、 PS は ICAP レジスタに 0x00000002 を書き込んで、 ICAP Grant 信号をアサート します。 これで SEM コン ト ローラーは初期化を実行し、 自動的に監視ステートに移行します。

SEM Ready 割り込み

SEM が初期化される と、 割り込み (SEM Ready) が生成されます。 この割り込みを処理するために、 PS は AXI Interrupt Controller レジスタを読み出して、 どの AXI ペリ フェラルが割り込みを生成したのかを特定する必要があ り ます。 リ ファレンス デザインで、 AXI Interrupt Controller に接続されている AXI ペリ フェラルは AXI2SEM だけです。 AXI2SEM 割り込みが発生するたびに、 AXI Interrupt Controller (AXI INTC) 割り込み保留レジスタ (IPR) にビッ ト 0 がセッ ト されます。 次に、 割り込みハンド ラーが、 どの AXI2SEM 割り込みが PS 割り込みを生成したのかを特定する必要があ り ます。 このために、 IP 割り込みイネーブル レジスタ (IPIER) と IP 割り込みステータス レジスタ (IPISR) の論理積を使用します。 IPISR ビッ トは、 割り込みが有効になっているかど うかに関係なく、 割り込みが発生するたびにセッ ト されます。 IPIER は、 レジスタ内のその他の割り込みとは無関係に各割り込みを有効にするために使用します。 IPIER で割り込みが有効になっていない場合、 この割り込みが IPISR 内に存在しても、 AXI Interrupt Controller に割り込み信号はアサート されません。 論理積の結果によ り、 有効化されたアクティブな割り込みだけが PS に提供されます。

割り込みハンド ラーは現在、 4 つの割り込みを監視しています。 割り込みを検出する と、 該当する IPISR ビッ トが書き込まれてク リ アされ、 次に AXI INTC IAR レジスタへの書き込みによ り AXI INTC ISR ビッ トがク リ アされます。 詳細は、『AXI Interrupt Controller (INTC) LogiCORE IP 製品ガイ ド』 (PG099) を参照してください [参照 4]。 割り込みが有効化されているにもかかわらず、 割り込みハンド ラーがこの割り込みを監視していない場合、 割り込みが処理されるこ とがないため、 システムがハングします。 このリ ファレンス デザインでは、 12 の割り込みのうち 4 つのみ割り込みハンド ラーによって処理されます。 有効な割り込みを増やす場合、 割り込みハンド ラーも変更する必要があ り ます。

図 25 に示すスニペッ トでは、 AXI Interrupt Controller (AXI_INTC_IPR [0]) から割り込みを受け取り ます。はじめに、 IPISR への書き込みによ り、 AXI2SEM 割り込みがク リ アされます (AXI2SEM_INTR_IP_ISR [11])。 次に、 AXI INTC IAR [0] への書き込みによ り、 AXI INTC IPR [0] ビッ トがク リ アされます。 SEM Ready 割り込みがク リ アされた後、 ログには 0x00000041 と表示されます。 これは、 その他の割り込み (Log FIFO Data Available およびステータス初期化) が発生しても、 有効になっていないために AXI Interrupt Controller にアサートできないからです。 次に、 ソフ ト ウェア アプリ ケーシ ョ ンによって割り込みハンド ラーのステータス インジケーターがク リ アされます (sem_intr_status [11] および axiintc_intr_status [0])。

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  36japan.xilinx.com

ログ FIFO の読み出し  

SEM Ready 割り込みが処理された後、 PS は次のステップでログ FIFO が空になるまで読み出しを続けます。

1. ログ FIFO のステータス レジスタのビッ ト 0 を読み出します。

2. FIFO にデータが含まれる場合、 ログ データ レジスタのビッ ト [7:0] を読み出します。

3. ログ FIFO が空になるまで、 ステップ 1 および 2 を繰り返します。

エラー レジスタ  

エラー レジスタを読み出して、 初期化後にエラーが発生していないこ とを確認します。

X-Ref Target - Figure 25

図 25: AXI2SEM アプリケーシ ョ ン初期化ログ

X18120-120516

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  37japan.xilinx.com

訂正可能エラーの挿入

次に、 アプリ ケーシ ョ ンは PL コンフ ィギュレーシ ョ ン メモ リに訂正可能なエラーを挿入します。 次のステップに示すコマンドは、『UltraScale Architecture Soft Error Mitigation Controller LogiCORE IP 製品ガイ ド』 (PG187) [参照 5] に示したコマンドに対応します。

I

N C000A098000

O

AXI2SEM は次のよ うに動作します。

1. コマンド レジスタに 0x00000002 を書き込みます。 これによ り、 SEM コン ト ローラー がアイ ドル ステートに遷移します。

2. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

3. コマンド ベース レジスタ (CBR) に 0xC000A098 を書き込みます。

4. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

5. コマンド拡張レジスタ (CER) に 0x00000000 を書き込みます。

6. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

7. コマンド レジスタに 0x00000200 を書き込んで、 SEM コン ト ローラーに挿入コマンドを送信します。

8. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

9. コマンド レジスタに 0x00000001 を書き込んで、 SEM コン ト ローラーを監視ステートに遷移させます。

訂正割り込み

SEM コン ト ローラーがエラーを検出する と、 訂正割り込みが生成されます。 この割り込みは、 SEM コン ト ローラーが訂正ステートから遷移するたびに生成されます。 エラーが訂正されたこ とを意味するものではあ り ません。 訂正不可能なエラーが訂正ステートから遷移した際も、 この割り込みが生成されます。 訂正可能なエラーが発生したかど うかを特定するには、 ログ FIFO のデータを解析し、 エラー レジスタを読み出します。

図 26 に示すスニペッ トでは、 AXI Interrupt Controller (AXI_INTC_IPR [0]) から割り込みを受け取り ます。 割り込みハンドラーが訂正ステート割り込みを検出する と、 関連する IPISR ビッ トが書き込みによ り ク リ アされます (AXI2SEM_INTR_IP_ISR [7])。 次に、 AXI INTC IAR [0] への書き込みによ り、 AXI INTC IPR [0] ビッ トがク リ アされます。詳細は、 『AXI Interrupt Controller (INTC) LogiCORE IP 製品ガイ ド』 (PG099) を参照してください [参照 4]。

割り込みがク リ アされた後、 ログには 0x00000041 と表示されます。 これは、その他の割り込み (Log FIFO Data Available およびステータス初期化) が発生しても有効になっていないため、 AXI Interrupt Controller にアサートできないからです。次に、 ソフ ト ウェア アプリ ケーシ ョ ンによって割り込みハンド ラーのステータス インジケーターがク リ アされます (sem_intr_status [7] および axiintc_intr_status [0])。

訂正ステート割り込みが処理された後、 PS はログ FIFO が空になるまで読み出しを続けます。 これには、 「ログ FIFO の読み出し」 に記載したステップが使用されます。

訂正レポート情報がログ FIFO から読み出された後、 エラー レジスタが読み出されて、 訂正可能なエラーがセッ ト されたこ とが確認されます。 訂正可能なエラー ビッ トは 1 を書き込むと ク リ アされます。 実際のアプリ ケーシ ョ ンでは、 このレジスタを使用して、 エラーのタイプが訂正可能、 訂正不可能、 ROM エラー、 CRC エラーのいずれであるかが特定されます。 レジスタ内のビッ トに 1 を書き込むこ とでク リ アできるのは、 ROM エラー ビッ ト と訂正可能エラー ビッ トだけです。

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  38japan.xilinx.com

訂正不可能エラーの挿入

次に、 アプリ ケーシ ョ ンは PL コンフ ィギュレーシ ョ ン メモ リに訂正不可能なエラーを挿入します。 次のステップに示すコマンドは、『UltraScale Architecture Soft Error Mitigation Controller LogiCORE IP 製品ガイ ド』 (PG187) [参照 5] に示したコマンドに対応します。

I

N C000A098000

N C000A098004

O

X-Ref Target - Figure 26

図 26: AXI2SEM アプリケーシ ョ ンの訂正可能エラー ログ

X18121-120516

リファレンス デザインの実行手順

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  39japan.xilinx.com

AXI2SEM は次のよ うに動作します。

1. コマンド レジスタに 0x00000002 を書き込みます。 これによ り、 SEM コン ト ローラー がアイ ドル ステートに遷移します。

2. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

3. コマンド ベース レジスタ (CBR) に 0xC000A098 を書き込みます。

4. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

5. コマンド拡張レジスタ (CER) に 0x00000000 を書き込みます。

6. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

7. コマンド レジスタに 0x00000200 を書き込んで、 SEM コン ト ローラーに挿入コマンドを送信します。

8. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

9. コマンド ベース レジスタ (CBR) に 0xC000A098 を書き込みます。

10. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

11. コマンド拡張レジスタ (CER) に 0x00400000 を書き込みます。

12. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

13. コマンド レジスタに 0x00000200 を書き込んで、 SEM コン ト ローラーに挿入コマンドを送信します。

14. コマンド レジスタのビッ ト 27 を読み出して、 wr_busy がセッ ト されていないこ とを確認します。

15. コマンド レジスタに 0x00000001 を書き込んで、 SEM コン ト ローラーを監視ステートに遷移させます。

訂正不可能割り込み

SEM コン ト ローラーがエラーを検出する と、 訂正ステート割り込みが生成されます。 この割り込みは、 SEM コン ト ローラーが訂正ステートから遷移するたびに生成されます。 エラーが訂正されたこ とを意味するものではあ り ません。 訂正不可能なエラーが訂正ステートから遷移した際も、 この割り込みが生成されます。 訂正不可能なエラーが発生したかど うかを特定するには、 ログ FIFO のデータを解析し、 エラー レジスタを読み出します。

図 27 に示すスニペッ トでは、 AXI Interrupt Controller (AXI_INTC_IPR [0]) から割り込みを受け取り ます。 割り込みハンドラーが訂正可能ステート割り込みを検出します。 IPISR への書き込みによ り、 訂正ステート割り込みがク リ アされます (AXI2SEM_INTR_IP_ISR [7])。 次に、 訂正不可能なエラー割り込みが検出され、 IPISR への書き込みによ り ク リ アされます (AXI2SEM_INTR_IP_ISR [8])。 次に、 AXI INTC IAR [0] への書き込みによ り、 AXI INTC IPR [0] ビッ トがク リ アされます。 詳細は、 『AXI Interrupt Controller (INTC) LogiCORE IP 製品ガイ ド』 (PG099) [参照 4] を参照してください 。

各割り込みがク リ アされた後、 ログには 0x00000041 と表示されます。 これは、 その他の割り込み (Log FIFO Data Available およびステータス初期化) が発生しても有効になっていないため、 AXI Interrupt Controller にアサートできないからです。

ソフ ト ウェア アプリ ケーシ ョ ンによって訂正ステート割り込みのステータス インジケーターがク リ アされた後 (sem_intr_status [7])、 0x00000100 が返されます。 設定されたビッ トは、 訂正不可能割り込みに対するステータス インジケーターです (sem_intr_status [8])。 ソフ ト ウェア アプリ ケーシ ョ ンによって訂正不可能割り込みのステータス インジケーターがク リ アされた後、 0x00000000 が返されます。 すべてのステータス インジケーターがク リ アされました。

すべての割り込みステータス インジケーターがク リ アされた後、 PS はログ FIFO が空になるまで読み出しを続けます。これには、 「ログ FIFO の読み出し」 に記載したステップが使用されます。

訂正不可能なレポート情報がログ FIFO から読み出された後、 エラー レジスタが読み出されて、 エラーが訂正不可能であったこ とが確認されます。 アプリ ケーシ ョ ンから、 デバイスのリ コンフ ィギュレーシ ョ ンが要求されます。

デバッグ

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  40japan.xilinx.com

デバッグ

図の接続がすべて図 2 と同じであるこ とを確認して ください。

X-Ref Target - Figure 27

図 27: AXI2SEM アプリケーシ ョ ンの訂正不可能エラー ログ

X18122-120516

制限事項と検討事項

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  41japan.xilinx.com

制限事項と検討事項

AXI2SEM

重要: このアプリ ケーシ ョ ンとすべての付属ファイルは、 デモンス ト レーシ ョ ンのみを目的と して提供されています。 また、 すべてのファイルは現状有姿で提供されています。 リ ファレンス デザインは、 ド ロ ップイン ソ リ ューシ ョ ンと しての使用を意図しているものではあ り ません。 新しいデザインにこのリ ファレンス デザインを統合する場合、 統合後のソリ ューシ ョ ンが機能および信頼性の目標を満たしているかど うかを検証する必要があ り ます。

XPM_FIFO

このリ ファレンス デザインで使用する XPM_FIFO は、 現時点で Vivado Design Suite 2016.2 のベータ リ リースであ り、 その使用には制限があ り ます。 制限事項の詳細は、 提供されているパッケージを参照してください (MPSoC_AXI2SEM/ip/xpm_fifo/limitations)。

次に示すサポート対象機能とサポート対象外機能について理解しておく必要があ り ます。 リ ス トに含まれていない機能をサポート対象と見なすのではなく、 質問や不明な点がある場合は FAE までお問い合わせください。

XPM_FIFO のサポート対象機能 (2016.2 xpm_fifo ベータ  リ リース)

次に示す機能はサポート されています。

• ネイティブ インターフェイス

• ク ロ ッ ク ド メ イン (共通、 個別)

• 読み出しモード (標準、 FWFT)

• 幅: 1 ~ 1024 (対称のみ)

• 深さ : 最大 8192 (2 のべき乗)

• FIFO 読み出しレイテンシ: 0、 1

° 値 0: FWFT のみに適用値 1: 標準読み出しモードのみに適用

• アンダーフロー /オーバーフロー

XPM_FIFO のサポート対象外機能 (2016.2 xpm_fifo ベータ  リ リース)

次の機能はサポート されていません。

• 非対称データ幅

• ブロ ッ ク RAM ECC

• DOUT リセッ ト値

• プログラマブルなフル/エンプティ フラグ

• データ カウン ト

• フルを 1 にリセッ トするためのオプシ ョ ン

SEM コン ト ローラー IP

最新情報は、『UltraScale Architecture Soft Error Mitigation Controller LogiCORE IP 製品ガイ ド』 (PG187) [参照 5] を参照してください。 次に注意して ください。

制限事項と検討事項

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  42japan.xilinx.com

• SEM コン ト ローラーは、 ブロ ッ ク メモ リ、 分散メモ リ、 フ リ ップフロ ップのソフ ト エラーに対しては動作しません。 これら メモ リ リ ソースで発生したソフ ト エラーは、 冗長性またはエラー検出/訂正コードなどの予防手段を用いてユーザー ロジッ クで軽減策をと る必要があ り ます。

• SEM コン ト ローラーは、 FPGA シ リ コンに内蔵されたソフ ト エラー軽減機能を初期化および管理します。 これをデザインに含める場合は、 内蔵の検出機能を有効にするデザイン制約またはオプシ ョ ンは含めないでください。 たとえば POST_CRC、 POST_CONFIG_CRC、 またはこれらに関連する制約を設定しないでください。 同様に、 GLUTMASK を変更するオプシ ョ ンは指定しないでください。

• ソフ ト ウェアで計算した ECC および CRC 値はサポート されません。

• SEM コン ト ローラーをインスタンシエートするデザインのシ ミ ュレーシ ョ ンがサポート されます。 ただしシ ミ ュレーシ ョ ンではコン ト ローラーの動作は観察できません。 コン ト ローラーを含むデザインのシ ミ ュレーシ ョ ンはコンパイルできますが、 コン ト ローラーは初期化ステートから遷移しません。 コン ト ローラーの動作はハードウェアで評価する必要があ り ます。

• ビッ ト ス ト リーム セキュ リティ (暗号化と認証) の使用は、 現時点ではコン ト ローラーでサポート されていません。

• コン ト ローラーは SelectMAP の persist をサポート していません。

• 1 つの SEM コン ト ローラーに対してサポート されている ICAP インスタンスは 1 つのみで、 このインスタンスは物理的に最上位に置く必要があ り ます。

UltraScale+ ES1 デバイスをターゲッ ト と し、 GTH および GTY ト ランシーバーの DRP (ダイナミ ッ ク リ コンフ ィギュレーシ ョ ン ポート ) をユーザー ロジッ クまたは IP に接続した場合、 SEM コン ト ローラー IP はサポート されません。

その他のバージョ ンのソフ トウェアをターゲッ ト とする場合

SEM IP

ZCU102 ボードは ZU9EG デバイスを使用します。 リ リース 2016.3 よ り前の Vivado に含まれる IP インテグレーターでは、このデバイスはカタログの SEM IP でサポート されません。MPSoC_SEM_ICAP_MBoot/ip ディ レク ト リに含まれる SEM UltraScale+ ファ ミ リのパッケージ済みデザイン (sem_ultra_v3_1) は、 リ リース 2016.3 よ り前のデザインでのみ必要です。 リ リース 2016.3 以降では、 Vivado IP インテグレーターで直接 IP カタログを使用して SEM IP を生成できます。

ZCU102 ボード  ファイル

リ リース 2016.4 以降の Vivado ツールには ZCU102 ボード ファ イルが付属します。これらのボード ファイルはボード リ ビジ ョ ン 1.0 用です。 リ リース 2016.4 以降でボード リ ビジ ョ ン 1.0 以降をターゲッ トにする場合、 ボード ファ イルをダウンロードする必要はあ り ません。

次に該当する場合は、 Zynq UltraScale+ ZCU102 HeadStart ウェブサイ トからボード ファ イルをダウンロード して ください。

• Vivado リ リース 2016.4 を使用しており、 ボード リ ビジ ョ ンが 1.0 よ り も前 (Rev D など) の場合

• Vivado がリ リース 2016.4 よ り前の場合

重要: ボード ファ イルは、 使用している Vivado リ リース とボード リ ビジ ョ ンに合ったものをダウンロード して ください。

XPM_FIFO

Vivado 2016.2 の XPM_FIFO はベータ リ リースです。 このアプリ ケーシ ョ ン ノート付属の ZIP ファ イルに含まれ、XPM_FIFO マクロの構築に必要なテンプレートは、 Vivado 2016.2 のみで使用できます。 Vivado 2016.3 以降では、XPM_FIFO テンプレートが提供されています。 Vivado 2016.3 以降をターゲッ トにする場合、 axi2sem_cdc.vhd での XPM_FIFO のインスタンシエーシ ョ ンを更新する必要があ り ます。 これらのインスタンシエーシ ョ ン テンプレートについては、 『UltraScale アーキテクチャ ライブラ リ ガイ ド』 (UG974) [参照 6] を参照してください。

付録 A—AXI2SEM のレジスタ定義

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  43japan.xilinx.com

付録 A—AXI2SEM のレジスタ定義

レジスタ定義

表 4: AXI2SEM レジスタ  マップ

アドレス 名前読み出し/書き込み

説明

0x0 SEM Ready レジスタ 読み出し専用

SEM コン ト ローラー が初期化されているかど うかを示します。 初期化されている場合、 アイ ドル (I)、 監視 (O)、 検出のみ (D) のうちのどのステートに初期化されたかを示すビッ ト もセッ ト されます。 このレジスタがク リ アされるのは、SEM ソフ ト リセッ トの発行時と、 icap_rel = 1 かつ icap_request = 0 にセッ ト されている場合です。 すべてのビッ トはアクティブ High です。

31:8 - 予約

7 - 初期化レポートで 「ICAP OK」 を受信6 - 初期化レポートで 「RDBK OK」 を受信5 - 初期化レポートで 「INIT OK」 を受信4 - アイ ドル ステートへのブート3 - 監視ステートへのブート2 - 検出のみステートへのブート

1 - 初期化エラー。 1 秒以内に初期化が完了しませんでした。 カウン トは、 ICAP に対するアービ ト レーシ ョ ン (icap_release = 0、 icap_grant = 1、 icap_request = 1) 後、 または init_check.vhd モジュールによるソフ ト リセッ トの検出後に開始されます。

0 - SEM コン ト ローラーの初期化時に、 SEM Ready がアサート されました。 このレジスタ内のその他すべてのビッ トは、 SEM コン ト ローラーの初期化が失敗した場合のデバッグ目的で使用されます。

0x4 ICAP レジスタ 読み出し /書き込み

ICAP アービ ト レーシ ョ ン インターフェイス信号。

31:3 - 予約

2 - icap_request1 - icap_grant0 - icap_release

0x8 ステータス レジスタ 読み出し専用

SEM コン ト ローラーの状態を示すステータス信号。

すべてのビッ トはアクティブ High です。

31:10 - 予約

9 - heartbeat_present – ハート ビート信号が 1 秒以上検出されていない場合は 0、それ以外は 18 - status_initialization (SEM コン ト ローラーよ り )7 - status_observation (SEM コン ト ローラーよ り )6 - status_correction (SEM コン ト ローラーよ り )5 - status_classification (SEM コン ト ローラーよ り )4 - status_injection (SEM コン ト ローラーよ り )3 - status_essential (SEM コン ト ローラーよ り )2 - status_uncorrectable (SEM コン ト ローラーよ り )1 - status_diagnostic_scan (SEM コン ト ローラーよ り )0 - status_detect_only (SEM コン ト ローラーよ り )

付録 A—AXI2SEM のレジスタ定義

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  44japan.xilinx.com

0xC 予約 読み出し専用

31:0 - 予約

0x10 コマンド レジスタ 読み出し /書き込み

SEM コマンド (クエ リ、 挿入、 変換、 外部メモリ、 PEEK、 ソフ ト リセッ ト 、 診断スキャン、 検出のみ、 ステータス、 アイ ドル、 監視) の設定に使用します。 また、 コマンド FIFO ステータス と書き込みビジー ステータスを含みます。

一度にセッ トできるのは 1 つのコマンド ビッ トのみです。 このレジスタへの書き込みによ り、 SEM へのコマンド ト ランザクシ ョ ンが開始されます。

すべてのステータス ビッ トはアクティブ High です。

31 - rd_rst_busy (読み出し専用) ステータス (コマンド FIFO よ り )30 - wr_rst_busy (読み出し専用) ステータス (コマンド FIFO よ り )29 - overflow (読み出し専用) ステータス (コマンド FIFO よ り )28 - full (読み出し専用) ステータス (コマンド FIFO よ り )27 - wr_busy (読み出し専用) - このレジスタが書き込まれてから、最後の文字がコマンド FIFO に書き込まれるまでの間、 High を保持

26:11 - 予約

10 - クエ リ コマンド9 - 挿入コマンド8 - 変換コマンド7 - 外部メモ リ コマンド6 - PEEK コマンド5 - ソフ ト リセッ ト コマンド4 - 診断スキャン コマンド3 - 検出のみコマンド2 - ステータス コマンド1 - アイ ドル コマンド0 - 監視コマンド

表 4: AXI2SEM レジスタ  マップ (続き)

アドレス 名前読み出し/書き込み

説明

付録 A—AXI2SEM のレジスタ定義

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  45japan.xilinx.com

0x14 コマンド ベース レジスタ (CBR)

読み出し /書き込み

ソフ ト リセッ ト 、 PEEK、 外部メモ リ、 変換、 挿入、 クエ リの各コマンドに対して、 最初の 8 ~ 32 ビッ ト を格納するために使用します。 コマンド レジスタを書き込む前に、 このレジスタを書き込む必要があ り ます。 挿入、 変換、 クエ リの各コマンドに対して、 残りの 12 ビッ ト を格納するには、 このレジスタ と コマンド拡張レジスタを組み合わせて使用する必要があ り ます。 次の例を参照してください。

ソフ ト  リセッ ト -

例 'R 04' 0 = CBR(31:28)

4 = CBR(27:24)

PEEK -

例 'P 0C' 0 = CBR(31:28)

C = CBR(27:24)

外部メモリ -

例 'X 01234567' 0 = CBR(31:28)

1 = CBR(27:24)

2 = CBR(23:20)

3 = CBR(19:16)

4 = CBR(15:12)

5 = CBR(11:8)

6 = CBR(7:4)

7 = CBR(3:0)

挿入 -

例 'I 0123456789A' 0 = CBR(31:28)

1 = CBR(27:24)

2 = CBR(23:20)

3 = CBR(19:16)

4 = CBR(15:12)

5 = CBR(11:8)

6 = CBR(7:4)

7 = CBR(3:0)

次のコマン ド ビッ ト にはコマン ド拡張レジスタ (CER) を使用する必要があ り ます。

変換 -

例 'T 0123456789A' 0 = CBR(31:28)

1 = CBR(27:24)

2 = CBR(23:20)

3 = CBR(19:16)

4 = CBR(15:12)

5 = CBR(11:8)

6 = CBR(7:4)

7 = CBR(3:0)

次のコマン ド ビッ ト にはコマン ド拡張レジスタ (CER) を使用する必要があ り ます。

表 4: AXI2SEM レジスタ  マップ (続き)

アドレス 名前読み出し/書き込み

説明

付録 A—AXI2SEM のレジスタ定義

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  46japan.xilinx.com

0x14

(続き )

コマンド ベース レジスタ (CBR)

読み出し /書き込み

クエリ -

例 'Q 0123456789A' 0 = CBR(31:28)

1 = CBR(27:24)

2 = CBR(23:20)

3 = CBR(19:16)

4 = CBR(15:12)

5 = CBR(11:8)

6 = CBR(7:4)

7 = CBR(3:0)

次のコマン ド ビッ ト にはコマン ド拡張レジスタ (CER) を使用する必要があ り ます。

0x18 コマンド拡張レジスタ (CER)

読み出し /書き込み

変換、 挿入、 クエ リの各コマンドに対して、 最後の 12 ビッ ト を格納するために使用します。 コマンド レジスタを書き込む前に、 このレジスタを書き込む必要があ り ます。 このレジスタは、 各コマンドの最初の 32 ビッ ト を格納したコマンド ベース レジスタ と組み合わせて使用する必要があ り ます。

31:20 - 変換、 挿入、 クエ リの各コマンドの残りのビッ ト

19:0 - 予約

次の例を参照して ください。

挿入 -

例 'I 0123456789A' 8 = CBR(31:28)

9 = CBR(27:24)

A = CBR(23:20)

変換 -

例 'T 0123456789A' 8 = CBR(31:28)

9 = CBR(27:24)

A = CBR(23:20)

クエリ -

例 'Q 0123456789A' 8 = CBR(31:28)

9 = CBR(27:24)

A = CBR(23:20)

19:0 - 予約

0x1C 予約 読み出し専用

31:0 - 予約

0x20 ログ FIFO ステータス

読み出し専用

ログ FIFO のステータスを示します。 すべてのビッ トはアクティブ High です。

31:7 - 予約

6 - エンプティ5 - アンダーフロー4 - フル3 - オーバーフロー2 - FIFO 書き込み Not Ready1 - FIFO 読み出し Not Ready0 - データ使用可能

表 4: AXI2SEM レジスタ  マップ (続き)

アドレス 名前読み出し/書き込み

説明

付録 A—AXI2SEM のレジスタ定義

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  47japan.xilinx.com

0x24 ログ FIFO データ 読み出し専用

SEM から受け取った ASCII データ。 このレジスタからの 1 回の読み出しで、1 バイ トの ASCII データが提供されます。

31:8 - 予約

7:0 - ASCII データ

0x28 予約 読み出し専用

31:0 - 予約

0x2C 予約 読み出し専用

31:0 - 予約

0x30 エラー レジスタ 読み出し /書き込み

読み出し専用

ROM、 ECC 訂正可能、 CRC、 訂正不可能 ECC のうち 1 つ以上のエラーが発生したこ とを示します。 ビッ トに 1 を書き込むこ とでク リ アできるのは、 ROM エラー ビッ ト と訂正可能エラー ビッ トのみです。 CRC エラーおよび訂正不可能 ECC エラーのビッ トはク リ アできません。 これらのビッ ト をク リ アするには、FPGA のリ コンフ ィギュレーシ ョ ンが必要です。

31:4 - 予約

3 - ROM エラーの検出 2 - ECC 訂正可能エラーの検出 1 - CRC エラーの検出 0 - ECC 訂正不可能エラーの検出

0x3C ~ 0x7F 予約 読み出し専用

31:0 - 予約

0x100 デバイス割り込みステータス レジスタ

読み出し /書き込み

使用しません。 用途の詳細は、 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) を参照してください [参照 2]。

0x104 デバイス割り込み保留レジスタ

読み出し専用

使用しません。 用途の詳細は、 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) を参照してください [参照 2]。

0x108 デバイス割り込みイネーブル レジスタ

読み出し /書き込み

使用しません。 用途の詳細は、 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) を参照してください [参照 2]。

0x118 デバイス割り込み ID レジスタ

読み出し専用

使用しません。 用途の詳細は、 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) を参照してください [参照 2]。

0x11C グローバル割り込みイネーブル

読み出し /書き込み

使用しません。 用途の詳細は、 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) を参照してください [参照 2]。

表 4: AXI2SEM レジスタ  マップ (続き)

アドレス 名前読み出し/書き込み

説明

付録 A—AXI2SEM のレジスタ定義

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  48japan.xilinx.com

0x120 IP 割り込みステータス レジスタ (IPISR)

読み出し /書き込み

このレジスタ内の各ビッ トは割り込みビッ ト を示します。 使用しません。 用途の詳細は、 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) [参照 2] を参照してください。

1 = 保留中の割り込みあ り

0 = 保留中の割り込みなし

31–12 - 予約

11 - SEM Ready

10 - CRC エラーの検出

9 - ROM エラーの検出

8 - ステータス訂正不可能

7 - ステータス訂正可能

6 - ステータス初期化

5 - 初期化エラー

4 - ハート ビート タイムアウ ト

3 - ログ FIFO オーバーフロー

2 - ログ FIFO フル

1 - ログ FIFO アンダーフロー

0 - ログ FIFO データ使用可能

0x128 IP 割り込みイネーブル レジスタ (IPIER)

読み出し /書き込み

レジスタ内の各ビッ トが割り込みを有効化またはマスク します。 使用しません。用途の詳細は、『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166) [参照 2] を参照してください。

1 = 割り込みイネーブル

0 = 割り込みマスク

31–12 - 予約

11 - SEM Ready

10 - CRC エラーの検出

9 - ROM エラーの検出

8 - ステータス訂正不可能

7 - ステータス訂正可能

6 - ステータス初期化

5 - 初期化エラー

4 - ハート ビート タイムアウ ト

3 - ログ FIFO オーバーフロー

2 - ログ FIFO フル

1 - ログ FIFO アンダーフロー

0 - ログ FIFO データ使用可能

表 4: AXI2SEM レジスタ  マップ (続き)

アドレス 名前読み出し/書き込み

説明

参考資料

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  49japan.xilinx.com

参考資料

推奨: このアプリ ケーシ ョ ン ノートの開発には Vivado Design Suite 2016.2 を使用しています。 『Zynq UltraScale+ MPSoC テクニカル リ ファレンス マニュアル』 (UG1085) [参照 7] と 『Zynq UltraScale+ MPSoC レジスタ リ ファレンス』 (UG1087) [参照 8] もバージ ョ ン 2016.2 を参照するこ とを推奨します。

注記:日本語版のバージ ョ ンは、 英語版よ り古い場合があ り ます。

1. 『Zynq UltraScale+ デバイスへの LogiCORE SEM IP の統合』 (XAPP1298: 英語版、 日本語版)

2. 『Vivado Design Suite 用 LogiCORE IP Interrupt Control 製品ガイ ド』 (PG166)

3. 『AXI4-Lite IPIF LogiCORE IP 製品ガイ ド』 (PG155)

4. 『AXI Interrupt Controller (INTC) LogiCORE IP 製品ガイ ド』 (PG099)

5. 『UltraScale Architecture Soft Error Mitigation Controller LogiCORE IP 製品ガイ ド』 (PG187: 英語版、 日本語版)

6. 『UltraScale アーキテクチャ ライブラ リ ガイ ド』 (UG974: 英語版、 日本語版)

7. 『Zynq UltraScale+ MPSoC テクニカル リ ファレンス マニュアル』 (UG1085: 英語版、 日本語版)

8. 『Zynq UltraScale+ MPSoC レジスタ リ ファレンス』 (UG1087)

9. 『Silicon Labs CP210x USB-to-UART インス トール ガイ ド』 (UG1033)

10. 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896: 英語版、 日本語版)

11. 『Vivado Design Suite ユーザー ガイ ド : エンベデッ ド プロセッサ ハードウェア デザイン』 (UG898: 英語版、 日本語版)

12. 『プロセッサ システム リセッ ト モジュール LogiCORE IP 製品ガイ ド』 (PG164)

13. 『AXI Interconnect LogiCORE IP 製品ガイ ド』 (PG059)

改訂履歴

次の表に、 この文書の改訂履歴を示します。

日付 バージョ ン 変更内容

2017 年 2 月 10 日 1.0 初版

2017 年 2 月 13 日 1.0.1 誤植を訂正。

2017 年 2 月 27 日 1.0.2 「参考資料」 に XAPP1298 を追加。 誤植を訂正。

法的通知

XAPP1303 (v1.0.2) 2017 年 2 月 27 日  50japan.xilinx.com

法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開

示される情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。 適用される

法律が許容する最大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) とい う状態で提供され、 ザイ リ

ンクスは、 本通知をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこれらに限られません)、すべての保証および条件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、 本情報 (貴殿または貴社による本情報の使用

を含む) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害についても、 責任を負わない (契約上、 不法行為上 (過失の

場合を含む)、 その他のいかなる責任の法理によるかを問わない) ものと し、 当該損失または損害には、 直接、 間接、 特別、 付随的、 結

果的な損失または損害 (第三者が起こした行為の結果被った、 データ、 利益、 業務上の信用の損失、 その他あらゆる種類の損失や損害を

含みます) が含まれるものと し、 それは、 たとえ当該損害や損失が合理的に予見可能であったり、 ザイ リ ンクスがそれらの可能性につい

て助言を受けていた場合であったと しても同様です。 ザイ リ ンクスは、 本情報に含まれるいかなる誤り も訂正する義務を負わず、 本情

報または製品仕様のアップデート を貴殿または貴社に知らせる義務も負いません。 事前の書面による同意のない限り、 貴殿または貴社

は本情報を再生産、 変更、 頒布、 または公に展示してはなり ません。 一定の製品は、 ザイ リ ンクスの限定的保証の諸条件に従う こ と と

なるので、 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンクスの販売条件を参照して ください。 IP コアは、 ザイ リ ンクスが貴殿

または貴社に付与したライセンスに含まれる保証と補助的条件に従う こ とにな り ます。 ザイ リ ンクスの製品は、 フェイルセーフと して、

または、 フェイルセーフの動作を要求するアプリ ケーシ ョ ンに使用するために、 設計されたり意図されたり していません。 そのよ うな

重大なアプリ ケーシ ョ ンにザイ リ ンクスの製品を使用する場合のリ スク と責任は、 貴殿または貴社が単独で負う ものです。

https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンクスの販売条件を参照してください。

自動車用のアプリケーシ ョ ンの免責条項

オートモーティブ製品 (製品番号に 「XA」 が含まれる ) は、 ISO 26262 自動車用機能安全規格に従った安全コンセプ ト または余剰性の機

能 ( 「セーフティ設計」 ) がない限り、 エアバッグの展開における使用または車両の制御に影響するアプリ ケーシ ョ ン ( 「セーフティ アプリ ケーシ ョ ン」 ) における使用は保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用前または提供前

に安全を目的と して十分なテス ト を行う ものと します。 セーフティ設計なしにセーフティ アプリ ケーシ ョ ンで製品を使用する リ スクは

すべて顧客が負い、 製品の責任の制限を規定する適用法令および規則にのみ従う ものと します。

© Copyright 2017 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこの文書に含まれるその

他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。 ARM は、 ARM の欧州連合その他の国における登録

商標です。 すべてのその他の商標は、 それぞれの保有者に帰属します。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの右下

にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 いただきましたご意見を参考に早急

に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受け付けており ません。 あらかじめご了承ください。