• ポートフォリオ機能


ポートフォリオを新規に作成して保存
既存のポートフォリオに追加保存

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 全部申し立て 1項3号刊行物記載  H03K
審判 全部申し立て 2項進歩性  H03K
管理番号 1323479
異議申立番号 異議2016-700404  
総通号数 206 
発行国 日本国特許庁(JP) 
公報種別 特許決定公報 
発行日 2017-02-24 
種別 異議の決定 
異議申立日 2016-05-10 
確定日 2016-11-09 
異議申立件数
訂正明細書 有 
事件の表示 特許第5807887号発明「プログラマブルロジックデバイスのエラー検証方法,及びプログラマブルロジックデバイスの回路形成方法」の特許異議申立事件について,次のとおり決定する。 
結論 特許第5807887号の明細書,特許請求の範囲を訂正請求書に添付された訂正明細書,特許請求の範囲のとおり,訂正後の請求項[1-3]及び[4,5]について訂正することを認める。 特許第5807887号の請求項1ないし3に係る特許についての特許異議の申立てを却下する。 特許第5807887号の請求項4ないし6に係る特許を維持する。 
理由 第1 手続の経緯
特許第5833799号の請求項1ないし6に係る特許についての出願は,平成27年5月7日に特許出願され,平成27年9月18日にその特許権の設定登録がされ,その後,その特許について,特許異議申立人 石橋 智子により特許異議の申立てがされ,平成28年6月20日付けで取消理由が通知され,その指定期間内である平成28年8月23日に意見書の提出及び訂正得の請求があり,その訂正の請求に対して特許異議申立人 石橋 智子から平成28年10月5日に意見書が提出されたものである。

第2 訂正の適否についての判断
1.訂正の内容
本件訂正請求による訂正の内容は,以下の(1)([訂正事項1]ないし[訂正事項6])及び(2)([訂正事項7]及び[訂正事項8])のとおりである。
(1)請求項1ないし3からなる一群の請求項に係る訂正
[訂正事項1]
特許請求の範囲の請求項1を削除する。
[訂正事項2]
特許請求の範囲の請求項2を削除する。
[訂正事項3]
特許請求の範囲の請求項3を削除する。
[訂正事項4]
明細書の【発明の名称】,段落【0001】,及び【0009】にそれぞれ「プログラマブルロジックデバイス,プログラマブルロジックデバイスのエラー検証方法,及びプログラマブルロジックデバイスの回路形成方法」と記載されているのを,「プログラマブルロジックデバイスのエラー検証方法,及びプログラマブルロジックデバイスの回路形成方法」に訂正する。
[訂正事項5]
明細書の段落【0010】を削除する。
[訂正事項6]
明細書の段落【0013】に「本発明のプログラマブルロジックデバイス,及びそのエラー検証方法によれば」と記載されているのを,「本発明のプログラマブルロジックデバイスのエラー検証方法によれば」に訂正する。
(2)請求項4及び5からなる一群の請求項に係る訂正
[訂正事項7]
特許請求の範囲の請求項4に「同じ前記演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路を形成する回路形成ステップ」と記載されているのを,「ハードウェア記述言語で記述された同一の演算回路記述情報から,前記回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し,前記複数のネットリストから生成した構成情報をプログラマブルロジックデバイスに書き込み,前記複数のネットリストに対応した,同じ前記演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の前記演算回路を,形成する回路形成ステップ」に訂正する。
請求項4の記載を引用する請求項5についても同様に訂正する。
[訂正事項8]
明細書の段落【0011】に「また,本発明は,複数の回路ブロックの組み合わせを変えることにより・・・,同じ演算機能を持ち,かつ回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路を形成する回路形成ステップ」と記載されているのを,「本発明は,複数の回路ブロックの組み合わせを変えることにより・・・,ハードウェア記述言語で記述された同一の演算回路記述情報から,前記回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し,前記複数のネットリストから生成した構成情報をプログラマブルロジックデバイスに書き込み,複数のネットリストに対応した,同じ演算機能を持ち,かつ回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路を,形成する回路形成ステップ」に訂正する。

2.訂正の目的の適否,一群の請求項,新規事項の有無,及び特許請求の範囲の拡張・変更の存否
(1)訂正事項1ないし3について
訂正事項1ないし3は,特許請求の範囲の減縮を目的とするものであって,新規事項の追加に該当せず,一群の請求項ごとに請求された訂正であり,実質上特許請求の範囲を拡張し,又は変更するものではない。
(2)訂正事項4ないし6について
訂正事項4ないし6は,前記訂正事項1ないし3に係る訂正にともない,特許請求の範囲と明細書(発明の名称を含む。)との整合性を図るための訂正であるから,明瞭でない記載の釈明を目的とするものであって,新規事項の追加に該当せず,実質上特許請求の範囲を拡張し,又は変更するものではない。
(3)訂正事項7について
訂正事項7に関連する「ハードウェア記述言語で記述された同一の演算回路記述情報から,前記回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し,前記複数のネットリストから生成した構成情報をプログラマブルロジックデバイスに書き込み,前記複数のネットリストに対応した,同じ前記演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の前記演算回路を,形成する回路形成ステップ」の具体例として,
明細書の段落【0023】には,「演算回路L1?L3は,同じ演算機能を持つが,エラー検知率を向上させるために,回路ブロック9の組み合わせを互いに異なるものにしている。すなわち,演算回路L1?L3は,使用する回路ブロック9の種類や数,回路ブロック9内でのLUTやレジスタの使われ方,これら回路ブロック9の接続状態が演算回路L1?L3では互いに異なったものになっているが,演算回路L1?L3にエラーが発生しない状態では,演算回路L1?L3は,同一の入力データXの入力に応答して同じ演算結果データV1?V3を出力するよう構成されている。」と記載され,
明細書の段落【0033】には,「回路記述情報26は,レジスタ転送レベル(Register transfer level, RTL)で抽象化した演算機能の仕様を,ハードウェア記述言語(HDL)を用いて記述したものである。」と記載され,
明細書の段落【0034】には,「合成パラメータは,FPGA10に演算回路L1?L3を形成させる際の条件を指定するものであり,この合成パラメータにより回路ブロック9の組み合わせに関する条件を変えることができる。」と記載され,
明細書の段落【0049】には,「マッピング手段24dからの構成情報18は,FPGA10の構成メモリ16にロードされる。構成メモリ16に構成情報18がロードされると,FPGA10には演算回路L1?L3及び検証回路21が形成される。演算回路L1?L3は,同じ演算機能を有しているが,回路ブロック9の組み合わせが互いに異なっている。」と記載され,
明細書の段落【0050】には,「構成情報生成装置24では,パラメータセットP_(1)?P_(3)(合成パラメータ)が設定されるごとに,その合成パラメータの下で論理合成を行って,同一の演算回路記述情報26bから演算回路L1?L3に対応したネットリストN_(1)?N_(3)を生成し,そのネットリストN_(1)?N_(3)を用いて,演算回路構成情報C_(1)?C_(3)を含む構成情報18を生成する。これにより,演算機能の同一性を担保しつつ回路ブロック9の組み合わせが異なる複数の演算回路L1?L3の構成情報18を容易に生成することができ,またその構成情報18を適用してFPGA10に演算機能が同一であり,かつ回路ブロック9の組み合わせ異なる演算回路L1?L3を容易に形成できる。」と記載され,
これらの記載から,明細書には,「ハードウェア記述言語で記述された同一の演算回路記述情報から,前記回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し,前記複数のネットリストから生成した構成情報をプログラマブルロジックデバイスに書き込み,前記複数のネットリストに対応した,同じ前記演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の前記演算回路を,形成する回路形成ステップ」が記載されていることが明らかである。
そうすると,訂正事項7は,明細書に記載された事項の範囲内において,「回路形成ステップ」を限定したものといえるから,特許請求の範囲の減縮を目的とするものであって,新規事項の追加に該当せず,また,実質上特許請求の範囲を拡張し,又は変更するものでもない。
そして,これら訂正は,一群の請求項に対して請求されたものである。
(4)訂正事項8について
訂正事項8は,前記訂正事項7に係る訂正にともない,特許請求の範囲と明細書との整合性を図るための訂正であるから,明瞭でない記載の釈明を目的とするものであって,新規事項の追加に該当せず,実質上特許請求の範囲を拡張し,又は変更するものではない。
(5)小括
以上のとおりであるから,本件訂正請求による訂正事項1ないし3及び7は,特許法第120条の5第2項第1号に掲げる事項を目的とするものであり,訂正事項4ないし6及び8は,同法同条同項第3号に掲げる事項を目的とするものであって,かつ,訂正事項1ないし8は,同条第4項及び同条第9項において準用する同法第126条第4項ないし第6項の規定に適合するので,訂正後の請求項[1-3]及び[4,5]について訂正を認める。

第3 特許異議の申立てについて
1.本件発明
本件訂正請求により訂正された訂正請求項4ないし6に係る発明(以下,それぞれ,「本件発明4」,「本件発明5」及び「本件発明6」という。)は,その特許請求の範囲の請求項4ないし6に記載された次の事項により特定されるとおりのものと認める。

[本件発明4]
「 複数の回路ブロックの組み合わせを変えることにより,演算機能が変更可能なプログラマブルロジックデバイスのエラー検証方法において,
ハードウェア記述言語で記述された同一の演算回路記述情報から,前記回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し,前記複数のネットリストから生成した構成情報をプログラマブルロジックデバイスに書き込み,前記複数のネットリストに対応した,同じ前記演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の前記演算回路を,形成する回路形成ステップと,
各前記演算回路でそれぞれ演算を行う演算ステップと,
各前記演算回路からの演算結果を検証回路で検証する検証ステップと
を有することを特徴とするプログラマブルロジックデバイスのエラー検証方法。」

