(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
1.実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0015】
〔1〕<貫通条件関数と貫通条件判定ブール式による貫通電流判定>
論理ゲートとFETを含む回路のネットリストが入力され(11)、前記回路に定常的な貫通電流が発生する可能性を判定するLSI設計支援装置であって、以下のように動作する。
【0016】
前記ネットリストにおいて、接地されているFETのソースまたはドレイン端子を出力とする回路の機能を表すブール式を求めて貫通条件関数とし(15)、前記ネットリストから、前記貫通条件関数に入力を供給する部分的なネットリストの機能を表すブール式を抽出して貫通条件判定ブール式とする(21)。
【0017】
前記ネットリストにおいて、電源端子を論理値1に、P型FETをゲートに論理値0が入力されたときにソースに入力された論理値をドレインに出力する論理ゲートに、N型FETをゲートに論理値1が入力されたときにドレインに入力された論理値をソースに出力する論理ゲートに、それぞれ置き換える論理モデル化によって、前記貫通条件関数と前記貫通条件判定ブール式とを求める。
【0018】
前記貫通条件判定ブール式を、論理的等価性を保って縮退(22)した結果に基づいて前記貫通条件関数から論理値1が出力される条件の有無を判定する(23)ことにより、前記ネットリストに含まれる接地されている前記FETに定常的な貫通電流を発生させる前記ネットリストの論理状態の有無を判定する(25)。
【0019】
これにより、入力条件や入力パターンによらず、静的かつ網羅的に定常的な貫通電流が発生するおそれの有無を判定することができる。
【0020】
〔2〕<GND側およびPWR側ブール式>
項1において、前記ネットリストに含まれる複数の信号ネットのうち、複数のFETのソースまたはドレインにのみ接続されている信号ネットを対象ネットとし(12)、全ての対象ネットのそれぞれについて(13、24)、以下の処理を行う。
【0021】
前記対象ネットを起点としFETのドレインからソースへの経路を経て接地ネットに達する経路を抽出し、前記経路内のFETに対して前記論理モデル化を行い、前記経路内のFETのゲートと前記対象ネットとを入力とし前記接地ネットを出力とするGND側ブール式を抽出する(16)。
【0022】
前記対象ネットを起点としFETのドレインからソースへの経路を経て電源ネットまたはFET以外が接続される信号ネットに達する経路を抽出し、前記経路内のFETに対して前記論理モデル化を行い、前記経路内のFETのゲートを入力とし前記対象ネットを出力とするPWR側ブール式を抽出する(17)。
【0023】
前記GND側ブール式と前記PWR側ブール式を前記対象ネットで結合したブール式を前記貫通条件関数とし(18)、前記PWR側ブール式と前記GND側ブール式とがともに論理値1となる条件が存在する場合に、定常的な貫通電流を発生させる前記ネットリストの論理状態があると判定する(23、25)。
【0024】
これにより、前記PWR側ブール式と前記GND側ブール式のうちのいずれかが論理値0となれば、貫通電流が流れる可能性がなくなり、貫通条件判定ブール式の判定が容易になる。
【0025】
〔3〕<貫通条件判定ブール式(合流ネット探索)>
項2において、前記GND側ブール式と前記PWR側ブール式の入力である信号ネットを起点とし、前記ネットリストについて、論理ゲートの出力端子から入力端子へ向かう方向またはFETのドレインまたはソースからゲートへ向かう方向に経路探索を行ない(19)、経路上の論理ゲートまたはFETの機能と接続関係を表したブール式を抽出して前記貫通条件判定ブール式とする(21)。
【0026】
前記経路探索は、前記GND側ブール式の入力である信号ネットを起点とした経路探索で探索された経路と、前記PWR側ブール式の入力である信号ネットを起点とした経路探索で探索された経路とが合流した合流ネットに到達した場合に、前記合流ネット以降の経路探索を中止する。
【0027】
これにより、貫通条件判定ブール式の判定(23)が容易になる。
【0028】
〔4〕<合流ネットがない場合のエラー処理>
項3において、所定段数の経路探索を行った結果、前記合流ネットが抽出されないときに、前記対象ネットを経由する貫通電流経路に定常的な貫通電流を発生させる前記ネットリストの論理状態があると判定する(20)。
【0029】
これにより、いち早くエラー出力処理(25)を行うことができ、次の対象ネットの処理に移ることができるため、処理時間を短縮することができる。
【0030】
〔5〕<貫通条件関数と貫通条件判定ブール式の縮退>
項3において、前記貫通条件関数と前記貫通条件判定ブール式とを結合したブール式を、論理的等価性を保ったまま縮退し(22)、さらなる縮退が不能となったブール式が論理値0以外である場合に(23)、定常的な貫通電流を発生させる前記ネットリストの論理状態があると判定する(25)。
【0031】
これにより、貫通条件の判定を容易に行うことができる。
【0032】
〔6〕<二分決定図(BDD)の利用>
項5において、前記貫通条件関数と前記貫通条件判定ブール式とを結合した前記ブール式を、二分決定図で表す。
【0033】
これにより、貫通条件の判定を容易かつ確実に行うことができる。既約の二分決定図は、機能的に等価である限り唯一の形態に縮退されるため、ブール式が論理値0となることを確実に検出することができるからである。
【0034】
〔7〕<貫通条件関数と貫通条件判定ブール式の論理シミュレーション>
項3において、前記貫通条件関数と前記貫通条件判定ブール式とを結合したブール式に対し、全ての入力条件の組合せパターンを入力して論理シミュレーションを行い、前記ブール式から論理値1が出力される入力条件の組合せが存在する場合に、定常的な貫通電流を発生させる前記ネットリストの論理状態があると判定する。
【0035】
これにより、貫通電流を発生させる入力パターンを知ることができ、貫通電流の発生を防止するための設計変更を容易にすることができる。
【0036】
〔8〕<ダイナミックシミュレーションへの組み込み>
項3において、前記貫通条件関数と前記貫通条件判定ブール式とを結合したブール式を、前記ネットリストに対するダイナミックシミュレーションに組み込む。
【0037】
これにより、通常のダイナミックシミュレーションにおいて、貫通電流の発生をモニタすることができ、論理設計段階で貫通電流の発生を論理バグと同等に扱いながら、設計を進めることができるので、論理設計のバグの収束と同時に貫通電流を発生させない回路設計を完了させることができる。
【0038】
〔9〕<貫通条件関数と貫通条件判定ブール式による貫通電流判定>
論理ゲートとFETを含む回路のネットリストが入力され(11)、前記ネットリストに含まれる接地されているFETに定常的な貫通電流を発生させる前記ネットリストの論理状態の有無を電子計算機によって判定する、LSI設計方法であって、以下のように構成される。
【0039】
前記ネットリストにおいて、接地されているFETのソースまたはドレイン端子を出力とする回路の機能を表すブール式を求めて貫通条件関数とする第1ステップ(15)と、前記ネットリストから、前記貫通条件関数に入力を供給する部分的なネットリストの機能を表すブール式を抽出して貫通条件判定ブール式とする第2ステップ(21)とを含む。
【0040】
さらに、前記貫通条件判定ブール式を、論理的等価性を保って縮退した結果に基づいて前記貫通条件関数から論理値1が出力される条件の有無を判定することにより、前記ネットリストに含まれる接地されている前記FETに定常的な貫通電流を発生させる前記ネットリストの論理状態の有無を判定する第3ステップ(23)を含む。
【0041】
前記第1ステップと前記第2ステップのそれぞれは、前記ネットリストにおいて、電源端子を論理値1に、P型FETをゲートに論理値0が入力されたときにソースに入力された論理値をドレインに出力する論理ゲートに、N型FETをゲートに論理値1が入力されたときにドレインに入力された論理値をソースに出力する論理ゲートに、それぞれ置き換える論理モデル化を行うステップを含む。
【0042】
これにより、入力条件や入力パターンによらず、静的かつ網羅的に定常的な貫通電流が発生するおそれの有無を判定することができる。
【0043】
〔10〕<GND側およびPWR側ブール式>
項9において、前記ネットリストに含まれる複数の信号ネットのうち、複数のFETのソースまたはドレインにのみ接続されている信号ネットを対象ネットとし(12)、全ての対象ネットのそれぞれについて(13、24)、前記第1ステップと前記第2ステップと前記第3ステップとを繰り返し実行する。
【0044】
前記第1ステップは、前記対象ネットを起点としFETのドレインからソースへの経路を経て接地ネットに達する経路を抽出し、前記経路内のFETに対して前記論理モデル化を行い、前記経路内のFETのゲートと前記対象ネットとを入力とし前記接地ネットを出力とするGND側ブール式を抽出するステップ(17)を含む。前記第1ステップはさらに、前記対象ネットを起点としFETのドレインからソースへの経路を経て電源ネットまたはFET以外が接続される信号ネットに達する経路を抽出し、前記経路内のFETに対して前記論理モデル化を行い、前記経路内のFETのゲートを入力とし前記対象ネットを出力とするPWR側ブール式を抽出するステップ(17)を含む。前記第1ステップはさらに、前記GND側ブール式と前記PWR側ブール式を前記対象ネットで結合したブール式を前記貫通条件関数とするステップ(18)を含む。
【0045】
前記第3ステップは、前記PWR側ブール式と前記GND側ブール式とがともに論理値1となる条件が存在する場合に、定常的な貫通電流を発生させる前記ネットリストの論理状態があると判定する(23、25)。
【0046】
これにより、前記PWR側ブール式と前記GND側ブール式のうちのいずれかが論理値0となれば、貫通電流が流れる可能性がなくなり、貫通条件判定ブール式の判定が容易になる。
【0047】
〔11〕<貫通条件判定ブール式(合流ネット探索)>
項10において、前記第2ステップは、前記GND側ブール式と前記PWR側ブール式の入力である信号ネットを起点とし、前記ネットリストについて、論理ゲートの出力端子から入力端子へ向かう方向またはFETのドレインまたはソースからゲートへ向かう方向に経路探索を行う(19)。前記第2ステップは、さらに、経路上の論理ゲートまたはFETの機能と接続関係を表したブール式を抽出して前記貫通条件判定ブール式とするステップ(21)を含む。前記経路探索は、前記GND側ブール式の入力である信号ネットを起点とした経路探索で探索された経路と、前記PWR側ブール式の入力である信号ネットを起点とした経路探索で探索された経路とが合流した合流ネットに到達した場合に、前記合流ネット以降の経路探索を中止する。
【0048】
これにより、貫通条件判定ブール式の判定が容易になる。
【0049】
〔12〕<合流ネットがない場合のエラー処理>
項11において、所定段数の経路探索を行った結果、前記合流ネットが抽出されないときに、前記対象ネットを経由する貫通電流経路に定常的な貫通電流を発生させる前記ネットリストの論理状態があると判定する第4ステップ(20)をさらに含む。
【0050】
これにより、いち早くエラー出力処理を行うことができ、次の対象ネットの処理に移ることができるため、処理時間を短縮することができる。
【0051】
〔13〕<貫通条件関数と貫通条件判定ブール式の縮退>
項11において、前記貫通条件関数と前記貫通条件判定ブール式とを結合したブール式を、論理的等価性を保ったまま縮退する第5ステップ(22)をさらに含み、前記第3ステップは前記第5ステップにおけるさらなる縮退が不能となったブール式が論理値0以外である場合に(23)、定常的な貫通電流を発生させる前記ネットリストの論理状態があると判定する(25)。
【0052】
これにより、貫通条件の判定を容易に行うことができる。
【0053】
〔14〕<二分決定図(BDD)の利用>
項13において、前記貫通条件関数と前記貫通条件判定ブール式とを結合した前記ブール式を、二分決定図で表す。
【0054】
これにより、貫通条件の判定を容易かつ確実に行うことができる。既約の二分決定図は、機能的に等価である限り唯一の形態に縮退されるため、ブール式が論理値0となることを確実に検出することができるからである。
【0055】
〔15〕<貫通条件関数と貫通条件判定ブール式の論理シミュレーション>
項11において、前記貫通条件関数と前記貫通条件判定ブール式とを結合したブール式に対し、全ての入力条件の組合せパターンを入力して論理シミュレーションを行う第6ステップをさらに含み、前記第3ステップは前記ブール式から論理値1が出力される入力条件の組合せが存在する場合に、定常的な貫通電流を発生させる前記ネットリストの論理状態があると判定する。
【0056】
これにより、貫通電流を発生させる入力パターンを知ることができ、貫通電流の発生を防止するための設計変更を容易にすることができる。
【0057】
〔16〕<ダイナミックシミュレーションへの組み込み>
項11において、前記貫通条件関数と前記貫通条件判定ブール式とを結合したブール式を、前記ネットリストに対するダイナミックシミュレーションに組み込む。
【0058】
これにより、通常のダイナミックシミュレーションにおいて、貫通電流の発生をモニタすることができ、論理設計段階で貫通電流の発生を論理バグと同等に扱いながら、設計を進めることができるので、論理設計のバグの収束と同時に貫通電流を発生させない回路設計を完了させることができる。
【0059】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0060】
〔実施形態1〕
図1は、実施形態1に係るLSI設計支援装置が実行する処理フローの概略を示すフローチャートである。
【0061】
論理ゲートとFETを含むネットリストが入力される(ステップ11)。入力されたネットリストに含まれる全てのネットを電源端子に接続されている電源ネットと、接地されている接地ネットと、それ以外の信号ネットに分類する。次に、電源ネットを論理値1に置き換え、FETを論理ゲートに置き換えるモデル化を行う。
図2は、FETの論理ゲートによる論理モデル化の例を示す説明図である。N型FET101は(a)に示すように、ゲートSに論理値1が入力されたときにドレインAに入力された論理値をソースBに出力するANDゲート201に置き換え、P型FET102は(b)に示すように、ゲートSに論理値0が入力されたときにソースAに入力された論理値をドレインBに出力する、S端子に反転機能を付加したANDゲート202に置き換える。FETが並列接続されている場合には、(c)に示すように、並列接続されているFET103のゲートS1とドレインAとFET104のゲートS2とドレインBのそれぞれをANDゲート203、204に入力する、論理ゲート203、204、205で構成されるセレクタに置き換える論理モデル化を行う。直列接続の場合には、(d)に示すように、前段のFET105のゲートS1とドレインAを入力とするANDゲート206と、その出力と後段のFET106のゲートS2を入力とするANDゲート207の縦続接続に置き換える論理モデル化を行う。この論理モデル化により、入力されたネットリストから、0個以上の信号ネットを入力とし1個以上の接地ネットを出力とするブール式が、貫通条件関数として抽出される(ステップ15)。さらにこの貫通条件関数に入力を供給する論理回路をブール式として抽出して貫通条件判定ブール式とを得る(ステップ21)。貫通条件関数の接地ネットに論理値1が出力される条件が存在する場合に(ステップ23)、前記ネットリストが表す回路に貫通電流が流れる可能性があると判定する(ステップ25)。貫通条件判定ブール式を、論理的等価性を保って縮退することにより(ステップ22)、全ての入力の組合せを入力してシミュレーションする必要はなく、入力条件や入力パターンによらず、静的かつ網羅的に定常的な貫通電流を発生する可能性の有無を判定することができる。
【0062】
図3は、実施形態1に係るLSI設計支援装置を使って、ネットリストに貫通電流が発生する可能性があるか否かをチェックした例である。(a)は入力されたネットリスト31である。NMOSFET107、108が電源VDDと接地GNDとの間に直列接続され、インバータ208による論理回路により駆動されている。(b)は(a)に示したネットリストから貫通条件関数を求めるために、2個のFETをモデル化した論理回路32である。上述の通り、N型FET107、108を、ゲートに論理値1が入力されたときにドレインに入力された論理値をソースに出力するANDゲート209、210に置き換え、電源と論理ゲートの入力または出力を入力とし、GNDに接続されているnet1が出力となっている。これをブール式で表現したものが、(c)に示す貫通条件関数である。ここで、本明細書では、「&」はAND論理、「|」はOR論理、「!」はNOT論理を表し、電位highを論理値1、電位lowを論理値0とする正論理で表現する。貫通条件は、接地点GNDであるnet1を出力とし、net1=net4&net2で表される。ANDゲート209によりnet2=net5&net3であり、電源VDDであるnet3を論理値1であるhighに置き換え、さらにインバータ208によりnet5=!net4なので、これらを代入して、接地点GNDであるnet1の出力を求めると、論理値0となる。この場合は、貫通電流が発生する可能性はない。一方、出力が論理値0以外である場合には、GNDに接続されているnet1に論理値1が出力される場合があるということになるので、貫通電流を発生する可能性がある旨の判定を行う。
【0063】
図4は、実施形態1に係るLSI設計支援装置が実行する処理フローの詳細を示すフローチャートである。
【0064】
ネットリストが入力されると(ステップ11)、対象ネットの抽出を行う(ステップ12)。トランジスタ(MOSFET)及び、論理ゲート、メモリ素子等のマクロブロックを含む回路ネットにおいて、トランジスタのソースかドレイン端子に2以上接続しているネットをチェック対象ネットとする。そのネットに、トランジスタのソース及びドレイン端子以外が接続している場合(論理ゲート、メモリ素子、外部ピン等)はチェック対象ネットから除く。
【0065】
対象ネットを起点として、トランジスタを探索する。トランジスタのソースからドレインあるいは、ドレインからソース端子へ探索し、ゲート端子へは探索しない。電源(VDD, VCCなどのPWRまたは接地点であるGND)や、ゲート出力、外部入力端子に到達するまで探索し、通過したトランジスタに、PWR、GND、SIGの属性を付与する。最終的に電源(VDD)に到着した場合PWR属性、接地点(GND)に到着した場合GND属性、その他はSIG属性とする。トランジスタに付与する属性が重なる場合、同じ属性(PWRとPWR等)はその属性(PWR属性)を付加し、異なる場合はSIG属性とする。
【0066】
図5に、トランジスタ電源の確定処理(ステップ14)の例を示す。例1(a)は、NMOS109とNMOS110がVDDとGND間に直列接続されている。net7は、トランジスタのソースまたはドレイン端子に2以上接続しているネットに該当するので、チェック対象ネットである。net7を起点としてトランジスタを探索する。PWR側へ探索すると、NMOS109を通過してnet8の電源に到達するので、NMOS109にPWR属性を付与する。GND側へ探索すると、NMOS110を通過してnet6のGNDに到達するので、NMOS110にGND属性を付与する。NMOS109とNMOS110のゲート端子であるnet10とnet9方向へは探索しない。例2(b)は、2個のNMOS111と112とが直列に接続されたネットリストである。net11が対象ネットであるので、これを起点としてGND方向に探索し、例1(a)と同様に、NMOS112にGND属性を付与する。net11を起点としてPWR方向に探索すると、NMOS111を通過した後、net12に到達する。net12は、インバータ211の出力であるので、NMOS111にはSIGの属性を付与する。例3(c)は、例2(b)におけるインバータ211がトランジスタ113と114で記述されている場合の変形例である。net12からさらにPMOS113方向に探索すると、PMOS113を通過して電源VDDに到達するのでPMOS113はPWR属性である。一方、NMOS114方向に探索すると、NMOS114を通過してGNDに到達するので、NMOS114はGND属性である。NMOS111からの探索は、結局、PWRにもGNDにも至るので、NMOS111にはSIG属性を付与する。
【0067】
次に、貫通条件のブール関数を作成する(ステップ15)。より詳細には、GND側ブール式を作成し(ステップ16)、PWR側ブール式を作成し(ステップ17)、それらを結合して貫通条件関数とする(ステップ18)。
図5の例1(a)において、GND側ブール式は、
貫通条件=net9&net7
となり、
PWR側ブール式は、
net7=net10&net8(high)
となる。これらを結合して得られる貫通条件関数は、
貫通条件=net9&net7=net9&net10&net8(high)=net9&net10
となる。
【0068】
図5の例2(b)において、GND側ブール式は、例1(a)の場合と同様に、
貫通条件=net11&net14
となるが、PWR側ブール式は、net12が論理値1となるケースと論理値0となるケースがあるため、SIG属性のNMOS111は、GND属性とPWR属性の両方の場合を評価する必要がある。
PWR側ブール式は、
GND属性の場合の、net11=net15&net12(low)と、
PWR属性の場合の、net11=net15&net12(high)の両方を評価する。
NMOS111をGND属性とした場合に、結合して得られる貫通条件関数は、
貫通条件=net15&net12(low)&net14=net15&0&net14=0
であり、貫通電流は発生しない。
NMOS111をPWR属性とした場合に、結合して得られる貫通条件関数は、
貫通条件=net15&net12(high)&net14=net15&net14
であり、net14とnet15がともに1となる条件下では、貫通電流が発生する可能性がある。
【0069】
GND側ブール式の作成(ステップ16)とPWR側ブール式の作成(ステップ17)についてさらに詳細に例を挙げて説明する。
【0070】
GND側ブール式の作成(ステップ16)では、対象ネットを起点として、GND属性またはSIG属性が付与されたトランジスタのソースからドレイン、またはドレインからソースへ探索し、GND、論理ゲートまたはメモリなどのマクロブロックの端子、あるいはLSI外部との入出力ポートに到達するまで探索を行う。探索の過程で通過したトランジスタは、
図2に示したように、NMOSをANDゲートに(
図2の(a))、PMOSをゲート側が反転したANDゲートに(
図2の(b))変換し、並列接続はORに(
図2の(c))直列接続は従属接続に(
図2の(d))それぞれ変換する論理モデル化を行う。
図6は、GND側ブール式の作成(ステップ16)の例を示す説明図である。
図6の(a)に示すGND側ブール式作成例1では、GNDであるnet18を出力として、
貫通条件=net19&net21
が作成される。
図6の(b)に示す作成例2では、対象ネットであるnet24から出力ネットであるGNDのnet22へ、GND属性のNMOS118と119が直列に接続され、さらにGND属性のNMOS120が並列に接続されている。
図2に示した要領で論理モデル化を行い、
貫通条件=net27&(net28&net24)|net26&net24
が作成される。
【0071】
PWR側ブール式の作成(ステップ17)では、対象ネットを起点として、PWR属性またはSIG属性が付与されたトランジスタのソースからドレイン、またはドレインからソースへ探索し、VDDなどの電源端子、論理ゲートまたはメモリなどのマクロブロックの端子、あるいはLSI外部との入出力ポートに到達するまで探索を行う。探索の過程で通過したトランジスタの論理モデル化の方法は、
図2に示した通りであり、上述のGND側ブール式の作成(ステップ16)と同様である。
図7は、PWR側ブール式の作成(ステップ17)の例を示す説明図である。
図7の(a)に示すPWR側ブール式作成例1では、
対象ネットnet30=!net32&net31(high)=!net32
が作成される。(b)に示す作成例2では、対象ネットであるnet34から、PWR属性のNMOS123と124が直列に接続され、さらにPWR属性のNMOS126が並列に接続されている。
図2に示した要領で論理モデル化を行うと、
対象ネットnet30=net38&net39|net37
が作成される。
【0072】
トランジスタのゲート端子の論理探索(ステップ19)について説明する。
【0073】
貫通条件関数を構成するGND側ブール式とPWR側ブール式の入力であるトランジスタのゲート端子を起点として、それらを駆動する信号を与える回路を、論理ゲートの出力端子から入力端子方向、トランジスタはドレイン、ソースからゲート端子方向に論理探索を行なう。LSIの外部ポートやメモリなどのマクロブロックの端子、電源や接地端子に到達した時点で終了する。この他、合流ネットに到達した時点でその経路の論理探索を終了する。ここで合流ネットとは、GND側ブール式の入力であるトランジスタのゲート端子を起点とする論理探索の経路と、PWR側ブール式の入力であるトランジスタのゲート端子を起点とする論理探索の経路とが交わるネットをいう。
【0074】
論理探索を合流ネットに到達した時点で終了する理由を説明する。貫通条件判定ブール式が、GND側ブール式とPWR側ブール式の両方の出力を論理値1にする出力状態を持つと、貫通電流が発生する可能性があるのであるから、GND側ブール式とPWR側ブール式の一方を論理値0に他方を論理値1にする、背反関係が成り立てば、貫通電流は発生しない。背反関係を生じさせるネットリストには、必ず合流ネットが存在するので、貫通条件判定ブール式の中に合流ネットが存在すれば、合流ネットからGND側ブール式とPWR側ブール式の入力までのブール演算を行えば、背反関係が成立しているか否かを判定することができる。そのため、合流ネット以降の論理探索は行う必要がない。
【0075】
貫通条件判定ブール式の抽出(ステップ21)について説明する。まず、ステップ20で抽出した合流ネットから、GND側ブール式とPWR側ブール式の入力であるトランジスタのゲート端子までのネットリストを探索し、通過した論理ゲート及びトランジスタを抽出する。次に、抽出した論理ゲートとトランジスタの機能と接続関係に基づいて、合流ネットと探索した経路上の他の信号または電源(VDDまたはGND)を入力とするブール式を作成する。
【0076】
図8に、貫通条件判定ブール式の抽出例を具体的に示す。net40を対象ネットとして、
図4のステップ16によりGND側ブール式と、
図4のステップ17によりPWR側ブール式が作成されているものとする。
【0077】
初めにトランジスタのゲート端子の論理検索を行う(
図4のステップ19)。GND側ブール式の入力であるトランジスタ128のゲート端子net43を起点として、それらを駆動する信号を与える回路を、論理ゲートの出力端子から入力端子方向、トランジスタはドレイン、ソースからゲート端子方向に論理探索を行なう。
図8では、インバータ212、net45、AND213、net46、AND214、net47、AND215、net48、AND216、net49が順次探索経路上に抽出される。実際には適切な段数で打ち切る。次にPWR側ブール式の入力であるトランジスタ127のゲート端子net44を起点として、それらを駆動する信号を与える回路を、論理ゲートの出力端子から入力端子方向、トランジスタはドレイン、ソースからゲート端子方向に論理探索を行なう。
図8では、AND217、net45、net49が順次探索経路上に抽出される。ここで、net45とnet49は、前述のGND側ブール式の入力であるトランジスタ128のゲート端子net43を起点とした経路探索で既に抽出されているネットであるので、合流ネットである。合流ネットを発見した時点で、以降の探索を中止する。net45が合流ネットであるので、net46が貫通条件判定ブール式の入力の一つとなり、その後のAND214以降は探索されない。PWR側とGND側の探索順序の関係で一旦探索されたとしても、最終的には貫通条件判定ブール式からは除かれる。GND側からの探索のもう一方の経路であるnet49もまた、合流ネットである。
【0078】
このとき、合流ネットが発見されずに、メモリなどのマクロブロックの端子、あるいはLSI外部との入出力ポートに到達した場合には、その時点で判定中の対象ネットを経由する貫通電流発生の恐れがある旨のエラーを出力して次の対象ネットの判定に移る(
図4のステップ20、25、24、13)。
【0079】
図8に示す例では、合流ネットnet45とnet49が抽出されているので、それらを起点として、ステップ19の経路探索で経路上に抽出された、論理ゲートとトランジスタの機能及び結線に基づいて、貫通条件判定ブール式を抽出する(ステップ21)。
【0080】
図8に示した例では、ステップ18で作成された貫通条件関数は、
貫通条件=net44&(net43&high)
である。
【0081】
PWR側ブール式の入力であるnet43を駆動する貫通条件判定ブール式を展開すると、以下のようになる。
貫通条件
=net44&(net43&high)
=net44&(!net45&high)
=net44&(!(net46&net47)&high)
=net44&(!(net46&(net48&net49))&high)
さらに、GND側ブール式の入力であるnet44を駆動する貫通条件判定ブール式を展開すると、以下のようになる。
貫通条件
=net44&(!(net46&(net48&net49))&high)
=(net45&net49)&(!(net46&(net48&net49))&high)
=((net46&(net48&net49))&net49)&(!(net46&(net48&net49))&high)
論理探索するネットリストにトランジスタが含まれている場合には、
図9に示すルールに従って、論理ゲートに置換して上記貫通条件判定ブール式を抽出する。
図9は、論理探索におけるトランジスタの論理ゲートへの変換ルールを示す説明図である。トランジスタがPWR属性またはSIG属性の場合、NMOSは(a)のようにANDゲートに変換し、PMOSは(b)のようにゲートを反転するANDゲートに変換する。トランジスタがGND属性の場合、NMOSは(c)のようにNORゲートに変換し、PMOSは(d)のようにゲートを反転するNORゲートに変換する。
図10は、論理探索におけるトランジスタの論理ゲートへの変換例である。貫通条件関数を構成するNMOS129と130があり、(a)に示すようにNMOS130のゲート端子(net51)にNMOS131とPMOS132が接続されている。このとき、貫通条件関数を構成するのがNMOSであるから、net51をhighにする可能性がある場合のみを考慮すればよいので、(b)に示すようにGND属性のNMOS131は変換せず、PWR属性のPMOSを反転付きANDゲート218に変換する。これにより、トランジスタを含むネットリストからも適切にブール式を抽出することができる。
【0082】
これに代え、NMOS130のゲート端子(net51)に接続されているNMOS131とPMOS132が、インバータと等価の機能であることを判別して、net52とnet51を繋ぐインバータに変換してもよい。このとき、さらに複雑な、バッファ、OR、AND、NAND、NOR、EOR、ENORなどの論理ゲートとの等価性を判定して、等価な論理ゲートに変換することもできる。
【0083】
貫通条件判定ブール式の縮退(
図4のステップ22)について説明する。ここまで貫通条件関数を作成し(ステップ18)それを駆動する貫通条件判定ブール式を抽出した(ステップ21)。その結果、貫通条件関数の出力であるGND端子に論理値1が出力される、入力パターンの組合せの有無を判定する。入力パターンの組合せに係らず、常に貫通条件関数の出力に論理値0が出力されるようにブール式が構成されていれば、対象ネットを経由する貫通電流が発生する恐れはないと判定し(ステップ23)、それ以外は、貫通電流が発生する恐れがあるものとしてエラー出力する(ステップ25)。
【0084】
判定(ステップ23)に先立って、貫通条件判定ブール式の縮退を行う(ステップ22)。抽出されたままの貫通条件判定ブール式は、冗長な表現を含んでいるので、これを論理的な等価性を保ったまま縮退し、判断を容易化する。ステップ23は出力が論理値0になるか、論理値1を取る可能性があるかの判定をするので、縮退によって結果が0になれば貫通電流発生の可能性なし、0にならなければ貫通電流発生の可能性ありと判定できる。
【0085】
図8に示した例では、上で得られた貫通条件を以下のように縮退する。
貫通条件=((net46&(net48&net49))&net49)&(!(net46&(net48&net49))&high)
において、net46&(net48&net49)=Xとおくと、
貫通条件=(X&net49)&(!X&high)=X&!X&net49
となり、
X&!X=0なので、貫通条件=X&!X&net49=0
となる。貫通条件が常に論理値0となるので、net40を経由する貫通電流が発生する可能性はないものと判定することができる。
【0086】
ブール式の縮退には、例えば、二分決定図(Binary Decision Diagram, 以下BDDと略記する)を利用することができる。
図8に示したブール式を、BDDを使って表記すると、例えば
図11のようになる。これを、周知のBDD縮退アルゴリズムで縮退して既約のBDDを得ると、論理値0のみのBDDとなる。BDDは縮退前には論理的に等価であっても多様なトポロジーを取り得るが、できる限りの縮退を繰り返した末の既約の状態となったBDDは唯一のトポロジーしかとり得ないという特性を備えている。本実施形態のブール式の縮退にBDDを用いれば、既約まで縮退したときに論理値0以外の値を取り得るか否かを確実に判定することができる。
【0087】
〔実施形態2〕
貫通条件関数と貫通条件判定ブール式を組み合わせたブール式に対して、全ての入力条件を網羅する入力パターンを作成してシミュレーションを実行する。ブール式の出力に論理値1が出力された場合は、その時に貫通電流が流れることが分かる。これにより、貫通電流を発生させる入力パターンを知ることができ、貫通電流の発生を防止するための設計変更を容易にすることができる。
【0088】
〔実施形態3〕
貫通条件関数と貫通条件判定ブール式を組み合わせたブール式を、通常のダイナミックシミュレーションに組み込んで実行することにより、想定される入力信号の組合せの範囲内で、貫通電流が発生するか否かを判定することができる。これにより、通常のダイナミックシミュレーションにおいて、貫通電流の発生をモニタすることができ、論理設計段階で貫通電流の発生を論理バグと同等に扱いながら、設計を進めることができるので、論理設計のバグの収束と同時に貫通電流を発生させない回路設計を完了させることができる。
【0089】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であること言うまでもない。
【0090】
例えば、電位highを論理値1、電位lowを論理値0とする正論理で表現したが、負論理で表現しても良い。