JP3703390B2 - Logic verification device - Google Patents
Logic verification device Download PDFInfo
- Publication number
- JP3703390B2 JP3703390B2 JP2000367338A JP2000367338A JP3703390B2 JP 3703390 B2 JP3703390 B2 JP 3703390B2 JP 2000367338 A JP2000367338 A JP 2000367338A JP 2000367338 A JP2000367338 A JP 2000367338A JP 3703390 B2 JP3703390 B2 JP 3703390B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- input
- logic
- input terminal
- input value
- 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
- 238000012795 verification Methods 0.000 title claims description 95
- 238000000034 method Methods 0.000 claims description 528
- 230000008569 process Effects 0.000 claims description 491
- 230000010355 oscillation Effects 0.000 claims description 80
- 238000012545 processing Methods 0.000 claims description 43
- 238000001514 detection method Methods 0.000 claims description 8
- 230000007850 degeneration Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 7
- 101100310926 Caenorhabditis elegans sra-3 gene Proteins 0.000 description 4
- 101100310927 Caenorhabditis elegans sra-4 gene Proteins 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 4
- 230000015654 memory Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 101100150275 Caenorhabditis elegans srb-3 gene Proteins 0.000 description 2
- 101100310954 Caenorhabditis elegans srd-2 gene Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101100150274 Caenorhabditis elegans srb-2 gene Proteins 0.000 description 1
- 101100534229 Caenorhabditis elegans src-2 gene Proteins 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Tests Of Electronic Circuits (AREA)
Description
【0001】
【発明の属する技術分野】
本発明はループ回路における発振構成箇所の検出方法に係わり、特に半導体装置の中でも特定用途向けICであるASIC(Application Specific IC)または複合ICであるSOC(System On Chip)などでは、ある特定の目的のために種々の回路を構成する場合が多いため、論理ゲートによる負帰還ループを作り込む危険性が高い。そのため、負帰還ループがチップに作り込まれる前に予め検出するように改善したループ回路における発振構成箇所の検出方法に関する。
【0002】
【従来の技術】
近年、半導体素子の微細化技術の進展に伴い、その半導体素子で構成するLSIも大規模化し、半導体メモリ、マイクロコンピュータ、あるいはこれらのLSIを1チップに搭載した複合LSIであるSOCも大容量化してきている。この大容量化とともにその回路機能も複雑化し、設計段階における回路検証の精度向上が重要な課題の一つである。
【0003】
これらのLSIの内部回路において論理ゲートによるループ回路として正帰還ループまたは負帰還ループが存在するが、特に負帰還ループが存在すると実機では論理回路が発振→中間電圧となり、リーク電流が発生する原因となる。
【0004】
そうした不具合の原因となる負帰還ループは、例えば外販ASICのように、小規模(ゲート数にして100K以下)設計が主流で、かつ回路設計に人手が入ることが多いLSIでは、意図的に作り込まれない限り内部回路内に作り込まれることはなかった。
【0005】
しかし、近年設計が大規模化しており、回路設計でも論理合成ツール等を用いた自動設計手法を用いることが多くなったことにより、意識せずに作り込まれてしまうといった例が発生する様になってきた。
【0006】
回路規模は今後も更に増えていく傾向にあり、今後ますますこうしたこと例は増えていくと考えられる。
【0007】
【発明が解決しようとする課題】
上述したような従来の例えばASICやSOCでは、そうした設計環境の変化にあっても、発振ループ個所を特に検出する仕組みは、今のところまだ開発されていないが、例えば、論理推移から発振か否かの判定を論理シミュレーションを用いて検証する方法の一例が特願平1−193668号公報に記載されている。
【0008】
同公報記載の検証方法を参照すると、特定時刻t〜t+Δtにおける論理推移から発振か否かを判定しているが、回路構成によっては、ループ内に初期値を入れることが出来ず、論理シミュレーション上では時刻tにおいてもその少し後のt+Δtにおいても内部論理は不定〜不定で、論理推移を見ることが出来なくなり判定が出来ない。
【0009】
例えば、上述した従来の検証方法の説明用回路例を示した図12を参照すると、この回路は、NAND12a→AND12b→NAND12aのループを一つ有し、入力端子BはHIGH_CLAMP(“1”でクランプ)12cにより論理レベルの“1”にクランプされているので、論理シミュレーション上ではNAND12aの出力は最初から不確定であり、これは時刻がいくら進んでも不確定の反転は不確定である。
【0010】
したがって、シミュレーション結果の波形図を示した図13の様に、時刻t=0における入力AがXのため、それ以降の出力Y→入力A間はXが周回し続けることになり、最初(時刻t=0)から最後まで不確定Xが流れるような形になっていまい、発振しているのかどうかがわからない。
【0011】
しかし、実機上でのNAND12aの入出力波形を示した図14を参照すると、論理レベルのHIGH(=1)/LOW(=0)の値を繰り返しつつ次第に中間電圧付近に安定していくので、貫通電流が流れる原因となってしまう。
【0012】
また、論理シミュレータを用いる方法では、検出の可否はVECTORの質に大きく左右されてしまうが、回路規模が大きい程、内部ノード全てをトグルさせるVECTORの作成は困難であり、実際には対応が難しくなってきているのが現状である。
【0013】
本発明の目的は、上述した従来の欠点に鑑みなされたものであり、論理ゲート一つ一つに対する特定ルールに基づいた情報を備えたライブラリを用意することで、回路そのものに対して発振ループ回路の検出、検証を行う検証方法を提供することにある。
【0014】
【課題を解決するための手段】
本発明の論理検証装置は、回路の論理検証装置であって、素子の種類毎に、入出力端子間の論理反転経路と、出力端子が固定出力となる入力端子の条件である発振停止条件とが記憶された論理反転経路発振停止条件記憶手段と、検証対象とする回路に含まれるループ回路を探知するループ検出手段と、前記探知されたループ回路のループ経路に含まれる素子毎に、前記論理反転経路発振停止条件記憶手段を参照し、ループ経路における当該素子の入力端子と出力端子の接続が前記論理反転経路に該当するか否かを検出し、ループ経路に含まれる論理反転経路の数を計数し、前記ループ回路が正帰還ループであるか負帰還ループであるかを判定する正・負帰還チェック手段と、前記正・負帰還チェック手段が負帰還ループであると判定した場合に、前記ループ回路のループ経路に含まれる素子毎に、前記論理反転経路発振停止条件記憶手段を参照し、当該素子の入力端子のうちループ経路に含まれない入力端子が前記発振停止条件を満たす場合にはそのループ回路について問題なしと判定し、入力端子の条件によっては前記発振停止条件を満たす場合はその条件を明示するループ外入力チェック手段と、を備え、前記回路の構成が発振ループ構成となっているかどうかの判定結果、及び発振状態を回避するための条件を明示するようにしたことを特徴とする。
【0015】
また、本発明の論理検証装置は、前記ループ回路のループ経路に含まれる素子に排他的論理和または排他的否定論理和が存在するか否かを検出し、検出された場合には、当該素子のループ経路に含まれない入力端子の入力値を前段に遡ってトレースし、その入力端子の入力がクランプされておりそのクランプされている入力値によって、その排他的論理和または排他的否定論理和をインバータまたはノンインバータに縮退できる場合には縮退する排他論理処理手段をさらに備え、前記排他論理処理手段が前記縮退を行った場合には、縮退したループ回路について、前記正・負帰還チェック手段、ループ外入力チェック手段による判定を行うことができる。
【0016】
さらに、本発明の論理検証装置は、前記排他論理処理手段が、排他的論理和または排他的否定論理和について、当該素子のループ経路に含まれない入力端子の入力値をトレースした結果、その入力端子の入力が不確定な場合は、前記正・負帰還チェック手段による判定を行わず、前記ループ外入力チェック手段により、前記排他的論理和または排他的否定論理和以外の素子について判定を行うこともできる。
【0017】
さらにまた、本発明の論理検証装置は、前記排他論理処理手段による入力端子の入力値トレースは、当該入力端子が別の小ループに含まれる場合に、入力値トレースを中止し、入力値を不確定として処理する入力値トレースであることもできる。
【0018】
また、本発明の論理検証装置は、前記ループ外入力チェック手段が、前記ループ経路に含まれない入力端子の入力値を前段に遡ってトレースし、そのトレースされた入力値によって、前記発振停止条件を満たすか否か判定をすることもできる。
【0019】
さらに、本発明の論理検証装置は、前記ループ外入力チェック手段による入力端子の入力値トレースは、当該入力端子が別の小ループに含まれる場合に、入力値トレースを中止し、入力値を不確定として処理する入力値トレースであることもできる。
【0020】
さらにまた、本発明の論理検証装置は、前記ループ外入力チェック手段による入力端子の入力値トレースは、前段に遡ってトレースした結果、順序回路、入出力回路の折返し、アダー、パリティジェネレータの全端子接続と、ラッチとマルチプレクサとデコーダとのイネーブル部分の端子接続の出力論理に接続されている場合は、入力値を不確定として扱うこともできる。
【0021】
また、本発明の論理検証装置は、前記ループ外入力チェック手段による入力端子の入力値トレースは、任意の指定した段数遡っても値の確定または不確定が決まらない場合は、前記入力値を不確定として扱うこともできる。
【0028】
【発明の実施の形態】
本発明は、論理ゲートによる負帰還のループを特に検出する方法として、禁止情報のデータベース化と、回路ルールチェックの検証システムを構築(論理トレース)することで、リーク電流による不良を無くし、品質の高いチップを供給できるというものである。
【0029】
まず、本発明の第1の実施形態を図面を参照しながら詳細に説明する。
【0030】
本発明の第1の実施形態によるループ回路における発振構成箇所の検出方法をフローチャートで示した図1を参照すると、この方法は、論理検証装置(図示せず)に適用され、プログラム制御により動作するループ検出処理S1と、排他的論理和または排他的否定論理和の処理S2(後述の図2)と、正・負帰還チェック処理S3(後述の図3)と、ループ外入力チェック処理S4(後述の図4)と、回路箇所を明示して問題点を表示するためのディスプレイ処理や印刷処理などの出力処理S5と、処理S1と処理S4からサブルーチンとして起動される“入力段トレース”処理を示す図5の処理が含まれる。さらに、処理S2および処理S4の制御に必要な真理値情報11および専用のライブラリ12(後述の図6)からなる記憶媒体も含んで構成される。
【0031】
ループ検出処理S1は、既にある公知技術を流用してループ個所を探す処理である。すなわち、全ての素子を始点として出力段をトレースしていき、これまでに訪れた素子に戻った場合、その素子をループとして検出する。
【0032】
探索においては、目的が論理ゲートのみの構成によるループを見つけることであること、また、経験則よりこれらの素子が含まれていた場合発振に至ることは無いことから、特定の素子(下記に記載)への接続は検索対象から外して、他の経路の探索を行う。つまり、その経路はループになっていないと判断する。
【0033】
検証対象外となるループで接続される特定素子:
順序回路、LATCHとMULTIPLEXERとDECODERとのENABLE部分、I/O折返し、ADDERへの接続。
【0034】
検証対象となるループで接続される素子:
INVERTER、NON−INVERTER、OR、NOR、AND、NAND、XOR、XNOR、複合ゲート、LATCHとMULTIPLEXERとDECODERのデータ部分。
【0035】
処理3および処理4の実行に必要なライブラリ(図6)内では予め個々の素子に関して、▲1▼論理反転経路▲2▼発振停止条件、の2つの情報が定義されている。論理反転経路は、文字どおり、ループ内での接続経路において、“入出力端子間で論理レベルが極性反転する経路がどこか”を定義したものである。
【0036】
また、発振停止条件は、“ループ外である他方の入力端子からの入力値がどの値で固定されていれば発振しないか”の情報が定義されている。
【0037】
処理S2においては、XOR/XNORがある場合の処理を行う。XOR/XNORはループ外である他方の入力端子からの入力値によって、その入出力端子間で信号レベルが極性反転するかしないかが変わるため、例外的にループ外である他方の入力端子からの入力を最初にトレースして、ループ外からの入力値が固定されているかどうかを検証する。
【0038】
そして、ループ外からの入力値の固定が可能なら、これらXOR/XNORを真理値情報11に基づいてINVERTERもしくはNON−INVERTERに置き換える。置き換えられない場合、そのループは正帰還・負帰還の判定(処理3)が出来ないため、他のブロックのループ外入力チェック(処理4)からのみ判定する。
【0039】
処理S3においては、ループ内の各素子に対してライブラリ内に貯えられた論理反転経路との照らし合わせを行い、ループ全体で反転経路がいくつ存在するかを計算する。その結果を元にループの正・負帰還を判定する。
【0040】
判定結果が奇数の場合は負帰還ループ、“0”か偶数の場合は正帰還ループと判定する。正帰還ループの場合は回路的に発振することは無いため、そのループに関しては問題無しと判定する。前述の様に、INVERTERもしくはNON−INVERTERに置き換えの出来ないXORもしくはXNORが存在した場合、この処理は行われない。
【0041】
処理S4においては、ループ内の各素子がループ外である他方の入力端子からの入力値によって、出力論理が固定される可能性について検証を行う。方法としては、それら素子の前段にあたる素子を検証する。
【0042】
前段の素子が論理ゲート等であり、クランプまたは外部端子に接続されている時に特定の値で確定すると判定するが、順序回路等、下記に示す素子が前段であった場合は経験則よりその前段素子の出力が固定されることはないため、その接続で値が固定することは無いと判定する。また、それ以外の素子の場合は、さらに前段の素子を検証する。
【0043】
論理レベルは固定され無いと判定して、それ以上の前段トレースを行わない接続素子:
順序回路、I/O折返し、アダー、パリティジェネレータの全接続、ラッチとマルチプレクサとデコーダーのイネーブル部分の接続。
【0044】
前段トレースの結果、ループ内の素子に対しその素子のループ外である他方の入力端子からの入力値が固定される場合は、ライブラリ内に貯えられた発振停止条件との照らし合わせを行い、そのループ内の素子の出力論理レベルが固定されるかどうかを判定する。外部端子の使用条件によっては固定される、といった場合はその条件も明示する。
【0045】
厳密にいえば、上述した素子/接続でも前段トレース自体は可能なため、任意に検証をする、しないを選択出来る様にしてもいい。
【0046】
また、前段トレースにおける段数についても、原則的には確定する、しないが明らかになるまで検証を行うことになっているが、任意にその段数を指定して、その段数以内で値の確定、不確定が決まらない場合は不確定扱いにする仕組みでもよい。
【0047】
また、入力トレースを終了するもう一つの条件として、既に訪れたことのある素子が出てきた場合がある。こうした場合は構成的に2重ループになっており、そのままでは永遠に廻り続けるため、そのループについてはカットする。
【0048】
出力処理S5において問題無しと判定するに足る十分な確証が得られなかった場合に、どの素子がループ構成になっているかの情報を外部の表示手段に明示して、このループに関する検証を終了する。
【0049】
明示にあたっては、個々の素子に対して回路データ内で与えられるユニークな名前を用いて、どの接続が実機上で発振する可能性のあるループになっているかを具体的に示す。
【0050】
最後に処理S6で、ループ検出処理S1で検出したループ全てを検出したかどうかを確認する。
【0051】
次に、上述した個々処理に関する詳しい説明、条件、実施理由と、本発明の検証方法の全体のフロチャートを示した図1と、それぞれの処理の詳細なフロチャートを示した図2〜図5とを併せて参照しながら実施形態を具体的に説明する。
【0052】
まず、図1内の処理について説明する。処理S1の“ループ構成を見つける”では、ループ個所を探す。処理S1が終わったら処理S2に移る。ループを見つけるアルゴリズムや、その条件については前述した内容の通りである。
【0053】
処理S2“XOR/XNORの処理”においては、処理S1で検出されたループ内にXOR/XNORがある場合INVERTER/NON−INVERTERに置き換える試みを行う。XOR/XNORがあり、かつ置き換えが出来なかった場合、処理S3は行われず処理S4に移る。それ以外は処理S3に移る。
【0054】
処理S3“正・負帰還チェック”では処理S1で発見され、場合によっては処理S2でXOR/XNORが他のブロックに置き換えられたループが正帰還ループか負帰還ループかを判定する。
【0055】
正帰還ループの場合、そのループの検証は終了して処理S6へ移る。負帰還ループの場合は処理S4に移る。その判定には“専用ライブラリ”に記述されている“論理反転経路”がループ内の接続にいくつ用いられているかを検証することで行われる。
【0056】
処理S4“ループ外入力チェック”は、処理S3で負帰還ループと判定された場合か、処理S2でXOR/XNOR全てを置き換え出来なかった場合に行われる処理である。
【0057】
処理S1で検出されたループ、あるいは処理S2でXOR/XNORが他の素子に置き換えられたループ内の各素子(XOR/XNORは除く)に対してループ外である他方の入力端子からの入力値によって出力が固定されるかどうかを判定する。
【0058】
その結果、ループ外の入力がクランプで固定されており、“専用ライブラリ”内で定義されている“発振停止条件”と照らし合わせた時に普遍的に発振することが無い場合は、このループの検証は終了して処理S6へ移る。それ以外の場合、つまり、条件付きOK,あるいは問題有りの場合は処理S5へ移る。
【0059】
処理S5“回路個所を明示して問題点を表示”は処理S4の結果として、普遍的に発振しないという確証が得られなかった場合に行われる。具体的には、処理S4で検証されたループがループ外である他方の入力端子からの入力値によって、発振停止される確証が得られない場合と、外部端子の使い方によっては発振停止される場合を含む。後者の場合は外部端子の使い方条件についてもここで表示する。この処理が終わると処理S6に移る。
【0060】
処理S6“他のループがあるか?”では、回路内に検証すべき他のループがあるかを確認する。ある場合は再び処理S2へ移り、一連の検証が行われる。無い場合はそのまま終了する。
【0061】
次に、処理S1でのループ発見後に必ず行われるフロー、すなわち、図1内における処理S2“XOR/XNORの処理”の詳細な検証方法を示した図2の処理について説明をする。なお、図1内の処理S1およびび処理S6については公知技術なので特にここでの詳細な動作説明は省略する。
【0062】
処理S2a“XOR/XNORの有無”は、処理S1で発見されたループ内にXOR/XNORが含まれるかをチェックする。一つでも含まれる場合は処理S2bへ、そうでない場合は即図1でいうところの処理S3へ移る。
【0063】
処理S2b“入力段トレース”は、処理S2aで発見されたXOR/XNORでまだ検証のされていないものを一つ選択して、その素子に対するループ外である他方の入力端子からの入力値が固定されているかどうかを検証する。
【0064】
この“入力段トレース”部分の動作については、さらに詳細な検証方法を示した図5があり、この処理については後述する。図5に示す処理を実行の結果、返り値を得たら処理S2cへ移る。
【0065】
処理S2c“(NON−)INVERTERに置き換え可?”は、処理S2bで前段トレースを行ったXOR/XNORをINVERTER/NON−INVERTERに置き換えることが可能かどうかを判定する。
【0066】
具体的には、処理S2bで検証したXOR/XNORに入力される、ループ外である他方の入力端子からの入力値が“1”ならINVERTERに置き換えが可能、“0”ならNON−INVERTERに置き換えが可能、と判断して処理S2dへ移る。
【0067】
それ以外(不定)の場合は、置き換え不可と判断して、図1でいう所の処理S4へ一気に移動する。これは複数のXOR/XNORがある場合に一つでも置き換え不可のものがあれば図1でいう所の処理4へ移動するものである。
【0068】
処理S2d“置き換えを実行”は、処理S2cの判定結果を受けて、処理S2cで判定をおこなったXOR/XNORをINVERTER/NON−INVERTERに置き換える。
【0069】
この後、処理S2eへ移る。処理S2e“他にもXOR/XNORはあるか?”では、処理S2aで発見されたXOR/XNORが他にある場合は、それを対象に再び処理S2bから処理を行う。無ければ図1に示す処理S3に移動する。
【0070】
次に、図1における処理S3について、その詳細な検証方法を記載した図3を参照しながら説明する。この処理は、処理S2でのXOR/XNOR検証の結果、処理S1で検出したループ内にXOR/XNORが存在しない場合、もしくは、XOR/XNORが存在するが全てINVERTER/NON−INVERTERに置き換えが可能だった場合に行われ、内容としてはそのループが正帰還ループか、負帰還ループかの判定を行う。
【0071】
処理S3a“始点を決める”では、処理S1で発見して、場合によっては処理2で一部変換されたループ内の任意の素子を検証素子として選択する。最終的にはSすべての素子を同じ条件で検証することになるので、この選択方法は任意で問題無い。選択したら処理S3bへ移る。
【0072】
処理S3b“反転経路通る?”では、現在検証している素子のループ内における入出力端子間において、入力および出力信号の極性が反転するかどうかを検証する。
【0073】
現在検証している素子は処理S3aで最初に選択された素子か、後述する処理S3dで新たに検証素子として選択された素子が対象となる。検証の方法はライブラリ(図6)内で定義されている“論理反転経路”の接続がループ内にあれば、反転経路を通っているとして、処理S3cに移動する。そうでない場合は処理S3dに移動する。
【0074】
処理S3c“反転数+1”は、処理S3bの検証の結果、検証している素子のループ内における入出力端子間において、入力および出力信号の極性が反転する場合に行われる。
【0075】
内部的に反転数を1増加する。内部記憶は処理S3を終了した時にクリアされるが、それまでは保持される。この処理終了後は処理S3dへ移る。
【0076】
処理S3d“次段へ”では、検証している素子を他の素子に移す。具体的には後段の素子を新たに検証する素子として選択する。この処理の次の処理S3eへ移る。
【0077】
処理S3e“始点に戻ったか?”では、処理S3dの実行結果、検証する素子として選択された素子が処理S3aで選択されたものと同じかどうかを判定する。
【0078】
選択された素子が同一の場合は、ループ内の全ての素子に対して検証したことになるので、処理S3fへ移る。同一でなければ、処理S3bに戻り同様の検証を行う。
【0079】
処理S3f“判定”では、処理S3b〜S3eまでの結果として内部的に記憶された反転数が偶数か奇数かで行う。偶数の場合は正帰還ループと判断して、次の移り先としては図1の中でいう所の処理S5となる。
【0080】
反対に奇数の場合は図1の中でいう処理S4になる。どちらに移動するとしても、内部記憶として保持されていた反転数はここで一度クリアされることとなる。
【0081】
次に、図1における処理S4について、その詳細な検証方法のフローチャートを示した図4を参照しながら説明する。
【0082】
この処理は、処理S3cで検証した正・負帰還チェックの結果、負帰還ループと検証された場合、および処理S2bのXOR/XNOR検証の結果、処理S1で検出したループ内のXOR/XNOR全てを他の素子に置き換えることが出来なかった場合に行われる。
【0083】
内容としては、処理S1で検出され、場合によっては処理S2でXOR/XNORが他の素子に置き換えられたループ内の全ての素子に対して、ループ外である他方の入力端子からの入力信号により出力値が固定されるかどうかを検証する。
【0084】
処理S4a“始点決める”では、処理S1で検出され、場合によっては処理S2でXOR/XNORが他の素子に置き換えられたループ内の全ての素子を検証するにあたって、任意の素子を最初に検証する素子として選択する。
【0085】
最終的には全ての素子を検証することとなるため、この素子の選択は任意で問題無い。この処理の後、処理S4bへ移る。
【0086】
処理S4b“XOR/XNOR?”では、現在検証している素子がXOR/XNORかどうかを判定する。現在検証している素子とは、処理S4aで最初に選択されたか、後述する処理S4iで新たに検証素子として選択された素子が対象となる。
【0087】
現在検証している素子がXOR/XNORの場合、ループ外である他方の入力端子からの入力値が固定されるかどうかはここに至るまでの間にすでに処理S2bで行われている。したがって、これ以上のこの素子に関する検証は不要のため、一気に処理4iまで移る。それ以外の場合は通常通りの検証を行うため、処理S4cへ移る。
【0088】
処理S4c“発振停止条件有り?”では、現在検証している素子が専用ライブラリ(図6)内で定義されている“発振停止条件”を持つかどうかを確認する。
【0089】
現在検証している素子とは、処理S4aで最初に選択されたか、後述する処理S4iで新たに検証素子として選択された素子が対象となる。例えば、INVERTERの様に、入力端子が一個所しかなく、ループ外から発振を停めることが出来ない素子等は、その“発振停止条件”を持たない。
【0090】
“発振停止条件”が無い場合、ループ外である他方の入力端子からの入力値で出力値が固定されることは無いとして、これ以上この素子に関する検証は不要のため、処理S4iへ移る。“発振停止条件”がある場合は処理S4dへ移る。
【0091】
処理S4d“入力段トレース”は、現在検証している素子のループ外からの入力値が固定されているかどうかを検証する。現在検証している素子とは、処理S4aで最初に選択されたか、後述する処理S4iで新たに検証素子として選択された素子が対象となる。
【0092】
処理S4cにおいて、現在検証している素子が専用ライブラリ(図6)内で定義されている“発振停止条件”を持つ時に行われる。この部分の動作については、さらに詳細な検証方法を示す図5があり、この図5については後述する。図5に示す処理の結果、返り値を得たら処理S4eへ移る。
【0093】
処理S4e“発振停止条件と比較”は、処理S4dで得られた現在検証している素子のループ外である他方の入力端子からの入力値と、専用ライブラリ(図6)内で“発振停止条件”として定義されている条件を満たすかどうかの比較を行う。
【0094】
処理S4dで得られたループ外からの入力値が不定(X)の場合は、専用ライブラリ内(図6)の“発振停止条件”として提示されている条件に関わらず満たさないということになる。この後は処理S4fへ移る。
【0095】
処理S4f“発振止まる?”では、処理S4eで行った判定の結果により次の移り先が変化する。具体的には処理S4eで得られた判定結果が、専用ライブラリ内(図6)の“発振停止条件”として提示されている条件を満たす、といった内容であれば、このループで発振することは無いとして処理S4gへ移る。
【0096】
これには、“満たすが、外部端子が○○の場合のみ”といった条件付きの場合も含まれる。満たさない場合は他の素子を検証すべく処理S4iへ移る。
【0097】
処理S4g“条件有り?”は、処理S4fで、現在検証している素子はループ外である他方の入力端子からの入力値により発振の停止が可能な場合に行われる処理である。現在検証している素子とは、処理S4aで最初に選択されたか、後述する処理S4iで新たに検証素子として選択された素子が対象となる。
【0098】
処理S4dにおいて、ループ外からの入力をトレースして、そのループ外からである他方の入力端子の入力値が固定すると判定された際に、クランプで普遍的に値が固定されるのか、外部端子の使用条件によって固定されることがあるのかによって次の移り先が分岐する。
【0099】
クランプで普遍的に固定される場合は、現在検証している処理S1で発見されたループはこの時点で発振しないと判定できるため、このループの検証は終了して、図1内でいう所の処理S6へ移る。外部端子の使用条件によって発振が停止するかどうかが変化する場合は処理S4hへ移る。
【0100】
処理S4h“条件明示”は、上述した処理S4gで発振停止に条件がある場合にその条件を示すものである。この処理の後は処理S4iへ移る。
【0101】
処理S4i“次段へ”の処理は、現在検証している素子からはループ外である他方の入力端子からの入力値で発振停止出来るという確証が得られない場合、および、発振停止出来るが条件付きであり、普遍的でない場合に行われる。
【0102】
ループ内の他の素子に関しての検証を行うため、現在検証している素子の後段の素子を新たな現在検証している素子として選択する。処理後は処理S4jへ移動する。
【0103】
処理S4j“始点に戻ったか?”では、処理S4gの結果、検証する素子として選択された素子が処理S4aで選択されたものと同じかどうかを判定する。
【0104】
同一の場合は、ループ内の全ての素子に対して検証したことになるので、処理S4全体の検証結果として、“条件付きOK、あるいは問題有り”という形で、図1でいう所の処理S5へ移る。同一でなければ、処理S4bに戻り同様の検証を行う。
【0105】
最後に、図2に処理S2bおよび図4の処理S4dにおいてサブルーチンとして起動されている“入力段トレース”の詳細なフローチャートを示した図5を参照しながら説明する。
【0106】
処理SRa“前段見る”では、現在検証している素子の一つ前段の素子を新たに現在検証する素子として選択する。最初にここに訪れた時は、処理S2b、処理S4dから起動された時に検証していた素子のループ外である他方の入力端子から1つ前段の素子を現在検証する素子として選択する。複数ある場合は全て選択する形となる。その(それらの)素子に関する判定は次の処理SRbで行う。
【0107】
処理SRb“前に訪れたか?”は、処理SRaで選択した素子(群)が前に訪れた所である場合、その経路をトレースしつづけると無限ループに陥ってしまうため、カットする必要がある。そうした部分がある場合は処理SRcへ移る。なければ処理SRdに直接移る。
【0108】
処理SRc“小ループをカット。値はXとする”は、処理SRbで現在検証している素子(群)がこれまでに訪れたことのある素子であった場合は、その経路は検証対象外として、その経路からの値は確定しない(X)とする。その後、処理SRdへと進む。
【0109】
処理SRd“0・1・Xいずれかに確定?”は、現在検証している素子(群)がクランプである場合、その種類、接続により、そこが“0”“1”に確定すると判定する。
【0110】
外部端子である場合は“0”“1”の任意の値に確定できるとする(その場合は後からその確定する任意の値を条件として処理S5で表示することとなる)。順序回路などの場合は確定しない(X)と判定する。それ以外の素子の場合は、判定は保留とする。
【0111】
個々の詳細な判定条件については前述した通りである。ここに至るまでに得られたこれらの値が確定する個所/しない個所/判定保留の個所より、処理S2b/処理S4dから起動された時に検証していた素子に対するループ外からの入力値が“0”/“1”/“X”いずれかに確定するかを判定する。
【0112】
“0”/“1”/“X”いずれにも確定しない場合は再び処理SRaに戻り、そうでない場合は、確定する値を返り値として処理S2cまたはS4eに戻る。
【0113】
次に、具体的な検証対象の回路例を示した図7を参照しながら上述した検証方法を適用する第1の実施例を説明する。
【0114】
処理S1(図1):ループ構成を見つける(この処理は公知技術の応用)
一例として、図7に示すINVERTER付きAND7a→NON−INVERTER7b→2入力OR7c→AND7aのループが一つだけ発見されたと仮定する。
【0115】
処理S2(図1):XOR/XNOR処理は、処理S1で見つけたループ内にXOR/XNORがある場合の処理を行う。
【0116】
処理S2a(図2)→“ループ内にXOR/XNORはあるか?”→無いため、“検証継続”で処理S3へ移る。
【0117】
処理S3(図1):正・負帰還チェックは、処理S1で見つけたループが正帰還ループか負帰還ループかを検証する。
【0118】
処理S3a(図3):検証するにあたっての始点を処理S1で見つけたループ内で1つ決める。ここでは、仮にAND(図7の7a)とする。
【0119】
処理S3b(図3):AND(図7の7a)のループ内における入出力経路(入力A→出力Y)が論理反転かどうかを検証する。専用ライブラリ図6の“論理反転経路”と照らし合わせ、論理反転経路を通過しているかを判定する。
【0120】
図7のAND(7a)の場合、ライブラリよりを参照すると、入力A→出力Yの経路は論理反転経路に当るため、“通る”ことになり、処理S3cへ移る。
【0121】
処理S3c(図3):内部記憶として、反転数を+1し、処理S3dへ移る。
【0122】
処理S3d(図3):AND7aの検証は終わったため、別の素子の検証に移る。
【0123】
後段ブロックであるNON−INVERTER7bへ移動する。処理S3eへ移る。
【0124】
処理S3e(図3):全ての素子を検証したかどうかを確認する。処理S3aで選択した始点はAND7aで、NON−INVERTER7bでは無いため、“NO”へ移動する。フロチャート上では処理S3b(2回目)にあたる。
【0125】
処理S3b(図3)−2:INVERTER(図7の7b)におけるループ内の入出力経路(入力A→出力Y)が論理反転かどうかを検証する。専用ライブラリ図6の“論理反転経路”列と照らし合わせ、反転経路を通過しているかを判定する。図7のNON−INVERTER7bの場合、ライブラリより反転経路は存在しないため、“通らない”へ進み、次の処理S3dへ移る。
【0126】
処理S3d(図3)−2:NON−INVERTER7bの検証が終わったたため、別の素子の検証に移る。ここでは、後段ブロックであるOR7cへ移動し、次の処理S3eへ移る。
【0127】
処理S3e(図3)−2:全ての素子を検証したかどうかを確認する。処理S3aで選択した始点はNAND7aであり、OR7cでは無いので“NO”へ移動する。フロチャート上では処理S3b(3回目)にあたる。
【0128】
処理S3b(図3)−3:OR(図7の7c)におけるループ内の入出力経路が論理反転かどうかを検証する。専用ライブラリ図6の“論理反転経路”と照らし合わせ、反転経路を通過しているかを判定する。図7のOR7cの場合、ライブラリを参照して反転経路が存在しないので、“通らない”へ進み、次の処理S3dへ移る。
【0129】
処理S3d(図3)−3:OR7cの検証が終わったため、別の素子の検証に移る。ここでは、後段ブロックであるAND7aへ移動し、次の処理S3eへ移る。
【0130】
処理S3e(図3)−3:全ての素子を検証したかどうかを確認する。処理S3aで選択した始点はAND7aであり、始点に戻っているため、一連の検証を終了して“NO”へ進み、次の処理S3fに移動する。
【0131】
処理S3f(図3):判定する。内部記憶されている総反転数は1で奇数(処理S3cで定義)である。“反転数=奇数”へ進み、処理S3としては“負帰還”を結果として返す。
【0132】
再び図1の処理S3に戻った時に“負帰還”であれば処理S4へ移動することとなる。なお、この処理S1で発見したループの検証を終えた時点で内部記憶の反転数は一度クリアされる。(0に戻る)
処理S4(図1):ループ外である他方の入力端子(B)からの入力で発振を止められるかの検証を行う。
【0133】
処理S4a(図4):処理S1で見つけたループ内で、検証の始点とする素子を一つ任意に選択する。仮にAND(図7の7a)とする。
【0134】
処理S4b(図4):AND7aがXOR/XNORでないか確認(処理S2にて別方法でトレース済みのため)。AND7aはXOR/XNORで無いため、“NO”へ進み、次の処理S4cへ移動する。
【0135】
処理S4c(図4):AND7aは発振停止条件を持つかどうかを確認する。AND7aの場合は、図6のライブラリ参照して入力B=0で固定されていれば、発振を止めることが出来るため“YES”へ進み、次の処理S4dへ移る。
【0136】
処理S4d(図4):AND7aへのループ外である他方の入力端子からの入力段をトレース(サブルーチン)する。
【0137】
処理SRa(図5):AND7aの1つ前段をトレースする。AND7aの入力Bは外部端子“IN1”から来ている。
【0138】
処理SRb(図5):処理SRaで見つけたAND7aの一つ前段の素子は前に訪れたかどうかを確認。まだ訪れていないため“NO”へ進み、次の処理SRcへ移る。
【0139】
処理SRc(図5):処理SRaで見つけたAND7aの前段入力により値が“0”/“1”/“X”(不定)いずれかに確定するかを判定する。AND7aの入力Bは外部端子からの接続で、確定させることは可能である。したがって“YES”へ進み、図4の処理S4eへ移る。
【0140】
処理S4e(図4):処理S5を通しての帰り値と、発振停止条件と比較する。
【0141】
処理S4cで得た発振停止条件より、処理SRcで得られた外部端子が“0”で固定される限り発振を停めることが可能である。したがって、処理S4fへ移る。
【0142】
処理S4f(図4):処理S4eの結果より、発振は止まるかどうかを判定。判定の結果、止まるので“YES”へ進み、次の処理S4gへ移る。
【0143】
処理S4g(図4):処理S4eの結果より、発振停止にあたっての条件があるかどうか判定する。処理S4eより、外部端子“IN1”が“0”で固定という条件が存在するため“YES”へ進み、次の処理S4hへ移る。
【0144】
処理S4h(図4):処理S4gで確認された条件を明示する。例えば、この例の場合は“外部端子「IN1」が0で固定なら問題無し”。
【0145】
処理S4i(図4):AND7aの検証が終わったため、別の素子の検証にうつる。後段ブロックであるNON−INVERTER7bを新たに検証する素子として選択し、処理S4jへ移る。
【0146】
処理S4j(図4):現在検証している素子であるNON−INVERTER7bで、処理S1で発見された現在検証しているループ内の始点に戻ったかを確認する。始点はAND7aで、現在検証している素子はNON−INVERTER7bのため、“NO”へ進み、次の処理S4b(2回目)へ移る。
【0147】
処理S4b(図4)−2:NON−INVERTER7bがXOR/XNORでないか確認(処理S2にて別方法でトレース済みのため)。NON−INVERTER7bはXOR/XNORでは無いため“NO”へ進み、次の処理S4c−2へ移動する。
【0148】
処理S4c(図4)−2:NON−INVERTER7bが発振停止条件を持つかどうかを確認する。図6のライブラリを参照すると発振停止条件を持たないことから“NO”へ進み、処理S4i−2へ移る。
【0149】
処理S4i(図4)−2:NON−INVERTER7bの検証が終わったので、別の素子の検証に移る。
【0150】
後段ブロックであるOR7cを新たに検証する素子として選択し、処理S4j−2へ移る。
【0151】
処理S4j(図4)−2:現在検証している素子であるOR7cで、処理S1で発見された、現在検証しているループ内の始点に戻ったかを確認する。始点はAND7aで、現在検証している素子はOR7cのため“NO”へ進み、処理S4b(3回目)へ移る。
【0152】
処理S4b(図4)−3:OR7cがXOR/XNORでないか確認(処理S2にて別方法でトレース済みのため)。OR7cはXOR/XNORで無いため“NO”へ進み、処理S4c−3へ移る。
【0153】
処理S4c(図4)−3:OR7cが発振停止条件を持つかどうかを確認する。
【0154】
図6のライブラリを参照すると入力B=1で固定されていれば、発振を停めることが出来るため“YES”へ進み、次の処理S4d−3へ移る。
【0155】
処理S4d(図4)−3:OR7cへのループ外である入力端子Bからの入力段をトレースする(サブルーチン)。次の処理SRa−3へ移る。
【0156】
処理SRa(図5)−3:OR7cのループ外である他方の入力端子Bからの1つ前段の素子をトレースする。OR7cの入力Bは“0”(LOW)でクランプされている。次の処理SRb−3へ移る。
【0157】
処理SRb(図5)−3:処理SRaで見つけたOR7cの一つ前段の素子は前に訪れたかどうかを確認する。まだ訪れていないため“NO”へ進み、次の処理SRc−3へ移る。
【0158】
処理SRc(図5)−3:処理SRaで見つけたOR7cの前段入力により、値が“0”/“1”/“X”(不定)いずれかに確定するかを判定する。この場合“0”でクランプされているため、“0”で固定されるので“YES”へ進み、処理S4e−3へ移る。
【0159】
処理S4e(図4)−3:処理SRc−3で得られたOR7cへのループ外である他方の入力端子Bからの入力値“0”と発振停止条件を比較する。処理S4c−3で得た発振停止条件より、“0”でクランプされていても発振停止とはならない。次の処理S4f−3へ移る。
【0160】
処理S4f(図4)−3:処理S4e−3の結果、発振が停まるか判定した結果、発振は止まらないので“NO”へ進み、処理S4i−3へ移る。
【0161】
処理S4i(図4)−3:OR7cの検証が終わったため、別の素子の検証にうつる。後段ブロックであるAND7aを新たに検証する素子として選択して処理S4j−3へ移る。
【0162】
処理S4j(図4)−3:現在検証している素子であるAND7aで、処理S1で発見された、現在検証しているループ内の始点に戻ったかを確認する。始点はAND7aで、現在検証している素子もAND7aのため“YES”へ進み、処理S5へ移る。
【0163】
処理S5(図1):処理S1で発見されたループ回路個所を明示して、問題点を表示する。この例ではAND7a,NON−INVERTER7a,OR7cを回路データ内でブロック毎に与えられたユニークな名前を用いて明示しつつ、実機上で発振する可能性があること、また、外部端子IN1=0固定で使う限りにおいては問題無い旨明示する。
【0164】
処理S6(図1):処理S1で発見された他のループは有るか?→無いので“無”へ進む。(処理おわり)
上述したように本発明は、問題のある回路構成を検出したり、実機上で発振状態を回避するための条件等を予め明示することで、より良い品質の製品を供給することが出来る。また、通常開発そのものの数倍〜数十倍かかる、不良発生時の解析、発見、リカバリのTATを完全にカットできる。
【0165】
さらに、一つ一つの素子に対して、入出力端子間で信号極性が反転する経路、および他の入力値に関係無く出力値を確定させるために必要な入力条件の情報をライブラリ化することで、回路構成に依存すること無く、発振ループ構成になっているかどうかの判定を行うことが出来る。
【0166】
さらにまた、そのライブラリそのものは、真理値情報11を基に容易に作成、更新することが出来る。
【0167】
次に、具体的な検証対象の回路例を示した図8を参照しながら前述した検証方法を適用する第2の実施例を説明する。ここではループ部分にXORが含まれている場合の例である。
【0168】
上述した第1の実施例と異なる点は、XOR/XNORが含まれている場合、ループ外である他方の入力端子からの入力値によって、信号極性の反転、非反転が変化するため、ループ内が正帰還ループか負帰還ループかの判定が通常の手段では行えない点にある。
【0169】
本発明では、ループ外の入力がクランプにより論理が確定している場合に関して、INVERTER/NON−INVERTERに置き換えることで反転、非反転の検証を可能にしている。また、置き換えられない場合でも他のブロックのループ外入力チェックも行い、疑似エラーとなる可能性を探っている。
【0170】
処理S1(図1):ループ構成を見つける(前述したように公知技術の応用)。
【0171】
処理S2へ進む。例として、図8に示した様なINVERTER付きAND8a→NON−INVERTER8b→2入力XOR8c→INVERTER付きAND8aによるループが一つだけ発見されたと仮定する。
【0172】
処理S2(図1):XOR/XNOR処理。すなわち処理2aへ移る。
【0173】
処理S2a(図2):処理S1で発見されたループ内にXOR/XNORはあるか?→XOR8cが存在するので“有り”へ進み、次の処理S2bへ移る。
【0174】
処理S2b(図2):処理S2aで発見されたXOR8cのループ外である他方の入力端子Bからの入力段をトレースする。
【0175】
処理SRa(図5):XOR8cのループ外からの入力がどこからきているか、一つ前段を見る。XOR8cのループ外である他方の入力端子Bからの入力はLOWでクランプ(8e)されており、論理レベルの“0”で固定されている。次の処理SRbへ移る。
【0176】
処理SRb(図5):クランプ(8e)は前に訪れたことがあるか?→訪れていないため“NO”へ進み、次の処理SRcへ移る。
【0177】
処理SRc(図5):ここまでで、XOR8cのループ外からの入力が“0”“1”“X”のいずれかになるか確定するか?→XOR8cのループ外からの入力はLOWクランプ(8e)なので、“0”に確定するため“YES”へ進み、処理S2cへ移る。
【0178】
処理S2c(図2):処理S1で発見されたループ内における、XOR8cはINVERTERなどに置き換えが可能か?→処理SRcの結果から、ループ外がLOW固定のため、真理値情報11よりNON−INVERTERに置き換えが可能となり、次の処理S2dへ移る。
【0179】
処理S2d(図2):処理S1で発見されたループ内における、XOR8cをNON−INVERTERに置き換える。以後、内部的に置き換えられた図9に示す回路に対して解析を行い、次の処理S2eへ移る。
【0180】
処理S2e(図2):他にも処理S1で発見されたループ内において、XOR/XNORがあるか?→無いため“検証継続”し、処理S3へ移る。
【0181】
処理S3(図1):処理S1で発見されたループが正帰還ループか、負帰還ループかを判定し、処理S3aへ移る。
【0182】
処理S3a(図3):各素子を検証するにあたって、どの素子から検証を始めるかを任意に決める。仮にAND(図9の9a)とする。
【0183】
これ以降の、処理S3内で検証する素子がNON−INVERTER9cに移動するまでは上述した第1の実施例と同様であるからここでの説明は省略する。
【0184】
処理S3d(図3)−2:現在検証している素子の検証が終わったため、次段の素子を新たに検証する素子として選択する。後段ブロックであるNON−INVERTER(元はXOR8c)9cへ移動し、次の処理S3e−2へ移る。
【0185】
処理S3e(図3)−2:現在検証している素子が処理S1で発見されたループ上を一回りして、始点に戻ったかどうかを確認する?→始点は9aで、9cでは無いため“NO”へ進み、処理S3b−2へ移る。
【0186】
処理S3b(図3)−3:現在検証している素子がループ内で接続されている経路は専用ライブラリ(図6)内で定義されている“論理反転経路”に含まれているかを判定する。図9におけるNON−INVERTER9cの場合、ライブラリを参照すると論理反転経路は存在しないため、“通らない”へ進む。
【0187】
これ以降の動作は上述した第1の実施例と同様であり、ここでの説明は省略する。
【0188】
次に、具体的な検証対象の回路例を示した図10を参照しながら前述した検証方法を適用する第3の実施例を説明する。この例はXOR/XNORが上述した第2の実施例の様に縮退出来ないケースについて説明する。
【0189】
ここでの縮退とは、冗長な個所、構成を、より簡略化されたものに置き換えることが可能である場合に、それに置き換えることを意味し、この例では、XOR/XNORを回路構成よりBUFFER/INVERTERに置き換えることである。
【0190】
縮退が出来ない場合は、ループの反転・非反転検証は行わず、他ブロックのループ外入力チェックのみを行うものとなる。
【0191】
処理S1(図1):ループ構成を見つける(公知技術の応用)例として、図10に示す様なINVERTER付きAND10a→NON−INVERTER10b→2入力XOR10c→INVERTER付きAND10aによるループが一つだけ発見されたと仮定する。
【0192】
処理S2(図1):処理S1で発見されたループ内におけるXOR/XNOR処理を行う。処理S2aへ移る。
【0193】
処理S2a(図2):処理S1で発見されたループ内にXOR/XNORはあるか?→有り→処理S2bへ移る。
【0194】
処理S2b(図2):処理S2aで発見されたXOR/XNORのループ外である他方の入力端子Bの入力段トレースを行う。すなわち、処理SRaへ移る。
【0195】
処理SRa(図5):処理S2aで発見されたXOR/XNORのループ外の前段ブロックからの入力を見る。XOR10cのループ外からの入力値は順序回路10eから来ており、その値が固定することは考え難い。次の処理SRbへ移る。
【0196】
処理SRb(図5):順序回路10eは前に訪れたか?→訪れていないため、“NO”へ進み、次の処理SRcへ移る。
【0197】
処理SRc(図5):順序回路10eの出力は“0”“1”“X”いずれかに確定するか?→Xに確定する“YES”へ進む。処理S2cへ戻る。
【0198】
処理S2c(図2):処理S2aで発見されたXOR/XNORをINVERTERなどに置き換え出来るか?→ループ外からの入力が何に固定されるか不確定のため、置き換えも出来ない。
【0199】
これ以降の動作は、処理S4内で検証する素子が10cに移動するまで前述した第1の実施例と同様であるから、ここでの説明は省略する。
【0200】
処理S4b(図4):ループ外である他方の入力端子からの入力値をトレースするが、XOR/XNORに関しては既に検証済みのため、現在選択されている検証対象の素子がXOR/XNORでないか確認する(処理S2にて別方法でトレース済みのため)。XORのため“YES”へ進む。すなわち、入力段検証をスキップし処理S4iへ移る。
【0201】
処理S4i(図4):現在検証している素子の一つ次段の素子を新たに検証素子として選択する。こここではAND10aを選択する。処理S4jへ移る。
【0202】
処理S4j(図4):処理S4iで選択した素子で、始点に戻ったか?→始点はAND10aで“YES”へ進む。
【0203】
これ以降の動作は前述した第1の実施例と同様であるからここでの説明は省略する。
【0204】
次に、具体的な検証対象の回路例を示した図11を参照しながら前述した検証方法を適用する第4の実施例を説明する。ここでは2重ループ構成の場合の例について説明する。
【0205】
発見したループの中にさらに小さい例えば負帰還ループが存在する場合は、入力段トレース時にトレースが終了しなくなってしまう。小さいループは別検証にても可能であること、また、小さいループ内で値が確定している場合は、ループカット後引き続きトレースを続けることで発見が可能であるから、そうしたケースにおいては、その部分におけるループ外入力値は不確定(X)として一旦ループをカットすることでトレースを継続する。
【0206】
処理S1(図1):ループ構成を見つける(この処理は公知技術の応用)例として、図11に示す様なNAND11a→INVERTER11b→NAND11c→AND11d→NAND11aによるループが、数あるループの中一つとして発見されたと仮定する。
【0207】
これ以降の動作は処理S4内で検証素子がNAND11cに移動するまで前述した第1の実施例と同様であるからここでの説明は省略する。
【0208】
処理S4b(図4):ループ外である他方の入力端子からの入力値をトレースするにあたって、現在検証している素子がXOR/XNORでないか確認する。上述したように、現在検証している素子はNAND11cであり、XORでは無いため“NO”へ進み、次の処理S4cへ移る。
【0209】
処理S4c(図4):現在検証している素子であるNAND11cは発振停止条件を持つか?→図6のライブラリを参照すると入力A=0で固定されていれば、発振を止めることが出来るため“YES”へ進み、次の処理S4dへ移る。
【0210】
処理S4d(図4):素子NAND11cのループ外である他方の入力端子Aからの入力値をトレースする。
【0211】
処理SRa(図5):現在検証する素子はNAND11cだが、ループ外からの1つ前段の素子であるAND11dを新たに現在検証する素子として選択し、次の処理SRbへ移る。
【0212】
処理SRb(図5):この素子AND11dは前に訪れたことがあるか?→訪れていないため“NO”へ進み、次の処理SRcへ移る。
【0213】
処理SRc(図5):この素子AND11dの出力値が“0”/“1”/“X”(不確定)のいずれに確定するかを判定するが、この情報のみでは確定させることは不可能であるから“NO”へ進み、次の処理SRa(2回目)へ移る。
【0214】
処理SRa(図5)−2:現在検証する素子はAND11dだが、さらに1つ前段の素子であるNAND11c(入力Aから)と、NON−INVERTER11e(入力Bから)から来ている。その二つを新たに検証している素子として選択し、次の処理SRb−2へ移る。
【0215】
処理SRb(図5)−2:これらの素子は前に訪れたことがあるかを確認すると、AND11cは前に訪れているので“YES”へ進み、次の処理SRd−2へ移る。
【0216】
処理SRd(図5)−2:NAND11c→AND11d→NAND11cとループになっているため、この経路はカットする。NAND11cの入力Aは不確定(X)と判定し、次の処理SRc−2へ移る。
【0217】
処理SRc(図5)−2:処理SRd−2より、NAND11cの入力Aは不確定(X)と判定し、処理S4eへ戻る。
【0218】
処理S4e(図4):最後にループ内で検証していた素子であるNAND11cに戻って、発振停止条件と比較する。処理S4cで得た発振停止条件は満たしていない。次の処理S4fへ移る。
【0219】
処理S4f(図4):処理S4eからの入力値で発振は停止するとはいいきれないため“NO”へ進み、処理S4iへ移る。
【0220】
処理S4i(図4):現在検証している素子として、新たに次段であるAND11dを選択し、処理S4jへ移る。
【0221】
処理4S4j(図4):処理S4iで選択された素子は、初めて処理S4に入った時に、始点として選択された素子か?→始点はAND11aなので“NO”へ進み、処理S4b(2回目)へ移る。
【0222】
処理S4b(図4)−2:処理S4iで選択されたAND11dはXOR/XNORでないか確認?→“NO”へ進み、次の処理S4c−2へ移る。
【0223】
処理S4c(図4)−2:処理S4iで選択されたAND11dは専用ライブラリ(図6)内で、発振停止条件を持つか?→入力Bが“0”で固定されていれば発振停止するため“YES”へ進み、次の処理S4d−2へ移る。
【0224】
処理S4d(図4)−2:処理S4iで選択されたAND11dのループ外からの入力をトレースするため、サブルーチンの処理SRa−3へ移る。
【0225】
処理SRa(図5)−3:AND11dのループ外からの1つ前段の素子を確認する。AND11dの入力Bは、NON−INVERTER11eから来ている。次の処理SRb−3へ移る。
【0226】
処理SRb(図5)−3:処理SRa−3で選択されたNON−INVERTER11eが前に訪れた素子か確認する。→訪れていないため“NO”へ進み、次の処理SRc−3へ移る。
【0227】
処理SRc(図5)−3:処理SRa−3で選択された素子からの出力値が、“0”/“1”/“X”(不確定)のいずれに確定するかを判定する。NON−INVERTER11eの出力からきており、この情報のみからでは確定しているかわからない。処理SRa−4へ戻る。
【0228】
処理SRa(図5)−4:NON−INVERTER11eのさらに1つ前段をトレースする。NON−INVERTER11eの入力AはLOW_CLAMP(LOWでクランプ)11gから来ている。次の処理SRb−4へ移る。
【0229】
処理SRb(図5)−4:処理SRa−4で選択された素子は前に訪れたことがあるか?→訪れていないため“NO”へ進み、次の処理SRc−4へ移る。
【0230】
処理SRc(図5)−4:処理SRa−4で選択された素子の出力値が“0”/“1”/“X”(不確定)いずれかに確定するかを判定する。処理SRa−4で発見されたLOW_CLAMP11gはNON−INVERTER11eを経由して、AND11dの入力端子Bに接続されてる。結果、AND11dからは“0”しか出ない。
【0231】
これ以降の動作は前述した第1の実施例と同様であるからここでの説明は省略する。
【0232】
【発明の効果】
上述したように、本発明のループ回路における発振構成箇所の検出方法は、内部回路における正帰還および負帰還によるループ回路のうち禁止されている負帰還ループを論理検証段階で検出するループ検出手段として、内部回路を構成する素子それぞれの少なくとも一方の入力端子と出力端子間で信号極性が反転する経路と、他方の入力端子の入力値に関係無く出力値を確定させるために必要な入力条件の情報とを、あらかじめ定める真理値情報に基き作成および更新して論理検証装置の記憶手段にライブラリ化するとともに、ライブラリを引用しながら、内部回路の構成が発振ループ構成になっているかどうかの判定を行ない、その判定結果を外部の表示手段に表示するので、問題のある回路構成を検出したり、実機上で発振状態を回避する為の条件等を予め明示することができ、より良い品質の製品を供給することが出来る。
【0233】
また、通常、開発そのものの数倍〜数十倍かかる、不良発生時の解析、発見、リカバリのTATを完全にカットできる。
【0234】
さらに、一つ一つの素子に対して、入出力間で反転する経路、および、他の入力値に関係無く出力を確定させるために必要な入力条件の情報をライブラリ化することで、回路構成に依存すること無く、発振ループ構成になっているかどうかの判定を容易に行うことが出来る。
【0235】
さらにまた、そのライブラリそのものは、真理値情報を基に容易に作成、更新することが出来る。
【図面の簡単な説明】
【図1】本発明の実施形態によるループ回路における発振構成箇所の検出方法を示す全体のフローチャートである。
【図2】処理S2の詳細なフローチャートである。
【図3】処理S3の詳細なフローチャートである。
【図4】処理S4の詳細なフローチャートである。
【図5】処理S2bおよびS4dの詳細なフローチャートである。
【図6】ライブラリの例を示す図である。
【図7】本発明の検証方法を適用する第1の実施例の回路例を示した図である。
【図8】本発明の検証方法を適用する第2の実施例の回路例を示した図である。
【図9】図8におけるXOR8cをNON−INVERTER9cに置き換えた図である。
【図10】本発明の検証方法を適用する第3の実施例の回路例を示した図である。
【図11】本発明の検証方法を適用する第4の実施例の回路例を示した図である。
【図12】従来の検証方法の説明用回路例を示す図である。
【図13】シミュレーション結果の波形図を示した図である。
【図14】実機上でのNANDの入出力波形を示した図である。
【符号の説明】
11 真理値情報
12 ライブラリ
7a,8a,9a,10a INVERTER付きAND
7b,8b,9c,10b,11e,12b NON−INVERTER
7c OR
8c,10c XOR
10e 順序回路
11a,11c,12a NAND
11b INVERTER
11d AND
11g LOW_CLAMP
12c HIGH_CLAMP[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a method for detecting an oscillation component in a loop circuit, and particularly in a semiconductor device such as an ASIC (Application Specific IC) that is an application specific IC or an SOC (System On Chip) that is a composite IC. Therefore, there is a high risk that a negative feedback loop is formed by a logic gate. For this reason, the present invention relates to a method for detecting an oscillation component in a loop circuit improved so as to be detected in advance before a negative feedback loop is built in a chip.
[0002]
[Prior art]
In recent years, with the progress of miniaturization technology of semiconductor elements, LSIs composed of the semiconductor elements have also increased in scale, and semiconductor memories, microcomputers, or SOCs, which are composite LSIs incorporating these LSIs on a single chip, have also increased in capacity. Have been doing. Along with this increase in capacity, the circuit function also becomes complicated, and improving the accuracy of circuit verification at the design stage is one of the important issues.
[0003]
In these LSI internal circuits, there is a positive feedback loop or a negative feedback loop as a loop circuit with logic gates. In particular, when a negative feedback loop exists, the logic circuit in the actual machine changes from oscillation to intermediate voltage, causing leakage current. Become.
[0004]
Negative feedback loops that cause such problems are intentionally created in LSIs that are mainly small-scale (number of gates: 100K or less) designs and that require a lot of manpower in circuit design, such as external sales ASICs. As long as it was not inserted, it was not built into the internal circuit.
[0005]
However, in recent years, the design has become large-scale, and there has been an example in which circuit design can be created without consciousness due to the increased use of automatic design methods using logic synthesis tools. It has become.
[0006]
The circuit scale tends to further increase in the future, and it is considered that such examples will increase in the future.
[0007]
[Problems to be solved by the invention]
In conventional ASICs and SOCs such as those described above, a mechanism that specifically detects an oscillation loop location has not yet been developed even in such a change in the design environment. An example of a method for verifying such determination by using logic simulation is described in Japanese Patent Application No. 1-193668.
[0008]
Referring to the verification method described in the publication, it is determined whether or not the oscillation occurs from the logic transition at a specific time t to t + Δt. However, depending on the circuit configuration, an initial value cannot be put in the loop, Then, even at the time t and a little later t + Δt, the internal logic is indefinite to indefinite, and the logic transition cannot be seen and the determination cannot be made.
[0009]
For example, referring to FIG. 12 showing a circuit example for explaining the conventional verification method described above, this circuit has one loop of NAND12a → AND12b → NAND12a, and the input terminal B is clamped by HIGH_CLAMP (“1”). ) 12c is clamped to the logic level “1”, and therefore, in the logic simulation, the output of the NAND 12a is uncertain from the beginning, and the inversion of the uncertain is uncertain no matter how much time advances.
[0010]
Therefore, as shown in FIG. 13 showing the waveform diagram of the simulation result, since the input A at time t = 0 is X, X continues to circulate between the subsequent output Y → input A, and the first (time From the time t = 0) to the end, the indefinite X flows so that it is not known whether it is oscillating.
[0011]
However, referring to FIG. 14 showing the input / output waveform of the NAND 12a on the actual machine, it gradually becomes stable near the intermediate voltage while repeating the logic level HIGH (= 1) / LOW (= 0) value. This causes a through current to flow.
[0012]
In the method using a logic simulator, whether or not detection is possible depends greatly on the quality of VECTOR. However, the larger the circuit scale, the more difficult it is to create a VECTOR that toggles all internal nodes. The current situation is becoming.
[0013]
An object of the present invention is made in view of the above-described conventional drawbacks, and by preparing a library having information based on a specific rule for each logic gate, an oscillation loop circuit is provided for the circuit itself. It is to provide a verification method for detecting and verifying the above.
[0014]
[Means for Solving the Problems]
The logic verification device of the present invention is a logic verification device for a circuit, and for each element type, a logic inversion path between input and output terminals and an oscillation stop condition that is a condition of an input terminal whose output terminal is a fixed output. Logic inversion path oscillation stop condition storage means for storing, loop detection means for detecting a loop circuit included in the circuit to be verified, and for each element included in the loop path of the detected loop circuit, the logic Refer to the inversion path oscillation stop condition storage means, detect whether the connection between the input terminal and the output terminal of the element in the loop path corresponds to the logic inversion path, and determine the number of logic inversion paths included in the loop path. Counting and positive / negative feedback check means for determining whether the loop circuit is a positive feedback loop or a negative feedback loop, and when determining that the positive / negative feedback check means is a negative feedback loop When each element included in the loop path of the loop circuit refers to the logic inversion path oscillation stop condition storage means, and an input terminal not included in the loop path among the input terminals of the element satisfies the oscillation stop condition Determining that there is no problem with the loop circuit, and depending on the condition of the input terminal, if the oscillation stop condition is satisfied, an out-of-loop input check means that clearly indicates the condition is provided, and the configuration of the circuit is an oscillation loop configuration. It is characterized by clearly indicating the determination result of whether or not and the condition for avoiding the oscillation state.
[0015]
Also,The logic verification device of the present invention detects whether or not an exclusive OR or an exclusive negative OR exists in an element included in the loop path of the loop circuit, and if detected, the loop of the element is detected. Traces the input value of the input terminal not included in the path back to the previous stage, and the input of the input terminal is clamped. Depending on the clamped input value, the exclusive OR or exclusive negative OR is inverted. Or, when it can be reduced to a non-inverter, it further comprises an exclusive logic processing means for reducing, and when the exclusive logic processing means performs the reduction, the positive / negative feedback check means and the outside of the loop for the reduced loop circuit Determination by the input check means can be performed.
[0016]
further,In the logic verification device according to the present invention, as a result of the exclusive logic processing means tracing the input value of the input terminal not included in the loop path of the element with respect to the exclusive logical sum or the exclusive negative logical sum, If the input is uncertain, the determination by the positive / negative feedback check means may not be performed, and the element other than the exclusive OR or exclusive negative OR may be determined by the out-of-loop input check means. .
[0017]
Furthermore,The logic verification apparatus according to the present invention processes the input value trace of the input terminal by the exclusive logic processing unit as an indeterminate input value when the input terminal is included in another small loop. Input value trace to beYou can also
[0018]
Also,In the logic verification device of the present invention, the out-of-loop input check means traces an input value of an input terminal not included in the loop path back to the previous stage, and the oscillation stop condition is satisfied by the traced input value. It can also be determined whether or not.
[0019]
further,In the logic verification device of the present invention, the input value trace of the input terminal by the out-of-loop input check means cancels the input value trace when the input terminal is included in another small loop, and sets the input value as indeterminate. It can also be an input value trace to be processed.
[0020]
Furthermore,In the logic verification device of the present invention, the input value trace of the input terminal by the out-of-loop input check means is traced back to the previous stage, as a result of sequential circuit, aliasing of the input / output circuit, adder, connection of all terminals of the parity generator, When connected to the output logic of the terminal connection of the enable portion of the latch, multiplexer and decoder, the input value can be treated as indeterminate.
[0021]
Also,In the logic verification device according to the present invention, the input value trace of the input terminal by the out-of-loop input check means determines that the input value is indeterminate if the value is not confirmed or uncertain even after any specified number of stages. It can also be handled.
[0028]
DETAILED DESCRIPTION OF THE INVENTION
As a method for detecting a negative feedback loop by a logic gate in particular, the present invention eliminates defects due to leakage current by creating a database of prohibition information and constructing a verification system for circuit rule check (logic trace). It can supply high chips.
[0029]
First, a first embodiment of the present invention will be described in detail with reference to the drawings.
[0030]
Referring to FIG. 1, which is a flowchart showing a method for detecting an oscillation component in a loop circuit according to the first embodiment of the present invention, this method is applied to a logic verification device (not shown) and operates by program control. Loop detection process S1, exclusive OR or exclusive negative OR process S2 (FIG. 2 described later), positive / negative feedback check process S3 (described later FIG. 3), and outside-loop input check process S4 (described later) FIG. 4) shows output processing S5 such as display processing and printing processing for clearly displaying circuit locations and displaying problems, and “input stage tracing” processing started as a subroutine from processing S1 and processing S4. The process of FIG. 5 is included. Furthermore, it is configured to include a storage medium including
[0031]
The loop detection process S1 is a process for searching for a loop portion by using an already known technique. That is, the output stage is traced starting from all elements, and when returning to the element visited so far, the element is detected as a loop.
[0032]
In the search, the purpose is to find a loop composed only of logic gates, and since a rule of thumb does not lead to oscillation when these elements are included, a specific element (described below) ) Is excluded from the search target, and another route is searched. That is, it is determined that the route is not a loop.
[0033]
Specific elements connected in a loop that is not verified:
Sequential circuit, ENABLE part of LATCH, MULTIPLEXER, and DECODER, I / O loopback, connection to ADDER.
[0034]
Elements connected in the loop to be verified:
INVERTER, NON-INVERTER, OR, NOR, AND, NAND, XOR, XNOR, composite gate, LATCH, MULTIPLEXER, and DECODER data parts.
[0035]
In the library required for execution of
[0036]
In addition, the oscillation stop condition defines information indicating “if the input value from the other input terminal outside the loop is fixed, it will not oscillate”.
[0037]
In the process S2, a process when there is XOR / XNOR is performed. Since XOR / XNOR changes whether or not the polarity of the signal level is inverted between the input and output terminals depending on the input value from the other input terminal outside the loop, the exception is that from the other input terminal outside the loop. Trace the input first to verify that the input value from outside the loop is fixed.
[0038]
If the input value from outside the loop can be fixed, these XOR / XNOR are replaced with INVERTER or NON-INVERTER based on the
[0039]
In process S3, each element in the loop is compared with the logic inversion path stored in the library, and the number of inversion paths in the entire loop is calculated. Based on the result, positive / negative feedback of the loop is determined.
[0040]
When the determination result is an odd number, it is determined as a negative feedback loop, and when it is “0” or an even number, it is determined as a positive feedback loop. In the case of the positive feedback loop, since there is no oscillation in the circuit, it is determined that there is no problem with the loop. As described above, when there is XOR or XNOR that cannot be replaced with INVERTER or NON-INVERTER, this processing is not performed.
[0041]
In the process S4, the possibility that the output logic is fixed by the input value from the other input terminal outside the loop of each element in the loop is verified. As a method, an element corresponding to the preceding stage of these elements is verified.
[0042]
It is determined that the element in the previous stage is a logic gate, etc., and is fixed at a specific value when it is connected to the clamp or external terminal. Since the output of the element is not fixed, it is determined that the value is not fixed by the connection. In the case of other elements, the previous element is further verified.
[0043]
Connection element that determines that the logic level is not fixed and does not perform further preceding trace:
Sequential circuit, I / O loopback, adder, all connections of parity generator, connection of latch, multiplexer and decoder enable part.
[0044]
If the input value from the other input terminal outside the loop of the element is fixed for the element in the loop as a result of the previous trace, it is checked against the oscillation stop condition stored in the library. Determine whether the output logic level of the elements in the loop is fixed. If it is fixed depending on the usage condition of the external terminal, the condition is also specified.
[0045]
Strictly speaking, since the preceding trace itself is possible even with the above-described elements / connections, it may be possible to select whether or not to arbitrarily verify.
[0046]
In addition, the number of stages in the preceding trace is determined in principle, but it is not verified, but verification is performed until it becomes clear. If confirmation is not decided, it may be handled as indeterminate.
[0047]
Another condition for ending the input trace is that an element that has already been visited has come out. In such a case, the structure is a double loop, and the loop is cut in order to keep rotating forever.
[0048]
When sufficient confirmation sufficient to determine that there is no problem in the output process S5 cannot be obtained, information on which elements are in a loop configuration is clearly indicated on the external display means, and the verification on the loop is completed. .
[0049]
In the description, a unique name given in the circuit data for each element is used to specifically indicate which connection is a loop that may oscillate on the actual machine.
[0050]
Finally, in process S6, it is confirmed whether all the loops detected in the loop detection process S1 have been detected.
[0051]
Next, FIG. 1 showing a detailed description, conditions, implementation reasons, and an overall flowchart of the verification method of the present invention, and FIGS. 2 to 5 showing detailed flowcharts of the respective processes. The embodiment will be specifically described with reference to the above.
[0052]
First, the processing in FIG. 1 will be described. In the “find loop configuration” of process S1, a loop portion is searched. When the process S1 is completed, the process proceeds to process S2. The algorithm for finding the loop and its conditions are as described above.
[0053]
In the process S2 “XOR / XNOR process”, if there is an XOR / XNOR in the loop detected in the process S1, an attempt is made to replace it with INVERTER / NON-INVERTER. When there is XOR / XNOR and replacement cannot be performed, the process S3 is not performed and the process proceeds to the process S4. Otherwise, the process proceeds to process S3.
[0054]
In the process S3 “positive / negative feedback check”, it is determined in the process S1 whether the loop in which XOR / XNOR is replaced with another block in the process S2 is a positive feedback loop or a negative feedback loop.
[0055]
In the case of a positive feedback loop, the verification of the loop ends and the process proceeds to step S6. In the case of a negative feedback loop, the process proceeds to step S4. The determination is made by verifying how many “logic inversion paths” described in the “dedicated library” are used for connection in the loop.
[0056]
The process S4 “in-loop input check” is a process that is performed when the negative feedback loop is determined in the process S3 or when all the XOR / XNOR cannot be replaced in the process S2.
[0057]
Input value from the other input terminal outside the loop for each element (excluding XOR / XNOR) in the loop detected in process S1 or in the loop in which XOR / XNOR is replaced with another element in process S2 To determine whether the output is fixed.
[0058]
As a result, if the input outside the loop is clamped and does not oscillate universally when compared with the “oscillation stop condition” defined in the “dedicated library”, verify this loop. Ends and proceeds to step S6. In other cases, that is, when the condition is OK or there is a problem, the process proceeds to step S5.
[0059]
The process S5 “display the problem by specifying the circuit location” is performed when there is no confirmation that the oscillation does not occur universally as a result of the process S4. Specifically, the case where the verification verified in step S4 cannot be stopped by the input value from the other input terminal outside the loop, and the case where the oscillation is stopped depending on how the external terminal is used. including. In the latter case, the usage conditions of the external terminal are also displayed here. When this process ends, the process proceeds to process S6.
[0060]
In process S6 “Is there another loop?”, It is checked whether there is another loop to be verified in the circuit. If there is, the process proceeds again to step S2, and a series of verifications are performed. If not, the process ends.
[0061]
Next, the flow of FIG. 2 that shows the detailed verification method of the process S2 “XOR / XNOR process” in FIG. Since the processing S1 and the processing S6 in FIG. 1 are known techniques, a detailed description of the operation is omitted here.
[0062]
The process S2a “presence / absence of XOR / XNOR” checks whether XOR / XNOR is included in the loop found in the process S1. If even one is included, the process proceeds to step S2b. If not, the process immediately proceeds to step S3 in FIG.
[0063]
Process S2b “input stage trace” selects one of the XOR / XNOR discovered in process S2a that has not been verified yet, and the input value from the other input terminal outside the loop for that element is fixed. Verify whether it has been.
[0064]
Regarding the operation of the “input stage trace” portion, there is FIG. 5 showing a more detailed verification method, which will be described later. As a result of executing the processing shown in FIG. 5, if a return value is obtained, the processing proceeds to processing S2c.
[0065]
The process S2c “Can be replaced with (NON−) INVERTER?” Determines whether or not the XOR / XNOR traced in the previous stage in the process S2b can be replaced with INVERTER / NON-INVERTER.
[0066]
Specifically, if the input value from the other input terminal outside the loop input to XOR / XNOR verified in step S2b is “1”, it can be replaced with INVERTER, and if “0”, it is replaced with NON-INVERTER. Is determined to be possible, and the process proceeds to step S2d.
[0067]
In other cases (indefinite), it is determined that the replacement is impossible, and the process moves to the process S4 in FIG. In the case where there are a plurality of XOR / XNORs, if there is one that cannot be replaced, the process moves to the
[0068]
The process S2d “execute replacement” receives the determination result of the process S2c and replaces the XOR / XNOR determined in the process S2c with INVERTER / NON-INVERTER.
[0069]
Thereafter, the process proceeds to process S2e. In the process S2e “is there any other XOR / XNOR?”, If there is another XOR / XNOR found in the process S2a, the process from the process S2b is performed again. If not, the process moves to step S3 shown in FIG.
[0070]
Next, the process S3 in FIG. 1 will be described with reference to FIG. 3 describing the detailed verification method. This process can be replaced with INVERTER / NON-INVERTER if XOR / XNOR does not exist in the loop detected in process S1 as a result of XOR / XNOR verification in process S2, or XOR / XNOR exists but all exist. If it is, it is determined whether the loop is a positive feedback loop or a negative feedback loop.
[0071]
In the process S3a “determine start point”, an arbitrary element in the loop discovered in the process S1 and partially converted in the
[0072]
In the process S3b “pass through inversion path?”, It is verified whether the polarities of the input and output signals are inverted between the input / output terminals in the loop of the currently verified element.
[0073]
The currently verified element is the element first selected in the process S3a or the element newly selected as the verification element in the process S3d described later. In the verification method, if the connection of the “logic inversion path” defined in the library (FIG. 6) is in the loop, the process proceeds to step S3c assuming that the inversion path is passed. Otherwise, the process proceeds to process S3d.
[0074]
The process S3c “inversion number + 1” is performed when the polarity of the input and output signals is inverted between the input and output terminals in the loop of the element being verified as a result of the verification in the process S3b.
[0075]
Internally, the inversion number is increased by 1. The internal memory is cleared when processing S3 is completed, but is retained until then. After this process is completed, the process proceeds to process S3d.
[0076]
In process S3d “next stage”, the element being verified is transferred to another element. Specifically, the subsequent element is selected as an element to be newly verified. The process moves to the next process S3e of this process.
[0077]
In process S3e “return to start point?”, It is determined whether the element selected as the element to be verified is the same as the element selected in process S3a as a result of the process S3d.
[0078]
If the selected elements are the same, all the elements in the loop have been verified, and the process proceeds to process S3f. If they are not the same, the process returns to step S3b to perform the same verification.
[0079]
The process S3f “determination” is performed depending on whether the inversion number stored internally as a result of the processes S3b to S3e is an even number or an odd number. If it is an even number, it is determined as a positive feedback loop, and the next destination is the process S5 in FIG.
[0080]
On the other hand, if the number is odd, the process S4 in FIG. In either case, the inversion number held as the internal memory is cleared once here.
[0081]
Next, processing S4 in FIG. 1 will be described with reference to FIG. 4 showing a flowchart of the detailed verification method.
[0082]
This processing is performed when all of the XOR / XNORs detected in the processing S1 are detected when the negative feedback loop is verified as a result of the positive / negative feedback check verified in the processing S3c and when the XOR / XNOR verification of the processing S2b is performed. This is performed when it cannot be replaced with another element.
[0083]
The contents are detected by the processing S1 and, depending on the input signal from the other input terminal outside the loop, for all the elements in the loop in which XOR / XNOR is replaced by other elements in the processing S2. Verify whether the output value is fixed.
[0084]
In the process S4a “determine start point”, when verifying all the elements in the loop detected in the process S1 and possibly having the XOR / XNOR replaced with another element in the process S2, an arbitrary element is verified first. Select as an element.
[0085]
Since all elements are finally verified, the selection of this element is arbitrary and causes no problem. After this process, the process proceeds to process S4b.
[0086]
In process S4b “XOR / XNOR?”, It is determined whether or not the currently verified element is XOR / XNOR. The element currently being verified is the element selected first in the process S4a or newly selected as the verification element in the process S4i described later.
[0087]
If the currently verified element is XOR / XNOR, whether or not the input value from the other input terminal outside the loop is fixed has already been performed in step S2b. Accordingly, no further verification on this element is necessary, and the process immediately moves to process 4i. In other cases, the process proceeds to step S4c in order to perform verification as usual.
[0088]
In process S4c “Is oscillation stop condition present?”, It is checked whether or not the currently verified element has an “oscillation stop condition” defined in the dedicated library (FIG. 6).
[0089]
The element currently being verified is the element selected first in the process S4a or newly selected as the verification element in the process S4i described later. For example, an element that has only one input terminal and cannot stop oscillation from outside the loop, such as INVERTER, does not have the “oscillation stop condition”.
[0090]
If there is no “oscillation stop condition”, the output value is not fixed by the input value from the other input terminal outside the loop, and no further verification on this element is required, so the process proceeds to step S4i. If there is an “oscillation stop condition”, the process proceeds to step S4d.
[0091]
The process S4d “input stage trace” verifies whether or not the input value from outside the loop of the currently verified element is fixed. The element currently being verified is the element selected first in the process S4a or newly selected as the verification element in the process S4i described later.
[0092]
In step S4c, this is performed when the currently verified element has an “oscillation stop condition” defined in the dedicated library (FIG. 6). Regarding the operation of this part, FIG. 5 shows a more detailed verification method, and FIG. 5 will be described later. If a return value is obtained as a result of the process shown in FIG. 5, the process proceeds to process S4e.
[0093]
The process S4e “comparison with oscillation stop condition” includes the input value from the other input terminal outside the loop of the currently verified element obtained in process S4d and the “oscillation stop condition” in the dedicated library (FIG. 6). A comparison is made as to whether or not the condition defined as “is satisfied.
[0094]
When the input value from outside the loop obtained in the process S4d is indefinite (X), it does not satisfy the condition presented as the “oscillation stop condition” in the dedicated library (FIG. 6). Thereafter, the process proceeds to process S4f.
[0095]
In the process S4f “Oscillation stopped?”, The next destination changes depending on the result of the determination performed in the process S4e. Specifically, if the determination result obtained in step S4e satisfies the condition presented as the “oscillation stop condition” in the dedicated library (FIG. 6), the loop will not oscillate. To step S4g.
[0096]
This includes a case where there is a condition such as “satisfied but only when the external terminal is OO”. If not, the process proceeds to process S4i to verify other elements.
[0097]
The process S4g “has a condition?” Is a process that is performed in the process S4f when the currently verified element can stop oscillating by the input value from the other input terminal outside the loop. The element currently being verified is the element selected first in the process S4a or newly selected as the verification element in the process S4i described later.
[0098]
In process S4d, when the input from the outside of the loop is traced and it is determined that the input value of the other input terminal from the outside of the loop is fixed, is the value fixed universally by the clamp? The next destination is branched depending on whether it is fixed depending on the usage conditions.
[0099]
When the clamp is universally fixed, since it can be determined that the loop found in the currently verified process S1 does not oscillate at this time, the verification of this loop is completed, and the place in FIG. Control goes to step S6. If it is determined whether or not the oscillation stops depending on the use condition of the external terminal, the process proceeds to step S4h.
[0100]
The process S4h “Condition explicit” indicates the condition when there is a condition for stopping the oscillation in the above-described process S4g. After this process, the process proceeds to process S4i.
[0101]
The process S4i “to next stage” is performed when there is no confirmation from the currently verified element that the oscillation can be stopped by the input value from the other input terminal outside the loop. This is done when it is attached and not universal.
[0102]
In order to perform verification on other elements in the loop, an element subsequent to the currently verified element is selected as a new currently verified element. After the process, the process moves to process S4j.
[0103]
In the process S4j “Return to start point?”, It is determined whether or not the element selected as the element to be verified is the same as the element selected in the process S4a as a result of the process S4g.
[0104]
In the case of the same, all the elements in the loop have been verified, and therefore, as a verification result of the entire process S4, “conditional OK or problematic” process S5 in FIG. Move on. If they are not the same, the process returns to step S4b to perform the same verification.
[0105]
Finally, FIG. 2 will be described with reference to FIG. 5 showing a detailed flowchart of “input stage tracing” started as a subroutine in the processing S2b and the processing S4d in FIG.
[0106]
In the process SRa “view previous stage”, the element immediately preceding the currently verified element is newly selected as the currently verified element. When visiting here for the first time, the element in the previous stage is selected as an element to be verified from the other input terminal outside the loop of the element being verified when activated from the processes S2b and S4d. If there are multiple, all will be selected. The determination regarding the (their) elements is performed in the next process SRb.
[0107]
If the element (group) selected in the process SRa has been visited before, the process SRb “has visited before?” Falls into an infinite loop if the path is continuously traced, and therefore needs to be cut. . If there is such a part, the process proceeds to processing SRc. If not, the process proceeds directly to the process SRd.
[0108]
The process SRc “cuts a small loop. The value is X” indicates that the element (group) currently verified in the process SRb is an element that has been visited so far. The value from the route is not determined (X). Thereafter, the process proceeds to the process SRd.
[0109]
The process SRd “confirmed to any one of 0, 1 and X?” Determines that if the currently verified element (group) is a clamp, it is determined to be “0” or “1” depending on the type and connection. .
[0110]
In the case of an external terminal, it can be determined to be an arbitrary value of “0” or “1” (in this case, it will be displayed in step S5 on the condition that the determined arbitrary value is used later). In the case of a sequential circuit or the like, it is determined that it is not fixed (X). In the case of other elements, the determination is suspended.
[0111]
Each detailed determination condition is as described above. From the places where these values obtained up to this point are determined / not determined / determination pending places, the input value from outside the loop for the element that has been verified when activated from the processing S2b / processing S4d is “0”. It is determined whether or not “/” 1 ”/“ X ”is fixed.
[0112]
If neither “0” / “1” / “X” is determined, the process returns to the process SRa. If not, the process returns to the process S2c or S4e with the determined value as a return value.
[0113]
Next, a first embodiment to which the above-described verification method is applied will be described with reference to FIG. 7 showing a specific circuit example to be verified.
[0114]
Process S1 (FIG. 1): find loop configuration (this process is an application of known technology)
As an example, assume that only one loop of AND7a → NON-INVERTER7b → 2-input OR7c → AND7a with INVERTER shown in FIG. 7 is found.
[0115]
Process S2 (FIG. 1): The XOR / XNOR process is performed when XOR / XNOR exists in the loop found in process S1.
[0116]
Process S2a (FIG. 2) → “Is XOR / XNOR in the loop?” → No, so move to process S3 with “Continue verification”.
[0117]
Process S3 (FIG. 1): The positive / negative feedback check verifies whether the loop found in process S1 is a positive feedback loop or a negative feedback loop.
[0118]
Process S3a (FIG. 3): One starting point for verification is determined in the loop found in process S1. Here, it is assumed that AND (7a in FIG. 7) is assumed.
[0119]
Process S3b (FIG. 3): It is verified whether the input / output path (input A → output Y) in the AND (7a in FIG. 7) loop is logically inverted. The dedicated library is checked against the “logic inversion path” in FIG. 6 to determine whether it passes through the logic inversion path.
[0120]
In the case of the AND (7a) in FIG. 7, when referring to the library, the path from input A to output Y corresponds to the logic inversion path, and thus “passes”, and the process proceeds to step S3c.
[0121]
Process S3c (FIG. 3): As an internal memory, the inversion number is incremented by 1, and the process proceeds to process S3d.
[0122]
Process S3d (FIG. 3): Since the verification of the AND 7a has been completed, the process proceeds to verification of another element.
[0123]
It moves to NON-INVERTER 7b, which is a subsequent block. Control goes to step S3e.
[0124]
Process S3e (FIG. 3): It is confirmed whether or not all elements have been verified. Since the start point selected in the process S3a is AND7a and not NON-INVERTER7b, the process moves to “NO”. This corresponds to the process S3b (second time) on the flowchart.
[0125]
Process S3b (FIG. 3) -2: It is verified whether the input / output path (input A → output Y) in the loop in INVERTER (7b in FIG. 7) is logically inverted. The dedicated library is checked against the “logic inversion path” column in FIG. 6 to determine whether the inversion path is passed. In the case of NON-INVERTER 7b in FIG. 7, since there is no inversion path from the library, the process proceeds to “does not pass” and proceeds to the next process S3d.
[0126]
Process S3d (FIG. 3) -2: Since the verification of NON-INVERTER 7b has been completed, the process proceeds to verification of another element. Here, the process moves to the subsequent block OR7c, and then moves to the next process S3e.
[0127]
Process S3e (FIG. 3) -2: It is confirmed whether or not all elements have been verified. Since the start point selected in the process S3a is the NAND 7a and not the OR 7c, it moves to “NO”. This corresponds to step S3b (third time) on the flowchart.
[0128]
Process S3b (FIG. 3) -3: It is verified whether the input / output path in the loop in the OR (7c in FIG. 7) is logically inverted. The dedicated library is checked against the “logic inversion path” in FIG. 6 to determine whether it passes through the inversion path. In the case of OR7c in FIG. 7, since there is no inversion path with reference to the library, the process proceeds to “does not pass” and proceeds to the next process S3d.
[0129]
Process S3d (FIG. 3) -3: Since the verification of the OR 7c is completed, the process proceeds to verification of another element. Here, it moves to AND7a which is a latter block, and moves to the next process S3e.
[0130]
Process S3e (FIG. 3) -3: It is confirmed whether or not all elements have been verified. Since the start point selected in the process S3a is the AND 7a and has returned to the start point, the series of verifications is terminated, the process proceeds to “NO”, and the process proceeds to the next process S3f.
[0131]
Process S3f (FIG. 3): Determine. The total number of inversions stored internally is 1 and an odd number (defined in step S3c). The process proceeds to “inversion number = odd number”, and “negative feedback” is returned as a result as processing S3.
[0132]
If it is “negative feedback” when returning to the process S3 in FIG. 1 again, the process moves to the process S4. Note that the inversion number of the internal storage is once cleared when the verification of the loop found in the processing S1 is completed. (Return to 0)
Process S4 (FIG. 1): It is verified whether the oscillation can be stopped by the input from the other input terminal (B) outside the loop.
[0133]
Process S4a (FIG. 4): One element as a verification starting point is arbitrarily selected in the loop found in process S1. It is assumed that AND (7a in FIG. 7) is assumed.
[0134]
Process S4b (FIG. 4): It is confirmed whether AND7a is not XOR / XNOR (because it was traced by another method in process S2). Since the AND 7a is not XOR / XNOR, the process proceeds to “NO” and moves to the next process S4c.
[0135]
Process S4c (FIG. 4): The AND 7a checks whether or not it has an oscillation stop condition. In the case of AND7a, if the input B = 0 is fixed with reference to the library of FIG. 6, the oscillation can be stopped, so that the process proceeds to “YES”, and the process proceeds to the next process S4d.
[0136]
Process S4d (FIG. 4): The input stage from the other input terminal outside the loop to the AND 7a is traced (subroutine).
[0137]
Process SRa (FIG. 5): Traces the previous stage of AND7a. The input B of the AND 7a comes from the external terminal “IN1”.
[0138]
Process SRb (FIG. 5): It is confirmed whether the element immediately before AND7a found in process SRa has visited before. Since it has not yet been visited, the process proceeds to “NO” and proceeds to the next process SRc.
[0139]
Process SRc (FIG. 5): It is determined whether the value is determined to be “0” / “1” / “X” (undefined) by the preceding input of AND7a found in process SRa. The input B of the AND 7a can be determined by connection from an external terminal. Therefore, the process proceeds to “YES” and proceeds to the process S4e in FIG.
[0140]
Process S4e (FIG. 4): The return value through process S5 is compared with the oscillation stop condition.
[0141]
From the oscillation stop condition obtained in the process S4c, the oscillation can be stopped as long as the external terminal obtained in the process SRc is fixed at “0”. Therefore, the process proceeds to process S4f.
[0142]
Process S4f (FIG. 4): It is determined from the result of process S4e whether oscillation stops. As a result of the determination, the process stops, so the process proceeds to “YES” and proceeds to the next process S4g.
[0143]
Process S4g (FIG. 4): It is determined from the result of process S4e whether there is a condition for stopping oscillation. From process S4e, since there is a condition that the external terminal “IN1” is “0” and fixed, the process proceeds to “YES” and proceeds to the next process S4h.
[0144]
Process S4h (FIG. 4): The conditions confirmed in process S4g are specified. For example, in this example, “if the external terminal“ IN1 ”is fixed at 0, there is no problem”.
[0145]
Process S4i (FIG. 4): Since the verification of the AND 7a is completed, the verification of another element is performed. The subsequent block NON-INVERTER 7b is selected as a new verification element, and the process proceeds to step S4j.
[0146]
Process S4j (FIG. 4): It is checked whether the current verification element NON-INVERTER 7b has returned to the start point in the currently verified loop discovered in process S1. Since the starting point is AND7a and the currently verified element is NON-INVERTER7b, the process proceeds to "NO" and proceeds to the next process S4b (second time).
[0147]
Process S4b (FIG. 4) -2: Check whether NON-INVERTER 7b is not XOR / XNOR (because it has been traced by another method in process S2). Since NON-INVERTER 7b is not XOR / XNOR, the process proceeds to “NO” and moves to the next process S4c-2.
[0148]
Process S4c (FIG. 4) -2: It is confirmed whether NON-INVERTER 7b has an oscillation stop condition. Referring to the library of FIG. 6, since there is no oscillation stop condition, the process proceeds to “NO”, and the process proceeds to process S4i-2.
[0149]
Process S4i (FIG. 4) -2: Since the verification of NON-INVERTER 7b has been completed, the process proceeds to verification of another element.
[0150]
The subsequent block OR7c is selected as a new element to be verified, and the process proceeds to S4j-2.
[0151]
Process S4j (FIG. 4) -2: It is confirmed whether or not the OR7c, which is the currently verified element, has returned to the start point in the currently verified loop found in Process S1. The starting point is AND7a. Since the currently verified element is OR7c, the process proceeds to “NO”, and the process proceeds to step S4b (third time).
[0152]
Process S4b (FIG. 4) -3: Check whether OR7c is not XOR / XNOR (because it was traced by another method in process S2). Since OR7c is not XOR / XNOR, the process proceeds to “NO” and proceeds to process S4c-3.
[0153]
Process S4c (FIG. 4) -3: It is confirmed whether OR7c has an oscillation stop condition.
[0154]
Referring to the library of FIG. 6, if input B = 1 is fixed, the oscillation can be stopped, so that the process proceeds to “YES”, and the process proceeds to the next process S4d-3.
[0155]
Process S4d (FIG. 4) -3: The input stage from the input terminal B which is outside the loop to the OR 7c is traced (subroutine). The process proceeds to the next process SRa-3.
[0156]
Process SRa (FIG. 5) -3: Traces the immediately preceding element from the other input terminal B outside the OR7c loop. The input B of the OR 7c is clamped at “0” (LOW). Control proceeds to the next process SRb-3.
[0157]
Process SRb (FIG. 5) -3: It is confirmed whether the element immediately before OR7c found in process SRa has visited before. Since it has not yet been visited, the process proceeds to “NO” and proceeds to the next process SRc-3.
[0158]
Process SRc (FIG. 5) -3: It is determined whether the value is fixed to any one of “0” / “1” / “X” (undefined) based on the preceding input of OR7c found in process SRa. In this case, since it is clamped at “0”, it is fixed at “0”, so the process proceeds to “YES”, and the process proceeds to step S4e-3.
[0159]
Process S4e (FIG. 4) -3: The oscillation stop condition is compared with the input value “0” from the other input terminal B outside the loop to OR7c obtained in process SRc-3. From the oscillation stop condition obtained in the process S4c-3, the oscillation is not stopped even if it is clamped at “0”. The process proceeds to the next process S4f-3.
[0160]
Process S4f (FIG. 4) -3: As a result of the process S4e-3, it is determined whether or not the oscillation stops. As a result, the oscillation does not stop, so the process proceeds to “NO”, and the process proceeds to the process S4i-3.
[0161]
Process S4i (FIG. 4) -3: Since the verification of the OR 7c is completed, the verification of another element is performed. The subsequent block AND7a is selected as a new verification element, and the process proceeds to step S4j-3.
[0162]
Process S4j (FIG. 4) -3: It is confirmed whether or not the AND7a, which is the currently verified element, has returned to the start point in the currently verified loop found in Process S1. The starting point is AND7a, and since the currently verified element is also AND7a, the process proceeds to “YES”, and the process proceeds to step S5.
[0163]
Process S5 (FIG. 1): The loop circuit location found in process S1 is clearly indicated, and the problem is displayed. In this example, AND7a, NON-INVERTER7a, and OR7c are clearly shown using unique names given for each block in the circuit data, and there is a possibility of oscillation on the actual machine, and the external terminal IN1 = 0 fixed. Clarify that there is no problem as long as it is used in.
[0164]
Process S6 (FIG. 1): Is there another loop found in process S1? → Proceed to “None” because there is no. (End of processing)
As described above, the present invention can supply a product with better quality by detecting a problematic circuit configuration and clearly specifying conditions for avoiding an oscillation state on an actual machine in advance. In addition, the analysis, discovery, and recovery TAT when a defect occurs, which takes several times to several tens of times that of normal development itself, can be completely cut.
[0165]
Furthermore, for each element, a library of information on the input conditions necessary to determine the output value regardless of the path where the signal polarity is inverted between the input and output terminals and other input values. It is possible to determine whether or not the oscillation loop configuration is established without depending on the circuit configuration.
[0166]
Furthermore, the library itself can be easily created and updated based on the
[0167]
Next, a second embodiment to which the above-described verification method is applied will be described with reference to FIG. 8 showing a specific circuit example to be verified. In this example, XOR is included in the loop portion.
[0168]
The difference from the first embodiment described above is that when XOR / XNOR is included, signal polarity inversion and non-inversion change depending on the input value from the other input terminal outside the loop. It is in the point which cannot judge whether is a positive feedback loop or a negative feedback loop by a normal means.
[0169]
In the present invention, inversion and non-inversion verification can be performed by substituting INVERTER / NON-INVERTER for the case where the logic outside the input outside the loop is fixed. Even if it cannot be replaced, it also checks the input outside the loop of other blocks, and searches for the possibility of a pseudo error.
[0170]
Process S1 (FIG. 1): A loop configuration is found (application of a known technique as described above).
[0171]
It progresses to process S2. As an example, assume that only one loop of AND8a with INVERTER as shown in FIG. 8 → NON-INVERTER8b → 2-input XOR8c → AND8a with INVERTER is found.
[0172]
Process S2 (FIG. 1): XOR / XNOR process. That is, the process proceeds to process 2a.
[0173]
Process S2a (FIG. 2): Is there an XOR / XNOR in the loop found in process S1? -> Since XOR 8c exists, the process proceeds to "present" and proceeds to the next process S2b.
[0174]
Process S2b (FIG. 2): Traces the input stage from the other input terminal B outside the loop of the XOR 8c found in the process S2a.
[0175]
Process SRa (FIG. 5): Look at the previous stage where the input from outside the loop of XOR 8c comes from. The input from the other input terminal B which is outside the loop of the XOR 8c is clamped (8e) by LOW and fixed at the logic level “0”. The process proceeds to the next process SRb.
[0176]
Process SRb (FIG. 5): Has the clamp (8e) been visited before? → Since it has not been visited, the process proceeds to “NO” and proceeds to the next process SRc.
[0177]
Process SRc (FIG. 5): So far, is it determined whether the input from outside the loop of the XOR 8c is “0”, “1”, or “X”? → Since the input from outside the loop of XOR 8c is the LOW clamp (8e), the process proceeds to “YES” to determine “0”, and proceeds to process S2c.
[0178]
Process S2c (FIG. 2): Is it possible to replace XOR8c with INVERTER or the like in the loop found in process S1? → From the result of the process SRc, since the outside of the loop is fixed LOW, the
[0179]
Process S2d (FIG. 2): XOR 8c in the loop found in process S1 is replaced with NON-INVERTER. Thereafter, analysis is performed on the circuit shown in FIG. 9 replaced internally, and the process proceeds to the next process S2e.
[0180]
Process S2e (FIG. 2): Are there other XOR / XNORs in the loop found in process S1? → Since there is no “verification continued”, the process proceeds to step S3.
[0181]
Process S3 (FIG. 1): It is determined whether the loop discovered in process S1 is a positive feedback loop or a negative feedback loop, and the process proceeds to process S3a.
[0182]
Process S3a (FIG. 3): When verifying each element, it is arbitrarily determined from which element the verification is started. It is assumed that AND (9a in FIG. 9) is assumed.
[0183]
Subsequent processes until the element to be verified in the process S3 moves to the NON-INVERTER 9c are the same as those in the first embodiment described above, and a description thereof will be omitted.
[0184]
Process S3d (FIG. 3) -2: Since the verification of the currently verified element is completed, the next stage element is selected as a new element to be verified. The process moves to the subsequent block NON-INVERTER (originally XOR8c) 9c, and proceeds to the next process S3e-2.
[0185]
Process S3e (FIG. 3) -2: Check whether the currently verified element has made a round on the loop found in process S1 and returned to the starting point? → The starting point is 9a, not 9c, so the process proceeds to “NO”, and the process proceeds to step S3b-2.
[0186]
Process S3b (FIG. 3) -3: It is determined whether the path to which the currently verified element is connected in the loop is included in the “logic inversion path” defined in the dedicated library (FIG. 6). . In the case of NON-INVERTER 9c in FIG. 9, since there is no logic inversion path when referring to the library, the process proceeds to “does not pass”.
[0187]
The subsequent operation is the same as that of the first embodiment described above, and a description thereof is omitted here.
[0188]
Next, a third embodiment to which the above-described verification method is applied will be described with reference to FIG. 10 showing a specific circuit example to be verified. In this example, a case where XOR / XNOR cannot be degenerated as in the second embodiment described above will be described.
[0189]
Here, the degeneration means that a redundant part or configuration can be replaced with a more simplified one. In this example, XOR / XNOR is replaced by BUFFER / It is to replace with INVERTER.
[0190]
If the degeneration cannot be performed, the loop inversion / non-inversion verification is not performed, and only the input outside the loop of other blocks is checked.
[0191]
Process S1 (FIG. 1): As an example of finding a loop configuration (application of a known technique), it is assumed that only one loop of AND10a with INVERTER → NON-INVERTER 10b → 2-input XOR10c → AND 10a with INVERTER is found as shown in FIG. Assume.
[0192]
Process S2 (FIG. 1): The XOR / XNOR process in the loop found in process S1 is performed. Move to processing S2a.
[0193]
Process S2a (FIG. 2): Is there an XOR / XNOR in the loop found in process S1? → Yes → Transfer to process S2b.
[0194]
Process S2b (FIG. 2): The input stage trace of the other input terminal B outside the XOR / XNOR loop found in process S2a is performed. That is, the process proceeds to the process SRa.
[0195]
Process SRa (FIG. 5): The input from the preceding block outside the XOR / XNOR loop found in process S2a is viewed. The input value from outside the loop of the XOR 10c comes from the sequential circuit 10e, and it is difficult to think that the value is fixed. The process proceeds to the next process SRb.
[0196]
Process SRb (FIG. 5): Has the sequential circuit 10e been visited before? → Because it has not been visited, the process proceeds to “NO” and proceeds to the next process SRc.
[0197]
Process SRc (FIG. 5): Is the output of the sequential circuit 10e determined to be “0”, “1”, or “X”? → Proceed to “YES” to confirm X. It returns to process S2c.
[0198]
Process S2c (FIG. 2): Can the XOR / XNOR found in process S2a be replaced with INVERTER or the like? → Since the input from outside the loop is not fixed, it cannot be replaced.
[0199]
The subsequent operations are the same as those in the first embodiment described above until the element to be verified in the process S4 moves to 10c, and thus the description thereof is omitted here.
[0200]
Process S4b (FIG. 4): The input value from the other input terminal outside the loop is traced, but since XOR / XNOR has already been verified, is the currently selected verification target element not XOR / XNOR? Confirm (because it has been traced by another method in process S2). Proceed to “YES” for XOR. That is, the input stage verification is skipped and the process proceeds to process S4i.
[0201]
Process S4i (FIG. 4): The next-stage element of the currently verified element is newly selected as the verification element. Here, AND10a is selected. Control goes to step S4j.
[0202]
Process S4j (FIG. 4): Has the element selected in process S4i returned to the start point? → The starting point is AND10a and the process proceeds to “YES”.
[0203]
Since the subsequent operation is the same as that of the first embodiment described above, description thereof is omitted here.
[0204]
Next, a fourth embodiment to which the above-described verification method is applied will be described with reference to FIG. 11 showing a specific circuit example to be verified. Here, an example in the case of a double loop configuration will be described.
[0205]
If there is a smaller negative feedback loop, for example, in the found loop, the trace will not be terminated during the input stage tracing. Small loops can be verified separately, and if the value is confirmed within a small loop, it can be discovered by continuing tracing after the loop cut. The input value outside the loop in the portion is indeterminate (X), and the trace is continued by cutting the loop once.
[0206]
Process S1 (FIG. 1): As an example of finding a loop configuration (this process is an application of known technology), a loop of NAND11a → INVERTER11b → NAND11c → AND11d → NAND11a as shown in FIG. Assume that it has been discovered.
[0207]
The subsequent operations are the same as those in the first embodiment described above until the verification element is moved to the
[0208]
Process S4b (FIG. 4): When tracing the input value from the other input terminal outside the loop, it is confirmed whether the currently verified element is not XOR / XNOR. As described above, the currently verified element is the
[0209]
Process S4c (FIG. 4): Does the
[0210]
Process S4d (FIG. 4): The input value from the other input terminal A outside the loop of the element NAND11c is traced.
[0211]
Process SRa (FIG. 5): The element to be verified at present is the
[0212]
Process SRb (FIG. 5): Has this element AND11d been visited before? → Since it has not been visited, the process proceeds to “NO” and proceeds to the next process SRc.
[0213]
Process SRc (FIG. 5): It is determined whether the output value of the element AND11d is determined to be “0” / “1” / “X” (indeterminate), but it is impossible to determine only with this information Therefore, the process proceeds to “NO” and proceeds to the next process SRa (second time).
[0214]
Process SRa (FIG. 5) -2: The element to be verified at present is AND11d, but it comes from NAND11c (from input A) and NON-INVERTER11e (from input B), which are the previous stage elements. The two are selected as newly verified elements, and the process proceeds to the next process SRb-2.
[0215]
Process SRb (FIG. 5) -2: When these elements have been visited before, the AND 11c has visited before, so that the process proceeds to “YES” and proceeds to the next process SRd-2.
[0216]
Process SRd (FIG. 5) -2: Since this loop is NAND11c → AND11d → NAND11c, this path is cut. The input A of the
[0217]
Process SRc (FIG. 5) -2: From process SRd-2, the input A of the
[0218]
Process S4e (FIG. 4): Finally, the process returns to the
[0219]
Process S4f (FIG. 4): Since the oscillation cannot be stopped by the input value from process S4e, the process proceeds to “NO” and proceeds to process S4i.
[0220]
Process S4i (FIG. 4): The next-stage AND11d is newly selected as the currently verified element, and the process proceeds to process S4j.
[0221]
Process 4S4j (FIG. 4): Is the element selected in process S4i selected as the starting point when first entering process S4? → Since the starting point is AND11a, the process proceeds to “NO” and proceeds to the process S4b (second time).
[0222]
Process S4b (FIG. 4) -2: Confirm whether AND11d selected in process S4i is not XOR / XNOR? → Proceed to "NO" and proceed to the next process S4c-2.
[0223]
Process S4c (FIG. 4) -2: Does the AND 11d selected in process S4i have the oscillation stop condition in the dedicated library (FIG. 6)? → If the input B is fixed at “0”, the oscillation is stopped to proceed to “YES”, and the process proceeds to the next process S4d-2.
[0224]
Process S4d (FIG. 4) -2: In order to trace the input from outside the loop of AND11d selected in process S4i, the process proceeds to subroutine SRa-3.
[0225]
Process SRa (FIG. 5) -3: The previous element from outside the loop of AND11d is confirmed. The input B of the AND 11d comes from the NON-INVERTER 11e. Control proceeds to the next process SRb-3.
[0226]
Process SRb (FIG. 5) -3: Check whether the NON-INVERTER 11e selected in the process SRa-3 is a previously visited element. → Since it has not been visited, the process proceeds to “NO” and proceeds to the next process SRc-3.
[0227]
Process SRc (FIG. 5) -3: It is determined whether the output value from the element selected in process SRa-3 is fixed to “0” / “1” / “X” (indeterminate). It comes from the output of
[0228]
Process SRa (FIG. 5) -4: Traces one more stage before
[0229]
Process SRb (FIG. 5) -4: Has the element selected in Process SRa-4 been visited before? → Since it has not been visited, the process proceeds to “NO” and proceeds to the next process SRc-4.
[0230]
Process SRc (FIG. 5) -4: It is determined whether the output value of the element selected in process SRa-4 is fixed to “0” / “1” / “X” (indeterminate). The
[0231]
Since the subsequent operation is the same as that of the first embodiment described above, description thereof is omitted here.
[0232]
【The invention's effect】
As described above, the detection method of the oscillation constituent location in the loop circuit of the present invention is a loop detection means for detecting a prohibited negative feedback loop among the loop circuits by the positive feedback and the negative feedback in the internal circuit at the logic verification stage. Information on input conditions necessary to determine the output value regardless of the input value of the other input terminal and the path where the signal polarity is inverted between at least one input terminal and the output terminal of each element constituting the internal circuit Are created and updated based on predetermined truth value information to create a library in the storage means of the logic verification device, and it is determined whether the internal circuit configuration is an oscillation loop configuration while quoting the library. Because the judgment result is displayed on an external display means, it is possible to detect a problematic circuit configuration and avoid an oscillation state on the actual machine. Conditions or the like can be pre-explicitly for the reason, it is possible to supply a better quality of products.
[0233]
In addition, the analysis, discovery, and recovery TAT when a defect occurs, which usually takes several times to several tens of times that of development itself, can be completely cut.
[0234]
In addition, for each element, a library that contains information on the path that inverts between input and output, and information on the input conditions necessary to determine the output regardless of other input values. It is possible to easily determine whether or not the oscillation loop configuration has been established without depending on it.
[0235]
Furthermore, the library itself can be easily created and updated based on truth value information.
[Brief description of the drawings]
FIG. 1 is an overall flowchart showing a method for detecting an oscillation component in a loop circuit according to an embodiment of the present invention.
FIG. 2 is a detailed flowchart of processing S2.
FIG. 3 is a detailed flowchart of processing S3.
FIG. 4 is a detailed flowchart of processing S4.
FIG. 5 is a detailed flowchart of processes S2b and S4d.
FIG. 6 is a diagram illustrating an example of a library.
FIG. 7 is a diagram showing a circuit example of a first embodiment to which the verification method of the present invention is applied.
FIG. 8 is a diagram showing a circuit example of a second embodiment to which the verification method of the present invention is applied.
9 is a diagram in which XOR 8c in FIG. 8 is replaced with NON-INVERTER 9c.
FIG. 10 is a diagram showing a circuit example of a third embodiment to which the verification method of the present invention is applied.
FIG. 11 is a diagram showing a circuit example of a fourth embodiment to which the verification method of the present invention is applied.
FIG. 12 is a diagram illustrating a circuit example for explaining a conventional verification method;
FIG. 13 shows a waveform diagram of a simulation result.
FIG. 14 is a diagram showing input / output waveforms of a NAND on an actual machine.
[Explanation of symbols]
11 Truth information
12 Library
7a, 8a, 9a, 10a AND with INVERTER
7b, 8b, 9c, 10b, 11e, 12b NON-INVERTER
7c OR
8c, 10c XOR
10e Sequential circuit
11a, 11c, 12a NAND
11b INVERTER
11d AND
11g LOW_CLAMP
12c HIGH_CLAMP
Claims (8)
素子の種類毎に、入出力端子間の論理反転経路と、出力端子が固定出力となる入力端子の条件である発振停止条件とが記憶された論理反転経路発振停止条件記憶手段と、 For each type of element, a logic inversion path between the input and output terminals, and a logic inversion path oscillation stop condition storage means storing an oscillation stop condition that is a condition of the input terminal where the output terminal is a fixed output,
検証対象とする回路に含まれるループ回路を探知するループ検出手段と、 Loop detection means for detecting a loop circuit included in the circuit to be verified;
前記探知されたループ回路のループ経路に含まれる素子毎に、前記論理反転経路発振停止条件記憶手段を参照し、ループ経路における当該素子の入力端子と出力端子の接続が前記論理反転経路に該当するか否かを検出し、ループ経路に含まれる論理反転経路の数を計数し、前記ループ回路が正帰還ループであるか負帰還ループであるかを判定する正・負帰還チェック手段と、 For each element included in the loop path of the detected loop circuit, the logic inversion path oscillation stop condition storage means is referred to, and the connection between the input terminal and the output terminal of the element in the loop path corresponds to the logic inversion path. Positive / negative feedback check means for determining whether the loop circuit is a positive feedback loop or a negative feedback loop, and counting the number of logic inversion paths included in the loop path,
前記正・負帰還チェック手段が負帰還ループであると判定した場合に、前記ループ回路のループ経路に含まれる素子毎に、前記論理反転経路発振停止条件記憶手段を参照し、当該素子の入力端子のうちループ経路に含まれない入力端子が前記発振停止条件を満たす場合にはそのループ回路について問題なしと判定し、入力端子の条件によっては前記発振停止条件を満たす場合はその条件を明示するループ外入力チェック手段と、を備え、 When it is determined that the positive / negative feedback check means is a negative feedback loop, for each element included in the loop path of the loop circuit, the logic inversion path oscillation stop condition storage means is referred to and the input terminal of the element If the input terminal not included in the loop path satisfies the oscillation stop condition, it is determined that there is no problem with the loop circuit. Depending on the input terminal condition, if the oscillation stop condition is satisfied, the condition is clearly indicated. An external input check means,
前記回路の構成が発振ループ構成となっているかどうかの判定結果、及び発振状態を回避するための条件を明示するようにしたことを特徴とする論理検証装置。 A logic verification apparatus characterized by clearly indicating a determination result as to whether or not the circuit configuration is an oscillation loop configuration and a condition for avoiding an oscillation state.
前記排他論理処理手段が前記縮退を行った場合には、縮退したループ回路について、 When the exclusive logic processing means performs the degeneration, for the degenerated loop circuit,
前記正・負帰還チェック手段、ループ外入力チェック手段による判定を行うことを特徴とする請求項1記載の論理検証装置。 2. The logic verification apparatus according to claim 1, wherein determination is performed by the positive / negative feedback check means and the out-of-loop input check means.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000367338A JP3703390B2 (en) | 2000-12-01 | 2000-12-01 | Logic verification device |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000367338A JP3703390B2 (en) | 2000-12-01 | 2000-12-01 | Logic verification device |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2002169852A JP2002169852A (en) | 2002-06-14 |
| JP3703390B2 true JP3703390B2 (en) | 2005-10-05 |
Family
ID=18837778
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000367338A Expired - Fee Related JP3703390B2 (en) | 2000-12-01 | 2000-12-01 | Logic verification device |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3703390B2 (en) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5618768B2 (en) | 2010-11-01 | 2014-11-05 | 富士通株式会社 | Connection verification method, storage medium thereof, and connection verification device |
| US10089577B2 (en) * | 2016-08-05 | 2018-10-02 | Xilinx, Inc. | Binary neural networks on progammable integrated circuits |
| CN117250480B (en) * | 2023-11-08 | 2024-02-23 | 英诺达(成都)电子科技有限公司 | Loop detection method, device, equipment and storage medium of combinational logic circuit |
-
2000
- 2000-12-01 JP JP2000367338A patent/JP3703390B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2002169852A (en) | 2002-06-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Yang et al. | Quick scan chain diagnosis using signal profiling | |
| JPH04148882A (en) | Indicating fault position of logic integrated circuit | |
| KR19990077472A (en) | Method for automatically generating behavioral environment for model checking | |
| US7107502B2 (en) | Diagnostic method for detection of multiple defects in a Level Sensitive Scan Design (LSSD) | |
| US8359565B2 (en) | Method and apparatus for generating test patterns for use in at-speed testing | |
| US20030221173A1 (en) | Method and apparatus for detecting connectivity conditions in a netlist database | |
| JP3703390B2 (en) | Logic verification device | |
| JPH1062494A (en) | Fault location estimation method for sequential circuits | |
| JPH09305638A (en) | Static timing analysis device and method thereof | |
| JPH11142482A (en) | Timing failure diagnosis method and apparatus | |
| JP2872217B1 (en) | Logic circuit delay path search method and apparatus, and machine-readable recording medium storing program | |
| US5528604A (en) | Test pattern generation for an electronic circuit using a transformed circuit description | |
| JP2655105B2 (en) | Fault location estimation method for sequential circuits | |
| US6748352B1 (en) | Method and apparatus for scan design using a formal verification-based process | |
| Brand et al. | Identification of redundant delay faults | |
| JP4053695B2 (en) | Logic circuit delay fault detection method | |
| Krstic et al. | Primitive delay faults: Identification, testing, and design for testability | |
| Eggersglüß et al. | Robust algorithms for high quality test pattern generation using Boolean satisfiability | |
| JPH03290761A (en) | Method for designing logic circuit | |
| JPH07198782A (en) | Diagnosis circuit | |
| Zarrineh et al. | Automatic generation and compaction of March tests for memory arrays | |
| Biswal et al. | A binary decision diagram approach to on-line testing of asynchronous circuits with dynamic and static C-elements | |
| JP2003028935A (en) | Inferring system for failure transmission route | |
| Peña et al. | Symbolic techniques for the automatic test pattern generation for Speed-Independent circuits | |
| JP3127856B2 (en) | LSI combination circuit fault inference device |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050317 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050329 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050530 |
|
| 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: 20050628 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050719 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |