22
XAPP733 (v1.0) 2012 5 24 japan.xilinx.com 1 © Copyright 2012 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Zynq, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners. 概要 このアプリケーション ノ ー ト では、 Spartan®-6Virtex ®-6、 および 7 シリーズ FPGA にマルチブー ト 機能および LogiCORE™ IP Soft Error Mitigation (SEM) コント ローラーをインプリ メントする方法につ いて説明します。 こ こでは 6 種類の リ フ ァ レ ン ス デザインを使用して主な概念を具体的に説明します。 はじめに マルチブー ト 機能は、 デザ イ ンの管理やフ ィ ール ド アップグレード機能をサポート します。 FPGA に別 のビッ トスト リームでそれ自身をリ コンフィギュレーションするよ うにコマンドを発行すると、 マルチ ブー ト イベントが開始します。必要なコマンドは、通常内部コンフィギュレーション ポー ト (ICAP) 介して発行されます。 一般に SEM コ ン ト ローラーは、 自身の機能および性能の仕様を満たすために ICAP を排他的に制御し ます。 マルチブー ト と SEM コン ト ローラーを使用する場合は、 設計者が ICAP の共有を調整する必要 があ り ます。 ま た、 複数の FPGA コンフィギュレーション データに加えて、 SEM コントローラー デー タ を用意する必要があ り ます。 このアプリケーション ノ ー ト では、 『SEM コントローラーとの ICAP の共有』 [参照 1] で説明されてい る方法を Spartan-6Virtex-6、および 7 シリーズ FPGA SEM コン ト ローラーと互換性のある再利用 可能なマルチブート モジュールに適用する方法を説明します。 また、 SEM コントローラー データを複 数構成する方法についても説明します。 リ ファレンス デザインは、 SP605ML605、 および KC705 価キッ トでハードウェア評価を行うためのインプリ メンテーションを提供しています。 マルチブート機能 の概要 マルチブー ト 機能は、FPGA 全体のダ イ ナ ミ ッ ク リ コンフ ィ ギュレーシ ョ ンを安価に実行する方法を提 供 し ま す。 ダ イ ナ ミ ッ ク フル リコンフィギュレーションには、 デザインの管理やフィールド アップグ レードなど幅広い用途があ り ます。 マルチブー ト の導入以前のダ イナ ミ ッ ク フル リコンフィギュレーションにはハードウェア、ソフトウェ ア、 およびデザイン ツール コ ンポーネン ト の追加に伴 う 独自ソ リ ューシ ョ ンの開発コ ス ト がかか り ま し た。 マルチブー ト では こ れ ら の開発 コ ス ト は不要で、 FPGA コンフィギュレーション データのビッ ト 単位のス ト レージ コ ス ト だけにな り ます。 マルチブー ト の詳細はデバイ ス (Spartan-6Virtex-67 シリーズ FPGA) によ って異な り ますが、 マル チブー ト イベン ト の基本は同じです。 設計者が次のビ ッ ト ス ト リ ームの位置を FPGA にプログラムし、 このビットストリームをロードするように FPGA へ命令します。これを受けて、 FPGA はプログラマブ ロジックをシャットダウンし、次のビットストリームをロードしてそのプログラマブル ロジックを 実行します。オプシ ョ ンのエラー回復機能を使用してマルチブート イベン ト を保護し、 FPGA コンフィ ギュレーシ ョ ン中のデータ破損を防ぐこ とができます。 次のビッ トスト リームの位置をプログラムする FPGA にはプログラマブル ロジ ッ クのほかに、 それを管理する専用回路ブロ ッ クがあ り ます。 この管理 機能はコンフィギュレーション ロ ジ ッ ク と 呼ばれ、 主な役割 と し て FPGA のコンフィギュレーション データをコンフィギュレーション メモリへロードし、 プログラマブル ロジッ クの動作を設定します。 アプリケーション ノート : Spartan-6Virtex-6、 および 7 シリーズ FPGA XAPP733 (v1.0) 2012 5 24 マルチブートおよび LogiCORE IP Soft Error Mitigation Controller の活用 著者 : Eric Crabill

ザイリンクス アプリケーション ノート XAPP733 : …...ンスは、『SEM コントローラーとの ICAP の共有』[参照1] で説明している方法から手動による仲介を

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 1

© Copyright 2012 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Zynq, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners.

概要 このアプリケーシ ョ ン ノートでは、 Spartan®-6、 Virtex ®-6、 および 7 シ リーズ FPGA にマルチブート

機能および LogiCORE™ IP Soft Error Mitigation (SEM) コン ト ローラーをインプリ メン トする方法につ

いて説明します。 こ こでは 6 種類のリ ファレンス デザインを使用して主な概念を具体的に説明します。

はじめに マルチブート機能は、デザインの管理やフ ィールド アップグレード機能をサポート します。FPGA に別

のビッ ト ス ト リームでそれ自身を リ コンフ ィギュレーシ ョ ンするよ うにコマンドを発行する と、 マルチ

ブート イベン トが開始します。必要なコマンドは、通常内部コンフ ィギュレーシ ョ ン ポート (ICAP) を介して発行されます。

一般に SEM コン ト ローラーは、 自身の機能および性能の仕様を満たすために ICAP を排他的に制御し

ます。 マルチブート と SEM コン ト ローラーを使用する場合は、 設計者が ICAP の共有を調整する必要

があ り ます。 また、複数の FPGA コンフ ィギュレーシ ョ ン データに加えて、 SEM コン ト ローラー デー

タを用意する必要があ り ます。

このアプリ ケーシ ョ ン ノートでは、 『SEM コン ト ローラーとの ICAP の共有』 [参照 1] で説明されてい

る方法を Spartan-6、Virtex-6、および 7 シ リーズ FPGA の SEM コン ト ローラーと互換性のある再利用

可能なマルチブートモジュールに適用する方法を説明します。 また、 SEM コン ト ローラー データを複

数構成する方法についても説明します。 リ ファレンス デザインは、 SP605、 ML605、 および KC705 評価キッ トでハード ウェア評価を行うためのインプリ メンテーシ ョ ンを提供しています。

マルチブート機能の概要

マルチブート機能は、FPGA 全体のダイナミ ッ ク リ コンフ ィギュレーシ ョ ンを安価に実行する方法を提

供します。 ダイナミ ッ ク フル リ コンフ ィギュレーシ ョ ンには、 デザインの管理やフ ィールド アップグ

レードなど幅広い用途があ り ます。

マルチブートの導入以前のダイナミ ッ ク フル リ コンフ ィギュレーシ ョ ンにはハードウェア、ソフ ト ウェ

ア、 およびデザイン ツール コンポーネン トの追加に伴う独自ソ リ ューシ ョ ンの開発コス トがかかり ま

した。マルチブートではこれらの開発コス トは不要で、FPGA コンフ ィギュレーシ ョ ン データのビッ ト

単位のス ト レージ コス トだけになり ます。

マルチブートの詳細はデバイス (Spartan-6、 Virtex-6、 7 シ リーズ FPGA) によって異なり ますが、 マル

チブート イベン トの基本は同じです。設計者が次のビッ ト ス ト リームの位置を FPGA にプログラムし、

このビッ ト ス ト リームをロードするよ うに FPGA へ命令します。 これを受けて、FPGA はプログラマブ

ル ロジッ クをシャ ッ ト ダウンし、 次のビッ ト ス ト リームをロード してそのプログラマブル ロジッ クを

実行します。オプシ ョ ンのエラー回復機能を使用してマルチブート イベン ト を保護し、FPGA コンフ ィ

ギュレーシ ョ ン中のデータ破損を防ぐこ とができます。

次のビッ トス ト リームの位置をプログラムする

FPGA にはプログラマブル ロジッ クのほかに、それを管理する専用回路ブロッ クがあ り ます。 この管理

機能はコンフ ィギュレーシ ョ ン ロジッ ク と呼ばれ、 主な役割と して FPGA のコンフ ィギュレーシ ョ ン

データをコンフ ィギュレーシ ョ ン メモ リへロード し、 プログラマブル ロジッ クの動作を設定します。

アプリケーシ ョ ン ノート : Spartan-6、 Virtex-6、 および 7 シリーズ FPGA

XAPP733 (v1.0) 2012 年 5 月 24 日

マルチブートおよび LogiCORE IP Soft Error Mitigation Controller の活用著者 : Eric Crabill

ICAP の共有を調整する

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 2

マルチブート イベン トに備えて、 コンフ ィギュレーシ ョ ン ロジッ クの特定レジスタへのレジスタ書き

