半導体論理回路に対して様々な解析を行うシミュレータが存在する(例えば、特許文献1参照)。
その中には、CMOS型半導体論理回路(以下、単に「論理回路」と称する)に含まれている各MOS素子の作動時の電圧降下量に基づいて、論理回路の構成上の欠陥(以下、単に「欠陥」または「エラー」と称する)の有無を検証するシミュレータがある。
このシミュレータ(以下、「従来のシミュレータ」と称する)は、例えば、論理回路の設計に関するデータ(以下、単に「設計データ」と称する)を格納するデータベースを有する構成となっている。
従来のシミュレータは、以下のように動作することによって、論理回路の欠陥の有無を検証する。なお、ここでは、データベースは、論理回路の設計データ以外に、各種のデータとして、例えば、回路の動作が安定した状態すなわち定常状態時の電源端子及び接地端子の電圧値のデータ(以下、「定常状態時電圧データ」と称する)、回路の動作が変動している状態すなわち過渡状態時の電源端子及び接地端子の代表的な複数の電圧値のデータ(以下、「過渡状態時電圧データ」と称する)、論理回路の中の各区間の耐圧値として予め定められた耐圧値データ(以下、「区間基準耐圧」と称する)、論理回路に含まれているMOS素子の耐圧値として予め定められた耐圧データ(以下、「素子基準耐圧」と称する)等を格納しているものとして説明する。
従来のシミュレータは、まず、データベースから、検証の対象となっている論理回路の設計データや、定常状態時電圧データ、過渡状態時電圧データを読み出す。
次に、従来のシミュレータは、設計データが表す論理回路に対して、定常状態時電圧データ及び過渡状態時電圧データを参照して、電源端子と接地端子のそれぞれに、定常状態時の電源端子及び接地端子の電圧値並びに過渡状態時の電源端子及び接地端子の電圧値を仮想的に順次与えて、論理回路を定常状態と過渡状態とに順次遷移させながら、論理回路の中の各区間及び各MOS素子の作動状態を常時モニタリングする。
そして、従来のシミュレータは、定常状態時及び過渡状態時を通して、論理回路の中の予め定められた各区間の電圧降下量差を算出して、各区間の電圧降下量差が各区間に対応して予め定められた区間基準耐圧よりも大きくなるときがあるか否かを検証する。以下、区間の電圧降下量差に基づく検証を「区間耐圧検証」と称する。従来のシミュレータは、区間耐圧検証で、各区間の電圧降下量差が各区間に対応して予め定められた区間基準耐圧よりも大きくなるときがある場合に、「エラーあり」すなわち「論理回路の中に欠陥が存在する」と判定する。また、従来のシミュレータは、各区間の電圧降下量差が各区間に対応して予め定められた区間基準耐圧よりも大きくなるときがない場合に、「エラーなし」すなわち「論理回路の中に欠陥が存在しない」と判定する。
さらに、従来のシミュレータは、定常状態時及び過渡状態時を通して、論理回路に含まれている各MOS素子の電圧降下量を算出して、各MOS素子が各MOS素子に対応して予め定められた素子基準耐圧よりも大きくなるときがあるか否かを検証する。以下、MOS素子の電圧降下量に基づく検証を「素子耐圧検証」と称する。従来のシミュレータは、素子耐圧検証で、各MOS素子の電圧降下量が各MOS素子に対応して予め定められた素子基準耐圧よりも大きくなるときがある場合に、「エラーあり」すなわち「論理回路の中に欠陥が存在する」と判定する。また、従来のシミュレータは、各MOS素子の電圧降下量が各MOS素子に対応して予め定められた素子基準耐圧よりも大きくなるときがない場合に、「エラーなし」すなわち「論理回路の中に欠陥が存在しない」と判定する。
このようにして、従来のシミュレータは、論理回路の欠陥の有無を検証していた。
なお、従来のシミュレータは、「エラーあり」と判定した場合に、「エラーあり」を表すデータと論理回路の中のどの箇所に欠陥があるのかを表すデータとを、レポートとして、オペレータが視認可能な状態で出力する。オペレータや回路の設計者は、レポートの内容と、回路構成とを見比べて、問題箇所を特定し、その問題箇所が本当に欠陥の存在する箇所であるか否かを確認していた。他方、従来のシミュレータは、「エラーなし」と判定した場合には、このようなレポートを出力しない。
ところで、従来のシミュレータは、検証の対象の論理回路がカスコード接続すなわち電源端子と出力端子との間で直列に接続された複数のMOS素子を含む構成である場合に、論理回路の欠陥の有無を検証する際に、論理回路が実際には欠陥が存在しない回路であるにもかかわらず、誤って「エラーあり」すなわち「論理回路の中に欠陥が存在する」と判定するときがあった。
以下、まず、図14及び図15を参照して、MOS素子がカスコード接続された回路の構成につき説明し、続いて、図16を参照して、論理回路の欠陥の有無の検証につき説明する。なお、図14は、MOS素子がカスコード接続されていないCMOS型インバータ回路(以下、「通常接続のインバータ回路」と称する)の一構成例を示す図である。また、図15は、MOS素子がカスコード接続されているCMOS型インバータ回路(以下、「カスコード接続のインバータ回路」と称する)の一構成例を示す図である。また、図16は、論理回路の欠陥の有無の検証を説明するための図である。なお、以下の説明では、実際に欠陥が存在する回路に対して「エラーあり」と判定されたときの「エラー」と実際には欠陥が存在しない回路に対して誤って「エラーあり」と判定されたときの「エラー」とを区別する場合に、前者を「真正エラー」と称し、後者を「擬似エラー」と称する。
図14に示す通常接続のインバータ回路I1は、電源端子Vddと接地端子Gndとの間に、電源端子Vdd側から接地端子Gnd側に向かって順に、1つのP型MOS素子と1つのN型MOS素子とが直列に接続された構成となっている。このインバータ回路I1は、入力端子InがP型MOS素子とN型MOS素子の各ゲートに接続され、さらに、出力端子OutがP型MOS素子とN型MOS素子の間に接続されている。したがって、インバータ回路I1は、電源端子Vddと出力端子Outとの間に1つのP型MOS素子が接続され、かつ、出力端子Outと接地端子Gndとの間に1つのN型MOS素子が接続された構成となっている。
他方、図15に示すカスコード接続のインバータ回路I2は、電源端子Vddと接地端子Gndとの間に、電源端子Vdd側から接地端子Gnd側に向かって順に、2つのP型MOS素子(以下、電源端子Vdd寄りのP型MOS素子を「第1のP型MOS素子」と称し、接地端子Gnd寄りのP型MOS素子を「第2のP型MOS素子」と称する)と2つのN型MOS素子(以下、電源端子Vdd寄りのN型MOS素子を「第1のN型MOS素子」と称し、接地端子Gnd寄りのN型MOS素子を「第2のN型MOS素子」と称する)とが直列に接続された構成となっている。このインバータ回路I2は、入力端子Inが第1及び第2のP型MOS素子の各ゲートと第1及び第2のN型MOS素子の各ゲートに接続され、さらに、出力端子Outが第2のP型MOS素子と第1のN型MOS素子の間に接続されている。したがって、インバータ回路I2は、電源端子Vddと出力端子Outとの間に2つのP型MOS素子が直列に接続され、かつ、出力端子Outと接地端子Gndとの間に2つのN型MOS素子が直列に接続された構成となっている。
ここで、図14に示すインバータ回路I1及び図15に示すインバータ回路I2に対して、電源端子VddにV1ボルトの電圧を仮想的に与え、また、接地端子Gndに0ボルトの電圧を仮想的に与えるものとする。そして、P型MOS素子がOFF状態の素子として機能し、N型MOS素子がON状態の素子として機能するものとする。
この場合に、図14に示す通常接続のインバータ回路I1では、電源端子Vddと出力端子Outとの間に、P型MOS素子が1つしか存在しない。そのため、電源端子Vddと出力端子Outとの間のP型MOS素子のドレイン−ソース間にかかる電圧は、分散しない。したがって、この場合に、インバータ回路I1では、P型MOS素子の電圧降下量は、V1ボルトとなる。
これに対して、図15に示すカスコード接続のインバータ回路I2では、電源端子Vddと出力端子Outとの間に、P型MOS素子が2つ存在する。そのため、電源端子Vddと出力端子Outとの間の各P型MOS素子のドレイン−ソース間にかかる電圧は、2つのP型MOS素子にほぼ均等に分散する。したがって、この場合に、インバータ回路I2では、各P型MOS素子の電圧降下量は、V1/2ボルトとなる。
このようにカスコード接続の回路は、n個のMOS素子がカスコード接続されている場合に、通常接続の回路に比べて、カスコード接続された各MOS素子のドレイン−ソース間にかかる電圧を1/nに抑えることができる。
仮に、MOS素子の素子基準耐圧が例えばV1ボルトであったとする。この場合に、図14に示す通常接続のインバータ回路I1は、最大でV1ボルトの電圧しか電源端子Vddに与えることができないが、図15に示すカスコード接続のインバータ回路I2は、最大でV1×2ボルトの電圧を電源端子Vddに与えることができる。したがって、カスコード接続の回路は、n個のMOS素子がカスコード接続されている場合に、通常接続の回路に比べて、n倍の耐圧特性を得ることができる。
しかしながら、従来のシミュレータは、カスコード接続の回路がn倍の耐圧特性を得ることができるにもかかわらず、論理回路がカスコード接続の回路であってもなくても、論理回路を通常接続の回路と同様に検証するだけであった。
例えば、図16に示すように、従来のシミュレータは、カスコード接続のインバータ回路I2に対して、論理回路の欠陥の有無を検証するものとする。なお、図16は、図15と同じ構成を示している。以下の説明では、電源端子Vddと第1のP型MOS素子との間のノードを「ノードA」と称し、第1のP型MOS素子と第2のP型MOS素子との間のノードを「ノードB」と称し、第2のP型MOS素子と第1のN型MOS素子との間のノードを「ノードC」と称する。なお、このインバータ回路I2のノードBの電圧降下量は、入力端子Inの入力電圧によって変化する。
ここで、ノードA−C間の区間設定耐圧が2ボルトであり、また、ノードA−C間の第1及び第2のP型MOS素子の素子基準耐圧がそれぞれ1.5ボルトであるものとする。この場合に、従来のシミュレータは、ノードA−C間の電圧降下量差が区間設定耐圧の2ボルトよりも大きい場合か、または、ノードA−C間の各MOS素子の電圧降下量が素子基準耐圧の1.5ボルトよりも大きい場合に、「エラーあり」と判定する。
仮に、ノードAに2ボルトの電圧を仮想的に与え、また、ノードCに0ボルトの電圧を仮想的に与え、また、入力端子Inに0ボルトの入力電圧を与えるものとする。この場合に、ノードA−C間の電圧降下量差が区間設定耐圧の2ボルト以下であるので、従来のシミュレータは、ノードA−C間の電圧降下量差に基づく判定では、「エラーなし」と判定する。また、この場合に、第1及び第2のP型MOS素子は、入力端子Inの入力電圧が0ボルトであるので、ON状態となる。そのため、ノードBの電圧降下量は、(2/2)=1ボルトとなる。したがって、ノードA−C間の各MOS素子の電圧降下量が素子基準耐圧の1.5ボルト以下であるので、従来のシミュレータは、ノードA−C間の各MOS素子の電圧降下量に基づく判定では、「エラーなし」と判定する。
これに対して、仮に、ノードAに2ボルトの電圧を仮想的に与え、ノードCに0ボルトの電圧を仮想的に与え、また、入力端子Inに2ボルトの入力電圧を与えるものとする。この場合に、ノードA−C間の電圧降下量差が区間設定耐圧の2ボルト以下であるので、従来のシミュレータは、ノードA−C間の電圧降下量差に基づく判定では、「エラーなし」と判定する。また、この場合に、第1及び第2のP型MOS素子は、入力端子Inの入力電圧が2ボルトであるので、OFF状態となる。そのため、ノードBの電圧降下量は、電気的に浮いた状態となる。このとき、仮に、従来のシミュレータがノードBの電圧降下量を素子基準耐圧の1.5ボルトよりも大きい値(例えば、入力端子Inの入力電圧と同じ値すなわち2ボルト)として算出すると、従来のシミュレータは、ノードA−C間の各MOS素子の電圧降下量に基づく判定では、「エラーあり」と判定する。しかしながら、この判定の「エラー」は、擬似エラーに過ぎない。
このように、従来のシミュレータは、論理回路が実際には欠陥が存在しない回路であるにもかかわらず、誤って「エラーあり」すなわち「論理回路の中に欠陥が存在する」と判定するときがあった。特に、従来のシミュレータは、論理回路を小単位に分離して欠陥の有無を検証する場合に、電気的に浮いた状態となっているノード(以下、「フローティングノード」と称する)が存在するか否かを考慮していなかった。そのため、このような場合に、従来のシミュレータは、誤って「エラーあり」と判定するときが多かった。
また、論理回路は、入力電圧の値によって各MOS素子にかかる電圧が変化する。そのため、従来のシミュレータは、論理回路の欠陥の有無を検証する際に、確認すべき全てのパターンで検証する必要がある。しかしながら、検証する際に用いる過渡状態時電圧データは、過渡状態における代表的な複数の電圧値を表しているに過ぎず、確認すべき全てのパターンの中からいくつかのパターンのデータが抜け落ちている可能性がある。したがって、従来のシミュレータは、論理回路の欠陥の有無を検証する際に、検証漏れを起こすときがあった。すなわち、従来のシミュレータは、論理回路が実際には欠陥が存在する回路であるにもかかわらず、誤って「エラーなし」すなわち「論理回路の中に欠陥が存在しない」と判定するときがあった。
特開2003−256497号公報
以下、図を参照して、この発明の実施の形態につき説明する。各図において、共通する構成要素や同様な構成要素については、同一の符号を付し、それらの重複する説明を省略する。
[実施の形態例1]
<シミュレータの構成>
実施の形態例1に係るシミュレータは、P型MOS素子がOFF状態として機能し、N型MOS素子がON状態として機能するときの論理回路の欠陥の有無を検証する構成となっている。そのため、実施の形態例1に係るシミュレータは、P型MOS素子を高抵抗素子に、また、N型MOS素子を低抵抗素子に置き換える構成となっている。
以下、図1を参照して、実施の形態例1に係るシミュレータの構成につき説明する。なお、図1は、実施の形態例1に係るシミュレータの構成を説明するためのブロック図である。
図1に示すように、シミュレータ100は、内部に、各種の演算を実行する演算部110と各種のデータを格納するデータベース160とを有している。また、シミュレータ100は、外部に、マウスやキーボード等の、各種の指示やデータを入力する入力部111と、ディスプレイやプリンタ等の、各種のデータを出力する出力部112とを有している。
なお、シミュレータ100は、1台のコンピュータ(ただし、回路の解析用に専用に製造された装置を含む)によって構成することも、また、通信網を介して接続された複数台のコンピュータ(ただし、回路の解析用に専用に製造された装置を含む)によって構成することもできる。
1台のコンピュータによってシミュレータ100を構成する場合、演算部110は、当該コンピュータのCPUによって構成され、また、データベース160は、当該コンピュータの、回路を解析するためのプログラム(以下、「回路解析用プログラム」と称する)が読み出し自在に格納されたRAMによって構成される。他方、複数台のコンピュータによってシミュレータ100を構成する場合、演算部110は、端末となるコンピュータによって構成され、また、データベース160は、各種のデータを保存し管理するデータベースサーバによって構成される。なお、この場合、回路解析用プログラムは、端末となるコンピュータのRAMに読み出し自在に格納されている。
演算部110は、内部に、主制御部115、回路接続変更部120、抵抗置換部125、定常解析部140、素子耐圧検証部145等の機能手段を備えている。なお、各機能手段は、データを生成した場合に、生成したデータを格納部に一旦格納する。また、各機能手段は、格納部から所望のデータを読み出して、予め定められた処理を行う。これらの一連の動作は、読み出し自在に格納部に予め格納された回路解析用プログラムによって規定されている。以下、この点については、その詳細な説明を省略する。
主制御部115は、演算部110内部の各機能手段(例えば、回路接続変更部120、抵抗置換部125、定常解析部140、素子耐圧検証部145等)の動作を制御する機能手段である。主制御部115の動作は、前述の回路解析用プログラムによって規定されている。主制御部115は、前述のRAMから回路解析用プログラムを読み出して、読み出した回路解析用プログラムに基づいて図示せぬ制御信号を生成し、生成した制御信号を各機能手段に出力して各機能手段を作動させる。以下、主制御部115の動作については、説明を省略する。
回路接続変更部120は、CMOS型半導体論理回路(以下、単に「論理回路」と称する)を、インバータ単位の複数の回路(以下、「分離回路」と称する)に分離し、さらに、各分離回路の内部に電気的に浮いた状態となっているノード(フローティングノード)が存在する場合に、フローティングノードの存在形態に応じて、各分離回路に含まれている各MOS素子の接続関係を部分的に変更する機能手段でもある。なお、回路接続変更部120は、各分離回路の内部にフローティングノードが存在する場合に各MOS素子の接続関係を部分的に変更するが、各分離回路の内部にフローティングノードが存在しない場合には何もせずに分離したままの各MOS素子の接続関係を維持する。以下、回路接続変更部120の各MOS素子の接続関係を部分的に変更する動作及び維持する動作を、まとめて、「再構成」と称する。なお、ここでは、「インバータ単位の回路」とは、単一の入力端子と単一の出力端子との間に構成された複数のMOS素子からなるインバータ回路を意味している。
抵抗置換部125は、回路接続変更部120により分離された各分離回路に含まれている各MOS素子を、OFF状態及びON状態のいずれか一方の状態に応じて、OFF状態の素子として機能する高抵抗素子またはON状態の素子として機能する低抵抗素子に置き換える機能手段である。なお、抵抗置換部125は、定常解析部140が各MOS素子の電圧降下量を算出し易いように、好ましくは、同じ型のMOS素子であれば、同じ抵抗値の抵抗素子に置き換えるとよい。この実施の形態例では、抵抗置換部125は、P型MOS高抵抗置換部130とN型MOS低抵抗置換部135とを備えている。P型MOS高抵抗置換部130は、各分離回路に含まれているP型MOS素子を、OFF状態の素子として機能する高抵抗素子に置き換える機能手段である。N型MOS低抵抗置換部135は、各分離回路に含まれているN型MOS素子を、ON状態の素子として機能する低抵抗素子に置き換える機能手段である。なお、「高抵抗」の値と「低抵抗」の値は、相対的に定まる値である。「高抵抗」の値と「低抵抗」の値は、好ましくは、例えば1kΩと1Ωのように、1000倍程度の差に設定するとよい。
定常解析部140は、抵抗置換部125により各MOS素子が抵抗素子に置き換えられた状態となっている各分離回路に対して、各分離回路の電源端子と接地端子に予め定められた電圧を仮想的に与えて各分離回路を定常状態にし、各分離回路の定常状態を解析することにより、各分離回路に含まれている各高抵抗素子及び各低抵抗素子の定常状態時の電圧降下量を算出する機能手段である。
素子耐圧検証部145は、定常解析部140により算出された各高抵抗素子の定常状態時の電圧降下量(以下、単に「各高抵抗素子の電圧降下量」と称する)と、高抵抗素子の耐圧値として予め定められた素子基準耐圧とを比較して、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定する機能手段である。
素子耐圧検証部145は、素子基準耐圧よりも大きい電圧降下量の高抵抗素子が存在する場合に、「エラーあり」すなわち「論理回路の中に欠陥が存在する」と判定する。そして、素子耐圧検証部145は、素子耐圧の検証結果データとして「エラーあり」を表すデータを生成し、さらに、論理回路の中のどの箇所に欠陥があるのかを表すデータ(以下、「問題箇所データ」と称する)を生成して、生成した検証結果データ及び問題箇所データを検証結果データ格納部190に格納する。なお、検証結果データ格納部190に格納された検証結果データ及び問題箇所データは、主制御部115によって検証結果データ格納部190から読み出されて、シミュレータ100の出力部112を介して、レポートとして、シミュレータ100のオペレータに視認可能な状態で出力される。レポートには、問題箇所として検出されたMOS素子の符号や、当該MOS素子の電圧降下量、当該MOS素子の素子基準耐圧等が記述されている。オペレータや回路の設計者は、レポートの内容と、回路構成とを見比べて、問題箇所を特定し、その問題箇所が本当に欠陥の存在する箇所であるか否かを確認することになる。
また、素子耐圧検証部145は、素子基準耐圧よりも大きい電圧降下量の高抵抗素子が存在しない場合に、「エラーなし」すなわち「論理回路の中に欠陥が存在しない」と判定する。そして、素子耐圧検証部145は、素子耐圧の検証結果データとして「エラーなし」を表すデータを生成し、生成した検証結果データを検証結果データ格納部190に格納する。
データベース160は、内部に、参照データ格納部165、設計データ格納部170、再構成データ格納部175、抵抗置換データ格納部180、解析結果データ格納部185、検証結果データ格納部190等を備えている。
参照データ格納部165は、論理回路の欠陥の有無を検証する際に参照される各種のデータ(以下、「参照データ」と称する)を予め格納する格納手段である。「参照データ」としては、例えば、論理回路の仕様が決定される際に定められるデータ(以下、「回路仕様データ」と称する)や、製造プロセスが決定される際に定められるデータ(以下、「製造プロセスデータ」と称する)等がある。なお、「回路仕様データ」としては、例えば、定常状態時の電源端子Vdd及び接地端子Gndの電圧値データ等がある。また、「製造プロセスデータ」としては、MOS素子の素子基準耐圧データ等がある。
設計データ格納部170は、論理回路の設計に関するデータ(以下、「設計データ」と称する)を予め格納する格納手段である。なお、「設計データ」は、論理回路が設計された際に定められる。「設計データ」としては、論理回路の構成を表すデータや、論理回路を構成する各領域の寸法を表すデータ、各領域に用いる材料を表すデータ、各領域の不純物濃度を表すデータ等がある。ここでは、設計データは、論理回路の中の各部位の構成を予め定められた形式で記述されたデータの集合であり、設計データによって論理回路の全体の構成が表されるものとする。
再構成データ格納部175は、再構成された各分離回路の構成を表すデータ(以下、「再構成データ」と称する)を格納する格納手段である。「再構成データ」は、回路接続変更部120が各分離回路を再構成した際に、回路接続変更部120によって生成される。
抵抗置換データ格納部180は、各MOS素子が対応する抵抗素子に置き換えられた分離回路の構成を表すデータ(以下、「抵抗置換データ」と称する)を格納する格納手段である。「抵抗置換データ」は、抵抗置換部125が各MOS素子を対応する抵抗素子に置換した際に、抵抗置換部125によって生成される。この実施の形態例では、抵抗置換部125のP型MOS高抵抗置換部130がP型MOS素子を高抵抗素子に置換した際、及び、抵抗置換部125のN型MOS低抵抗置換部135がN型MOS素子を低抵抗素子に置換した際に生成される。
解析結果データ格納部185は、定常状態における分離回路の電気的特性を表すデータ(以下、「解析結果データ」と称する)を格納する格納手段である。「解析結果データ」は、定常解析部140が、各分離回路の電源端子と接地端子に予め定められた電圧を仮想的に与えて各分離回路の定常状態を解析した際に、定常解析部140によって生成される。なお、「解析結果データ」としては、各分離回路に含まれている各高抵抗素子及び各低抵抗素子の定常状態時の電圧降下量を表すデータ等がある。
検証結果データ格納部190は、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定した結果を表すデータ(以下、「検証結果データ」と称する)を格納する格納手段である。「検証結果データ」は、素子耐圧検証部145が、定常解析部140により算出された各高抵抗素子の電圧降下量と、高抵抗素子の耐圧値として予め定められた素子基準耐圧とを比較して、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定した際に、素子耐圧検証部145によって生成される。この「検証結果データ」は、分離回路の中の欠陥の有無を表すデータでもある。
<シミュレータの動作>
以下、図2、図3(A)〜(E)、図4(A)〜(E)、図5(A)及び(B)、図6、並びに、図7(A)及び(B)を参照して、シミュレータ100の動作につき説明する。なお、図2は、シミュレータの動作を示すフローチャートである。図3(A)〜(E)及び図4(A)〜(E)は、それぞれ、回路接続変更部の動作を説明するための図である。図5(A)及び(B)は、それぞれ、抵抗置換部の動作を説明するための図である。図6は、定常解析部の動作を説明するための図である。図7(A)及び(B)は、それぞれ、素子耐圧検証部の動作を説明するための図である。
シミュレータ100のオペレータは、シミュレータ100の入力部111を操作して、論理回路の欠陥の有無の検証を開始させるための指示(以下、「検証開始指示」)をシミュレータ100に入力する。これにより、シミュレータ100は、動作を開始する。なお、ここでは、「検証開始指示」は、検査対象となっている論理回路を指定するデータを含んでいるものとして説明する。
回路接続変更部120は、検証開始指示が入力されると、これに応答して、設計データ格納部170から、検証開始指示によって指定された検証の対象となっている論理回路の設計データを読み出す(S105)。
なお、設計データは、前述のとおり、論理回路の中の各部位の構成を予め定められた形式で記述されたデータの集合である。ここでは、設計データは、論理回路の中の各MOS素子の構成が、例えば、「各MOS素子の符号、メイン端子の接続先、素子の型名、パラメータ」の形式で記述されているものとする。なお、「各MOS素子の符号」データとは、論理回路の中の各MOS素子を特定するために、各MOS素子に対して割り振られた符号を表すデータを意味している。また、「メイン端子の接続先」データとは、ドレイン端子とゲート端子とソース端子とバックゲート端子の4つのメイン端子の接続先を表すデータを意味している。また、「型名」データとは、素子の型を表すデータを意味している。また、「パラメータ」データとは、ゲート幅やゲート長等のMOS素子の物理特性を表すデータを意味している。
具体的には、設計データは、例えば、「p0」番目の「MOS素子」に関するデータを表す場合に、「各MOS素子の符号」データとして、「mp0」のように記述される。また、例えば、設計データは、ドレイン端子が出力端子Outに接続され、ゲート端子が入力端子Inに接続され、ソース端子が電源端子Vddに接続され、バックゲート端子が電源端子Vddに接続された構成を表す場合に、「メイン端子の接続先」データとして、「Out、In、Vdd、Vdd」のように記述される。また、設計データは、MOS素子が「P」型である場合に、「型名」データとして、「pch」のように記述される。また、設計データは、「ゲート幅」を1マイクロとし、「ゲート長」を1マイクロとする素子の構成を表す場合に、「パラメータ」データとして、「w=1μ,l=1μ」のように記述される。その結果、設計データは、例えば、「mp0 Out In Vdd Vdd pch w=1μ l=1μ」のように、記述される。
なお、論理回路における各部位の位置は、設計データによって特定されている。したがって、論理回路の全体の構成は、設計データによって構成が特定された各部位をそれぞれ対応する位置に配置して組み合わせることによって、表される。図3(A)及び図4(A)に、設計データによって表された論理回路の一例を示す。図3(A)に示す論理回路NAND1は、カスコード接続された構成を含むNAND回路として構成されている。また、図4(A)に示す論理回路NOR1は、カスコード接続された構成を含むNOR回路として構成されている。
図3(A)に示す論理回路NAND1は、2つの電源端子(以下、それぞれ、「第1の電源端子Vdd11」及び「第2の電源端子Vdd12」と称する)と、1つの接地端子(以下、「接地端子Gnd11」と称する)と、2つの入力端子(以下、それぞれ、「第1の入力端子In11」及び「第2の入力端子In12」と称する)と、1つの出力端子(以下、「出力端子Out11」と称する)を有している。論理回路NAND1は、第1の電源端子Vdd11と接地端子Gnd11との間に、第1の電源端子Vdd11側から接地端子Gnd11側に向かって順に、2つのP型MOS素子P11,P12と4つのN型MOS素子N11,N12,N13,N14とが直列に接続されている。2つのP型MOS素子P11,P12の各ゲートと第1の電源端子Vdd11側の2つのN型MOS素子N11,N12の各ゲートには、第1の入力端子In11が接続されている。また、接地端子Gnd11側のP型MOS素子P12と第1の電源端子Vdd11側のN型MOS素子N11の間には、出力端子Out11が接続されている。また、接地端子Gnd11側の2つのN型MOS素子N13,N14の各ゲートには、第2の入力端子In12が接続されている。また、論理回路NAND1は、第2の電源端子Vdd12と出力端子Out11との間に、第1の電源端子Vdd11側から出力端子Out11側に向かって順に、2つのP型MOS素子P13,P14が直列に接続されている。2つのP型MOS素子P13,P14の各ゲートには、接地端子Gnd11側の2つのN型MOS素子N13,N14の各ゲートとともに、第2の入力端子In12が接続されている。
図4(A)に示す論理回路NOR1は、1つの電源端子(以下、「電源端子Vdd21」と称する)と、2つの接地端子(以下、それぞれ、「第1の接地端子Gnd21」及び「第2の接地端子Gnd22」と称する)と、2つの入力端子(以下、それぞれ、「第1の入力端子In21」及び「第2の入力端子In22」と称する)と、1つの出力端子(以下、「出力端子Out21」と称する)を有している。論理回路NOR1は、電源端子Vdd21と第1の接地端子Gnd21との間に、電源端子Vdd21側から第1の接地端子Gnd21側に向かって順に、4つのP型MOS素子P21,P22,P23,P24と2つのN型MOS素子N21,N22とが直列に接続されている。電源端子Vdd21側の2つのP型MOS素子P21,P22の各ゲートには、第1の入力端子In21が接続されている。また、接地端子Gnd21側の2つのP型MOS素子P23,P24の各ゲートと2つのN型MOS素子N21,N22の各ゲートには、第2の入力端子In22が接続されている。また、第1の接地端子Gnd21側のP型MOS素子P24と電源端子Vdd21側のN型MOS素子N21の間には、出力端子Out21が接続されている。また、論理回路NOR1は、出力端子Out21と第2の接地端子Gnd22との間に、出力端子Out21側から第2の接地端子Gnd22側に向かって順に、2つのN型MOS素子N23,N24が直列に接続されている。2つのN型MOS素子N23,N24の各ゲートには、電源端子Vdd21側の2つのP型MOS素子P21,P22の各ゲートとともに、第1の入力端子In21が接続されている。
回路接続変更部120は、設計データ格納部170から論理回路の設計データを読み出すと、これに応答して、設計データが表している論理回路を、同一ゲートノードに繋がるMOS素子群に分離することにより、インバータ単位の複数の回路すなわち分離回路に分離する(S110)。なお、図3(B)及び(C)並びに図4(B)及び(C)に、分離回路の一例を示す。図3(B)及び(C)は、図3(A)に示す論理回路NAND1を、2つの分離回路NAND1a及びNAND1bに分離した状態を示している。また、図4(B)及び(C)は、図4(A)に示す論理回路NOR1を、2つの分離回路NOR1a及びNOR1bに分離した状態を示している。なお、図3(B)及び(C)に示す点線で囲まれた領域FN11,FN12,FN13、並びに、図4(B)及び(C)に示す点線で囲まれた領域FN21,FN22,FN23は、フローティングノードであることを示している。
回路接続変更部120は、論理回路を分離回路に分離すると、これに応答して、各分離回路のフローティングノードの存在形態を判定する(S115)。
このとき、まず、回路接続変更部120は、各分離回路の内部にフローティングノードが存在するか否かを判定する。フローティングノードは、各分離回路の末端となっているノードに生じ易い。そこで、回路接続変更部120は、各分離回路の中から末端となっている各ノードを抽出し、抽出した各ノードの接続関係を識別する。そして、回路接続変更部120は、ノードが何らかの構成要素に接続されていない状態になっている場合に、そのノードをフローティングノードと判定し、また、ノードが何らかの構成要素に接続された状態になっている場合に、そのノードを非フローティングノードと判定する。このようにして、回路接続変更部120は、各分離回路の内部にフローティングノードが存在するか否かを判定する。そして、フローティングノードが存在する場合に、回路接続変更部120は、フローティングノードが存在しなくなるように、フローティングノードの存在形態、すなわち、フローティングノードがP型MOS素子及びN型MOS素子のいずれの側に存在するのかを判定する。なお、図3(B)に示す例では、フローティングノードFN11がN型MOS素子側にのみ存在している。また、図3(C)に示す例では、フローティングノードFN12,FN13がP型MOS素子側とN型MOS素子側の両方に存在している。また、図4(B)に示す例では、フローティングノードFN21,FN22がP型MOS素子側とN型MOS素子側の両方に存在している。また、図4(C)に示す例では、フローティングノードFN23がP型MOS素子側にのみ存在している。
回路接続変更部120は、フローティングノードの形態を判定すると、これに応答して、回路解析用プログラムに従って、フローティングノードの形態に応じて、表1に示す対応を行うことにより、各分離回路を再構成する(S120)。
すなわち、回路接続変更部120は、分離回路の内部にフローティングノードが存在する場合に、フローティングノードの形態に応じて、以下の(a)〜(c)の対応を行う。
(a)フローティングノードがP型MOS素子側にのみ存在するとき、回路接続変更部120は、フローティングノードに電源端子Vddを接続した形状に、分離回路の構成を変更する。
(b)フローティングノードがN型MOS素子側にのみ存在するとき、回路接続変更部120は、フローティングノードに接地端子Gndを接続した形状に、分離回路の構成を変更する。
(c)フローティングノードがP型MOS素子側とN型MOS素子側の両方に存在するとき、回路接続変更部120は、P型MOS素子側のフローティングノードとN型MOS素子側のフローティングノードとを接続した形状に、分離回路の構成を変更する。
他方、回路接続変更部120は、分離回路の内部にフローティングノードが存在しない場合に、何もせずに、分離されたままの形状に、分離回路の構成を維持する。
なお、表1に示す対応を表すデータ(以下、「対応データ」と称する)は、参照データの一種として、参照データ格納部165に予め格納されている。回路接続変更部120は、参照データ格納部165から対応データを読み出して、表1に示す対応を行う。
回路接続変更部120は、表1に示す対応を行うと、これに応答して、再構成された各分離回路の構成を表すデータすなわち再構成データを生成する。なお、図3(D)及び(E)並びに図4(D)及び(E)に、再構成データの一例を示す。図3(D)は、図3(B)に示す分離回路を再構成した状態を示している。また、図3(E)は、図3(C)に示す分離回路を再構成した状態を示している。また、図4(D)は、図4(B)に示す分離回路を再構成した状態を示している。図4(E)は、図4(C)に示す分離回路を再構成した状態を示している。なお、図3(D)及び(E)に示す一点鎖線で囲まれた領域、並びに、図4(D)及び(E)に示す一点鎖線で囲まれた領域は、接続関係が変更されたノードであることを示している。図3(D)は、図3(B)のフローティングノードFN11を接地端子に接続した状態を示している。また、図3(E)は、図3(C)のフローティングノードFN12とFN13とを接続した状態を示している。また、図4(D)は、図4(B)のフローティングノードFN21とFN22とを接続した状態を示している。また、図4(E)は、図4(C)のフローティングノードFN23を電源端子に接続した状態を示している。
回路接続変更部120は、以下のように動作することによって、図3(D)及び(E)に示すNAND1a及びNAND1bの再構成データを生成する。なお、以下の説明では、「電源端子Vddを接続した形状」を表す構成データや、「接地端子Gndを接続した形状」を表わす構成データは、参照データの一種として、参照データ格納部165または図示せぬ格納部に予め読み出し自在に格納されているものとする。
すなわち、まず、回路接続変更部120は、論理回路NAND1を分離回路NAND1a及びNAND1bに分離したときに、図3(A)に示す論理回路NAND1の設計データを、図3(B)に示す分離回路NAND1aの構成データと図3(C)に示す分離回路NAND1bの構成データとに分離する。
次に、回路接続変更部120は、図3(B)に示す分離回路NAND1aに対して、点線で囲まれた領域FN11をフローティングノードと判定したときに、回路解析用プログラムに従って、表1に示す処理を行う。ここでは、フローティングノードFN11は、N型MOS素子側にのみ存在している。そこで、回路接続変更部120は、フローティングノードFN11に接地端子Gndを接続した形状に、分離回路NAND1aの構成を変更する。このとき、回路接続変更部120は、参照データ格納部165または図示せぬ格納部から「接地端子Gndを接続した形状」を表わす構成データを読み出し、図3(B)に示す分離回路NAND1aの構成データのフローティングノードFN11の構成データと「接地端子Gndを接続した形状」を表わす構成データとを接続した形状に変更する。このようにして、回路接続変更部120は、図3(D)に示す分離回路NAND1aの再構成データを生成する。
同様に、回路接続変更部120は、図3(C)に示す分離回路NAND1bに対して、点線で囲まれた領域FN12及びFN13をフローティングノードと判定したときに、回路解析用プログラムに従って、表1に示す処理を行う。ここでは、フローティングノードFN12及びFN13は、P型MOS素子側とN型MOS素子側の両方に存在している。そこで、回路接続変更部120は、P型MOS素子側のフローティングノードFN12とN型MOS素子側のフローティングノードFN13とを接続した形状に、分離回路NAND1bの構成を変更する。このとき、回路接続変更部120は、図3(C)に示す分離回路NAND1bのフローティングノードFN12の構成データとフローティングノードFN13の構成データとを接続した形状に変更する。このようにして、回路接続変更部120は、図3(E)に示す分離回路NAND1bの再構成データを生成する。
また、回路接続変更部120は、以下のように動作することによって、図4(D)及び(E)に示す分離回路NOR1a及びNOR1bの再構成データを生成する。
すなわち、まず、回路接続変更部120は、論理回路NOR1を分離回路NOR1a及びNOR1bに分離したときに、図4(A)に示す論理回路NOR1の設計データを、図4(B)に示す分離回路NOR1aの構成データと図4(C)に示す分離回路NOR1bの構成データとに分離する。
次に、回路接続変更部120は、図4(B)に示す分離回路NOR1aに対して、点線で囲まれた領域FN21及びFN22をフローティングノードと判定したときに、回路解析用プログラムに従って、表1に示す処理を行う。ここでは、フローティングノードFN21及びFN22は、P型MOS素子側とN型MOS素子側の両方に存在している。そこで、回路接続変更部120は、P型MOS素子側のフローティングノードFN21とN型MOS素子側のフローティングノードFN22とを接続した形状に、分離回路NOR1aの構成を変更する。このとき、回路接続変更部120は、図4(B)に示す分離回路NOR1aのフローティングノードFN21の構成データとフローティングノードFN22の構成データとを接続した形状に変更する。このようにして、回路接続変更部120は、図4(D)に示す分離回路NOR1aの再構成データを生成する。
同様に、回路接続変更部120は、図4(C)に示す分離回路NOR1bに対して、点線で囲まれた領域FN23をフローティングノードと判定したときに、回路解析用プログラムに従って、表1に示す処理を行う。ここでは、フローティングノードFN23は、P型MOS素子側にのみ存在している。そこで、回路接続変更部120は、フローティングノードFN23に電源端子Vddを接続した形状に、分離回路NOR1bの構成を変更する。このとき、回路接続変更部120は、参照データ格納部165または図示せぬ格納部から「電源端子Vddを接続した形状」を表わす構成データを読み出し、図4(C)に示す分離回路NOR1bの構成データのフローティングノードFN23の構成データと「電源端子Vddを接続した形状」を表わす構成データとを接続した形状に変更する。このようにして、回路接続変更部120は、図4(E)に示す分離回路NOR1bの再構成データを生成する。
回路接続変更部120は、再構成データを生成すると、これに応答して、生成した再構成データを再構成データ格納部175に出力する。
再構成データ格納部175は、回路接続変更部120から再構成データが出力されると、これに応答して、再構成データを格納する(S125)。
抵抗置換部125のP型MOS高抵抗置換部130及びN型MOS低抵抗置換部135は、再構成データ格納部175が再構成データを格納すると、これに応答して、再構成データ格納部175から再構成データを読み出す(S130)。なお、図5(A)に、再構成データの一例を示す。図5(A)は、図3(D)と同じものである。
抵抗置換部125のP型MOS高抵抗置換部130及びN型MOS低抵抗置換部135は、再構成データ格納部175から再構成データを読み出すと、これに応答して、再構成データが表している各分離回路に含まれている各MOS素子を、OFF状態及びON状態のいずれか一方の状態に応じて、OFF状態の素子として機能する高抵抗素子またはON状態の素子として機能する低抵抗素子に置き換える(S135)。
なお、各MOS素子の定常状態時における理論上の抵抗値を表すデータ(以下、「抵抗値データ」と称する)は、参照データの一種として、参照データ格納部165に予め格納されている。P型MOS高抵抗置換部130及びN型MOS低抵抗置換部135は、参照データ格納部165から抵抗値データを読み出して、抵抗値データによって各MOS素子に対応付けられた抵抗値の抵抗素子を特定し、各MOS素子を対応する抵抗値の線形抵抗素子に置き換える。なお、参照データ格納部165には、例えば、OFF状態となっているMOS素子(この実施の形態例では、P型MOS素子)に対応する抵抗値データとして1kΩの値が予め格納されており、また、ON状態となっているMOS素子(この実施の形態例では、N型MOS素子)に対応する抵抗値データとして1Ωの値が予め格納されているものとする。したがって、この実施の形態例では、P型MOS高抵抗置換部130は、再構成データが表している各分離回路に含まれている各P型MOS素子を、抵抗値が1kΩとなっている線形抵抗素子に置き換える。同様に、N型MOS低抵抗置換部135は、再構成データが表している各分離回路に含まれている各N型MOS素子を、抵抗値が1Ωとなっている線形抵抗素子に置き換える。なお、各MOS素子に対応する抵抗値データとしては、各MOS素子の電圧降下量が算出され易いように、好ましくは、同じ型であれば、同じ抵抗値が設定されているとよい。
抵抗置換部125のP型MOS高抵抗置換部130及びN型MOS低抵抗置換部135は、各MOS素子を対応する抵抗値の抵抗素子に置き換えると、これに応答して、各MOS素子が対応する抵抗素子に置き換えられた分離回路の構成を表すデータすなわち抵抗置換データを生成する。なお、図5(B)に、抵抗置換データの一例を示す。図5(B)は、図5(A)の再構成データが表す分離回路に対して、P型MOS高抵抗置換部130が各P型MOS素子を高抵抗素子に置き換え、また、N型MOS低抵抗置換部135が各N型MOS素子を低抵抗素子に置き換えた状態を示している。なお、P型MOS高抵抗置換部130は、図5(B)の中の電源端子Vddから出力端子Outまでの領域の抵抗置換データを生成し、また、N型MOS低抵抗置換部135は、図5(B)の中の出力端子Outから接地端子Gndまでの領域の抵抗置換データを生成する。
P型MOS高抵抗置換部130及びN型MOS低抵抗置換部135は、それぞれ、抵抗置換データを生成すると、これに応答して、生成した抵抗置換データを抵抗置換データ格納部180に出力する。
抵抗置換データ格納部180は、P型MOS高抵抗置換部130から抵抗置換データが出力されると、これに応答して、抵抗置換データを格納する。同様に、抵抗置換データ格納部180は、N型MOS低抵抗置換部135から抵抗置換データが出力されると、これに応答して、抵抗置換データを格納する(S140)。なお、P型MOS高抵抗置換部130により生成された抵抗置換データ及びN型MOS低抵抗置換部135により生成された抵抗置換データを合成すると、図5(B)に示す抵抗置換データとなる。
定常解析部140は、抵抗置換データ格納部180が抵抗置換データを格納すると、これに応答して、抵抗置換データ格納部180から抵抗置換データを読み出す(S145)。このとき、定常解析部140は、抵抗置換データ格納部180からP型MOS高抵抗置換部130により生成された抵抗置換データとN型MOS低抵抗置換部135により生成された抵抗置換データとをそれぞれ読み出して、両方の抵抗置換データを合成することにより、図5(B)に示す抵抗置換データを得る。
定常解析部140は、抵抗置換データ格納部180から抵抗置換データを読み出すと、これに応答して、各分離回路の定常状態を解析する(S150)。
このとき、まず、定常解析部140は、抵抗置換データが表している各分離回路の電源端子Vddと接地端子Gndに予め定められた電圧を仮想的に与える。なお、電源端子Vddと接地端子Gndに与える電圧値を表すデータ(以下、「電圧値データ」と称する)は、参照データの一種として、参照データ格納部165に予め格納されている。そこで、定常解析部140は、参照データ格納部165から電圧値データを読み出して、電圧値データに基づいて各分離回路の電源端子Vddと接地端子Gndに与える電圧値を特定し、各分離回路の電源端子Vddと接地端子Gndにそれぞれに対応する電圧を仮想的に与える。この実施の形態例では、参照データ格納部165には、例えば、電源端子Vddに与える電圧値データとして2ボルトの値が予め格納されており、また、接地端子Gndに与える電圧値データとして0ボルトの値が予め格納されているものとする。したがって、この実施の形態例では、定常解析部140は、抵抗置換データが表している各分離回路の電源端子Vddに2ボルトの電圧を仮想的に与え、また、接地端子Gndに0ボルトの電圧を仮想的に与える。また、この実施の形態例では、P型MOS素子をOFF状態の素子として機能させるので、入力端子Inに電源端子Vddに与える電圧と同じ値すなわち2ボルトの入力電圧を与える。これにより、定常解析部140は、各分離回路を定常状態すなわち分離回路が安定した状態にする。
次に、定常解析部140は、各分離回路を流れる電流によって得られる高抵抗素子の電圧降下量差及び低抵抗素子の電圧降下量差を算出する。この実施の形態例では、図6に示すように、定常解析部140は、電源端子Vddと出力端子Outとの間に接続された2つの高抵抗素子が電源端子Vddに与えられた2ボルトの電圧をほぼ均等に分配するので、各高抵抗素子の電圧降下量を2/2=1ボルトとして算出する。また、定常解析部140は、出力端子Outと接地端子Gndとの間に接続された2つの低抵抗素子がON状態の素子として機能するので、各低抵抗素子の電圧降下量を0ボルトとして算出する。
このようにして、定常解析部140は、各分離回路の定常状態を解析する。
定常解析部140は、各分離回路の定常状態を解析すると、これに応答して、定常状態における分離回路の電気的特性を表すデータすなわち解析結果データを生成する。なお、図6に、解析結果データの一例を示す。図6は、図5(B)の抵抗置換データが表す分離回路に対して、電源端子Vddに2ボルトの電圧を仮想的に与え、また、接地端子Gndに0ボルトの電圧を仮想的に与え、また、入力端子inに2ボルトの電圧を仮想的に与えた状態の解析結果を示している。
定常解析部140は、解析結果データを生成すると、これに応答して、生成した解析結果データを解析結果データ格納部185に出力する。
解析結果データ格納部185は、定常解析部140から解析結果データが出力されると、これに応答して、解析結果データを格納する(S155)。
素子耐圧検証部145は、解析結果データ格納部185が解析結果データを格納すると、これに応答して、解析結果データ格納部185から解析結果データを読み出す(S160)。
素子耐圧検証部145は、解析結果データ格納部185から解析結果データを読み出すと、これに応答して、解析結果データが表している各高抵抗素子の電圧降下量と素子基準耐圧とを比較して、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定し、これにより、各高抵抗素子の耐圧を検証する(S165)。
なお、高抵抗素子の素子基準耐圧を表すデータ(以下、「素子基準耐圧データ」と称する)は、参照データの一種として、参照データ格納部165に予め格納されている。素子耐圧検証部145は、参照データ格納部165から素子基準耐圧データを読み出して、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定する。
素子耐圧検証部145は、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きい場合に、「エラーあり」すなわち「論理回路の中に欠陥が存在する」と判定する。他方、素子耐圧検証部145は、各高抵抗素子の電圧降下量が素子基準耐圧以下である場合に、「エラーなし」すなわち「論理回路の中に欠陥が存在しない」と判定する。
素子耐圧検証部145は、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定すると、これに応答して、素子耐圧の検証結果データすなわち各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定した結果を表すデータを生成する。なお、図7(A)及び(B)に、検証結果データの一例を示す。図7(A)は、「エラーなし」の場合の解析結果データを示しており、また、図7(B)は、「エラーあり」の場合の解析結果データを示している。図7(A)に示す分離回路は、図6に示す分離回路と同じ構成のものである。また、図7(B)に示す分離回路は、電源端子Vddと出力端子Outの間に1つの高抵抗素子が接続され、出力端子Outと接地端子Gndの間に2つの低抵抗素子が直列に接続された構成となっている。この実施の形態例では、参照データ格納部165には、例えば、高抵抗素子の素子基準耐圧データVTとして1.5ボルトの値が予め格納されているものとする。したがって、素子耐圧検証部145は、各高抵抗素子の電圧降下量が1.5ボルトよりも大きいか否かを判定する。
仮に、分離回路が図7(A)に示す構成となっている場合に、電源端子Vddに与えられた2ボルトの電圧が2つの高抵抗素子にほぼ均等に分配されるため、2つの高抵抗素子のそれぞれの電圧降下量は1ボルトとなっている。したがって、この場合に、各高抵抗素子の電圧降下量(1ボルト)が素子基準耐圧VT(1.5ボルト)以下であるので、素子耐圧検証部145は、「エラーなし」と判定する。
これに対して、仮に、分離回路が図7(B)に示す構成となっている場合に、電源端子Vddに与えられた2ボルトの電圧が分配されることなく1つの高抵抗素子に与えられるため、高抵抗素子の電圧降下量は2ボルトとなっている。したがって、この場合に、各高抵抗素子の電圧降下量(2ボルト)が素子基準耐圧VT(1.5ボルト)よりも大きいので、素子耐圧検証部145は、「エラーあり」と判定する。
素子耐圧検証部145は、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定すると、これに応答して、素子耐圧の検証結果データすなわち各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定した結果を表すデータを生成する。この実施の形態例では、検証結果データは、分離回路の中の欠陥の有無を表すデータ(すなわち、「エラーあり」または「エラーなし」を表すデータ)と、図7(A)及び(B)に示すような分離回路の構成を表すデータとを組み合わせたものとする。
素子耐圧検証部145は、検証結果データを生成すると、これに応答して、生成した検証結果データを検証結果データ格納部190に出力する。
検証結果データ格納部190は、素子耐圧検証部145から検証結果データが出力されると、これに応答して、検証結果データを格納する(S170)。
主制御部115は、検証結果データが検証結果データ格納部190に格納されると、これに応答して、検証結果データ格納部190から検証結果データを読み出して、読み出した検証結果データをシミュレータ100の出力部112を介してシミュレータ100のオペレータに視認可能な状態に出力する(S175)。
なお、検証結果データ格納部190に格納された検証結果データは、例えばシミュレータ100のオペレータが入力部111から出力指示をシミュレータ100に入力することにより、または、シミュレータ100の図示せぬ上位装置が出力指示をシミュレータ100に入力することにより、任意のタイミングで適宜出力することができる。
以上の通り、この実施の形態例に係るシミュレータ100は、CMOS型半導体論理回路をインバータ単位の複数の分離回路に分離し、さらに、各分離回路の内部にフローティングノードが存在する場合に、フローティングノードの存在形態に応じて、各分離回路に含まれている各MOS素子の接続関係を部分的に変更する。そして、このシミュレータ100は、OFF状態となっている各MOS素子(この実施の形態例では、P型MOS素子)を高抵抗素子に、また、ON状態となっている各MOS素子(この実施の形態例では、N型MOS素子)を低抵抗素子に置き換えた状態で、論理回路に含まれている各分離回路の定常状態を解析し、その解析結果に基づいて、論理回路の欠陥の有無(すなわち、「エラーあり」または「エラーなし」)を判定する。
この実施の形態例に係るシミュレータ100によれば、P型MOS素子がOFF状態として機能し、N型MOS素子がON状態として機能するときの論理回路の欠陥の有無を検証する場合において、フローティングノードをなくした状態で論理回路の欠陥の有無を検証するので、常に正しく、論理回路のOFF状態となっている各MOS素子の素子耐圧検証をすることができる。
なお、シミュレータ100は、誤ったレポートを出力することがなくなる。そのため、オペレータや回路の設計者は、レポートの内容と回路構成とを見比べて問題箇所を特定し、さらに、その問題箇所が本当に欠陥の存在する箇所であるか否かを確認する等の無駄な作業を行う必要がなくなる。そのため、シミュレータ100は、従来技術よりも解析時間を短縮することができ、検証効率を向上させることができる。
また、シミュレータ100によれば、論理回路の過渡解析をすることなく定常解析するのみで、検証漏れのない各MOS素子の素子耐圧検証をすることができる。
なお、オペレータや回路の設計者は、重大な検証漏れがないかを検証する等の無駄な作業を行う必要がなくなる。そのため、これによっても、シミュレータ100は、従来技術よりも解析時間を短縮することができ、検証効率を向上させることができる。
[実施の形態例2]
<シミュレータの構成>
実施の形態例1に係るシミュレータ100は、P型MOS素子がOFF状態として機能し、N型MOS素子がON状態として機能するときの論理回路の欠陥の有無を検証する構成となっている。そのため、シミュレータ100は、P型MOS素子を高抵抗素子に、また、N型MOS素子を低抵抗素子に置き換える構成となっている。これに対して、実施の形態例2に係るシミュレータ102は、N型MOS素子がOFF状態として機能し、P型MOS素子がON状態として機能するときの論理回路の欠陥の有無を検証する構成となっている。そのため、シミュレータ102は、N型MOS素子を高抵抗素子に、また、P型MOS素子を低抵抗素子に置き換える構成となっている。
以下、図8を参照して、実施の形態例2に係るシミュレータの構成につき説明する。なお、図8は、実施の形態例2に係るシミュレータの構成を説明するためのブロック図である。
図8に示すように、実施の形態例2に係るシミュレータ102の抵抗置換部125は、実施の形態例1に係るシミュレータ100のP型MOS高抵抗置換部130及びN型MOS低抵抗置換部135の代わりに、N型MOS高抵抗置換部132及びP型MOS低抵抗置換部137を備えている。N型MOS高抵抗置換部132は、各分離回路に含まれているN型MOS素子を、OFF状態の素子として機能する高抵抗素子に置き換える機能手段である。P型MOS低抵抗置換部137は、各分離回路に含まれているP型MOS素子を、ON状態の素子として機能する低抵抗素子に置き換える機能手段である。
<シミュレータの動作>
以下、図2、図9(A)及び(B)、図10、並びに、図11(A)及び(B)を参照して、シミュレータ102の動作につき説明する。なお、図9(A)及び(B)は、それぞれ、抵抗置換部の動作を説明するための図である。図10は、定常解析部の動作を説明するための図である。図11(A)及び(B)は、それぞれ、素子耐圧検証部の動作を説明するための図である。なお、以下の説明では、実施の形態例1に係るシミュレータ100の動作と異なる動作を重点的に説明し、実施の形態例1に係るシミュレータ100の動作と同様の動作については説明を省略する。
図2に示すように、シミュレータ102は、実施の形態例1に係るシミュレータ100と同様に、S105〜S125の動作を行う。
この後、シミュレータ102は、S130において、抵抗置換部125のN型MOS高抵抗置換部132及びP型MOS低抵抗置換部137が、再構成データ格納部175から再構成データを読み出す。なお、図9(A)は、N型MOS高抵抗置換部132及びP型MOS低抵抗置換部137が読み出した再構成データの一例を示している。この図9(A)は、図5(A)すなわち図3(D)と同じものである。
この後、シミュレータ102は、S135において、N型MOS高抵抗置換部132及びP型MOS低抵抗置換部137が、再構成データが表している各分離回路に含まれている各MOS素子を、OFF状態及びON状態のいずれか一方の状態に応じて、OFF状態の素子として機能する高抵抗素子またはON状態の素子として機能する低抵抗素子に置き換える。ただし、この実施の形態例では、OFF状態となっているMOS素子がN型MOS素子となり、ON状態となっているMOS素子がP型MOS素子となる。ここで、この実施の形態例では、参照データ格納部165には、例えば、OFF状態となっているMOS素子(この実施の形態例では、N型MOS素子)に対応する抵抗値データとして1kΩの値が予め格納されており、また、ON状態となっているMOS素子(この実施の形態例では、P型MOS素子)に対応する抵抗値データとして1Ωの値が予め格納されているものとする。したがって、この実施の形態例では、N型MOS高抵抗置換部132が、再構成データが表している各分離回路に含まれている各N型MOS素子を、高抵抗素子すなわち抵抗値が1kΩとなっている線形抵抗素子に置き換える。同様に、P型MOS低抵抗置換部137が、再構成データが表している各分離回路に含まれている各P型MOS素子を、低抵抗素子すなわち抵抗値が1Ωとなっている線形抵抗素子に置き換える。
抵抗置換部125のN型MOS高抵抗置換部132及びP型MOS低抵抗置換部137は、各MOS素子を対応する抵抗値の抵抗素子に置き換えると、これに応答して、抵抗置換データを生成する。なお、図9(B)に、抵抗置換データの一例を示す。図9(B)は、図9(A)の再構成データが表す分離回路に対して、N型MOS高抵抗置換部132が各N型MOS素子を高抵抗素子に置き換え、また、P型MOS低抵抗置換部137が各P型MOS素子を低抵抗素子に置き換えた状態を示している。なお、N型MOS高抵抗置換部132は、図9(B)の中の出力端子Outから接地端子Gndまでの領域の抵抗置換データを生成し、また、P型MOS低抵抗置換部137は、図9(B)の中の電源端子Vddから出力端子Outまでの領域の抵抗置換データを生成する。
N型MOS高抵抗置換部132及びP型MOS低抵抗置換部137は、それぞれ、抵抗置換データを生成すると、これに応答して、生成した抵抗置換データを抵抗置換データ格納部180に出力する。
この後、シミュレータ102は、実施の形態例1に係るシミュレータ100と同様に、S140の動作を行う。
この後、シミュレータ102は、S145において、定常解析部140が、抵抗置換データ格納部180から抵抗置換データ(図9(B)参照)を読み出す。
この後、シミュレータ102は、S150において、定常解析部140が、各分離回路の定常状態を解析する。このとき、まず、定常解析部140は、図9(B)に示す抵抗置換データが表している各分離回路の電源端子Vddと接地端子Gndに予め定められた電圧を仮想的に与える。この実施の形態例では、定常解析部140は、各分離回路の電源端子Vddに2ボルトの電圧を仮想的に与え、また、接地端子Gndに0ボルトの電圧を仮想的に与えるものとする。また、この実施の形態例では、N型MOS素子をOFF状態の素子として機能させるので、入力端子inに接地端子Gndに与える電圧と同じ値すなわち0ボルトの入力電圧を与える。これにより、定常解析部140は、各分離回路を定常状態にする。次に、定常解析部140は、各分離回路を流れる電流によって得られる高抵抗素子の電圧降下量差及び低抵抗素子の電圧降下量差を算出する。この実施の形態例では、図10に示すように、定常解析部140は、電源端子Vddと出力端子Outとの間に接続された2つの低抵抗素子がON状態の素子として機能するので、各低抵抗素子の電圧降下量を0ボルトとして算出する。また、定常解析部140は、出力端子Outと接地端子Gndとの間に接続された2つの高抵抗素子が電源端子Vddに与えられた2ボルトの電圧をほぼ均等に分配するので、各高抵抗素子の電圧降下量を2/2=1ボルトとして算出する。
このようにして、定常解析部140は、各分離回路の定常状態を解析する。
定常解析部140は、各分離回路の定常状態を解析すると、これに応答して、定常状態における分離回路の電気的特性を表すデータすなわち解析結果データを生成する。なお、図10に、解析結果データの一例を示す。図10は、図9(B)の抵抗置換データが表す分離回路に対して、電源端子Vddに2ボルトの電圧を仮想的に与え、また、接地端子Gndに0ボルトの電圧を仮想的に与え、また、入力端子inに0ボルトの電圧を仮想的に与えた状態の解析結果を示している。
定常解析部140は、解析結果データを生成すると、これに応答して、生成した解析結果データを解析結果データ格納部185に出力する。
この後、シミュレータ102は、実施の形態例1に係るシミュレータ100と同様に、S155及びS160の動作を行う。
そして、シミュレータ102は、S165において、素子耐圧検証部145が、解析結果データが表している各高抵抗素子の電圧降下量と素子基準耐圧とを比較して、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定し、検証結果データを生成する。なお、図11(A)及び(B)に、検証結果データの一例を示す。図11(A)は、「エラーなし」の場合の解析結果データを示しており、また、図11(B)は、「エラーあり」の場合の解析結果データを示している。図11(A)に示す分離回路は、図10に示す分離回路と同じ構成のものである。また、図11(B)に示す分離回路は、電源端子Vddと出力端子Outの間に2つの低抵抗素子が接続され、出力端子Outと接地端子Gndの間に1つの高抵抗素子が直列に接続された構成となっている。この実施の形態例では、参照データ格納部165には、例えば、高抵抗素子の素子基準耐圧データVTとして1.5ボルトの値が予め格納されているものとする。したがって、素子耐圧検証部145は、各高抵抗素子の電圧降下量が1.5ボルトよりも大きいか否かを判定する。
仮に、分離回路が図11(A)に示す構成となっている場合に、電源端子Vddに与えられた2ボルトの電圧が2つの高抵抗素子にほぼ均等に分配されるため、2つの高抵抗素子のそれぞれの電圧降下量は1ボルトとなっている。したがって、この場合に、各高抵抗素子の電圧降下量(1ボルト)が素子基準耐圧VT(1.5ボルト)以下であるので、素子耐圧検証部145は、「エラーなし」と判定する。
これに対して、仮に、分離回路が図11(B)に示す構成となっている場合に、電源端子Vddに与えられた2ボルトの電圧が分配されることなく1つの高抵抗素子に与えられるため、高抵抗素子の電圧降下量は2ボルトとなっている。したがって、この場合に、各高抵抗素子の電圧降下量(2ボルト)が素子基準耐圧VT(1.5ボルト)よりも大きいので、素子耐圧検証部145は、「エラーあり」と判定する。
素子耐圧検証部145は、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定すると、これに応答して、検証結果データを生成して、生成した検証結果データを検証結果データ格納部190に出力する。
この後、シミュレータ102は、実施の形態例1に係るシミュレータ100と同様に、S170及びS175の動作を行う。
以上の通り、この実施の形態例に係るシミュレータ102は、OFF状態となっているMOS素子である各N型MOS素子を高抵抗素子に、また、ON状態となっているMOS素子である各P型MOS素子を低抵抗素子に置き換えた状態で、論理回路に含まれている各分離回路の定常状態を解析し、その解析結果に基づいて、論理回路の欠陥の有無を判定する。
この実施の形態例に係るシミュレータ102によれば、N型MOS素子がOFF状態として機能し、P型MOS素子がON状態として機能するときの論理回路の欠陥の有無を検証する場合において、実施の形態例1に係るシミュレータ100と同様に、フローティングノードをなくした状態で論理回路の欠陥の有無を検証するので、常に正しく、論理回路のOFF状態となっている各MOS素子の素子耐圧検証をすることができる。
また、シミュレータ102によれば、実施の形態例1に係るシミュレータ100と同様に、オペレータや回路の設計者が、レポートの内容と回路構成とを見比べて問題箇所を特定し、さらに、その問題箇所が本当に欠陥の存在する箇所であるか否かを確認する等の無駄な作業を行う必要がなくなるので、これにより、従来技術よりも解析時間を短縮することができ、検証効率を向上させることができる。
また、シミュレータ102によれば、実施の形態例1に係るシミュレータ100と同様に、論理回路の過渡状態を解析することなく定常解析するのみで、検証漏れのない各MOS素子の素子耐圧検証をすることができる。
また、シミュレータ102によれば、実施の形態例1に係るシミュレータ100と同様に、オペレータや回路の設計者が、重大な検証漏れがないかを検証する等の無駄な作業を行う必要がなくなるので、これによっても、従来技術よりも解析時間を短縮することができ、検証効率を向上させることができる。
[実施の形態例3]
<シミュレータの構成>
実施の形態例1に係るシミュレータ100は、P型MOS素子を高抵抗素子に、また、N型MOS素子を低抵抗素子に置き換える構成となっていた。また、実施の形態例2に係るシミュレータ102は、N型MOS素子を高抵抗素子に、また、P型MOS素子を低抵抗素子に置き換える構成となっていた。これに対して、実施の形態例3に係るシミュレータ104は、P型MOS素子を高抵抗素子に、また、N型MOS素子を低抵抗素子に置き換える構成と、N型MOS素子を高抵抗素子に、また、P型MOS素子を低抵抗素子に置き換える構成とを併せ持つ構成となっている。
以下、図12を参照して、実施の形態例3に係るシミュレータの構成につき説明する。なお、図12は、実施の形態例3に係るシミュレータの構成を説明するためのブロック図である。
図12に示すように、実施の形態例3に係るシミュレータ104の抵抗置換部125は、実施の形態例1に係るシミュレータ100のP型MOS高抵抗置換部130及びN型MOS低抵抗置換部135と、実施の形態例2に係るシミュレータ102のN型MOS高抵抗置換部132及びP型MOS低抵抗置換部137とを併せ持っている。
<シミュレータの動作>
以下、図13を参照して、実施の形態例3に係るシミュレータの動作につき説明する。なお、図13は、実施の形態例3に係るシミュレータの動作を示すフローチャートである。
シミュレータ104は、まず、S105〜170の動作として、実施の形態例1に係るシミュレータ100のS105〜S170と同じ動作を行う。
この後、シミュレータ104は、S230〜275の動作として、実施の形態例2に係るシミュレータ102のS130〜S175と同じ動作を行う。
すなわち、シミュレータ104は、S230において、実施の形態例2に係るシミュレータ102のS130と同様に、再構成データ格納部175から再構成データを読み出す。
次に、シミュレータ104は、S235において、実施の形態例2に係るシミュレータ102のS135と同様に、抵抗置換部125が、N型MOS素子を高抵抗素子に置き換え、また、P型MOS素子を低抵抗素子に置き換えて、抵抗置換データを生成して、生成した抵抗置換データを抵抗置換データ格納部180に出力する。
次に、シミュレータ104は、S240において、実施の形態例2に係るシミュレータ102のS140と同様に、抵抗置換データ格納部180が抵抗置換データを格納する。
次に、シミュレータ104は、S245において、実施の形態例2に係るシミュレータ102のS145と同様に、定常解析部140が、抵抗置換データ格納部180から抵抗置換データを読み出す。
次に、シミュレータ104は、S250において、実施の形態例2に係るシミュレータ102のS150と同様に、定常解析部140が、抵抗置換データが表している各分離回路の電源端子Vddと接地端子Gndに予め定められた電圧を仮想的に与えて各分離回路の定常状態を解析して、解析結果データを生成し、生成した解析結果データを解析結果データ格納部185に出力する。
次に、シミュレータ104は、S255において、実施の形態例2に係るシミュレータ102のS155と同様に、解析結果データ格納部185が解析結果データを格納する。
次に、シミュレータ104は、S260において、実施の形態例2に係るシミュレータ102のS160と同様に、素子耐圧検証部145が、解析結果データ格納部185から解析結果データを読み出す。
次に、シミュレータ104は、S265において、実施の形態例2に係るシミュレータ102のS165と同様に、素子耐圧検証部145が、解析結果データが表している各高抵抗素子の電圧降下量と素子基準耐圧とを比較して、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定して、検証結果データを生成し、生成した検証結果データを検証結果データ格納部190に出力する。
次に、シミュレータ104は、S270において、実施の形態例2に係るシミュレータ102のS170と同様に、検証結果データ格納部190が、検証結果データを格納する。
次に、シミュレータ104は、S275において、実施の形態例2に係るシミュレータ102のS175と同様に、主制御部115が、検証結果データ格納部190から検証結果データを読み出して、読み出した検証結果データをシミュレータ100の出力部112を介してシミュレータ100のオペレータに視認可能な状態に出力する。
以上の通り、この実施の形態例に係るシミュレータ104は、S105〜170の動作として、実施の形態例1に係るシミュレータ100のS105〜S170と同じ動作を行い、この後、実施の形態例3に係るシミュレータ104は、S230〜275の動作として、実施の形態例2に係るシミュレータ102のS130〜S175と同じ動作を行う。したがって、シミュレータ104は、S150で、P型MOS素子が高抵抗素子に置き換えられかつN型MOS素子が低抵抗素子に置き換えられた状態となっている各分離回路を対象にして定常状態を解析して、各高抵抗素子及び各低抵抗素子の定常状態時の電圧降下量を算出する動作(以下、「第1の電圧降下量算出動作」と称する)と、S165で、第1の電圧降下量算出動作で算出された各高抵抗素子の電圧降下量と、高抵抗素子の耐圧値として予め定められた素子基準耐圧とを比較して、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定する動作(以下、「第1の電圧降下量判定動作」と称する)と、S250で、N型MOS素子が高抵抗素子に置き換えられかつP型MOS素子が低抵抗素子に置き換えられた状態となっている各分離回路を対象にして定常状態を解析して、各高抵抗素子及び各低抵抗素子の定常状態時の電圧降下量を算出する動作(以下、「第2の電圧降下量算出動作」と称する)と、S265で、第2の電圧降下量算出動作で算出された各高抵抗素子の電圧降下量と、高抵抗素子の耐圧値として予め定められた素子基準耐圧とを比較して、各高抵抗素子の電圧降下量が素子基準耐圧よりも大きいか否かを判定する動作(以下、「第2の電圧降下量判定動作」と称する)とを順次行う。
この実施の形態例に係るシミュレータ104によれば、実施の形態例1に係るシミュレータ100及び実施の形態例2に係るシミュレータ102と同様の効果を得ることができる。
さらに、この実施の形態例に係るシミュレータ104によれば、P型MOS素子がOFF状態として機能し、N型MOS素子がON状態として機能するときの論理回路の欠陥の有無を検証する場合の検証と、N型MOS素子がOFF状態として機能し、P型MOS素子がON状態として機能するときの論理回路の欠陥の有無を検証する場合の検証とを、一台で順次行うことができるので、論理回路の欠陥の有無の検証に要する時間を実施の形態例1に係るシミュレータ100及び実施の形態例2に係るシミュレータ102に比べても短縮することができ、検証効率をより向上させることができる。
この発明は、上述の実施の形態例に限定されることなく、この発明の要旨を逸脱しない範囲で種々の変更や変形を行うことができる。
例えば、実施の形態例3に係るシミュレータ104は、先に、実施の形態例1に係るシミュレータ100と同じ動作を行い、その後に、実施の形態例2に係るシミュレータ102と同じ動作を行っている。しかしながら、実施の形態例3に係るシミュレータ104は、先に、実施の形態例2に係るシミュレータ102と同じ動作を行い、その後に、実施の形態例1に係るシミュレータ100と同じ動作を行うようにしてもよい。