Comments
Description
Transcript
Vivado 高位合成を使用したリード ソロモン消去コーデックの
ア プ リ ケーシ ョ ン ノ ー ト : Kintex UltraScale FPGA Vivado 高位合成を使用 し た リ ー ド ソ ロ モ ン消去コ ーデ ッ クのデザイ ン XAPP1273 (v1.0) 2016 年 3 月 14 日 著者 : Matt Ruan 概要 こ のアプ リ ケーシ ョ ン ノ ー ト は、 ザ イ リ ン ク ス Vivado® 高位合成 (HLS) ツールを使用 し た消去 コ ーデ ッ ク のデザ イ ンに 焦点を当ててい ます。 こ の コ ーデ ッ ク は、 C プ ロ グ ラ ミ ン グ言語の ソ ース コ ー ド を利用 し 、 Kintex® UltraScale™ FPGA 用 の高効率で合成可能な Verilog ま たは VHDL コ ー ド を生成 し ます。 生成行列の定義や消去コ ー ド レー ト な ど の消去 コ ー ド パ ラ メ ー タ ーを変更す る 必要があ る 場合、 C ヘ ッ ダー フ ァ イ ルをわずかに修正す る だけで済みます。 サンプルの リ ー ド ソ ロ モン消去 コ ーデ ッ ク は一般的な アーキ テ ク チ ャ にな っ てお り 、 C ソ ース コ ー ド を変更すれば、 別の タ イ プの消去 コ ーデ ッ ク が作成で き ます。 こ のアプ リ ケーシ ョ ン ノ ー ト の リ フ ァ レ ン ス デザ イ ン フ ァ イ ルは、 ザ イ リ ン ク ス の ウ ェ ブサ イ ト か ら ダ ウ ン ロ ー ド で き ます。 デザ イ ン フ ァ イ ルの詳細は、 「 リ フ ァ レ ン ス デザ イ ン」 を参照 し て く だ さ い。 は じ めに 現代社会では、 日々大量のデー タ が生成 さ れ、 消費 さ れてい ます。 それ ら のデー タ を処理お よ び保管する 目的で設営 さ れ る デー タ セ ン タ ーでは、 ス ト レージ デバ イ ス内のハー ド デ ィ ス ク 、 メ モ リ 、 ネ ッ ト ワー ク コ ネ ク タ な ど の電子 コ ン ポー ネ ン ト にはエ ラ ーの発生が避け ら れないに も かかわ ら ず、 デー タ の消失は絶対に許 さ れません。 一般的なデー タ の保護方 法は、 同 じ デー タ の複数の コ ピーを別々の場所で保管する と い う も のです ([参照 1]、 [参照 2])。 その よ う にすれば、 デー タ の消失はデー タ のすべての コ ピーが失われた り 破損 し た り し ない限 り 起き る こ と はな く 、 その可能性は冗長コ ピーの数 を増やせばす ぐ に減 ら す こ と がで き ます。 消失の可能性を十分低い レベルに維持する ために、 標準的なデー タ セ ン タ ー ではデー タ の少な く と も 3 つの同一 コ ピーを保管 し ます。 言い換えれば、 冗長デー タ の量は元のデー タ の 2 倍 よ り も 多 く な る と い う こ と です。 こ れは ま っ た く 非効率です。 深刻な ノ イ ズやチ ャ ネルの悪条件に よ り 送信信号が損なわれがちな通信シ ス テ ムで も 、 エ ラ ーか ら の保護 と い う 同様の問 題が研究 さ れて き ま し た。 シ ス テ ムでは元の信号の複製をい く つ も 送信する のではな く 、 レ シーバー側で自動的にエ ラ ー を修正で き る 、 前方誤 り 訂正 (FEC) コ ー ド が採用 さ れてい ます。 こ のア イ デアはデー タ セ ン タ ーに も 応用 さ れてい ます。 リ ー ド ソ ロ モン (RS) 消去 コ ー ド は誤 り 訂正方式の 1 つであ り 、 追加 さ れ る コ ーデ ィ ン グ情報 と 同数のエ ラ ーを完全に回 復で き ます ([参照 1])。 詳 し く 言えば、 n 個の ワ ー ド で成る 元デー タ に k 個の ワ ー ド で成 る コ ーデ ィ ン グ情報を追加 し た場 合、 合計数 (n+k) 個の ワー ド の う ち、 k 個ま で ワ ー ド エ ラ ーを許容で き る と い う こ と です。 (k+1) 個の ワ ー ド にエ ラ ーがあ る 場合、 エ ラ ーは回復で き ません。 誤 り 訂正 コ ー ド で対応で き る のは こ れが最大限であ り 、 コ ー ド はかな り 慎重に構築す る 必要があ る こ と に注意 し て く だ さ い。 本資料は表記のバージ ョ ンの英語版を翻訳 し た も ので、内容に相違が生 じ る場合には原文を優先 し ます。 資料に よ っ ては英語版の更新に対応 し ていない も のがあ り ます。 日本 語版は参考用 と し て ご使用の上、 最新情報につ き ま し ては、 必ず最新英語版を ご参照 く だ さ い。 XAPP1273 (v1.0) 2016 年 3 月 14 日 1 japan.xilinx.com 動作理論 た と えば、 10 デー タ ブ ロ ッ ク ご と に 4 つま でのデー タ 破損の発生を許容で き る よ う にする には、 コ ーデ ィ ン グ デー タ を 格納す る ための 4 つの追加ブ ロ ッ ク があれば よ く 、 オーバーヘ ッ ド は 40% に ま で抑え ら れます。 ただ し 、 RS 消去 コ ー デ ッ ク は計算量の多い タ ス ク であ り 、 ミ ド ルレ ン ジ サーバーで実行 し た場合には、 プ ロ セ ッ サ実行時間の 30% ~ 40% を 占め る 可能性があ り ます。 こ れはかな り のオーバーヘ ッ ド であ り 、 プ ロ グ ラ マブル ロ ジ ッ ク に基づいて構築 さ れた、 柔 軟性、 ス ケー ラ ビ リ テ ィ 、 そ し て リ ソ ース効率に優れた ア ク セ ラ レー タ を必要 と し ます ([参照 3])。 こ のアプ リ ケーシ ョ ン ノ ー ト は、 C プ ロ グ ラ ミ ン グ言語で消去コ ーデ ッ ク を記述 し 、 その C コ ー ド を Vivado HLS ツール ( 『Vivado Design Suite ユーザー ガ イ ド : 高位合成』 (UG902) ([参照 4])) を使用 し てハー ド ウ ェ ア記述言語 (HDL) に合成 し 、 プ ロ グ ラ マブル ロ ジ ッ ク デバ イ ス に イ ンプ リ メ ン ト す る 方法を説明 し ます。 Vivado HLS は、 一定の制約に従っ て高性能 なパ イ プ ラ イ 化 さ れた アーキ テ ク チ ャ を生成 し 、 HDL と C コ ー ド の動作が同 じ であ る こ と を確認す る テ ス ト ベンチを作 成で き ます。 多 く の場合、 Vivado HLS 合成コ ー ド の効率 と 性能は、 経験豊富な ロ ジ ッ ク エン ジニ アが設計 し て コ ーデ ィ ン グ し た HDL と 同程度 と な り ます。 ク ロ ッ ク レー ト 、 タ ーゲ ッ ト ロ ジ ッ ク デバ イ ス、 ま たは生成行列や コ ー ド レー ト な ど の消去 コ ーデ ッ ク パ ラ メ ー タ ーを変更する 必要があ る 場合には、 C ヘ ッ ダー フ ァ イ ルをわずかに修正す る だけで済 みます。 C で設計 さ れた消去 コ ーデ ッ ク は、 ソ フ ト ウ ェ ア エン ジニアが新 し いアプ リ ケーシ ョ ン向けに簡単にカ ス タ マ イ ズで き る 、 文字どお り の IP にな り ます。 動作理論 こ のセ ク シ ョ ンでは、 消去チ ャ ネルでの前方誤 り 訂正の基本理論 と 、 消去 コ ーデ ッ ク の機能の仕方を説明 し ます。 消去チ ャ ネルで、 送信信号のアルフ ァ ベ ッ ト を A と 定義 し ます。 ( こ こ で、 アルフ ァ ベ ッ ト と は一連の送信信号を意味 し ます。 た と えば、 {-1, +1} は BPSK 変調信号のアルフ ァ ベ ッ ト です)。 受信 し た ど のシ ン ボル S ∈ A で も 、 受信 し た シ ン ボ ルの消去フ ラ グが設定 さ れていなければ、 送信シ ン ボルは必ず S にな り ます。 設定 さ れていれば、 シ ン ボルは等 し い確率 であ ら ゆ る アルフ ァ ベ ッ ト の可能性があ り ます。 後者の場合には、 有用な情報を レ シーバーに提供せずにチ ャ ネル内でシ ン ボルが消去 さ れたかの よ う にな り ます。 消去フ ラ グは、 よ り 複雑な誤 り 訂正方式を必要 と す る 標準的な通信チ ャ ネルで は使用で き ない こ と に注意 し て く だ さ い。 デー タ セ ン タ ーでは、 ス ト レージ デバ イ ス に組み込まれてい る デー タ 整合性 チ ェ ッ ク 回路が消去 イ ベン ト を示す こ と がで き ます。 XAPP1273 (v1.0) 2016 年 3 月 14 日 2 www.xilinx.com 動作理論 図 1 は、 消去 コ ー ド の構築方法を示 し てい ます。 X-Ref Target - Figure 1 $GGLWLRQDO&RGHG%ORFNV 2ULJLQDO'DWD%ORFNV 2QH(UDVXUH &RGH%ORFN 'DWD %ORFN 'DWD %ORFN 'DWD %ORFN 'DWD %ORFN 'DWD %ORFN 'DWD %ORFN 3DULW\ 3DULW\ 3DULW\ 3DULW\ 3DULW\ 3DULW\ &RGHG %ORFN &RGHG %ORFN &RGHG %ORFN 3DULW\%LWVIRU,QWHJULW\&KHFNZLWKLQ(DFK'DWD%ORFN ; 図 1 : 消去コ ー ド のブ ロ ッ ク図 オ レ ン ジ色の囲みは元のデー タ ブ ロ ッ ク であ り 、 その長 さ は 1 キ ロ バ イ ト か ら 128 メ ガバ イ ト ま で さ ま ざ ま です。 緑色の 囲みは、 整合性テ ス ト のために各デー タ ブ ロ ッ ク に追加 さ れたパ リ テ ィ チ ェ ッ ク 情報です。 パ リ テ ィ チ ェ ッ ク 情報のサ イ ズはデー タ ブ ロ ッ ク のサ イ ズ よ り も かな り 小 さ く 、 多 く の場合、 整合性テ ス ト の機能は ス ト レージ デバ イ ス に内蔵 さ れてい ます。 図の右側は、 消去 コ ーデ ッ ク で生成 さ れた コ ー ド 化デー タ ブ ロ ッ ク です。 エン コ ー ド はすべてのデー タ ブ ロ ッ ク 間で水平に実行 さ れます。 図 1 の例では、 1 つの消去 コ ー ド ブ ロ ッ ク は、 各デー タ ブ ロ ッ ク か ら 1 つずつの合計で 6 つの情報シ ン ボル と 、 消去エン コ ーダーに よ り 計算 さ れた 3 つの コ ー ド 化シ ン ボルで構成 さ れてい ます。 Di を i 番目のデー タ ブ ロ ッ ク か ら 取 ら れた シ ン ボル、 Ci を i 番目の コ ー ド 化シ ン ボル と する と 、 エン コ ー ド プ ロ セ ス は、 特定のシ ン ボル ビ ッ ト 幅のガ ロ ア体で定義 さ れた 1 つの行列 ド ッ ト 乗算で表す こ と がで き ます ([参照 1])。 こ れは図 2 で 示 し てお り 、 生成行列係数 {ai, j} お よ び ド ッ ト 乗算演算を含むすべてのシ ン ボルは、 同 じ ガ ロ ア体で定義 さ れます。 X-Ref Target - Figure 2 *HQHUDWRU0DWUL[ (QFRGHG'DWD%ORFNV 2ULJLQDO'DWD%ORFNV ' ' ' ' ' ' ' ' ' & D D D D ,GHQWLW\0DWUL[ D D & D D D D D D D D D D D D & ' ' ' &RGLQJ0DWUL[ ; 図 2 : 消去 コ ー ド のエ ン コ ー ド XAPP1273 (v1.0) 2016 年 3 月 14 日 3 www.xilinx.com 動作理論 図 3 (a) に示す と お り 、 一部のデー タ ブ ロ ッ ク が失われたか ま たは破損 し た場合、 残存デー タ ブ ロ ッ ク と 生成行列に関す る 既知の情報を使用 し てデー タ を回復で き ます。 計算手順は図 3 (b) に示 し てい ます。 こ こ で、 残存行 (水色) の逆数で残 存デー タ ブ ロ ッ ク の ド ッ ト 乗算を行 う と 、 元のデー タ ブ ロ ッ ク が得 ら れ、 次に消去 さ れた行 (グ レー ) で ド ッ ト 乗算を行 う と 、 消去 さ れたデー タ ブ ロ ッ ク が回復 さ れます。 X-Ref Target - Figure 3 (QFRGHG'DWD%ORFNV *HQHUDWRU0DWUL[ 2ULJLQDO'DWD%ORFNV ' ' ' ' ' ' ' ' ' & D D D D D D & D D D D D D D D D D D D & ' ' ' (UDVHG5RZV 6XUYLYHG5RZV D(UDVHGGDWDEORFNVDQGURZV 'HFRGLQJ0DWUL[ (UDVHG'DWD%ORFNV 6XUYLYHG'DWD%ORFNV ' ' D D D D D & D (UDVHG5RZV D D D D D D D D D D D D 6XUYLYHG5RZV ' ' ' ' & & 2ULJLQDO'DWD%ORFN E5HFRYHU\RIWKHHUDVHGGDWDEORFNV ; 図 3 : 消去コ ー ド のデ コ ー ド 図 3 (b) に示す と お り 、 消去 コ ー ド のデ コ ー ド では、 残存行で構成 さ れ る 行列の逆数の存在が暗黙に想定 さ れてい ます。 こ の想定は、 一部の特殊構築 さ れた生成行列に当ては ま り ます。 その 1 つは、 こ のアプ リ ケーシ ョ ン ノ ー ト でサンプル と し て使用 し てい る リ ー ド ソ ロ モン コ ー ド ([参照 1]) です。 ただ し 、 こ こ で説明 さ れてい る 設計手法は、 その他の多様な 消去 コ ー ド に も 適用 さ れます。 図 3 は、 エン コ ー ド プ ロ セ ス を、 元のデー タ ブ ロ ッ ク がすべて残存 し て コ ー ド 化ブ ロ ッ ク が消去 さ れ る 特殊ケース のデ コ ー ド と 見なす こ と がで き る と い う も う 1 つの事実を示 し てい ます。 し たがっ て、 必要 と さ れ る のは、 エン コ ー ド に も 対 応で き る 消去デ コ ーダーを設計す る こ と のみです。 XAPP1273 (v1.0) 2016 年 3 月 14 日 4 www.xilinx.com RS 消去 コ ーデ ッ クのアーキテ ク チ ャ RS 消去 コ ーデ ッ ク のアーキテ ク チ ャ デー タ セ ン タ ーでは、 重要度が異な る デー タ ブ ロ ッ ク に合わせて、 多数のエ ラ ー保護レベルが必要です。 こ れには、 多 数の コ ー ド レー ト をサポー ト す る ための コ ーデ ッ ク が必要です。 短いデー タ ブ ロ ッ ク でオンザフ ラ イ のエン コ ー ド お よ びデ コ ー ド 方式を使用で き る よ う に、 レ イ テ ン シ を最小化す る 必要 も あ り ます。 こ のアプ リ ケーシ ョ ン ノ ー ト では、 こ の よ う なマルチ レー ト の消去コ ーデ ッ ク を、 通常 300Mhz 以上の ク ロ ッ ク 周波数で 動作す る ザ イ リ ン ク ス Kintex UltraScale FPGA で設計する 例を示 し ます。 こ のデザ イ ンは、 非常に小 さ いデコ ー ド レ イ テ ン シの ス ト リ ー ミ ン グ入力 イ ン タ ーフ ェ イ ス を特徴 と す る 一方で、 表 1 に ま と め ら れてい る と お り 、 1/3 か ら 2/3 ま でを 範囲 と す る 4 つの コ ー ド レー ト をサポー ト し てい ます。 デザ イ ンにわずかな変更を加えれば、 さ ら に幅広い コ ー ド レー ト をサポー ト で き ます。 注記 : こ の例は Kintex FPGA 向けですが、 方式や設計は基本的にすべてのデバ イ ス に適合 し ます。 表 1 : 低レ イ テ ン シ マルチ レー ト 消去 コ ーデ ッ ク の コ ー ド レー ト デー タ ブ ロ ッ ク の数 コ ー ド ブ ロ ッ ク の数 オーバーヘ ッ ド の比率 6 4 67% 8 4 50% 10 4 40% 12 4 33% 図 4 は、 消去 コ ーデ ッ ク の理想的な イ ン タ ーフ ェ イ ス タ イ ミ ン グ図を示 し てい ます。 水色、 黄色、 お よ び緑色は、 消去 デ コ ー ド パ ラ メ ー タ ー (残存パ タ ーン と 消去コ ー ド タ イ プ) が異な る 3 つのデー タ セ ッ ト を表 し てい ます。 パ ラ メ ー タ ー の変更にギ ャ ッ プ挿入は必要ないため、 ほかのシ ス テ ム コ ン ポーネ ン ト と の相互接続を簡単にする ために、 ス ト リ ー ミ ン グ イ ン タ ーフ ェ イ スへの入力は簡略化 さ れてい ます。 X-Ref Target - Figure 4 YOGBL &RGH,' 6XUYLYDO3DWWHUQ 6XUYLYHG'DWD %ORFNV YOGBR 5HFRYHUHG'DWD %ORFNV 1RWLPHLQWHUYDOIRUPRGHRU VXUYLYDOSDWWHUQFKDQJHV 'HFRGLQJ ODWHQF\ ; 図 4 : 消去コ ーデ ッ クのイ ン タ ー フ ェ イ ス タ イ ミ ング図 XAPP1273 (v1.0) 2016 年 3 月 14 日 5 www.xilinx.com イ ン プ リ メ ン テーシ ョ ンの詳細 単純な ス ト リ ー ミ ン グ イ ン タ ーフ ェ イ ス を実現する ために、 完全にパ イ プ ラ イ ン化 さ れた アーキ テ ク チ ャ を選択 し ます。 行列反転の完了には何百 も の ク ロ ッ ク サ イ ク ルが必要 と な る ため、 大き な課題にな り ます。 こ れに対処する ための 1 つ の解決策は、 サポー ト 対象のすべての コ ー ド お よ び考え ら れ る すべての残存パ タ ーンのすべてのデ コ ー ド 行列を事前に計 算 し 、 プ ロ グ ラ マブル ロ ジ ッ ク デバ イ ス の内部 メ モ リ に保存 し てお く こ と です。 こ の場合、 消去 コ ーデ ッ ク のアーキ テ ク チ ャ 全体は図 5 の よ う にな り ます。 X-Ref Target - Figure 5 (UDVXUH&RGH,' 6XUYLYDO3DWWHUQ 'HFRGLQJ0DWUL[ ,QGH[&DOFXODWLRQ 520IRU3UHFDOFXODWHG 'HFRGLQJ0DWUL[ 0DWUL[0XOWLSOLFDWLRQ RQ*)Q 6XUYLYHG'DWD%ORFNV 5HFRYHUHG'DWD%ORFNV ; 図 5 : 消去コ ーデ ッ クの高位アーキテ ク チ ャ デ コ ー ド 行列 ROM のサ イ ズは、 プ ロ グ ラ マブル デバ イ ス に適 し た も のにす る 必要があ り ます。 元のデー タ ブ ロ ッ ク m 個 と コ ー ド 化ブ ロ ッ ク k 個で構成 さ れ る 特定の消去 コ ー ド に対す る 、 考え ら れ る 残存パ タ ーンの数は (m+k)! / m! / k! で求 め る こ と がで き ます。 こ こ で n! は、 n 未満のすべての正の整数の積を表 し ます。 4 つすべての消去コ ー ド タ イ プの残存パ タ ーンの総数は、 式 1 に示す よ う に算出で き ます。 10! / 4! / 6! + 12! / 4! / 8! + 14! / 4! / 10! + 16! / 4! / 12! = 3,526 式1 各デ コ ー ド 行列は、 GF(28) では最大で 12 4 = 48 の要素を持ち、 ROM のサ イ ズは 3,526 48 8 = 1,353,984 ビ ッ ト と な り ます。 こ れは 20nm UltraScale FPGA には非常に適 し てい ます。 高位アーキ テ ク チ ャ に基づいて、 アルゴ リ ズ ムは C プ ロ グ ラ ミ ン グ言語で記述 さ れ、 Vivado HLS ツールは各種のハー ド ウ ェ ア イ ンプ リ メ ン テーシ ョ ン オプシ ョ ン を調べ、 デザ イ ンに最 も 適 し た も のを選択 し ます。 イ ン プ リ メ ン テーシ ョ ンの詳細 消去 コ ーデ ッ ク のアーキ テ ク チ ャ (図 5 参照) は、 大き く 分けて次の 2 つの計算ス テ ッ プで構成 さ れ、 C プ ロ グ ラ ミ ン グ言 語で実装 さ れます。 1 つは特定の残存パ タ ーン と コ ー ド ID のデ コ ー ド 行列 イ ンデ ッ ク ス の計算であ り 、 も う 1 つはデ コ ー ド 行列 と 残存デー タ ブ ロ ッ ク の乗算です。 デ コ ー ド 行列イ ンデ ッ ク スの計算 残存パ タ ーンは、 残存デー タ ブ ロ ッ ク を示す 1 と 消去 さ れ る デー タ ブ ロ ッ ク を示す 0 を用いた ビ ッ ト の文字列で表す こ と がで き ます。 図 3 に示す例では、 残存パ タ ーンは 2 進数では 101101、 16 進数では 0x2D と 表記で き ます。 表記を簡単 にす る ために、 残存パ タ ーンは次の よ う に XOR 演算に よ っ て消去パ タ ーンに変換で き ます。 // translate the survival pattern into erasure pattern unsigned short errpat = survival_pattern^((1<<RSCODE_LEN)-1); こ こ で、 こ の場合では (k+m) と 等 し い RSCODE_LEN は、 パ リ テ ィ を含むデー タ ブ ロ ッ ク の総数です。 消去パ タ ーン と デ コ ー ド 行列 と の間には 1 対 1 のマ ッ ピ ン グ関係があ り ますが、 (k+m) が大き い場合、 ル ッ ク ア ッ プ テーブルは大 き く な り ます。 た と えば、 m = 12 かつ k = 4 であ る と す る と 、 (12+4)! / 12! / 4! = 1,820 のデ コ ー ド 行列があ る こ と にな り 、 ル ッ ク ア ッ プ テーブルのサ イ ズは 2(12+4) ceil(log21820) = 720,896 ビ ッ ト にな り ます。 こ れは 40 個の BRAM18K を占め る ビ ッ ト 数です。 特定の消去パ タ ーンか ら デ コ ー ド 行列 イ ンデ ッ ク ス を計算す る には、 さ ら に効率的な方式が必要です。 XAPP1273 (v1.0) 2016 年 3 月 14 日 6 www.xilinx.com イ ン プ リ メ ン テーシ ョ ンの詳細 式 2 に示す よ う に、 整数を 2 進数形式で書き ます。 z = L–1 zi 2 i 式2 i=0 こ こ で、 zi ∈ {0,1} お よ び L はビ ッ ト の数です。 L–1 Ω(yL,p) = {z|yL,p < z < 2L お よ び zi = p } の整数セ ッ ト を定義 し ます。 i=0 こ こ で yL,p は、 p 個の消去 さ れたデー タ ブ ロ ッ ク の消去パ タ ーン を表す、 L ビ ッ ト 長の整数です。 の構文に よ り 、 セ ッ ト 内のすべての L ビ ッ ト の整数は yL,p よ り も 必ず大 き く な り 、 厳密に p 個のビ ッ ト が 1 にな り ます。 ど の消去パ タ ーン yL,p で も 、 (yL,p) は (yL,p) 内の要素数を示 し ます。 (yL,p) には次の反復関係が見 ら れます。 (ym+k,k) を、 消去パ タ ーン ym+k,k のデ コ ー ド 行列 イ ンデ ッ ク ス と し て定義 し ます。 上記の反復関係は、 次の よ う な C コ ー ド で記述 さ れた ビ ッ ト 単位の走査アルゴ リ ズ ムにな り ます。 // pad 1's to the msb of unsigned char padlen = unsigned short padmask = unsigned short errpat = the error pattern (3^(codeidx&3))<<1; ((1<<padlen)-1)<<(RSCODE_LEN-padlen); erasure_pattern | padmask; // Initialize the number of remaining ones = (p+1) char p = NUM_EQUATION-1 + padlen; // Scan the bits of errpat from MSB to LSB for(k=0; k<RSCODE_LEN; k++){ // number of remaining bits = (L+1) unsigned char L = (k^0xf)&0xf; // extract the msb of the remaining bits unsigned char msb = (errpat>>(RSCODE_LEN-1))&1; //if this bit is 0, then count the number of integers larger than it //if this bit is 1, decrease p by 1 if (msb) p--; else if(p>=0) decmat_idx+=F_tbl[((p&3)<<4) | (L&0xf)]; // dump the msb and move to the next bit errpat=(errpat<<1); } XAPP1273 (v1.0) 2016 年 3 月 14 日 7 www.xilinx.com イ ン プ リ メ ン テーシ ョ ンの詳細 こ こ で f(L, p) 関数は、 ル ッ ク ア ッ プ テーブル F_tbl に よ り 実現 し ます。 複数の消去 コ ー ド タ イ プ をサポー ト す る ため に、 最初にベース ア ド レ ス が decmat_idx に割 り 当て ら れ、 ベース ア ド レ ス に対する オ フ セ ッ ト と し て (ym+k,k) が計 算 さ れます。 図 6 は、 デ コ ー ド 行列 イ ンデ ッ ク ス計算の一例です。 コ ー ド ID は 0x1 で、 残存パ タ ーン内に 8 + 4 = 12 の有効ビ ッ ト を持 つ RS(8, 4) コ ー ド であ る こ と を示 し てい ます。 消去パ タ ーンはビ ッ ト 12 か ら 15 に 1 がパデ ィ ン グ さ れてい ます。 デコ ー ド 行列 イ ンデ ッ ク ス decmat_idx は、 RS(8, 4) コ ー ド の ROM ベース ア ド レ ス、 256 で初期化 さ れます。 errpat の 5 つ の最上位ビ ッ ト はすべて 1 であ る ため、 decmat_idx の値はビ ッ ト 10 ま で同 じ です。 ビ ッ ト 10 では f(L,p) = f(10,3) = 45 に よ る イ ン ク リ メ ン ト が行われます。 次に続 く 3 つのビ ッ ト であ る ビ ッ ト 9 か ら 7 ま ではすべて 0 であ る ため、 ビ ッ ト 6 で次の 1 に達す る ま で、 decmat_idx の値は 386 に イ ン ク リ メ ン ト さ れます。 こ の反復プ ロ セ スは、 ビ ッ ト 文字列の末尾 ま で続行 さ れます。 X-Ref Target - Figure 6 6XUYLYDO3DWWHUQ ; ; ; ; (UDVXUH3DWWHUQ ; ; ; ; HUUSDW / S 1XPRI/DUJHU ,QWHJHUV GHFPDWBLG[ ; 図 6 : デ コ ー ド 行列イ ンデ ッ ク ス計算の一例 (codeid = 1、 survival_pattern = 0x7B9) GF(2n) での行列乗算 GF(2n) では、 すべての整数が項 xi の係数を示す i 番目のビ ッ ト で多項式を表 し ます。 x はガ ロ ア体生成多項式のルー ト で す。 次に、 デー タ ブ ロ ッ ク d の 1 つのシ ン ボル と デコ ー ド 行列 r の 1 つの要素を、 次の多項式形式に書 き 込む こ と がで き ます。 XAPP1273 (v1.0) 2016 年 3 月 14 日 8 www.xilinx.com イ ン プ リ メ ン テーシ ョ ンの詳細 XAPP1273 (v1.0) 2016 年 3 月 14 日 9 www.xilinx.com 合成の結果 GF(2n) での x に よ る 乗算では、 整数の単純な左シ フ ト の後に生成多項式に よ る 簡約演算が続 き ます。 し たがっ て、 Ri は 反復的に計算で き 、 di ∈ {0,1} での乗算は 0 のマルチプ レ ク サーで計算で き ます。 具体的には、 GF(2n) での行列乗算は、 次の C コ ー ド で記述で き ます。 // initialize the decoding matrix polynomial for(k=0;k<NUM_ELEMENT;k++) r[k] = DECMAT_ROM[decmat_idx][k]; // reset all the code bits for(k=0; k<NUM_EQUATION; k++) c[k] = 0; // loop for all the bits of the input data for(i=0; i<GF_ORDER; i++) // loop for all survived data blocks for(j=0; j<NUM_TAPS; j++) // loop for all coding equations for(k=0; k<NUM_EQUATION; k++){ unsigned char idx = k*NUM_TAPS+j; unsigned char tmp = r[idx]; // update c c[k] = c[k] ^ ( ((d[j]>>i)&1)? tmp : 0 ); // update r r[idx] = ((tmp>>7)&1) ? ((tmp<<1)^gf_poly) : (tmp<<1); 指示子 C コ ー ド を HDL に変換す る 際、 Vivado HLS はパ ラ メ ー タ ーを記述す る ためにい く つかの福次情報を必要 と し ます。 こ の 情報には、 ループの完了に使用で き る ク ロ ッ ク サ イ ク ル数や、 モジ ュ ールが古い入力をすべて処理する 前に新 し い入力 を受け入れ る こ と がで き る か ど う かな ど があ り ます。 デザ イ ンの重要部分であ る こ れ ら の指示子は、 理想的な動作のため に C コ ー ド を HDL に合成す る 方法を指定 し ます。 既存のデザ イ ン を新 し いアプ リ ケーシ ョ ンに移植する 場合、 C コ ー ド には変更を加えず、 指示子にわずかな変更を加え る だけで済む こ と があ り ます。 消去 コ ーデ ッ ク の場合、 理想的な動作を実現す る ために次の指示子が使用 さ れます。 指示子は最小限に と ど め ら れ る の で、 後の段階で、 Vivado 合成ツールはデザ イ ン全体を把握 し て、 よ り 柔軟に合成オプシ ョ ン を選択で き ます。 た と えば、 デ コ ー ド 行列 ROM は、 ブ ロ ッ ク RAM ま たは分散 RAM のいずれかに イ ンプ リ メ ン ト で き ます。 こ の決定を よ り 適正に 行 う ために、 Vivado 合成ツールを使用 し ます。 こ の ツールでは、 ほかのシ ス テ ム モジ ュ ール と の統合後に リ ソ ース使用 率のバ ラ ン ス を取 る こ と がで き ます。 # The function takes pipelined architecture and accepts new inputs every clock cycle set_directive_pipeline -II 1 rs_erasure # the arrays c and d should be partitioned completely for the access # to all the elements of the array in one clock cycle set_directive_array_partition -type complete rs_erasure c set_directive_array_partition -type complete rs_erasure d # The interface definition set_directive_interface -mode ap_none set_directive_interface -mode ap_vld rs_erasure d rs_erasure codeidx 合成の結果 ザ イ リ ン ク ス Vivado HLS はすべてのデザ イ ン フ ァ イ ルを分析 し 、 合成指示子の形式で指定 さ れた目標の ク ロ ッ ク 周波数 と デー タ スループ ッ ト を満たす適切なハー ド ウ ェ ア アーキ テ ク チ ャ を自動的に選択 し ます。 C コ ンパ イ ルの完了後には、 合成 さ れた HDL に関す る 基本情報を見直 し 、 デザ イ ン目標に照 ら し て確認で き ます。 図 7 は、 Vivado HLS で生成 さ れた 消去 コ ーデ ッ ク 合成レ ポー ト を示 し てい ます。 XAPP1273 (v1.0) 2016 年 3 月 14 日 10 www.xilinx.com 合成の結果 X-Ref Target - Figure 7 ; 図 7 : C 合成レポー ト XAPP1273 (v1.0) 2016 年 3 月 14 日 11 www.xilinx.com 検証結果 レ ポー ト に よ る と 、 HLS で生成 さ れた RTL は 1/2.96ns = 338Mhz で動作す る と 推定 さ れてお り 、 こ れは 300Mhz と い う 要 件を満た し てい ます。 C 合成段階での ク ロ ッ ク 周波数推定は、 最終結果 と ±15% の誤差が生 じ る 可能性があ り ます。 こ れ は配置配線が完了す る ま で ロ ジ ッ ク 配線レ イ テ ン シが確定 し ないためです。 さ ら に合成レ ポー ト は、 デザ イ ンのデコ ー ド レ イ テ ン シが 27 ク ロ ッ ク サ イ ク ル (300Mhz ク ロ ッ ク では約 90ns) であ る こ と を示 し てい ます。 パ イ プ ラ イ ン処理の入力 間隔は 1 です。 こ れは コ ーデ ッ ク の最大スループ ッ ト が、 入力の場合は 12 デー タ ブ ロ ッ ク デー タ ブ ロ ッ ク あ た り 8 ビ ッ ト 300MHz = 28.8Gb/s、出力の場合は 4 デー タ ブ ロ ッ ク デー タ ブ ロ ッ ク あ た り 8 ビ ッ ト 300MHz = 9.6Gb/s で あ る こ と を意味 し ます。 必要な場合、 複数の消去 コ ーデ ッ ク を並列に機能す る よ う に イ ン ス タ ン シエー ト し て、 よ り 高い デー タ スループ ッ ト を実現で き ます。 検証結果 Vivado HLS デザ イ ン フ ロ ーでは、 機能検証は 2 つの ス テ ッ プで構成 さ れてい ます。 最初の ス テ ッ プは、 ゴールデン テ ス ト ベ ク タ ーに照 ら し て C コ ー ド を検証す る 、 C 機能検証です。 C ラ イ ブ ラ リ は リ ッ チ フ ァ イ ル I/O 機能を提供 し てい る ため、 格納済みの入力お よ び出力テ ス ト ベ ク タ ーに基づいて C テ ス ト ベンチを コ ー デ ィ ン グす る こ と は簡単です。 消去 コ ーデ ッ ク の リ フ ァ レ ン ス デザ イ ンは、 こ のアプ ロ ーチに従い ます。 ゴールデン テ ス ト ベ ク タ ーには、 4 つすべての消去 コ ー ド レー ト に対応す る 実行数 1000 の消去デ コ ー ド が含まれてお り 、 各コ ー ド レー ト に対 し て ラ ン ダ ムに選択 さ れた 25 の残存パ タ ーン、お よ び各残存パ タ ーン用の 10 セ ッ ト のデー タ ブ ロ ッ ク が設定 さ れてい ます。 C の動作が検証 さ れ、 C の関数が HDL に合成 さ れ る と 、 Vivado HLS は C のテ ス ト コ ー ド に従っ て HDL テ ス ト ベンチを 自動的に生成で き ます。 こ の ス テ ッ プは、 C/RTL 協調シ ミ ュ レーシ ョ ン と 呼ばれ、 HDL の動作 と C の機能を確実に一致 さ せます。 図 8 に示す と お り 、 Vivado HLS は C/RTL 協調シ ミ ュ レーシ ョ ン用に多数のシ ミ ュ レー タ と HDL コ ー ド 形式を サポー ト し てい ます。 X-Ref Target - Figure 8 ; 図 8 : C および HDL 協調シ ミ ュ レーシ ョ ン ダ イ ア ログ ウ ィ ン ド ウ XAPP1273 (v1.0) 2016 年 3 月 14 日 12 www.xilinx.com 検証結果 HDL デザ イ ンの出力は、 機能が正 し い こ と を確認す る ために、 ゴールデン テ ス ト ベ ク タ ーの出力 と 比較 さ れます。 シ ミ ュ レーシ ョ ンの最後に、 Vivado HLS は次の よ う なチ ェ ッ ク 後の結果を出力 し ます。 ….. ****** **** **** ** xsim v2015.3 (64-bit) SW Build 1368829 on Mon Sep 28 20:06:43 MDT 2015 IP Build 1367837 on Mon Sep 28 08:56:14 MDT 2015 Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. source xsim.dir/rs_erasure/xsim_script.tcl # xsim {rs_erasure} -maxdeltaid 10000 -autoloadwcfg -tclbatch {rs_erasure.tcl} Vivado Simulator 2015.3 Time resolution is 1 ps source rs_erasure.tcl ## add_wave -r / WARNING: Simulation object /apatb_rs_erasure_top/next_trigger_ready_cnt was not traceable in the design for the following reason: Vivado Simulator does not yet support tracing of Verilog named events. ## save_wave_config rs_erasure.wcfg ## run all $finish called at time : 3512850 ps : File "C:/MattRuan/appnote/ProjRSErasure/SolutionX/sim/verilog/rs_erasure.autotb.v" Line 1276 ## quit INFO: [Common 17-206] Exiting xsim at Thu Nov 05 13:58:56 2015... [0] 0 out of 250 test vectors failed. [1] 0 out of 250 test vectors failed. [2] 0 out of 250 test vectors failed. [3] 0 out of 250 test vectors failed. Total 1000 Test Vectors, Err Count = 0. Test Passed! @I [SIM-1000] *** C/RTL co-simulation finished: PASS *** 波形での手動デバ ッ グのために、 信号 ト レース を ダ ンプす る オプシ ョ ン も あ り ます。 図 9 は、 多様な コ ー ド レー ト と 残 存パ タ ーンのテ ス ト ケース用に Vivado Simulator 2015.3 が生成 し た シ ミ ュ レーシ ョ ン波形です。 図 9 に示す波形か ら 、 マ ルチモー ド 消去 コ ーデ ッ ク の レ イ テ ン シが 88.9ns/3.3ns = 27 ク ロ ッ ク サ イ ク ルであ り 、 合成レ ポー ト の値 と 一致す る こ と が確認で き ます。 XAPP1273 (v1.0) 2016 年 3 月 14 日 13 www.xilinx.com イ ン プ リ メ ン テーシ ョ ンの結果 X-Ref Target - Figure 9 ; 図 9 : C および HDL 協調シ ミ ュ レーシ ョ ンの波形 イ ン プ リ メ ン テーシ ョ ンの結果 ザ イ リ ン ク ス Vivado HLS は、 C 関数の HDL コ ー ド を生成す る だけでな く 、 HDL を IP にパ ッ ケージする 多数のオプシ ョ ン を提供す る ため、 System Generator、 エンベデ ッ ド 開発キ ッ ト (EDK)、 IP イ ン テ グ レー タ ーな ど の Vivado Design Suite を 使用 し て、 よ り 大規模なデザ イ ンに容易に統合で き ます。 例示目的で、 サンプルの リ フ ァ レ ン ス デザ イ ン用に IP カ タ ロ グが選択 さ れてい ます (図 10 参照)。 X-Ref Target - Figure 10 ; 図 10 : HDL エ ク スポー ト ダ イ ア ログ ウ ィ ン ド ウ Vivado HLS ツールは、 Vivado プ ロ ジ ェ ク ト を自動的に作成 し てすべての HDL コ ー ド を合成 し 、 イ ンプ リ メ ン テーシ ョ ン のパフ ォーマ ン ス を検証 し ます。 次の よ う な消去 コ ーデ ッ ク の最終 イ ンプ リ メ ン テーシ ョ ン レ ポー ト に よ っ て、 デザ イ ン目標が達成 さ れてい る こ と を確認 し ます。 XAPP1273 (v1.0) 2016 年 3 月 14 日 14 www.xilinx.com リ フ ァ レ ン ス デザイ ン Implementation tool: Xilinx Vivado v.2015.3 Device target: xcku040-ffva1156-2-e Report date: Thu Nov 05 14:30:47 +0800 2015 #=== Resource usage === CLB: 4411 LUT: 26010 FF: 5264 DSP : 0 BRAM: 0 SRL: 110 #=== Final timing === CP required: 3.300 CP achieved: 3.143 Timing met こ の レ ポー ト は、 合成ツールが、 デ コ ー ド 行列 ROM の イ ンプ リ メ ン テーシ ョ ンに、 ブ ロ ッ ク RAM ではな く 分散 RAM を選択 し た こ と を示 し てい ます。 こ れは、 RS(12, 4) のみが フル ス ト レージ容量を使用 し 、 その他の コ ー ド ではデコ ー ド 行列 ROM に多 く のゼ ロ がパデ ィ ン グ さ れてい る ためです。 合成ツールは ROM の スパース性を検出 し 、 タ イ ミ ン グ パ フ ォーマ ン ス を向上 さ せ る ために ROM を分散 RAM に イ ンプ リ メ ン ト す る こ と を決定 し ます。 リ フ ァ レ ン ス デザイ ン こ のアプ リ ケーシ ョ ン ノ ー ト の リ フ ァ レ ン ス デザ イ ン フ ァ イ ルは、 ザ イ リ ン ク ス の ウ ェ ブサ イ ト か ら ダ ウ ン ロ ー ド で き ます。 デザイ ン フ ァ イルの階層 最上位フ ォ ルダーの下のデ ィ レ ク ト リ 構造は次の と お り です。 \src | This folder contains C design files and header files. | \tb | This folder contains a C design file that serves as the test bench. | \tv | This folder contains the input and output golden test vectors for | verification purposes. | イ ン ス ト ール と 操作の手順 1. ザ イ リ ン ク ス Vivado ツールのバージ ョ ン 2015.3 以降を イ ン ス ト ール し ます。 2. デザ イ ン フ ァ イ ルを ク リ ーン デ ィ レ ク ト リ に解凍 し ます。 3. Vivado HLS コ マ ン ド ラ イ ン ウ ィ ン ド ウ で、 次を十国 し ます。 a. cd を実行 し て、 デザ イ ンのルー ト デ ィ レ ク ト リ に移動 し ます。 b. 「vivado_hls run.tcl」 と 入力 し ます。 c. 合成 さ れたデザ イ ンが想定を満た し てい る こ と を確認 し ます。 XAPP1273 (v1.0) 2016 年 3 月 14 日 15 www.xilinx.com ま とめ 表 2 に、 リ フ ァ レ ン ス デザ イ ンの詳細を示 し ます。 表 2 : リ フ ァ レ ン ス デザ イ ンの詳細 パラ メ ー タ ー 説明 一般 Matt Ruan 開発者 Kintex® UltraScale™ FPGA (KU040、 KU060) Virtex®-7 FPGA (7V690) 注記 : リ フ ァ レ ン ス デザ イ ンは Virtex-7 お よ び Kintex UltraScale FPGA でテ ス ト さ れてい ますが、 Zynq UltraScale+ MPSoC、 さ ら には Artix®-7 や Spartan®-6 FPGA と いっ たほかのデバ イ ス で も 動作す る はずです。 Spartan-6 お よ び Artix-7 デバ イ ス で達成 可能な ス ループ ッ ト は、 Kintex お よ び Virtex UltraScale デバ イ ス で達成可能な ス ループ ッ ト よ り も 低い と 予想 さ れます。 タ ーゲ ッ ト デバ イ ス ソ ース コ ー ド の提供 あり ソ ース コ ー ド の形式 C、 テ ス ト ベ ク タ ー、 お よ び合成ス ク リ プ ト 既存のザ イ リ ン ク ス アプ リ ケーシ ョ ン ノ ー ト / リ フ ァ レ ン ス デザ イ ン、 ま たはサー ド パーテ ィ か ら デザ イ ンへの コ ー ド /IP の使用 なし シ ミ ュ レーシ ョ ン 論理シ ミ ュ レーシ ョ ンの実施 あり タ イ ミ ン グ シ ミ ュ レーシ ョ ンの実施 なし 論理シ ミ ュ レーシ ョ ンお よ び タ イ ミ ン グ シ ミ ュ レーシ ョ ン でのテ ス ト ベンチの利用 あり C テ ス ト ベンチの形式 Vivado Simulator 2015.3 使用 し たシ ミ ュ レー タ /バージ ョ ン SPICE/IBIS シ ミ ュ レーシ ョ ンの実施 なし イ ン プ リ メ ン テーシ ョ ン Vivado 高位合成 2015.3 使用 し た合成ツール/バージ ョ ン 使用 し た イ ンプ リ メ ン テーシ ョ ン ツール/バージ ョ ン ス タ テ ィ ッ ク タ イ ミ ン グ解析の実施 Vivado Design Suite 2015.3 あり ハー ド ウ ェ ア検証 ハー ド ウ ェ ア検証の実施 なし 検証に使用 し たハー ド ウ ェ ア プ ラ ッ ト フ ォーム N/A ま とめ こ のアプ リ ケーシ ョ ン ノ ー ト は、 C コ ー ド を入力 と し て利用 し 、 FPGA 上で合成可能な HDL コ ー ド を生成す る Vivado HLS ツール チ ェ ーン を使用 し て、 低レ イ テ ン シのマルチ レー ト 消去コ ーデ ッ ク を作成す る 方法を示 し てい ます。 C ソ ー ス コ ー ド は維持が簡単であ り 、 多様な FPGA デバ イ ス、 消去 コ ー ド レー ト 、 お よ びシ ス テ ム ク ロ ッ ク 周波数に合わせて 拡張で き ます。 デ コ ー ド 行列 ROM を変更すれば、 パ イ プ ラ イ ン化 さ れた Gf(2n)n) 汎用行列乗算アーキ テ ク チ ャ か ら ほか の タ イ プの消去 コ ーデ ッ ク の作成 も 容易です。 XAPP1273 (v1.0) 2016 年 3 月 14 日 16 www.xilinx.com 参考資料 参考資料 注記 : 日本語版のバージ ョ ンは、 英語版 よ り 古い場合があ り ます。 1. Burkhard, W. A. and Menon, J. (June 1993) "Disk array storage system reliability."Proceedings of the 23rd Annual International Symposium on Fault-Tolerant Computing, pp. 432–441 2. Dimakis, A.G.; Prabhakaran, V.; Ramchandran, K. (June 2006) "Decentralized erasure codes for distributed networked storage.”IEEE Transactions on Information Theory, pp. 2809–2816, Volume 52, Issue 6 3. Sobe, Peter (March 2009) "Coding for Reliable Data Storage on Different Hardware Platforms."Architecture of Computing Systems - ARCS 2009: 22nd International Conference Proceedings, pp. 1-6 4. 『Vivado Design Suite ユーザー ガ イ ド : 高位合成』 (UG902 : 英語版、 日本語版) 改訂履歴 次の表に、 こ の文書の改訂履歴を示 し ます。 日付 バージ ョ ン 2016 年 3 月 14 日 1.0 内容 初版 法的通知 本通知に基づいて貴殿ま たは貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同 じ ) に開 示 さ れ る 情報 (以下 「本情報」 と いい ます) は、 ザ イ リ ン ク ス の製品を選択お よ び使用す る こ と のためにのみ提供 さ れます。 適用 さ れ る 法律が許容す る 最大限の範囲で、 (1) 本情報は 「現状有姿」、 お よ びすべて受領者の責任で (with all faults) と い う 状態で提供 さ れ、 ザ イ リ ン ク ス は、 本通知を も っ て、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますが こ れ ら に限 ら れません)、 すべての保証お よ び条件を負わない (否認す る ) も の と し ます。 ま た、 (2) ザ イ リ ン ク ス は、 本情報 (貴殿ま たは貴社に よ る 本情報の使用 を含む) に関係 し 、 起因 し 、 関連す る 、 いかな る 種類 ・ 性質の損失ま たは損害について も 、 責任を負わない (契約上、 不法行為上 (過失の 場合を含む)、 その他のいかな る 責任の法理に よ る か を問わない) も の と し 、 当該損失ま たは損害には、 直接、 間接、 特別、 付随的、 結 果的な損失ま たは損害 (第三者が起 こ し た行為の結果被っ た、 デー タ 、 利益、 業務上の信用の損失、 その他あ ら ゆ る 種類の損失や損害を 含みます) が含ま れ る も の と し 、 それは、 た と え当該損害や損失が合理的に予見可能であ っ た り 、 ザ イ リ ン ク ス がそれ ら の可能性につい て助言を受けていた場合であ っ た と し て も 同様です。 ザ イ リ ン ク ス は、 本情報に含ま れ る いかな る 誤 り も 訂正す る 義務を負わず、 本情 報ま たは製品仕様のア ッ プデー ト を貴殿ま たは貴社に知 ら せ る 義務 も 負い ません。 事前の書面に よ る 同意のない限 り 、 貴殿ま たは貴社 は本情報を再生産、 変更、 頒布、 ま たは公に展示 し てはな り ません。 一定の製品は、 ザ イ リ ン ク ス の限定的保証の諸条件に従 う こ と と な る ので、 http://japan.xilinx.com/legal.htm#tos で見 ら れ る ザ イ リ ン ク ス の販売条件を参照 し て く だ さ い。 IP コ アは、 ザ イ リ ン ク ス が貴殿 ま たは貴社に付与 し た ラ イ セ ン ス に含ま れ る 保証 と 補助的条件に従 う こ と にな り ます。 ザ イ リ ン ク ス の製品は、 フ ェ イ ルセーフ と し て、 ま たは、 フ ェ イ ルセーフ の動作を要求す る アプ リ ケーシ ョ ンに使用す る ために、 設計 さ れた り 意図 さ れた り し てい ません。 その よ う な 重大な アプ リ ケーシ ョ ンにザ イ リ ン ク ス の製品を使用す る 場合の リ ス ク と 責任は、 貴殿ま たは貴社が単独で負 う も のです。 http://japan.xilinx.com/legal.htm#tos で見 ら れ る ザ イ リ ン ク ス の販売条件を参照 し て く だ さ い。 自動車用のアプ リ ケーシ ョ ンの免責条項 ザ イ リ ン ク ス の製品は、 フ ェ イ ルセーフ と し て設計 さ れた り 意図 さ れてはお ら ず、 ま た、 フ ェ イ ルセーフ の動作を要求す る アプ リ ケー シ ョ ン (具体的には、 (I) エアバ ッ グの展開、 (II) 車の コ ン ト ロ ール (フ ェ イ ルセーフ ま たは余剰性の機能 (余剰性を実行す る ためのザ イ リ ン ク ス の装置に ソ フ ト ウ ェ ア を使用す る こ と は含ま れません) お よ び操作者が ミ ス を し た際の警告信号があ る 場合を除 き ます)、 (III) 死亡 や身体傷害を導 く 使用、 に関す る アプ リ ケーシ ョ ン) を使用す る ために設計 さ れた り 意図 さ れた り も し てい ません。 顧客は、 その よ う な アプ リ ケーシ ョ ンにザ イ リ ン ク ス の製品を使用す る 場合の リ ス ク と 責任を単独で負い ます。 © Copyright 2016 Xilinx, Inc. Xilinx、 Xilinx の ロ ゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 お よ び こ の文書に含ま れ る その 他の指定 さ れたブ ラ ン ド は、 米国お よ びその他各国のザ イ リ ン ク ス社の商標です。 すべてのその他の商標は、 それぞれの保有者に帰属 し ます。 こ の資料に関す る フ ィ ー ド バ ッ ク お よ び リ ン ク な ど の問題につ き ま し ては、 [email protected] ま で、 ま たは各ページの右下 にあ る [フ ィ ー ド バ ッ ク 送信] ボ タ ン を ク リ ッ ク す る と 表示 さ れ る フ ォームか ら お知 ら せ く だ さ い。 いただ き ま し た ご意見を参考に早急 に対応 さ せていただ き ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受け付け てお り ません。 あ ら か じ めご了承 く だ さ い。 XAPP1273 (v1.0) 2016 年 3 月 14 日 17 www.xilinx.com