込みコマンドで、次のビッ ト ス ト リームの位置を FPGA にプログラムします。推奨される 2 つの方法は

次のとおりです。 これらは単独または組み合わせて使用できます。

• ビッ ト ス ト リーム ジェネレーター プログラム (BitGen) の使用

• 次のビッ ト ス ト リームの位置を示すオプシ ョ ン スイ ッチを指定します。

• BitGen がオプシ ョ ン スイ ッチをビッ ト ス ト リームに挿入されるレジスタ書き込みコマンドに

変換します。データは、 コンフ ィギュレーシ ョ ン プロセス中に関連するコンフ ィギュレーシ ョ

ン ロジッ ク レジスタに入り ます。

• ICAP の使用

• 次のビッ ト ス ト リームの位置を設定するのに必要なレジスタ書き込みコマンドを指定します。

• 設計者がレジスタ書き込みコマンドを使用するための機能を ICAP に組み込みます。 レジスタ

書き込みコマンドが実行中に発行される と、データは関連するコンフ ィギュレーシ ョ ン ロジッ

ク レジスタへ入り ます。

単独で使用する場合、 BitGen では次のビッ ト ス ト リームの位置を実行中に選択できないため、 ICAP は必要なままです。BitGen では、次のビッ ト ス ト リームの位置を設定するためのレジスタ書き込みコマン

ドは不要ですが、 このビッ ト ス ト リームをロードするコマン ド用に ICAP が必要です。 高度なアプ リ

ケーシ ョ ンでは、マルチブート ステータスの読み出しに ICAP が必要になる場合もあ り ます。 これらの

理由から、 もシンプルなソ リ ューシ ョ ンは、 ICAP を使用してマルチブート動作全体をプログラムし、

BitGen はオプシ ョ ンのエラー回復機能を設定するためだけに使用するこ とです。

注記 : マルチブートのステータスを正確に追跡するために、 ユーザーは BitGen および ICAP で書き込

まれるレジスタをそれぞれ把握する必要があ り ます。 また、正しいアップデート アプリ ケーシ ョ ンを実

行するためにマルチブート動作が使用されているかを把握するこ と も重要です。

次のビッ トス ト リームのロードを命令する

設計者は、 IPROG コマンドを発行して、 コンフ ィギュレーシ ョ ン ロジッ クへ次のビッ ト ス ト リームを

ロードするよ うに FPGA へ命令します。 この手順は、 コンフ ィギュレーシ ョ ン ロジッ クにあるコマン

ド レジスタへ IPROG コマンドを書き込むこ とで完了します。

IPROG コマンドが発行される と、 コンフ ィギュレーシ ョ ン ロジッ クは数クロ ッ ク サイクル以内にプロ

グラマブル ロジッ クをシャ ッ ト ダウンします。つま り、IPROG コマンドを発行したデザインのアクティ

ビティが停止します。その後、 コンフ ィギュレーシ ョ ン ロジッ クが指定位置から次のビッ ト ス ト リーム

をロード し、 プログラマブル ロジッ クを起動します。

サポートについて

次のビッ ト ス ト リームの位置をプログラムしてこのビッ ト ス ト リームをロードするよ うにコマンドを発

行するレジスタ レベルの詳細は、各ターゲッ ト FPGA のコンフ ィギュレーシ ョ ン ユーザー ガイ ドを参

照して ください。

• 『Spartan-6 FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 [参照 2]

• 『Virtex-6 FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 [参照 3]

• 『7 シ リーズ FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 [参照 4]

マルチブー ト 機能を正し く利用するには、 FPGA デバイスのコンフ ィ ギュレーシ ョ ン モード とその

FPGA に関する情報が必要です。 このアプ リ ケーシ ョ ン ノー ト で扱 う リ フ ァ レンス デザインでは、

SP605 [参照 5]、 ML605 [参照 6]、 および KC705 [参照 7] 評価キッ ト を例と して使用しています。

ICAP の共有を調整する

ほとんどの場合、 マルチブートのインプリ メンテーシ ョ ンには ICAP を使用します。 デザイン内でほか

に ICAP を利用する必要がない場合、マルチブート イベン トが実際にアクセスするのは数十クロ ッ ク サ

データの構成

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 3

イ クルのみですが、 ICAP の使用を独占できます 。 ICAP へアクセスする機能がほかにある場合は、 設

計者がすべての機能で ICAP を共有できるよ うに調整する必要があ り ます。

一般に SEM コン ト ローラーは、 自身の機能および性能の仕様を満たすために ICAP を排他的に制御し

ます。多くのデバイスには 2 つの ICAP があ り、それらを切り替えるこ とができます。 リ ファレンス デザインでは、 1 つの ICAP を使用するこ とを前提と しているため、 一般的なソ リ ューシ ョ ンはすべての

FPGA ファ ミ リで共通です。 1 つの ICAP を共有する場合、 SEM コン ト ローラーをアイ ドル状態にし

て、 ICAP を一時的に別の機能に使用できるよ う解放します。 この共有方法はマルチブート と SEM コン ト ローラーを使用する場合に有用で、 『SEM コン ト ローラーとの ICAP の共有』 [参照 1] で詳し く説

明しています。

一般的な共有シーケンスは、有限ステート マシンなどの制御ロジッ クで調整できます。次に示すシーケ

ンスは、 『SEM コン ト ローラーとの ICAP の共有』 [参照 1] で説明している方法から手動による仲介を

なく し、 マルチブートの具体的なケースに合わせたものです。

1. システムに固有なマルチブートの次のビッ ト ス ト リームの位置が指定されます。

2. システムに固有なマルチブート ト リ ガーが生じます。

3. 制御ロジッ クが、 エラー挿入ポート を使用して SEM コン ト ローラーにアイ ドル状態になるよ うに

命令します。

4. 制御ロジッ クが、 ステータス ポート を使用して SEM コン ト ローラーがアイ ドル状態になるまで待

機します。

5. 制御ロジッ クが、 SEM コン ト ローラーによる占有を避けるために ICAP を多重化します。

6. 制御ロジッ クが、 マルチブート イベン トに必要なコマンドを ICAP へ発行します。

7. Wait forever は、 ICAP でさ らなるアクティビティを実行させないよ うにする 終手順です。

IPROG コマンドは、 これを発行したデザインのアクティビティ (制御ロジッ クや SEM コン ト ローラー )を数サイクル以内に停止します。 このため、 SEM コン ト ローラーのエラー軽減の性能は、 この中断によ

る影響を受けません。 SEM コン ト ローラーを再開するために、 制御ロジッ クによって何かを実行する必

要はあり ません。

データの構成 マルチブート用の FPGA コンフ ィギュレーシ ョ ン データの推奨する構成については、 各 FPGA のコン

フ ィギュレーシ ョ ン ユーザーガイ ド ([参照 2]、 [参照 3]、 [参照 4]) を参照してください。正常なマルチ

ブート イベン トは、 コンフ ィギュレーシ ョ ン用に FPGA へ適切に接続された不揮発性デバイス内の既

知のアドレスに、 次のビッ ト ス ト リームが正し く格納されているこ とに依存します。 FPGA のコンフ ィ

ギュレーシ ョ ンに必要なス ト レージ サイズは、 格納するビッ ト ス ト リームの数とそのサイズ、 および

FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ドに記載されているいくつかの二次的な要因によって異

なり ます。

場合によっては、 SEM コン ト ローラー データの構成を考慮する必要があ り ます。 次のオプシ ョ ン機能

のいずれかまたは両方が有効の場合、 SEM コン ト ローラーのインスタンスは外部データを使用します。

• 置き換えによるエラー訂正

• エラーの分類

これらのオプシ ョ ンが有効の場合、 SEM コン ト ローラーのサンプル デザインには簡素化されたシ リ ア

ル ペリ フェラル インターフェイス (SPI) マスターが含まれ、 これを通って SEM コン ト ローラーは SPIフラ ッシュ内のデータへアクセスします。 この SPI フラ ッシュは SEM コン ト ローラー専用であ り、

FPGA コンフ ィギュレーシ ョ ンに使用されるすべての不揮発性デバイスから独立しています。

SEM コン ト ローラーのサンプル デザインに SPI マスターが含まれる場合、 SEM コン ト ローラーに

fetch_tbladdr とい う 32 ビッ トの入力ポートが追加されます。SEM コン ト ローラーは、 このポートに適

用される値を SPI フラ ッシュにあるテーブルのポインターと して使用します。 fetch_tbladdr は、 SEMコン ト ローラーのサンプル デザインではデフォルトで 0 に設定されています。 このサンプル デザイン

マルチブートのアプリケーシ ョ ン例

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 4

