図面 (/)

技術 シミュレータ、半導体回路装置の設計支援システムおよび方法

出願人 株式会社日立製作所
発明者 菅野雄介佐圓真鳥羽忠信
出願日 2015年7月14日 (5年7ヶ月経過) 出願番号 2017-528059
公開日 2018年2月15日 (3年0ヶ月経過) 公開番号 WO2017-009956
状態 特許登録済
技術分野 CAD
主要キーワード ビット反転操作 結線変更 連続動作モード 安全度水準 永久故障 危険側故障 各故障モード 配線スイッチ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2018年2月15日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (17)

課題・解決手段

FPGAのCRAMへのソフトエラーの影響を評価するシミュレーション方法に関する。FPGA内部に機能を集積するには、FPGAへ集積したい回路結線情報(ネットリスト)を元に、FPGAの構成メモリ(コンフィギュレーションメモリ:CRAM)へのビット列(ビットストリーム)へ変換することで実現される。その際、FPGAで機能を実現するためのRTLから変換されたネットリストと、FPGAへ格納されるCRAMのデータ列(ビットストリーム)とは、1対1対応しているということを利用し、CRAMの内のビット情報反転(故障注入)を回路マッピング実施する。この事実を用いて、CRAMの各ビットの反転による影響を論理的なシミュレーションにより確認する手段を設けることで課題が解決される。さらに、シミュレーションの結果を、別途ユーザが設定する想定される危険側故障出力の期待値と比較する手段を設ける。

概要

背景

デバイス微細化に伴い、ASIC(application specific integrated circuit)の製造コストが増加し、FPGAでの代替が望まれている。その際、Static Random Access Memory (SRAM)ベースのFPGAでは、ソフトエラーにより論理の構成が変化してしまうファームエラーが問題である。特に交通金融医療等の高信頼性が要求される産業応用に対して、SRAMベースFPGAを活用する上では、高信頼化や高可用化・高安全化の技術が必要とされている。

このような状況の元、FPGAベンダからは、ソフトエラーの耐性向上技術が開発されている(非特許文献1、2)。これらは主に、FPGAのコンフィギュレーションメモリ(CRAM)の記憶内容について、CRC:Cyclic Redundancy Checkを実施するものや、CRAMのエラーを訂正する技術である。

概要

FPGAのCRAMへのソフトエラーの影響を評価するシミュレーション方法に関する。FPGA内部に機能を集積するには、FPGAへ集積したい回路結線情報(ネットリスト)を元に、FPGAの構成メモリ(コンフィギュレーションメモリ:CRAM)へのビット列(ビットストリーム)へ変換することで実現される。その際、FPGAで機能を実現するためのRTLから変換されたネットリストと、FPGAへ格納されるCRAMのデータ列(ビットストリーム)とは、1対1対応しているということを利用し、CRAMの内のビット情報反転(故障注入)を回路マッピング実施する。この事実を用いて、CRAMの各ビットの反転による影響を論理的なシミュレーションにより確認する手段を設けることで課題が解決される。さらに、シミュレーションの結果を、別途ユーザが設定する想定される危険側故障出力の期待値と比較する手段を設ける。

目的

デバイスの微細化に伴い、ASIC(application specific integrated circuit)の製造コストが増加し、FPGAでの代替が望まれている

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

論理回路情報をCRAMによって保持するFPGAについて、想定されるエラーを評価するシミュレータであって、処理装置記憶装置入力装置、および、出力装置を備え、前記記憶装置は、前記FPGAに形成すべき回路結線情報であるネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納し、前記入力装置は、評価対象となる前記ネットリストに対応する前記ビットストリームの入力を受付け、前記処理装置は、エラー挿入ツール期待値比較ツールを備え、前記エラー挿入ツールは、前記入力されたビットストリームに対して変更を加える手段と、前記対応情報を参照し、前記ビットストリームの変更を前記評価対象となるネットリストに反映して故障挿入ネットリストを生成する手段を備え、前記期待値比較ツールは、前記故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する手段と、前記シミュレーションの出力結果を出力期待値と比較する手段を備える、ことを特徴とするシミュレータ。

請求項2

前記出力期待値は、真値および予め設定した危険側故障出力値を含む、ことを特徴とする請求項1記載のシミュレータ。

請求項3

前記期待値比較ツールは、前記シミュレーションごとに、前記危険側故障出力値と一致した出力結果を故障モード一覧リストとして出力する、ことを特徴とする請求項2記載のシミュレータ。

請求項4

危険側故障率計算ツールを備え、前記危険側故障率計算ツールは、前記FPGAの実負荷接続および物理配置データと、前記故障挿入ネットリストと、前記故障モード一覧リストとを入力とし、前記故障挿入ネットリストの故障箇所の物理配置情報を、前記実負荷接続および物理配置データと対応付けることにより特定して故障確率推定し、前記故障モード一覧リストの内容と対応付けて出力することを特徴とする請求項3記載のシミュレータ。

請求項5

前記入力装置は、前記エラー挿入ツールに対して、前記ビットストリームの指定個所の変更またはランダムな変更を指示する手段を有する、請求項1記載のシミュレータ。

請求項6

前記出力手段は、前記対応情報の出力を禁止する機能を備え、シミュレーション結果を表示する際には、前記ネットリストを基に作成した前記FPGAの論理接続状態を示す解析結果情報と、該解析結果情報中の前記ビットストリームに対する変更が影響する部分を特定する情報を表示することを特徴とする、請求項1記載のシミュレータ。

請求項7

論理回路情報を、コンフィギュレーションメモリ(CRAM)と呼ばれる書き換え可能な記憶手段によって保持する、フィールドプログラマブルなLSI(FPGA)の設計支援システムにおいて、処理装置、記憶装置、入力装置、および、出力装置を備え、前記入力装置は、該CRAMに格納する、第一の論理接続情報に対応する第一のビット情報の入力を受付け、前記処理装置は、該第一のビット情報の一部のビット反転書き換えして、第二のビット情報を生成する第1の手段と、該第二のビット情報を、該第一のビット情報と一対一対応している該第一の論理接続情報が変更されたことに対応させて、第二の論理接続情報に変換する第2の手段と、該第二の論理接続情報を用いて論理的および回路的なシミュレーションを実行する第3の手段を有することを特徴とする、半導体回路装置の設計支援システム。

請求項8

前記第3の手段は、該第二の論理接続情報への一乃至複数の入力と、該複数の入力のそれぞれに対応する該シミュレーションの出力結果を、別途定める該入力に対応する出力期待値と比較する手段を持ち、該出力期待値は、該第一の論理接続情報でのシミュレーション時に得られる正しい結果と、該第二のビット情報生成にあたり予め故障原因を想定した1乃至複数の故障時の出力結果とで構成される期待値表として定義されて前記記憶装置に格納され、該出力期待値と比較する手段は、該シミュレーションの出力結果と該出力期待値とで一致検索を実施し、該期待値表に記載のいずれかの期待値と一致する場合には、該入力および該期待値を関連付けて、前記出力手段に故障モード一覧として表示する検証手段を有することを特徴とする、請求項7記載の半導体回路装置の設計支援システム。

請求項9

さらに、該故障モード一覧にて表現された各々の故障に対して、LSIの配線情報、物理的な配置情報、製造プロセス上の欠陥情報、および、その他のLSIの故障計算に必要な情報を元に、各故障モードに対応する故障確率を算出する手段を有する、請求項8記載の半導体回路装置の設計支援システム。

請求項10

論理回路情報をCRAMによって保持するFPGAについて、想定されるエラーを評価する半導体回路装置の設計支援方法であって、処理装置、記憶装置、入力装置、および、出力装置を用い、前記記憶装置は、前記FPGAに形成すべき回路結線情報であるネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納し、前記入力装置は、評価対象となる前記ネットリストに対応する前記ビットストリームの入力を受付け、前記処理装置は、前記入力されたビットストリームに対して変更を加える第1のステップと、前記対応情報を参照し、前記ビットストリームの変更が反映された故障挿入ネットリストを生成する第2のステップと、前記故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する第3のステップと、を実行する半導体回路装置の設計支援方法。

請求項11

さらに、前記シミュレーションの出力結果を出力期待値と比較する第4のステップ、を実行する請求項10記載の半導体回路装置の設計支援方法。

請求項12