[本件発明5]
「 前記回路形成ステップは,
前記回路ブロックとしてDSPブロックを含んだ前記回路ブロックの組み合わせでなる前記演算回路を少なくとも1つ形成するとともに,前記DSPブロック以外の前記回路ブロックの組み合わせでなる他の前記演算回路を少なくとも1つ形成することを特徴とする請求項4に記載のプログラマブルロジックデバイスのエラー検証方法。」

[本件発明6]
「 構成情報にしたがって複数の回路ブロックの組み合わせを変えることにより,演算機能が変更可能なプログラマブルロジックデバイスの回路形成方法において,
前記回路ブロックの組み合わせに関する条件が異なる合成パラメータを順次設定する合成パラメータ設定ステップと,
前記合成パラメータ設定ステップで前記合成パラメータが設定されるごとに,前記合成パラメータの下で論理合成を行い,ハードウェア記述言語で記述された同一の演算回路記述情報から複数の演算回路に対応した複数のネットリストを生成する論理合成ステップと,
前記複数のネットリストから前記構成情報を生成する構成情報生成ステップと,
前記構成情報をプログラマブルロジックデバイスに書き込み,前記複数のネットリストに対応した同じ前記演算機能を持ち,かつ前記回路ブロックの組み合わせが異なって接続状態が異なり,それぞれ演算結果を検証回路に出力して検証させる複数の演算回路を前記プログラマブルロジックデバイスに形成する形成ステップと
を有することを特徴とするプログラマブルロジックデバイスの回路形成方法。」

2.取消理由の概要
訂正前の請求項1ないし5に係る特許に対して平成28年6月29日付けで特許権者に通知した取消理由の要旨は,次のとおりである。

(1)請求項1ないし5に係る発明は,甲第2号証に記載された発明であるから,特許法第29条第1項第3号に該当し,特許を受けることができないものであるから,請求項1ないし5に係る特許は,取り消されるべきものである。
(2)請求項1ないし5に係る発明は,甲第2号証に記載された発明に基づいて当業者が容易に発明することができたものであり,特許法第29条第2項の規定により特許を受けることができないものであるから,請求項1ないし5に係る特許は,取り消されるべきものである。

3.甲号証の記載
甲第2号証(Lucas, A., et al., Evaluating the Effectiveness of a Diversity TMR Scheme under Neutrons, 2013 14th European Conference on Radiation and Its Effects on Components and Systems(RADECS), 2013年,インターネット<URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6937382>)には,「Evaluating the Effectiveness of a Diversity TMR Scheme under Neutrons」(中性子影響下での多様性TMRスキームの有効性評価)に関して次の記載がある。

ア 「 Abstract-This paper explores the concept of Design Diversity Redundancy (DDR) applied to SRAM-based FPGAs as a proposal to increase system reliability. Three different implementations of an 8×8 matrix multiplication associated to majority voters were used to build a Diversity Triple Modular Redundancy (DTMR) scheme. The whole architecture was prototyped on a Xilinx Virtex5 FPGA and exposed to a neutron source for approximately 21 hours in order to investigate the occurrence of Single Event Effects. In addition, a fault injection campaign was performed in order to compare simulation and experimental data. Results indicate the ability of the system to tolerate faults. 」(1ページ目左段第1?12行)
([当審仮訳]
要約-本稿では,システム信頼性の向上策として,SRAMベースのFPGAに適用される設計多様性冗長系のコンセプトについて検討する。多数決回路に接続される,8×8行列乗算の3つの異なる実装を用いて,多様性三重モジュラー冗長系(DTMR)スキームを構成した。アーキテクチャ全体を,Xilinx社のVertex5 FPGA上でプロトタイプとして作成し,シングルイベント効果の発生を調査するために,約21時間の間,中性子源に暴露した。さらに,シミュレーションと実験データとを比較するために,故障注入法を実行した。その結果として,システムの故障に対する耐性が示された。)

イ 「Usually, the techniques employed to deal with SEEs are based on hardware or time redundancy [1]. A very successful example is the Triple Modular Redundancy (TMR). In TMR, the original circuit is triplicated, by adding two extra copies of the original circuit. The three copies of the TMR approach operate in parallel and the output of these copies are delivered to a majority voter. If an error happens in one of the copies, two of them will continue to operate properly and the majority voter can correctly mask the output of the faulty module [1]. It is important mention that TMR cannot correct an error, but mask its incorrect value voting two matching values out of three.」(第1ページ右段第6?17行)
([当審仮訳]
通常,SEE(シングルイベント効果)対策として採用される技術は,ハードウェア又は時間の冗長化[1]によるものである。非常に成功している例として,三重モジュラー冗長系(TMR)がある。TMRでは,オリジナル回路の2つの複製を付加することにより,オリジナル回路が3重化されている。TMRアプローチにおける3つの複製は,並行して動作し,これら複製の出力は多数決回路に出力される。複製の1つにエラーが発生し,複製の2つが正常に動作を継続すると,多数決回路は,故障したモジュールの出力を正確にマスクすることができる[1]。TMRはエラーを訂正することはできないが,3つの中から2つの一致する値をもって評決することにより誤った値をマスクする,ということが重要である。)

ウ 「II. DTMR Concept and Related Works
The Design Diversity Redundancy (DDR) was first proposed by Elmendorf[6] under the name of N-Version Programming, with the objective of protecting redundant software-based applications against CMFs. Later, Avizienis and Kelly[2] extended the definition of DDR to hardware-based projects.
In DDR, several functionally identical copies of the same system are developed using different algorithms, architectures and technologies. A DTMR system is designed through the association of three diversified copies to a majority voter. Fig.1 illustrates an example of a DMTR system.

Fig.1 Example of a DTMR architecture」(2ページ目左段第12-23行,Fig.1)
([当審仮訳]
II.DTMRのコンセプト及び関連研究
設計多様性冗長系(DDR)は,ソフトウェアベースの冗長化アプリケーションをCMF(コモンモード故障)から保護する目的で,「Nバージョンプログラミング」という名称により,Elmendorf[6]により初めて提案された。その後,AvizienisとKelly[2]が,DDRの定義をハードウェアベースのプロジェクトに拡張した。
DDRでは,同一システムにおける機能的には同一である複数の複製が,異なるアルゴリズム,アーキテクチャ及び技術を用いて作成される。DTMRシステムは,3つの多様化された複製を,多数決回路に接続することにより設計される。図1は,DTMRシステムの例を示す。

(…図面省略…)

図1 DTMRアーキテクチャの例)

エ 「III. Proposed DTMR Case-Study
The case-study circuit implements an 8×8 matrix multiplication operation. The three TMR copies perform the same function, but are implemented in three different architectures: (1) pipelined Finite State Machine (FSM) version, (2) a totally combinational version, and (3) a software-based version embedded in a miniMIPS soft-core. The majority voters are asynchronous and implemented in hardware. A controller interface was developed in order to perform data acquisition, fault detection and data transmission. Fig. 2 illustrates the schematic of the DTMR architecture implemented, showing the three matrix multiplication versions - FSM (1), Combinational (2) and miniMIPS (3), registers to store the results from the modules - Reg -, the majority voters - Voter -, and the Controller Interface.

Fig.2 Schematic of the DTMR architecture implemented.」(2ページ目右段第1-15行,Fig.2)
([当審仮訳]
III. 提案するDTMRケーススタディ
ケーススタディの回路は,8×8行列乗算動作を実行する。3つのTMRの複製は,同一の機能を実行するが,異なるアーキテクチャにより実装され,具体的には,(1)パイプライン型有限状態機械(FSM)バージョン,(2)完全組み合わせバージョン,及び,(3)ミニMIPSソフトコアに埋め込まれるソフトウェアベースのバージョン,である。多数決回路は,非同期式で,ハードウェアで実装される。制御インタフェースは,データ取得,故障検知,及び,データ伝送のために開発された。図2は,実装されるDTMRアーキテクチャの概略図であり,3つの行列乗算バージョン,つまり,FSM(1),組み合わせ(2)及びミニMIPSと,モジュールからの結果を格納するレジスタRegと,多数決回路Voterと,制御インタフェースを示す。
(…図面省略…)
図2 実装されるDTMRアーキテクチャの概略図)

オ 「The whole system is prototyped in a Virtex5 FPGA, part XC5VLX110T, from Xilinx [5]. This device consists in a SRAM-based FPGA built on a 65-nm process and has a nominal core voltage of 1.0 V. Beyond the tradicional programmable Look-Up Tables (LUTs), this device also has dedicated Digital Signal Processing (DSP) blocks, model DSP48E [5].
In details the three matrix multiplications are implemented as follows:
A. Software-Based Version
The software version was embedded in a soft-core miniMIPS [12], based on the MIPS architecture. The application was developed in C programming language and it was used the gcc 2.3 cross-compiler to compile it into the miniMIPS' machine language.
The microprocessor runs at 25 MHz and the application takes 232 μs to perform the multiplication operation. This version occupies 7.4% of the slices available in the Virtex5 FPGA. 6.25% of the DPS blocks were also used.
B. Combinational Version
The combinational version was described in VHDL and runs at 25 MHz. The operation takes 255 ns to be completed. This version occupies 15.94% of the slices available in the Virtex5 FPGA.
C. FSM Version
The FSM version was also implemented in VHDL and consists in a 4-stage pipelined finite state machine. This version also runs at 25 MHz. The operation takes 20.8 μs to be performed. This version occupies 2.3% of the slices available in the Virtex5 FPGA.