のインプ リ メ ンテーシ ョ ン スク リプ トで作成された SPI フラ ッシュ プログラ ミ ング ファ イルは、 SPIフラ ッシュのアドレス 0 から格納します。

SPI フラ ッシュのテーブルには、データ ブロ ッ クに対するポインターが 1 つまたは複数あ り ます。 これ

らのポインターは、テーブル直後にデータ ブロッ クが続き、そのテーブルが SPI フラ ッシュのアドレス

0 から格納されるこ とを前提と して計算されます。 このテーブルの形式の詳細は、 『LogiCORE IP SoftError Mitigation Controller v3.2 製品ガイ ド』 [参照 8] を参照してください。

マルチブートでは、 外部データを使用する SEM コン ト ローラー インスタンスが複数のビッ ト ス ト リー

ムに含まれる場合は、 SEM コン ト ローラー データが複数セッ ト存在します。 これらのデータは、 アド

レス 0 を開始点とする SPI フラ ッシュにすべては格納できません。 解決方法と しては、 必要な SEM コン ト ローラーのデータを連結させて、 各セッ トの開始アドレスを記録しておきます。 そして、 各セッ ト

に対応するテーブルのポインターをそれぞれのセッ トの開始アドレスで調整します。 調整済みの結合さ

れた情報が SPI フラ ッシュに格納されます。

各ビ ッ ト ス ト リームが適用可能なデザインでは、 SEM コン ト ローラーのインスタンスが SPI フラ ッ

シュにある特定データを見つけるこ とができるよ うに fetch_tbladdr を設定する必要があ り ます。SPI フラ ッ シュの メ モ リ マ ッ プを作成する際の 小限の準備で、 必要であれば設計時または実行中に

fetch_tbladdr を定数値に設定できます。 ただし、 SEM コン ト ローラーが監視ステートに入る前に設定

する必要があ り ます。

注記 : FPGA コンフ ィギュレーシ ョ ン データ と SEM コン ト ローラー データ間の整合性を維持するこ と

が重要です。ビッ ト ス ト リームが何らかの理由でアップデート された場合は、対応する SEM コン ト ロー

ラー データもすべてアップデートする必要があ り ます。 SEM コン ト ローラーのデータが古い、 つま り

分類データが不正であれば信頼性に影響を与え、 置き換えられたデータが不正であれば機能的な問題を

招く可能性があ り ます。

マルチブートのアプリケーション例

リ ファレンス デザインでは、 電源投入時に正常動作が確認済みのゴールデン イ メージがロード される

フォールバッ ク マルチブートの例を示します。 各ビッ ト ス ト リームには、 外部データを使用する SEMコン ト ローラーのインスタンスが含まれます。

はじめに

このアプ リ ケーシ ョ ン ノー トでは、 6 つのリ ファレンス デザインを ZIP ファ イルで提供しています (「 リ ファレンス デザイン」 参照)。 ラ イセンス契約に合意後、 ZIP ファ イルをダウンロード して解凍でき

ます。 readme.txt には、 詳しいディ レク ト リ構造およびファ イルの一覧が記載されています。 表 1に、 これらのリ ファレンス デザインを示します。

表 1 : サポートするリファレンス デザインの一覧

ファ ミ リ 言語 ハードウェア ターゲッ トCGP および XCO がある

ディ レク ト リ名

Spartan-6 FPGAVerilog SP605 (XC6SLX45T-FGG484-2)

および 128Mb SPI フラ ッシュ (1)

spartan6_ver

VHDL spartan6_vhd

Virtex-6 FPGAVerilog ML605 (XC6VLX240T-FF1156-2)

および 128Mb SPI フラ ッシュ (1)

virtex6_ver

VHDL virtex6_vhd

7 シ リーズ FPGAVerilog KC705 (XC7K325T-FFG900-2)

および 256Mb SPI フラ ッシュ (1)

kintex7_ver

VHDL kintex7_vhd

注記 :

1. SEM コン ト ローラーで使用されるベンダー固有の SPI フラ ッシュは評価キッ ト に含まれていません。SPI フラ ッシュは、 ユーザーがオプシ ョ ンで使用する リ ソースであ り 、 これを用いて SEM コン ト ローラーのデータ構造を評価できます。

マルチブートのアプリケーシ ョ ン例

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 5

各リ ファレンス デザインでは、SEM コン ト ローラーのサンプル デザインで生成される 2 つのビッ ト ス

ト リームを使用します。

• インプリ メンテーシ ョ ン A

• インプリ メンテーシ ョ ン B

SEM コン ト ローラーとサンプル デザインは含まれていませんが、 次の手順を実行して提供されている

CGP および XCO ファ イルから生成します。

1. 評価する リ ファレンス デザインを選択します。

2. CORE Generator™ ツールを使用して、 関連する CGP および XCO ファ イルを開きます。

3. SEM コン ト ローラーを生成します (同時に SEM コン ト ローラーのサンプル デザインも生成される)。

4. CORE Generator ツールを閉じます。

注記 : これらの手順は、 CORE Generator ツールのウ ィ ン ド ウでインタ ラ クテ ィブに実行できますが、

バッチ モードでも可能です。

coregen –p <project.cgp> –b <core.xco>

CORE Generator ツールは、選択した リ ファレンス デザインのディ レク ト リに生成した出力物を上書き

します。 ファ イルが適切な場所に保存されるよ うに、 関連する CGP および XCO ファ イルがあるディ

レク ト リ を選択して ください。

CGP ファ イルの内容でファ ミ リ、言語、およびハード ウェア ターゲッ トが選択され、 XCO ファ イルの

内容で SEM コン ト ローラーの機能が次のよ うに設定されます。

• Enable Correction = True

• Correction Method = Repair

• Enable Classification = True

• Enable Injection = True

• Injection Shim = Pins

• Retrieval Shim = SPI flash

リ ス ト されているハード ウェア ターゲッ ト を用いて リ ファレンス デザインを使用する場合は、 CGP および XCO ファ イルの内容を変更できません。 これらのデザインは変更して使用するこ とを目的と して

いますが、 通常唯一の要件と して SEM コン ト ローラーのエラー挿入機能を有効にするこ とが求められ

ます。 リ ファレンス デザインの制御ロジッ クは、 SEM コン ト ローラーのエラー挿入ポート を使用して、

SEM コン ト ローラーがアイ ドル状態へ遷移するよ うにコマンドを発行します。

デザインの概要

リ ファレンス デザインでは、SEM コン ト ローラーのサンプル デザインにマルチブート モジュールを導

入し、 ほかにも変更を加えています (図 1)。 グレー表示されたブロ ッ クは、 特定コンフ ィギュレーシ ョ

ンの SEM コン ト ローラーのサンプル デザインにのみ存在します。 変更前の SEM コン ト ローラーのサ

ンプル デザインの図は、 『LogiCORE IP Soft Error Mitigation Controller v3.2 製品ガイ ド』 [参照 8] を参照して ください。

マルチブートのアプリケーシ ョ ン例

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 6

各リ ファレンス デザインのディ レク ト リにある example_design サブディレク ト リには、 SEM コン

ト ローラーのサンプル デザインの変更前のソース ファ イルがあ り ます。xapp_design サブディ レク

ト リには、 マルチブート モジュールおよび変更されたソース ファ イルが含まれます。 ソース ファ イル

の変更内容は次のとおりです。

• SEM コン ト ローラーのサンプル デザインにパラ メーター THIS_BITSTREAM_NMBR が追加さ

れ、 その値が新しい出力ポート design_number[2:0] に適用されます。 これによ り、同じ SEM コン

ト ローラー サンプル デザインのソース ファ イルから生成された複数のビッ ト ス ト リームを区別で

きます。

• SEM コン ト ローラーのサンプル デザインにパラ メーター THIS_SEM_IP_ADDRESS が追加さ

れ、その値が 0 に駆動されていた内部信号 fetch_tbladdr[31:0] に適用されます。 これによ り、 SEMコン ト ローラー データの開始アドレスを任意に設定できます。

• SEM コン ト ローラーのサンプル デザインにパラ メーター NEXT_CONFIG_ADDRESS が追加さ

れ、 その値が新しい内部信号 mbt_next_addr[31:0] に適用されます。 これによ り、 マルチブート モジュールに任意の次のビッ ト ス ト リーム アドレスを設定できます。

• SEM コン ト ローラーのサンプル デザインにマルチブート モジュールがインスタンシエート され、

次のよ うに接続されています。

• SEM コン ト ローラーのエラー挿入ポートが 上位 I/O ピンの接続から削除され、 マルチブー

ト モジュールへ接続されています。 これによ り、マルチブート モジュールが SEM コン ト ロー

ラーへコマンドを発行できるよ うにな り ます。

• SEM コン ト ローラーのステータス ポートからの 5 つのステート信号がマルチブート モ

ジュールへ接続されています。これによ り、マルチブート モジュールが主に、SEM コン ト ロー

ラーがアイ ドル状態に遷移したタイ ミ ングを判断するために、 SEM コン ト ローラーのステー

ト を観察できます。

• 次のビッ ト ス ト リームのアド レスで駆動される信号がマルチブート モジュールへ接続されて

います。

X-Ref Target - Figure 1

図 1 : 変更された SEM コン ト ローラー サンプル デザイン

ICAP FRAMEECC

SEM Controller

MON Shim

SEM Controller Example Design

MultiBootModule

EXT ShimSPIInterface

Status

SerialInterface

MultiBoot Trigger

X733_01_032312

Clock

Configuration Logic

THIS_SEM_IP_ADDRESS

THIS_BITSTREAM_NMBR DesignNumber

NEXT_CONFIG_ADDRESS

mbt_icap_i/cs/rdwrb

fetch_tbladdrinject_strobe

inject_address

status_*

mbt_next_addr

mbt_icap_sel

マルチブートのアプリケーシ ョ ン例

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 7

• マルチブート モジュールへ外部マルチブート ト リ ガー信号を提供するために、 上位 I/O ピンが追加されています。

• マルチブート モジュールで生成される ICAP マルチプレクサーのセレク ト信号、 cs 信号、

rdwrb 信号およびデータ信号が、 マルチプレクサーを使用する SEM コン ト ローラーのこれら

の信号と結合されています。 『SEM コン ト ローラーとの ICAP の共有』 [参照 1] に記載されて

いる とおり、これは純粋な組み合わせ回路である必要があ り、そ うでなければ SEM コン ト ロー

ラーは正常に機能しません。

• 上位 I/O ピンの変更を反映させて、ハード ウェア ターゲッ トに 適なピン位置を割り当てるため

に制約ファ イルが変更されています。 オプシ ョ ンでユーザーが用意した、 SEM コン ト ローラーの

私的使用の SPI フラ ッシュに関連した 4 つの I/O ピンにはプレースホルダー ロケーシ ョ ン制約が

あ り ます。 ユーザーは、 必要に応じてこれらのプレースホルダー制約を変更できます。

• 変更後の SPI マスターのコピーが提供され、 4 バイ ト アドレス モードが有効になっています。 2セッ トの SEM コン ト ローラー データが 256Mb SPI フラ ッシュを使用する必要がある場合は、 こ

の変更が必須です。

デザインの詳細

このセクシ ョ ンでは、 マルチブート モジュールおよびパラ メーター値の選択について詳し く説明しま

す。 ユーザーは、 必要に応じてマルチブート モジュールのソース ファ イルおよび変更後のソース ファ

イルを見直すこ とができます。

マルチブート モジュール

マルチブート モジュールには、 一般的な共有シーケンスを調整する制御ロジッ クがあ り ます。 ICAP を介してコンフ ィギュレーシ ョ ン ロジッ クへ発行されるレジスタ書き込みコマンドは各ファ ミ リ で異な

り ますが、 シーケンス処理はすべてのインプリ メンテーシ ョ ンで同じです。 このモジュールは、 すべて

の FPGA フ ァ ミ リ で共通でカウンター駆動型のテーブル (図 2) で構成されているため、 一般的なソ

リ ューシ ョ ンはテーブルの内容とデータ パス幅のみ異なり ます。

次のビッ ト ス ト リームの位置が mbt_next_addr ポートから与えられ、その値がテーブル内で適宜使用さ

れます。 ト リ ガーは mbt_trigger ポートから提供されます。 この信号は、 プッシュボタンで操作できる

よ うに同期化とデバウンス処理しか行われません。

カウンターは、 fsm_advance 信号で有効に設定されている場合にインク リ メン ト します。 WAIT 制御ロ

ジッ クは、テーブルからの wait_* フ ィードバッ ク信号を使用して、無条件の前進、 ト リガーの待機、 ア

イ ドルの待機、 または無条件の停止のいずれかを判断します。 カウンターがインク リ メン トする と、 格

納されているシーケンスが残りのテーブル出力から再生されます。

inject_address および inject_strobe 出力は、SEM コン ト ローラーのエラー挿入ポートへ接続されていま

す。 ト リガー信号を待機した後、 制御ロジッ クは inject_strobe 出力を 3 サイ クル間アサート して enteridle コマンドを発行して、 SEM コン ト ローラーにアイ ドル状態へ遷移するよ うに命令します。 その後、

制御ロジッ クは SEM コン ト ローラーがアイ ドル状態 (SEM コン ト ローラーのステータス ポート信号

status_* からデコード されたステータス) になるまで待機します。

X-Ref Target - Figure 2

図 2 : マルチブート モジュールのブロック図

SYNCDEBOUNCE

TABLE

status_*

mbt_next_addr

X733_02_032312

IDLEDETECT

WAITCONTROL

UPCTR

ENmbt_triggermbt_event

sem_event

fsm_advancefsm_state

wait_*

inject_address

inject_strobe

mbt_icap_i/cs/rdwrb

mbt_icap_sel

マルチブートのアプリケーシ ョ ン例

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 8

SEM コン ト ローラーがアイ ドル状態になる と、 エラー検出は実行されな く な り、 制御ロジッ クは 、mbt_icap_sel 出力を使用する SEM コン ト ローラーで ICAP が使用されないよ うに ICAP をマルチプレ

クスします。 その後、 mbt_icap_i、 mbt_icap_cs、 および mbt_icap_rdwrb 出力を使用してマルチブート

イベン ト用に必要な次のコマンドを ICAP に発行します。

• SYNC ワード

• NULL コマンドで CMD レジスタへタイプ 1 書き込み

• GENERAL1 および GENERAL2、 または WBSTAR (FPGA アーキテクチャによる) へタイプ 1 書き込み

• IPROG コマンドで CMD レジスタへタイプ 1 書き込み

ICAP のアクティ ビティは、 mbt_next_addr と FPGA アーキテクチャによって異なり ます。 シーケンス

は、 FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ドに記載されている情報に基づきますが、 SEM コン

ト ローラーと ICAP を共有する際の要件によって変わり ます。 レジスタ レベルの詳細は、マルチブート

モジュールのソース ファ イルを確認してください。 ICAP のアクティビティが完了する と、 リ コンフ ィ

ギュレーシ ョ ンが実行されます。

SP605 のパラメーター選択

マルチブー ト モジュールは、 次のビ ッ ト ス ト リ ームの位置と して NEXT_CONFIG_ADDRESS をSpartan-6 FPGA の GENERAL1 および GENERAL2 レジスタへロード します。 GENERAL1 および

GENERAL2 の設定は SP605 の回路図に基づき、 FPGA コ ンフ ィ ギ ュ レーシ ョ ン信号 A[23] が16M x 16 (256Mb) パラレル フラ ッシュの 上位アドレス ピンへ接続されています。 パラレル フラ ッ

シュは、 2 つのビッ ト ス ト リームを格納するのに十分な大きさです。

パラレル フラ ッシュは 2 つのバンクに論理的に分割され、各ビッ ト ス ト リームに 1 つのバンクが割り当

てられています。 バンクは FPGA のコンフ ィギュレーシ ョ ン信号 A[23] を介して選択され、 残りの下

位アドレス ビッ トは常に 0 とな り ます。インプリ メンテーシ ョ ン A はバンク 0、インプリ メンテーシ ョ

ン B はバンク 1 と して考えます。

インプリ メンテーシ ョ ン A の FPGA をインプリ メンテーシ ョ ン B でリ コンフ ィギュレーシ ョ ンする場

合、 NEXT_CONFIG_ADDRESS は 0x00800000 (16 進数) または 8,388,608 (10 進数) とな り ます。

• GENERAL2[15:10] = 000000、 予約済み

• GENERAL2[9:8] = 00、 未使用

• GENERAL2[7:0] = 10000000

• GENERAL1[15:0] = 0000000000000000

インプリ メンテーシ ョ ン B の FPGA をインプリ メンテーシ ョ ン A でリ コンフ ィギュレーシ ョ ンする場

合、 NEXT_CONFIG_ADDRESS は 0x00000000 (16 進数) または 0 (10 進数) とな り ます。

* GENERAL2[15:10] = 000000、 予約済み

* GENERAL2[9:8] = 00、 未使用

* GENERAL2[7:0] = 00000000

* GENERAL1[15:0] = 0000000000000000

SEM コン ト ローラーは、THIS_SEM_IP_ADDRESS を使用して SPI フラ ッシュ内のデータの開始点を

特定します。 16M x 8 (128 Mb) SPI フラ ッシュは、 SEM コン ト ローラーのオプシ ョ ン設定を考慮して

2 つのデータ セッ ト を格納するのに十分な大きさ となっています。 したがって、 SPI フラ ッシュが論理

的に 2 つのバンクに分割され、 各バンクそれぞれにデータが割り当てられた場合、 開始アドレスは SPIフラ ッシュの 上位アドレス ビッ トによって異なり ます。インプリ メンテーシ ョ ン A はバンク 0 に、イ

ンプリ メンテーシ ョ ン B はバンク 1 にデータを格納するこ とが前提です。

マルチブートのアプリケーシ ョ ン例

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 9

インプリ メンテーシ ョ ン A のデータを特定する場合、 THIS_SEM_IP_ADDRESS は 0x00000000 (16進数) または 0 (10 進数) と な り、 イ ンプ リ メ ンテーシ ョ ン B では、 0x00800000 (16 進数) または

8,388,608 (10 進数) とな り ます。

図 3 に、 このアプリ ケーシ ョ ン例におけるフラ ッシュ デバイスのメモ リ マップを示します。

THIS_BITSTREAM_NMBR は、ビッ ト ス ト リームを視覚的に識別するために LED に適用される値で、

SP605 回路図では DS3、 DS4、 および DS5 と示されています。 インプリ メンテーシ ョ ン A で使用され

る値は 2 で、 DS4 がオン、 DS3 と DS5 がオフになり ます (図 6)。 インプリ メンテーシ ョ ン B で使用さ

れる値は 5 で、 DS3 と DS5 がオン、 DS4 がオフになり ます (図 7)。

ML605 のパラメーター選択

マルチブー ト モジュールは、 次のビ ッ ト ス ト リ ームの位置と して NEXT_CONFIG_ADDRESS をVirtex-6 FPGA の WBSTAR レジスタへロード します。WBSTAR の設定は、ML605 の回路図に基づい

き、 FPGA コンフ ィギュレーシ ョ ン信号 RS[0] が 16M x 16 (256 Mb) パラレル フラ ッシュの 上位ア

ドレス ピンへ接続されています。パラレル フラ ッシュは、2 つのビッ ト ス ト リームを格納するのに十分

な大きさです。

パラレル フラ ッシュは 2 つのバンクに論理的に分割され、 各ビッ ト ス ト リームに 1 つのバンクが割り当

てられています。 バンクは RS[0] を介して選択され、 残りの下位アドレス ビッ トは常に 0 とな り ます。

インプリ メンテーシ ョ ン A はバンク 0、 インプリ メンテーシ ョ ン B はバンク 1 と して考えます。

インプリ メンテーシ ョ ン A の FPGA をインプリ メンテーシ ョ ン B でリ コンフ ィギュレーシ ョ ンする場

合、NEXT_CONFIG_ADDRESS が 0x0C000000 (16 進数) または 201,326,592 (10 進数) とな り ます。

• WBSTAR[31:29] = 000、 予約済み

• WBSTAR[28:27] = 01、 RS[1:0] の駆動値

• WBSTAR[26] = 1、 RS[1:0] ド ラ イバー イネーブル

X-Ref Target - Figure 3

図 3 : SP605 のマルチブート アプリケーシ ョ ン例のデータ構造

FPGA Configuration Data Memory Mapfor Configuration on the SP605 Board from

16M x 16 (256 Mb) Parallel Flash

Implementation BFPGA Data for MultiBoot Image

BIT File Stored Upfrom Word Address

0x800000

Implementation AFPGA Data for Golden Image

BIT File Stored Upfrom Word Address

0x000000

SEM Controller Data Memory Mapfor Private Data from

16M x 8 (128 Mb) SPI Flash

0x000000

Logi

cal B

ank

0(F

PG

A A

[23]

= 0

)Lo

gica

l Ban

k 1

(FP

GA

A[2

3] =

1)

0x8000000x7FFFFF

0xFFFFFF

Implementation BSEM Data for MultiBoot Image

BIN File Stored Upfrom Byte Address

0x800000

Implementation ASEM Data for Golden Image

BIN File Stored Upfrom Byte Address

0x000000

0x000000

X733_03_041812

Logi

cal B

ank

0Lo

gica

l Ban

k 1

0x8000000x7FFFFF

0xFFFFFF

マルチブートのアプリケーシ ョ ン例

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 10

• WBSTAR[25:0] = 00000000000000000000000000

インプリ メンテーシ ョ ン B の FPGA をインプリ メンテーシ ョ ン A でリ コンフ ィギュレーシ ョ ンする場

合、 NEXT_CONFIG_ADDRESS が 0x04000000 (16 進数) または 67,108,864 (10 進数) とな り ます。

• WBSTAR[31:29] = 000、 予約済み

• WBSTAR[28:27] = 00、 RS[1:0] の駆動値

• WBSTAR[26] = 1、 RS[1:0] ド ラ イバー イネーブル

• WBSTAR[25:0] = 00000000000000000000000000

SEM コン ト ローラーは、THIS_SEM_IP_ADDRESS を使用して SPI フラ ッシュ内のデータ開始点を特

定します。 16M x 8 (128 Mb) SPI フラ ッシュは、 SEM コン ト ローラーのオプシ ョ ン設定を考慮して 2つのデータ セッ ト を格納するのに十分な大きさ となっています。 したがって、 SPI フラ ッシュが論理的

に 2 つのバンクに分割され、各バンクそれぞれにデータが割り当てられた場合、開始アドレスは SPI フラ ッシュの 上位アドレス ビッ トによって異なり ます。 インプ リ メ ンテーシ ョ ン A はバンク 0 に、 イ

ンプリ メンテーシ ョ ン B はバンク 1 にデータを格納するこ とが前提です。

インプリ メンテーシ ョ ン A のデータを特定する場合、 THIS_SEM_IP_ADDRESS は 0x00000000 (16進数) または 0 (10 進数) と な り、 イ ンプ リ メ ンテーシ ョ ン B では、 0x00800000 (16 進数) または

8,388,608 (10 進数) とな り ます。

図 4 に、 このアプリ ケーシ ョ ン例におけるフラ ッシュ デバイスのメモ リ マップを示します。

THIS_BITSTREAM_NMBR は、ビッ ト ス ト リームを視覚的に識別するために LED に適用される値で、

ML605 回路図では DS16、 DS17、 および DS19 と示されています。 インプリ メンテーシ ョ ン A で使用

される値は 2 で、 DS16 がオン、 DS17 と DS19 がオフになり ます (図 8)。 インプ リ メ ンテーシ ョ ン Bで使用される値は 5 で、 DS17 と DS19 がオン、 DS16 がオフになり ます (図 9)。

X-Ref Target - Figure 4

図 4 : ML605 のマルチブート アプリケーシ ョ ン例のデータ構造

FPGA Configuration Data Memory Mapfor Configuration on the ML605 Board from

16M x 16 (256 Mb) Parallel Flash

Implementation BFPGA Data for MultiBoot Image

BIT File Stored Upfrom Word Address

0x800000

Implementation AFPGA Data for Golden Image

BIT File Stored Upfrom Word Address

0x000000

SEM Controller Data Memory Mapfor Private Data from

16M x 8 (128 Mb) SPI Flash

0x000000

Logi

cal B

ank

0(F

PG

A R

S[0

] = 0

)Lo

gica

l Ban

k 1

(FP

GA

RS

[0] =

1)

0x8000000x7FFFFF

0xFFFFFF

Implementation BSEM Data for MultiBoot Image

BIN File Stored Upfrom Byte Address

0x800000

Implementation ASEM Data for Golden Image

BIN File Stored Upfrom Byte Address

0x000000

0x000000

X733_04_041812

Logi

cal B

ank

0Lo

gica

l Ban

k 1

0x8000000x7FFFFF

0xFFFFFF

マルチブートのアプリケーシ ョ ン例

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 11

KC705 のパラメーター選択

マルチブー ト モジュールは、 次のビ ッ ト ス ト リ ームの位置と して NEXT_CONFIG_ADDRESS をKintex-7 FPGA の WBSTAR レジスタへロード します。 WBSTAR の設定は、 KC705 回路図に基づき、

FPGA コンフ ィギュレーシ ョ ン信号 RS[1:0] が 64M x 16 (1 Gb) パラレル フラ ッシュの 2 つの 上位

アドレス ピンへ接続されています。パラレル フラ ッシュは、4 つのビッ ト ス ト リームを格納するのに十