前記評価対象となる前記ネットリストと該ネットリストに対応する前記ビットストリームは、前記FPGAで構成される回路の一部分に対応した部分情報であり、前記第1〜第4のステップにおいて、前記部分情報について処理を行う、請求項11記載の半導体回路装置の設計支援方法。

請求項13

前記回路の一部分は、前記FPGAで実現するべき機能に応じて前記FPGAで構成される回路構成を分割した一部分、あるいは、前記機能を実現する上での安全コンセプトに基づいて分割した一部分である、請求項12記載の半導体回路装置の設計支援方法。

請求項14

前記回路の一部分は、前記FPGAで構成される回路構成のうちユーザの使用する論理に関係する回路に係る部分である、請求項12記載の半導体回路装置の設計支援方法。

請求項15

前記回路の一部分は、機能ブロック間の分離をFPGA上で実施する際に、LookUpTable(LUT)の出力に設けられているFlipFlop(FF)の出力部で分離された前記機能ブロック、あるいは、LUTの出力に設けられているFFの出力部、および、スイッチ回路部の出力部とで分離された前記機能ブロック、あるいは、LUTの出力に設けられているFFの出力部、および、スイッチ回路部の出力部とで分離し、そのFF出力部とスイッチ部との間に一乃至複数のLUTおよびFFを設けることで分離された前記機能ブロックである、請求項12記載の半導体回路装置の設計支援方法。

技術分野

0001

本発明はFPGA(field-programmable gate array)にかかり、特に産業用途向けの高信頼・高安全なシステム構築するSRAM(Static Random Access Memory)ベースのFPGA論理実装および評価技術に関する。

背景技術

0002

デバイス微細化に伴い、ASIC(application specific integrated circuit)の製造コストが増加し、FPGAでの代替が望まれている。その際、Static Random Access Memory (SRAM)ベースのFPGAでは、ソフトエラーにより論理の構成が変化してしまうファームエラーが問題である。特に交通金融医療等の高信頼性が要求される産業応用に対して、SRAMベースFPGAを活用する上では、高信頼化や高可用化・高安全化の技術が必要とされている。

0003

このような状況の元、FPGAベンダからは、ソフトエラーの耐性向上技術が開発されている(非特許文献1、2)。これらは主に、FPGAのコンフィギュレーションメモリ(CRAM)の記憶内容について、CRC:Cyclic Redundancy Checkを実施するものや、CRAMのエラーを訂正する技術である。

先行技術

0004

Altera AN-539-2014.12.15 “Test Methodology of Error Detection and Recovery usingCRCin AlteraFPGA Devices”, http://www.altera.com/literature/an/an539.pdf
Soft Error Mitigation Controllerhttp://www.xilinx.com/support/documentation/ip_documentation/sem/v4_1/pg036_sem.pdf
Functional Safety: International Electrotechnical Commission、http://www.iec.ch/functionalsafety/(国際標準IEC61508第二版)

発明が解決しようとする課題

0005

産業用途へ電子部品を適用する例が年々高まり、このような状況に対応すべく、国際標準IEC61508が制定され、2010年に第二版が発行されている(非特許文献3)。この規格書によると、LSIを安全関連系に適用するための方針が記載されている。

0006

重要な指標として、安全度水準(Safety Integrity Level: SIL)、連続動作モードにおける安全機能が危険側へ失敗する平均確率(Average Frequency of a dangerous failure of the safety function :PFH [単位:1/時間])、安全側失敗確率(Safe Failure Fraction :SFF)、ハードウエアフォールトトレラント(HFT)が挙げられる。 SILは4段階にて定義され、最も低いのがSIL1、最も高いのがSIL4である。各SILに応じて、PFHが定義されており、IEC61508の第一章において、
SIL4: 10^-9 ≦ PFH < 10^-8
SIL3: 10^-8 ≦ PFH < 10^-7
SIL2: 10^-7 ≦ PFH < 10^-6
SIL1: 10^-6 ≦ PFH < 10^-5
と定義されている。

0007

本規格書の第2章において、ハードウエア設計に関する指針提示されており、対応するSILレベルに応じて、SFFとHFTの関係が記載されている。例として、SIL3レベルの装置設計の場合を考える。SFF < 60% のときは、ハードウエアの冗長度(HFT)を上げても要求は満たせないが、60% ≦ SFF < 90% であれば、3重化相当(HFT=2)を組み合わせることで、SIL3対応の可能性が示され、90% ≦ SFF < 99% であれば、2重化相当(HFT=1)を組み合わせることで、SIL3対応の可能性が示され、99% ≦ SFF であれば、1重化相当(HFT=0)でも、SIL3対応の可能性が示されている。ただし、HFT=N はN+1多重化相当という定義である。

0008

このように、目標とするSILに対応して、SFFの導出が重要であり、しかも、その値が正確に求められ、しかも、高い値であることが確認できれば、ハードウエア多重度を低くすることができ、低コスト化につながる。

0009

FPGAをこのような安全性の高い装置へ適用するに当たり課題に直面する。特に、FPGAはLSIで実現させたい機能をコンフィギュレーションメモリ(以後CRAMと呼ぶ)に集積するが、一般に、FPGAは供給ベンダが内部構造の詳細を秘匿としながらユーザに提供されるため、詳細な実装の構造をユーザ側で判断することが困難である。そのため、SFFの計算自体が非常に難しい。

0010

しかも、SRAM型のCRAMは、不揮発素子型のCRAMと異なりソフトエラー頻度が非常に多いという特徴がある。近年、ソフトエラーに対する安全性の影響評価が重要視されるようになり、SRAM型FPGA各ベンダにより、様々なソフトエラーの耐性向上技術が開発されユーザへ提供されるようになってきた。しかしながら、我々の検討の結果、CRAMのソフトエラー率を低減するだけでは、安全規格対応への適応が困難であるとの結論に至った。

0011

具体的には、CRAMのソフトエラーの発生状態をユーザが記述した論理的接続状況と関連させて把握し、その故障率および、その発生した故障が危険側であるか安全側であるか、また、その故障は診断機能で検出できるか否かを算出することが必要になる。FPGAを高安全対応のアプリケーションに適用するためには、構成回路の安全性に対する評価を定量的に実施しなくてはならない。しかしながら、現状は、コンフィグレーションメモリのソフトエラーについて、その影響について定量評価することが困難である。

課題を解決するための手段

0012

本発明の一側面は、論理回路情報をCRAMによって保持するFPGAについて、想定されるエラーを評価するシミュレータである。当該シミュレータは、処理装置記憶装置入力装置、および、出力装置を備えた情報処理装置で構成することができる。記憶装置は、FPGAに形成すべき回路結線情報であるネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納しておく。入力装置は、評価対象となるネットリストに対応するビットストリームの入力を受付ける。処理装置は、エラー挿入ツール期待値比較ツールを備える。エラー挿入ツールは、入力されたビットストリームに対して変更を加える手段と、対応情報を参照し、ビットストリームの変更を前記評価対象となるネットリストに反映して故障挿入ネットリストを生成する手段を備える。期待値比較ツールは、故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する手段と、シミュレーションの出力結果を出力期待値と比較する手段を備える。

0013

具体的な例においては、出力期待値は、真値および予め設定した危険側故障出力値を含んでもよい。

0014

他の具体的な例においては、期待値比較ツールは、シミュレーションごとに、危険側故障出力値と一致した出力結果を故障モード一覧リストとして出力する。

0015

他の具体的な例においては、入力装置は、エラー挿入ツールに対して、ビットストリームの指定個所の変更またはランダムな変更を指示する手段を有する。

0016

本発明の他の一側面は、論理回路情報を、コンフィギュレーションメモリ(CRAM)と呼ばれる書き換え可能な記憶手段によって保持する、フィールドプログラマブルなLSI(FPGA)の設計支援システムである。このシステムは、処理装置、記憶装置、入力装置、および、出力装置を備える。入力装置は、CRAMに格納する、第一の論理接続情報に対応する第一のビット情報の入力を受付ける。処理装置は、第一のビット情報の一部のビット反転書き換えして、第二のビット情報を生成する第1の手段と、第二のビット情報を、該第一のビット情報と一対一対応している該第一の論理接続情報が変更されたことに対応させて、第二の論理接続情報に変換する第2の手段と、第二の論理接続情報を用いて論理的および回路的なシミュレーションを実行する第3の手段を有する。

0017

さらに具体的な構成例では、第3の手段は、第二の論理接続情報への一乃至複数の入力と、複数の入力のそれぞれに対応するシミュレーションの出力結果を、別途定める該入力に対応する出力期待値と比較する手段を持つ。出力期待値は、第一の論理接続情報でのシミュレーション時に得られる正しい結果と、第二のビット情報生成にあたり予め故障原因を想定した1乃至複数の故障時の出力結果とで構成される期待値表として定義されて記憶装置に格納されている。出力期待値と比較する手段は、シミュレーションの出力結果と該出力期待値とで一致検索を実施し、該期待値表に記載のいずれかの期待値と一致する場合には、入力および期待値を関連付けて、出力手段に故障モード一覧として表示する検証手段を有する。

0018

本発明のさらに他の一側面は、論理回路情報をCRAMによって保持するFPGAについて、想定されるエラーを評価する半導体回路装置設計支援方法であって、処理装置、記憶装置、入力装置、および、出力装置を用いる方法である。記憶装置は、FPGAに形成すべき回路結線情報であるネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納する。入力装置は、評価対象となるネットリストに対応する前記ビットストリームの入力を受付ける。前記処理装置は、入力されたビットストリームに対して変更を加える第1のステップと、対応情報を参照し、ビットストリームの変更が反映された故障挿入ネットリストを生成する第2のステップと、故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する第3のステップと、を実行する。

0019

本発明のさらに具体的な構成では、シミュレーションの出力結果を出力期待値と比較する第4のステップを実行する。

発明の効果

0020

FPGA設計における高効率なCRAMエラーインジェクション評価方法を提供することができる。

図面の簡単な説明

0021

本願実施例のツールおよびデータの関係を示す論理ブロック図。
(A)LUTの構成および真理値表の関係、(B)一例として設計した論理回路例、(C)故障挿入シミュレーション時に変更された論理回路例の概念図。
エラー挿入によるCRAMビットへの故障注入から論理接続情報(ネットリスト)への変換を示す流れ図。
エラー挿入後の期待値評価の方法を示す実施例の論理ブロック図。
設計フローを示す実施例を示す流れ図。
本実施例をIEC61508の設計フローに関連付けた実施例の流れ図。
階層設計および設計データの階層化を説明する概念図。
FPGAチップに機能を集積する概念図。
図8記載の分離部分の実施例を示す概念図。
CRAMのビット構成およびエラーインジェクションを説明する概念図。
実施例でのGUI(Graphic User Interface)の一実施例を示す平面図。
GUI上で表現する回路変更情報の実施例。(A)エラーモード、CRAM bit 、エラー箇所のそれぞれを提示する実施例、(B)エラーモードとエラー箇所提示を示す平面図。
配線スイッチ部のCRAM構成を示し永久故障をCRAMソフトエラーで代替表現する実施例概念図。
実施例7のツールおよびデータの関係を示す論理ブロック図。
実施例7の処理フローを示す流れ図。
ネットリストからRTLへの変換方法について説明する概念図。

0022

下図に従い、本発明の実施例について説明を加える。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。

0023

以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。

0024

本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。

0025

図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。

0026

一般にロジックLSIの機能論理の設計は、ターゲットのLSIで実現したい機能の仕様を明確にした後に、その機能を実現するための論理仕様を作成し、論理記述言語(たとえばVerilogHDL(Hardware Description Language) やVHDL)を用いて設計する。この論理回路はRTL(Register Transfer Level)と呼ばれる手法にて記述される。

0027

一般的に、RTLからLSIへの集積は以下の手順で実施される。すなわち、RTLの論理接続情報を実際のLSIに集積されるトランジスタ物理的な配置を考慮していわゆるネットリストへ変換し、さらに、各信号線タイミング制約を考慮して静的タイミング解析シミュレーション(STA)を実施しその配置を最適化した後に、LSIへの集積を実現する。FPGAにおいてもほぼ同様の手続きで実施され、このRTLを設計後、論理合成を実施し、信号線のタイミングを調整しながら、FPGAのCRAMへ格納するデータへの変換を実施する。この変換をCRAMへのマッピングと以後呼ぶ。

0028

CRAMへのマッピングについては、FPGA内部に集積された基本論理回路および配線接続スイッチの構成の物理的な配置を考慮し、論理記述情報から変換されたトランジスタレベル結線情報(ネットリスト)を元に、FPGAの構成メモリ(コンフィギュレーションメモリ:CRAM)のビット列(ビットストリーム)へ変換することで実現される。FPGAのCRAMへこのビットストリームを格納することによって、所望の動作をターゲットとするFPGAで実現できることになる。

0029

ここで重要な点は、RTLからネットリストへの変換、および、そのネットリストを用いた各種シミュレーションは、サーバ等の装置で実施され、最終結果のビットストリームのみがFPGAへ格納され、ユーザが所望する動作が実現されることである。すなわち、FPGAで機能を実現するためのRTLから変換されたネットリストと、FPGAへ格納されるCRAMのデータ列(ビットストリーム)とは、1対1対応しているということである。したがって、CRAMの各ビットは回路へのマッピングは原理的に可能である。その際、FPGAの内部構成を秘匿とするために、CRAMのビットストリームを、暗号化等を施して格納する場合でも、もともとのネットリストとビットストリームとの対応は、必ず一対一対応となる。

0030

この事実を利用すれば、CRAMのビットストリームの一部が変更された情報を、ネットリストへ反映させることは可能である。よって、CRAMの各ビットの反転による影響を論理的なシミュレーションにより確認する手段を設けることで課題が解決される。

0031

さらに、シミュレーションの結果を、別途ユーザが設定する想定される危険側故障出力の期待値と比較することで、エラー状態が危険側となる状態について抜き出すことができるので、考慮すべき危険側のエラーモード種類を隈なく列挙させることが可能になる。

0032

本技術は、回路ネットリストとFPGAのコンフィギュレーションメモリの対応が重要であり、FPGA設計ツールに統合化される形で運用されると望ましい。

0033

以下、具体的に実施例を説明する。

0034

図1を用いて、本願発明の具体的な実施例の全体構成について説明する。本実施例は、FPGA論理実装ツールと、FPGA故障モード評価ツールと、FPGA故障確率計算ツールからなるFPGA設計支援ツールで実現されることが望ましい形態であろう。

0035

具体的なシステム構成は、処理装置、記憶装置、入出力装置を備えたサーバ等のハードウェアを、ソフトウェアによる情報処理で利用する形態とすることができる。

0036

FPGA論理実装ツール(100)は、既存のFPGA論理実装ツールであり、本実施例は、これらの従来知られているツール群に付加される形態になるものと考えられる。そのため、本実施例の特徴的な点は、エラーインジェクション評価ツール(101)を設けることである。

0037

FPGA論理実装ツール(100)は、論理合成ツール(110)および物理配置ツール(111)で構成され、その他、図示しないが、タイミング解析ツールなどを含んで構成される。論理合成ツール(110)は、設計データであるRTLを入力とし、ゲートレベル接続情報である、いわゆるネットリスト(120)を出力する。このネットリスト(120)の生成には、タイミング解析などを経て、所望の動作速度が得られる配置に設計される。このネットリスト(120)は、物理配置ツールにより、FPGA内部のLUTやスイッチの制御をつかさどる、いわゆる構成メモリ(Configuration Memory:CRAM)へ格納するための、ビット列(以降、ビットストリーム(121))へ変換される。

0038

本実施例では、この、ネットリスト(120)およびビットストリーム(121)を利用し、後述するCRAMのビットストリームの一部に対してエラーを恣意的に発生させた際の影響度合いをシミュレーションにより評価する手段を持っていることが特徴である。

0039

エラーインジェクション評価ツール(101)は、CRAMのビットストリームの一部に恣意的なビット反転エラーを発生させるエラー挿入ツール(112)と、その影響を評価するSIM/期待値比較ツール(113)と、危険側故障率計算ツール(114)とで構成される。

0040

エラー挿入ツール(112)は、設計されたネットリスト(120)と、ビットストリーム(121)と、ネットリストvsビットストリーム対応情報(テーブル)(122)とを入力とする。ネットリストvsビットストリーム対応テーブル(122)には、ネットリストとビットストリームの対応が一対一に格納されている。このような情報はFPGAの設計あるいは製造業者が保有しており、ここから提供を受けることができる。シミュレーションの実施者にFPGAの内部接続構造を秘匿したい場合は、対応テーブル(122)は出力についてアクセス制限をかけてブラックボックス化することが好ましい。ネットリストとビットストリームの対応については、後に図2で原理を説明する。

0041

エラー挿入ツール(112)は、ビットストリーム(121)の一部にビット反転操作を実施して、恣意的にエラーを挿入した後、ネットリストvsビットストリーム対応テーブル(122)を利用して、エラー挿入結果をネットリスト(120)に対して変更する。そのネットリスト(120)の変更結果として、ビットストリーム上の故障が反映された、故障挿入ネットリスト(124)が得られる。あるいは、ネットリストvsビットストリーム対応テーブル(122)を利用して、エラーを挿入したビットストリームから、それに対応したネットリストを生成する。

0042

このようなエラー挿入ツール(112)は、FPGAにおいて、配線断線ショート、あるいはCRAMへの放射線の影響等を模擬することができる。想定する故障の状況に応じて、エラー挿入の方式を変えてもよい。

0043

SIM/期待値比較ツール(113)は、エラー挿入ツール(112)が生成した故障挿入ネットリスト(124)と、エラー挿入の影響をユーザが評価するために作成したSIM入力(131)とを用いて論理的なシミュレーションを実施した際の出力結果を、ユーザが定義する出力期待値(132)と比較することで故障モードを評価するツールである。

0044

出力期待値(132)は図4で後述するように、ある入力に対する、エラーの発生していない状態の演算結果としての真値と、エラーが発生した際の複数の危険側故障値により構成されている。SIM/期待値比較ツール(113)は、故障挿入ネットリスト(124)とSIM入力(131)を用いて、故障挿入された状態のシミュレーションが実施可能である。

0045

このシミュレーション自体は、既存の論理的なシミュレーションの手法を活用して実施することができ、シミュレーション結果としての動作波形図を出力することができる。出力結果はデータベース(125)に蓄積分析に用いることができる。また、この実施例では、最も興味があることとして、ユーザが想定した出力期待値(132)の中の、危険側故障のいずれかに一致するかの判定を作成することによるエラー挿入の影響評価が実施できることである。

0046

ユーザとして確認したいことは、エラーの挿入によりそのエラーが重篤な状況を引き起こすかどうか、および、その故障が想定していた、いずれの故障モードに該当するのかを確認することでもあるので、サマリが作成される機能は有用である。

0047

また、この期待値比較は、ネットリストの詳細情報を開示困難な形とする場合でも、確認が容易な評価手法になる。したがって、本実施例では、その評価の結果として、ソフトエラー挿入によって引き起こされる故障モード一覧リスト(126)を出力することが特徴である。

0048

故障モード一覧リスト(126)には、対象となる回路(機能ブロック)について、起こりうるエラーが網羅できるので、この結果を表示装置に表示する等して、回路設計に反映することができる。故障モード一覧リスト(126)の最もシンプルな形態は、入力と、その入力に対応して機能ブロックAから出力された出力のうち、危険側故障を示す出力期待値データ(132)と一致した出力のリストである。

0049

この他、故障モード一覧リスト(126)としては、出力期待値(132)の危険側故障値と、それに対応するビットストリーム、ネットリスト、あるいは、当該故障に関する付加情報(例えば故障内容や影響の説明、重要度レベル、故障対応方法故障種別その他)の組合せが考えられる。

0050

あるいは、危険側故障の出力期待値データ(132)を用いず、出力期待値(132)の真値と合致しないすべての出力と、それに対応するビットストリーム、ネットリスト、付加情報の組合せ等を故障モード一覧リストとしてもよい。もっとも、この場合には、重要性の低い故障までリストアップされるデメリットがある。

0051

この段階では、故障確率は求めることはできないが、ソフトエラー挿入によって引き起こされる、想定される故障モードは、原理的にすべて挙げることができるので、故障モードの検証ツールとして活用できる。したがって、このツールだけでも高安全化の検証ができる効果がある。

0052

さらに、本実施例においては、危険側故障率計算ツール(114)を設けている。この危険側故障率計算ツール(114)は、FPGAの物理配置ツールから出力された実負荷接続/物理配置データ(123)と、故障挿入ネットリスト(124)と、FPGA故障モード一覧リスト(126)とを入力し、危険側故障率(127)を出力する。

0053

危険側故障率計算ツール(114)は、故障挿入ネットリストの故障箇所の物理配置情報を実負荷接続/物理配置データ(123)と対応付けることにより特定し、たとえば、配線のマイグレーションによる断線やショートの確率や、配線長スイッチ回路やLUT等の論理回路の使用状況、さらには、FPGAに搭載されるハードワイヤードの回路の故障率を加味して、注目する故障モードにおけるCRAMのソフトエラーによる機能の故障確率を求められることが特徴である。

0054

図1には、特に限定してこなかったが、ひとつのソフトエラー挿入に対して、故障挿入ネットリストがひとつ対応し、複数のSIM入力とその入力に応じた想定される複数の出力期待値とのSIM実行および故障モードを出力しているかのごとく表現した。しかしながら、この評価は、複数のエラーを順次挿入して複数の故障ネットリストを作成し、故障モード一覧リストには、それら各々の複数の故障ネットリストに応じた形で、対応する複数のデータを格納できるように実現してもよい。

0055

次に、本実施例の目的をより明確にするために、具体的なCRAMへのエラー挿入の影響について述べる。ここでは、一例として4入力のルックアップテーブル(LUT)の場合について述べる。4入力のLUTは、周知の通り、入力が4つで出力が1つの論理回路を表現することが可能である。それぞれを、入力I0、I1、I2、I3、出力O1とすると、入力は2^4=16通りの組み合わせが可能である。したがって、16ビットのメモリがあれば、入力I0,I1,I2,I3の値に応じて切り替えることで、ひとつの出力値が決められる。

0056

図2を用いて具体的に示す。図2(A)に示すように、I0〜I3の各入力信号と、出力信号Oとの間に真理値表の関係がある場合、この出力信号との対応がCRAMに入力される。ルックアップテーブルは、図2(A)の右に一例が示されるように、CRAMの出力が、この場合では、4段のトーナメント型のセレクタ列に入力されており、各段のセレクタはここに図示したようにI0〜I3の値によって選択される。この図では、この真理値表の出力Oに相当する欄に記載した、上から下への一連のビット列が、対応するLUT回路を構成するCRAMのビットに対応する。これは、回路構成名前由来でもあるが、いわゆる論理の真理値表と一致しており、CRAMのデータはそのまま出力信号になる。

0057

ここで示したCRAMの入力例を論理回路図で示したものが、図2(B)である。AND回路OR回路にて構成されている。この回路を記述するCRAMのビットは、“0001000100011111”とあらわされる。これは、図2(A)の真理値表の出力O、すなわち、CRAMの値の上から下へのビット列に等しい。

0058

このような対応がある中で、CRAMへのエラーインジェクションを説明する。CRAMのあるビット、この例では、先頭から3ビット目のビットが変化した場合について説明する。ここでは、CRAMのビットは、3ビット目が”0“から”1”へ変更され、結果的にCRAMのビット列が“0011000100011111”に変化させる操作をさす。図2(A)の中で、E.I.(エラーインジェクション)と記載したことに対応する。この状況は回路図で表すと、図2(C)の状態になる。図2(B)の回路と図2(C)の回路は、論理的にまったく異なっている。本実施例では、このように、CRAMの1ビットがソフトエラーによって変更されてしまった際の、回路動作に及ぼす影響を定量的に評価することが目的になる。

0059

図3を用いてエラーインジェクションシミュレーションの実施方法について説明する。まず、ユーザが実現したい機能を反映させた論理接続情報A(ネットリストA)を準備する(S301)。ネットリストAはFPGAで構成したい、目的とする回路であり、本シミュレーションでの評価対象となる。後述するようにこれは、FPGAの一部分の機能を切り出したものでもよい。

0060

次にネットリストAを用いて、CRAMビットストリームAを生成させる(S302)。

0061

その後、このCRAMビットストリームAに対して、一部のCRAMビットを反転させる処理、すなわち、エラーインジェクションを実施してCRAMのビットストリームBを生成する(S303)。後述するように、CRAMビットの反転個所は目的に応じて選択することができる。

0062

その後、このCRAMビットストリームBに対応する論理接続情報B(ネットリストB)を生成する(S304)。ビットストリームBから論理接続情報Bを生成する際には、既述のようにネットリストとビットストリームの対応が一対一に対応付けられている情報を利用すればよい。エラーインジェクションシミュレーションは、このネットリストBに対してユーザ指定の入力データを用いて実施される。