The majority voters were described in VHDL and consists in the equation:
voted result = (result0 AND result1) or (result0 AND result2) or (result1 AND result2) (2)」(2ページ目右段下から6行目-3ページ目左段31行)
([当審仮訳]
システム全体は,Xilinx社[5]のVirtex5 FPGAのパートXC5VLX110Tによりプロトタイプとして製作される。このデバイスは,65-nmプロセス上で構築されるSRAMベースのFPGAであり,名目コア電圧は1.0Vである。従来のプログラム可能なルックアップテーブル(LUTs)だけでなく,このデバイスは,ディジタル信号処理(DSP)ブロックとしてモデルDSP48E[5]を備える。
詳細には,3つの行列乗算は次のように実装される:

A.ソフトウェアベースバージョン
ソフトウェアバージョンは,MIPSアーキテクチャに基づいて,ソフトコアであるミニMIPS[12]に埋め込まれる。アプリケーションは,C言語により作成され,gcc2.3クロスコンパイラによりミニMIPSの機械語にコンパイルされた。
マイクロプロセッサは,25MHzで作動し,アプリケーションは,232マイクロ秒で乗算動作を実行する。このバージョンは,Virtex5 FPGAにおいて利用可能なスライスの7.4%を使用し,DSPブロックの6.25%も使用する。

B.組み合わせバージョン
組み合わせバージョンは,VHDLにより記述され,25MHzで作動する。動作完了には255ナノ秒を要する。このバージョンは,Virtex5 FPGAにおいて利用可能なスライスの15.94%を使用する。

C.FSMバージョン
FSMバージョンも,VHDLにより実装され,4段のパイプライン型の有限状態機械である。このバージョンも25MHzで作動する。動作完了には20.8マイクロ秒を要する。このバージョンは,Virtex5 FPGAにおいて利用可能なスライスの2.3%を使用する。

多数決回路は,VHDLで記述され,以下の数式からなる:(…数式省略…))

以下,前記アないしオの摘記事項並びにこの分野における技術常識を考慮しつつ,甲第2号証に記載された技術事項について検討する。

(ア)前記ア,ウ,エより,甲第2号証には,「DTMRシステム」が記載されており,前記オより,当該「DTMRシステム」の全体は,Xilinx社のVirtex5 FPGAのパートXC5VLX110T,すなわちFPGA上に実装されている。
また,FPGAにおいて,ブロック(「スライス」とも称されるもの)の種類,数,配置,接続関係等,ブロックの組み合わせを変えることにより,演算機能が変更可能であることは,本件特許の出願日における技術常識である。
してみれば,甲第2号証には,「複数のブロックの組み合わせを変えることにより,演算機能が変更可能なFPGA」が記載されているといえる。

(イ)前記ウより,甲第2号証に記載の「DTMRシステム」は,機能的には同一であるが,異なるアーキテクチャを有する3つの複製と,多数決回路からなっている。また,前記エより,複製の例として,行列乗算動作を行う回路,すなわち,演算回路が記載されている。さらに,前記オより,3つの複製すなわち3つの演算回路のうち,ソフトウェアベースバージョンは,Virtex5のスライス(ブロック)とDSPブロックとの組み合わせで構成され,残りの組み合わせバージョンとFSMバージョンとは,Virtex5のスライス(ブロック)のみの組み合わせで構成されている。
そうすると,甲第2号証には,「同じ演算機能を持ち,かつ,ブロックの組み合わせが異なる3つの演算回路が形成」されることが記載されているといえる。

(ウ)前記アないしエ(特にエ)より,3つの演算回路は,それぞれの演算結果を多数決回路に出力し,多数決回路は,誤った演算結果をマスクして正しい演算結果を出力している。
そうすると,甲第2号証には,「3つの演算回路は,それぞれの演算結果を多数決回路に出力し,多数決回路は,誤った演算結果をマスクして正しい演算結果を出力すること」が記載されているといえる。

(エ)前記オより,DTMRシステムの3つの演算回路及び多数決回路は,プログラミング言語であるC言語又はハードウェア記述言語であるVHDLにより実装されることを把握することができる。そして,演算を行う前に,演算回路を実装,すなわち,演算回路を形成しなければならないことは自明である。
そして,前記(ア)ないし(ウ)での検討を踏まえると,甲第2号証には,3つの演算回路の演算結果の検証を行う方法,すなわち,「検証方法」が記載されているといえる。

したがって,上記(ア)ないし(エ)より,甲第2号証には,以下の発明(以下,「引用発明」という。)が記載されているものと認める。

「 複数のブロックの組み合わせを変えることにより,演算機能が変更可能なFPGAにおける検証方法において,
同じ演算機能を持ち,かつ,ブロックの組み合わせが異なる3つの演算回路が形成されること,
3つの演算回路は,それぞれの演算結果を多数決回路に出力し,多数決回路は,誤った演算結果をマスクして正しい演算結果を出力することを特徴とするFPGAの検証方法。」

4.判断
(1)特許法第29条第1項第3号及び同法同条第2項について
本件発明4と引用発明とを対比する。

引用発明の「FPGA」は,構成情報(プログラム)に基づいて再構成可能なデバイスの一種であることは本願の出願時における技術常識であり,かつ,明細書の段落【0016】に「本実施形態では,プログラマブルロジックデバイス(PLD)の一例として,一般的なFPGA10に本発明を適用した場合について説明する。」と記載されていることからしても,本件発明4の「プログラマブルロジックデバイス」に含まれるものである。また,引用発明の「ブロック」は,ハードウェアである「FPGA」を構成する回路であることは自明であるから,本件発明4の「回路ブロック」に相当する。そうすると,引用発明の「複数のブロックの組み合わせを変えることにより,演算機能が変更可能なFPGA」は,本件発明4の「複数の回路ブロックの組み合わせを変えることにより,演算機能が変更可能なプログラマブルロジックデバイス」に相当する。
引用発明の「検証方法」は,3つの演算回路から出力される演算結果を検証するものであり,演算結果のエラーの有無を検証することと等しいから,本件発明4の「エラー検証方法」に相当する。

引用発明の「3つの演算回路」は,本件発明4の「複数の演算回路」に含まれるものである。また,引用発明において,ブロックの組み合わせが異なれば,接続状態,すなわち,ブロック間の接続の状態が何らかの形で異なることは自明である。また,引用発明の「演算回路が形成される」は,本件発明4の「演算回路を,形成する回路形成ステップ」といい得るものである。
よって,引用発明の「同じ演算機能を持ち,かつ,ブロックの組み合わせが異なる3つの演算回路が形成される」ことは,後述する相違点を除いて,本件発明4の「同じ前記演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の前記演算回路を,形成する回路形成ステップ」に相当する。

引用発明において,3つの演算回路は,それぞれが演算を行うことによりそれぞれの演算結果を多数決回路に出力していることは自明である。また,引用発明において,「多数決回路」は,3つの演算回路が出力する演算結果のうち,誤った演算結果をマスクして正しい演算結果を出力しているから,全体としてみれば,3つの演算回路が出力する演算結果のうちどれが正しいかを検証するものであり,本件発明4の「検証回路」に相当する。
よって,引用発明の「3つの演算回路は,それぞれの演算結果を多数決回路に出力し,多数決回路は,誤った演算結果をマスクして正しい演算結果を出力する」は,本件発明4の「各前記演算回路でそれぞれ演算を行う演算ステップと,各前記演算回路からの演算結果を検証回路で検証する検証ステップ」に相当する。

以上より,本件発明4と引用発明とは,以下の点で一致ないし相違する。

[一致点]
「 複数の回路ブロックの組み合わせを変えることにより,演算機能が変更可能なプログラマブルロジックデバイスのエラー検証方法において,
同じ前記演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の前記演算回路を,形成する回路形成ステップと,
各前記演算回路でそれぞれ演算を行う演算ステップと,
各前記演算回路からの演算結果を検証回路で検証する検証ステップと
を有することを特徴とするプログラマブルロジックデバイスのエラー検証方法。」

[相違点]
本件発明4は,「複数の演算回路」が,「ハードウェア記述言語で記述された同一の演算回路記述情報から,前記回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し,前記複数のネットリストから生成した構成情報をプログラマブルロジックデバイスに書き込み,前記複数のネットリストに対応した」ものとなるように形成されるのに対し,引用発明においては,どのように形成されるのかについて具体的に特定していない点。

そして,上記相違点は,本願の出願時における技術常識を参酌しても,当業者にとって自明ないし容易に想到し得るものではなく,当該相違点に係る事項により,本件発明4は,同一の演算回路記述情報から,回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路を確実に形成することができるという顕著な効果を奏するものといえる。
よって,本件発明4は,引用発明と同一ではなく,また,引用発明に基づいて当業者が容易に発明をすることができたものではない。
本件発明4の技術的特徴をすべて有する本件発明5についても同様である。

(2)特許異議申立人の意見について
特許異議申立人 石橋 智子は,平成28年10月5日付けの意見書において,
ア 「訂正後の請求項4に係る発明は,例えば,複数の演算回路が対応する各々の合成パラメータと共に記述された回路全体の演算回路記述情報に対して1度だけ論理合成行う,といった段落【0050】に記載の効果を奏することができない実施形態が含まれます。」と主張し,本件発明4は,特許法第36条第6項第1号に規定する要件を満たしておらず,取り消されるべきである旨,及び,
イ 本件発明4は,甲第2号証及び甲第3号証に記載の発明により当業者が容易に発明をすることができたものであるから,特許法第29条第2項の規定により取り消されるべきものである旨,
主張する。

(ア)主張アについて
本願の課題は,明細書の段落【0006】及び【0008】に記載されているように,「同じ種類の回路ブロックを組み合わせて同じ演算処理を行う複数の演算回路」は,FPGA全体で共通する要因が起因したエラーが生じた場合には,エラーの発生を検知することができない場合がある,ということであり,その課題を解決する手段は,明細書の段落【0010】に記載されているように,「複数の回路ブロックの組み合わせを変えること」である。
そして,訂正後の請求項4に係る発明が,明細書の段落【0023】,【0033】,【0034】,【0049】及び【0050】等に記載した事項を上位概念化したものであって,上記の課題は解決できることは明らかである。よって,訂正後の請求項4に係る発明が,発明の詳細な説明に記載したものではないということはできない。
よって,前記主張アは,採用することができない。