分な大きさです。

パラレル フラ ッシュは 4 つのバンクに論理的に分割され、各ビッ ト ス ト リームに 1 つのバンクが割り当

てられています。 バンクは RS[1:0] を介して選択され、 残りの下位アドレス ビッ トは常に 0 とな り ま

す。 インプリ メンテーシ ョ ン A はバンク 0、 インプリ メンテーシ ョ ン B はバンク 1 と して考えます。

インプリ メンテーシ ョ ン A の FPGA をインプリ メンテーシ ョ ン B でリ コンフ ィギュレーシ ョ ンする場

合、NEXT_CONFIG_ADDRESS が 0x60000000 (16 進数) または 1,610,612,736 (10 進数) とな り ます。

• WBSTAR[31:30] = 01、 RS[1:0] の駆動値

• WBSTAR[29] = 1、 RS[1:0] ド ラ イバー イネーブル

• WBSTAR[28:0] = 00000000000000000000000000000

インプリ メンテーシ ョ ン B の FPGA をインプリ メンテーシ ョ ン A でリ コンフ ィギュレーシ ョ ンする場

合、 NEXT_CONFIG_ADDRESS が 0x20000000 (16 進数) または 536870912 (10 進数) とな り ます。

• WBSTAR[31:30] = 00、 RS[1:0] の駆動値

• WBSTAR[29] = 1、 RS[1:0] ド ラ イバー イネーブル

• WBSTAR[28:0] = 00000000000000000000000000000

SEM コン ト ローラーは、THIS_SEM_IP_ADDRESS を使用して SPI フラ ッシュ内のデータ開始点を特

定します。 32M x 8 (256 Mb) SPI フラ ッシュは、 SEM コン ト ローラーのオプシ ョ ン設定を考慮して 2つのデータ セッ ト を格納するのに十分な大きさ となっています。 したがって、 SPI フラ ッシュが論理的

に 2 つのバンクに分割され、各バンクそれぞれにデータが割り当てられた場合、開始アドレスは SPI フラ ッシュの 上位アドレス ビッ トによって異なり ます。 インプ リ メ ンテーシ ョ ン A はバンク 0 に、 イ

ンプリ メンテーシ ョ ン B はバンク 1 にデータを格納するこ とが前提です。

インプリ メンテーシ ョ ン A でデータを特定する場合、THIS_SEM_IP_ADDRESS は 0x00000000 (16進数) または 0 (10 進数) と な り、 イ ンプ リ メ ンテーシ ョ ン B では 0x01000000 (16 進数) または

16,777,216 (10 進数) とな り ます。

図 5 に、 このアプリ ケーシ ョ ン例におけるフラ ッシュ デバイスのメモ リ マップを示します。

インプリ メンテーシ ョ ンおよびプログラ ミング

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 12

THIS_BITSTREAM_NMBR は、ビッ ト ス ト リームを視覚的に識別するために LED に適用される値で、

KC705 回路図では DS25、 DS26、 および DS27 と示されています。 インプリ メンテーシ ョ ン A で使用

される値は 2 で、 DS26 がオン、 DS25 と DS27 がオフになり ます (図 10)。 インプリ メンテーシ ョ ン Bで使用される値は 5 で、 DS25 と DS27 がオン、 DS26 がオフになり ます (図 11)。

インプリ メンテーシ ョ ンおよびプログラ ミング

選択した リ ファレンス デザインのディ レク ト リにある xapp_implement_a サブディ レク ト リには、

インプリ メンテーシ ョ ン A の結果ファイルを生成するスク リプ トがあ り ます。 同様に、 xapp_

implement_b サブディ レク ト リにはインプ リ メ ンテーシ ョ ン B の結果ファ イルを生成するスク リプ

ト があ り ます。 これらのインプ リ メ ンテーシ ョ ンは同じ ソース フ ァ イルから派生したものですが、

xst.scr で指定した 上位パラ メーターを設定して独自の物理的なインプ リ メ ンテーシ ョ ンを構成し

ます。

THIS_SEM_IP_ADDRESS が 0 以外の値に設定されているインプ リ メ ンテーシ ョ ンでは、 新しいデー

タ位置を反映するために SEM コン ト ローラー データのテーブルのポインターを調整する必要があ り ま

す。 リ ファレンス デザインで提供されている makedata.tcl スク リプ トは、 SEM コン ト ローラーで

提供される元の makedata.tcl スク リプ トから派生したもので、 0 以外の THIS_SEM_IP_ADDRESS 値をサポートするよ うにわずかな変更が加えられています。

リ ファレンス デザインで提供されている makedata.tcl スク リプ トは、SEM コン ト ローラー データ

にテス ト パターンを挿入するよ うにも変更されています。 これによ り、特定の位置にエラーを挿入して

エラー分類結果を確認し、 データ セッ トの選択を検証できます。

テス ト パターンは、ECC (エラー訂正コード ) チェッ クサムのエッセンシャル ビッ ト データを格納する

ワードのフレーム アドレス 0 に配置されています。通常、チェッ クサムは非エッセンシャルと して分類

X-Ref Target - Figure 5

図 5 : KC705 のマルチブート アプリケーシ ョ ン例のデータ構造

FPGA Configuration Data Memory Mapfor Configuration on the KC705 Board from

64M x 16 (1 Gb) Parallel Flash

Implementation BFPGA Data for MultiBoot Image

Logical Bank 3Logical Bank 2

(Not Used)

BIT File Stored Upfrom Word Address

0x01000000

Implementation AFPGA Data for Golden Image

BIT File Stored Upfrom Word Address

0x00000000

SEM Controller Data Memory Mapfor Private Data from

32M x 8 (256 Mb) SPI Flash

0x00000000

Logi

cal B

ank

0(F

PG

A R

S[1

:0] =

00)

Logi

cal B

ank

1(F

PG

A R

S[1

:0] =

01)

0x010000000x00FFFFFF

0x020000000x01FFFFF0

0x03FFFFFF

Implementation BSEM Data for MultiBoot Image

BIN File Stored Upfrom Byte Address0x01000000

Implementation ASEM Data for Golden Image

BIN File Stored Upfrom Byte Address0x00000000

0x00000000

X733_05_041812

Logi

cal B

ank

0Lo

gica

l Ban

k 1

0x010000000x00FFFFFF

0x01FFFFFF

ハードウェア検証

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 13

され、 0 で表されます。 変更後の makedata.tcl スク リプ トでは、 これらのゼロが THIS_BITSTREAM_NMBR で置き換えられています。 このため、インプリ メンテーシ ョ ン A の SEM コン ト

ローラー データ、インプリ メンテーシ ョ ン B の SEM コン ト ローラー データ、および変更前の SEM コン ト ローラー データを区別できます。

インプリ メンテーシ ョ ンの各サブディ レク ト リには、 既知の 良インプリ メンテーシ ョ ン結果が提供さ

れています。 ユーザーは、 必要に応じ てサブデ ィ レ ク ト リ 内にあ る イ ンプ リ メ ン ト ス ク リ プ ト

(implement.sh または implement.bat) を再実行できます。 xapp_programming サブディ レク ト

リにあるプログラ ミ ング スク リプ トは、 既知の 良インプ リ メ ンテーシ ョ ン結果または再生成したイ

ンプリ メンテーシ ョ ン結果のいずれかで使用できます。

プログラ ミ ング スク リプ ト (make_proms.sh または make_proms.bat) は、結果ファイルの存在を確

認し、 評価キッ トのパラレル フラ ッシュをプログラムするためにインプ リ メ ンテーシ ョ ン A のビッ ト

ス ト リームと インプリ メンテーシ ョ ン B のビッ ト ス ト リームを結合します。 また、 SPI フラ ッシュをプ

ログラムするために SEM コン ト ローラーのデータも結合します。 結合されたデータ ファ イルを作成し

た後、 スク リプ トはパラレル フラ ッシュをプログラムするよ うに命令し、ユーザーへプログラムの開始

または省略のいずれかを選択するよ うに促します。

注記 : パラレル フラ ッシュのプログラムには相当な時間を要します。

ハード ウェア ターゲッ トの一部と してオプシ ョ ンの SPI フラ ッシュが利用できる場合、ユーザーはサー

ドパーティが提供するプログラ ミ ング ソ リ ューシ ョ ンのインス ト ラ クシ ョ ンに従ってその SPI フラ ッ

シュを個別にプログラムする必要があ り ます。

ハードウェア検証 パラレル フラ ッシュ (およびオプシ ョ ンの SPI フラ ッシュ ) のプログラムが完了する と、 マルチブート