0063

図4図1を用いて、SIM期待値比較ツール(113)で実行される、エラー挿入後の期待値評価の方法について述べる。ここでは、論理的な接続条件の確認を念頭に置いた設計について述べる。評価対象のブロックを機能ブロックA(401)とする。この機能ブロックAは、設計当初のネットリストAから生成されたビットストリームAで構成されているとする。このビットストリームAに、エラー挿入ツール(112)はエラーインジェクションを、図3で説明した手順で実施する。ここでは、機能ブロックAはすでに、ビットストリームBに変換され、ネットリストもネットリストBに変換されているものとする。ネットリストBにはエラーが含まれているという設定である。この状況で論理的なシミュレーションを実施する。

0064

シミュレーションに当たっては、まず、この機能ブロックをテストするための、入力データの準備が必要になる。ここでは、それがnaビットの入力データビット列(131)で表現されると考える。すなわち、機能ブロックAの入力はna本の入力信号があることになる。評価に当たっては、このnaビットの信号を複数(0〜NTP)準備した、いわゆるテストベクタで構成されている。これは、機能ブロックを検証する上で検証のカバレッジを向上させる目的がある。これらの入力データは図1のSIM入力(131)として準備される。

0065

本実施例では、そのテストベクタのひとつの入力パタンに対して、ネットリストB の状態での機能ブロックAの動作シミュレーションを実施する。ここでは、機能ブロックAの出力はnbビットと仮定する。

0066

このシミュレーションに先立ち、ユーザは、あらかじめ決めておいたデータ、すなわち、機能ブロックにエラーが存在しない状態の出力値(真値)と、エラーが生じた際に危険側になってしまう状況を再現する出力値とを出力期待値データ(132)として準備する。ここでは、誤った動作により誤った信号が出力される場合である。例えばそのような出力を故障時の出力期待値データ(#e0〜#en)として準備する。なお、エラーの内容によっては、そもそも回路として動作せず出力がない場合がある。出力がない場合は、安全側の故障の場合と危険側であるが潜在化した故障の場合とがある。特に後者の割合を定量的に減らすことが機能安全では重要である。本実施例を用いて故障モードを定量的に適切に確認するためには、後述するような機能サブブロックにさらに分割した階層化設計による評価部の最適化や、適切な内部状態診断回路を設けることで、潜在故障を効率的に検出できるようにすると、より効果がある。

0067

このシミュレーションでは、一例としてシミュレーションの結果の値と上記データとを出力期待値比較手段(402)で比較する。その結果、危険側故障となる場合(危険側故障)を抽出し、その危険側故障に一致する場合をまとめて、危険側故障モード一覧リスト(126)として出力する機能を有している。出力結果としての危険側故障は、#e0、#e1、・・・、#en、と n+1 通りのパタンで構成されてもよい。出力としてのデータは、入力パタン番号(#I0〜#NNTP)に対応する入力と、その入力パタン番号に対応したシミュレーション結果に対応する出力結果との期待値比較評価をまとめることができればよい。

0068

入力テストベクタが複数の入力パタン数NTPで構成されている場合は、各々について実施する。また、テスト用の入力テストベクタは、総当り(2^(na))である必要はなく、あらかじめ、安全コンセプト等で検討した危険側の可能性をあぶりだす最小限の構成で実施することも可能である。

0069

ブロックAへの入力信号本数の増減などの、機能ブロックAの動作を検証するための、通常の論理シミュレーションでは想定外の入力は、別に検証するように切り分けると都合がよい。たとえば、ブロックAの前段の故障として対応するように、問題を切り分ける。機能ブロックAの可能な入力種を制限することで、検査項目数の増大を防ぐことができる。

0070

また、別の実施の形態としては、出力信号のみの比較にとどまらず、機能ブロックの内部ネット情報に対する期待値比較も可能である。上述したように、危険側の潜在障を定量的に減らす上で、階層化設計による評価部の最適化や、適切な内部状態の診断回路を設けることが効果的であるが、本実施例は実機評価ではなくシミュレーション評価もできることが特長であるので、内部の全信号の結線について、原理的にすべてのノードの指定して信号線の遷移動作を確認することが可能である。したがって、ツール内に内部信号遷移モニタする機能や、より効果的に故障状態を検出するためのツール上に存在させる診断回路(比較器等の機能を有した情報処理)を設けることで、より効果的な検証が可能になる。いずれの場合でも、このシミュレーションを実施するために必要な、ツールが使用可能な計算機メモリ格納領域を計算機およびツール内に設け、このメモリ内でデータを蓄積し、比較評価を実施すればよい。

0071

さらに、このような評価においては、FPGAの実機が不要であるので、いわゆるクラウドでも評価が可能である。そのように実施することで、計算資源ふんだんに活用できるので、処理の高速化が可能である。その場合、FPGAに接続する計算機へ、設計完了後にFPGAのCRAMにロードするためのビットストリームデータダウンロードし、その計算機からFPGAへデータ転送すればよい。

0072

なお、この機能ブロックAは、後述する機能サブブロックとして扱うことも可能である。機能ブロックを細分化させることで、検討するテストパタン数を削減できる効果がある。

0073

図5で、設計フローについて説明する。エラーインジェクションを想定した設計フローの一実施例である。まず、FPGAで実現させたい論理仕様を策定する(501)。FPGAへ搭載する論理は、安全性を考慮して、安全系機能ブロックと安全非関連機能ブロック等に分類して設計される(502)。各機能ブロックは、さらにサブブロックへ分割されて設計される場合もある(503)。安全関連系については、必要に応じて診断機能を追加する(504)。一連の検討が進んだ後、論理設計が実施される(505)。論理設計が完了した段階で、論理検証(506)が実施される。その後、ゲートレベルのネットリストが生成され(507)、タイミング検証が実施され(508)、タイミング違反クリティカルでないことを確認してCRAMのビットデータが生成される(509)。本実施例は、CRAMのビットデータが生成された後に、エラーインジェクションシミュレーションによる検証(510)を実施する。

0074

エラーインジェクションシミュレーションにおいては、検証すべきネットリストと該ネットリストに対応するビットストリームの入力を受付ける際に、それらのデータは上記のようにブロックあるいはサブブロック化されている。すなわち、シミュレーションは、FPGAで実現するべき機能に応じて分割され、あるいは、それらの機能を実現する上での安全コンセプトに基づいて分割されたデータにより実行される。

0075

図6は、IEC61508で規定されている設計フローに本実施例を組み込む例を示している。IEC61508では、設計・検証のフロー図5に示すようなV字型のフローで設計することを規定している。すなわち、テスト仕様(S600)と並行し、設計のフェーズと検証のフェーズに分けて実施される。

0076

まず設計フェーズであるが、FPGAの要件仕様を確定(S601)後、FPGAへ集積する回路アーキテクチャの仕様を決定する(S602)。その後、論理モジュール機能設計(S603)と集積設計(S604)を実施し、論理合成を実施する(S605)。合成された論理について、FPGA上にマッピングするために、配置配線の合成を実施する(S606)。

0077

一方、検証のフェーズは、まず、配置配線の合成結果を用いて、各種信号線のタイミング制約の検証を実施する(S607)。その後、ゲートレベルのネットリストを用いて、実際の負荷を想定したシミュレーションを実施する(S608)。その後、FPGAのCRAMへ格納するビットストリームに変換する(S609)。

0078

本実施例では、この段階で、CRAMに発生するエラーの状況をエラーインジェクションシミュレーション(S610)により実施し、検証する。最後に、FPGA集積の要件仕様と照らし合わせて、妥当性の確認を実施する(S611)。

0079

図7を用いて本願発明の別の実施例を説明する。この実施例は、安全関連系の機能ブロックを階層化して設計する際の実施例となる。上記の実施例では、サブブロックへの分割を想定していたものの、それらのサブブロックを個別に設計する詳細について述べていなかった。本実施例では、サブブロックの階層での独立的な設計を念頭に置いた実施例となる。

0080

安全関連系全体機能ブロックを設計する際、それらを設計上の機能や運用管理上の診断回路の付加を考慮して、適切なブロックに分けて設計することが望ましい場合がある。このような状況に対応するために、安全関連系全体機能ブロックを機能サブブロックに分割し、それぞれに対して診断機能(回路)を追加する。この診断回路としては、ロックステップ対応や、パリティ付加ECC付加等の診断手法を講じればよい。この際、これらの診断機能つきの機能サブブロックを、それぞれ独立性を保ちながら機能サブブロックネットリストを生成する。独立性を保つということは、たとえば、診断つきの機能ブロックA‘を実装する部分に、診断つきの機能ブロックB’の回路の一部が実装時含めて混在しないようにすることを指す。

0081

機能サブブロックのネットリストは、それぞれ、機能サブブロックのビットストリームに変換されて、エラーインジェクション評価が各機能サブブロック単位で実施できることが特徴である。

0082

図8に、図7の方法で設計した、FPGA801の機能サブブロックA’802、 機能サブブロックB’803、 機能サブブロックC’804のFPGA実装の一実施形態を、示す。機能サブブロックA’、 機能サブブロックB’、 機能サブブロックC’間は物理的にも分離されている。

0083

また、各機能ブロックは、用途機能に応じて大きなブロックに分割されている。例えば、重要部分805と非重要部分806である。このように区分することにより、重要部分805のブロックのみをシミュレーション対象とすることが容易となる。また、これらの機能ブロック間は分離部分807で分離されている。具体的な、分離方法としては、図9に示すような分離方法が考えられる。

0084

図9Aは、機能サブブロックLと機能サブブロックRとの物理的分離を示す一実施形態である。機能サブブロック間の分離をフリップフロップFF出口(出力)で設定することが特徴である。機能サブブロックLにここに図示したLUTとFFが含まれ、スイッチおよび配線は機能サブブロックRに属する。このようにすると、機能ブロックの出力値の評価として、FFのデータで比較ができることになるので、検証の際の比較が容易になる。

0085

図9Bは、図9Aと同様に、機能サブブロックからの出力部であるFFにて分離する。さらに、スイッチ(SW)部と配線部を別の領域として分離して、LUTの入力からとする中間領域を設けることが特徴になる。これにより、スイッチSW部分は、別途、LSI設計時のレイアウト情報、回路結線情報(スケマティク)、結線の確認手段(LVS)等の技術を活用することにより、SIMと切り離して、CRAMのビット反転の影響を検討することができる。この場合は、シミュレーションによる確認の手間が省けるので、時間的な効率が上がる効果がある。このときの、確認方法としては、機能ブロック間の相互接続が発生するか、誤接続先オープンドライバドライブされているかは結線情報でわかるので、入力テストベクタを考える規模が小さくできる。

0086

図9Cは、図9A、図9Bと同様に、機能サブブロックからの出力でFFにての分離とともに、図9Bと同様にスイッチ(SW)部と機能サブブロックRのLUT入力部を分離し中間領域を構成する際、その中間領域内に、さらに、LUTやFFを含むことが特徴になる。このLUTやFFは複数段で構成されてもよい。これにより、明らかに、機能サブブロックLと機能サブブロックRの分離領域について、自由度が持たせられる構成ができるとともに、この中間部分に対する検証を実施することで、検証の効率が向上する。

0087

以上のように、機能ブロック間の分離をFPGA上で実施する際に、Look Up Table(LUT)の出力に設けられているFlip Flop(FF)の出力部で分離することは有効な手法である。

0088

図10は、CRAMのビット列を概念的に示したものである。CRAMのビットストリーム1001は、FPGA内のCRAMへ格納するためのビットの列によって表現される。本実施例のエラーインジェクションシミュレーションは、FPGAのCRAMの任意の位置に、エラー発生のシミュレーションが可能である。ただし、実際の評価に当たっては、ユーザが使用している領域に限って検証できればよい。したがって、FPGAの設計上、ユーザが使用していないビットが明らかになる場合は、エラーインジェクションによりシミュレーションを実施する上では、ユーザの使用ビットにのみエラーを発生させて評価することが効果的である。

0089

図10では、xと記載された位置1102にエラーが発生した(ビットが反転している)という想定であり、この条件は、危険側故障の対応したエラーモードe#mに対応していることが紐付けられるようになっている。

0090

なお、FPGA回路では、集積されているすべてのLUTやスイッチがユーザで使用されているとは限らず、一部はユーザが使用していない非使用ビットになっている。エラーインジェクションを効率的に実施するために、CRAMのビットに対して、ユーザ回路に影響を与える重要ビットとユーザ回路に影響を与えない非重要ビットに分類すると効果的である。この図にはその状況も説明している。

0091

この図に示す非重要ビットは、実際にユーザ回路に割り当てられていない非使用ビットとともに、実際にはユーザは使用していないが、ユーザ回路が使用する論理と直接的あるいは間接的に関連性が高い未使用のLUTおよびスイッチを除いた回路部分として定義される。また、重要ビットとは、ユーザが使用しているCRAMビットとともに、ユーザ回路に関連性の高いLUTおよびSWに関するCRAMビットで構成される。本実施例では、ユーザが使用しているCRAMのビットについてソフトエラーが発生した際にその影響を調べることが重要であるので、ユーザ使用ビットに関連する、重要ビットにのみエラーを発生させて、その影響を検証することが検証効率化の観点で重要になる。

0092

図11は本願発明の実施の形態としての、設計ツールのGUIに関する実施例である。解析結果を回路に実装する実装ボタン1001と、CRAMのエラーインジェクションを実施するための、エラー挿入ボタン1102と、そのエラー挿入の状態でのシミュレーションを実行するためのボタン1103と、ユーザが指定した故障モードとの比較を実施する解析ボタン1104とを備えている。このボタンは、機械的なボタンであっても、電磁的画像表示装置にて表現された、アプリケーションソフトウエアで示される選択項目の形であってもよい。

0093

挿入するエラーはビットストリームの任意のビットを変更する方法が考えられる。また、任意の回数ランダムにビットを変更する方法でもよい。

0094

さらに、この評価に際しては、回路図1105や、FPGAへの実装状態図1106、論理的なシミュレーションの出力結果(波形図)1107、および、解析サマリ1108が表示されることが望ましい。解析サマリ1108には、先に述べた危険側故障モード一覧リスト126に基づいた内容が表示される。

0095

図12には解析結果表示例を示す。回路の変更の影響を示すものとしては、図12(A)の解析結果表示例1に示すように、エラーモードe#mや、CRAMのビット情報の変化と回路変化の状態を示せるようになっていることが考えられる。この例では、図2に記載の例で説明している。このようにすることで、CRAMのビットストリームに挿入した、エラーの影響について、回路の変更の影響がわかるので、解析が容易になる。

0096

また、別の実施例では、図12(B)の解析結果表示例2に示すように、エラーモードe#mと、CRAMのエラーインジェクションの結果のエラー箇所のみを表示することでも可能である。ここでe#mはユーザ指定の危険側故障モードである。FPGAの内部接続構造を秘匿としたい場合は、CRAMのビット反転の情報は使用者に開示しないように構成してもよい。この場合、CRAMのビット反転の情報と回路変更の情報を直接対応付けることが困難になるので、その場合は、エラー箇所とユーザが指定した危険側の故障モードや、故障モードに含まれる付加情報がわかる形で表示すればよい。

0097

FPGAの内部構造を秘匿とするために、物理的なCRAMのビット情報と回路接続情報を対応付けたくない場合は、CRAMの物理的な配置を、ユーザに開示するために、便宜的に、1対1対応変換を実施したビット列を用いて、そのビット列でのエラー挿入と、故障回路の対応を示すことでもよい。つまり、CRAMのビット列をユーザに開示可能なビット列に変換することで、FPGA内部構造を秘匿としながら、図12の解析結果表示例1に示すような、エラーの表示および評価が実施できる。

0098

これは、危険側故障のモードが過不足無くユーザ設計者が確認できることが重要であるため、FPGA内のCRAMの全体にエラーが挿入されて、それが回路にどう反映するかが定量的に見出せればよいからである。本実施例によれば、FPGAのチップ内の詳細な構造は開示することは必要ない。

0099

ユーザがFPGAを使用するに際して、想定するエラーを確認するために、使用するCRAMの全ビットに対して反転操作が可能なことと、その結果の論理接続情報への変換後のSIMおよび変更箇所の提示等ができることが重要である。

0100

これまで、FPGAのCRAMのソフトエラーの影響の評価を主に述べてきたが、LSI設計に当たっては、LSIのハード的な故障、いわゆる、永久故障についても評価できることが望ましい。FPGAであれば、配線部分をプログラマブルにできるので、永久故障の一部をソフトエラーとして代替表現できれば、その永久故障の影響をあらかじめ評価することができる。

0101

図13は、その一例である。FPGAは、平面内に配置された回路ブロックを結ぶために、単純な例では、縦方向(この図では、N、S方向)および横方向(この図ではE,W方向)への2つの方向の結線を自由に接続するために、6つのスイッチ(ここでは、N型MOSFETで表現した)であらわされる。

0102

たとえば、E,W方向の接続を表現するためには、接続時は図13の(A)に示したように、CB0=“0”、CB1=“0”、CB2=“1”、CB3=“−”、CB4=“0”、CB5=“0”とすればよい。ここで、“−”は“0” か“1”のいずれでもよいということを示している。一方で、非接続時は図13の(B)に示したように、CB0=“0”、CB1=“0”、CB2=“0”、CB3=“−”、CB4=“0”、CB5=“0”とすればよい。

0103

これは、配線W-Eに対してマイグレーション等による接続と非接続の影響を、CRAMのビット反転で表現できることになり、エラーモードの影響をシミュレーションで確認できることになる。このような方法で、安全確保上、必要な配線や素子の故障の影響があらかじめシミュレーションで確認できるようになると、安全性を確保するためのさまざまな回路的な工夫に対する評価が定量的にできるようになり、安全用途へのFPGAの活用機会を増やすことができる。

0104

上記説明した本実施例によれば、FPGAのCRAMのビット反転によるいわゆるソフトエラーの影響を評価するために、挿入したCRAMのビット反転を故障挿入回路ネットリストに変換し、その影響としての故障モード一覧リストを出力することで、想定される故障モードを原理的にすべて挙げられることができるので、故障モードの検証のためのツールとして活用できる。また、故障挿入ネットリストの故障箇所のFPGA上の物理配置情報を実負荷接続/物理配置データと対応付けることにより、配線のマイグレーションによる断線やショートの確率等を加味して、注目する故障モードにおけるCRAMのソフトエラーによる機能の故障確率を求められることできる効果がある。これにより、FPGAを高安全化応用へ適用するための検証が実現できる効果がある。

0105

これにより、安全側故障確率(SFF)が定量的に求められるので、安全性水準を満たすためのハードウエア冗長性を低減することが可能になり、低コスト化に寄与することができる。

0106

実施例中、シミュレーションを実行する構成は、コンピュータのハードウェアをソフトウェアで制御することで実現できる。また、ソフトウエアで構成した機能と同等の機能は、FPGA、ASICなどのハードウエアでも実現できる。そのような態様も本願発明の範囲に含まれる。

0107

実施例1乃至6では、エラーインジェクションを実施後に論理的なシミュレーションを実施する方法について述べた。これは、半導体の設計において、設計した回路の動作を確認するために網羅的に入力信号の切り替えパタンを用意して、すべての動作において所望の動作が実現しているかを確認する、いわゆるダイナミック検証と呼ばれる手法である。

0108

一方で、設計データの接続関係等を数学的なモデルとして捉え数学的な一致検証を実施する、いわゆる、形式検証と呼ばれる手法もある。本実施例では、後者の形式検証へ適用するための実施の形態について述べる。形式検証においては、いわゆるゲートレベルネットリストと呼ばれるLSI内に集積されるトランジスタ等の素子間を物理的に結線するよりも抽象的な、RTLレベルで実施されることが望ましい。

0109

本実施例では、エラーインジェクションの結果のRTLについて形式検証を実施する例について述べる。形式検証を容易化するためには、RTL記述ファイルへのエラーインジェクション結果の反映が必要になる。以下で、エラーインジェクション結果の反映方法について図14を用いて説明する。

0110

図14は実施例7の検証システムのツールおよびデータの関係を示す論理ブロック図である。図1の構成に追加して、RTL処理部(1401)、RTL vsネットリスト対応テーブル(1402)、RTL変換ツール(1403)、SIM/期待値比較および形式検証エラー評価ツール(1404)、故障挿入RTL(1405)、形式検証結果(1406)、アサーション記述ファイル(1407)の構成を備える。また、論理合成ツール(110)は後述のように、図1の例に比べて機能が拡張されている。

0111

RTLvsネットリスト対応テーブル(1402)は、論理合成ツール(110)がネットリストを生成する際に、RTLからネットリストへの変換における結線情報等の対応を記述したテーブルである。

0112

RTL変換ツール(1403)は、故障挿入ネットリスト(124)とユーザ定義データであるRTL(130)と、RTL vs ネットリスト対応テーブル(1402)を入力とし、エラー挿入後のRTLを変換・生成するツールである。

0113

SIM/期待値比較および形式検証エラー評価ツール(1404)は、図1のSIM/期待値比較ツール(113)を、形式検証を実施できるように機能拡張したツールである。

0114

故障挿入RTL(1405)は、RTL変換ツール(1403)の出力結果である。形式検証結果(1406)は、SIM/期待値比較および形式検証エラー評価ツール(1404)の出力結果である。また、ユーザ定義データである、アサーション記述ファイル(1407)を有する。
1
ここでは、SIM/期待値比較および形式検証エラー評価ツール(1404)を便宜的に一つのブロックで示したが、このツールは必ずしも、ひとつのツールである必要はなく、SIMツール、期待値比較ツール、形式検証ツール、エラー評価ツールとして複数のツールにて構成される形でも構わない。

0115

図1の実施例と異なり、本実施例では、RTL(130)でのSIMや評価・検証が必要になるので、RTL(130)とネットリスト(120)との紐付けができるような仕組みとして、RTL vs ネットリスト対応テーブル(1402)等が入っている。ネットリスト(120)からRTL(130)への変換に際しては、RTL内の論理記述および端子等を階層的に個々の情報を特定するために、それぞれに固有記号や番号を割り当てる等の処理をRTL情報に追記することが必要になる。これは、後々ネットリストからの変更の際に、変更箇所のみの変換を実施する上で必要な手続きを効率化するためである。このような付加情報の抽出およびRTL内の記述が完全に一意となるようなリネーム等の処理をRTL処理部(1401)で実施する。

0116

RTL(130)は通常、モジュール単位で設計され、クロックの接続や処理する論理演算の情報が記述される。RTL vsネットリスト対応テーブル(1402)は、モジュール名、論理演算式クロック接続情報等を階層的に保持する機能を持ち、論理合成ツール(110)はRTLのモジュール構成や論理接続情報に対応した一対一対応が容易となるような命名ルール等で対応付けられたネットリスト(120)を生成する。

0117

もちろん、論理合成ツール(110)は、論理圧縮タイミング調整等で全く一対一対応とならない場合もあるが、その場合は、対応する最小の論理単位で対応付ければよい。この最小の論理単位は、RTLのモジュール単位でもよいが、モジュール内をさらに細かい単位に分割してもよい。このように、論理合成の結果、論理圧縮等によりRTLとは一対一対応にならない場合でも、対応する範囲を制限することで、RTL(130)とネットリスト(120)の対応を保持することが可能である。それゆえ、RTL vs ネットリスト対応テーブル(1402)は、論理合成ツール(110)が生成することが望ましい。

0118

RTL記述のモジュールに対して、ネットリスト記述のモジュールが対応している。さらにそのネットリストに対応してCRAMのアドレスマップが対応しているので、CRAMのビット反転操作を実施したアドレスから、変更モジュールを特定し、ネットリストvs (CRAM)ビットストリーム対応テーブル(122)より、結線変更箇所を特定すれば、RTLの変更箇所が特定できることになる。

0119

RTLvsネットリスト対応テーブル(1402)は、エラーインジェクション評価ツール(101)内のRTL変換ツール(1403)に入力される。RTL変換ツール(1403)は、故障挿入ネットリスト(124)からエラーインジェクションにより変更された部分に対応するネットリスト部分をRTLへ変換する機能を持つ。ネットリストは、通常、コメント文の記述が可能である。エラー挿入ツール(112)は、故障ネットリストを生成する際、該当するエラー挿入箇所について、エラー挿入箇所の開始部と終了部をコメント形式で追加して置くことが望ましい。RTL変換ツール(1403)は、入力された故障ネットリストから、上記のコメント文を検索し、エラー挿入箇所を抽出して、その部分のRTLを変更すればよいからである。これにより、必要最小限のデータの変換が実施される。

0120

RTL変換ツール(1403)は、ユーザが設計したRTL(130)と、RTL vsネットリスト対応テーブル(1402)と、故障挿入ネットリスト(124)を入力とし、故障挿入RTL(1405)を出力する。この変換に際しては、ネットリストからの一括変換も可能であるが、エラー挿入箇所のみの変換および、元のRTL(130)からの差分更新型で定義することが望ましい。これにより、たとえば、System Verilog でRTLが記述されていた場合、アサーション記述等が含まれる形で記述されたまま保持されることになるので、エラーインジェクション後の形式検証時の検証効率や工数削減率が高まる効果がある。また、エラーインジェクションの結果であることを明示するために、故障挿入のRTLについて、変更開始箇所および変更終了箇所にコメント文を記述することが望ましい。これにより、変更箇所に、アサーション記述ファイル等を利用して、再検証する際の確認が容易になるばかりでなく、RTLの可読性を向上させる上でも効果がある。

0121

図15は、本実施例を実施する処理フローを示す。図3に記載の変換フローと比較して、RTLレベルの論理接続情報への変換を実施するフローが追加される。これにより、ネットリストからRTLへの変換が実施できることを示している。

0122

本実施例では、FPGAに実装したCRAMの構成情報ビット情報を故意にビット反転させ、その影響を評価する。一般的なFPGAの設計フローと異なり、CRAMビットストリームからネットリストへの変換、および、ネットリストからRTLへの変換手段を有することが特長である。

0123

まず、ユーザが実現したい機能を反映させた回路設計情報(RTLA)を用意する(S1501)。次に、RTL Aから論理合成を経て論理接続情報A(ネットリストA)を生成する(S1502)。回路設計情報(RTL A)はFPGAで構成したい、目的とする回路であり、本評価の対象データとなる。これは、FPGAの一部分の機能を切り出したものでもよい。

0124

次にネットリストAを用いて、CRAMビットストリームAを生成させる(S1503)。その後、このCRAMビットストリームAに対して、一部のCRAMビットを反転させる処理、すなわち、エラーインジェクションを実施してCRAMのビットストリームBを生成する(S1504)。後述するように、CRAMビットの反転個所は目的に応じて選択することができる。

0125

その後、このCRAMビットストリームBに対応する論理接続情報B(ネットリストB)を生成する(S1505)。ビットストリームBから論理接続情報Bを生成する際には、既述のようにネットリストとビットストリームの対応が一対一に対応付けられている情報を利用すればよい。最後に、論理接続情報B(ネットリストB)から回路設計情報(RTLB)を生成する(S1506)。エラーインジェクションの形式検証は、このRTL Bに対してユーザ指定のアサーションデータを用いて実施される。

0126

図16は、ネットリストからRTLへの変換方法について説明する概念図である。図2に記載のCRAMビット反転の影響を評価するという例を用いて、ネットリストからRTLへの変換方法について説明している。RTL Aは図2(B)の回路を記述するVerilogHDLのコードである。図15に記載のフローで、CRAMのビット反転の結果、その影響をネットリストに反映した回路が図2(c)である場合のRTL記述は、図15のRTL Bに記載の記述になる。

0127

エラーインジェクションの結果、ネットリストが変更されるが、その際、新しく生成された素子名およびネット名は、ツールが自動生成したことがわかるように、マーキングを実施(たとえば、識別字xをつけ、素子名はandx01、ネット名はnetx01等)とすると差異が明確化できる。ネットリストからRTLへの変換に際しては、この識別字を頼りに検索し、RTLの対応するモジュールの論理式へ変換を実施すればよい。なお、変更されたRTLは変更開始箇所および変更終了箇所にコメント文を挿入すれば、変更箇所が明確化する。

0128

本実施例では、この変更されたRTLに関して形式検証、たとえば、プロパティ検証を実施する例について説明する。

0129

プロパティ検証の一例としては、RTLAで記述される以下の論理式において、
assign o = (I0 & I1 | I2 & I3) ・・・ 式(1)
式(1)が満たされていることを確認するために、アサーションと呼ばれる記述を実施し、式(1)が成立していることを数学的に確認することが知られている。一例としては、RTL Aについて、式(1)が成立することを確認するために、以下のアサーション記述を実施したとする。
assert property (I0 == 0 & I1 == 0 & I2 == 0 & I3 == 0 |-> o == 0)・・・式 (2)
このように記述すると、式(1)の取りうる条件で、入力I0〜I3のすべてが0の場合に出力oが0になることを、モデル構造から判定し確認と検証することができる。式(1)の場合、上記入力の場合は出力が0になることが検証できる。
一方、エラーインジェクション後のRTLに対しては、論理式が
assign o = (((I0 & I1) | I1) | ~(I2 | I3)) | I2 & I3) ・・・式(3)
となるので、式(2)のプロパティ検証を実施すると、出力oの値が1となるので、式(2)は成立せず、エラーが出力される。