(イ)主張イについて
甲第3号証(中村一博,高木一義,「EDAツールを用いた論理回路設計」,名古屋大学工学部情報工学コース 学生実験用指導書(2012年度・第3.10版,2012年8月29日[最終更新日」)には,次の記載がある。

カ 「1.3.3 論理合成
ハードウェア記述言語で記述した機能を,記憶素子や論理ゲート等の回路素子に置き換え,機能レベルの記述からゲートレベルの記述に変換する。
出力であるゲートレベルの記述は,ネットリストと呼ばれる。論理回路図と等価なテキスト表現であり,実際のゲート等の部品間の接続を記述したものである。
(…中略…)
論理合成においては,回路全体の面積,動作速度,消費電力などのパラメータを設計者がきめ細やかに指定できる。条件を変えて合成することにより,要求を満たす回路が実現可能かどうかを模索する工程が繰り返される。例えば,回路面積の上限を制約条件として,動作速度を最適化するなどの指定をするのが一般的である。(以下省略)」(第3ページ)

キ 「1.3.7 FPGAを用いたプロトタイピング
(…中略…)
FPGAは,設計者がその場でプログラムすることが可能な論理素子であり,多くのものは機能の書き換えを何度も行うことができる。FPGAは,機能を書き換え可能な論理ブロックと,組み換え可能な論理ブロック間の配線から成る。FPGA向けの回路設計では,LSIの設計と同様,ハードウェア記述言語やネットリストを入力とし,各社のFPGAそれぞれに専用のマッピングツールを用いて回路がFPGAの構成データに変換される。(以下省略)」(第4ページ)

ク 「3.3 論理合成径Design Compilerによる論理合成
(…中略…)
3.制約条件の指定 回路の遅延時間や面積(回路規模)の制約を与える。(以下省略)」

ケ 「1.コンパイル 端末上で「quartus_sh --flow compile プロジェクト名」とし,論理合成,FPGAマッピングを行う。コンパイルにより,ストリーム・アウト・ファイル「プロジェクト名.sof」が得られる。
2.ダウンロード DE2ボードの電源をOnした後,端末上で「quartus_pgm プロジェクト名.cdf」とし,FPGAへのダウンロードを行う。(以下省略)」

前記カないしケより,甲第3号証には,以下の発明(以下,「甲3発明」という。)が記載されているものと認める。

「 ハードウェア記述言語で記述した機能から,最適化のための制約条件として,回路全体の面積,動作速度,消費電力などのパラメータを適用して論理合成を行うことにより,ネットリストを生成し,ネットリストから生成した構成データをFPGAにダウンロードして,演算回路を形成すること。」

上記「4.判断」の「(1)特許法第29条第1項第3号及び同法同条第2項について」の項の[相違点]が,甲3発明により当業者が容易に克服し得るかどうかについて検討する。
まず,甲3発明に係る「パラメータ」は,最適化のための制約条件であるから,「回路ブロックの組み合わせに関する条件」ではない。すなわち,甲3発明は,最適化した一の回路を生成することを目的とするものであって,「回路ブロックの組み合わせ」を異ならせる複数の回路を生成することを目的とするものではない。よって,制約条件である「パラメータ」として,複数の異なる「パラメータ」を用いて生成される複数の「ネットリスト」に含まれる「回路ブロックの組み合わせ」が異なるとは限らない。
また,甲第2号証は,上記「3.甲号証の記載」の項の「オ」にあるように,3つの演算回路のうち,「B.組み合わせバージョン」及び「C.FSMバージョン」については,「VHDL」すなわち「ハードウェア記述言語」により記述されることを前提としているものの,「A.ソフトウェアベースバージョン」は,「C言語」により記述されることを前提としている。よって,引用発明は,「ハードウェア記述言語で記述された同一の演算回路記述情報」から複数の異なる回路を生成するという技術思想を欠いている。よって,「ハードウェア記述言語」から「構成データ」を生成する甲3発明を甲第2号証に記載された発明に適用しようとしても,甲第2号証の「B.組み合わせバージョン」及び「C.FSMバージョン」に対しては適用できるものの,「A.ソフトウェアベースバージョン」に対しては適用することができないから,本件発明4を想到することができない。
よって,当業者といえども,引用発明に,甲3発明を適用する動機付けがないか,又は,動機付けがあったとしても,本件発明4に係る前記「相違点」を容易に想到することはできない。
したがって,本件発明4は,甲第2号証及び甲第3号証に記載された発明に基づいて当業者が容易に発明をすることができたものとはいえない。
なお,異議申立てをすることができる期間経過後に提出された甲第4号証は,参酌することはできない。
よって,前記主張イは,採用することができない。

(2)取消理由通知において採用しなかった特許異議申立理由について
特許異議申立人 石橋 智子は,訂正前の特許請求の範囲に関し,特許異議申立書において,請求項1及び4に係る発明は,甲第1号証又は甲第2号証に記載された発明であるから,特許法第29条第1項第3号に該当し,請求項2,3及び5に係る発明は,甲第2号証に記載された発明であるから,特許法第29条第1項第3号に該当し,請求項1ないし5に係る発明は,甲第1号証又は甲第2号証に記載された発明に基づいて当業者が容易に発明をすることができたものであり,請求項6に係る発明は,甲第1号証及び甲第3号証に記載された発明に基づいて又は甲第2号証及び甲第3号証に記載された発明に基づいて当業者が容易に発明することができたものであるから,特許法第29条第2項の規定により取り消されるべきである旨,主張している。
よって,取消理由通知において採用しなかった特許異議申立理由(ただし,訂正により削除された請求項1ないし3に対するものを除く。),すなわち,本件発明4が,甲第1号証に記載された発明であり特許法第29条第1項第3号に該当するかどうか,本件発明4ないし6が,甲第1号証又は甲第1号証及び甲第3号証に記載された発明に基づいて当業者が容易に発明することができたものであるかどうか,さらに,本件発明6が,甲第2号証及び甲第3号証に記載された発明に基づいて当業者が容易に発明することができたものであるかどうかについて,検討する。

ア 甲第1号証を主引例とする特許異議申立理由について
甲第1号証(Rizwan A. Ashraf他,「Design-For-Diversity for Improved Fault-Tolerance of TMR Systems on FPGAs」,2011 International Conference on Reconfigurable Computing and FPGAsの予稿集,p.99-104)には,本件発明4及び5に係る「同じ前記演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の前記演算回路」及び,本件発明6に係る「同じ演算機能を持ち,かつ前記回路ブロックの組み合わせが異なって接続状態が異なり,それぞれ演算結果を検証回路に出力して検証させる複数の演算回路」は,記載されていない。
仮に,記載されていることが自明であるとしても,甲第1号証には,本件発明4及び5に係る「ハードウェア記述言語で記述された同一の演算回路記述情報から,前記回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し,前記複数のネットリストから生成した構成情報をプログラマブルロジックデバイスに書き込み,前記複数のネットリストに対応した,…複数の演算回路を,形成する」こと,及び,本件発明6に係る「前記回路ブロックの組み合わせに関する条件が異なる合成パラメータを順次設定する合成パラメータ設定ステップと,前記合成パラメータ設定ステップで前記合成パラメータが設定されるごとに,前記合成パラメータの下で論理合成を行い,ハードウェア記述言語で記述された同一の演算回路記述情報から複数の演算回路に対応した複数のネットリストを生成する論理合成ステップ」は記載されておらず,本件発明との相違点となる。
そして,前記各本件発明に係る前記各相違点は,前記「(1)特許法第29条第1項第3号及び同法同条第2項について」の項で述べた理由と同様の理由により,甲第3号証に記載された発明をもってしても,当業者が容易に想到することができたものではない。
したがって,本件発明4は,甲第1発明と同一ではなく,本件発明4及び5は,甲第1発明に基づいて当業者が容易に発明をすることができたものではなく,また,本件発明6は,甲第1発明及び甲第3発明に基づいて当業者が容易に発明をすることができたものではない。

イ 甲第2号証を主引例とする特許異議申立理由について
本件発明6は,本件発明4の「ハードウェア記述言語で記述された同一の演算回路記述情報から,前記回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち,かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し」を,「前記回路ブロックの組み合わせに関する条件が異なる合成パラメータを順次設定する合成パラメータ設定ステップと,前記合成パラメータ設定ステップで前記合成パラメータが設定されるごとに,前記合成パラメータの下で論理合成を行い,ハードウェア記述言語で記述された同一の演算回路記述情報から複数の演算回路に対応した複数のネットリストを生成する論理合成ステップ」に限定したものであるから,本件発明4と引用発明との相違点は,本件発明6と引用発明との相違点に含まれることが明らかである。
そして,本件発明4と引用発明との相違点は,甲3発明をもってしても当業者が容易に克服し得たものとはいえない以上,前記相違点を含む本件発明6と引用発明との相違点も,甲3発明をもってしても当業者が容易に克服し得たものとはいえないことは明らかである。
したがって,本件発明6は,甲第2号証及び甲第3号証に記載された発明に基づいて当業者が容易に発明することができたものではない。

以上のとおり,特許異議申立人の主張は,いずれも理由がない。

第4 むすび
以上のとおりであるから,取消理由通知に記載した取消理由及び特許異議申立理由書に記載した特許異議申立理由によっては,本件請求項4ないし6に係る特許を取り消すことはできない。
また,他に請求項4ないし6に係る特許を取り消すべき理由を発見しない。
よって,結論のとおり決定する。
 
発明の名称 (54)【発明の名称】
プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法
【技術分野】
【0001】
本発明は、プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法に関するものである。
【背景技術】
【0002】
近年において、プログラマブルロジックデバイス、特にFPGA(Field Programmable Gate Array)は、制御や通信の分野で多く使われるようになってきた。FPGAは、FPGA内の構成メモリに構成情報をロードすることにより、基本論理ブロック(CLB(Configurable Logic Block)、LE(Logic Element)等とも称される)等の回路ブロックを組み合わせることによって演算回路を形成する。演算回路としては、単純な数値演算を行うものからCPU(Central Processing Unit)に相当する機能を有するものまで様々なものを実現可能である(例えば、特許文献1参照)。
【0003】
FPGAでは、演算機能を実現する1つ1つの演算が回路ブロックに対応しており、当該回路ブロックの組み合わせが変更されることにより様々な演算機能が実現されている。このため、FPGAでは、演算機能の演算数の増大にともなって、演算回路に使用される回路ブロックの数も多くなる。この結果、FPGAでは、回路ブロックの数が多い複雑な演算回路が形成されると、当該演算回路に使用する回路ブロックの数の増加に伴い、演算回路に使用される回路ブロック内のANDゲートやORゲートなどの回路素子の数も多くなる。
【0004】
ここで、これらANDゲートやORゲートなどの回路素子は、大気中の荷電粒子等の影響を受けて誤作動することもある。そして、例えば演算回路に組み込まれた回路素子が誤作動した場合には、当該演算回路の演算結果がエラーとなる。そのため、FPGAでは、演算回路に使用する回路素子の数が多くなると、当該回路素子の数が多くなる分、大気中の荷電粒子等の影響を受ける確率も高くなり、エラーが発生する恐れが高くなるという問題がある。
【0005】
また、上記のようなFPGAでは、例えばFPGAを駆動するクロックの変動や、FPGAの電源の電圧変動、FPGA自体の温度変動に対するロバスト性が、回路ブロック間を接続する配線の状態(接続状態)によって左右されることが知られており、演算回路を構成する回路ブロック間の接続状態によっては、エラーが発生し易くなるという問題もある。
【0006】
そこで、従来では、同じ種類の回路ブロックを組み合わせて同じ演算処理を行う演算回路を2重、3重にFPGA内に設け、このように冗長化された各演算回路で同時に同じ演算を行って、各演算回路の演算結果を比較し、いずれかの演算回路で回路ブロックが誤作動しているか否か、すなわち演算結果にエラーがあるか否かを検証するエラー検証方法を行うことが考えられている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2001-099627号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、従来のエラー検証方法では、同じ種類の回路ブロックを組み合わせて同じ演算処理を行う複数の演算回路で、演算回路を冗長化している。このため、FPGA自体の温度変動や、FPGAの電源の電圧変動、FPGAを駆動するクロックの変動など、FPGA全体で共通する要因(以下、共通要因と呼ぶ)に起因したエラーが生じた場合、FPGAの各演算回路から得られる演算結果にエラーが発生しているにもかかわらず、同じ演算結果が得られてしまい、エラーの発生を検知することができない場合もあるという問題があった。そのため、従来のエラー検証方法では、エラー検知率が十分に高いとはいえなかった。
【0009】
本発明は、上記事情に鑑みてなされたものであり、従来よりもエラー検知率を向上させることができるプログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法を提供することを目的とする。
【課題を解決するための手段】
【0010】(削除)
【0011】
また、本発明は、複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスのエラー検証方法において、ハードウェア記述言語で記述された同一の演算回路記述情報から、回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち、かつ回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し、複数のネットリストから生成した構成情報をプログラマブルロジックデバイスに書き込み、複数のネットリストに対応した、同じ演算機能を持ち、かつ回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路を、形成する回路形成ステップと、各演算回路でそれぞれ演算を行う演算ステップと、各演算回路からの演算結果を検証回路で検証する検証ステップとを有するものである。
【0012】
さらに、本発明は、構成情報にしたがって複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスの回路形成方法において、回路ブロックの組み合わせに関する条件が異なる合成パラメータを順次設定する合成パラメータ設定ステップと、合成パラメータ設定ステップで合成パラメータが設定されるごとに、合成パラメータの下で論理合成を行い、ハードウェア記述言語で記述された同一の演算回路記述情報から複数の演算回路に対応した複数のネットリストを生成する論理合成ステップと、複数のネットリストから構成情報を生成する構成情報生成ステップと、構成情報をプログラマブルロジックデバイスに書き込み、複数のネットリストに対応した同じ演算機能を持ち、かつ前記回路ブロックの組み合わせが異なって接続状態が異なり、それぞれ演算結果を検証回路に出力して検証させる複数の演算回路を前記プログラマブルロジックデバイスに形成する形成ステップとを有するものである。
【発明の効果】
【0013】
本発明のプログラマブルロジックデバイスのエラー検証方法によれば、回路ブロックの組み合わせに応じて、温度変動や電圧変動、クロック変動の共通要因に対する各演算回路での動作状況が異なるため、各演算回路で発生するエラーの発生状態も異なってくることから、従来の単に冗長化した複数の演算回路から得られる演算結果を比較する場合に比べ、各演算回路から得られた演算結果を比較する際に、共通要因に起因したエラーをも検知でき、かくして、従来よりもエラー検知率を向上させることができる。
【0014】
また、本発明のプログラマブルロジックデバイスの回路形成方法によれば、複数のネットリストから生成された構成情報をプログラマブルロジックデバイスに適用することによって、同じ演算機能を持ち、かつ回路ブロックの組み合わせが異なる複数の演算回路をそのプログラマブルロジックデバイスに形成できる。これにより、上述した構成情報が適用されたプログラマブルロジックデバイスでは、回路ブロックの組み合わせに応じて、温度変動や電圧変動、クロック変動の共通要因に対する各演算回路での動作状況が異なるため、各演算回路で発生するエラーの発生状態も異なってくることから、従来の単に冗長化した複数の演算回路から得られる演算結果を比較する場合に比べ、各演算回路から得られた演算結果を比較する際に、共通要因に起因したエラーをも検知でき、かくして、従来よりもエラー検知率を向上させることができる。
【図面の簡単な説明】
【0015】
【図1】 FPGAの概略を示す説明図である。
【図2】 FPGAに形成した回路の構成を示すブロック図である。
【図3】 構成情報生成装置の概略を示すブロック図である。
【図4】 検証例と比較例における動作周波数とエラー発生率との関係を示すグラフである。
【図5】 検証例と比較例における動作周波数とエラー検知率との関係を示すグラフである。
【図6】 検証例と比較例における動作周波数と演算結果の不一致距離との関係を示すグラフである。
【発明を実施するための形態】
【0016】
図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の間を繋ぐ配線リソース(図示省略)が設けられている。
【0017】
基本論理ブロック11は、FPGA10を構成する基本的な回路ブロックであり、CLB(Configurable Logic Block)、ロジックエレメント(Logic Element)、ロジックセル(Logic Cell)等とも称されるものである。基本論理ブロック11は、種々の構成のものがあるが、一般的にはLUT(Lookup table)とレジスタ(フリップフロップ)を基本要素とする複数の基本回路(スライス等と称される場合もある)から構成されている。
【0018】
DSPブロック12は、基本論理ブロック11の組み合わせではなく、乗算や積和演算等の演算を高速に処理するためにハードウェア(ハードマクロ)として予め組み込まれている回路ブロック9であり、DSPスライス12等と称される場合もある。このDSPブロック12は、高速な乗算器と加算器を基本要素として構成されている。ブロックRAM13は、一般的なメモリとして利用可能な回路ブロック9である。ブロックRAM13は、例えば他の回路ブロック9から出力される演算途中のデータを一時的に保持する際に利用される。IOブロック14は、FPGA10の入力機能及び出力機能を提供する回路ブロック9である。PLLブロック15は、回路ブロック9の動作に必要なクロックを発生する。配線リソースは、回路ブロック9同士を接続する配線及び配線上に設けられたパストランジスタで構成されている。
【0019】
構成メモリ16には、構成情報18がロード(書き込み)される。構成情報18は、回路ブロック9の動作や、配線リソースによる回路ブロック9間の接続等を定義するものであり、コンフィギュレーション・データ、ビットストリーム等と称されるものである。FPGA10には、この構成情報18にしたがって、所望する演算回路が形成される。すなわち、FPGA10は、構成情報18にしたがって複数の回路ブロック9の組み合わせが変更され、これにより演算機能が変更可能なデバイスとなっている。
【0020】
FPGA10は、同じ演算機能を持ち、かつ回路ブロック9の組み合わせが異なる複数の演算回路を形成させる構成情報18が構成メモリ16にロードされることにより、当該構成情報18にしたがって、図2に示すように、例えば演算回路L1?L3と検証回路21とが形成される。なお、この例では、3個の演算回路L1?L3の場合について説明するが、演算回路は2個以上あればよい。また、構成情報18は、外部のコンピュータから構成メモリ16にロードしたり、構成情報18が予め書き込まれた不揮発性メモリから自動的にロードしたりしてもよい。
【0021】
図2に示すように、この例におけるFPGA10には、p(p≧1)ビットの入力データX(x1?xp)が入力される。例えば機器(図示省略)の動作を制御する制御システムにFPGA10が設けられ、機器の動作を監視するセンサ(図示省略)からの検出値等が入力データXとしてFPGA10に入力される場合について以下に説明する。なお、入力データXは、1つの値を表すものに限定されない。例えば、複数の検出値をまとめて入力データXとしてもよい、この場合には複数の検出値のビット数の合計がpビットとなる。また、入力データXは、例えばコンピュータ等で生成された1組あるいは複数組の数値、ネットワークを介して受信したデータ、各種機器の駆動を制御するタイミング信号等であってもよい。
【0022】
上述の入力データXは、FPGA10内で演算回路L1?L3にそれぞれ入力される。演算回路L1は、入力データXが入力されると、所定の演算を行って、q(q≧1)ビットの演算結果データV1(v11?v1q)を出力する。演算回路L2、L3についても同じであり、入力データXが入力されると、所定の演算を行って、演算結果データV2(v21?v2q)、V3(v31?v3q)を出力する。
【0023】
演算回路L1?L3は、同じ演算機能を持つが、エラー検知率を向上させるために、回路ブロック9の組み合わせを互いに異なるものにしている。すなわち、演算回路L1?L3は、使用する回路ブロック9の種類や数、回路ブロック9内でのLUTやレジスタの使われ方、これら回路ブロック9の接続状態が演算回路L1?L3では互いに異なったものになっているが、演算回路L1?L3にエラーが発生しない状態では、演算回路L1?L3は、同一の入力データXの入力に応答して同じ演算結果データV1?V3を出力するよう構成されている。
【0024】
上記のように演算回路L1?L3の回路ブロック9の組み合わせを互いに異なるものにすることによって、演算回路L1?L3が同時にエラーを発生させる可能性を低くするとともに、また演算回路L1?L3が同時にエラーを発生させても各演算結果データV1?V3が同じになる可能性を極めて低くしている。
【0025】
例えば、演算回路L1、L3は、組み合わされる複数の回路ブロックの中に少なくとも1つ以上のDSPブロック12が含まれた回路構成を有している。一方、演算回路L2は、DSPブロック12以外の回路ブロック9が組み合わされた回路構成(例えば、LUTを含む基本論理ブロック11を主体とした回路構成)を有している。また、演算回路L1と演算回路L2とは、例えば演算中のデータを保持するメモリ(以下、データ保持メモリ)として、ブロックRAM13を使用するのに対して、演算回路L3は、基本論理ブロック11のフリップフロップを利用したいわゆる分散RAMを使用する回路ブロック9の組み合わせである。このようにして、演算回路L1?L3は、種類の異なる回路ブロック9を用い、相互に回路ブロック9の組み合わせが異なるものになっており、多様性のあるものとなっている。
【0026】
演算回路L1、L3のようにDSPブロック12を使用した場合には、演算回路L2のようにDSPブロック12を使用しない場合に比べて、使用される基本論理ブロック11の個数を大幅に少なくさせることもでき、回路ブロック9間を接続した配線の長さも含め演算回路を形成する回路ブロック11の組み合わせを大きく異ならせることができる。すなわち、演算回路L1、L3と演算回路L2とは、論理的な演算機能は同じであるが、ゲートレベルにおける動作(信号処理の物理的プロセスや、物性レベルの素子内部の振る舞い等)が大きく異なり、FPGA10の温度変動や電圧変動、クロック変動などの共通要因がゲートレベルにおける動作に与える影響も大きく異なってくる。このため、FPGA10では、上記共通要因に対する演算回路L1、L3と演算回路L2とのゲートレベルにおける動作状況が大きく異なるため、エラー発生時の演算結果データの不一致の程度も大きくなることが期待できる。したがって、DSPブロック12の使用の有無によって回路ブロック11の組み合わせを異なったものとすることは、エラーの発生を演算結果データの不一致によって検知する際に非常に有利である。
【0027】
この実施の形態の場合、FPGA10には、複数の回路ブロック9が組み合わされることにより検証回路21が形成されている。演算回路L1?L3は、演算結果データV1?V3を検証回路21に送る。検証回路21は、演算結果データV1?V3を検証し、その検証結果として検証データRを生成する。また、検証回路21は、演算結果データV1?V3のうちエラーがないと推測すると、演算結果データとして出力データY(y1?yq)を生成する。この検証回路21は、検証データRと出力データYとを制御システムのシステムコントローラ(図示省略)に出力する。
【0028】
上記検証回路21は、例えば多数決方式によって出力データYを決定する。すなわち、演算結果データV1?V3の値を比較して一致、不一致を判定し、同じ値となっている演算結果データの個数が最も多い演算結果データを正常値とし、その正常値を出力データYとして出力する。
【0029】
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とが異なるものとなる。
【0030】
さらに、FPGA10は、前述のように演算回路L1?L3を回路ブロックの組み合わせが互いに異なる回路構成とすることによって、温度変動や電圧変動、クロック変動の共通要因でエラーが発生しても、当該共通要因に対する各演算回路L1?L3での動作状況が異なるので、演算回路L1?L3から得られる各演算結果データV1?V3が互いに異なるものとなる。
【0031】
これにより、FPGA10では、演算回路L1?L3から得られる各演算結果データV1?V3が全て一致するときFPGA10にエラーが発生していないと判断でき、一方、演算回路L1?L3から得られる各演算結果データV1?V3が不一致のときFPGA10にエラーが発生していると判断し得る。
【0032】
検証データRは、エラーの発生状況や出力データYの確からしさの判断の指標となる情報である。この例では、検証データRは、演算結果データV1?V3に対応した個別検証データR1?R3を含んでいる。個別検証データR1?R3は、例えば出力データYを正常値としたときに、対応する演算結果データV1?V3の誤りビットの個数、何ビット目が誤りビットになっているか、出力データYに示される値と演算結果データとの差等の情報を有したものとなっている。システムコントローラは、このような個別検証データR1?R3を含む検証データRにより、正常値と不一致となっている演算結果データの個数や不一致の演算結果データ中のビット数、エラーが発生したと推測される演算回路がいずれか、不一致となっている演算結果データの値と正常値との差や、その差の最大値、最小値、幅等の情報を取得できる。
【0033】
図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を生成してもよい。
【0034】
構成情報生成装置24は、論理合成手段24a、合成パラメータ設定手段24b、結合手段24c、及びマッピング手段24dを備えている。例えば、論理合成手段24a、結合手段24c、及びマッピング手段24dは、論理合成ツール等として知られているアプリケーションプログラムをコンピュータにインストールすることで実現される。合成パラメータ設定手段24bは、論理合成ツールの論理合成に関する合成パラメータを変更するように構成されている。合成パラメータは、FPGA10に演算回路L1?L3を形成させる際の条件を指定するものであり、この合成パラメータにより回路ブロック9の組み合わせに関する条件を変えることができる。
【0035】
論理合成手段24aは、回路記述情報26からネットリストを生成する論理合成を行う。ネットリストは、回路ブロック9間を接続する配線等を記述したものである。合成パラメータ設定手段24bは、論理合成手段24aが論理合成する際に、パラメータセットP0?P3を設定する。パラメータセットP0は、検証回路21について回路ブロック9の組み合わせが最適になるように設定された複数の合成パラメータを1セットにしたものである。このパラメータセットP0は、検証回路記述情報26aから検証回路21のネットリストN0を生成する際に使用される。
【0036】
また、パラメータセットP1?P3は、いずれも演算回路記述情報26bを回路ブロック9の組み合わせに具現化する際の複数の合成パラメータを1セットにしたものである。これらパラメータセットP1?P3は、上述のように回路ブロック9の組み合わせが互いに異なる演算回路L1?L3を、同一の演算回路記述情報26bから生成されるようにするために、いくつかの合成パラメータの設定が異なったものになっている。
【0037】
この例においては、パラメータセットP1?P3は、DSPブロック12の使用に関する合成パラメータ(以下、DSPパラメータという)と、データ保持メモリに関する合成パラメータ(以下、メモリパラメータという)とを含んでおり、これらの設定値の組み合わせが互いに異なるものになっている。
【0038】
パラメータセット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を使用する設定値になっている。
【0039】
上記のように合成パラメータ設定手段24bは、演算回路L1?L3についての論理合成の際に、パラメータセットP1?P3を論理合成手段24aに設定することによって、演算回路L1?L3を形成する回路ブロック9(FPGAのリソース)の組み合わせに関する条件を与え、演算回路L1?L3の回路ブロック9の組み合わせを互いに異なるものとして、演算回路L1?L3に多様性を付与する。
【0040】
論理合成手段24aは、合成パラメータセットP0の下で論理合成を行うことによって、検証回路記述情報26aからネットリストN0を生成する。また、論理合成手段24aは、合成パラメータセットP1?P3の下で、演算回路記述情報26bを用いた論理合成をそれぞれ行うことによって、ネットリストN1?N3を生成する。
【0041】
なお、演算回路L1?L3は、回路ブロック9の組み合わせが互いに異なっているため、演算回路L1?L3の相互間で、同じタイミングで入力データXを入力しても、演算結果データV1?V3の出力タイミングが異なる場合がある。このような場合には、検証回路21に対する演算結果データV1?V3の入力タイミングが同時になるように、例えば遅延回路を形成すればよい。
【0042】
結合手段24cは、論理合成手段24aから得られる4個のネットリストN0?N3を1つのネットリストに結合する。この結合の際には、結合手段24cによって、ネットリストN1?N3に示される3組の出力端子を、ネットリストN0の3組の入力端子に接続したネットリストを生成する。
【0043】
マッピング手段24dは、結合手段24cからのネットリストにしたがい、ネットリストに示される接続をFPGA10の回路ブロック9や入出力ピンに割り当てるいわゆるマッピング(配置配線)を行う。このマッピング手段24dは、マッピングした情報を構成情報18としてFPGA10の構成メモリ16に出力する。構成情報18には、検証回路21を形成するための検証回路構成情報C0と、演算回路L1?L3を形成するための演算回路構成情報C1?C3とが含まれる。
【0044】
次に上記構成の作用について説明する。まず、検証回路記述情報26aと、演算回路L1?L3に共通な演算回路記述情報26bとを用意し、これらに基づいて構成情報生成装置24で構成情報18を生成する。例えば、合成パラメータ設定手段24bは、最初に論理合成手段24aにパラメータセットP0を設定する。この後に、論理合成手段24aは、検証回路記述情報26aを読み込み、パラメータセットP0の下で論理合成を行い、検証回路記述情報26aからネットリストN0を生成する。
【0045】
ネットリストN0の生成後、合成パラメータ設定手段24bは、論理合成手段24aにパラメータセットP1を設定する。この後、論理合成手段24aは、演算回路記述情報26bを読み込み、パラメータセットP1の下で論理合成を行って、演算回路記述情報26bからネットリストN1を生成する。このときに、パラメータセットP1のDSPパラメータは、DSPブロック12を最大限使用する設定値であり、メモリパラメータは、データ保持メモリとしてブロックRAM13を使用する設定値になっている。したがって、所定の演算機能を実現させる演算回路記述情報26bは、パラメータセットP1の下で、DSPブロック12を最大限使用し、かつデータ保持メモリとしてブロックRAM13を使用するする回路ブロック9の組み合わせのネットリストN1に変換される。
【0046】
ネットリストN1の生成後、論理合成手段24aには、合成パラメータ設定手段24bによってパラメータセットP2が設定される。この後、論理合成手段24aは、演算回路記述情報26bを読み込み、パラメータセットP2の下で論理合成を行って、この演算回路記述情報26bからネットリストN2を生成する。パラメータセットP2の場合は、DSPパラメータがDSPブロック12を使用しない設定値であり、メモリパラメータがデータ保持メモリとしてブロックRAM13を使用する設定値になっている。したがって、所定の演算機能を実現させる演算回路記述情報26bは、パラメータセットP2の下で、DSPブロック12を使用せず、かつデータ保持メモリとしてブロックRAM13を使用する回路ブロック9の組み合わせのネットリストN2に変換される。
【0047】
さらに、ネットリストN2の生成後、論理合成手段24aには、合成パラメータ設定手段24bによってパラメータセットP3が設定される。この後、論理合成手段24aは、演算回路記述情報26bが論理合成手段24aに読み込み、パラメータセットP3の下、演算回路記述情報26bからネットリストN3を生成する。この場合には、DSPパラメータがDSPブロック12を最大限使用する設定値になっており、メモリパラメータがデータ保持メモリとして分散RAMを使用する設定値になっている。したがって、所定の演算機能を実現させる演算回路記述情報26bは、パラメータセットP3の下、DSPブロック12を最大限使用し、かつデータ保持メモリとして分散RAMを使用する回路ブロック9の組み合わせのネットリストN3に変換される。
【0048】
上記のようにして、ネットリストN0?N3が生成されると、これらネットリストN0?N3が、結合手段24cで結合されて1つのネットリストにされる。続いて、結合手段24cから得られるネットリストは、マッピング手段24dによってマッピングされて、構成情報18として出力される。
【0049】
マッピング手段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の組み合わせになっている。
【0050】
上記のように、構成情報生成装置24では、パラメータセットP1?P3(合成パラメータ)が設定されるごとに、その合成パラメータの下で論理合成を行って、同一の演算回路記述情報26bから演算回路L1?L3に対応したネットリストN1?N3を生成し、そのネットリストN1?N3を用いて、演算回路構成情報C1?C3を含む構成情報18を生成する。これにより、演算機能の同一性を担保しつつ回路ブロック9の組み合わせが異なる複数の演算回路L1?L3の構成情報18を容易に生成することができ、またその構成情報18を適用してFPGA10に演算機能が同一であり、かつ回路ブロック9の組み合わせ異なる演算回路L1?L3を容易に形成できる。
【0051】
上記のように演算回路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に入力する。
【0052】
検証回路21は、上記のようにして演算結果データV1?V3が入力されるごとに演算結果データV1?V3を比較する。そして、検証回路21は、演算結果データV1?V3が全て一致している場合、そのうちのいずれか1つの演算結果データを出力データYとしてシステムコントローラに出力する。また、検証回路21は、演算結果データV1?V3が出力データYとの間で各ビットに相違がなく、同じデータであることを示す個別検証データR1?R3を生成し、これら個別検証データR1?R3を含んだ検証データRもシステムコントローラに出力する。
【0053】
一方、演算結果データ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をシステムコントローラに出力する。
【0054】
なお、演算結果データV1?V3の全てが一致しない場合、検証回路21は、例えば規定値を出力データYとしてシステムコントローラに出力する。また、この場合、検証回路21は、演算結果データV1?V3がいずれもが一致しないこと等を示す個別検証データR1?R3を生成し、これら個別検証データR1?R3を含んだ検証データRをシステムコントローラに出力する。
【0055】
ところで、従来のFPGAでは、同じ演算機能を持ち、かつ同じ回路ブロックの組み合わせで構成された複数の演算回路を形成してエラー検証を行っているため、これら複数の演算回路に共通する温度変動や電圧変動、クロック変動の共通要因に起因して各演算回路にエラーが発生している場合、共通要因に対する各演算回路の動作状況が同じになってしまうので、各演算回路で発生するエラーの発生状態も同じものとなる。このため、従来のFPGAのエラー検証方法では、各演算回路が同じ演算結果データを生成することから、それら演算結果データが全て一致してしまい、エラーが発生したことを検知することが困難であった。
【0056】
しかしながら、本実施形態のFPGA10では、上記のように演算回路L1?L3が同じ演算機能を持つものの、演算回路L1?L3を構成する回路ブロック9の組み合わせが互いに異なっていることから、共通要因に対する各演算回路L1?L3の動作状況が異なり、各演算回路L1?L3で発生するエラーの発生状態も異なるものとなる。これにより、FPGA10では、例えば演算回路L1?L3に共通する共通要因で何らかの理由でエラーが発生しているときでも、演算回路L1?L3が同時に同じ演算結果データV1?V3を生成する可能性が低くなり、演算結果データV1?V3が不一致になる可能性が非常に高くなる。したがって、FPGA10では、演算結果データV1?V3が不一致であるとの検証回路21の判断結果を基にエラーを検知できる。
【0057】
因みに、FPGA10では、共通要因によって、上記のように全ての演算回路L1?L3でエラーが発生することもあれば、演算回路L1?L3を構成する回路ブロック9の組み合わせが互いに異なっていることから、演算回路L1?L3のうちの1つまたは2つの演算回路でエラーが発生し、他の演算回路ではエラーが発生しないこともある。このような場合でも、FPGA10では、演算回路L1?L3が同時に同じ演算結果データV1?V3を生成することがないため、演算結果データV1?V3の不一致が生じ、この結果を基に検証回路21によってエラーを検知できる。
【0058】
演算回路L1?L3でエラーが生じる要因は様々であり、共通要因以外の要因によってもエラーが発生することもある。しかしながら、FPGA10の演算回路L1?L3は、上記のように回路ブロック9の組み合わせが互いに異なっていることから、各演算回路L1?L3が同時にエラーを発生させたとしても、演算回路L1?L3が同時に同じ演算結果データV1?V3を生成する可能性が低くなる。したがって、FPGA10では、演算結果データV1?V3が不一致であるとの検証回路21の判断結果を基にエラーを検知できる。
【0059】
以上のようにして、同じ演算機能を持ち、かつ回路ブロック9の組み合わせが異なる多様性を有する複数の演算回路L1?L3からの演算結果データV1?V3に基づいたエラー検知率は、従来の同じ演算機能を持ち、かつ同じ回路ブロック9の組み合わせた複数の演算回路によって冗長性を持たせた場合よりも高くなる。
【0060】
なお、上述した実施形態においては、3つの演算回路L1?L3を形成した場合について述べたが、本発明はこれに限らず、少なくとも2つ以上の演算回路を形成できれば、その他種々の数の演算回路を形成するようにしてもよい。
【0061】
また、上記に説明した複数の演算回路L1?L3の回路ブロック9の組み合わせが互いに異なるものとするための態様は、一例であり上記のものに限定されない。例えば演算回路が2個の場合には、上記の演算回路L1と演算回路L2との関係のように、DSPブロック12の使用の有無だけが異なるようにしてもよい。また、複数の演算回路L1?L3のそれぞれに使用されるDSPブロック12の個数や、演算回路L1?L3を形成する回路ブロック9の全数に対するDSPブロック12の個数の比率が異なるようにしてもよい。DSPブロック12に限らず、例えば乗算器等の特定のハードマクロの使用の有無、その個数や比率等が異なるようにしてもよい。
【0062】
また、上記実施形態では、検証回路21をFPGA10に形成しているが、FPGA10に検証回路21を形成せずに、FPGA10からは各演算回路L1?L3の演算結果データをそのまま外部の機器に出力するように構成してもよい。この場合、外部の機器において検証回路21と同様な検証を行えばよい。検証回路21において、出力データYを決定する手法は一例である。例えば最も大きな値の演算結果データを出力データYとしてもよい(高値選択)。逆に、小さな値の演算結果データを出力データYとしてもよい(低値選択)。また、各演算結果データの平均値や中間値を出力データYとしたり、一定数例えば過半数を超えた演算結果データの値を出力データYとしたりしてもよい(条件付き多数決)。さらに、各演算結果データの値の分布を算出し、特定の偏差の範囲外を排除したうちの演算結果データから、高値選択、低値選択、平均値、中間値、多数決、条件付き多数決等を行ってもよい。また、出力データYを決定する際に、上記手法を組み合わせてもよい。なお、条件付き多数決の場合に、一定数を超えた演算結果データがない場合には、規定値を出力データYとして出力することができる。
【0063】
また、各演算結果データの対応するビット同士で多数決、条件付き多数決等を行って、選択されたビット値を出力データYのビットに割り当ててもよい。また、各演算結果データの対応するビット同士で多数決、条件付き多数決等を行って得られる基準ビット列を生成し、基準ビット列と各演算結果データのビット列の対応するビット同士を比較し、最も違いの少ない演算結果データを出力データYとしてもよい。
【0064】
[検証]
次に、本発明のFPGA10におけるエラーの検知率の向上について、FPGAのシミュレーションツール(アプリケーションプログラム)により検証試験を行った。この検証試験では、同じ演算機能を持ち、かつ回路ブロック9の組み合わせが互いに異なる2つの演算回路L1、L2をFPGA10に形成したFPGAについてのタイミングシミュレーションを検証例とし、得られた演算結果データV1、V2を基にエラーの検知率について検証した。
【0065】
また、この検証例では、プラント制御装置に搭載され、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社製)を想定してタイミングシミュレーションを行った。
【0066】
検証例における演算回路L1、L2が行う演算は、2つの入力値(整数)を乗算するものである。2つの入力値は、乱数で発生させ、これら2つの入力値を1つの入力データXとして演算回路L1、L2にそれぞれ入力した。また、演算回路L1、L2から得られる演算結果データV1、V2は、それぞれ32ビットとした。
【0067】
ネットリスト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の使用状態を参考に示す。
【0068】
【表1】

【0069】
表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本の信号線が平均何本に分岐しているか)
【0070】
なお、「スライス」は、上述の基本構成ブロックを構成する基本回路であり、LUTとレジスタ(フリップフロップ)を基本要素とするものである。
【0071】
検証試験では、現実の環境におけるエラーの発生状況が、FPGA10の動作周波数が変動した状況に似ているものと仮定した。具体的には、温度変動や電圧変動の各回路ブロック9間における信号の伝搬遅延が発生する状態と同様な状態を、シミュレーション上でFPGA10の動作周波数を変化させることで発生させた。このため、検証例のタイミングシミュレーションでは、動作周波数を160MHzから258MHzまで2MHzずつ変化させ、各動作周波数において、演算回路L1、L2で乗算演算を実行した。
【0072】
各々の動作周波数では、10000個の入力データXを入力し、演算回路L1、L2のそれぞれで10000回の乗算演算を実行した。1個の入力データXに対して演算回路L1、L2から出力される演算結果データV1、V2を、シミュレーションツールとは別のプログラムで取り込み、エラーの発生状況等を検証した。
【0073】
上記の検証例におけるエラー発生率と動作周波数との関係を図4に示す。図4のグラフの横軸は、FPGA10の動作周波数であり、縦軸は、エラー発生率である。入力データXの1回の入力について、演算結果データV1、V2の少なくとも一方が誤った値となったときを1回としてエラー発生回数をカウントし、エラー発生率は、動作周波数ごとの入力データXの入力回数(1万回)に対するエラー発生回数の割合(%)とした。演算結果データV1、V2が誤った値となっているか否かは、別途計算された真値と演算結果データV1、V2とを比較することによって判別した。
【0074】
また、図5には、演算結果データV1、V2が不一致によるエラー検知率を示す。図5のグラフの横軸は、FPGA10の動作周波数であり、縦軸は、エラー検知率である。入力データXの1回の入力について、演算結果データV1、V2が不一致になったときを1回としてエラー検知回数をカウントし、エラー検知率は、動作周波数ごとの入力データXの入力回数(1万回)に対するエラー検知回数の割合(%)とした。なお、図5では、後述する比較例1でエラーを検知した178MHz以上の動作周波数での検証結果について示した。
【0075】
さらに、図6には、演算結果データV1、V2の違いの距離(以下、不一致距離という)を示す。不一致距離(D)は、次の式(1)に示されるように、動作周波数ごとに、32ビットで正規化したエラービットの合計を当該動作周波数におけるエラー検知回数で除したものであり、百分率で示される。この不一致距離は、演算結果データV1、V2の違いが大きいときにその値が大きくなる。
【0076】
【数1】