アプリ ケーシ ョ ンのサンプル デザインをハード ウェアで検証できます。

マルチブートの動作

マルチブートの正常な動作を検証する手順は次のとおりです。

1. すべてのプログラ ミ ング ハードウェアの接続を断ち、 電源を一旦切って入れ直します。

2. design_number の LED で、FPGA がはじめにインプリ メンテーシ ョ ン A をロード しているこ とを

確認します。

3. マルチブート ト リ ガー ボタンを押します。

4. design_number の LED で、FPGA がインプリ メンテーショ ン B をロードしているこ とを確認します。

5. マルチブート ト リ ガー ボタンを再び複数回押します。 ボタンを押すごとに、 FPGA はインプ リ メ

ンテーシ ョ ン A と インプリ メンテーシ ョ ン B を往来するこ とを確認します。

次の図では、各ハード ウェア ターゲッ トにロード されたインプリ メンテーシ ョ ン、およびマルチブート

ト リ ガー ボタンの位置、 design_number の LED を示します。

• SP605 インプリ メンテーシ ョ ン A (図 6) およびインプリ メンテーシ ョ ン B (図 7)

• ML605 インプリ メンテーシ ョ ン A (図 8) およびインプリ メンテーシ ョ ン B (図 9)

• KC705 インプ リ メンテーシ ョ ン A (図 10) およびインプ リ メンテーシ ョ ン B (図 11)

ハードウェア検証

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 14

X-Ref Target - Figure 6

図 6 : SP605 インプリ メンテーシ ョ ン A (Design Number LED = 2)

X-Ref Target - Figure 7

図 7 : SP605 インプリ メンテーシ ョ ン B (Design Number LED = 5)

Design Number LEDs MultiBoot Trigger ButtonXAPP733_006_030712

Design Number LEDs MultiBoot Trigger ButtonX733_07_030712

ハードウェア検証

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 15

X-Ref Target - Figure 8

図 8 : ML605 インプリ メンテーシ ョ ン A (Design Number LED = 2)

X-Ref Target - Figure 9

図 9 : ML605 インプリ メンテーシ ョ ン B (Design Number LED = 5)

Design Number LEDs MultiBoot Trigger ButtonX733_08_030712

Design Number LEDs MultiBoot Trigger ButtonX733_09_030712

ハードウェア検証

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 16

SEM コン ト ローラーのブート

ハードウェア ターゲッ トの USB-to-UART ブリ ッジを使用して、 SEM コン ト ローラーを PC 上で動作

しているターミナル プログラムへ接続します。 Silicon Labs 社製 USB-to-UART Bridge Virtual COMPort (VCP) ド ラ イバーを PC にインス トールし、PC をハード ウェア ターゲッ トへケーブル接続します。

必要なド ライバーは、 Silicon Labs 社のド ライバー ダウンロード サイ トから無償で入手できます。

http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

ド ラ イバーのインス トール方法およびハードウェア接続の詳細は、 22 ページの 「参考資料」 のターゲッ

ト FPGA のコンフ ィギュレーシ ョ ン ガイ ドを参照して ください。 PC のターミナル プログラムは次の

よ うに設定します。

X-Ref Target - Figure 10

図 10 : KC705 インプリ メンテーシ ョ ン A (Design Number LED = 2)

X-Ref Target - Figure 11

図 11 : KC705 インプリ メンテーシ ョ ン B (Design Number LED = 5)

Design Number LEDs MultiBoot Trigger ButtonX733_10_030712

Design Number LEDs MultiBoot Trigger ButtonX733_11_030712

ハードウェア検証

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 17

• Baud: 9600

• Settings: 8-N-1

• Flow control: None

• Terminal setup: VT100

• TX newline: CR

• RX newline: CR+LF

• Local echo: No

通常、 USB-to-UART ブリ ッジはセルフパワー (対バスパワー ) であるため、 ハード ウェア ターゲッ ト

には、 ターミナル プログラムが関連する COM ポート を認識してセッ ト アップする前に電力が必要で

す。 ハード ウェア ターゲッ トの電源を一旦切ってまた入れ直すと、 ターミナル セッシ ョ ンの応答が停

止する可能性があ り ます。

電源投入後の各マルチブート イベン トでは、コアが正常に接続されて初期化が完了したこ とを確実にす

るために、 SEM コン ト ローラーが初期化レポート を発行します。 KC705 リ ファレンス デザインの初期

化レポートの例を次に示します。

X7_SEM_V3_2 Core name and versionSC 01 Enter initialization stateFS 08 Core feature set reportICAP OK ICAP communication passRDBK OK Readback initializedINIT OK Initialization completeSC 02 Enter observation stateO> Observation prompt

必要に応じて、 ユーザーは初期化レポート を 『LogiCORE IP Soft Error Mitigation Controller v3.2 製品

ガイ ド』 [参照 8] の内容と比較できます。 この手順で、 SEM コン ト ローラーのブート を検証できます。

SEM コン ト ローラーのデータ

ハードウェア ターゲッ トの一部と してオプシ ョ ンの SPI フラ ッシュが利用でき、プログラムされている

場合は、 フレーム 0 の ECC チェッ クサム内のテス ト パターンを使用して SEM コン ト ローラーのデー

タを検証できます。 この検証は、 これらのアドレスへ挿入されたエラーの分類結果をプローブして行わ

れます。

注記 : この手順では SEM コン ト ローラーのデータを検証します。 SPI フラ ッシュが不在、 空、 または

不正なデータを含む場合、 SEM コン ト ローラーが表示されるものとは異なるログを生成します。

ターミナル セッシ ョ ンから、ユーザーが SEM コン ト ローラーをアイ ドル状態に遷移し (I コマンド )、エラーを 1 つ挿入 (N コマンド ) した後、SEM コン ト ローラーを観察モード (O コマンド ) に戻します。指

定したアドレスで、 エラー分類機能が予想した分類を生成します。

SP605 インプリ メンテーシ ョ ン A の場合、 エラー挿入アドレス と予想の分類は次のとおりです。

• C00000820 (非エッセンシャル、 THIS_BITSTREAM_NMBR[0] = 0 に基づく )

• C00000821 (エッセンシャル、 THIS_BITSTREAM_NMBR[1] = 1 に基づく )

• C00000822 (非エッセンシャル、 THIS_BITSTREAM_NMBR[2] = 0 に基づく )

SP605 インプリ メンテーシ ョ ン B の場合、 エラー挿入アドレス と予想の分類は次のとおりです。

• C00000820 (エッセンシャル、 THIS_BITSTREAM_NMBR[0] = 1 に基づく )

• C00000821 (非エッセンシャル、 THIS_BITSTREAM_NMBR[1] = 0 に基づく )

• C00000822 (エッセンシャル、 THIS_BITSTREAM_NMBR[2] = 1 に基づく )

ML605 インプリ メンテーシ ョ ン A の場合、 エラー挿入アドレス と予想の分類は次のとおりです。

ハードウェア検証

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 18

• C00000500 (非エッセンシャル、 THIS_BITSTREAM_NMBR[0] = 0 に基づく )

• C00000501 (エッセンシャル、 THIS_BITSTREAM_NMBR[1] = 1 に基づく )

• C00000502 (非エッセンシャル、 THIS_BITSTREAM_NMBR[2] = 0 に基づく )

ML605 インプリ メンテーシ ョ ン B の場合、 エラー挿入アドレス と予想の分類は次のとおりです。

• C00000500 (エッセンシャル、 THIS_BITSTREAM_NMBR[0] = 1 に基づく )

• C00000501 (非エッセンシャル、 THIS_BITSTREAM_NMBR[1] = 0 に基づく )

• C00000502 (エッセンシャル、 THIS_BITSTREAM_NMBR[2] = 1 に基づく )

KC705 インプ リ メンテーシ ョ ン A の場合、 エラー挿入アドレス と予想の分類は次のとおりです。

• C000000640 (非エッセンシャル、 THIS_BITSTREAM_NMBR[0] = 0 に基づく )

• C000000641 (エッセンシャル、 THIS_BITSTREAM_NMBR[1] = 1 に基づく )

• C000000642 (非エッセンシャル、 THIS_BITSTREAM_NMBR[2] = 0 に基づく )

KC705 インプ リ メンテーシ ョ ン B の場合、 エラー挿入アドレス と予想の分類は次のとおりです。

• C000000640 (エッセンシャル、 THIS_BITSTREAM_NMBR[0] = 1 に基づく )

• C000000641 (非エッセンシャル、 THIS_BITSTREAM_NMBR[1] = 0 に基づく )