0130

この例では、CRAMへのエラー注入に対してはLUTレベルで発生しているという比較的簡単な回路での説明であるが、より複雑な、モジュール単位もしくは、複数のモジュールにまたがる論理式の変更が生じる場合であっても、また、複数サイクルにわたって影響が伝播する場合であっても、適切なアサーション文の記述ができれば、原理的にエラーの発見は可能である。

0131

安全設計で重要となるのは、危険側潜在故障の確率であり、エラー評価ツールは、この危険側潜在故障のモードを検出することが重要になる。危険側潜在故障は、FPGAへ実装される診断回路では検出できない故障のうち、ゆくゆくは、他の故障と複合化して危険状態に遷移してしまう故障モードである。そのため、考えられる危険側故障モードを再現するようなアサーション記述を実施することで、エラーインジェクションの影響が危険側か安全側かの判定が可能になる。エラーインジェクション評価を形式検証と組み合わせることで、考えられる危険側故障モードの確認が効率化できる効果がある。

0132

<付記>
本願明細書には以下の発明が開示されている。すなわち;
論理回路情報をCRAMによって保持するFPGAについて、想定されるエラーを評価するシミュレータであって、処理装置、記憶装置、入力装置、および、出力装置を備え、
前記記憶装置は、前記FPGAに形成すべき回路設計情報(RTL)と、回路結線情報であるネットリストとの対応情報を格納し、また、ネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納し、
前記入力装置は、評価対象となる前記ネットリストに対応する前記ビットストリームの入力を受付け、
前記処理装置は、エラー挿入ツールと期待値比較ツールと、形式検証評価ツールを備え、
前記エラー挿入ツールは、
前記入力されたビットストリームに対して変更を加える手段と、
前記対応情報を参照し、前記ビットストリームの変更を前記評価対象となるネットリストに反映して故障挿入ネットリストを生成する手段と、
前記故障挿入ネットリストから故障挿入RTLを生成する手段と、
故障挿入RTLへの形式検証評価をするための形式検証評価情報入力手段とを備え、
前記期待値比較ツールは、
前記故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する手段と、
前記シミュレーションの出力結果を出力期待値と比較する手段と、
前記形式検証評価ツールは前記故障挿入RTLに対して形式検証評価情報を用いて形式検証を実施し、その結果を保持する手段を備える
ことを特徴とするシミュレータ、である。