【0077】
上記式(1)中の値E(i,f)は、動作周波数fにおけるi番目の入力データXについて、演算結果データV1、V2の間で不一致となるビット数である。また、S(f)は、動作周波数fにおけるエラー検知回数である。
【0078】
さらに、この検証試験では、検証例と比較するために、DSPブロック12が最大限使用された演算回路L1を2個形成したFPGAについてのタイミングシミュレーションを比較例1とし、さらに、DSPブロック12以外の回路ブロックを組み合わせた演算回路L2を2個形成したFPGAについてのタイミングシミュレーションを比較例2とした。これら比較例1および比較例2のFPGAにそれぞれ演算回路L1、L2を形成する各構成情報は、検証例と同様にしてそれぞれ生成した。そして、比較例1及び比較例2についても、検証例と同様にシミュレーションツール上にてタイミングシミュレーションを行った。それら比較例1及び比較例2の検証結果についても図4?図6に併せて示す。
【0079】
図4に示すように、DSPブロック12を使用した演算回路L1を2個形成した比較例1では、176MHzよりも上の動作周波数で、エラー発生率がほぼ100%になった。DSPブロック12を使用しない演算回路L2を2個形成した比較例2では、動作周波数が204MHzからエラーが発生し、動作周波数の上昇とともにエラーの発生率が100%に近づくように上昇した。このことから、エラーの発生状況は回路ブロック9の組み合わせによって互いに異なることがわかる。なお、本発明を適用した検証例では、178MHzよりも上の動作周波数でエラー発生率がほぼ100%となり、比較例1と同様なエラーの発生状況となった。
【0080】
上記から比較例1では、178MHz以上の動作周波数のとき、2個の演算回路L1のうち少なくとも一方から出力された演算結果データが誤った値となっていることが分かる。しかしながら、図5に示されるように、比較例1では、178MHz以上のいくつかの動作周波数でエラーを検知しているが、その他の動作周波数ではエラーを検知していない。この理由として、比較例1では、同じ回路ブロック9の組み合わせでなる2個の演算回路L1を用いていることから、2個の演算回路L1でそれぞれ同じエラーが発生してしまい、それぞれ出力される演算結果データが全く同じとなり、その結果、エラーとして検知できないためである。比較例2では、エラー検知率がほぼ100%であるが、218MHzよりも上の動作周波数では、1?2%程度のエラー検知率の低下が見られた。
【0081】
これらに対して本発明による検証例のエラー検知率は、すべての動作周波数において100%となった。すなわち、比較例1及び比較例2のように回路ブロック9の組み合わせが同じ複数の演算回路が冗長化した構成よりも、本発明の検証例のように、回路ブロック9の組み合わせが異なる複数の演算回路L1、L2、すなわち多様性を持った複数の演算回路を形成した構成とすることにより、一段と確実にエラーを検知でき、かくして、エラーの検知率が向上することが確認できた。また、図6に示すように、検証例における不一致距離は、比較例1及び比較例2よりも3倍以上大きいことが確認できた。すなわち、比較例1及び比較例2のように同じ回路構成を有する複数の演算回路によって冗長化した構成を形成するよりも、本発明の検証例のように、互いに回路ブロックの組み合わせが異なる多様性を持った複数の演算回路を形成するほうが、エラーの検知能力が高いことが示された。
【符号の説明】
【0082】
10 FPGA(プログラマブルロジックデバイス)
11 基本論理ブロック
12 DSPブロック
21 検証回路
L1?L3 演算回路
(57)【特許請求の範囲】
【請求項1】
(削除)
【請求項2】
(削除)
【請求項3】
(削除)
【請求項4】
複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスのエラー検証方法において、
ハードウェア記述言語で記述された同一の演算回路記述情報から、前記回路ブロックの組み合わせに関する条件が異なる複数の合成パラメータをそれぞれ適用して論理合成を行うことにより同じ演算機能を持ち、かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の演算回路に対応した複数のネットリストを生成し、前記複数のネットリストから生成した構成情報をプログラマブルロジックデバイスに書き込み、前記複数のネットリストに対応した、同じ前記演算機能を持ち、かつ前記回路ブロックの組み合わせが異なり接続状態が異なる複数の前記演算回路を、形成する回路形成ステップと、
各前記演算回路でそれぞれ演算を行う演算ステップと、
各前記演算回路からの演算結果を検証回路で検証する検証ステップと
を有することを特徴とするプログラマブルロジックデバイスのエラー検証方法。
【請求項5】
前記回路形成ステップは、
前記回路ブロックとしてDSPブロックを含んだ前記回路ブロックの組み合わせでなる前記演算回路を少なくとも1つ形成するとともに、前記DSPブロック以外の前記回路ブロックの組み合わせでなる他の前記演算回路を少なくとも1つ形成することを特徴とする請求項4に記載のプログラマブルロジックデバイスのエラー検証方法。
【請求項6】
構成情報にしたがって複数の回路ブロックの組み合わせを変えることにより、演算機能が変更可能なプログラマブルロジックデバイスの回路形成方法において、
前記回路ブロックの組み合わせに関する条件が異なる合成パラメータを順次設定する合成パラメータ設定ステップと、
前記合成パラメータ設定ステップで前記合成パラメータが設定されるごとに、前記合成パラメータの下で論理合成を行い、ハードウェア記述言語で記述された同一の演算回路記述情報から複数の演算回路に対応した複数のネットリストを生成する論理合成ステップと、
前記複数のネットリストから前記構成情報を生成する構成情報生成ステップと、
前記構成情報をプログラマブルロジックデバイスに書き込み、前記複数のネットリストに対応した同じ前記演算機能を持ち、かつ前記回路ブロックの組み合わせが異なって接続状態が異なり、それぞれ演算結果を検証回路に出力して検証させる複数の演算回路を前記プログラマブルロジックデバイスに形成する形成ステップと
を有することを特徴とするプログラマブルロジックデバイスの回路形成方法。
 
訂正の要旨 審決(決定)の【理由】欄参照。
異議決定日 2016-10-28 
出願番号 特願2015-94970(P2015-94970)
審決分類 P 1 651・ 113- YAA (H03K)
P 1 651・ 121- YAA (H03K)
最終処分 維持  
前審関与審査官 白井 亮  
特許庁審判長 大塚 良平
特許庁審判官 林 毅
中野 浩昌
登録日 2015-09-18 
登録番号 特許第5807887号(P5807887)
権利者 株式会社制御システム研究所
発明の名称 プログラマブルロジックデバイスのエラー検証方法、及びプログラマブルロジックデバイスの回路形成方法  
代理人 今枝 弘充  
代理人 吉田 安子  
代理人 梅村 裕明  
代理人 今枝 弘充  
代理人 梅村 裕明  
代理人 吉田 安子  
代理人 吉田 正義  
代理人 吉田 正義  

プライバシーポリシー   セキュリティーポリシー   運営会社概要   サービスに関しての問い合わせ