• C000000642 (エッセンシャル、 THIS_BITSTREAM_NMBR[2] = 1 に基づく )

KC705 インプ リ メ ンテーシ ョ ン A のターミナル セッシ ョ ンのコ メ ン ト付きサンプル ログを次に示し

ます。

O> ISC 00I> N C000000640 Inject error into ECC[0]SC 10SC 00I> OSC 02O> SC 04SED OK Single bit error detectPA 00000000LA 00000000WD 32 BT 00COR Begin correction rptWD 32 BT 00 Correction, expectedEND End rptFC 00SC 08CLA Begin classification rptEND End rpt, non-essential, expectedFC 00SC 02

O> ISC 00I> N C000000641 Inject error into ECC[1]SC 10SC 00I> OSC 02O> SC 04SED OK Single bit error detectPA 00000000

ハードウェア検証

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 19

LA 00000000WD 32 BT 01COR Begin correction rptWD 32 BT 01 Correction, expectedEND End rptFC 00SC 08CLA Begin classification rptWD 32 BT 01 Essential, expectedEND End rptFC 40SC 02

O> ISC 00I> N C000000642 Inject error into ECC[2]SC 10SC 00I> OSC 02O> SC 04SED OK Single bit error detectPA 00000000LA 00000000WD 32 BT 02COR Begin correction rptWD 32 BT 02 Correction, expectedEND End rptFC 40SC 08CLA Begin classification rptEND End rpt, non-essential, expectedFC 00SC 02

KC705 インプ リ メ ンテーシ ョ ン B のターミナル セッシ ョ ンのコ メ ン ト付きサンプル ログを次に示し

ます。

O> ISC 00I> N C000000640 Inject error into ECC[0]SC 10SC 00I> OSC 02O> SC 04SED OK Single bit error detectPA 00000000LA 00000000WD 32 BT 00COR Begin correction rptWD 32 BT 00 Correction, expectedEND End rptFC 00SC 08CLA Begin classification rptWD 32 BT 00 Essential, expectedEND End rptFC 40SC 02

リファレンス デザイン

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 20

O> ISC 00I> N C000000641 Inject error into ECC[1]SC 10SC 00I> OSC 02O> SC 04SED OK Single bit error detectPA 00000000LA 00000000WD 32 BT 01COR Begin correction rptWD 32 BT 01 Correction, expectedEND End rptFC 40SC 08CLA Begin classification rptEND End rpt, non-essential, expectedFC 00SC 02

O> ISC 00I> N C000000642 Inject error into ECC[2]SC 10SC 00I> OSC 02O> SC 04SED OK Single bit error detectPA 00000000LA 00000000WD 32 BT 02COR Begin correction rptWD 32 BT 02 Correction, expectedEND End rptFC 00SC 08CLA Begin classification rptWD 32 BT 02 Essential, expectedEND End rptFC 40SC 02O> ISC 00I> OSC 02

リファレンスデザイン

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

https://secure.xilinx.com/webreg/clickthrough.do?cid=185389

表 2 に、 リ ファレンス デザインの詳細を示します。

まとめ

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 21

表 3 に、 リ ファレンス デザインのデバイス リ ソース使用率を示します。

まとめ このアプリ ケーシ ョ ン ノートでは、 マルチブートおよび LogiCORE IP Soft Error Mitigation (SEM) コン ト ローラーの使用方法を説明しました。 ICAP の共有を調整するには SEM コン ト ローラーの許可が

必要であ り、 データ構成は SEM コン ト ローラー データが追加されても基本的に変更されません。

このアプリ ケーシ ョ ン ノートの リ ファレンス デザインは、 ハード ウェアで検証済みのサンプル デザイ

ンであるため、 ユーザー デザインに適用し、 システム固有のデザイン管理やフ ィールド アップグレー

ドの要件を満たすこ とができます。

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

パラメーター 説明

全般

開発者 Eric Crabill

ターゲッ ト デバイス Spartan-6、 Virtex-6、 7 シ リーズ FPGA

ソース コードの提供 あ り

ソース コードの形式 Verilog、 VHDL

既存のリ ファレンス デザインまたはアプ リ ケーシ ョ ン

ノート、 サードパーティ、 CORE Generator ソフ ト ウェ

アからデザインへのコード /IP の使用

SEM_V3_2 またはそれ以降

シミ ュレーシ ョ ン

機能シ ミ ュレーシ ョ ンの実施 N/A

タイ ミ ング シ ミ ュレーシ ョ ンの実施 N/A

シ ミ ュレーシ ョ ン用テス トベンチの提供 N/A

テス トベンチの形式 N/A

使用したシ ミ ュレータ N/A

SPICE/IBIS シ ミ ュレーシ ョ ン N/A

インプリ メンテーシ ョ ン

使用した合成ソフ ト ウェア ツール XST、 ISE® Design Suite 14.1

使用したインプ リ メンテーシ ョ ン ツール ISE Design Suite 14.1

スタティ ッ ク タイ ミ ング解析の実施 はい

ハードウェア検証

ハードウェア検証の実施 はい、 6 つのデザインすべてが検証済み

検証に使用したハード ウェア プラ ッ ト フォーム SP605 ボード と 128Mb SPI フラ ッシュ

ML605 ボード と 128Mb SPI フラ ッシュ

KC705 ボード と 256Mb SPI フラ ッシュ

表 3 : SEM コン ト ローラーのサンプル デザインへ追加されたロジックのデバイス使用率

FPGA LUT フリ ップフロップ ブロック RAM BUFG

Spartan-6 55 35 0 0

Virtex-6 70 35 0 0

7 シ リーズ 70 35 0 0

参考資料

XAPP733 (v1.0) 2012 年 5 月 24 日 japan.xilinx.com 22

参考資料 次の文書は、 このアプリ ケーシ ョ ン ノートの補足資料です。

1. XAPP517 : 『SEM コン ト ローラーとの ICAP の共有』

2. UG380 : 『Spartan-6 FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ド』

3. UG360 : 『Virtex-6 FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ド』

4. UG470 : 『7 シ リーズ FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ド』

5. UG525 : 『ザイ リ ンクス Spartan-6 FPGA SP605 評価キッ ト スタート アップ ガイ ド』

6. UG533 : 『ザイ リ ンクス Virtex-6 FPGA ML605 評価キッ ト スタート アップ ガイ ド』

7. UG883 : 『Kintex-7 FPGA ベース ターゲッ ト リ ファレンス デザイン スタート アップ ガイ ド』

8. PG036 : 『LogiCORE IP Soft Error Mitigation Controller v3.2 製品ガイ ド』

9. UG526 : 『SP605 ハードウェア ユーザー ガイ ド』

10. UG534 : 『ML605 ハードウェア ユーザー ガイ ド』

11. UG810 : 『Kintex-7 FPGA 用 KC705 評価ボード ユーザーガイ ド』

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

Notice of Disclaimer

The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and useof Xilinx products. To the maximum extent permitted by applicable law: (1) Materials are made available"AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES AND CONDITIONS,EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OFMERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE;and (2) Xilinx shall not be liable (whether in contract or tort, including negligence, or under any othertheory of liability) for any loss or damage of any kind or nature related to, arising under, or in connectionwith, the Materials (including your use of the Materials), including for any direct, indirect, special,incidental, or consequential loss or damage (including loss of data, profits, goodwill, or any type of lossor damage suffered as a result of any action brought by a third party) even if such damage or loss wasreasonably foreseeable or Xilinx had been advised of the possibility of the same. Xilinx assumes noobligation to correct any errors contained in the Materials or to notify you of updates to the Materials orto product specifications. You may not reproduce, modify, distribute, or publicly display the Materialswithout prior written consent. Certain products are subject to the terms and conditions of the LimitedWarranties which can be viewed at http://www.xilinx.com/warranty.htm; IP cores may be subject towarranty and support terms contained in a license issued to you by Xilinx. Xilinx products are notdesigned or intended to be fail-safe or for use in any application requiring fail-safe performance; youassume sole risk and liability for use of Xilinx products in Critical Applications:http://www.xilinx.com/warranty.htm#critapps.

本資料は英語版 (v1.0) を翻訳したもので、 内容に相違が生じる場合には原文を優先します。

資料によっては英語版の更新に対応していないものがあ り ます。

日本語版は参考用と してご使用の上、 新情報につきましては、 必ず 新英語版をご参照ください。

この資料に関するフィードバックおよびリンクなどの問題につきましては、 [email protected]までお知らせください。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール

アドレスへのお問い合わせは受け付けておりません。 あらかじめご了承ください。

年月日 バージョ ン 内容

2012 年 5 月 24 日 1.0 初版リ リース