実施例

0133

本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。

0134

FPGA等のエラー評価や設計支援の分野に適用可能である。

0135

FPGA・・・Field Programmable Gate Array、
CRAM・・・Configuration Memory、LUT・・・Look Up Tabel、SEL・・・Selector、SW・・・Switch、FF・・・Flip Flop、GUI…Graphic User Interface、CB…CRAM Bit、

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 東芝エレベータ株式会社の「 BIMシステム、サーバ装置、および方法」が 公開されました。( 2020/12/17)

    【課題】昇降機のBIMモデルに表示不良部が生じるのを抑制する。【解決手段】実施形態のBIMシステムは、第1のBIMパーツに対応する第2のBIMパーツを含み第1のBIMモデルに対応する昇降機の第2のBI... 詳細

  • 学校法人東海大学の「 蓄熱器の設計方法、設計装置及びプログラム」が 公開されました。( 2020/12/17)

    【課題】振動流を利用したエネルギー変換装置が備える蓄熱器の熱効率を最大とする設計支援を行うための設計方法を提供する。【解決手段】エネルギー変換装置の設計方法であって、振動流に関する流体の方程式に基づい... 詳細

  • 三菱電機株式会社の「 設計支援装置および設計支援方法」が 公開されました。( 2020/12/17)

    【課題・解決手段】設計支援装置(1)は、部品表データにおける複数の選定部品を順に適否判定対象部品とし、適否判定対象部品と被部品との部品間関係値を用いて選定部品の適否の判定値を算出する。... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