JP6363297B2 - Simulator, design support system and method for semiconductor circuit device - Google Patents
Simulator, design support system and method for semiconductor circuit device Download PDFInfo
- Publication number
- JP6363297B2 JP6363297B2 JP2017528059A JP2017528059A JP6363297B2 JP 6363297 B2 JP6363297 B2 JP 6363297B2 JP 2017528059 A JP2017528059 A JP 2017528059A JP 2017528059 A JP2017528059 A JP 2017528059A JP 6363297 B2 JP6363297 B2 JP 6363297B2
- Authority
- JP
- Japan
- Prior art keywords
- output
- information
- fpga
- netlist
- circuit
- 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.)
- Expired - Fee Related
Links
- 238000013461 design Methods 0.000 title claims description 57
- 238000000034 method Methods 0.000 title claims description 39
- 239000004065 semiconductor Substances 0.000 title claims description 13
- 238000003780 insertion Methods 0.000 claims description 65
- 230000037431 insertion Effects 0.000 claims description 65
- 238000004088 simulation Methods 0.000 claims description 62
- 230000006870 function Effects 0.000 claims description 46
- 238000012795 verification Methods 0.000 claims description 46
- 230000008859 change Effects 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 18
- 238000004458 analytical method Methods 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 230000007547 defect Effects 0.000 claims 1
- 238000011156 evaluation Methods 0.000 description 41
- 238000002347 injection Methods 0.000 description 36
- 239000007924 injection Substances 0.000 description 36
- 238000006243 chemical reaction Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 18
- 230000000694 effects Effects 0.000 description 16
- 230000015572 biosynthetic process Effects 0.000 description 11
- 238000003786 synthesis reaction Methods 0.000 description 11
- 238000012360 testing method Methods 0.000 description 10
- 238000000926 separation method Methods 0.000 description 9
- 101000879673 Streptomyces coelicolor Subtilisin inhibitor-like protein 3 Proteins 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 230000010365 information processing Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 101000836873 Homo sapiens Nucleotide exchange factor SIL1 Proteins 0.000 description 2
- 102100027096 Nucleotide exchange factor SIL1 Human genes 0.000 description 2
- 101000880156 Streptomyces cacaoi Subtilisin inhibitor-like protein 1 Proteins 0.000 description 2
- 101000879675 Streptomyces lavendulae Subtilisin inhibitor-like protein 4 Proteins 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101000880160 Streptomyces rochei Subtilisin inhibitor-like protein 2 Proteins 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002405 diagnostic procedure Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012966 insertion method Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Tests Of Electronic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
本発明はFPGA(field-programmable gate array)にかかり、特に産業用途向けの高信頼・高安全なシステムを構築するSRAM(Static Random Access Memory)ベースのFPGA論理実装および評価技術に関する。 The present invention relates to a field-programmable gate array (FPGA), and more particularly to an SRAM (Static Random Access Memory) -based FPGA logic implementation and evaluation technique for constructing a highly reliable and highly secure system for industrial use.
デバイスの微細化に伴い、ASIC(application specific integrated circuit)の製造コストが増加し、FPGAでの代替が望まれている。その際、Static Random Access Memory (SRAM)ベースのFPGAでは、ソフトエラーにより論理の構成が変化してしまうファームエラーが問題である。特に交通、金融、医療等の高信頼性が要求される産業応用に対して、SRAMベースFPGAを活用する上では、高信頼化や高可用化・高安全化の技術が必要とされている。 With the miniaturization of devices, the manufacturing cost of ASIC (application specific integrated circuit) has increased, and FPGA replacement is desired. At that time, in static random access memory (SRAM) -based FPGAs, there is a problem of a firmware error in which the logic configuration changes due to a soft error. In particular, for industrial applications that require high reliability such as transportation, finance, and medical care, in order to utilize SRAM-based FPGAs, high reliability, high availability, and high safety technologies are required.
このような状況の元、FPGAベンダからは、ソフトエラーの耐性向上技術が開発されている(非特許文献1、2)。これらは主に、FPGAのコンフィギュレーションメモリ(CRAM)の記憶内容について、CRC:Cyclic Redundancy Checkを実施するものや、CRAMのエラーを訂正する技術である。
Under such circumstances, an FPGA vendor has developed a technique for improving resistance to soft errors (Non-Patent
産業用途へ電子部品を適用する例が年々高まり、このような状況に対応すべく、国際標準IEC61508が制定され、2010年に第二版が発行されている(非特許文献3)。この規格書によると、LSIを安全関連系に適用するための方針が記載されている。 Examples of applying electronic parts to industrial applications are increasing year by year, and the international standard IEC61508 has been established to deal with such a situation, and the second edition was issued in 2010 (Non-patent Document 3). According to this standard, a policy for applying LSI to safety-related systems is described.
重要な指標として、安全度水準(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
と定義されている。Important indicators include Safety Integrity Level (SIL) and the average probability of failure of the safety function in the continuous operation mode (Average Frequency of a dangerous failure of the safety function: PFH [unit: 1 / hour] ), Safe Failure Fraction (SFF), and Hardware Fault Tolerant (HFT). SIL is defined in four stages, with SIL1 being the lowest and SIL4 being the highest. PFH is defined according to each SIL, and in the first chapter of 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
It is defined as
本規格書の第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 多重化相当という定義である。 Chapter 2 of this standard provides guidelines for hardware design, and describes the relationship between SFF and HFT according to the corresponding SIL level. As an example, consider the case of SIL3 level device design. If SFF <60%, the requirement cannot be met even if the hardware redundancy (HFT) is increased, but if 60% ≤ SFF <90%, the equivalent of triple (HFT = 2) can be combined. If the possibility of SIL3 support is shown and 90% ≤ SFF <99%, combining with duplexing (HFT = 1) shows the possibility of SIL3 support and 99% ≤ SFF For example, the possibility of SIL3 compatibility is shown even in the equivalent of single mode (HFT = 0). However, HFT = N is defined to be equivalent to N + 1 multiplexing.
このように、目標とするSILに対応して、SFFの導出が重要であり、しかも、その値が正確に求められ、しかも、高い値であることが確認できれば、ハードウエア多重度を低くすることができ、低コスト化につながる。 In this way, it is important to derive the SFF corresponding to the target SIL, and if the value is obtained accurately and confirmed to be high, the hardware multiplicity should be lowered. Can lead to cost reduction.
FPGAをこのような安全性の高い装置へ適用するに当たり課題に直面する。特に、FPGAはLSIで実現させたい機能をコンフィギュレーションメモリ(以後CRAMと呼ぶ)に集積するが、一般に、FPGAは供給ベンダが内部構造の詳細を秘匿としながらユーザに提供されるため、詳細な実装の構造をユーザ側で判断することが困難である。そのため、SFFの計算自体が非常に難しい。 We face challenges in applying FPGA to such highly secure devices. In particular, the FPGA integrates the functions that the LSI wants to realize in the configuration memory (hereinafter referred to as CRAM), but in general, the FPGA is provided to the user while the details of the internal structure are kept secret, so detailed implementation It is difficult for the user to judge the structure of Therefore, SFF calculation itself is very difficult.
しかも、SRAM型のCRAMは、不揮発素子型のCRAMと異なりソフトエラー頻度が非常に多いという特徴がある。近年、ソフトエラーに対する安全性の影響評価が重要視されるようになり、SRAM型FPGA各ベンダにより、様々なソフトエラーの耐性向上技術が開発されユーザへ提供されるようになってきた。しかしながら、我々の検討の結果、CRAMのソフトエラー率を低減するだけでは、安全規格対応への適応が困難であるとの結論に至った。 Moreover, the SRAM type CRAM has a feature that the frequency of soft errors is very high, unlike the nonvolatile element type CRAM. In recent years, the importance of evaluating the impact of safety against soft errors has become important, and various types of SRAM error resistance vendors have been developed and provided to users. However, as a result of our study, we have concluded that it is difficult to adapt to safety standards simply by reducing the soft error rate of CRAM.
具体的には、CRAMのソフトエラーの発生状態をユーザが記述した論理的接続状況と関連させて把握し、その故障率および、その発生した故障が危険側であるか安全側であるか、また、その故障は診断機能で検出できるか否かを算出することが必要になる。FPGAを高安全対応のアプリケーションに適用するためには、構成回路の安全性に対する評価を定量的に実施しなくてはならない。しかしながら、現状は、コンフィグレーションメモリのソフトエラーについて、その影響について定量評価することが困難である。 Specifically, the occurrence state of the CRAM soft error is grasped in relation to the logical connection state described by the user, the failure rate, whether the failure that occurred is dangerous or safe, Therefore, it is necessary to calculate whether or not the failure can be detected by the diagnostic function. In order to apply FPGA to high-safety applications, it is necessary to quantitatively evaluate the safety of the constituent circuits. However, at present, it is difficult to quantitatively evaluate the influence of a configuration memory soft error.
本発明の一側面は、論理回路情報をCRAMによって保持するFPGAについて、想定されるエラーを評価するシミュレータである。当該シミュレータは、処理装置、記憶装置、入力装置、および、出力装置を備えた情報処理装置で構成することができる。記憶装置は、FPGAに形成すべき回路結線情報であるネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納しておく。入力装置は、評価対象となるネットリストに対応するビットストリームの入力を受付ける。処理装置は、エラー挿入ツールと期待値比較ツールを備える。エラー挿入ツールは、入力されたビットストリームに対して変更を加える手段と、対応情報を参照し、ビットストリームの変更を前記評価対象となるネットリストに反映して故障挿入ネットリストを生成する手段を備える。期待値比較ツールは、故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する手段と、シミュレーションの出力結果を出力期待値と比較する手段を備える。 One aspect of the present invention is a simulator for evaluating an assumed error in an FPGA that retains logic circuit information in a CRAM. The simulator can be configured by an information processing device including a processing device, a storage device, an input device, and an output device. The storage device stores one-to-one correspondence information between a net list that is circuit connection information to be formed in the FPGA and a bit stream that is a bit string stored in the CRAM. The input device accepts an input of a bitstream corresponding to the netlist to be evaluated. The processing apparatus includes an error insertion tool and an expected value comparison tool. The error insertion tool includes means for changing the input bitstream, and means for referring to the correspondence information and reflecting the change of the bitstream in the netlist to be evaluated to generate a fault insertion netlist. Prepare. The expected value comparison tool includes means for applying a predetermined input to the fault insertion netlist to perform a logical simulation, and means for comparing the simulation output result with the output expected value.
具体的な例においては、出力期待値は、真値および予め設定した危険側故障出力値を含んでもよい。 In a specific example, the expected output value may include a true value and a preset dangerous side failure output value.
他の具体的な例においては、期待値比較ツールは、シミュレーションごとに、危険側故障出力値と一致した出力結果を故障モード一覧リストとして出力する。 In another specific example, the expected value comparison tool outputs an output result that matches the dangerous failure output value as a failure mode list for each simulation.
他の具体的な例においては、入力装置は、エラー挿入ツールに対して、ビットストリームの指定個所の変更またはランダムな変更を指示する手段を有する。 In another specific example, the input device has means for instructing the error insertion tool to change a designated portion of the bitstream or to change it randomly.
本発明の他の一側面は、論理回路情報を、コンフィギュレーションメモリ(CRAM)と呼ばれる書き換え可能な記憶手段によって保持する、フィールドプログラマブルなLSI(FPGA)の設計支援システムである。このシステムは、処理装置、記憶装置、入力装置、および、出力装置を備える。入力装置は、CRAMに格納する、第一の論理接続情報に対応する第一のビット情報の入力を受付ける。処理装置は、第一のビット情報の一部のビットを反転書き換えして、第二のビット情報を生成する第1の手段と、第二のビット情報を、該第一のビット情報と一対一対応している該第一の論理接続情報が変更されたことに対応させて、第二の論理接続情報に変換する第2の手段と、第二の論理接続情報を用いて論理的および回路的なシミュレーションを実行する第3の手段を有する。 Another aspect of the present invention is a field programmable LSI (FPGA) design support system that retains logic circuit information by a rewritable storage means called a configuration memory (CRAM). The system includes a processing device, a storage device, an input device, and an output device. The input device receives input of first bit information corresponding to the first logical connection information stored in the CRAM. The processing device reversely rewrites some bits of the first bit information to generate second bit information, and the second bit information is one-to-one with the first bit information. A second means for converting to the second logical connection information in response to the change of the corresponding first logical connection information, and logical and circuit-like using the second logical connection information; A third means for executing a simple simulation.
さらに具体的な構成例では、第3の手段は、第二の論理接続情報への一乃至複数の入力と、複数の入力のそれぞれに対応するシミュレーションの出力結果を、別途定める該入力に対応する出力期待値と比較する手段を持つ。出力期待値は、第一の論理接続情報でのシミュレーション時に得られる正しい結果と、第二のビット情報生成にあたり予め故障原因を想定した1乃至複数の故障時の出力結果とで構成される期待値表として定義されて記憶装置に格納されている。出力期待値と比較する手段は、シミュレーションの出力結果と該出力期待値とで一致検索を実施し、該期待値表に記載のいずれかの期待値と一致する場合には、入力および期待値を関連付けて、出力手段に故障モード一覧として表示する検証手段を有する。 In a more specific configuration example, the third means corresponds to one or more inputs to the second logical connection information and a simulation output result corresponding to each of the plurality of inputs, which is separately determined. Has a means to compare with the expected output value. The expected output value is an expected value composed of a correct result obtained during simulation with the first logical connection information and one or more output results at the time of failure that presuppose the cause of failure in generating the second bit information. It is defined as a table and stored in the storage device. The means for comparing with the expected output value performs a match search between the simulation output result and the expected output value, and if it matches any expected value described in the expected value table, the input and expected value are Correlating means for displaying as a list of failure modes on the output means is provided.
本発明のさらに他の一側面は、論理回路情報をCRAMによって保持するFPGAについて、想定されるエラーを評価する半導体回路装置の設計支援方法であって、処理装置、記憶装置、入力装置、および、出力装置を用いる方法である。記憶装置は、FPGAに形成すべき回路結線情報であるネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納する。入力装置は、評価対象となるネットリストに対応する前記ビットストリームの入力を受付ける。前記処理装置は、入力されたビットストリームに対して変更を加える第1のステップと、対応情報を参照し、ビットストリームの変更が反映された故障挿入ネットリストを生成する第2のステップと、故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する第3のステップと、を実行する。 Still another aspect of the present invention is a design support method for a semiconductor circuit device for evaluating an assumed error for an FPGA that holds logic circuit information by CRAM, and includes a processing device, a storage device, an input device, and This is a method using an output device. The storage device stores one-to-one correspondence information between a net list that is circuit connection information to be formed in the FPGA and a bit stream that is a bit string stored in the CRAM. The input device accepts an input of the bitstream corresponding to the netlist to be evaluated. The processing apparatus includes: a first step of changing the input bitstream; a second step of generating a fault insertion netlist reflecting the change of the bitstream by referring to the correspondence information; A third step of performing a logical simulation by applying a predetermined input to the insertion netlist.
本発明のさらに具体的な構成では、シミュレーションの出力結果を出力期待値と比較する第4のステップを実行する。 In a more specific configuration of the present invention, the fourth step of comparing the simulation output result with the output expected value is executed.
FPGA設計における高効率なCRAMエラーインジェクション評価方法を提供することができる。 A highly efficient CRAM error injection evaluation method in FPGA design can be provided.
以下図に従い、本発明の実施例について説明を加える。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. However, the present invention is not construed as being limited to the description of the embodiments below. Those skilled in the art will readily understand that the specific configuration can be changed without departing from the spirit or the spirit of the present invention.
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。 In the structures of the invention described below, the same portions or portions having similar functions are denoted by the same reference numerals in different drawings, and redundant description may be omitted.
本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。 In the present specification and the like, notations such as “first”, “second”, and “third” are attached to identify the components, and do not necessarily limit the number or order. In addition, a number for identifying a component is used for each context, and a number used in one context does not necessarily indicate the same configuration in another context. Further, it does not preclude that a component identified by a certain number also functions as a component identified by another number.
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。 The position, size, shape, range, and the like of each component illustrated in the drawings and the like may not represent the actual position, size, shape, range, or the like in order to facilitate understanding of the invention. For this reason, the present invention is not necessarily limited to the position, size, shape, range, and the like disclosed in the drawings and the like.
一般にロジックLSIの機能論理の設計は、ターゲットのLSIで実現したい機能の仕様を明確にした後に、その機能を実現するための論理仕様を作成し、論理記述言語(たとえばVerilog HDL(Hardware Description Language) やVHDL)を用いて設計する。この論理回路はRTL(Register Transfer Level)と呼ばれる手法にて記述される。 In general, for functional logic design of a logic LSI, after clarifying the specification of the function to be realized in the target LSI, create a logic specification for realizing the function, and use a logic description language (for example, Verilog HDL (Hardware Description Language)) And VHDL). This logic circuit is described by a technique called RTL (Register Transfer Level).
一般的に、RTLからLSIへの集積は以下の手順で実施される。すなわち、RTLの論理接続情報を実際のLSIに集積されるトランジスタの物理的な配置を考慮していわゆるネットリストへ変換し、さらに、各信号線のタイミング制約を考慮して静的タイミング解析シミュレーション(STA)を実施しその配置を最適化した後に、LSIへの集積を実現する。FPGAにおいてもほぼ同様の手続きで実施され、このRTLを設計後、論理合成を実施し、信号線のタイミングを調整しながら、FPGAのCRAMへ格納するデータへの変換を実施する。この変換をCRAMへのマッピングと以後呼ぶ。 Generally, integration from RTL to LSI is performed by the following procedure. In other words, RTL logic connection information is converted into a so-called netlist in consideration of the physical arrangement of transistors integrated in an actual LSI, and further, static timing analysis simulation is performed in consideration of timing constraints of each signal line ( STA) is performed and the layout is optimized, and then integration into the LSI is realized. The same procedure is applied to the FPGA. After designing the RTL, logic synthesis is performed, and the data is stored in the FPGA CRAM while adjusting the timing of the signal lines. This conversion is hereinafter referred to as mapping to CRAM.
CRAMへのマッピングについては、FPGA内部に集積された基本論理回路および配線接続スイッチの構成の物理的な配置を考慮し、論理記述情報から変換されたトランジスタレベル結線情報(ネットリスト)を元に、FPGAの構成メモリ(コンフィギュレーションメモリ:CRAM)のビット列(ビットストリーム)へ変換することで実現される。FPGAのCRAMへこのビットストリームを格納することによって、所望の動作をターゲットとするFPGAで実現できることになる。 For mapping to CRAM, considering the physical layout of the basic logic circuit and wiring connection switch integrated inside the FPGA, based on transistor level connection information (net list) converted from logic description information, It is realized by converting into a bit string (bit stream) of FPGA configuration memory (configuration memory: CRAM). By storing this bit stream in the CRAM of the FPGA, it can be realized by the FPGA targeting the desired operation.
ここで重要な点は、RTLからネットリストへの変換、および、そのネットリストを用いた各種シミュレーションは、サーバ等の装置で実施され、最終結果のビットストリームのみがFPGAへ格納され、ユーザが所望する動作が実現されることである。すなわち、FPGAで機能を実現するためのRTLから変換されたネットリストと、FPGAへ格納されるCRAMのデータ列(ビットストリーム)とは、1対1対応しているということである。したがって、CRAMの各ビットは回路へのマッピングは原理的に可能である。その際、FPGAの内部構成を秘匿とするために、CRAMのビットストリームを、暗号化等を施して格納する場合でも、もともとのネットリストとビットストリームとの対応は、必ず一対一対応となる。 The important point here is that the conversion from RTL to netlist, and various simulations using the netlist are performed by a server or other device, and only the final bitstream is stored in the FPGA, which is desired by the user. This is to realize the operation to be performed. In other words, the netlist converted from the RTL for realizing the function in the FPGA and the CRAM data string (bit stream) stored in the FPGA have a one-to-one correspondence. Therefore, each bit of CRAM can be mapped to a circuit in principle. At this time, in order to keep the internal configuration of the FPGA secret, even when the CRAM bit stream is encrypted and stored, the correspondence between the original netlist and the bit stream is always one-to-one.
この事実を利用すれば、CRAMのビットストリームの一部が変更された情報を、ネットリストへ反映させることは可能である。よって、CRAMの各ビットの反転による影響を論理的なシミュレーションにより確認する手段を設けることで課題が解決される。 By utilizing this fact, it is possible to reflect information in which part of the CRAM bitstream has been changed to the netlist. Therefore, the problem is solved by providing means for confirming the influence of the inversion of each bit of the CRAM by logical simulation.
さらに、シミュレーションの結果を、別途ユーザが設定する想定される危険側故障出力の期待値と比較することで、エラー状態が危険側となる状態について抜き出すことができるので、考慮すべき危険側のエラーモード種類を隈なく列挙させることが可能になる。 Furthermore, by comparing the simulation result with the expected value of the expected dangerous failure output separately set by the user, it is possible to extract the state where the error state becomes the dangerous side. It becomes possible to enumerate all kinds of modes.
本技術は、回路ネットリストとFPGAのコンフィギュレーションメモリの対応が重要であり、FPGA設計ツールに統合化される形で運用されると望ましい。 In this technology, correspondence between the circuit netlist and the FPGA configuration memory is important, and it is desirable that this technology be operated in an integrated form with the FPGA design tool.
以下、具体的に実施例を説明する。 Examples will be specifically described below.
図1を用いて、本願発明の具体的な実施例の全体構成について説明する。本実施例は、FPGA論理実装ツールと、FPGA故障モード評価ツールと、FPGA故障確率計算ツールからなるFPGA設計支援ツールで実現されることが望ましい形態であろう。 The overall configuration of a specific embodiment of the present invention will be described with reference to FIG. This embodiment may be preferably realized by an FPGA design support tool including an FPGA logic implementation tool, an FPGA failure mode evaluation tool, and an FPGA failure probability calculation tool.
具体的なシステム構成は、処理装置、記憶装置、入出力装置を備えたサーバ等のハードウェアを、ソフトウェアによる情報処理で利用する形態とすることができる。 A specific system configuration may be a form in which hardware such as a server including a processing device, a storage device, and an input / output device is used for information processing by software.
FPGA論理実装ツール(100)は、既存のFPGA論理実装ツールであり、本実施例は、これらの従来知られているツール群に付加される形態になるものと考えられる。そのため、本実施例の特徴的な点は、エラーインジェクション評価ツール(101)を設けることである。 The FPGA logic implementation tool (100) is an existing FPGA logic implementation tool, and this embodiment is considered to be added to these conventionally known tools. Therefore, a characteristic point of the present embodiment is that an error injection evaluation tool (101) is provided.
FPGA論理実装ツール(100)は、論理合成ツール(110)および物理配置ツール(111)で構成され、その他、図示しないが、タイミング解析ツールなどを含んで構成される。論理合成ツール(110)は、設計データであるRTLを入力とし、ゲートレベルの接続情報である、いわゆるネットリスト(120)を出力する。このネットリスト(120)の生成には、タイミング解析などを経て、所望の動作速度が得られる配置に設計される。このネットリスト(120)は、物理配置ツールにより、FPGA内部のLUTやスイッチの制御をつかさどる、いわゆる構成メモリ(Configuration Memory:CRAM)へ格納するための、ビット列(以降、ビットストリーム(121))へ変換される。 The FPGA logic implementation tool (100) includes a logic synthesis tool (110) and a physical placement tool (111), and includes a timing analysis tool (not shown). The logic synthesis tool (110) receives RTL, which is design data, and outputs a so-called net list (120), which is gate level connection information. The generation of the netlist (120) is designed so as to obtain a desired operation speed through timing analysis and the like. This net list (120) is transferred to a bit string (hereinafter referred to as bit stream (121)) for storage in a so-called configuration memory (CRAM) that controls the LUT and the switch in the FPGA by a physical placement tool. Converted.
本実施例では、この、ネットリスト(120)およびビットストリーム(121)を利用し、後述するCRAMのビットストリームの一部に対してエラーを恣意的に発生させた際の影響度合いをシミュレーションにより評価する手段を持っていることが特徴である。 In this embodiment, the net list (120) and the bit stream (121) are used to evaluate the degree of influence when an error is arbitrarily generated for a part of the CRAM bit stream described later by simulation. It is characterized by having means to do.
エラーインジェクション評価ツール(101)は、CRAMのビットストリームの一部に恣意的なビット反転エラーを発生させるエラー挿入ツール(112)と、その影響を評価するSIM/期待値比較ツール(113)と、危険側故障率計算ツール(114)とで構成される。 The error injection evaluation tool (101) includes an error insertion tool (112) that generates an arbitrary bit reversal error in a part of the bitstream of the CRAM, a SIM / expected value comparison tool (113) that evaluates the influence, And a dangerous failure rate calculation tool (114).
エラー挿入ツール(112)は、設計されたネットリスト(120)と、ビットストリーム(121)と、ネットリストvsビットストリーム対応情報(テーブル)(122)とを入力とする。ネットリストvsビットストリーム対応テーブル(122)には、ネットリストとビットストリームの対応が一対一に格納されている。このような情報はFPGAの設計あるいは製造業者が保有しており、ここから提供を受けることができる。シミュレーションの実施者にFPGAの内部接続構造を秘匿したい場合は、対応テーブル(122)は出力についてアクセス制限をかけてブラックボックス化することが好ましい。ネットリストとビットストリームの対応については、後に図2で原理を説明する。 The error insertion tool (112) receives the designed netlist (120), bitstream (121), and netlist vs bitstream correspondence information (table) (122). The net list vs bit stream correspondence table (122) stores the correspondence between the net list and the bit stream on a one-to-one basis. Such information is owned by the FPGA design or manufacturer and can be provided here. When it is desired to keep the internal connection structure of the FPGA secret from the person who performs the simulation, it is preferable that the correspondence table (122) is black boxed by restricting access to the output. The principle of the correspondence between the netlist and the bit stream will be described later with reference to FIG.
エラー挿入ツール(112)は、ビットストリーム(121)の一部にビット反転操作を実施して、恣意的にエラーを挿入した後、ネットリストvsビットストリーム対応テーブル(122)を利用して、エラー挿入結果をネットリスト(120)に対して変更する。そのネットリスト(120)の変更結果として、ビットストリーム上の故障が反映された、故障挿入ネットリスト(124)が得られる。あるいは、ネットリストvsビットストリーム対応テーブル(122)を利用して、エラーを挿入したビットストリームから、それに対応したネットリストを生成する。 The error insertion tool (112) performs a bit inversion operation on a part of the bitstream (121), arbitrarily inserts an error, and then uses the netlist vs bitstream correspondence table (122) to generate an error. The insertion result is changed with respect to the net list (120). As a result of changing the net list (120), a fault insertion net list (124) reflecting a fault on the bitstream is obtained. Alternatively, using the net list vs bit stream correspondence table (122), a corresponding net list is generated from the bit stream into which the error is inserted.
このようなエラー挿入ツール(112)は、FPGAにおいて、配線の断線、ショート、あるいはCRAMへの放射線の影響等を模擬することができる。想定する故障の状況に応じて、エラー挿入の方式を変えてもよい。 Such an error insertion tool (112) can simulate the effect of radiation on the CRAM or the like in the FPGA. The error insertion method may be changed according to the assumed failure situation.
SIM/期待値比較ツール(113)は、エラー挿入ツール(112)が生成した故障挿入ネットリスト(124)と、エラー挿入の影響をユーザが評価するために作成したSIM入力(131)とを用いて論理的なシミュレーションを実施した際の出力結果を、ユーザが定義する出力期待値(132)と比較することで故障モードを評価するツールである。 The SIM / expected value comparison tool (113) uses the fault insertion netlist (124) generated by the error insertion tool (112) and the SIM input (131) created for the user to evaluate the effect of error insertion. Thus, the failure mode is evaluated by comparing the output result when the logical simulation is performed with the expected output value (132) defined by the user.
出力期待値(132)は図4で後述するように、ある入力に対する、エラーの発生していない状態の演算結果としての真値と、エラーが発生した際の複数の危険側故障値により構成されている。SIM/期待値比較ツール(113)は、故障挿入ネットリスト(124)とSIM入力(131)を用いて、故障挿入された状態のシミュレーションが実施可能である。 As will be described later with reference to FIG. 4, the output expected value (132) is composed of a true value as a calculation result in a state where no error has occurred for a certain input, and a plurality of dangerous failure values when an error occurs. ing. The SIM / expected value comparison tool (113) can perform a simulation of a state in which a fault is inserted using the fault insertion netlist (124) and the SIM input (131).
このシミュレーション自体は、既存の論理的なシミュレーションの手法を活用して実施することができ、シミュレーション結果としての動作波形図を出力することができる。出力結果はデータベース(125)に蓄積し分析に用いることができる。また、この実施例では、最も興味があることとして、ユーザが想定した出力期待値(132)の中の、危険側故障のいずれかに一致するかの判定を作成することによるエラー挿入の影響評価が実施できることである。 This simulation itself can be carried out by utilizing an existing logical simulation method, and an operation waveform diagram as a simulation result can be output. The output result is accumulated in the database (125) and can be used for analysis. Also, in this embodiment, the most interesting thing is that the evaluation of the influence of error insertion by creating a determination as to which of the expected failure values (132) assumed by the user matches any of the dangerous faults. Can be implemented.
ユーザとして確認したいことは、エラーの挿入によりそのエラーが重篤な状況を引き起こすかどうか、および、その故障が想定していた、いずれの故障モードに該当するのかを確認することでもあるので、サマリが作成される機能は有用である。 What we want to confirm as a user is to check whether the error causes a serious situation by inserting the error, and to check which failure mode the failure is supposed to be. The function that is created is useful.
また、この期待値比較は、ネットリストの詳細情報を開示困難な形とする場合でも、確認が容易な評価手法になる。したがって、本実施例では、その評価の結果として、ソフトエラー挿入によって引き起こされる故障モード一覧リスト(126)を出力することが特徴である。 Moreover, this expected value comparison is an evaluation method that can be easily confirmed even when detailed information of the netlist is difficult to disclose. Therefore, the present embodiment is characterized in that a failure mode list (126) caused by soft error insertion is output as a result of the evaluation.
故障モード一覧リスト(126)には、対象となる回路(機能ブロック)について、起こりうるエラーが網羅できるので、この結果を表示装置に表示する等して、回路設計に反映することができる。故障モード一覧リスト(126)の最もシンプルな形態は、入力と、その入力に対応して機能ブロックAから出力された出力のうち、危険側故障を示す出力期待値データ(132)と一致した出力のリストである。 Since the failure mode list (126) can cover all possible errors for the target circuit (functional block), the result can be reflected on the circuit design by displaying it on a display device. The simplest form of the failure mode list (126) is an output that matches the output expected value data (132) indicating a dangerous failure among the outputs output from the function block A corresponding to the input. It is a list.
この他、故障モード一覧リスト(126)としては、出力期待値(132)の危険側故障値と、それに対応するビットストリーム、ネットリスト、あるいは、当該故障に関する付加情報(例えば故障内容や影響の説明、重要度レベル、故障対応方法、故障種別その他)の組合せが考えられる。 In addition, as the failure mode list (126), the dangerous failure value of the output expected value (132) and the corresponding bitstream, netlist, or additional information related to the failure (for example, description of failure contents and effects) , Importance level, failure response method, failure type, etc.).
あるいは、危険側故障の出力期待値データ(132)を用いず、出力期待値(132)の真値と合致しないすべての出力と、それに対応するビットストリーム、ネットリスト、付加情報の組合せ等を故障モード一覧リストとしてもよい。もっとも、この場合には、重要性の低い故障までリストアップされるデメリットがある。 Or, it does not use the output expected value data (132) of the dangerous failure and fails all combinations of the output that do not match the true value of the output expected value (132) and the corresponding bitstream, netlist, additional information, etc. It may be a mode list. However, in this case, there is a demerit of listing up to a less important failure.
この段階では、故障確率は求めることはできないが、ソフトエラー挿入によって引き起こされる、想定される故障モードは、原理的にすべて挙げることができるので、故障モードの検証ツールとして活用できる。したがって、このツールだけでも高安全化の検証ができる効果がある。 At this stage, the failure probability cannot be obtained, but all possible failure modes caused by soft error insertion can be listed in principle, and can be used as a failure mode verification tool. Therefore, this tool alone is effective in verifying high safety.
さらに、本実施例においては、危険側故障率計算ツール(114)を設けている。この危険側故障率計算ツール(114)は、FPGAの物理配置ツールから出力された実負荷接続/物理配置データ(123)と、故障挿入ネットリスト(124)と、FPGA故障モード一覧リスト(126)とを入力し、危険側故障率(127)を出力する。 Furthermore, in this embodiment, a dangerous failure rate calculation tool (114) is provided. The dangerous failure rate calculation tool (114) includes an actual load connection / physical placement data (123) output from the FPGA physical placement tool, a failure insertion net list (124), and an FPGA failure mode list (126). And the dangerous failure rate (127) is output.
危険側故障率計算ツール(114)は、故障挿入ネットリストの故障箇所の物理配置情報を実負荷接続/物理配置データ(123)と対応付けることにより特定し、たとえば、配線のマイグレーションによる断線やショートの確率や、配線長やスイッチ回路やLUT等の論理回路の使用状況、さらには、FPGAに搭載されるハードワイヤードの回路の故障率を加味して、注目する故障モードにおけるCRAMのソフトエラーによる機能の故障確率を求められることが特徴である。 The dangerous failure rate calculation tool (114) identifies the physical location information of the fault location in the fault insertion netlist by associating it with the actual load connection / physical location data (123). Consider the probability, wiring length, usage status of logic circuits such as switch circuits and LUTs, and the failure rate of the hard-wired circuit installed in the FPGA, and the function of the CRAM soft error in the failure mode of interest. The feature is that the failure probability can be obtained.
図1には、特に限定してこなかったが、ひとつのソフトエラー挿入に対して、故障挿入ネットリストがひとつ対応し、複数のSIM入力とその入力に応じた想定される複数の出力期待値とのSIM実行および故障モードを出力しているかのごとく表現した。しかしながら、この評価は、複数のエラーを順次挿入して複数の故障ネットリストを作成し、故障モード一覧リストには、それら各々の複数の故障ネットリストに応じた形で、対応する複数のデータを格納できるように実現してもよい。 Although not particularly limited in FIG. 1, one fault insertion netlist corresponds to one soft error insertion, and a plurality of SIM inputs and a plurality of expected output values corresponding to the inputs are shown. It was expressed as if the SIM execution and failure mode were output. However, this evaluation creates a plurality of failure net lists by sequentially inserting a plurality of errors, and the failure mode list list includes a plurality of corresponding data in a form corresponding to each of the plurality of failure net lists. You may implement | achieve so that it can store.
次に、本実施例の目的をより明確にするために、具体的なCRAMへのエラー挿入の影響について述べる。ここでは、一例として4入力のルックアップテーブル(LUT)の場合について述べる。4入力のLUTは、周知の通り、入力が4つで出力が1つの論理回路を表現することが可能である。それぞれを、入力I0、I1、I2、I3、出力O1とすると、入力は2^4=16通りの組み合わせが可能である。したがって、16ビットのメモリがあれば、入力I0,I1,I2,I3の値に応じて切り替えることで、ひとつの出力値が決められる。 Next, in order to clarify the purpose of this embodiment, a specific influence of error insertion into the CRAM will be described. Here, the case of a 4-input lookup table (LUT) will be described as an example. As is well known, a 4-input LUT can represent a logic circuit with four inputs and one output. If each of the inputs is I0, I1, I2, I3, and output O1, 2 ^ 4 = 16 combinations are possible for the inputs. Therefore, if there is a 16-bit memory, one output value is determined by switching according to the values of the inputs I0, I1, I2, and I3.
図2を用いて具体的に示す。図2(A)に示すように、I0〜I3の各入力信号と、出力信号Oとの間に真理値表の関係がある場合、この出力信号との対応がCRAMに入力される。ルックアップテーブルは、図2(A)の右に一例が示されるように、CRAMの出力が、この場合では、4段のトーナメント型のセレクタ列に入力されており、各段のセレクタはここに図示したようにI0〜I3の値によって選択される。この図では、この真理値表の出力Oに相当する欄に記載した、上から下への一連のビット列が、対応するLUT回路を構成するCRAMのビットに対応する。これは、回路構成の名前の由来でもあるが、いわゆる論理の真理値表と一致しており、CRAMのデータはそのまま出力信号になる。 This will be specifically described with reference to FIG. As shown in FIG. 2A, when there is a truth table relationship between the input signals I0 to I3 and the output signal O, the correspondence with this output signal is input to the CRAM. In the lookup table, as shown in the example on the right of FIG. 2 (A), the output of the CRAM is input to a four-stage tournament type selector row, and the selectors for each stage are here. As shown, it is selected according to the values of I0 to I3. In this figure, a series of bit strings from the top to the bottom described in the column corresponding to the output O of this truth table corresponds to the CRAM bits constituting the corresponding LUT circuit. This is also the origin of the name of the circuit configuration, but is consistent with a so-called logic truth table, and the data in the CRAM becomes the output signal as it is.
ここで示したCRAMの入力例を論理回路図で示したものが、図2(B)である。AND回路とOR回路にて構成されている。この回路を記述するCRAMのビットは、“0001000100011111”とあらわされる。これは、図2(A)の真理値表の出力O、すなわち、CRAMの値の上から下へのビット列に等しい。 FIG. 2B shows an input example of the CRAM shown here with a logic circuit diagram. It consists of an AND circuit and an OR circuit. The bit of the CRAM describing this circuit is expressed as “0001000100011111”. This is equal to the output O of the truth table of FIG. 2A, that is, the bit string from the top to the bottom of the CRAM value.
このような対応がある中で、CRAMへのエラーインジェクションを説明する。CRAMのあるビット、この例では、先頭から3ビット目のビットが変化した場合について説明する。ここでは、CRAMのビットは、3ビット目が”0“から”1”へ変更され、結果的にCRAMのビット列が“0011000100011111”に変化させる操作をさす。図2(A)の中で、E.I.(エラーインジェクション)と記載したことに対応する。この状況は回路図で表すと、図2(C)の状態になる。図2(B)の回路と図2(C)の回路は、論理的にまったく異なっている。本実施例では、このように、CRAMの1ビットがソフトエラーによって変更されてしまった際の、回路動作に及ぼす影響を定量的に評価することが目的になる。 In this situation, we will explain error injection to CRAM. A case where a bit of the CRAM, in this example, the third bit from the head changes will be described. Here, the third bit of the CRAM bit is changed from “0” to “1”, and as a result, the CRAM bit string is changed to “0011000100011111”. This corresponds to the description of E.I. (error injection) in FIG. This situation is represented by a circuit diagram as shown in FIG. The circuit in FIG. 2B and the circuit in FIG. 2C are logically completely different. In this embodiment, the purpose is to quantitatively evaluate the influence on the circuit operation when one bit of the CRAM is changed by a soft error.
図3を用いてエラーインジェクションシミュレーションの実施方法について説明する。まず、ユーザが実現したい機能を反映させた論理接続情報A(ネットリストA)を準備する(S301)。ネットリストAはFPGAで構成したい、目的とする回路であり、本シミュレーションでの評価対象となる。後述するようにこれは、FPGAの一部分の機能を切り出したものでもよい。 A method for performing the error injection simulation will be described with reference to FIG. First, logical connection information A (net list A) reflecting the function that the user wants to realize is prepared (S301). Netlist A is the target circuit that you want to configure with FPGA, and is the object of evaluation in this simulation. As will be described later, this may be a part of the FPGA.
次にネットリストAを用いて、CRAMビットストリームAを生成させる(S302)。 Next, the CRAM bit stream A is generated using the netlist A (S302).
その後、このCRAMビットストリームAに対して、一部のCRAMビットを反転させる処理、すなわち、エラーインジェクションを実施してCRAMのビットストリームBを生成する(S303)。後述するように、CRAMビットの反転個所は目的に応じて選択することができる。 Thereafter, a process for inverting some of the CRAM bits, that is, error injection, is performed on the CRAM bit stream A to generate a CRAM bit stream B (S303). As will be described later, the inversion portion of the CRAM bit can be selected according to the purpose.
その後、このCRAMビットストリームBに対応する論理接続情報B(ネットリストB)を生成する(S304)。ビットストリームBから論理接続情報Bを生成する際には、既述のようにネットリストとビットストリームの対応が一対一に対応付けられている情報を利用すればよい。エラーインジェクションシミュレーションは、このネットリストBに対してユーザ指定の入力データを用いて実施される。 Thereafter, logical connection information B (net list B) corresponding to the CRAM bit stream B is generated (S304). When the logical connection information B is generated from the bit stream B, information in which the correspondence between the netlist and the bit stream is one-to-one as described above may be used. The error injection simulation is performed on the netlist B using user-specified input data.
図4と図1を用いて、SIM期待値比較ツール(113)で実行される、エラー挿入後の期待値評価の方法について述べる。ここでは、論理的な接続条件の確認を念頭に置いた設計について述べる。評価対象のブロックを機能ブロックA(401)とする。この機能ブロックAは、設計当初のネットリストAから生成されたビットストリームAで構成されているとする。このビットストリームAに、エラー挿入ツール(112)はエラーインジェクションを、図3で説明した手順で実施する。ここでは、機能ブロックAはすでに、ビットストリームBに変換され、ネットリストもネットリストBに変換されているものとする。ネットリストBにはエラーが含まれているという設定である。この状況で論理的なシミュレーションを実施する。 With reference to FIG. 4 and FIG. 1, the expected value evaluation method after error insertion executed by the SIM expected value comparison tool (113) will be described. This section describes the design with confirmation of logical connection conditions in mind. The block to be evaluated is assumed to be a function block A (401). This functional block A is assumed to be composed of a bit stream A generated from the netlist A at the beginning of design. In this bit stream A, the error insertion tool (112) performs error injection according to the procedure described in FIG. Here, it is assumed that the function block A has already been converted into the bit stream B, and the net list has also been converted into the net list B. Netlist B is set to contain errors. A logical simulation is performed in this situation.
シミュレーションに当たっては、まず、この機能ブロックをテストするための、入力データの準備が必要になる。ここでは、それがnaビットの入力データビット列(131)で表現されると考える。すなわち、機能ブロックAの入力はna本の入力信号があることになる。評価に当たっては、このnaビットの信号を複数(0〜NTP)準備した、いわゆるテストベクタで構成されている。これは、機能ブロックを検証する上で検証のカバレッジを向上させる目的がある。これらの入力データは図1のSIM入力(131)として準備される。 In the simulation, it is first necessary to prepare input data for testing this functional block. Here, it is considered that it is expressed by a na-bit input data bit string (131). That is, the input of the function block A has na input signals. In the evaluation, it is composed of a so-called test vector in which a plurality (0 to NTP) of this na bit signal is prepared. This has the purpose of improving the verification coverage in verifying the functional block. These input data are prepared as the SIM input (131) in FIG.
本実施例では、そのテストベクタのひとつの入力パタンに対して、ネットリストB の状態での機能ブロックAの動作シミュレーションを実施する。ここでは、機能ブロックAの出力はnbビットと仮定する。 In this embodiment, an operation simulation of the functional block A in the state of the netlist B is performed for one input pattern of the test vector. Here, the output of the functional block A is assumed to be nb bits.
このシミュレーションに先立ち、ユーザは、あらかじめ決めておいたデータ、すなわち、機能ブロックにエラーが存在しない状態の出力値(真値)と、エラーが生じた際に危険側になってしまう状況を再現する出力値とを出力期待値データ(132)として準備する。ここでは、誤った動作により誤った信号が出力される場合である。例えばそのような出力を故障時の出力期待値データ(#e0〜#en)として準備する。なお、エラーの内容によっては、そもそも回路として動作せず出力がない場合がある。出力がない場合は、安全側の故障の場合と危険側であるが潜在化した故障の場合とがある。特に後者の割合を定量的に減らすことが機能安全では重要である。本実施例を用いて故障モードを定量的に適切に確認するためには、後述するような機能サブブロックにさらに分割した階層化設計による評価部の最適化や、適切な内部状態の診断回路を設けることで、潜在故障を効率的に検出できるようにすると、より効果がある。 Prior to this simulation, the user reproduces the predetermined data, that is, the output value (true value) when there is no error in the functional block and the situation that becomes dangerous when an error occurs The output value is prepared as output expected value data (132). In this case, an incorrect signal is output due to an incorrect operation. For example, such output is prepared as expected output value data (# e0 to #en) at the time of failure. Depending on the contents of the error, the circuit may not operate as a circuit in the first place and there may be no output. When there is no output, there is a case of a failure on the safe side and a case of a dangerous failure but a latent failure. In particular, it is important for functional safety to quantitatively reduce the latter ratio. In order to confirm the failure mode quantitatively and appropriately using this embodiment, optimization of the evaluation unit by hierarchical design further divided into functional sub-blocks as described later, and a diagnostic circuit of an appropriate internal state By providing it, it is more effective to make it possible to detect a potential failure efficiently.
このシミュレーションでは、一例としてシミュレーションの結果の値と上記データとを出力期待値比較手段(402)で比較する。その結果、危険側故障となる場合(危険側故障)を抽出し、その危険側故障に一致する場合をまとめて、危険側故障モード一覧リスト(126)として出力する機能を有している。出力結果としての危険側故障は、#e0、#e1、・・・、#en、と n+1 通りのパタンで構成されてもよい。出力としてのデータは、入力パタン番号(#I0〜#NNTP)に対応する入力と、その入力パタン番号に対応したシミュレーション結果に対応する出力結果との期待値比較評価をまとめることができればよい。 In this simulation, for example, the value of the result of the simulation is compared with the above data by the output expected value comparison means (402). As a result, there is a function of extracting a case of a dangerous failure (dangerous failure), and outputting a case of matching with the dangerous failure as a dangerous failure mode list (126). The dangerous failure as the output result may be composed of # e0, # e1,..., #En, and n + 1 patterns. The output data only needs to be able to summarize the expected value comparison evaluation between the input corresponding to the input pattern number (# I0 to #NNTP) and the output result corresponding to the simulation result corresponding to the input pattern number.
入力テストベクタが複数の入力パタン数NTPで構成されている場合は、各々について実施する。また、テスト用の入力テストベクタは、総当り(2^(na))である必要はなく、あらかじめ、安全コンセプト等で検討した危険側の可能性をあぶりだす最小限の構成で実施することも可能である。 When the input test vector is composed of a plurality of input pattern numbers NTP, it is carried out for each. In addition, the test input test vector does not need to be brute force (2 ^ (na)), and may be implemented with a minimum configuration that reveals the possibility of danger as discussed in advance with safety concepts, etc. Is possible.
ブロックAへの入力信号本数の増減などの、機能ブロックAの動作を検証するための、通常の論理シミュレーションでは想定外の入力は、別に検証するように切り分けると都合がよい。たとえば、ブロックAの前段の故障として対応するように、問題を切り分ける。機能ブロックAの可能な入力種を制限することで、検査項目数の増大を防ぐことができる。 In a normal logic simulation for verifying the operation of the functional block A, such as increase / decrease in the number of input signals to the block A, it is convenient to separate inputs that are not expected in normal logic simulation. For example, the problem is isolated so as to cope with the failure in the preceding stage of block A. By limiting the possible input types of the function block A, it is possible to prevent an increase in the number of inspection items.
また、別の実施の形態としては、出力信号のみの比較にとどまらず、機能ブロックの内部ネット情報に対する期待値比較も可能である。上述したように、危険側の潜在障を定量的に減らす上で、階層化設計による評価部の最適化や、適切な内部状態の診断回路を設けることが効果的であるが、本実施例は実機評価ではなくシミュレーション評価もできることが特長であるので、内部の全信号の結線について、原理的にすべてのノードの指定して信号線の遷移動作を確認することが可能である。したがって、ツール内に内部信号の遷移をモニタする機能や、より効果的に故障状態を検出するためのツール上に存在させる診断回路(比較器等の機能を有した情報処理)を設けることで、より効果的な検証が可能になる。いずれの場合でも、このシミュレーションを実施するために必要な、ツールが使用可能な計算機メモリ格納領域を計算機およびツール内に設け、このメモリ内でデータを蓄積し、比較評価を実施すればよい。 Further, as another embodiment, not only the comparison of the output signal but also the expected value comparison for the internal net information of the functional block is possible. As described above, in order to quantitatively reduce the potential failure on the dangerous side, it is effective to optimize the evaluation unit by hierarchical design and provide a diagnostic circuit of an appropriate internal state. Since it is a feature that simulation evaluation can be performed instead of actual machine evaluation, it is possible to confirm signal line transition operation by designating all nodes in principle for connection of all internal signals. Therefore, by providing a function to monitor the transition of internal signals in the tool and a diagnostic circuit (information processing having a function of a comparator, etc.) to be present on the tool for detecting a failure state more effectively, More effective verification becomes possible. In either case, a computer memory storage area that can be used by the tool, which is necessary for executing the simulation, is provided in the computer and the tool, data is accumulated in the memory, and comparison evaluation is performed.
さらに、このような評価においては、FPGAの実機が不要であるので、いわゆるクラウドでも評価が可能である。そのように実施することで、計算資源をふんだんに活用できるので、処理の高速化が可能である。その場合、FPGAに接続する計算機へ、設計完了後にFPGAのCRAMにロードするためのビットストリームデータをダウンロードし、その計算機からFPGAへデータ転送すればよい。 Furthermore, in such an evaluation, an actual FPGA device is not required, so that evaluation can be performed even in a so-called cloud. By carrying out in this way, the computing resources can be utilized abundantly, so that the processing speed can be increased. In that case, it is only necessary to download bit stream data to be loaded into the FPGA CRAM after completion of the design to a computer connected to the FPGA and transfer the data from the computer to the FPGA.
なお、この機能ブロックAは、後述する機能サブブロックとして扱うことも可能である。機能ブロックを細分化させることで、検討するテストパタン数を削減できる効果がある。 Note that this functional block A can also be handled as a functional sub-block described later. By subdividing functional blocks, there is an effect that the number of test patterns to be examined can be reduced.
図5で、設計フローについて説明する。エラーインジェクションを想定した設計フローの一実施例である。まず、FPGAで実現させたい論理仕様を策定する(501)。FPGAへ搭載する論理は、安全性を考慮して、安全系機能ブロックと安全非関連機能ブロック等に分類して設計される(502)。各機能ブロックは、さらにサブブロックへ分割されて設計される場合もある(503)。安全関連系については、必要に応じて診断機能を追加する(504)。一連の検討が進んだ後、論理設計が実施される(505)。論理設計が完了した段階で、論理検証(506)が実施される。その後、ゲートレベルのネットリストが生成され(507)、タイミング検証が実施され(508)、タイミング違反がクリティカルでないことを確認してCRAMのビットデータが生成される(509)。本実施例は、CRAMのビットデータが生成された後に、エラーインジェクションシミュレーションによる検証(510)を実施する。 The design flow will be described with reference to FIG. It is one Example of the design flow supposing error injection. First, the logical specifications to be realized by the FPGA are formulated (501). The logic mounted on the FPGA is designed by classifying into safety system functional blocks and safety unrelated functional blocks in consideration of safety (502). Each functional block may be further divided into sub-blocks and designed (503). For safety-related systems, a diagnostic function is added as necessary (504). After a series of studies, logic design is performed (505). When the logic design is completed, logic verification (506) is performed. Thereafter, a gate level netlist is generated (507), timing verification is performed (508), and it is confirmed that the timing violation is not critical, and CRAM bit data is generated (509). In this embodiment, after the bit data of the CRAM is generated, verification (510) by error injection simulation is performed.
エラーインジェクションシミュレーションにおいては、検証すべきネットリストと該ネットリストに対応するビットストリームの入力を受付ける際に、それらのデータは上記のようにブロックあるいはサブブロック化されている。すなわち、シミュレーションは、FPGAで実現するべき機能に応じて分割され、あるいは、それらの機能を実現する上での安全コンセプトに基づいて分割されたデータにより実行される。 In the error injection simulation, when receiving the input of the net list to be verified and the bit stream corresponding to the net list, the data is blocked or sub-blocked as described above. That is, the simulation is executed by data divided according to functions to be realized by the FPGA, or divided based on a safety concept for realizing those functions.
図6は、IEC61508で規定されている設計フローに本実施例を組み込む例を示している。IEC61508では、設計・検証のフローを図5に示すようなV字型のフローで設計することを規定している。すなわち、テスト仕様(S600)と並行し、設計のフェーズと検証のフェーズに分けて実施される。 FIG. 6 shows an example in which the present embodiment is incorporated in the design flow defined by IEC61508. IEC61508 stipulates that the design / verification flow is designed with a V-shaped flow as shown in FIG. That is, in parallel with the test specification (S600), the design phase and the verification phase are performed separately.
まず設計フェーズであるが、FPGAの要件仕様を確定(S601)後、FPGAへ集積する回路アーキテクチャの仕様を決定する(S602)。その後、論理モジュールの機能設計(S603)と集積設計(S604)を実施し、論理合成を実施する(S605)。合成された論理について、FPGA上にマッピングするために、配置配線の合成を実施する(S606)。 First, in the design phase, after determining the requirement specifications of the FPGA (S601), the specification of the circuit architecture integrated in the FPGA is determined (S602). Thereafter, functional design (S603) and integration design (S604) of the logic module are performed, and logic synthesis is performed (S605). In order to map the synthesized logic on the FPGA, the placement and routing are synthesized (S606).
一方、検証のフェーズは、まず、配置配線の合成結果を用いて、各種信号線のタイミング制約の検証を実施する(S607)。その後、ゲートレベルのネットリストを用いて、実際の負荷を想定したシミュレーションを実施する(S608)。その後、FPGAのCRAMへ格納するビットストリームに変換する(S609)。 On the other hand, in the verification phase, first, the timing constraints of various signal lines are verified using the result of the placement and routing combination (S607). Thereafter, a simulation assuming an actual load is performed using the gate level netlist (S608). Thereafter, it is converted into a bit stream to be stored in the FPGA CRAM (S609).
本実施例では、この段階で、CRAMに発生するエラーの状況をエラーインジェクションシミュレーション(S610)により実施し、検証する。最後に、FPGA集積の要件仕様と照らし合わせて、妥当性の確認を実施する(S611)。 In the present embodiment, at this stage, the state of an error occurring in the CRAM is executed and verified by an error injection simulation (S610). Finally, the validity is checked against the requirement specification for FPGA integration (S611).
図7を用いて本願発明の別の実施例を説明する。この実施例は、安全関連系の機能ブロックを階層化して設計する際の実施例となる。上記の実施例では、サブブロックへの分割を想定していたものの、それらのサブブロックを個別に設計する詳細について述べていなかった。本実施例では、サブブロックの階層での独立的な設計を念頭に置いた実施例となる。 Another embodiment of the present invention will be described with reference to FIG. This embodiment is an embodiment when designing safety-related functional blocks in a hierarchy. In the above embodiment, although the division into sub-blocks is assumed, details of individually designing those sub-blocks are not described. In the present embodiment, the embodiment is designed with the independent design in the sub-block hierarchy in mind.
安全関連系全体機能ブロックを設計する際、それらを設計上の機能や運用管理上の診断回路の付加を考慮して、適切なブロックに分けて設計することが望ましい場合がある。このような状況に対応するために、安全関連系全体機能ブロックを機能サブブロックに分割し、それぞれに対して診断機能(回路)を追加する。この診断回路としては、ロックステップ対応や、パリティ付加、ECC付加等の診断手法を講じればよい。この際、これらの診断機能つきの機能サブブロックを、それぞれ独立性を保ちながら機能サブブロックネットリストを生成する。独立性を保つということは、たとえば、診断つきの機能ブロックA‘を実装する部分に、診断つきの機能ブロックB’の回路の一部が実装時含めて混在しないようにすることを指す。 When designing safety-related system-wide functional blocks, it may be desirable to design them into appropriate blocks in consideration of the addition of diagnostic functions for design functions and operation management. In order to cope with such a situation, the safety-related overall function block is divided into function sub-blocks, and a diagnostic function (circuit) is added to each. As the diagnostic circuit, diagnostic methods such as lock step correspondence, parity addition, and ECC addition may be taken. At this time, the function sub-block netlist is generated while maintaining the independence of the function sub-blocks with the diagnostic function. Maintaining independence means, for example, that a part of the circuit of the functional block B ′ with diagnosis is not mixed in the part where the functional block A ′ with diagnosis is mounted, including the time of mounting.
機能サブブロックのネットリストは、それぞれ、機能サブブロックのビットストリームに変換されて、エラーインジェクション評価が各機能サブブロック単位で実施できることが特徴である。 Each of the functional sub-block netlists is converted into a functional sub-block bit stream, and the error injection evaluation can be performed for each functional sub-block.
図8に、図7の方法で設計した、FPGA801の機能サブブロックA’802、 機能サブブロックB’803、 機能サブブロックC’804のFPGA実装の一実施形態を、示す。機能サブブロックA’、 機能サブブロックB’、 機能サブブロックC’間は物理的にも分離されている。
FIG. 8 shows an embodiment of FPGA implementation of the functional sub-block A ′ 802, functional sub-block B ′ 803, and functional sub-block C ′ 804 of the
また、各機能ブロックは、用途機能に応じて大きなブロックに分割されている。例えば、重要部分805と非重要部分806である。このように区分することにより、重要部分805のブロックのみをシミュレーション対象とすることが容易となる。また、これらの機能ブロック間は分離部分807で分離されている。具体的な、分離方法としては、図9に示すような分離方法が考えられる。
Each functional block is divided into large blocks according to the application function. For example, the
図9Aは、機能サブブロックLと機能サブブロックRとの物理的分離を示す一実施形態である。機能サブブロック間の分離をフリップフロップFFの出口(出力)で設定することが特徴である。機能サブブロックLにここに図示したLUTとFFが含まれ、スイッチおよび配線は機能サブブロックRに属する。このようにすると、機能ブロックの出力値の評価として、FFのデータで比較ができることになるので、検証の際の比較が容易になる。 FIG. 9A is an embodiment showing physical separation of functional sub-block L and functional sub-block R. FIG. The feature is that the separation between the functional sub-blocks is set at the exit (output) of the flip-flop FF. The functional sub-block L includes the LUT and FF shown here, and the switches and wiring belong to the functional sub-block R. In this way, the output value of the functional block can be compared with the FF data, so that comparison at the time of verification becomes easy.
図9Bは、図9Aと同様に、機能サブブロックからの出力部であるFFにて分離する。さらに、スイッチ(SW)部と配線部を別の領域として分離して、LUTの入力からとする中間領域を設けることが特徴になる。これにより、スイッチSW部分は、別途、LSI設計時のレイアウト情報、回路結線情報(スケマティク)、結線の確認手段(LVS)等の技術を活用することにより、SIMと切り離して、CRAMのビット反転の影響を検討することができる。この場合は、シミュレーションによる確認の手間が省けるので、時間的な効率が上がる効果がある。このときの、確認方法としては、機能ブロック間の相互接続が発生するか、誤接続先がオープンかドライバでドライブされているかは結線情報でわかるので、入力テストベクタを考える規模が小さくできる。 In FIG. 9B, as in FIG. 9A, separation is performed at FF which is an output unit from the functional sub-block. Further, the switch (SW) portion and the wiring portion are separated as separate regions, and an intermediate region from the input of the LUT is provided. As a result, the switch SW part is separated from the SIM by using technologies such as layout information at the time of LSI design, circuit connection information (schematic), connection confirmation means (LVS), etc. The impact can be examined. In this case, the time for confirmation by simulation can be saved, so that the time efficiency is improved. As a confirmation method at this time, since it is known from the connection information whether the interconnection between the functional blocks occurs or whether the erroneous connection destination is open or driven by a driver, the scale of the input test vector can be reduced.
図9Cは、図9A、図9Bと同様に、機能サブブロックからの出力でFFにての分離とともに、図9Bと同様にスイッチ(SW)部と機能サブブロックRのLUT入力部を分離し中間領域を構成する際、その中間領域内に、さらに、LUTやFFを含むことが特徴になる。このLUTやFFは複数段で構成されてもよい。これにより、明らかに、機能サブブロックLと機能サブブロックRの分離領域について、自由度が持たせられる構成ができるとともに、この中間部分に対する検証を実施することで、検証の効率が向上する。 9C, as in FIGS. 9A and 9B, the output from the function sub-block is separated by FF, and the switch (SW) part and the LUT input part of the function sub-block R are separated as in FIG. When configuring an area, it is a feature that an LUT or FF is further included in the intermediate area. The LUT and FF may be composed of a plurality of stages. This clearly makes it possible to configure the separation region of the functional sub-block L and the functional sub-block R to have a degree of freedom, and the verification efficiency is improved by performing verification on this intermediate portion.
以上のように、機能ブロック間の分離をFPGA上で実施する際に、Look Up Table(LUT)の出力に設けられているFlip Flop(FF)の出力部で分離することは有効な手法である。 As described above, when the separation between the functional blocks is performed on the FPGA, it is an effective technique to separate at the output unit of the flip-flop (FF) provided at the output of the look-up table (LUT). .
図10は、CRAMのビット列を概念的に示したものである。CRAMのビットストリーム1001は、FPGA内のCRAMへ格納するためのビットの列によって表現される。本実施例のエラーインジェクションシミュレーションは、FPGAのCRAMの任意の位置に、エラー発生のシミュレーションが可能である。ただし、実際の評価に当たっては、ユーザが使用している領域に限って検証できればよい。したがって、FPGAの設計上、ユーザが使用していないビットが明らかになる場合は、エラーインジェクションによりシミュレーションを実施する上では、ユーザの使用ビットにのみエラーを発生させて評価することが効果的である。
FIG. 10 conceptually shows a bit string of CRAM. The
図10では、xと記載された位置1102にエラーが発生した(ビットが反転している)という想定であり、この条件は、危険側故障の対応したエラーモードe#mに対応していることが紐付けられるようになっている。
In FIG. 10, it is assumed that an error has occurred in the
なお、FPGA回路では、集積されているすべてのLUTやスイッチがユーザで使用されているとは限らず、一部はユーザが使用していない非使用ビットになっている。エラーインジェクションを効率的に実施するために、CRAMのビットに対して、ユーザ回路に影響を与える重要ビットとユーザ回路に影響を与えない非重要ビットに分類すると効果的である。この図にはその状況も説明している。 In the FPGA circuit, not all of the integrated LUTs and switches are used by the user, and some of them are unused bits that are not used by the user. In order to efficiently perform error injection, it is effective to classify CRAM bits into important bits that affect the user circuit and non-important bits that do not affect the user circuit. This figure also explains the situation.
この図に示す非重要ビットは、実際にユーザ回路に割り当てられていない非使用ビットとともに、実際にはユーザは使用していないが、ユーザ回路が使用する論理と直接的あるいは間接的に関連性が高い未使用のLUTおよびスイッチを除いた回路部分として定義される。また、重要ビットとは、ユーザが使用しているCRAMビットとともに、ユーザ回路に関連性の高いLUTおよびSWに関するCRAMビットで構成される。本実施例では、ユーザが使用しているCRAMのビットについてソフトエラーが発生した際にその影響を調べることが重要であるので、ユーザ使用ビットに関連する、重要ビットにのみエラーを発生させて、その影響を検証することが検証効率化の観点で重要になる。 The non-significant bits shown in this figure are not actually used by the user, but are directly or indirectly related to the logic used by the user circuit, as well as unused bits that are not actually assigned to the user circuit. Defined as the circuit part excluding expensive unused LUTs and switches. The important bits include CRAM bits used by the user and CRAM bits related to the LUT and SW that are highly relevant to the user circuit. In this embodiment, since it is important to examine the effect when a soft error occurs for a CRAM bit used by a user, an error is generated only for an important bit related to a user use bit, It is important to verify the effect from the viewpoint of verification efficiency.
図11は本願発明の実施の形態としての、設計ツールのGUIに関する実施例である。解析結果を回路に実装する実装ボタン1001と、CRAMのエラーインジェクションを実施するための、エラー挿入ボタン1102と、そのエラー挿入の状態でのシミュレーションを実行するためのボタン1103と、ユーザが指定した故障モードとの比較を実施する解析ボタン1104とを備えている。このボタンは、機械的なボタンであっても、電磁的な画像表示装置にて表現された、アプリケーションソフトウエアで示される選択項目の形であってもよい。
FIG. 11 shows an example of a GUI of a design tool as an embodiment of the present invention. A
挿入するエラーはビットストリームの任意のビットを変更する方法が考えられる。また、任意の回数ランダムにビットを変更する方法でもよい。 As an error to be inserted, a method of changing an arbitrary bit of the bit stream is considered. Moreover, the method of changing a bit at random arbitrary times may be used.
さらに、この評価に際しては、回路図1105や、FPGAへの実装状態図1106、論理的なシミュレーションの出力結果(波形図)1107、および、解析サマリ1108が表示されることが望ましい。解析サマリ1108には、先に述べた危険側故障モード一覧リスト126に基づいた内容が表示される。
Further, in this evaluation, it is desirable to display a circuit diagram 1105, a mounting state diagram 1106 on an FPGA, a logical simulation output result (waveform diagram) 1107, and an
図12には解析結果表示例を示す。回路の変更の影響を示すものとしては、図12(A)の解析結果表示例1に示すように、エラーモードe#mや、CRAMのビット情報の変化と回路変化の状態を示せるようになっていることが考えられる。この例では、図2に記載の例で説明している。このようにすることで、CRAMのビットストリームに挿入した、エラーの影響について、回路の変更の影響がわかるので、解析が容易になる。 FIG. 12 shows an example of analysis result display. As shown in the analysis result display example 1 in FIG. 12A, the influence of the circuit change can be indicated by the error mode e # m, the change of the bit information of the CRAM, and the state of the circuit change. It is possible that In this example, the example described in FIG. 2 is used. In this way, the influence of the error inserted into the CRAM bit stream can be understood, so that the analysis can be easily performed.
また、別の実施例では、図12(B)の解析結果表示例2に示すように、エラーモードe#mと、CRAMのエラーインジェクションの結果のエラー箇所のみを表示することでも可能である。ここでe#mはユーザ指定の危険側故障モードである。FPGAの内部接続構造を秘匿としたい場合は、CRAMのビット反転の情報は使用者に開示しないように構成してもよい。この場合、CRAMのビット反転の情報と回路変更の情報を直接対応付けることが困難になるので、その場合は、エラー箇所とユーザが指定した危険側の故障モードや、故障モードに含まれる付加情報がわかる形で表示すればよい。 In another embodiment, as shown in the analysis result display example 2 in FIG. 12B, it is possible to display only the error mode e # m and the error location of the CRAM error injection result. Here, e # m is a dangerous failure mode specified by the user. If the internal connection structure of the FPGA is to be kept secret, the CRAM bit inversion information may not be disclosed to the user. In this case, it becomes difficult to directly associate CRAM bit inversion information and circuit change information. In this case, the error location and the dangerous failure mode specified by the user or additional information included in the failure mode are not included. Display it in an understandable way.
FPGAの内部構造を秘匿とするために、物理的なCRAMのビット情報と回路接続情報を対応付けたくない場合は、CRAMの物理的な配置を、ユーザに開示するために、便宜的に、1対1対応変換を実施したビット列を用いて、そのビット列でのエラー挿入と、故障回路の対応を示すことでもよい。つまり、CRAMのビット列をユーザに開示可能なビット列に変換することで、FPGA内部構造を秘匿としながら、図12の解析結果表示例1に示すような、エラーの表示および評価が実施できる。 If the physical CRAM bit information and the circuit connection information are not to be associated with each other in order to keep the internal structure of the FPGA confidential, the physical arrangement of the CRAM is conveniently 1 to disclose to the user. A bit string that has been subjected to the one-to-one correspondence conversion may be used to indicate the error insertion in the bit string and the correspondence of the fault circuit. In other words, by converting the CRAM bit string into a bit string that can be disclosed to the user, it is possible to display and evaluate errors as shown in the analysis result display example 1 in FIG. 12 while keeping the FPGA internal structure confidential.
これは、危険側故障のモードが過不足無くユーザ設計者が確認できることが重要であるため、FPGA内のCRAMの全体にエラーが挿入されて、それが回路にどう反映するかが定量的に見出せればよいからである。本実施例によれば、FPGAのチップ内の詳細な構造は開示することは必要ない。 This is because it is important that the user designer can check the dangerous failure mode without excess or deficiency, so it is possible to quantitatively find out how errors are inserted in the entire CRAM in the FPGA and how they are reflected in the circuit. This is because it is only necessary. According to the present embodiment, it is not necessary to disclose the detailed structure in the FPGA chip.
ユーザがFPGAを使用するに際して、想定するエラーを確認するために、使用するCRAMの全ビットに対して反転操作が可能なことと、その結果の論理接続情報への変換後のSIMおよび変更箇所の提示等ができることが重要である。 When using the FPGA, in order to check the expected error, it is possible to invert all the bits of the CRAM to be used, and the SIM after the conversion to the logical connection information and the changed part It is important to be able to present.
これまで、FPGAのCRAMのソフトエラーの影響の評価を主に述べてきたが、LSI設計に当たっては、LSIのハード的な故障、いわゆる、永久故障についても評価できることが望ましい。FPGAであれば、配線部分をプログラマブルにできるので、永久故障の一部をソフトエラーとして代替表現できれば、その永久故障の影響をあらかじめ評価することができる。 Up to now, the evaluation of the effects of FPGA CRAM soft errors has been mainly described. However, it is desirable to be able to evaluate LSI hardware failures, so-called permanent failures. If it is FPGA, the wiring part can be made programmable, so if a part of the permanent failure can be expressed as a soft error instead, the influence of the permanent failure can be evaluated in advance.
図13は、その一例である。FPGAは、平面内に配置された回路ブロックを結ぶために、単純な例では、縦方向(この図では、N、S方向)および横方向(この図ではE,W方向)への2つの方向の結線を自由に接続するために、6つのスイッチ(ここでは、N型MOSFETで表現した)であらわされる。 FIG. 13 shows an example. In order to connect the circuit blocks arranged in a plane, the FPGA, in a simple example, has two directions in the vertical direction (N and S directions in this figure) and the horizontal direction (E and W directions in this figure). In order to connect these wires freely, it is expressed by six switches (represented here as N-type MOSFETs).
たとえば、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”とすればよい。 For example, in order to express connection in the E and W directions, as shown in FIG. 13A, CB0 = “0”, CB1 = “0”, CB2 = “1”, CB3 = “−”, CB4 = “0”, and CB5 = “0” may be set. Here, “−” indicates that either “0” or “1” may be used. On the other hand, when not connected, as shown in FIG. 13B, CB0 = "0", CB1 = "0", CB2 = "0", CB3 = "-", CB4 = "0", CB5 = “0” may be set.
これは、配線W-Eに対してマイグレーション等による接続と非接続の影響を、CRAMのビット反転で表現できることになり、エラーモードの影響をシミュレーションで確認できることになる。このような方法で、安全確保上、必要な配線や素子の故障の影響があらかじめシミュレーションで確認できるようになると、安全性を確保するためのさまざまな回路的な工夫に対する評価が定量的にできるようになり、安全用途へのFPGAの活用機会を増やすことができる。 This means that the influence of connection and disconnection due to migration or the like on the wiring W-E can be expressed by bit inversion of the CRAM, and the influence of the error mode can be confirmed by simulation. With this method, if the effects of necessary wiring and device failures can be confirmed in advance by simulation, it is possible to quantitatively evaluate various circuit measures to ensure safety. It is possible to increase the opportunities for using FPGAs for safety applications.
上記説明した本実施例によれば、FPGAのCRAMのビット反転によるいわゆるソフトエラーの影響を評価するために、挿入したCRAMのビット反転を故障挿入回路ネットリストに変換し、その影響としての故障モード一覧リストを出力することで、想定される故障モードを原理的にすべて挙げられることができるので、故障モードの検証のためのツールとして活用できる。また、故障挿入ネットリストの故障箇所のFPGA上の物理配置情報を実負荷接続/物理配置データと対応付けることにより、配線のマイグレーションによる断線やショートの確率等を加味して、注目する故障モードにおけるCRAMのソフトエラーによる機能の故障確率を求められることできる効果がある。これにより、FPGAを高安全化応用へ適用するための検証が実現できる効果がある。 According to the embodiment described above, in order to evaluate the effect of so-called soft error due to the bit reversal of the FPGA CRAM, the bit reversal of the inserted CRAM is converted into a fault insertion circuit netlist, and the failure mode as the effect is converted. By outputting the list, it is possible to list all possible failure modes in principle, so that it can be used as a tool for verifying failure modes. Also, by associating the physical location information on the FPGA of the failure location in the failure insertion netlist with the actual load connection / physical location data, the CRAM in the failure mode of interest, taking into account the probability of disconnection or short-circuit due to wiring migration, etc. There is an effect that the failure probability of the function due to the soft error can be obtained. As a result, there is an effect that verification for applying the FPGA to the high safety application can be realized.
これにより、安全側故障確率(SFF)が定量的に求められるので、安全性水準を満たすためのハードウエア冗長性を低減することが可能になり、低コスト化に寄与することができる。 Thereby, since the safety-side failure probability (SFF) is quantitatively obtained, it is possible to reduce the hardware redundancy for satisfying the safety level, which can contribute to cost reduction.
実施例中、シミュレーションを実行する構成は、コンピュータのハードウェアをソフトウェアで制御することで実現できる。また、ソフトウエアで構成した機能と同等の機能は、FPGA、ASICなどのハードウエアでも実現できる。そのような態様も本願発明の範囲に含まれる。 In the embodiment, the configuration for executing the simulation can be realized by controlling the hardware of the computer with software. In addition, functions equivalent to those configured by software can be realized by hardware such as FPGA and ASIC. Such an embodiment is also included in the scope of the present invention.
実施例1乃至6では、エラーインジェクションを実施後に論理的なシミュレーションを実施する方法について述べた。これは、半導体の設計において、設計した回路の動作を確認するために網羅的に入力信号の切り替えパタンを用意して、すべての動作において所望の動作が実現しているかを確認する、いわゆるダイナミック検証と呼ばれる手法である。 In the first to sixth embodiments, a method for performing a logical simulation after performing error injection has been described. This is a so-called dynamic verification in semiconductor design, in which an input signal switching pattern is prepared comprehensively to confirm the operation of the designed circuit, and whether the desired operation is realized in all operations. It is a technique called.
一方で、設計データの接続関係等を数学的なモデルとして捉え数学的な一致検証を実施する、いわゆる、形式検証と呼ばれる手法もある。本実施例では、後者の形式検証へ適用するための実施の形態について述べる。形式検証においては、いわゆるゲートレベルネットリストと呼ばれるLSI内に集積されるトランジスタ等の素子間を物理的に結線するよりも抽象的な、RTLレベルで実施されることが望ましい。 On the other hand, there is also a so-called formal verification method in which connection relations of design data are regarded as a mathematical model and mathematical coincidence verification is performed. In the present embodiment, an embodiment for application to the latter type verification will be described. Formal verification is preferably carried out at an RTL level, which is more abstract than physically connecting elements such as transistors integrated in an LSI called a so-called gate level netlist.
本実施例では、エラーインジェクションの結果のRTLについて形式検証を実施する例について述べる。形式検証を容易化するためには、RTL記述ファイルへのエラーインジェクション結果の反映が必要になる。以下で、エラーインジェクション結果の反映方法について図14を用いて説明する。 In the present embodiment, an example in which format verification is performed on the RTL resulting from error injection will be described. In order to facilitate format verification, it is necessary to reflect the error injection results in the RTL description file. Hereinafter, a method of reflecting the error injection result will be described with reference to FIG.
図14は実施例7の検証システムのツールおよびデータの関係を示す論理ブロック図である。図1の構成に追加して、RTL処理部(1401)、RTL vs ネットリスト対応テーブル(1402)、RTL変換ツール(1403)、SIM/期待値比較および形式検証エラー評価ツール(1404)、故障挿入RTL(1405)、形式検証結果(1406)、アサーション記述ファイル(1407)の構成を備える。また、論理合成ツール(110)は後述のように、図1の例に比べて機能が拡張されている。 FIG. 14 is a logical block diagram illustrating the relationship between tools and data in the verification system according to the seventh embodiment. In addition to the configuration in Figure 1, RTL processing unit (1401), RTL vs netlist correspondence table (1402), RTL conversion tool (1403), SIM / expected value comparison and formal verification error evaluation tool (1404), fault insertion It has the structure of RTL (1405), format verification result (1406), and assertion description file (1407). Further, as will be described later, the function of the logic synthesis tool (110) is expanded compared to the example of FIG.
RTL vs ネットリスト対応テーブル(1402)は、論理合成ツール(110)がネットリストを生成する際に、RTLからネットリストへの変換における結線情報等の対応を記述したテーブルである。 The RTL vs netlist correspondence table (1402) is a table describing the correspondence of connection information and the like in the conversion from the RTL to the netlist when the logic synthesis tool (110) generates the netlist.
RTL変換ツール(1403)は、故障挿入ネットリスト(124)とユーザ定義データであるRTL(130)と、RTL vs ネットリスト対応テーブル(1402)を入力とし、エラー挿入後のRTLを変換・生成するツールである。 The RTL conversion tool (1403) receives the fault insertion netlist (124), the user-defined data RTL (130), and the RTL vs netlist correspondence table (1402) as input, and converts and generates the RTL after error insertion Is a tool.
SIM/期待値比較および形式検証エラー評価ツール(1404)は、図1のSIM/期待値比較ツール(113)を、形式検証を実施できるように機能拡張したツールである。 The SIM / expected value comparison and formal verification error evaluation tool (1404) is a tool whose function is expanded so that formal verification can be performed on the SIM / expected value comparison tool (113) of FIG.
故障挿入RTL(1405)は、RTL変換ツール(1403)の出力結果である。形式検証結果(1406)は、SIM/期待値比較および形式検証エラー評価ツール(1404)の出力結果である。また、ユーザ定義データである、アサーション記述ファイル(1407)を有する。
1
ここでは、SIM/期待値比較および形式検証エラー評価ツール(1404)を便宜的に一つのブロックで示したが、このツールは必ずしも、ひとつのツールである必要はなく、SIMツール、期待値比較ツール、形式検証ツール、エラー評価ツールとして複数のツールにて構成される形でも構わない。Fault insertion RTL (1405) is an output result of the RTL conversion tool (1403). The format verification result (1406) is an output result of the SIM / expected value comparison and format verification error evaluation tool (1404). It also has an assertion description file (1407) that is user-defined data.
1
Here, the SIM / expected value comparison and formal verification error evaluation tool (1404) is shown as one block for convenience, but this tool does not necessarily have to be a single tool. , A form verification tool and an error evaluation tool may be configured by a plurality of tools.
図1の実施例と異なり、本実施例では、RTL(130)でのSIMや評価・検証が必要になるので、RTL(130)とネットリスト(120)との紐付けができるような仕組みとして、RTL vs ネットリスト対応テーブル(1402)等が入っている。ネットリスト(120)からRTL(130)への変換に際しては、RTL内の論理記述および端子等を階層的に個々の情報を特定するために、それぞれに固有の記号や番号を割り当てる等の処理をRTL情報に追記することが必要になる。これは、後々ネットリストからの変更の際に、変更箇所のみの変換を実施する上で必要な手続きを効率化するためである。このような付加情報の抽出およびRTL内の記述が完全に一意となるようなリネーム等の処理をRTL処理部(1401)で実施する。 Unlike the example of FIG. 1, in this example, since RTL (130) SIM and evaluation / verification are required, the RTL (130) and netlist (120) can be linked. , RTL vs netlist correspondence table (1402) etc. are included. When converting from the netlist (120) to the RTL (130), in order to identify individual information hierarchically in the logical description and terminals in the RTL, a process such as assigning a unique symbol or number to each is performed. It is necessary to add to the RTL information. This is for the purpose of improving the efficiency of the procedures necessary to carry out the conversion of only the changed portion when changing from the net list later. The RTL processing unit (1401) performs such processing as extraction of additional information and renaming so that the description in the RTL is completely unique.
RTL(130)は通常、モジュール単位で設計され、クロックの接続や処理する論理演算の情報が記述される。RTL vs ネットリスト対応テーブル(1402)は、モジュール名、論理演算式クロック接続情報等を階層的に保持する機能を持ち、論理合成ツール(110)はRTLのモジュール構成や論理接続情報に対応した一対一対応が容易となるような命名ルール等で対応付けられたネットリスト(120)を生成する。 The RTL (130) is usually designed in units of modules, and information on clock operations and logic operations to be processed is described. The RTL vs netlist correspondence table (1402) has a function for hierarchically holding module names, logical operation clock connection information, etc., and the logic synthesis tool (110) is a pair corresponding to RTL module configuration and logical connection information. A netlist (120) associated with a naming rule that facilitates one correspondence is generated.
もちろん、論理合成ツール(110)は、論理圧縮やタイミング調整等で全く一対一対応とならない場合もあるが、その場合は、対応する最小の論理単位で対応付ければよい。この最小の論理単位は、RTLのモジュール単位でもよいが、モジュール内をさらに細かい単位に分割してもよい。このように、論理合成の結果、論理圧縮等によりRTLとは一対一対応にならない場合でも、対応する範囲を制限することで、RTL(130)とネットリスト(120)の対応を保持することが可能である。それゆえ、RTL vs ネットリスト対応テーブル(1402)は、論理合成ツール(110)が生成することが望ましい。 Of course, the logic synthesis tool (110) may not be in one-to-one correspondence due to logic compression, timing adjustment, or the like, but in that case, it may be associated with the minimum corresponding logical unit. The minimum logical unit may be an RTL module unit, but the module may be divided into smaller units. As described above, even if the result of logic synthesis is not one-to-one correspondence with RTL due to logic compression or the like, the correspondence between RTL (130) and netlist (120) can be maintained by limiting the corresponding range. Is possible. Therefore, it is desirable that the logic synthesis tool (110) generates the RTL vs netlist correspondence table (1402).
RTL記述のモジュールに対して、ネットリスト記述のモジュールが対応している。さらにそのネットリストに対応してCRAMのアドレスマップが対応しているので、CRAMのビット反転操作を実施したアドレスから、変更モジュールを特定し、ネットリストvs (CRAM)ビットストリーム対応テーブル(122)より、結線変更箇所を特定すれば、RTLの変更箇所が特定できることになる。 The netlist description module corresponds to the RTL description module. Furthermore, since the CRAM address map corresponds to the netlist, the change module is identified from the address where the bit inversion operation of the CRAM is performed, and the netlist vs (CRAM) bitstream correspondence table (122) is used. If the connection change location is specified, the RTL change location can be specified.
RTL vs ネットリスト対応テーブル(1402)は、エラーインジェクション評価ツール(101)内のRTL変換ツール(1403)に入力される。RTL変換ツール(1403)は、故障挿入ネットリスト(124)からエラーインジェクションにより変更された部分に対応するネットリスト部分をRTLへ変換する機能を持つ。ネットリストは、通常、コメント文の記述が可能である。エラー挿入ツール(112)は、故障ネットリストを生成する際、該当するエラー挿入箇所について、エラー挿入箇所の開始部と終了部をコメント形式で追加して置くことが望ましい。RTL変換ツール(1403)は、入力された故障ネットリストから、上記のコメント文を検索し、エラー挿入箇所を抽出して、その部分のRTLを変更すればよいからである。これにより、必要最小限のデータの変換が実施される。 The RTL vs netlist correspondence table (1402) is input to the RTL conversion tool (1403) in the error injection evaluation tool (101). The RTL conversion tool (1403) has a function of converting a netlist part corresponding to a part changed by error injection from the fault insertion netlist (124) into RTL. In the netlist, a comment sentence can usually be described. When the error insertion tool (112) generates the failure net list, it is desirable to add the start part and the end part of the error insertion part in a comment format for the corresponding error insertion part. This is because the RTL conversion tool (1403) may search the above comment sentence from the input failure net list, extract the error insertion portion, and change the RTL of that portion. As a result, the necessary minimum data conversion is performed.
RTL変換ツール(1403)は、ユーザが設計したRTL(130)と、RTL vs ネットリスト対応テーブル(1402)と、故障挿入ネットリスト(124)を入力とし、故障挿入RTL(1405)を出力する。この変換に際しては、ネットリストからの一括変換も可能であるが、エラー挿入箇所のみの変換および、元のRTL(130)からの差分更新型で定義することが望ましい。これにより、たとえば、System Verilog でRTLが記述されていた場合、アサーション記述等が含まれる形で記述されたまま保持されることになるので、エラーインジェクション後の形式検証時の検証効率や工数削減率が高まる効果がある。また、エラーインジェクションの結果であることを明示するために、故障挿入のRTLについて、変更開始箇所および変更終了箇所にコメント文を記述することが望ましい。これにより、変更箇所に、アサーション記述ファイル等を利用して、再検証する際の確認が容易になるばかりでなく、RTLの可読性を向上させる上でも効果がある。 The RTL conversion tool (1403) receives the RTL (130) designed by the user, the RTL vs netlist correspondence table (1402), and the failure insertion netlist (124) as inputs, and outputs a failure insertion RTL (1405). In this conversion, batch conversion from the netlist is also possible, but it is desirable to define only the error insertion point conversion and the differential update type from the original RTL (130). As a result, for example, if RTL is described in System Verilog, it will be retained in the form that includes assertion description etc., so verification efficiency and man-hour reduction rate at the time of format verification after error injection Has the effect of increasing. In addition, in order to clearly indicate that it is the result of error injection, it is desirable to describe comment text at the change start location and change end location for the RTL for fault insertion. This not only facilitates confirmation when re-verifying using an assertion description file or the like for the changed part, but also has an effect of improving the readability of the RTL.
図15は、本実施例を実施する処理フローを示す。図3に記載の変換フローと比較して、RTLレベルの論理接続情報への変換を実施するフローが追加される。これにより、ネットリストからRTLへの変換が実施できることを示している。 FIG. 15 shows a processing flow for implementing this embodiment. Compared with the conversion flow shown in FIG. 3, a flow for performing conversion to logical connection information at the RTL level is added. This shows that conversion from the netlist to RTL can be performed.
本実施例では、FPGAに実装したCRAMの構成情報ビット情報を故意にビット反転させ、その影響を評価する。一般的なFPGAの設計フローと異なり、CRAMビットストリームからネットリストへの変換、および、ネットリストからRTLへの変換手段を有することが特長である。 In this embodiment, the configuration information bit information of the CRAM mounted on the FPGA is intentionally bit-inverted, and the influence is evaluated. Unlike a general FPGA design flow, it is characterized by having means for converting a CRAM bitstream to a netlist and a netlist to RTL.
まず、ユーザが実現したい機能を反映させた回路設計情報(RTL A)を用意する(S1501)。次に、RTL Aから論理合成を経て論理接続情報A(ネットリストA)を生成する(S1502)。回路設計情報(RTL A)はFPGAで構成したい、目的とする回路であり、本評価の対象データとなる。これは、FPGAの一部分の機能を切り出したものでもよい。 First, circuit design information (RTL A) reflecting the function that the user wants to realize is prepared (S1501). Next, logical connection information A (net list A) is generated from RTL A through logical synthesis (S1502). Circuit design information (RTL A) is the target circuit that you want to configure with FPGA, and is the target data for this evaluation. This may be a part of the function of the FPGA.
次にネットリストAを用いて、CRAMビットストリームAを生成させる(S1503)。その後、このCRAMビットストリームAに対して、一部のCRAMビットを反転させる処理、すなわち、エラーインジェクションを実施してCRAMのビットストリームBを生成する(S1504)。後述するように、CRAMビットの反転個所は目的に応じて選択することができる。 Next, a CRAM bit stream A is generated using the netlist A (S1503). Thereafter, a process of inverting some of the CRAM bits, that is, error injection is performed on the CRAM bit stream A to generate a CRAM bit stream B (S1504). As will be described later, the inversion portion of the CRAM bit can be selected according to the purpose.
その後、このCRAMビットストリームBに対応する論理接続情報B(ネットリストB)を生成する(S1505)。ビットストリームBから論理接続情報Bを生成する際には、既述のようにネットリストとビットストリームの対応が一対一に対応付けられている情報を利用すればよい。最後に、論理接続情報B(ネットリストB)から回路設計情報(RTL B)を生成する(S1506)。エラーインジェクションの形式検証は、このRTL Bに対してユーザ指定のアサーションデータを用いて実施される。 Thereafter, logical connection information B (net list B) corresponding to the CRAM bit stream B is generated (S1505). When the logical connection information B is generated from the bit stream B, information in which the correspondence between the netlist and the bit stream is one-to-one as described above may be used. Finally, circuit design information (RTL B) is generated from the logical connection information B (net list B) (S1506). Error injection format verification is performed on this RTL B using user-specified assertion data.
図16は、ネットリストからRTLへの変換方法について説明する概念図である。図2に記載のCRAMビット反転の影響を評価するという例を用いて、ネットリストからRTLへの変換方法について説明している。RTL Aは図2(B)の回路を記述するVerilog HDLのコードである。図15に記載のフローで、CRAMのビット反転の結果、その影響をネットリストに反映した回路が図2(c)である場合のRTL記述は、図15のRTL Bに記載の記述になる。 FIG. 16 is a conceptual diagram illustrating a method for converting a netlist to RTL. A netlist to RTL conversion method will be described using an example of evaluating the influence of CRAM bit inversion shown in FIG. RTL A is Verilog HDL code that describes the circuit of FIG. In the flow shown in FIG. 15, the RTL description in the case where the circuit reflecting the influence in the net list as a result of the bit inversion of CRAM in FIG. 2C is the description shown in RTL B in FIG. 15.
エラーインジェクションの結果、ネットリストが変更されるが、その際、新しく生成された素子名およびネット名は、ツールが自動生成したことがわかるように、マーキングを実施(たとえば、識別字xをつけ、素子名はandx01、ネット名はnetx01等)とすると差異が明確化できる。ネットリストからRTLへの変換に際しては、この識別字を頼りに検索し、RTLの対応するモジュールの論理式へ変換を実施すればよい。なお、変更されたRTLは変更開始箇所および変更終了箇所にコメント文を挿入すれば、変更箇所が明確化する。 As a result of error injection, the netlist is changed. At that time, the newly generated element name and net name are marked so that the tool automatically generates them (for example, with the identification character x, If the element name is andx01, the net name is netx01, etc., the difference can be clarified. When converting from the netlist to the RTL, the identification character may be used as a search and converted into the logical expression of the corresponding module in the RTL. The modified RTL can be clarified by inserting comment text at the start and end of the change.
本実施例では、この変更されたRTLに関して形式検証、たとえば、プロパティ検証を実施する例について説明する。 In this embodiment, an example will be described in which format verification, for example, property verification, is performed on the changed RTL.
プロパティ検証の一例としては、RTL Aで記述される以下の論理式において、
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)は成立せず、エラーが出力される。As an example of property verification, in the following logical expression described in RTL A,
assign o = (I0 & I1 | I2 & I3) (1)
In order to confirm that the expression (1) is satisfied, it is known that a description called an assertion is performed to mathematically confirm that the expression (1) holds. As an example, assume that the following assertion description is performed for RTL A to confirm that Equation (1) holds.
assert property (I0 == 0 & I1 == 0 & I2 == 0 & I3 == 0 |-> o == 0) Expression (2)
When described in this way, it can be confirmed and verified from the model structure that the output o becomes 0 when all of the inputs I0 to I3 are 0 under the conditions that can be assumed by the expression (1). In the case of Expression (1), it can be verified that the output is 0 in the case of the above input.
On the other hand, for RTL after error injection, the logical expression is
assign o = (((I0 & I1) | I1) | ~ (I2 | I3)) | I2 & I3) ... (3)
Therefore, when the property verification of the expression (2) is performed, the value of the output o becomes 1, so the expression (2) does not hold and an error is output.
この例では、CRAMへのエラー注入に対してはLUTレベルで発生しているという比較的簡単な回路での説明であるが、より複雑な、モジュール単位もしくは、複数のモジュールにまたがる論理式の変更が生じる場合であっても、また、複数サイクルにわたって影響が伝播する場合であっても、適切なアサーション文の記述ができれば、原理的にエラーの発見は可能である。 In this example, error injection to CRAM is explained with a relatively simple circuit that occurs at the LUT level, but more complex logic changes across modules or multiple modules Even if the error occurs or the effect propagates over a plurality of cycles, if an appropriate assertion statement can be described, an error can be found in principle.
安全設計で重要となるのは、危険側潜在故障の確率であり、エラー評価ツールは、この危険側潜在故障のモードを検出することが重要になる。危険側潜在故障は、FPGAへ実装される診断回路では検出できない故障のうち、ゆくゆくは、他の故障と複合化して危険状態に遷移してしまう故障モードである。そのため、考えられる危険側故障モードを再現するようなアサーション記述を実施することで、エラーインジェクションの影響が危険側か安全側かの判定が可能になる。エラーインジェクション評価を形式検証と組み合わせることで、考えられる危険側故障モードの確認が効率化できる効果がある。 What is important in the safety design is the probability of a dangerous potential failure, and it is important for the error evaluation tool to detect this dangerous potential failure mode. The dangerous latent failure is a failure mode in which, among failures that cannot be detected by the diagnostic circuit mounted on the FPGA, eventually, the failure is combined with other failures and transitions to a dangerous state. For this reason, it is possible to determine whether the influence of error injection is dangerous or safe by performing assertion description that reproduces a possible dangerous failure mode. Combining error injection evaluation with formal verification has the effect of making it possible to efficiently confirm possible dangerous failure modes.
<付記>
本願明細書には以下の発明が開示されている。すなわち;
論理回路情報をCRAMによって保持するFPGAについて、想定されるエラーを評価するシミュレータであって、処理装置、記憶装置、入力装置、および、出力装置を備え、
前記記憶装置は、前記FPGAに形成すべき回路設計情報(RTL)と、回路結線情報であるネットリストとの対応情報を格納し、また、ネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納し、
前記入力装置は、評価対象となる前記ネットリストに対応する前記ビットストリームの入力を受付け、
前記処理装置は、エラー挿入ツールと期待値比較ツールと、形式検証評価ツールを備え、
前記エラー挿入ツールは、
前記入力されたビットストリームに対して変更を加える手段と、
前記対応情報を参照し、前記ビットストリームの変更を前記評価対象となるネットリストに反映して故障挿入ネットリストを生成する手段と、
前記故障挿入ネットリストから故障挿入RTLを生成する手段と、
故障挿入RTLへの形式検証評価をするための形式検証評価情報を入力手段とを備え、
前記期待値比較ツールは、
前記故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する手段と、
前記シミュレーションの出力結果を出力期待値と比較する手段と、
前記形式検証評価ツールは前記故障挿入RTLに対して形式検証評価情報を用いて形式検証を実施し、その結果を保持する手段を備える
ことを特徴とするシミュレータ、である。<Appendix>
The present invention discloses the following invention. Ie;
For an FPGA that holds logic circuit information by CRAM, a simulator that evaluates an expected error, comprising a processing device, a storage device, an input device, and an output device,
The storage device stores correspondence information between circuit design information (RTL) to be formed in the FPGA and a net list which is circuit connection information, and a bit stream which is a bit string stored in the net list and the CRAM. Storing one-to-one correspondence information of
The input device receives an input of the bitstream corresponding to the netlist to be evaluated;
The processing apparatus includes an error insertion tool, an expected value comparison tool, and a format verification evaluation tool,
The error insertion tool is
Means for modifying the input bitstream;
Means for referring to the correspondence information and generating a fault insertion netlist by reflecting the change of the bitstream in the netlist to be evaluated;
Means for generating a fault insertion RTL from the fault insertion netlist;
Formal verification evaluation information for performing formal verification evaluation for fault insertion RTL, and input means,
The expected value comparison tool is:
Means for applying a predetermined input to the fault insertion netlist to perform a logical simulation;
Means for comparing the output result of the simulation with an expected output value;
The formal verification evaluation tool is a simulator comprising means for performing formal verification on the fault insertion RTL using formal verification evaluation information and holding the result.
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。 The present invention is not limited to the embodiments described above, and includes various modifications. For example, a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment. Moreover, it is possible to add / delete / replace the configurations of the other embodiments with respect to a part of the configurations of the embodiments.
FPGA等のエラー評価や設計支援の分野に適用可能である。 It is applicable to the field of error evaluation and design support such as FPGA.
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、FPGA ・ ・ ・ Field Programmable Gate Array,
CRAM ... Configuration Memory, LUT ... Look Up Table, SEL ... Selector, SW ... Switch, FF ... Flip Flop, GUI ... Graphic User Interface, CB ... CRAM Bit,
Claims (15)
処理装置、記憶装置、入力装置、および、出力装置を備え、
前記記憶装置は、前記FPGAに形成すべき回路結線情報であるネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納し、
前記入力装置は、評価対象となる前記ネットリストに対応する前記ビットストリームの入力を受付け、
前記処理装置は、エラー挿入ツールと期待値比較ツールを備え、
前記エラー挿入ツールは、
前記入力されたビットストリームに対して変更を加える手段と、
前記対応情報を参照し、前記ビットストリームの変更を前記評価対象となるネットリストに反映して故障挿入ネットリストを生成する手段を備え、
前記期待値比較ツールは、
前記故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する手段と、
前記シミュレーションの出力結果を出力期待値と比較する手段を備える、
ことを特徴とするシミュレータ。It is a simulator that evaluates an expected error for an FPGA that holds logic circuit information by CRAM.
A processing device, a storage device, an input device, and an output device;
The storage device stores one-to-one correspondence information between a net list which is circuit connection information to be formed in the FPGA and a bit stream which is a bit string stored in the CRAM,
The input device receives an input of the bitstream corresponding to the netlist to be evaluated;
The processing apparatus includes an error insertion tool and an expected value comparison tool,
The error insertion tool is
Means for modifying the input bitstream;
Means for referring to the correspondence information and generating a fault insertion netlist by reflecting the change of the bitstream in the netlist to be evaluated;
The expected value comparison tool is:
Means for applying a predetermined input to the fault insertion netlist to perform a logical simulation;
Means for comparing an output result of the simulation with an expected output value;
A simulator characterized by that.
真値および予め設定した危険側故障出力値を含む、
ことを特徴とする請求項1記載のシミュレータ。The output expected value is
Including true value and preset dangerous failure output value,
The simulator according to claim 1.
前記シミュレーションごとに、前記危険側故障出力値と一致した出力結果を故障モード一覧リストとして出力する、
ことを特徴とする請求項2記載のシミュレータ。The expected value comparison tool is:
For each simulation, output an output result that matches the dangerous failure output value as a failure mode list.
The simulator according to claim 2.
前記危険側故障率計算ツールは、
前記FPGAの実負荷接続および物理配置データと、前記故障挿入ネットリストと、前記故障モード一覧リストとを入力とし、
前記故障挿入ネットリストの故障箇所の物理配置情報を、前記実負荷接続および物理配置データと対応付けることにより特定して故障確率を推定し、
前記故障モード一覧リストの内容と対応付けて出力する
ことを特徴とする請求項3記載のシミュレータ。A dangerous failure rate calculation tool is provided,
The dangerous failure rate calculation tool is:
With the actual load connection and physical placement data of the FPGA, the fault insertion netlist, and the fault mode list as inputs,
The physical location information of the fault location in the fault insertion netlist is identified by associating with the actual load connection and physical location data to estimate the fault probability,
The simulator according to claim 3, wherein the simulator outputs the data in association with the contents of the failure mode list.
前記エラー挿入ツールに対して、前記ビットストリームの指定個所の変更またはランダムな変更を指示する手段を有する、
請求項1記載のシミュレータ。The input device is:
Means for instructing the error insertion tool to change a specified portion of the bitstream or to change it randomly.
The simulator according to claim 1.
前記対応情報の出力を禁止する機能を備え、
シミュレーション結果を表示する際には、
前記ネットリストを基に作成した前記FPGAの論理接続状態を示す解析結果情報と、該解析結果情報中の前記ビットストリームに対する変更が影響する部分を特定する情報を表示することを特徴とする、
請求項1記載のシミュレータ。The output means includes
A function of prohibiting output of the correspondence information;
When displaying simulation results,
Analysis result information indicating the logical connection state of the FPGA created based on the netlist, and information for specifying a part that affects the change to the bitstream in the analysis result information is displayed,
The simulator according to claim 1.
処理装置、記憶装置、入力装置、および、出力装置を備え、
前記入力装置は、
該CRAMに格納する、第一の論理接続情報に対応する第一のビット情報の入力を受付け、
前記処理装置は、
該第一のビット情報の一部のビットを反転書き換えして、第二のビット情報を生成する第1の手段と、
該第二のビット情報を、該第一のビット情報と一対一対応している該第一の論理接続情報が変更されたことに対応させて、第二の論理接続情報に変換する第2の手段と、
該第二の論理接続情報を用いて論理的および回路的なシミュレーションを実行する第3の手段を有することを特徴とする、
半導体回路装置の設計支援システム。In a field programmable LSI (FPGA) design support system that holds logic circuit information by a rewritable storage means called a configuration memory (CRAM),
A processing device, a storage device, an input device, and an output device;
The input device is:
Receiving the first bit information input corresponding to the first logical connection information stored in the CRAM;
The processor is
A first means for reversing a part of the bits of the first bit information to generate second bit information;
The second bit information is converted into second logical connection information in correspondence with the change of the first logical connection information that has a one-to-one correspondence with the first bit information. Means,
A third means for executing a logical and circuit simulation using the second logical connection information;
Design support system for semiconductor circuit devices.
該第二の論理接続情報への一乃至複数の入力と、該複数の入力のそれぞれに対応する該シミュレーションの出力結果を、別途定める該入力に対応する出力期待値と比較する手段を持ち、
該出力期待値は、
該第一の論理接続情報でのシミュレーション時に得られる正しい結果と、該第二のビット情報生成にあたり予め故障原因を想定した1乃至複数の故障時の出力結果とで構成される期待値表として定義されて前記記憶装置に格納され、
該出力期待値と比較する手段は、
該シミュレーションの出力結果と該出力期待値とで一致検索を実施し、該期待値表に記載のいずれかの期待値と一致する場合には、該入力および該期待値を関連付けて、前記出力手段に故障モード一覧として表示する検証手段を有することを特徴とする、
請求項7記載の半導体回路装置の設計支援システム。The third means includes
A means for comparing one or more inputs to the second logical connection information and an output result of the simulation corresponding to each of the plurality of inputs with an output expected value corresponding to the input determined separately;
The expected output value is
Defined as an expected value table consisting of correct results obtained during simulation with the first logical connection information and one or more output results at the time of failure assuming the cause of failure in generating the second bit information And stored in the storage device,
The means for comparing with the output expected value is:
A match search is performed between the output result of the simulation and the output expected value, and when the result matches with any one of the expected values described in the expected value table, the output and the expected value are associated with each other and the output means It has a verification means to display as a failure mode list in,
8. A design support system for a semiconductor circuit device according to claim 7.
請求項8記載の半導体回路装置の設計支援システム。Furthermore, for each failure expressed in the failure mode list, LSI wiring information, physical layout information, defect information in the manufacturing process, and other information necessary for LSI failure calculation are used as a basis. A means for calculating a failure probability corresponding to each failure mode,
9. A design support system for a semiconductor circuit device according to claim 8.
処理装置、記憶装置、入力装置、および、出力装置を用い、
前記記憶装置は、
前記FPGAに形成すべき回路結線情報であるネットリストと前記CRAMに格納されるビット列であるビットストリームの1対1の対応情報を格納し、
前記入力装置は、
評価対象となる前記ネットリストに対応する前記ビットストリームの入力を受付け、
前記処理装置は、
前記入力されたビットストリームに対して変更を加える第1のステップと、
前記対応情報を参照し、前記ビットストリームの変更が反映された故障挿入ネットリストを生成する第2のステップと、
前記故障挿入ネットリストに所定の入力を適用して論理的なシミュレーションを実施する第3のステップと、
を実行する半導体回路装置の設計支援方法。A design support method for a semiconductor circuit device that evaluates an assumed error for an FPGA that holds logic circuit information by CRAM,
Using a processing device, a storage device, an input device, and an output device,
The storage device
Storing one-to-one correspondence information between a net list which is circuit connection information to be formed in the FPGA and a bit stream which is a bit string stored in the CRAM;
The input device is:
Receiving the bitstream input corresponding to the netlist to be evaluated,
The processor is
A first step of modifying the input bitstream;
A second step of referring to the correspondence information and generating a fault insertion netlist reflecting the change of the bitstream;
A third step of applying a predetermined input to the fault insertion netlist to perform a logical simulation;
Design support method for semiconductor circuit device for executing
を実行する請求項10記載の半導体回路装置の設計支援方法。A fourth step of comparing the output result of the simulation with an expected output value;
The method of supporting design of a semiconductor circuit device according to claim 10, wherein:
前記第1〜第4のステップにおいて、前記部分情報について処理を行う、
請求項11記載の半導体回路装置の設計支援方法。The netlist to be evaluated and the bitstream corresponding to the netlist are partial information corresponding to a part of a circuit configured with the FPGA,
In the first to fourth steps, the partial information is processed.
12. A design support method for a semiconductor circuit device according to claim 11.
前記FPGAで実現するべき機能に応じて前記FPGAで構成される回路構成を分割した一部分、あるいは、前記機能を実現する上での安全コンセプトに基づいて分割した一部分である、
請求項12記載の半導体回路装置の設計支援方法。A portion of the circuit is:
A part obtained by dividing the circuit configuration configured by the FPGA according to the function to be realized by the FPGA, or a part divided based on a safety concept for realizing the function,
13. A design support method for a semiconductor circuit device according to claim 12.
前記FPGAで構成される回路構成のうちユーザの使用する論理に関係する回路に係る部分である、
請求項12記載の半導体回路装置の設計支援方法。A portion of the circuit is:
Of the circuit configuration composed of the FPGA, it is a part related to the circuit related to the logic used by the user,
13. A design support method for a semiconductor circuit device according to claim 12.
機能ブロック間の分離をFPGA上で実施する際に、
Look Up Table(LUT)の出力に設けられているFlip Flop(FF)の出力部で分離された前記機能ブロック、あるいは、
LUTの出力に設けられているFFの出力部、および、スイッチ回路部の出力部とで分離された前記機能ブロック、あるいは、
LUTの出力に設けられているFFの出力部、および、スイッチ回路部の出力部とで分離し、そのFF出力部とスイッチ部との間に一乃至複数のLUTおよびFFを設けることで分離された前記機能ブロックである、
請求項12記載の半導体回路装置の設計支援方法。A portion of the circuit is:
When separating the functional blocks on the FPGA,
The functional block separated at the output part of the flip flop (FF) provided at the output of the Look Up Table (LUT), or
The functional block separated by the output unit of the FF provided at the output of the LUT and the output unit of the switch circuit unit, or
Separated by the output part of the FF provided at the output of the LUT and the output part of the switch circuit part, and separated by providing one or more LUTs and FFs between the FF output part and the switch part. Is the functional block,
13. A design support method for a semiconductor circuit device according to claim 12.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/070188 WO2017009956A1 (en) | 2015-07-14 | 2015-07-14 | Simulator and system and method for assisting design of semiconductor circuit device |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2017009956A1 JPWO2017009956A1 (en) | 2018-02-15 |
JP6363297B2 true JP6363297B2 (en) | 2018-07-25 |
Family
ID=57757873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017528059A Expired - Fee Related JP6363297B2 (en) | 2015-07-14 | 2015-07-14 | Simulator, design support system and method for semiconductor circuit device |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6363297B2 (en) |
WO (1) | WO2017009956A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200126888A (en) * | 2019-04-30 | 2020-11-09 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | Method, apparatus, device, and medium for implementing simulator |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360907B2 (en) | 2014-01-14 | 2019-07-23 | Toyota Motor Engineering & Manufacturing North America, Inc. | Smart necklace with stereo vision and onboard processing |
US9915545B2 (en) | 2014-01-14 | 2018-03-13 | Toyota Motor Engineering & Manufacturing North America, Inc. | Smart necklace with stereo vision and onboard processing |
US9922236B2 (en) | 2014-09-17 | 2018-03-20 | Toyota Motor Engineering & Manufacturing North America, Inc. | Wearable eyeglasses for providing social and environmental awareness |
US10490102B2 (en) | 2015-02-10 | 2019-11-26 | Toyota Motor Engineering & Manufacturing North America, Inc. | System and method for braille assistance |
US9586318B2 (en) | 2015-02-27 | 2017-03-07 | Toyota Motor Engineering & Manufacturing North America, Inc. | Modular robot with smart device |
US9898039B2 (en) | 2015-08-03 | 2018-02-20 | Toyota Motor Engineering & Manufacturing North America, Inc. | Modular smart necklace |
US10561519B2 (en) | 2016-07-20 | 2020-02-18 | Toyota Motor Engineering & Manufacturing North America, Inc. | Wearable computing device having a curved back to reduce pressure on vertebrae |
US10432851B2 (en) | 2016-10-28 | 2019-10-01 | Toyota Motor Engineering & Manufacturing North America, Inc. | Wearable computing device for detecting photography |
CN110376921A (en) * | 2019-07-01 | 2019-10-25 | 国网江苏省电力有限公司电力科学研究院 | A kind of anti-accident deduction method, apparatus and system |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6045351B2 (en) * | 2013-01-08 | 2016-12-14 | 株式会社日立製作所 | Verification apparatus and verification method |
-
2015
- 2015-07-14 JP JP2017528059A patent/JP6363297B2/en not_active Expired - Fee Related
- 2015-07-14 WO PCT/JP2015/070188 patent/WO2017009956A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200126888A (en) * | 2019-04-30 | 2020-11-09 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | Method, apparatus, device, and medium for implementing simulator |
Also Published As
Publication number | Publication date |
---|---|
WO2017009956A1 (en) | 2017-01-19 |
JPWO2017009956A1 (en) | 2018-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6363297B2 (en) | Simulator, design support system and method for semiconductor circuit device | |
US10289483B2 (en) | Methods and apparatus for embedding an error correction code in storage circuits | |
Krishnaswamy et al. | Enhancing design robustness with reliability-aware resynthesis and logic simulation | |
US9298865B1 (en) | Debugging an optimized design implemented in a device with a pre-optimized design simulation | |
US20140189622A1 (en) | Partitioning designs to facilitate certification | |
US11574101B2 (en) | Techniques for providing optimizations based on categories of slack in timing paths | |
Naviner et al. | FIFA: A fault-injection–fault-analysis-based tool for reliability assessment at RTL level | |
KR20180112725A (en) | Device and method for detecting points of failures | |
US20180089352A1 (en) | Smart diagnosis of integrated circuits including ip cores with encrypted simulation models | |
Jose et al. | Rewiring for robustness | |
US8661379B1 (en) | Techniques and apparatus to validate an integrated circuit design | |
Veneris et al. | From RTL to silicon: The case for automated debug | |
US9390292B2 (en) | Encrypted digital circuit description allowing circuit simulation | |
JP5818762B2 (en) | Programmable logic device and verification method thereof | |
TWI488063B (en) | Apparatus, method and computer-readable storage medium to optimize and verify a first circuit | |
US20150227660A1 (en) | Integrated circuit clock tree visualizer | |
JP5807887B1 (en) | Programmable logic device, programmable logic device error verification method, and programmable logic device circuit formation method | |
US20130174107A1 (en) | Design tool for glitch removal | |
Niknahad et al. | QFDR-an integration of Quadded Logic for modern FPGAs to tolerate high radiation effect rates | |
Lee et al. | Static fault analysis for resilient System-on-Chip design | |
JP5899711B2 (en) | Data flow verification support apparatus and data flow verification support method | |
Chang et al. | InVerS: an incremental verification system with circuit similarity metrics and error visualization | |
JP4983642B2 (en) | Design verification program, design verification method, and design verification apparatus | |
Joseph | Logic Locking Framework and Its Application for Secure Boot in FPGAs | |
EP2793149B1 (en) | Partitioning designs to facilitate certification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171023 |
|
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: 20180529 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180627 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6363297 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |