JP5807887B1 - プログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法 - Google Patents
プログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法 Download PDFInfo
- Publication number
- JP5807887B1 JP5807887B1 JP2015094970A JP2015094970A JP5807887B1 JP 5807887 B1 JP5807887 B1 JP 5807887B1 JP 2015094970 A JP2015094970 A JP 2015094970A JP 2015094970 A JP2015094970 A JP 2015094970A JP 5807887 B1 JP5807887 B1 JP 5807887B1
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- arithmetic
- verification
- programmable logic
- logic device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Nonlinear Science (AREA)
- Logic Circuits (AREA)
Abstract
【課題】プログラマブルロジックデバイスにおけるエラー検知率を向上させる。【解決手段】FPGA10の構成メモリに構成情報をロードすることによって、演算回路L1〜L3と検証回路21とを形成する。演算回路L1〜L3は、同じ演算機能を有しているが、回路ブロックの組み合わせが互いに異なっている。演算回路L1、L3は、DSPブロックを最大限使用する回路ブロックの組み合わせであり、演算回路L2は、DSPブロック以外の回路ブロックの組み合わせになっている。また、演算回路L1、L2は、データ保持メモリとして、ブロックRAMを使用し、演算回路L3は、データ保持メモリとして分散RAMを使用する。各演算回路L1〜L3は、入力データXがそれぞれ入力され、演算結果データV1〜V3を出力する。検証回路21は、演算結果データV1〜V3を比較してエラーの有無を検証する。【選択図】図2
Description
本発明は、プログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法に関するものである。
近年において、プログラマブルロジックデバイス、特にFPGA(Field Programmable Gate Array)は、制御や通信の分野で多く使われるようになってきた。FPGAは、FPGA内の構成メモリに構成情報をロードすることにより、基本論理ブロック(CLB(Configurable Logic Block)、LE(Logic Element)等とも称される)等の回路ブロックを組み合わせることによって演算回路を形成する。演算回路としては、単純な数値演算を行うものからCPU(Central Processing Unit)に相当する機能を有するものまで様々なものを実現可能である(例えば、特許文献1参照)。
FPGAでは、演算機能を実現する1つ1つの演算が回路ブロックに対応しており、当該回路ブロックの組み合わせが変更されることにより様々な演算機能が実現されている。このため、FPGAでは、演算機能の演算数の増大にともなって、演算回路に使用される回路ブロックの数も多くなる。この結果、FPGAでは、回路ブロックの数が多い複雑な演算回路が形成されると、当該演算回路に使用する回路ブロックの数の増加に伴い、演算回路に使用される回路ブロック内のANDゲートやORゲートなどの回路素子の数も多くなる。
ここで、これらANDゲートやORゲートなどの回路素子は、大気中の荷電粒子等の影響を受けて誤作動することもある。そして、例えば演算回路に組み込まれた回路素子が誤作動した場合には、当該演算回路の演算結果がエラーとなる。そのため、FPGAでは、演算回路に使用する回路素子の数が多くなると、当該回路素子の数が多くなる分、大気中の荷電粒子等の影響を受ける確率も高くなり、エラーが発生する恐れが高くなるという問題がある。
また、上記のようなFPGAでは、例えばFPGAを駆動するクロックの変動や、FPGAの電源の電圧変動、FPGA自体の温度変動に対するロバスト性が、回路ブロック間を接続する配線の状態(接続状態)によって左右されることが知られており、演算回路を構成する回路ブロック間の接続状態によっては、エラーが発生し易くなるという問題もある。
そこで、従来では、同じ種類の回路ブロックを組み合わせて同じ演算処理を行う演算回路を2重、3重にFPGA内に設け、このように冗長化された各演算回路で同時に同じ演算を行って、各演算回路の演算結果を比較し、いずれかの演算回路で回路ブロックが誤作動しているか否か、すなわち演算結果にエラーがあるか否かを検証するエラー検証方法を行うことが考えられている。
ところで、従来のエラー検証方法では、同じ種類の回路ブロックを組み合わせて同じ演算処理を行う複数の演算回路で、演算回路を冗長化している。このため、FPGA自体の温度変動や、FPGAの電源の電圧変動、FPGAを駆動するクロックの変動など、FPGA全体で共通する要因(以下、共通要因と呼ぶ)に起因したエラーが生じた場合、FPGAの各演算回路から得られる演算結果にエラーが発生しているにもかかわらず、同じ演算結果が得られてしまい、エラーの発生を検知することができない場合もあるという問題があった。そのため、従来のエラー検証方法では、エラー検知率が十分に高いとはいえなかった。
本発明は、上記事情に鑑みてなされたものであり、従来よりもエラー検知率を向上させることができるプログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法を提供することを目的とする。
本発明は、複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスにおいて、同じ演算機能を持ち、かつ回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路が形成され、各演算回路は、それぞれ演算結果を検証回路に出力して検証させるものである。
また、本発明は、複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスのエラー検証方法において、同じ演算機能を持ち、かつ回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路を形成する回路形成ステップと、各演算回路でそれぞれ演算を行う演算ステップと、各演算回路からの演算結果を検証回路で検証する検証ステップとを有するものである。
さらに、本発明は、構成情報にしたがって複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスの回路形成方法において、回路ブロックの組み合わせに関する条件が異なる合成パラメータを順次設定する合成パラメータ設定ステップと、合成パラメータ設定ステップで合成パラメータが設定されるごとに、合成パラメータの下で論理合成を行い、ハードウェア記述言語で記述された同一の演算回路記述情報から複数の演算回路に対応した複数のネットリストを生成する論理合成ステップと、複数のネットリストから構成情報を生成する構成情報生成ステップと、構成情報をプログラマブルロジックデバイスに書き込み、複数のネットリストに対応した同じ演算機能を持ち、かつ前記回路ブロックの組み合わせが異なって接続状態が異なり、それぞれ演算結果を検証回路に出力して検証させる複数の演算回路を前記プログラマブルロジックデバイスに形成する形成ステップとを有するものである。
本発明のプログラマブルロジックデバイス、及びそのエラー検証方法によれば、回路ブロックの組み合わせに応じて、温度変動や電圧変動、クロック変動の共通要因に対する各演算回路での動作状況が異なるため、各演算回路で発生するエラーの発生状態も異なってくることから、従来の単に冗長化した複数の演算回路から得られる演算結果を比較する場合に比べ、各演算回路から得られた演算結果を比較する際に、共通要因に起因したエラーをも検知でき、かくして、従来よりもエラー検知率を向上させることができる。
また、本発明のプログラマブルロジックデバイスの回路形成方法によれば、複数のネットリストから生成された構成情報をプログラマブルロジックデバイスに適用することによって、同じ演算機能を持ち、かつ回路ブロックの組み合わせが異なる複数の演算回路をそのプログラマブルロジックデバイスに形成できる。これにより、上述した構成情報が適用されたプログラマブルロジックデバイスでは、回路ブロックの組み合わせに応じて、温度変動や電圧変動、クロック変動の共通要因に対する各演算回路での動作状況が異なるため、各演算回路で発生するエラーの発生状態も異なってくることから、従来の単に冗長化した複数の演算回路から得られる演算結果を比較する場合に比べ、各演算回路から得られた演算結果を比較する際に、共通要因に起因したエラーをも検知でき、かくして、従来よりもエラー検知率を向上させることができる。
図1に本実施形態に用いるFPGA(Field Programmable Gate Array)10を示す。本実施形態では、プログラマブルロジックデバイス(PLD)の一例として、一般的なFPGA10に本発明を適用した場合について説明する。FPGA10は、例えば通信処理機能や、暗号化処理機能、画像処理機能等のような演算機能の変更が可能なデバイスである。FPGA10には、演算処理の対象となる信号の種類や演算処理の内容に合わせて所望の演算機能を実現するため、基本論理ブロック11、DSPブロック12、ブロックRAM13、IOブロック(Input/Output Block)14、PLLブロック15等が回路ブロック9(回路要素)として設けられている。また、回路ブロック9の他に、FPGA10には、構成メモリ16や、回路ブロック9の間を繋ぐ配線リソース(図示省略)が設けられている。
基本論理ブロック11は、FPGA10を構成する基本的な回路ブロックであり、CLB(Configurable Logic Block)、ロジックエレメント(Logic Element)、ロジックセル(Logic Cell)等とも称されるものである。基本論理ブロック11は、種々の構成のものがあるが、一般的にはLUT(Lookup table)とレジスタ(フリップフロップ)を基本要素とする複数の基本回路(スライス等と称される場合もある)から構成されている。
DSPブロック12は、基本論理ブロック11の組み合わせではなく、乗算や積和演算等の演算を高速に処理するためにハードウェア(ハードマクロ)として予め組み込まれている回路ブロック9であり、DSPスライス12等と称される場合もある。このDSPブロック12は、高速な乗算器と加算器を基本要素として構成されている。ブロックRAM13は、一般的なメモリとして利用可能な回路ブロック9である。ブロックRAM13は、例えば他の回路ブロック9から出力される演算途中のデータを一時的に保持する際に利用される。IOブロック14は、FPGA10の入力機能及び出力機能を提供する回路ブロック9である。PLLブロック15は、回路ブロック9の動作に必要なクロックを発生する。配線リソースは、回路ブロック9同士を接続する配線及び配線上に設けられたパストランジスタで構成されている。
構成メモリ16には、構成情報18がロード(書き込み)される。構成情報18は、回路ブロック9の動作や、配線リソースによる回路ブロック9間の接続等を定義するものであり、コンフィギュレーション・データ、ビットストリーム等と称されるものである。FPGA10には、この構成情報18にしたがって、所望する演算回路が形成される。すなわち、FPGA10は、構成情報18にしたがって複数の回路ブロック9の組み合わせが変更され、これにより演算機能が変更可能なデバイスとなっている。
FPGA10は、同じ演算機能を持ち、かつ回路ブロック9の組み合わせが異なる複数の演算回路を形成させる構成情報18が構成メモリ16にロードされることにより、当該構成情報18にしたがって、図2に示すように、例えば演算回路L1〜L3と検証回路21とが形成される。なお、この例では、3個の演算回路L1〜L3の場合について説明するが、演算回路は2個以上あればよい。また、構成情報18は、外部のコンピュータから構成メモリ16にロードしたり、構成情報18が予め書き込まれた不揮発性メモリから自動的にロードしたりしてもよい。
図2に示すように、この例におけるFPGA10には、p(p≧1)ビットの入力データX(x1〜xp)が入力される。例えば機器(図示省略)の動作を制御する制御システムにFPGA10が設けられ、機器の動作を監視するセンサ(図示省略)からの検出値等が入力データXとしてFPGA10に入力される場合について以下に説明する。なお、入力データXは、1つの値を表すものに限定されない。例えば、複数の検出値をまとめて入力データXとしてもよい、この場合には複数の検出値のビット数の合計がpビットとなる。また、入力データXは、例えばコンピュータ等で生成された1組あるいは複数組の数値、ネットワークを介して受信したデータ、各種機器の駆動を制御するタイミング信号等であってもよい。
上述の入力データXは、FPGA10内で演算回路L1〜L3にそれぞれ入力される。演算回路L1は、入力データXが入力されると、所定の演算を行って、q(q≧1)ビットの演算結果データV1(v11〜v1q)を出力する。演算回路L2、L3についても同じであり、入力データXが入力されると、所定の演算を行って、演算結果データV2(v21〜v2q)、V3(v31〜v3q)を出力する。
演算回路L1〜L3は、同じ演算機能を持つが、エラー検知率を向上させるために、回路ブロック9の組み合わせを互いに異なるものにしている。すなわち、演算回路L1〜L3は、使用する回路ブロック9の種類や数、回路ブロック9内でのLUTやレジスタの使われ方、これら回路ブロック9の接続状態が演算回路L1〜L3では互いに異なったものになっているが、演算回路L1〜L3にエラーが発生しない状態では、演算回路L1〜L3は、同一の入力データXの入力に応答して同じ演算結果データV1〜V3を出力するよう構成されている。
上記のように演算回路L1〜L3の回路ブロック9の組み合わせを互いに異なるものにすることによって、演算回路L1〜L3が同時にエラーを発生させる可能性を低くするとともに、また演算回路L1〜L3が同時にエラーを発生させても各演算結果データV1〜V3が同じになる可能性を極めて低くしている。
例えば、演算回路L1、L3は、組み合わされる複数の回路ブロックの中に少なくとも1つ以上のDSPブロック12が含まれた回路構成を有している。一方、演算回路L2は、DSPブロック12以外の回路ブロック9が組み合わされた回路構成(例えば、LUTを含む基本論理ブロック11を主体とした回路構成)を有している。また、演算回路L1と演算回路L2とは、例えば演算中のデータを保持するメモリ(以下、データ保持メモリ)として、ブロックRAM13を使用するのに対して、演算回路L3は、基本論理ブロック11のフリップフロップを利用したいわゆる分散RAMを使用する回路ブロック9の組み合わせである。このようにして、演算回路L1〜L3は、種類の異なる回路ブロック9を用い、相互に回路ブロック9の組み合わせが異なるものになっており、多様性のあるものとなっている。
演算回路L1、L3のようにDSPブロック12を使用した場合には、演算回路L2のようにDSPブロック12を使用しない場合に比べて、使用される基本論理ブロック11の個数を大幅に少なくさせることもでき、回路ブロック9間を接続した配線の長さも含め演算回路を形成する回路ブロック11の組み合わせを大きく異ならせることができる。すなわち、演算回路L1、L3と演算回路L2とは、論理的な演算機能は同じであるが、ゲートレベルにおける動作(信号処理の物理的プロセスや、物性レベルの素子内部の振る舞い等)が大きく異なり、FPGA10の温度変動や電圧変動、クロック変動などの共通要因がゲートレベルにおける動作に与える影響も大きく異なってくる。このため、FPGA10では、上記共通要因に対する演算回路L1、L3と演算回路L2とのゲートレベルにおける動作状況が大きく異なるため、エラー発生時の演算結果データの不一致の程度も大きくなることが期待できる。したがって、DSPブロック12の使用の有無によって回路ブロック11の組み合わせを異なったものとすることは、エラーの発生を演算結果データの不一致によって検知する際に非常に有利である。
この実施の形態の場合、FPGA10には、複数の回路ブロック9が組み合わされることにより検証回路21が形成されている。演算回路L1〜L3は、演算結果データV1〜V3を検証回路21に送る。検証回路21は、演算結果データV1〜V3を検証し、その検証結果として検証データRを生成する。また、検証回路21は、演算結果データV1〜V3のうちエラーがないと推測すると、演算結果データとして出力データY(y1〜yq)を生成する。この検証回路21は、検証データRと出力データYとを制御システムのシステムコントローラ(図示省略)に出力する。
上記検証回路21は、例えば多数決方式によって出力データYを決定する。すなわち、演算結果データV1〜V3の値を比較して一致、不一致を判定し、同じ値となっている演算結果データの個数が最も多い演算結果データを正常値とし、その正常値を出力データYとして出力する。
FPGA10は、例えば演算回路L1〜L3のいずれもがエラーを発生していないときには、演算回路L1〜L3から得られる各演算結果データV1〜V3が全て一致する。また、演算回路L1〜L3のうち例えば演算回路L1だけにエラーが発生しているときには、演算回路L2,L3から得られる演算結果データV2、V3と、演算回路L1から得られる演算結果データV1とが異なるものとなる。また、演算回路L1〜L3のうち例えば演算回路L2,L3にだけエラーが発生しているとき、演算回路L2,L3から得られる演算結果データV2、V3と、演算回路L1から得られる演算結果データV1とが異なるものとなる。
さらに、FPGA10は、前述のように演算回路L1〜L3を回路ブロックの組み合わせが互いに異なる回路構成とすることによって、温度変動や電圧変動、クロック変動の共通要因でエラーが発生しても、当該共通要因に対する各演算回路L1〜L3での動作状況が異なるので、演算回路L1〜L3から得られる各演算結果データV1〜V3が互いに異なるものとなる。
これにより、FPGA10では、演算回路L1〜L3から得られる各演算結果データV1〜V3が全て一致するときFPGA10にエラーが発生していないと判断でき、一方、演算回路L1〜L3から得られる各演算結果データV1〜V3が不一致のときFPGA10にエラーが発生していると判断し得る。
検証データRは、エラーの発生状況や出力データYの確からしさの判断の指標となる情報である。この例では、検証データRは、演算結果データV1〜V3に対応した個別検証データR1〜R3を含んでいる。個別検証データR1〜R3は、例えば出力データYを正常値としたときに、対応する演算結果データV1〜V3の誤りビットの個数、何ビット目が誤りビットになっているか、出力データYに示される値と演算結果データとの差等の情報を有したものとなっている。システムコントローラは、このような個別検証データR1〜R3を含む検証データRにより、正常値と不一致となっている演算結果データの個数や不一致の演算結果データ中のビット数、エラーが発生したと推測される演算回路がいずれか、不一致となっている演算結果データの値と正常値との差や、その差の最大値、最小値、幅等の情報を取得できる。
図3において、FPGA10にロードされる構成情報18は、構成情報生成装置24によって生成される。この構成情報生成装置24は、回路記述情報26から構成情報18を生成する。回路記述情報26は、レジスタ転送レベル(Register transfer level, RTL)で抽象化した演算機能の仕様を、ハードウェア記述言語(HDL)を用いて記述したものである。この例においては、回路記述情報26は、検証回路21に対応して記述された検証回路記述情報26aと、演算回路記述情報26bとがあり、複数の演算回路L1〜L3(図2)に対しては1つの演算回路記述情報26bを共通に使用している。なお、産業用アプリケーションとして使われているFBD(ファンクション ブロック ダイアグラム:Function Block Diagram)言語等を用いて記述され、抽象度をより高くした動作レベル(behavioral level)のハードウェア記述情報に高位合成を行って、レジスタ転送レベルの回路記述情報26を生成してもよい。
構成情報生成装置24は、論理合成手段24a、合成パラメータ設定手段24b、結合手段24c、及びマッピング手段24dを備えている。例えば、論理合成手段24a、結合手段24c、及びマッピング手段24dは、論理合成ツール等として知られているアプリケーションプログラムをコンピュータにインストールすることで実現される。合成パラメータ設定手段24bは、論理合成ツールの論理合成に関する合成パラメータを変更するように構成されている。合成パラメータは、FPGA10に演算回路L1〜L3を形成させる際の条件を指定するものであり、この合成パラメータにより回路ブロック9の組み合わせに関する条件を変えることができる。
論理合成手段24aは、回路記述情報26からネットリストを生成する論理合成を行う。ネットリストは、回路ブロック9間を接続する配線等を記述したものである。合成パラメータ設定手段24bは、論理合成手段24aが論理合成する際に、パラメータセットP0〜P3を設定する。パラメータセットP0は、検証回路21について回路ブロック9の組み合わせが最適になるように設定された複数の合成パラメータを1セットにしたものである。このパラメータセットP0は、検証回路記述情報26aから検証回路21のネットリストN0を生成する際に使用される。
また、パラメータセットP1〜P3は、いずれも演算回路記述情報26bを回路ブロック9の組み合わせに具現化する際の複数の合成パラメータを1セットにしたものである。これらパラメータセットP1〜P3は、上述のように回路ブロック9の組み合わせが互いに異なる演算回路L1〜L3を、同一の演算回路記述情報26bから生成されるようにするために、いくつかの合成パラメータの設定が異なったものになっている。
この例においては、パラメータセットP1〜P3は、DSPブロック12の使用に関する合成パラメータ(以下、DSPパラメータという)と、データ保持メモリに関する合成パラメータ(以下、メモリパラメータという)とを含んでおり、これらの設定値の組み合わせが互いに異なるものになっている。
パラメータセットP1は、演算回路L1のネットリストN1を生成するためのものである。このパラメータセットP1のDSPパラメータは、DSPブロック12を最大限使用する設定値になっている。また、パラメータセットP1のメモリパラメータは、データ保持メモリとしてブロックRAM13を使用する設定値になっている。パラメータセットP2は、演算回路L2のネットリストN2を生成するためのものである。このパラメータセットP2のDSPパラメータは、DSPブロック12を使用しない設定値であり、またメモリパラメータは、データ保持メモリとしてブロックRAM13を使用する設定値になっている。さらに、パラメータセットP3は、演算回路L3のネットリストN3を生成するためのものである。このパラメータセットP3のDSPパラメータは、DSPブロック12を最大限使用する設定値であり、またメモリパラメータは、データ保持メモリとして分散RAMを使用する設定値になっている。
上記のように合成パラメータ設定手段24bは、演算回路L1〜L3についての論理合成の際に、パラメータセットP1〜P3を論理合成手段24aに設定することによって、演算回路L1〜L3を形成する回路ブロック9(FPGAのリソース)の組み合わせに関する条件を与え、演算回路L1〜L3の回路ブロック9の組み合わせを互いに異なるものとして、演算回路L1〜L3に多様性を付与する。
論理合成手段24aは、合成パラメータセットP0の下で論理合成を行うことによって、検証回路記述情報26aからネットリストN0を生成する。また、論理合成手段24aは、合成パラメータセットP1〜P3の下で、演算回路記述情報26bを用いた論理合成をそれぞれ行うことによって、ネットリストN1〜N3を生成する。
なお、演算回路L1〜L3は、回路ブロック9の組み合わせが互いに異なっているため、演算回路L1〜L3の相互間で、同じタイミングで入力データXを入力しても、演算結果データV1〜V3の出力タイミングが異なる場合がある。このような場合には、検証回路21に対する演算結果データV1〜V3の入力タイミングが同時になるように、例えば遅延回路を形成すればよい。
結合手段24cは、論理合成手段24aから得られる4個のネットリストN0〜N3を1つのネットリストに結合する。この結合の際には、結合手段24cによって、ネットリストN1〜N3に示される3組の出力端子を、ネットリストN0の3組の入力端子に接続したネットリストを生成する。
マッピング手段24dは、結合手段24cからのネットリストにしたがい、ネットリストに示される接続をFPGA10の回路ブロック9や入出力ピンに割り当てるいわゆるマッピング(配置配線)を行う。このマッピング手段24dは、マッピングした情報を構成情報18としてFPGA10の構成メモリ16に出力する。構成情報18には、検証回路21を形成するための検証回路構成情報C0と、演算回路L1〜L3を形成するための演算回路構成情報C1〜C3とが含まれる。
次に上記構成の作用について説明する。まず、検証回路記述情報26aと、演算回路L1〜L3に共通な演算回路記述情報26bとを用意し、これらに基づいて構成情報生成装置24で構成情報18を生成する。例えば、合成パラメータ設定手段24bは、最初に論理合成手段24aにパラメータセットP0を設定する。この後に、論理合成手段24aは、検証回路記述情報26aを読み込み、パラメータセットP0の下で論理合成を行い、検証回路記述情報26aからネットリストN0を生成する。
ネットリストN0の生成後、合成パラメータ設定手段24bは、論理合成手段24aにパラメータセットP1を設定する。この後、論理合成手段24aは、演算回路記述情報26bを読み込み、パラメータセットP1の下で論理合成を行って、演算回路記述情報26bからネットリストN1を生成する。このときに、パラメータセットP1のDSPパラメータは、DSPブロック12を最大限使用する設定値であり、メモリパラメータは、データ保持メモリとしてブロックRAM13を使用する設定値になっている。したがって、所定の演算機能を実現させる演算回路記述情報26bは、パラメータセットP1の下で、DSPブロック12を最大限使用し、かつデータ保持メモリとしてブロックRAM13を使用するする回路ブロック9の組み合わせのネットリストN1に変換される。
ネットリストN1の生成後、論理合成手段24aには、合成パラメータ設定手段24bによってパラメータセットP2が設定される。この後、論理合成手段24aは、演算回路記述情報26bを読み込み、パラメータセットP2の下で論理合成を行って、この演算回路記述情報26bからネットリストN2を生成する。パラメータセットP2の場合は、DSPパラメータがDSPブロック12を使用しない設定値であり、メモリパラメータがデータ保持メモリとしてブロックRAM13を使用する設定値になっている。したがって、所定の演算機能を実現させる演算回路記述情報26bは、パラメータセットP2の下で、DSPブロック12を使用せず、かつデータ保持メモリとしてブロックRAM13を使用する回路ブロック9の組み合わせのネットリストN2に変換される。
さらに、ネットリストN2の生成後、論理合成手段24aには、合成パラメータ設定手段24bによってパラメータセットP3が設定される。この後、論理合成手段24aは、演算回路記述情報26bが論理合成手段24aに読み込み、パラメータセットP3の下、演算回路記述情報26bからネットリストN3を生成する。この場合には、DSPパラメータがDSPブロック12を最大限使用する設定値になっており、メモリパラメータがデータ保持メモリとして分散RAMを使用する設定値になっている。したがって、所定の演算機能を実現させる演算回路記述情報26bは、パラメータセットP3の下、DSPブロック12を最大限使用し、かつデータ保持メモリとして分散RAMを使用する回路ブロック9の組み合わせのネットリストN3に変換される。
上記のようにして、ネットリストN0〜N3が生成されると、これらネットリストN0〜N3が、結合手段24cで結合されて1つのネットリストにされる。続いて、結合手段24cから得られるネットリストは、マッピング手段24dによってマッピングされて、構成情報18として出力される。
マッピング手段24dからの構成情報18は、FPGA10の構成メモリ16にロードされる。構成メモリ16に構成情報18がロードされると、FPGA10には演算回路L1〜L3及び検証回路21が形成される。演算回路L1〜L3は、同じ演算機能を有しているが、回路ブロック9の組み合わせが互いに異なっている。上述のように、演算回路L1、L3は、DSPブロック12を最大限使用する回路ブロック9の組み合わせであるのに対し、演算回路L2は、DSPブロック12以外の回路ブロック9の組み合わせになっている。また、演算回路L1、L2は、データ保持メモリとして、ブロックRAM13を使用するのに対して、演算回路L3は、データ保持メモリとして分散RAMを使用する回路ブロック9の組み合わせになっている。
上記のように、構成情報生成装置24では、パラメータセットP1〜P3(合成パラメータ)が設定されるごとに、その合成パラメータの下で論理合成を行って、同一の演算回路記述情報26bから演算回路L1〜L3に対応したネットリストN1〜N3を生成し、そのネットリストN1〜N3を用いて、演算回路構成情報C1〜C3を含む構成情報18を生成する。これにより、演算機能の同一性を担保しつつ回路ブロック9の組み合わせが異なる複数の演算回路L1〜L3の構成情報18を容易に生成することができ、またその構成情報18を適用してFPGA10に演算機能が同一であり、かつ回路ブロック9の組み合わせ異なる演算回路L1〜L3を容易に形成できる。
上記のように演算回路L1〜L3及び検証回路21が形成されたFPGA10では、入力データXが入力されると、この入力データXが演算回路L1〜L3にそれぞれ入力される。演算回路L1に入力データXが入力されると、この演算回路L1は、入力データXに対して演算を行い、その結果得られた演算結果データV1を検証回路21に出力する。同様に、演算回路L2、L3は、入力データXに対して演算をそれぞれ行い、その結果得られた各演算結果データV2、V3を検証回路21に出力する。このときに、演算回路L1〜L3が行う演算は、いずれも演算回路記述情報26bにより示される特定の演算機能を実現するものである。このようにして、FPGA10では、1つの入力データXに対して複数の演算結果データV1〜V3を生成し、これら演算結果データV1〜V3を検証回路21に入力する。
検証回路21は、上記のようにして演算結果データV1〜V3が入力されるごとに演算結果データV1〜V3を比較する。そして、検証回路21は、演算結果データV1〜V3が全て一致している場合、そのうちのいずれか1つの演算結果データを出力データYとしてシステムコントローラに出力する。また、検証回路21は、演算結果データV1〜V3が出力データYとの間で各ビットに相違がなく、同じデータであることを示す個別検証データR1〜R3を生成し、これら個別検証データR1〜R3を含んだ検証データRもシステムコントローラに出力する。
一方、演算結果データV1〜V3のうち2つだけが一致する場合、検証回路21は、一致する2つの演算結果データの一方を出力データYとしてシステムコントローラに出力する。例えば、演算結果データV1、V3が一致し、これらと演算結果データV2が一致しない場合には、演算結果データV1、V3のうちの一方が出力データYとして検証回路21からシステムコントローラに出力される。この際、検証回路21は、演算結果データV1、V3が出力データYと同じデータであることを示す個別検証データR1、R3を生成するとともに、演算結果データV2が出力データYと相違し、相違するビット等を示す情報を有する個別検証データR2を生成し、これら個別検証データR1〜R3を含んだ検証データRをシステムコントローラに出力する。
なお、演算結果データV1〜V3の全てが一致しない場合、検証回路21は、例えば規定値を出力データYとしてシステムコントローラに出力する。また、この場合、検証回路21は、演算結果データV1〜V3がいずれもが一致しないこと等を示す個別検証データR1〜R3を生成し、これら個別検証データR1〜R3を含んだ検証データRをシステムコントローラに出力する。
ところで、従来のFPGAでは、同じ演算機能を持ち、かつ同じ回路ブロックの組み合わせで構成された複数の演算回路を形成してエラー検証を行っているため、これら複数の演算回路に共通する温度変動や電圧変動、クロック変動の共通要因に起因して各演算回路にエラーが発生している場合、共通要因に対する各演算回路の動作状況が同じになってしまうので、各演算回路で発生するエラーの発生状態も同じものとなる。このため、従来のFPGAのエラー検証方法では、各演算回路が同じ演算結果データを生成することから、それら演算結果データが全て一致してしまい、エラーが発生したことを検知することが困難であった。
しかしながら、本実施形態のFPGA10では、上記のように演算回路L1〜L3が同じ演算機能を持つものの、演算回路L1〜L3を構成する回路ブロック9の組み合わせが互いに異なっていることから、共通要因に対する各演算回路L1〜L3の動作状況が異なり、各演算回路L1〜L3で発生するエラーの発生状態も異なるものとなる。これにより、FPGA10では、例えば演算回路L1〜L3に共通する共通要因で何らかの理由でエラーが発生しているときでも、演算回路L1〜L3が同時に同じ演算結果データV1〜V3を生成する可能性が低くなり、演算結果データV1〜V3が不一致になる可能性が非常に高くなる。したがって、FPGA10では、演算結果データV1〜V3が不一致であるとの検証回路21の判断結果を基にエラーを検知できる。
因みに、FPGA10では、共通要因によって、上記のように全ての演算回路L1〜L3でエラーが発生することもあれば、演算回路L1〜L3を構成する回路ブロック9の組み合わせが互いに異なっていることから、演算回路L1〜L3のうちの1つまたは2つの演算回路でエラーが発生し、他の演算回路ではエラーが発生しないこともある。このような場合でも、FPGA10では、演算回路L1〜L3が同時に同じ演算結果データV1〜V3を生成することがないため、演算結果データV1〜V3の不一致が生じ、この結果を基に検証回路21によってエラーを検知できる。
演算回路L1〜L3でエラーが生じる要因は様々であり、共通要因以外の要因によってもエラーが発生することもある。しかしながら、FPGA10の演算回路L1〜L3は、上記のように回路ブロック9の組み合わせが互いに異なっていることから、各演算回路L1〜L3が同時にエラーを発生させたとしても、演算回路L1〜L3が同時に同じ演算結果データV1〜V3を生成する可能性が低くなる。したがって、FPGA10では、演算結果データV1〜V3が不一致であるとの検証回路21の判断結果を基にエラーを検知できる。
以上のようにして、同じ演算機能を持ち、かつ回路ブロック9の組み合わせが異なる多様性を有する複数の演算回路L1〜L3からの演算結果データV1〜V3に基づいたエラー検知率は、従来の同じ演算機能を持ち、かつ同じ回路ブロック9の組み合わせた複数の演算回路によって冗長性を持たせた場合よりも高くなる。
なお、上述した実施形態においては、3つの演算回路L1〜L3を形成した場合について述べたが、本発明はこれに限らず、少なくとも2つ以上の演算回路を形成できれば、その他種々の数の演算回路を形成するようにしてもよい。
また、上記に説明した複数の演算回路L1〜L3の回路ブロック9の組み合わせが互いに異なるものとするための態様は、一例であり上記のものに限定されない。例えば演算回路が2個の場合には、上記の演算回路L1と演算回路L2との関係のように、DSPブロック12の使用の有無だけが異なるようにしてもよい。また、複数の演算回路L1〜L3のそれぞれに使用されるDSPブロック12の個数や、演算回路L1〜L3を形成する回路ブロック9の全数に対するDSPブロック12の個数の比率が異なるようにしてもよい。DSPブロック12に限らず、例えば乗算器等の特定のハードマクロの使用の有無、その個数や比率等が異なるようにしてもよい。
また、上記実施形態では、検証回路21をFPGA10に形成しているが、FPGA10に検証回路21を形成せずに、FPGA10からは各演算回路L1〜L3の演算結果データをそのまま外部の機器に出力するように構成してもよい。この場合、外部の機器において検証回路21と同様な検証を行えばよい。検証回路21において、出力データYを決定する手法は一例である。例えば最も大きな値の演算結果データを出力データYとしてもよい(高値選択)。逆に、小さな値の演算結果データを出力データYとしてもよい(低値選択)。また、各演算結果データの平均値や中間値を出力データYとしたり、一定数例えば過半数を超えた演算結果データの値を出力データYとしたりしてもよい(条件付き多数決)。さらに、各演算結果データの値の分布を算出し、特定の偏差の範囲外を排除したうちの演算結果データから、高値選択、低値選択、平均値、中間値、多数決、条件付き多数決等を行ってもよい。また、出力データYを決定する際に、上記手法を組み合わせてもよい。なお、条件付き多数決の場合に、一定数を超えた演算結果データがない場合には、規定値を出力データYとして出力することができる。
また、各演算結果データの対応するビット同士で多数決、条件付き多数決等を行って、選択されたビット値を出力データYのビットに割り当ててもよい。また、各演算結果データの対応するビット同士で多数決、条件付き多数決等を行って得られる基準ビット列を生成し、基準ビット列と各演算結果データのビット列の対応するビット同士を比較し、最も違いの少ない演算結果データを出力データYとしてもよい。
[検証]
次に、本発明のFPGA10におけるエラーの検知率の向上について、FPGAのシミュレーションツール(アプリケーションプログラム)により検証試験を行った。この検証試験では、同じ演算機能を持ち、かつ回路ブロック9の組み合わせが互いに異なる2つの演算回路L1、L2をFPGA10に形成したFPGAについてのタイミングシミュレーションを検証例とし、得られた演算結果データV1、V2を基にエラーの検知率について検証した。
次に、本発明のFPGA10におけるエラーの検知率の向上について、FPGAのシミュレーションツール(アプリケーションプログラム)により検証試験を行った。この検証試験では、同じ演算機能を持ち、かつ回路ブロック9の組み合わせが互いに異なる2つの演算回路L1、L2をFPGA10に形成したFPGAについてのタイミングシミュレーションを検証例とし、得られた演算結果データV1、V2を基にエラーの検知率について検証した。
また、この検証例では、プラント制御装置に搭載され、IEC−61131に準拠した制御記述言語であるFBD言語で記述された乗算関数の動作記述情報を高位合成して、Verilog HDLによる演算回路記述情報を生成した。この生成した1つの演算回路記述情報を基に、異なる2セットのパラメータセットを用いて論理合成を行い、2つの演算回路L1、L2に対応するネットリストN1、N2をそれぞれ生成した。ネットリストN1、N2を1つのネットリストに結合し、そのネットリストを基にマッピングして構成情報18を得た。検証例では、この構成情報18と、シミュレートするFPGA10の伝搬遅延情報等とを用いて、シミュレーションツール上にてタイミングシミュレーションを行った。論理合成からマッピングまでの処理、及びタイミングシミュレーションは、ISE(登録商標)14.7(XilinX社製)を用いた。また、FPGA10としては、XC7K325T-2(Kintex-7、Xilinx社製)を想定してタイミングシミュレーションを行った。
検証例における演算回路L1、L2が行う演算は、2つの入力値(整数)を乗算するものである。2つの入力値は、乱数で発生させ、これら2つの入力値を1つの入力データXとして演算回路L1、L2にそれぞれ入力した。また、演算回路L1、L2から得られる演算結果データV1、V2は、それぞれ32ビットとした。
ネットリストN1を生成する論理合成では、DSPブロック12を最大限使用する設定値のDSPパラメータを用い、ネットリストN2を生成する論理合成では、DSPブロック12を使用しない設定値のDSPパラメータを用いた。なお、DSPパラメータ以外の合成パラメータについては、特に設定を行わずにネットリストN1、N2を生成した。これにより、検証例の演算回路L1はDSPブロック12が最大限使用された回路構成とした。一方、検証例の演算回路L2は、DSPブロック12以外の回路ブロック9が組み合わされた回路構成とした。ここで、検証例とした演算回路L1、L2の回路ブロック9の使用状態を表1に示す。なお、表1には、別の検証例として、同じ合成パラメータの設定で演算回路L1、L2が比例積分演算を行うように構成した場合における回路ブロック9の使用状態を参考に示す。
表1の「PHYSICAL PARAMETER OF FPGA」の欄の各項目の意味は次の通りである。
[Slice Logic Utilization]
(1)Number of Slice Registers:スライス中の使用するレジスタの個数
(2)Number used as Flip Flops: (1)のレジスタのうちフリップフロップとして使用する個数
(3)Number of Slice LUTs:スライス中の使用するLUTの個数
(4)Number used as logic:(3)のうち論理関数を実現するために使用したLUTの個数(LUTは、O6出力とO5出力とを有する)
(5)Number using O6 output only:(4)のうちO6出力のみを使用したLUTの個数(6)Number using O5 output only:(4)のうちO5出力のみを使用したLUTの個数
(7)Number using O5 and O6:(4)のうちO6出力とO5出力の双方を使用したLUTの個数
(8)Number used exclusive as route-thrus:(3)のうちルートスルーとして(入力をレジスタ等に接続する配線の目的ためだけに)使用するLUTの個数
(9)Number with same-slice carry load:(8)のうちキャリー信号線(接続先が同一スライス内)とされるLUTの個数
[Slice Logic Distribution]
(10)Number of occupied Slices: 演算回路に使用したスライスの個数
(11)Number of LUT Flip Flop pairs used:(10)のスライスに含まれるLUTとフリップフロップのペアのうち実際に使われた個数
(12)Number with an unused Flip Flop:(11)のペアのうちフリップフロップが使われない個数
(13)Number with an unused LUT: (11)のペアのうちLUTが使われない個数
(14)Number of fully used LUT-FF pairs: (11)のペアのうちLUTとフリップフロップの双方が使われた個数
[Specific Feature Utilization]
(15)Number of DSP48E1s:DSPブロック12の使用個数
(16)Average Fanout of Non-Clock Nets:クロック以外の配線の平均ファンアウト(1本の信号線が平均何本に分岐しているか)
[Slice Logic Utilization]
(1)Number of Slice Registers:スライス中の使用するレジスタの個数
(2)Number used as Flip Flops: (1)のレジスタのうちフリップフロップとして使用する個数
(3)Number of Slice LUTs:スライス中の使用するLUTの個数
(4)Number used as logic:(3)のうち論理関数を実現するために使用したLUTの個数(LUTは、O6出力とO5出力とを有する)
(5)Number using O6 output only:(4)のうちO6出力のみを使用したLUTの個数(6)Number using O5 output only:(4)のうちO5出力のみを使用したLUTの個数
(7)Number using O5 and O6:(4)のうちO6出力とO5出力の双方を使用したLUTの個数
(8)Number used exclusive as route-thrus:(3)のうちルートスルーとして(入力をレジスタ等に接続する配線の目的ためだけに)使用するLUTの個数
(9)Number with same-slice carry load:(8)のうちキャリー信号線(接続先が同一スライス内)とされるLUTの個数
[Slice Logic Distribution]
(10)Number of occupied Slices: 演算回路に使用したスライスの個数
(11)Number of LUT Flip Flop pairs used:(10)のスライスに含まれるLUTとフリップフロップのペアのうち実際に使われた個数
(12)Number with an unused Flip Flop:(11)のペアのうちフリップフロップが使われない個数
(13)Number with an unused LUT: (11)のペアのうちLUTが使われない個数
(14)Number of fully used LUT-FF pairs: (11)のペアのうちLUTとフリップフロップの双方が使われた個数
[Specific Feature Utilization]
(15)Number of DSP48E1s:DSPブロック12の使用個数
(16)Average Fanout of Non-Clock Nets:クロック以外の配線の平均ファンアウト(1本の信号線が平均何本に分岐しているか)
なお、「スライス」は、上述の基本構成ブロックを構成する基本回路であり、LUTとレジスタ(フリップフロップ)を基本要素とするものである。
検証試験では、現実の環境におけるエラーの発生状況が、FPGA10の動作周波数が変動した状況に似ているものと仮定した。具体的には、温度変動や電圧変動の各回路ブロック9間における信号の伝搬遅延が発生する状態と同様な状態を、シミュレーション上でFPGA10の動作周波数を変化させることで発生させた。このため、検証例のタイミングシミュレーションでは、動作周波数を160MHzから258MHzまで2MHzずつ変化させ、各動作周波数において、演算回路L1、L2で乗算演算を実行した。
各々の動作周波数では、10000個の入力データXを入力し、演算回路L1、L2のそれぞれで10000回の乗算演算を実行した。1個の入力データXに対して演算回路L1、L2から出力される演算結果データV1、V2を、シミュレーションツールとは別のプログラムで取り込み、エラーの発生状況等を検証した。
上記の検証例におけるエラー発生率と動作周波数との関係を図4に示す。図4のグラフの横軸は、FPGA10の動作周波数であり、縦軸は、エラー発生率である。入力データXの1回の入力について、演算結果データV1、V2の少なくとも一方が誤った値となったときを1回としてエラー発生回数をカウントし、エラー発生率は、動作周波数ごとの入力データXの入力回数(1万回)に対するエラー発生回数の割合(%)とした。演算結果データV1、V2が誤った値となっているか否かは、別途計算された真値と演算結果データV1、V2とを比較することによって判別した。
また、図5には、演算結果データV1、V2が不一致によるエラー検知率を示す。図5のグラフの横軸は、FPGA10の動作周波数であり、縦軸は、エラー検知率である。入力データXの1回の入力について、演算結果データV1、V2が不一致になったときを1回としてエラー検知回数をカウントし、エラー検知率は、動作周波数ごとの入力データXの入力回数(1万回)に対するエラー検知回数の割合(%)とした。なお、図5では、後述する比較例1でエラーを検知した178MHz以上の動作周波数での検証結果について示した。
さらに、図6には、演算結果データV1、V2の違いの距離(以下、不一致距離という)を示す。不一致距離(D)は、次の式(1)に示されるように、動作周波数ごとに、32ビットで正規化したエラービットの合計を当該動作周波数におけるエラー検知回数で除したものであり、百分率で示される。この不一致距離は、演算結果データV1、V2の違いが大きいときにその値が大きくなる。
上記式(1)中の値E(i,f)は、動作周波数fにおけるi番目の入力データXについて、演算結果データV1、V2の間で不一致となるビット数である。また、S(f)は、動作周波数fにおけるエラー検知回数である。
さらに、この検証試験では、検証例と比較するために、DSPブロック12が最大限使用された演算回路L1を2個形成したFPGAについてのタイミングシミュレーションを比較例1とし、さらに、DSPブロック12以外の回路ブロックを組み合わせた演算回路L2を2個形成したFPGAについてのタイミングシミュレーションを比較例2とした。これら比較例1および比較例2のFPGAにそれぞれ演算回路L1、L2を形成する各構成情報は、検証例と同様にしてそれぞれ生成した。そして、比較例1及び比較例2についても、検証例と同様にシミュレーションツール上にてタイミングシミュレーションを行った。それら比較例1及び比較例2の検証結果についても図4〜図6に併せて示す。
図4に示すように、DSPブロック12を使用した演算回路L1を2個形成した比較例1では、176MHzよりも上の動作周波数で、エラー発生率がほぼ100%になった。DSPブロック12を使用しない演算回路L2を2個形成した比較例2では、動作周波数が204MHzからエラーが発生し、動作周波数の上昇とともにエラーの発生率が100%に近づくように上昇した。このことから、エラーの発生状況は回路ブロック9の組み合わせによって互いに異なることがわかる。なお、本発明を適用した検証例では、178MHzよりも上の動作周波数でエラー発生率がほぼ100%となり、比較例1と同様なエラーの発生状況となった。
上記から比較例1では、178MHz以上の動作周波数のとき、2個の演算回路L1のうち少なくとも一方から出力された演算結果データが誤った値となっていることが分かる。しかしながら、図5に示されるように、比較例1では、178MHz以上のいくつかの動作周波数でエラーを検知しているが、その他の動作周波数ではエラーを検知していない。この理由として、比較例1では、同じ回路ブロック9の組み合わせでなる2個の演算回路L1を用いていることから、2個の演算回路L1でそれぞれ同じエラーが発生してしまい、それぞれ出力される演算結果データが全く同じとなり、その結果、エラーとして検知できないためである。比較例2では、エラー検知率がほぼ100%であるが、218MHzよりも上の動作周波数では、1〜2%程度のエラー検知率の低下が見られた。
これらに対して本発明による検証例のエラー検知率は、すべての動作周波数において100%となった。すなわち、比較例1及び比較例2のように回路ブロック9の組み合わせが同じ複数の演算回路が冗長化した構成よりも、本発明の検証例のように、回路ブロック9の組み合わせが異なる複数の演算回路L1、L2、すなわち多様性を持った複数の演算回路を形成した構成とすることにより、一段と確実にエラーを検知でき、かくして、エラーの検知率が向上することが確認できた。また、図6に示すように、検証例における不一致距離は、比較例1及び比較例2よりも3倍以上大きいことが確認できた。すなわち、比較例1及び比較例2のように同じ回路構成を有する複数の演算回路によって冗長化した構成を形成するよりも、本発明の検証例のように、互いに回路ブロックの組み合わせが異なる多様性を持った複数の演算回路を形成するほうが、エラーの検知能力が高いことが示された。
10 FPGA(プログラマブルロジックデバイス)
11 基本論理ブロック
12 DSPブロック
21 検証回路
L1〜L3 演算回路
11 基本論理ブロック
12 DSPブロック
21 検証回路
L1〜L3 演算回路
Claims (6)
- 複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスにおいて、
同じ前記演算機能を持ち、かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路が形成され、
各前記演算回路は、それぞれ演算結果を検証回路に出力して検証させることを特徴とするプログラマブルロジックデバイス。 - 複数の前記演算回路のうちの少なくとも1つの前記演算回路は、前記回路ブロックとしてDSPブロックを含んだ前記回路ブロックの組み合わせにより形成され、他の少なくとも1つの前記演算回路は、前記DSPブロック以外の前記回路ブロックの組み合わせにより形成されることを特徴とする請求項1に記載のプログラマブルロジックデバイス。
- 前記検証回路は、前記回路ブロックの組み合わせにより形成されることを特徴とする請求項1または2に記載のプログラマブルロジックデバイス。
- 複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスのエラー検証方法において、
同じ前記演算機能を持ち、かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路を形成する回路形成ステップと、
各前記演算回路でそれぞれ演算を行う演算ステップと、
各前記演算回路からの演算結果を検証回路で検証する検証ステップと
を有することを特徴とするプログラマブルロジックデバイスのエラー検証方法。 - 前記回路形成ステップは、
前記回路ブロックとしてDSPブロックを含んだ前記回路ブロックの組み合わせでなる前記演算回路を少なくとも1つ形成するとともに、前記DSPブロック以外の前記回路ブロックの組み合わせでなる他の前記演算回路を少なくとも1つ形成することを特徴とする請求項4に記載のプログラマブルロジックデバイスのエラー検証方法。 - 構成情報にしたがって複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスの回路形成方法において、
前記回路ブロックの組み合わせに関する条件が異なる合成パラメータを順次設定する合成パラメータ設定ステップと、
前記合成パラメータ設定ステップで前記合成パラメータが設定されるごとに、前記合成パラメータの下で論理合成を行い、ハードウェア記述言語で記述された同一の演算回路記述情報から複数の演算回路に対応した複数のネットリストを生成する論理合成ステップと、
前記複数のネットリストから前記構成情報を生成する構成情報生成ステップと、
前記構成情報をプログラマブルロジックデバイスに書き込み、前記複数のネットリストに対応した同じ前記演算機能を持ち、かつ前記回路ブロックの組み合わせが異なって接続状態が異なり、それぞれ演算結果を検証回路に出力して検証させる複数の演算回路を前記プログラマブルロジックデバイスに形成する形成ステップと
を有することを特徴とするプログラマブルロジックデバイスの回路形成方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015094970A JP5807887B1 (ja) | 2015-05-07 | 2015-05-07 | プログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法 |
EP16789468.2A EP3293883B1 (en) | 2015-05-07 | 2016-02-24 | Programmable logic device, method for verifying error of programmable logic device, and method for forming circuit of programmable logic device |
PCT/JP2016/055389 WO2016178332A1 (ja) | 2015-05-07 | 2016-02-24 | プログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法 |
US15/572,140 US10067742B2 (en) | 2015-05-07 | 2016-02-24 | Programmable logic device, method for verifying error of programmable logic device, and method for forming circuit of programmable logic device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015094970A JP5807887B1 (ja) | 2015-05-07 | 2015-05-07 | プログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5807887B1 true JP5807887B1 (ja) | 2015-11-10 |
JP2016213637A JP2016213637A (ja) | 2016-12-15 |
Family
ID=54545798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015094970A Active JP5807887B1 (ja) | 2015-05-07 | 2015-05-07 | プログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10067742B2 (ja) |
EP (1) | EP3293883B1 (ja) |
JP (1) | JP5807887B1 (ja) |
WO (1) | WO2016178332A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018029267A (ja) * | 2016-08-18 | 2018-02-22 | 富士通株式会社 | プログラマブルロジック装置、情報処理装置、処理方法、及び処理プログラム |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096397B (zh) * | 2019-03-27 | 2022-10-25 | 天津大学 | 基于多环形振荡器fpga配置电路鲁棒性检测方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4096477B2 (ja) * | 1999-07-23 | 2008-06-04 | 松下電工株式会社 | 画像処理システムおよびその構成方法 |
JP5310036B2 (ja) * | 2009-01-30 | 2013-10-09 | 富士通株式会社 | 検証支援プログラムおよび検証支援装置 |
EP2456119B1 (en) * | 2009-07-13 | 2016-09-28 | Nec Corporation | Anonymous authentication signature system, user device, verification device, signature method, verification method, and program therefor |
NL1037275C2 (nl) * | 2009-09-11 | 2011-03-14 | Advanced Public Transp Systems B V | Stuurinrichting voor een vooraf gedefinieerd traject verplaatsbaar voertuig, automatisch gestuurd en via tenminste een eerste as , alsmede een voertuig voorzien van een dergelijke stuurinrichting. |
US8365131B2 (en) * | 2010-01-11 | 2013-01-29 | Empire Technology Development Llc | Hardware synthesis using thermally aware scheduling and binding |
JP5660798B2 (ja) * | 2010-04-01 | 2015-01-28 | 三菱電機株式会社 | 情報処理装置 |
JP2012043197A (ja) * | 2010-08-19 | 2012-03-01 | Toshiba Tec Corp | 情報処理装置及びプログラム |
US20140237263A1 (en) * | 2013-02-19 | 2014-08-21 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory device and memory system using the same |
US8769450B1 (en) * | 2013-06-28 | 2014-07-01 | Xilinx, Inc. | Synthesis flow for formal verification |
JP6528612B2 (ja) * | 2015-08-31 | 2019-06-12 | 株式会社ソシオネクスト | 電源電圧制御回路、電源電圧制御方法および電源電圧制御プログラム |
-
2015
- 2015-05-07 JP JP2015094970A patent/JP5807887B1/ja active Active
-
2016
- 2016-02-24 WO PCT/JP2016/055389 patent/WO2016178332A1/ja active Application Filing
- 2016-02-24 US US15/572,140 patent/US10067742B2/en active Active
- 2016-02-24 EP EP16789468.2A patent/EP3293883B1/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018029267A (ja) * | 2016-08-18 | 2018-02-22 | 富士通株式会社 | プログラマブルロジック装置、情報処理装置、処理方法、及び処理プログラム |
Also Published As
Publication number | Publication date |
---|---|
JP2016213637A (ja) | 2016-12-15 |
WO2016178332A1 (ja) | 2016-11-10 |
EP3293883B1 (en) | 2020-11-18 |
EP3293883A4 (en) | 2018-12-19 |
EP3293883A1 (en) | 2018-03-14 |
US10067742B2 (en) | 2018-09-04 |
US20180129471A1 (en) | 2018-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10289483B2 (en) | Methods and apparatus for embedding an error correction code in storage circuits | |
US7937256B2 (en) | Systems and methods of efficient library characterization for integrated circuit cell libraries | |
US8997033B1 (en) | Techniques for generating a single configuration file for multiple partial reconfiguration regions | |
Moreira et al. | Impact of C-elements in asynchronous circuits | |
US20100313176A1 (en) | Delay library, delay library creation method, and delay calculation method | |
EP3324317B1 (en) | Methods for verifying retimed circuits with delayed initialization | |
WO2007063513A1 (en) | Timing constraint merging in hierarchical soc designs | |
US8977998B1 (en) | Timing analysis with end-of-life pessimism removal | |
US11748548B2 (en) | Hierarchical clock tree implementation | |
US20170328951A1 (en) | Embedded built-in self-test (bist) circuitry for digital signal processor (dsp) validation | |
US10302698B1 (en) | Estimation of power consumed by combinatorial circuitry | |
JP5807887B1 (ja) | プログラマブルロジックデバイス、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法 | |
US8146041B1 (en) | Latch based optimization during implementation of circuit designs for programmable logic devices | |
US9646126B1 (en) | Post-routing structural netlist optimization for circuit designs | |
US10963610B1 (en) | Analyzing clock jitter using delay calculation engine | |
US10162916B1 (en) | Timing verification in a programmable circuit design using variation factors | |
US10169518B1 (en) | Methods for delaying register reset for retimed circuits | |
KR20180051708A (ko) | 스위칭 액티비티에 기초한 반도체 장치의 배치 방법 및 이에 의해 제조된 반도체 장치 | |
US9152756B2 (en) | Group based routing in programmable logic device | |
CN115878555A (zh) | 用于片上网络(NoC)实现的面积和时序评估的***和方法 | |
US8881082B2 (en) | FEC decoder dynamic power optimization | |
US9672307B2 (en) | Clock placement for programmable logic devices | |
US20130174107A1 (en) | Design tool for glitch removal | |
US9268891B1 (en) | Compact and efficient circuit implementation of dynamic ranges in hardware description languages | |
JP7051151B2 (ja) | 数値情報生成装置、数値情報生成方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150825 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150901 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5807887 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R157 | Certificate of patent or utility model (correction) |
Free format text: JAPANESE INTERMEDIATE CODE: R157 |