JP2002169852A - ループ回路における発振構成箇所の検出方法 - Google Patents
ループ回路における発振構成箇所の検出方法Info
- Publication number
- JP2002169852A JP2002169852A JP2000367338A JP2000367338A JP2002169852A JP 2002169852 A JP2002169852 A JP 2002169852A JP 2000367338 A JP2000367338 A JP 2000367338A JP 2000367338 A JP2000367338 A JP 2000367338A JP 2002169852 A JP2002169852 A JP 2002169852A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- input
- exclusive
- processing
- verified
- 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.)
- Granted
Links
Landscapes
- Tests Of Electronic Circuits (AREA)
Abstract
提供する。 【解決手段】内部回路における正帰還および負帰還によ
るループ回路のうち禁止されている負帰還ループを論理
検証段階で検出するループ検出手段として、内部回路を
構成する素子それぞれの少なくとも一方の入力端子と出
力端子間で信号極性が反転する経路と、他方の入力端子
の入力値に関係無く出力値を確定させるために必要な入
力条件の情報とを、あらかじめ定める真理値情報11に
基き作成および更新して論理検証装置の記憶媒体12に
ライブラリ化するとともに、ライブラリを引用しなが
ら、内部回路の構成が発振ループ構成になっているかど
うかの判定を行ない、その判定結果を外部の表示手段に
表示する。
Description
発振構成箇所の検出方法に係わり、特に半導体装置の中
でも特定用途向けICであるASIC(Applica
tion Specific IC)または複合ICで
あるSOC(System On Chip)などで
は、ある特定の目的のために種々の回路を構成する場合
が多いため、論理ゲートによる負帰還ループを作り込む
危険性が高い。そのため、負帰還ループがチップに作り
込まれる前に予め検出するように改善したループ回路に
おける発振構成箇所の検出方法に関する。
伴い、その半導体素子で構成するLSIも大規模化し、
半導体メモリ、マイクロコンピュータ、あるいはこれら
のLSIを1チップに搭載した複合LSIであるSOC
も大容量化してきている。この大容量化とともにその回
路機能も複雑化し、設計段階における回路検証の精度向
上が重要な課題の一つである。
ートによるループ回路として正帰還ループまたは負帰還
ループが存在するが、特に負帰還ループが存在すると実
機では論理回路が発振→中間電圧となり、リーク電流が
発生する原因となる。
は、例えば外販ASICのように、小規模(ゲート数に
して100K以下)設計が主流で、かつ回路設計に人手
が入ることが多いLSIでは、意図的に作り込まれない
限り内部回路内に作り込まれることはなかった。
路設計でも論理合成ツール等を用いた自動設計手法を用
いることが多くなったことにより、意識せずに作り込ま
れてしまうといった例が発生する様になってきた。
り、今後ますますこうしたこと例は増えていくと考えら
れる。
例えばASICやSOCでは、そうした設計環境の変化
にあっても、発振ループ個所を特に検出する仕組みは、
今のところまだ開発されていないが、例えば、論理推移
から発振か否かの判定を論理シミュレーションを用いて
検証する方法の一例が特願平1−193668号公報に
記載されている。
時刻t〜t+Δtにおける論理推移から発振か否かを判
定しているが、回路構成によっては、ループ内に初期値
を入れることが出来ず、論理シミュレーション上では時
刻tにおいてもその少し後のt+Δtにおいても内部論
理は不定〜不定で、論理推移を見ることが出来なくなり
判定が出来ない。
回路例を示した図12を参照すると、この回路は、NA
ND12a→AND12b→NAND12aのループを
一つ有し、入力端子BはHIGH_CLAMP(“1”
でクランプ)12cにより論理レベルの“1”にクラン
プされているので、論理シミュレーション上ではNAN
D12aの出力は最初から不確定であり、これは時刻が
いくら進んでも不確定の反転は不確定である。
図を示した図13の様に、時刻t=0における入力Aが
Xのため、それ以降の出力Y→入力A間はXが周回し続
けることになり、最初(時刻t=0)から最後まで不確
定Xが流れるような形になっていまい、発振しているの
かどうかがわからない。
力波形を示した図14を参照すると、論理レベルのHI
GH(=1)/LOW(=0)の値を繰り返しつつ次第
に中間電圧付近に安定していくので、貫通電流が流れる
原因となってしまう。
は、検出の可否はVECTORの質に大きく左右されて
しまうが、回路規模が大きい程、内部ノード全てをトグ
ルさせるVECTORの作成は困難であり、実際には対
応が難しくなってきているのが現状である。
みなされたものであり、論理ゲート一つ一つに対する特
定ルールに基づいた情報を備えたライブラリを用意する
ことで、回路そのものに対して発振ループ回路の検出、
検証を行う検証方法を提供することにある。
ける発振構成箇所の検出方法は、半導体装置の内部回路
における正帰還および負帰還によるループ回路のうち禁
止されている負帰還ループを論理検証段階で検出するル
ープ検出手段として、前記内部回路を構成する素子それ
ぞれの少なくとも一方の入力端子と出力端子間で信号極
性が反転する経路と、他方の入力端子の入力値に関係無
く出力値を確定させるために必要な入力条件の情報と
を、あらかじめ定める真理値情報に基き作成および更新
して論理検証装置の記憶手段にライブラリ化するととも
に、前記ライブラリを引用しながら、前記内部回路の構
成が発振ループ構成になっているかどうかの判定を行な
い、その判定結果を外部の表示手段に表示することを特
徴とする。
和それぞれの一方の入力端子を経路とする前記負帰還ル
ープであって、前記負帰還ループ外である他方の入力端
子の論理レベルがクランプにより確定している場合に、
前記真理値情報に基づき前記排他的論理和または排他的
否定論理和をインバータまたはノンインバータに置き換
えて検証を行うことができる。
理和それぞれの一方の入力端子を経路とする前記負帰還
ループであって、前記負帰還ループ外である他方の入力
端子の論理レベルが特定の素子または特定の機能ブロッ
クにより不確定の場合は、前記負帰還ループにおける信
号極性の反転または非反転検証は行わず、前記負帰還ル
ープ外である他方の入力端子の経路における他ブロック
の検証のみを行うこともえきる。
中に更に小負帰還ループが存在する場合は、前記小負帰
還ループを予め検証するとともに、前記小負帰還ループ
内で前記ライブラリの発振停止条件を満たす値が確定し
ている場合はループ遮断後引き続きトレースを継続し、
前記小負帰還ループ外である他方の入力端子の入力値は
不確定として前記負帰還ループを遮断してトレースを継
続することもできる。
転経路は、前記負帰還ループ内での接続経路において入
出力端子間で論理が反転する経路がどこかを定義され、
前記発振停止条件は、前記負帰還ループ外である他方の
入力端子からの信号入力値がどの値で固定されていれば
発振しないかの情報が定義されている。
検証対象の全ての素子を始点として出力段をトレースし
ていき、既に訪れた素子に戻った場合その素子を前記ル
ープとして検出するループ検出処理と、前記ループに排
他的論理和または排他的否定論理和を検出したら、前記
ループ外である他方の入力端子からの入力信号レベルが
固定されているかどうかを検証し、前記真理値情報に基
づいてインバータまたはノンインバータに置き換えられ
るか否かを判断し可能なら置き換える排他的論理和また
は排他的否定論理和の処置処理と、前記ループ内の各素
子に対して前記ライブラリ内の論理反転経路との照合を
行い、前記ループ全体で反転経路がいくつ存在するかを
計算しその結果が奇数の場合は負帰還ループ、零か偶数
の場合は正帰還ループと判定する正・負帰還チェック処
理と、前記負帰還ループの場合および前記インバータま
たはノンインバータに置き換えられない場合は、前記負
帰還ループ内の各素子がループ外の他方の入力端子から
の入力信号によって出力論理が固定されるか否かをその
素子の前段の素子に遡って順次検証するループ外入力チ
ェック処理と、前記ループ外入力チェック処理で問題無
しと判定する確証が得られなかった場合に、どの素子が
ループ構成になっているかの情報を明示して、前記ルー
プに関する検証を終了する問題点表示処理と、前記ルー
プ検出処理で検出した前記ループ全てを検出したかどう
かを確認するループ検出確認処理とを備える。
理において出力論理が固定されないと判断しそれ以上の
前記前段の素子に遡るトレースを行わない特定の素子ま
たは特定の機能ブロックは、順序回路、入出力回路の折
返し、アダー、パリティジェネレータの全端子接続と、
ラッチとマルチプレクサとデコーダとのイネーブル部分
の端子接続とする。
いて前記前段の素子に遡るトレースを実行するか否かを
任意に選択する。
おいて前記前段トレースの段数を任意に指定し、その段
数以内で値の確定または不確定が決まらない場合は不確
定扱いにする。
的否定論理和の処置処理は、前記ループ検出処理で発見
された論理ループ内に排他的論理和または排他的否定論
理和が含まれるか否かを判断する第1の排他的論理和ま
たは排他的否定論理和の有無判断処理と、前段の処理で
検出された前記排他的論理和または前記排他的否定論理
和でまだ検証のされていないものを一つ選択して、その
素子に対する前記ループ外である他方の入力端子からの
入力値が固定されているかどうかを検証する入力段トレ
ース処理と、前段の処理で前段トレースを行った前記排
他的論理和または前記排他的否定論理和をインバータま
たはノンインバータに置き換えることが可能かどうかを
判定し可能であれば次へ進み不可であれば前記ループ外
入力チェック処理へ移る置き換え判断処理と、前記置き
換え判断処理の判定結果を受けて前記入力段処理で判定
をおこなった前記排他的論理和または前記排他的否定論
理和をインバータまたはノンインバータに置き換える置
き換え実行処理と、前記排他的論理和または排他的否定
論理和の有無処理で発見された前記排他的論理和または
前記排他的否定論理和が他にある場合は、それを対象に
再び前記入力段トレース処理から繰り返し、検出されな
くなると検証継続の判断を下し前記正・負帰還処理へ移
る第2の排他的論理和または排他的否定論理和の有無判
断処理とを備える。
前記排他的論理和または前記排他的否定論理和に入力さ
れる前記ループ外である他方の入力端子からの入力値が
論理レベルの“1”ならインバータに、“0”ならノン
インバータに置き換えが可能と判断して次の処理へ進
み、それ以外の場合は置き換え不可と判断して前記ルー
プ外入力チェック処理へ移る。
プ検証処理で検出された素子、もしくは前記排他的論路
和または排他的否定論理和の処置処理で一部変換された
ループ内の任意の素子を、検証対象素子として選択する
始点決定処理と、現在検証している素子の前記ループ内
における入出力端子間で信号極性が反転するかどうか
を、前記ライブラリで定義されている論理反転経路の接
続が前記ループ内にあるか否かで判定する反転経路通過
判定処理と、前記反転経路通過判定処理の検証の結果、
検証している素子の前記ループ内における入出力端子間
の信号極性が反転する場合に反転数を1増加し、前記正
・負帰還処理が全て終了した時にクリアされる反転数+
1処理と、検証対象素子として後段の素子を新たに選択
する次段素子選択処理と、前記次段素子選択処理で新た
に選択された素子が前記始点決定処理で選択されたもの
と同じかどうかを判定し、同一の場合は次の処理へ進み
同一でなければ前記反転経路通過判定処理に戻る始点戻
り判定処理と、前記反転経路通過判定処理から前記始点
戻り判定処理までの結果として前記反転数+1処理で記
憶された反転数が偶数の場合は正帰還と判断して前記問
題点表示処理へ移り、奇数の場合は前記ループ外入力チ
ェック処理へ移る反転結果判定処理とを備える。
理は、前記排他的論理和または前記排他的否定論理和が
他の素子に置き換えられた前記ループ内の任意の素子を
最初に検証する素子として選択する始点決定処理と、現
在検証している素子が前記排他的論理和または前記排他
的否定論理和かどうかを判定しそれぞれ後続する定めら
れた処理へ移る排他的論理和または排他的否定論理和の
判定処理と、現在検証している素子が前記ライブラリ内
の前記発振停止条件をもつかどうかを確認し、前記発振
停止条件が無い場合は後続する次段素子選択処理へ移
り、前記発振停止条件がある場合は次段の入力段トレー
ス処理へ進む発振停止条件の有無確認処理と、前記発振
停止条件を持つ時に、現在検証している素子の前記ルー
プ外である他方の入力端子からの入力値が固定されてい
るかどうかを検証する入力段トレース処理と、前記入力
段トレース処理で得られた現在検証中の素子に対する前
記ループ外である他方の入力端子からの入力値と、前記
発振停止条件との比較を行う発振停止条件比較処理と、
前記発振停止条件比較処理で得られた判定結果が前記発
振停止条件を満たす内容であれば次段の処理へ進み、満
たさない場合は後続する処理である次段の素子選択処理
へ移る発振ループの有無確認処理と、前記発振ループの
有無確認処理で発振条件を満たすと判定された前記ルー
プ外の入力端子からの入力値がクランプで固定される場
合は現在検証しているループの検証は終了し、外部端子
の使用条件によって発振が停止する場合は次段の処理へ
進む条件有無確認処理と、前記条件有無確認処理で発振
停止に条件がある場合にその条件を外部表示で示す条件
明示処理と、現在検証している素子からは前記ループ外
である他方の入力端子の入力値で発振停止可能な確証が
得られない場合および条件付き停止の場合に、前記ルー
プ内の現在検証している素子の後段の素子を新たな検証
対象素子として選択する次段素子選択処理と、前記検証
対象素子として選択された素子が前記始点決定処理で選
択されたものと同じかどうかを判定し、同一の場合は条
件付き通過または問題有りとして前記外部表示処理へ移
動し、同一でなければ前記排他的論理和または排他的否
定論理和の判定処理に戻る検証終了確認処理とを備え
る。
処理で検証していた素子の前記ループ外の入力端子の方
に接続されている、一つ前段の素子を新たに検証対象素
子として選択する前段の素子選択手段と、前記前段の素
子選択手段で選択した前記検証対象素子が前に訪れた素
子か否かを判定し、既に訪れている場合と初めて訪れる
素子の場合とにそれぞれ分岐する検証素子判断処理と、
前記検証素子判断処理で既に訪れている素子と判断され
た場合その経路は検証対象外としてその経路からの値は
確定しない値とする不確定値設定処理と、現在検証して
いる素子に対する前記ループ外である他方の入力端子か
らの入力値が“0”、“1”または“不確定”のいずれ
に確定するかを判定し、確定しない場合は前記前段の素
子選択処理に戻る“0”“1”“不確定”判定処理とを
備える。
還のループを特に検出する方法として、禁止情報のデー
タベース化と、回路ルールチェックの検証システムを構
築(論理トレース)することで、リーク電流による不良
を無くし、品質の高いチップを供給できるというもので
ある。
照しながら詳細に説明する。
における発振構成箇所の検出方法をフローチャートで示
した図1を参照すると、この方法は、論理検証装置(図
示せず)に適用され、プログラム制御により動作するル
ープ検出処理S1と、排他的論理和または排他的否定論
理和の処理S2(後述の図2)と、正・負帰還チェック
処理S3(後述の図3)と、ループ外入力チェック処理
S4(後述の図4)と、回路箇所を明示して問題点を表
示するためのディスプレイ処理や印刷処理などの出力処
理S5と、処理S1と処理S4からサブルーチンとして
起動される“入力段トレース”処理を示す図5の処理が
含まれる。さらに、処理S2および処理S4の制御に必
要な真理値情報11および専用のライブラリ12(後述
の図6)からなる記憶媒体も含んで構成される。
を流用してループ個所を探す処理である。すなわち、全
ての素子を始点として出力段をトレースしていき、これ
までに訪れた素子に戻った場合、その素子をループとし
て検出する。
構成によるループを見つけることであること、また、経
験則よりこれらの素子が含まれていた場合発振に至るこ
とは無いことから、特定の素子(下記に記載)への接続
は検索対象から外して、他の経路の探索を行う。つま
り、その経路はループになっていないと判断する。
素子:順序回路、LATCHとMULTIPLEXER
とDECODERとのENABLE部分、I/O折返
し、ADDERへの接続。
INVERTER、NON−INVERTER、OR、
NOR、AND、NAND、XOR、XNOR、複合ゲ
ート、LATCHとMULTIPLEXERとDECO
DERのデータ部分。
ラリ(図6)内では予め個々の素子に関して、論理反
転経路発振停止条件、の2つの情報が定義されてい
る。論理反転経路は、文字どおり、ループ内での接続経
路において、“入出力端子間で論理レベルが極性反転す
る経路がどこか”を定義したものである。
他方の入力端子からの入力値がどの値で固定されていれ
ば発振しないか”の情報が定義されている。
ある場合の処理を行う。XOR/XNORはループ外で
ある他方の入力端子からの入力値によって、その入出力
端子間で信号レベルが極性反転するかしないかが変わる
ため、例外的にループ外である他方の入力端子からの入
力を最初にトレースして、ループ外からの入力値が固定
されているかどうかを検証する。
能なら、これらXOR/XNORを真理値情報11に基
づいてINVERTERもしくはNON−INVERT
ERに置き換える。置き換えられない場合、そのループ
は正帰還・負帰還の判定(処理3)が出来ないため、他
のブロックのループ外入力チェック(処理4)からのみ
判定する。
対してライブラリ内に貯えられた論理反転経路との照ら
し合わせを行い、ループ全体で反転経路がいくつ存在す
るかを計算する。その結果を元にループの正・負帰還を
判定する。
“0”か偶数の場合は正帰還ループと判定する。正帰還
ループの場合は回路的に発振することは無いため、その
ループに関しては問題無しと判定する。前述の様に、I
NVERTERもしくはNON−INVERTERに置
き換えの出来ないXORもしくはXNORが存在した場
合、この処理は行われない。
ループ外である他方の入力端子からの入力値によって、
出力論理が固定される可能性について検証を行う。方法
としては、それら素子の前段にあたる素子を検証する。
プまたは外部端子に接続されている時に特定の値で確定
すると判定するが、順序回路等、下記に示す素子が前段
であった場合は経験則よりその前段素子の出力が固定さ
れることはないため、その接続で値が固定することは無
いと判定する。また、それ以外の素子の場合は、さらに
前段の素子を検証する。
れ以上の前段トレースを行わない接続素子:順序回路、
I/O折返し、アダー、パリティジェネレータの全接
続、ラッチとマルチプレクサとデコーダーのイネーブル
部分の接続。
しその素子のループ外である他方の入力端子からの入力
値が固定される場合は、ライブラリ内に貯えられた発振
停止条件との照らし合わせを行い、そのループ内の素子
の出力論理レベルが固定されるかどうかを判定する。外
部端子の使用条件によっては固定される、といった場合
はその条件も明示する。
段トレース自体は可能なため、任意に検証をする、しな
いを選択出来る様にしてもいい。
も、原則的には確定する、しないが明らかになるまで検
証を行うことになっているが、任意にその段数を指定し
て、その段数以内で値の確定、不確定が決まらない場合
は不確定扱いにする仕組みでもよい。
条件として、既に訪れたことのある素子が出てきた場合
がある。こうした場合は構成的に2重ループになってお
り、そのままでは永遠に廻り続けるため、そのループに
ついてはカットする。
に足る十分な確証が得られなかった場合に、どの素子が
ループ構成になっているかの情報を外部の表示手段に明
示して、このループに関する検証を終了する。
路データ内で与えられるユニークな名前を用いて、どの
接続が実機上で発振する可能性のあるループになってい
るかを具体的に示す。
検出したループ全てを検出したかどうかを確認する。
明、条件、実施理由と、本発明の検証方法の全体のフロ
チャートを示した図1と、それぞれの処理の詳細なフロ
チャートを示した図2〜図5とを併せて参照しながら実
施形態を具体的に説明する。
理S1の“ループ構成を見つける”では、ループ個所を
探す。処理S1が終わったら処理S2に移る。ループを
見つけるアルゴリズムや、その条件については前述した
内容の通りである。
いては、処理S1で検出されたループ内にXOR/XN
ORがある場合INVERTER/NON−INVER
TERに置き換える試みを行う。XOR/XNORがあ
り、かつ置き換えが出来なかった場合、処理S3は行わ
れず処理S4に移る。それ以外は処理S3に移る。
S1で発見され、場合によっては処理S2でXOR/X
NORが他のブロックに置き換えられたループが正帰還
ループか負帰還ループかを判定する。
終了して処理S6へ移る。負帰還ループの場合は処理S
4に移る。その判定には“専用ライブラリ”に記述され
ている“論理反転経路”がループ内の接続にいくつ用い
られているかを検証することで行われる。
理S3で負帰還ループと判定された場合か、処理S2で
XOR/XNOR全てを置き換え出来なかった場合に行
われる処理である。
理S2でXOR/XNORが他の素子に置き換えられた
ループ内の各素子(XOR/XNORは除く)に対して
ループ外である他方の入力端子からの入力値によって出
力が固定されるかどうかを判定する。
定されており、“専用ライブラリ”内で定義されている
“発振停止条件”と照らし合わせた時に普遍的に発振す
ることが無い場合は、このループの検証は終了して処理
S6へ移る。それ以外の場合、つまり、条件付きOK,
あるいは問題有りの場合は処理S5へ移る。
示”は処理S4の結果として、普遍的に発振しないとい
う確証が得られなかった場合に行われる。具体的には、
処理S4で検証されたループがループ外である他方の入
力端子からの入力値によって、発振停止される確証が得
られない場合と、外部端子の使い方によっては発振停止
される場合を含む。後者の場合は外部端子の使い方条件
についてもここで表示する。この処理が終わると処理S
6に移る。
回路内に検証すべき他のループがあるかを確認する。あ
る場合は再び処理S2へ移り、一連の検証が行われる。
無い場合はそのまま終了する。
われるフロー、すなわち、図1内における処理S2“X
OR/XNORの処理”の詳細な検証方法を示した図2
の処理について説明をする。なお、図1内の処理S1お
よびび処理S6については公知技術なので特にここでの
詳細な動作説明は省略する。
は、処理S1で発見されたループ内にXOR/XNOR
が含まれるかをチェックする。一つでも含まれる場合は
処理S2bへ、そうでない場合は即図1でいうところの
処理S3へ移る。
2aで発見されたXOR/XNORでまだ検証のされて
いないものを一つ選択して、その素子に対するループ外
である他方の入力端子からの入力値が固定されているか
どうかを検証する。
ては、さらに詳細な検証方法を示した図5があり、この
処理については後述する。図5に示す処理を実行の結
果、返り値を得たら処理S2cへ移る。
Rに置き換え可?”は、処理S2bで前段トレースを行
ったXOR/XNORをINVERTER/NON−I
NVERTERに置き換えることが可能かどうかを判定
する。
/XNORに入力される、ループ外である他方の入力端
子からの入力値が“1”ならINVERTERに置き換
えが可能、“0”ならNON−INVERTERに置き
換えが可能、と判断して処理S2dへ移る。
と判断して、図1でいう所の処理S4へ一気に移動す
る。これは複数のXOR/XNORがある場合に一つで
も置き換え不可のものがあれば図1でいう所の処理4へ
移動するものである。
2cの判定結果を受けて、処理S2cで判定をおこなっ
たXOR/XNORをINVERTER/NON−IN
VERTERに置き換える。
“他にもXOR/XNORはあるか?”では、処理S2
aで発見されたXOR/XNORが他にある場合は、そ
れを対象に再び処理S2bから処理を行う。無ければ図
1に示す処理S3に移動する。
の詳細な検証方法を記載した図3を参照しながら説明す
る。この処理は、処理S2でのXOR/XNOR検証の
結果、処理S1で検出したループ内にXOR/XNOR
が存在しない場合、もしくは、XOR/XNORが存在
するが全てINVERTER/NON−INVERTE
Rに置き換えが可能だった場合に行われ、内容としては
そのループが正帰還ループか、負帰還ループかの判定を
行う。
1で発見して、場合によっては処理2で一部変換された
ループ内の任意の素子を検証素子として選択する。最終
的にはSすべての素子を同じ条件で検証することになる
ので、この選択方法は任意で問題無い。選択したら処理
S3bへ移る。
検証している素子のループ内における入出力端子間にお
いて、入力および出力信号の極性が反転するかどうかを
検証する。
に選択された素子か、後述する処理S3dで新たに検証
素子として選択された素子が対象となる。検証の方法は
ライブラリ(図6)内で定義されている“論理反転経
路”の接続がループ内にあれば、反転経路を通っている
として、処理S3cに移動する。そうでない場合は処理
S3dに移動する。
の検証の結果、検証している素子のループ内における入
出力端子間において、入力および出力信号の極性が反転
する場合に行われる。
処理S3を終了した時にクリアされるが、それまでは保
持される。この処理終了後は処理S3dへ移る。
素子を他の素子に移す。具体的には後段の素子を新たに
検証する素子として選択する。この処理の次の処理S3
eへ移る。
理S3dの実行結果、検証する素子として選択された素
子が処理S3aで選択されたものと同じかどうかを判定
する。
の全ての素子に対して検証したことになるので、処理S
3fへ移る。同一でなければ、処理S3bに戻り同様の
検証を行う。
3eまでの結果として内部的に記憶された反転数が偶数
か奇数かで行う。偶数の場合は正帰還ループと判断し
て、次の移り先としては図1の中でいう所の処理S5と
なる。
4になる。どちらに移動するとしても、内部記憶として
保持されていた反転数はここで一度クリアされることと
なる。
の詳細な検証方法のフローチャートを示した図4を参照
しながら説明する。
帰還チェックの結果、負帰還ループと検証された場合、
および処理S2bのXOR/XNOR検証の結果、処理
S1で検出したループ内のXOR/XNOR全てを他の
素子に置き換えることが出来なかった場合に行われる。
によっては処理S2でXOR/XNORが他の素子に置
き換えられたループ内の全ての素子に対して、ループ外
である他方の入力端子からの入力信号により出力値が固
定されるかどうかを検証する。
で検出され、場合によっては処理S2でXOR/XNO
Rが他の素子に置き換えられたループ内の全ての素子を
検証するにあたって、任意の素子を最初に検証する素子
として選択する。
るため、この素子の選択は任意で問題無い。この処理の
後、処理S4bへ移る。
現在検証している素子がXOR/XNORかどうかを判
定する。現在検証している素子とは、処理S4aで最初
に選択されたか、後述する処理S4iで新たに検証素子
として選択された素子が対象となる。
の場合、ループ外である他方の入力端子からの入力値が
固定されるかどうかはここに至るまでの間にすでに処理
S2bで行われている。したがって、これ以上のこの素
子に関する検証は不要のため、一気に処理4iまで移
る。それ以外の場合は通常通りの検証を行うため、処理
S4cへ移る。
現在検証している素子が専用ライブラリ(図6)内で定
義されている“発振停止条件”を持つかどうかを確認す
る。
最初に選択されたか、後述する処理S4iで新たに検証
素子として選択された素子が対象となる。例えば、IN
VERTERの様に、入力端子が一個所しかなく、ルー
プ外から発振を停めることが出来ない素子等は、その
“発振停止条件”を持たない。
ある他方の入力端子からの入力値で出力値が固定される
ことは無いとして、これ以上この素子に関する検証は不
要のため、処理S4iへ移る。“発振停止条件”がある
場合は処理S4dへ移る。
証している素子のループ外からの入力値が固定されてい
るかどうかを検証する。現在検証している素子とは、処
理S4aで最初に選択されたか、後述する処理S4iで
新たに検証素子として選択された素子が対象となる。
子が専用ライブラリ(図6)内で定義されている“発振
停止条件”を持つ時に行われる。この部分の動作につい
ては、さらに詳細な検証方法を示す図5があり、この図
5については後述する。図5に示す処理の結果、返り値
を得たら処理S4eへ移る。
理S4dで得られた現在検証している素子のループ外で
ある他方の入力端子からの入力値と、専用ライブラリ
(図6)内で“発振停止条件”として定義されている条
件を満たすかどうかの比較を行う。
値が不定(X)の場合は、専用ライブラリ内(図6)の
“発振停止条件”として提示されている条件に関わらず
満たさないということになる。この後は処理S4fへ移
る。
4eで行った判定の結果により次の移り先が変化する。
具体的には処理S4eで得られた判定結果が、専用ライ
ブラリ内(図6)の“発振停止条件”として提示されて
いる条件を満たす、といった内容であれば、このループ
で発振することは無いとして処理S4gへ移る。
場合のみ”といった条件付きの場合も含まれる。満たさ
ない場合は他の素子を検証すべく処理S4iへ移る。
で、現在検証している素子はループ外である他方の入力
端子からの入力値により発振の停止が可能な場合に行わ
れる処理である。現在検証している素子とは、処理S4
aで最初に選択されたか、後述する処理S4iで新たに
検証素子として選択された素子が対象となる。
をトレースして、そのループ外からである他方の入力端
子の入力値が固定すると判定された際に、クランプで普
遍的に値が固定されるのか、外部端子の使用条件によっ
て固定されることがあるのかによって次の移り先が分岐
する。
在検証している処理S1で発見されたループはこの時点
で発振しないと判定できるため、このループの検証は終
了して、図1内でいう所の処理S6へ移る。外部端子の
使用条件によって発振が停止するかどうかが変化する場
合は処理S4hへ移る。
S4gで発振停止に条件がある場合にその条件を示すも
のである。この処理の後は処理S4iへ移る。
している素子からはループ外である他方の入力端子から
の入力値で発振停止出来るという確証が得られない場
合、および、発振停止出来るが条件付きであり、普遍的
でない場合に行われる。
ため、現在検証している素子の後段の素子を新たな現在
検証している素子として選択する。処理後は処理S4j
へ移動する。
理S4gの結果、検証する素子として選択された素子が
処理S4aで選択されたものと同じかどうかを判定す
る。
して検証したことになるので、処理S4全体の検証結果
として、“条件付きOK、あるいは問題有り”という形
で、図1でいう所の処理S5へ移る。同一でなければ、
処理S4bに戻り同様の検証を行う。
理S4dにおいてサブルーチンとして起動されている
“入力段トレース”の詳細なフローチャートを示した図
5を参照しながら説明する。
ている素子の一つ前段の素子を新たに現在検証する素子
として選択する。最初にここに訪れた時は、処理S2
b、処理S4dから起動された時に検証していた素子の
ループ外である他方の入力端子から1つ前段の素子を現
在検証する素子として選択する。複数ある場合は全て選
択する形となる。その(それらの)素子に関する判定は
次の処理SRbで行う。
Raで選択した素子(群)が前に訪れた所である場合、
その経路をトレースしつづけると無限ループに陥ってし
まうため、カットする必要がある。そうした部分がある
場合は処理SRcへ移る。なければ処理SRdに直接移
る。
する”は、処理SRbで現在検証している素子(群)が
これまでに訪れたことのある素子であった場合は、その
経路は検証対象外として、その経路からの値は確定しな
い(X)とする。その後、処理SRdへと進む。
?”は、現在検証している素子(群)がクランプである
場合、その種類、接続により、そこが“0”“1”に確
定すると判定する。
の値に確定できるとする(その場合は後からその確定す
る任意の値を条件として処理S5で表示することとな
る)。順序回路などの場合は確定しない(X)と判定す
る。それ以外の素子の場合は、判定は保留とする。
通りである。ここに至るまでに得られたこれらの値が確
定する個所/しない個所/判定保留の個所より、処理S
2b/処理S4dから起動された時に検証していた素子
に対するループ外からの入力値が“0”/“1”/
“X”いずれかに確定するかを判定する。
ない場合は再び処理SRaに戻り、そうでない場合は、
確定する値を返り値として処理S2cまたはS4eに戻
る。
図7を参照しながら上述した検証方法を適用する第1の
実施例を説明する。
(この処理は公知技術の応用)一例として、図7に示す
INVERTER付きAND7a→NON−INVER
TER7b→2入力OR7c→AND7aのループが一
つだけ発見されたと仮定する。
は、処理S1で見つけたループ内にXOR/XNORが
ある場合の処理を行う。
/XNORはあるか?”→無いため、“検証継続”で処
理S3へ移る。
は、処理S1で見つけたループが正帰還ループか負帰還
ループかを検証する。
の始点を処理S1で見つけたループ内で1つ決める。こ
こでは、仮にAND(図7の7a)とする。
a)のループ内における入出力経路(入力A→出力Y)
が論理反転かどうかを検証する。専用ライブラリ図6の
“論理反転経路”と照らし合わせ、論理反転経路を通過
しているかを判定する。
よりを参照すると、入力A→出力Yの経路は論理反転経
路に当るため、“通る”ことになり、処理S3cへ移
る。
転数を+1し、処理S3dへ移る。
終わったため、別の素子の検証に移る。
ER7bへ移動する。処理S3eへ移る。
たかどうかを確認する。処理S3aで選択した始点はA
ND7aで、NON−INVERTER7bでは無いた
め、“NO”へ移動する。フロチャート上では処理S3
b(2回目)にあたる。
R(図7の7b)におけるループ内の入出力経路(入力
A→出力Y)が論理反転かどうかを検証する。専用ライ
ブラリ図6の“論理反転経路”列と照らし合わせ、反転
経路を通過しているかを判定する。図7のNON−IN
VERTER7bの場合、ライブラリより反転経路は存
在しないため、“通らない”へ進み、次の処理S3dへ
移る。
ERTER7bの検証が終わったたため、別の素子の検
証に移る。ここでは、後段ブロックであるOR7cへ移
動し、次の処理S3eへ移る。
証したかどうかを確認する。処理S3aで選択した始点
はNAND7aであり、OR7cでは無いので“NO”
へ移動する。フロチャート上では処理S3b(3回目)
にあたる。
c)におけるループ内の入出力経路が論理反転かどうか
を検証する。専用ライブラリ図6の“論理反転経路”と
照らし合わせ、反転経路を通過しているかを判定する。
図7のOR7cの場合、ライブラリを参照して反転経路
が存在しないので、“通らない”へ進み、次の処理S3
dへ移る。
が終わったため、別の素子の検証に移る。ここでは、後
段ブロックであるAND7aへ移動し、次の処理S3e
へ移る。
証したかどうかを確認する。処理S3aで選択した始点
はAND7aであり、始点に戻っているため、一連の検
証を終了して“NO”へ進み、次の処理S3fに移動す
る。
されている総反転数は1で奇数(処理S3cで定義)で
ある。“反転数=奇数”へ進み、処理S3としては“負
帰還”を結果として返す。
還”であれば処理S4へ移動することとなる。なお、こ
の処理S1で発見したループの検証を終えた時点で内部
記憶の反転数は一度クリアされる。(0に戻る)処理S
4(図1):ループ外である他方の入力端子(B)から
の入力で発振を止められるかの検証を行う。
ループ内で、検証の始点とする素子を一つ任意に選択す
る。仮にAND(図7の7a)とする。
/XNORでないか確認(処理S2にて別方法でトレー
ス済みのため)。AND7aはXOR/XNORで無い
ため、“NO”へ進み、次の処理S4cへ移動する。
止条件を持つかどうかを確認する。AND7aの場合
は、図6のライブラリ参照して入力B=0で固定されて
いれば、発振を止めることが出来るため“YES”へ進
み、次の処理S4dへ移る。
プ外である他方の入力端子からの入力段をトレース(サ
ブルーチン)する。
段をトレースする。AND7aの入力Bは外部端子“I
N1”から来ている。
たAND7aの一つ前段の素子は前に訪れたかどうかを
確認。まだ訪れていないため“NO”へ進み、次の処理
SRcへ移る。
たAND7aの前段入力により値が“0”/“1”/
“X”(不定)いずれかに確定するかを判定する。AN
D7aの入力Bは外部端子からの接続で、確定させるこ
とは可能である。したがって“YES”へ進み、図4の
処理S4eへ移る。
帰り値と、発振停止条件と比較する。
SRcで得られた外部端子が“0”で固定される限り発
振を停めることが可能である。したがって、処理S4f
へ移る。
り、発振は止まるかどうかを判定。判定の結果、止まる
ので“YES”へ進み、次の処理S4gへ移る。
り、発振停止にあたっての条件があるかどうか判定す
る。処理S4eより、外部端子“IN1”が“0”で固
定という条件が存在するため“YES”へ進み、次の処
理S4hへ移る。
れた条件を明示する。例えば、この例の場合は“外部端
子「IN1」が0で固定なら問題無し”。
終わったため、別の素子の検証にうつる。後段ブロック
であるNON−INVERTER7bを新たに検証する
素子として選択し、処理S4jへ移る。
子であるNON−INVERTER7bで、処理S1で
発見された現在検証しているループ内の始点に戻ったか
を確認する。始点はAND7aで、現在検証している素
子はNON−INVERTER7bのため、“NO”へ
進み、次の処理S4b(2回目)へ移る。
ERTER7bがXOR/XNORでないか確認(処理
S2にて別方法でトレース済みのため)。NON−IN
VERTER7bはXOR/XNORでは無いため“N
O”へ進み、次の処理S4c−2へ移動する。
ERTER7bが発振停止条件を持つかどうかを確認す
る。図6のライブラリを参照すると発振停止条件を持た
ないことから“NO”へ進み、処理S4i−2へ移る。
ERTER7bの検証が終わったので、別の素子の検証
に移る。
する素子として選択し、処理S4j−2へ移る。
る素子であるOR7cで、処理S1で発見された、現在
検証しているループ内の始点に戻ったかを確認する。始
点はAND7aで、現在検証している素子はOR7cの
ため“NO”へ進み、処理S4b(3回目)へ移る。
R/XNORでないか確認(処理S2にて別方法でトレ
ース済みのため)。OR7cはXOR/XNORで無い
ため“NO”へ進み、処理S4c−3へ移る。
停止条件を持つかどうかを確認する。
で固定されていれば、発振を停めることが出来るため
“YES”へ進み、次の処理S4d−3へ移る。
ープ外である入力端子Bからの入力段をトレースする
(サブルーチン)。次の処理SRa−3へ移る。
プ外である他方の入力端子Bからの1つ前段の素子をト
レースする。OR7cの入力Bは“0”(LOW)でク
ランプされている。次の処理SRb−3へ移る。
つけたOR7cの一つ前段の素子は前に訪れたかどうか
を確認する。まだ訪れていないため“NO”へ進み、次
の処理SRc−3へ移る。
つけたOR7cの前段入力により、値が“0”/“1”
/“X”(不定)いずれかに確定するかを判定する。こ
の場合“0”でクランプされているため、“0”で固定
されるので“YES”へ進み、処理S4e−3へ移る。
で得られたOR7cへのループ外である他方の入力端子
Bからの入力値“0”と発振停止条件を比較する。処理
S4c−3で得た発振停止条件より、“0”でクランプ
されていても発振停止とはならない。次の処理S4f−
3へ移る。
の結果、発振が停まるか判定した結果、発振は止まらな
いので“NO”へ進み、処理S4i−3へ移る。
が終わったため、別の素子の検証にうつる。後段ブロッ
クであるAND7aを新たに検証する素子として選択し
て処理S4j−3へ移る。
る素子であるAND7aで、処理S1で発見された、現
在検証しているループ内の始点に戻ったかを確認する。
始点はAND7aで、現在検証している素子もAND7
aのため“YES”へ進み、処理S5へ移る。
ループ回路個所を明示して、問題点を表示する。この例
ではAND7a,NON−INVERTER7a,OR
7cを回路データ内でブロック毎に与えられたユニーク
な名前を用いて明示しつつ、実機上で発振する可能性が
あること、また、外部端子IN1=0固定で使う限りに
おいては問題無い旨明示する。
他のループは有るか?→無いので“無”へ進む。(処理
おわり)上述したように本発明は、問題のある回路構成
を検出したり、実機上で発振状態を回避するための条件
等を予め明示することで、より良い品質の製品を供給す
ることが出来る。また、通常開発そのものの数倍〜数十
倍かかる、不良発生時の解析、発見、リカバリのTAT
を完全にカットできる。
端子間で信号極性が反転する経路、および他の入力値に
関係無く出力値を確定させるために必要な入力条件の情
報をライブラリ化することで、回路構成に依存すること
無く、発振ループ構成になっているかどうかの判定を行
うことが出来る。
真理値情報11を基に容易に作成、更新することが出来
る。
図8を参照しながら前述した検証方法を適用する第2の
実施例を説明する。ここではループ部分にXORが含ま
れている場合の例である。
R/XNORが含まれている場合、ループ外である他方
の入力端子からの入力値によって、信号極性の反転、非
反転が変化するため、ループ内が正帰還ループか負帰還
ループかの判定が通常の手段では行えない点にある。
より論理が確定している場合に関して、INVERTE
R/NON−INVERTERに置き換えることで反
転、非反転の検証を可能にしている。また、置き換えら
れない場合でも他のブロックのループ外入力チェックも
行い、疑似エラーとなる可能性を探っている。
(前述したように公知技術の応用)。
様なINVERTER付きAND8a→NON−INV
ERTER8b→2入力XOR8c→INVERTER
付きAND8aによるループが一つだけ発見されたと仮
定する。
理。すなわち処理2aへ移る。
たループ内にXOR/XNORはあるか?→XOR8c
が存在するので“有り”へ進み、次の処理S2bへ移
る。
れたXOR8cのループ外である他方の入力端子Bから
の入力段をトレースする。
外からの入力がどこからきているか、一つ前段を見る。
XOR8cのループ外である他方の入力端子Bからの入
力はLOWでクランプ(8e)されており、論理レベル
の“0”で固定されている。次の処理SRbへ移る。
前に訪れたことがあるか?→訪れていないため“NO”
へ進み、次の処理SRcへ移る。
8cのループ外からの入力が“0”“1”“X”のいず
れかになるか確定するか?→XOR8cのループ外から
の入力はLOWクランプ(8e)なので、“0”に確定
するため“YES”へ進み、処理S2cへ移る。
たループ内における、XOR8cはINVERTERな
どに置き換えが可能か?→処理SRcの結果から、ルー
プ外がLOW固定のため、真理値情報11よりNON−
INVERTERに置き換えが可能となり、次の処理S
2dへ移る。
たループ内における、XOR8cをNON−INVER
TERに置き換える。以後、内部的に置き換えられた図
9に示す回路に対して解析を行い、次の処理S2eへ移
る。
見されたループ内において、XOR/XNORがあるか
?→無いため“検証継続”し、処理S3へ移る。
ループが正帰還ループか、負帰還ループかを判定し、処
理S3aへ移る。
あたって、どの素子から検証を始めるかを任意に決め
る。仮にAND(図9の9a)とする。
NON−INVERTER9cに移動するまでは上述し
た第1の実施例と同様であるからここでの説明は省略す
る。
る素子の検証が終わったため、次段の素子を新たに検証
する素子として選択する。後段ブロックであるNON−
INVERTER(元はXOR8c)9cへ移動し、次
の処理S3e−2へ移る。
る素子が処理S1で発見されたループ上を一回りして、
始点に戻ったかどうかを確認する?→始点は9aで、9
cでは無いため“NO”へ進み、処理S3b−2へ移
る。
る素子がループ内で接続されている経路は専用ライブラ
リ(図6)内で定義されている“論理反転経路”に含ま
れているかを判定する。図9におけるNON−INVE
RTER9cの場合、ライブラリを参照すると論理反転
経路は存在しないため、“通らない”へ進む。
同様であり、ここでの説明は省略する。
図10を参照しながら前述した検証方法を適用する第3
の実施例を説明する。この例はXOR/XNORが上述
した第2の実施例の様に縮退出来ないケースについて説
明する。
より簡略化されたものに置き換えることが可能である場
合に、それに置き換えることを意味し、この例では、X
OR/XNORを回路構成よりBUFFER/INVE
RTERに置き換えることである。
反転検証は行わず、他ブロックのループ外入力チェック
のみを行うものとなる。
(公知技術の応用)例として、図10に示す様なINV
ERTER付きAND10a→NON−INVERTE
R10b→2入力XOR10c→INVERTER付き
AND10aによるループが一つだけ発見されたと仮定
する。
ループ内におけるXOR/XNOR処理を行う。処理S
2aへ移る。
たループ内にXOR/XNORはあるか?→有り→処理
S2bへ移る。
れたXOR/XNORのループ外である他方の入力端子
Bの入力段トレースを行う。すなわち、処理SRaへ移
る。
れたXOR/XNORのループ外の前段ブロックからの
入力を見る。XOR10cのループ外からの入力値は順
序回路10eから来ており、その値が固定することは考
え難い。次の処理SRbへ移る。
に訪れたか?→訪れていないため、“NO”へ進み、次
の処理SRcへ移る。
力は“0”“1”“X”いずれかに確定するか?→Xに
確定する“YES”へ進む。処理S2cへ戻る。
れたXOR/XNORをINVERTERなどに置き換
え出来るか?→ループ外からの入力が何に固定されるか
不確定のため、置き換えも出来ない。
素子が10cに移動するまで前述した第1の実施例と同
様であるから、ここでの説明は省略する。
の入力端子からの入力値をトレースするが、XOR/X
NORに関しては既に検証済みのため、現在選択されて
いる検証対象の素子がXOR/XNORでないか確認す
る(処理S2にて別方法でトレース済みのため)。XO
Rのため“YES”へ進む。すなわち、入力段検証をス
キップし処理S4iへ移る。
子の一つ次段の素子を新たに検証素子として選択する。
こここではAND10aを選択する。処理S4jへ移
る。
た素子で、始点に戻ったか?→始点はAND10aで
“YES”へ進む。
同様であるからここでの説明は省略する。
図11を参照しながら前述した検証方法を適用する第4
の実施例を説明する。ここでは2重ループ構成の場合の
例について説明する。
負帰還ループが存在する場合は、入力段トレース時にト
レースが終了しなくなってしまう。小さいループは別検
証にても可能であること、また、小さいループ内で値が
確定している場合は、ループカット後引き続きトレース
を続けることで発見が可能であるから、そうしたケース
においては、その部分におけるループ外入力値は不確定
(X)として一旦ループをカットすることでトレースを
継続する。
(この処理は公知技術の応用)例として、図11に示す
様なNAND11a→INVERTER11b→NAN
D11c→AND11d→NAND11aによるループ
が、数あるループの中一つとして発見されたと仮定す
る。
NAND11cに移動するまで前述した第1の実施例と
同様であるからここでの説明は省略する。
の入力端子からの入力値をトレースするにあたって、現
在検証している素子がXOR/XNORでないか確認す
る。上述したように、現在検証している素子はNAND
11cであり、XORでは無いため“NO”へ進み、次
の処理S4cへ移る。
子であるNAND11cは発振停止条件を持つか?→図
6のライブラリを参照すると入力A=0で固定されてい
れば、発振を止めることが出来るため“YES”へ進
み、次の処理S4dへ移る。
のループ外である他方の入力端子Aからの入力値をトレ
ースする。
NAND11cだが、ループ外からの1つ前段の素子で
あるAND11dを新たに現在検証する素子として選択
し、次の処理SRbへ移る。
dは前に訪れたことがあるか?→訪れていないため“N
O”へ進み、次の処理SRcへ移る。
dの出力値が“0”/“1”/“X”(不確定)のいず
れに確定するかを判定するが、この情報のみでは確定さ
せることは不可能であるから“NO”へ進み、次の処理
SRa(2回目)へ移る。
子はAND11dだが、さらに1つ前段の素子であるN
AND11c(入力Aから)と、NON−INVERT
ER11e(入力Bから)から来ている。その二つを新
たに検証している素子として選択し、次の処理SRb−
2へ移る。
前に訪れたことがあるかを確認すると、AND11cは
前に訪れているので“YES”へ進み、次の処理SRd
−2へ移る。
→AND11d→NAND11cとループになっている
ため、この経路はカットする。NAND11cの入力A
は不確定(X)と判定し、次の処理SRc−2へ移る。
より、NAND11cの入力Aは不確定(X)と判定
し、処理S4eへ戻る。
証していた素子であるNAND11cに戻って、発振停
止条件と比較する。処理S4cで得た発振停止条件は満
たしていない。次の処理S4fへ移る。
力値で発振は停止するとはいいきれないため“NO”へ
進み、処理S4iへ移る。
子として、新たに次段であるAND11dを選択し、処
理S4jへ移る。
された素子は、初めて処理S4に入った時に、始点とし
て選択された素子か?→始点はAND11aなので“N
O”へ進み、処理S4b(2回目)へ移る。
択されたAND11dはXOR/XNORでないか確認
?→“NO”へ進み、次の処理S4c−2へ移る。
択されたAND11dは専用ライブラリ(図6)内で、
発振停止条件を持つか?→入力Bが“0”で固定されて
いれば発振停止するため“YES”へ進み、次の処理S
4d−2へ移る。
択されたAND11dのループ外からの入力をトレース
するため、サブルーチンの処理SRa−3へ移る。
ループ外からの1つ前段の素子を確認する。AND11
dの入力Bは、NON−INVERTER11eから来
ている。次の処理SRb−3へ移る。
で選択されたNON−INVERTER11eが前に訪
れた素子か確認する。→訪れていないため“NO”へ進
み、次の処理SRc−3へ移る。
で選択された素子からの出力値が、“0”/“1”/
“X”(不確定)のいずれに確定するかを判定する。N
ON−INVERTER11eの出力からきており、こ
の情報のみからでは確定しているかわからない。処理S
Ra−4へ戻る。
ERTER11eのさらに1つ前段をトレースする。N
ON−INVERTER11eの入力AはLOW_CL
AMP(LOWでクランプ)11gから来ている。次の
処理SRb−4へ移る。
で選択された素子は前に訪れたことがあるか?→訪れて
いないため“NO”へ進み、次の処理SRc−4へ移
る。
で選択された素子の出力値が“0”/“1”/“X”
(不確定)いずれかに確定するかを判定する。処理SR
a−4で発見されたLOW_CLAMP11gはNON
−INVERTER11eを経由して、AND11dの
入力端子Bに接続されてる。結果、AND11dからは
“0”しか出ない。
同様であるからここでの説明は省略する。
おける発振構成箇所の検出方法は、内部回路における正
帰還および負帰還によるループ回路のうち禁止されてい
る負帰還ループを論理検証段階で検出するループ検出手
段として、内部回路を構成する素子それぞれの少なくと
も一方の入力端子と出力端子間で信号極性が反転する経
路と、他方の入力端子の入力値に関係無く出力値を確定
させるために必要な入力条件の情報とを、あらかじめ定
める真理値情報に基き作成および更新して論理検証装置
の記憶手段にライブラリ化するとともに、ライブラリを
引用しながら、内部回路の構成が発振ループ構成になっ
ているかどうかの判定を行ない、その判定結果を外部の
表示手段に表示するので、問題のある回路構成を検出し
たり、実機上で発振状態を回避する為の条件等を予め明
示することができ、より良い品質の製品を供給すること
が出来る。
かかる、不良発生時の解析、発見、リカバリのTATを
完全にカットできる。
間で反転する経路、および、他の入力値に関係無く出力
を確定させるために必要な入力条件の情報をライブラリ
化することで、回路構成に依存すること無く、発振ルー
プ構成になっているかどうかの判定を容易に行うことが
出来る。
真理値情報を基に容易に作成、更新することが出来る。
振構成箇所の検出方法を示す全体のフローチャートであ
る。
トである。
路例を示した図である。
路例を示した図である。
TER9cに置き換えた図である。
回路例を示した図である。
回路例を示した図である。
る。
ある。
である。
ND 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
Claims (14)
- 【請求項1】 半導体装置の内部回路における正帰還お
よび負帰還によるループ回路のうち禁止されている負帰
還ループを論理検証段階で検出するループ検出手段とし
て、前記内部回路を構成する素子それぞれの少なくとも
一方の入力端子と出力端子間で信号極性が反転する経路
と、他方の入力端子の入力値に関係無く出力値を確定さ
せるために必要な入力条件の情報とを、あらかじめ定め
る真理値情報に基き作成および更新して論理検証装置の
記憶手段にライブラリ化するとともに、前記ライブラリ
を引用しながら、前記内部回路の構成が発振ループ構成
になっているかどうかの判定を行ない、その判定結果を
外部の表示手段に表示することを特徴とするループ回路
における発振構成箇所の検出方法。 - 【請求項2】 排他的論理和または排他的否定論理和そ
れぞれの一方の入力端子を経路とする前記負帰還ループ
であって、前記負帰還ループ外である他方の入力端子の
論理レベルがクランプにより確定している場合に、前記
真理値情報に基づき前記排他的論理和または排他的否定
論理和をインバータまたはノンインバータに置き換えて
検証を行う請求項1記載のループ回路における発振構成
箇所の検出方法。 - 【請求項3】 排他的論理和または排他的否定論理和そ
れぞれの一方の入力端子を経路とする前記負帰還ループ
であって、前記負帰還ループ外である他方の入力端子の
論理レベルが特定の素子または特定の機能ブロックによ
り不確定の場合は、前記負帰還ループにおける信号極性
の反転または非反転検証は行わず、前記負帰還ループ外
である他方の入力端子の経路における他ブロックの検証
のみを行う請求項1記載のループ回路における発振構成
箇所の検出方法。 - 【請求項4】 検出した前記負帰還ループの中に更に小
負帰還ループが存在する場合は、前記小負帰還ループを
予め検証するとともに、前記小負帰還ループ内で前記ラ
イブラリの発振停止条件を満たす値が確定している場合
はループ遮断後引き続きトレースを継続し、前記小負帰
還ループ外である他方の入力端子の入力値は不確定とし
て前記負帰還ループを遮断してトレースを継続する請求
項1記載のループ回路における発振構成箇所の検出方
法。 - 【請求項5】 前記ライブラリに記憶される論理反転経
路は、前記負帰還ループ内での接続経路において入出力
端子間で論理が反転する経路がどこかを定義され、前記
発振停止条件は、前記負帰還ループ外である他方の入力
端子からの信号入力値がどの値で固定されていれば発振
しないかの情報が定義されている請求項1記載のループ
回路における発振構成箇所の検出方法。 - 【請求項6】 前記ライブラリを参照しながら、検証対
象の全ての素子を始点として出力段をトレースしてい
き、既に訪れた素子に戻った場合その素子を前記ループ
として検出するループ検出処理と、前記ループに排他的
論理和または排他的否定論理和を検出したら、前記ルー
プ外である他方の入力端子からの入力信号レベルが固定
されているかどうかを検証し、前記真理値情報に基づい
てインバータまたはノンインバータに置き換えられるか
否かを判断し可能なら置き換える排他的論理和または排
他的否定論理和の処置処理と、前記ループ内の各素子に
対して前記ライブラリ内の論理反転経路との照合を行
い、前記ループ全体で反転経路がいくつ存在するかを計
算しその結果が奇数の場合は負帰還ループ、零か偶数の
場合は正帰還ループと判定する正・負帰還チェック処理
と、前記負帰還ループの場合および前記インバータまた
はノンインバータに置き換えられない場合は、前記負帰
還ループ内の各素子がループ外の他方の入力端子からの
入力信号によって出力論理が固定されるか否かをその素
子の前段の素子に遡って順次検証するループ外入力チェ
ック処理と、前記ループ外入力チェック処理で問題無し
と判定する確証が得られなかった場合に、どの素子がル
ープ構成になっているかの情報を明示して、前記ループ
に関する検証を終了する問題点表示処理と、前記ループ
検出処理で検出した前記ループ全てを検出したかどうか
を確認するループ検出確認処理とを備える請求項1記載
のループ回路における発振構成箇所の検出方法。 - 【請求項7】 前記ループ外入力チェック処理において
出力論理が固定されないと判断しそれ以上の前記前段の
素子に遡るトレースを行わない特定の素子または特定の
機能ブロックは、順序回路、入出力回路の折返し、アダ
ー、パリティジェネレータの全端子接続と、ラッチとマ
ルチプレクサとデコーダとのイネーブル部分の端子接続
とする請求項6記載のループ回路における発振構成箇所
の検出方法。 - 【請求項8】 前記ループ外入力チェック処理において
前記前段の素子に遡るトレースを実行するか否かを任意
に選択する請求項6記載のループ回路における発振構成
箇所の検出方法。 - 【請求項9】 前記ループ外入力チェック処理において
前記前段トレースの段数を任意に指定し、その段数以内
で値の確定または不確定が決まらない場合は不確定扱い
にする請求項6記載のループ回路における発振構成箇所
の検出方法。 - 【請求項10】 前記排他的論理和および排他的否定論
理和の処置処理は、前記ループ検出処理で発見された論
理ループ内に排他的論理和または排他的否定論理和が含
まれるか否かを判断する第1の排他的論理和または排他
的否定論理和の有無判断処理と、前段の処理で検出され
た前記排他的論理和または前記排他的否定論理和でまだ
検証のされていないものを一つ選択して、その素子に対
する前記ループ外である他方の入力端子からの入力値が
固定されているかどうかを検証する入力段トレース処理
と、前段の処理で前段トレースを行った前記排他的論理
和または前記排他的否定論理和をインバータまたはノン
インバータに置き換えることが可能かどうかを判定し可
能であれば次へ進み不可であれば前記ループ外入力チェ
ック処理へ移る置き換え判断処理と、前記置き換え判断
処理の判定結果を受けて前記入力段処理で判定をおこな
った前記排他的論理和または前記排他的否定論理和をイ
ンバータまたはノンインバータに置き換える置き換え実
行処理と、前記排他的論理和または排他的否定論理和の
有無処理で発見された前記排他的論理和または前記排他
的否定論理和が他にある場合は、それを対象に再び前記
入力段トレース処理から繰り返し、検出されなくなると
検証継続の判断を下し前記正・負帰還処理へ移る第2の
排他的論理和または排他的否定論理和の有無判断処理と
を備える請求項1記載のループ回路における発振構成箇
所の検出方法。 - 【請求項11】 前記入力段トレース処理で検証した前
記排他的論理和または前記排他的否定論理和に入力され
る前記ループ外である他方の入力端子からの入力値が論
理レベルの“1”ならインバータに、“0”ならノンイ
ンバータに置き換えが可能と判断して次の処理へ進み、
それ以外の場合は置き換え不可と判断して前記ループ外
入力チェック処理へ移る請求項10記載のループ回路に
おける発振構成箇所の検出方法。 - 【請求項12】 前記正・負帰還処理は、前記ループ検
証処理で検出された素子、もしくは前記排他的論路和ま
たは排他的否定論理和の処置処理で一部変換されたルー
プ内の任意の素子を、検証対象素子として選択する始点
決定処理と、現在検証している素子の前記ループ内にお
ける入出力端子間で信号極性が反転するかどうかを、前
記ライブラリで定義されている論理反転経路の接続が前
記ループ内にあるか否かで判定する反転経路通過判定処
理と、前記反転経路通過判定処理の検証の結果、検証し
ている素子の前記ループ内における入出力端子間の信号
極性が反転する場合に反転数を1増加し、前記正・負帰
還処理が全て終了した時にクリアされる反転数+1処理
と、検証対象素子として後段の素子を新たに選択する次
段素子選択処理と、前記次段素子選択処理で新たに選択
された素子が前記始点決定処理で選択されたものと同じ
かどうかを判定し、同一の場合は次の処理へ進み同一で
なければ前記反転経路通過判定処理に戻る始点戻り判定
処理と、前記反転経路通過判定処理から前記始点戻り判
定処理までの結果として前記反転数+1処理で記憶され
た反転数が偶数の場合は正帰還と判断して前記問題点表
示処理へ移り、奇数の場合は前記ループ外入力チェック
処理へ移る反転結果判定処理とを備える請求項1記載の
ループ回路における発振構成箇所の検出方法。 - 【請求項13】 前記ループ外入力チェック処理は、前
記排他的論理和または前記排他的否定論理和が他の素子
に置き換えられた前記ループ内の任意の素子を最初に検
証する素子として選択する始点決定処理と、現在検証し
ている素子が前記排他的論理和または前記排他的否定論
理和かどうかを判定しそれぞれ後続する定められた処理
へ移る排他的論理和または排他的否定論理和の判定処理
と、現在検証している素子が前記ライブラリ内の前記発
振停止条件をもつかどうかを確認し、前記発振停止条件
が無い場合は後続する次段素子選択処理へ移り、前記発
振停止条件がある場合は次段の入力段トレース処理へ進
む発振停止条件の有無確認処理と、前記発振停止条件を
持つ時に、現在検証している素子の前記ループ外である
他方の入力端子からの入力値が固定されているかどうか
を検証する入力段トレース処理と、前記入力段トレース
処理で得られた現在検証中の素子に対する前記ループ外
である他方の入力端子からの入力値と、前記発振停止条
件との比較を行う発振停止条件比較処理と、前記発振停
止条件比較処理で得られた判定結果が前記発振停止条件
を満たす内容であれば次段の処理へ進み、満たさない場
合は後続する処理である次段の素子選択処理へ移る発振
ループの有無確認処理と、前記発振ループの有無確認処
理で発振条件を満たすと判定された前記ループ外の入力
端子からの入力値がクランプで固定される場合は現在検
証しているループの検証は終了し、外部端子の使用条件
によって発振が停止する場合は次段の処理へ進む条件有
無確認処理と、前記条件有無確認処理で発振停止に条件
がある場合にその条件を外部表示で示す条件明示処理
と、現在検証している素子からは前記ループ外である他
方の入力端子の入力値で発振停止可能な確証が得られな
い場合および条件付き停止の場合に、前記ループ内の現
在検証している素子の後段の素子を新たな検証対象素子
として選択する次段素子選択処理と、前記検証対象素子
として選択された素子が前記始点決定処理で選択された
ものと同じかどうかを判定し、同一の場合は条件付き通
過または問題有りとして前記外部表示処理へ移動し、同
一でなければ前記排他的論理和または排他的否定論理和
の判定処理に戻る検証終了確認処理とを備える請求項1
記載のループ回路における発振構成箇所の検出方法。 - 【請求項14】 前記入力段トレース処理は、直前の処
理で検証していた素子の前記ループ外の入力端子の方に
接続されている、一つ前段の素子を新たに検証対象素子
として選択する前段の素子選択手段と、前記前段の素子
選択手段で選択した前記検証対象素子が前に訪れた素子
か否かを判定し、既に訪れている場合と初めて訪れる素
子の場合とにそれぞれ分岐する検証素子判断処理と、前
記検証素子判断処理で既に訪れている素子と判断された
場合その経路は検証対象外としてその経路からの値は確
定しない値とする不確定値設定処理と、現在検証してい
る素子に対する前記ループ外である他方の入力端子から
の入力値が“0”、“1”または“不確定”のいずれに
確定するかを判定し、確定しない場合は前記前段の素子
選択処理に戻る“0”“1”“不確定”判定処理とを備
える請求項10または13記載のループ回路における発
振構成箇所の検出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000367338A JP3703390B2 (ja) | 2000-12-01 | 2000-12-01 | 論理検証装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000367338A JP3703390B2 (ja) | 2000-12-01 | 2000-12-01 | 論理検証装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002169852A true JP2002169852A (ja) | 2002-06-14 |
JP3703390B2 JP3703390B2 (ja) | 2005-10-05 |
Family
ID=18837778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000367338A Expired - Fee Related JP3703390B2 (ja) | 2000-12-01 | 2000-12-01 | 論理検証装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3703390B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012098896A (ja) * | 2010-11-01 | 2012-05-24 | Fujitsu Ltd | 接続検証方法、その記憶媒体、及び、接続検証装置 |
JP2019531535A (ja) * | 2016-08-05 | 2019-10-31 | ザイリンクス インコーポレイテッドXilinx Incorporated | プログラマブル集積回路上のバイナリニューラルネットワーク |
CN117250480A (zh) * | 2023-11-08 | 2023-12-19 | 英诺达(成都)电子科技有限公司 | 组合逻辑电路的环路检测方法、装置、设备及存储介质 |
-
2000
- 2000-12-01 JP JP2000367338A patent/JP3703390B2/ja not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012098896A (ja) * | 2010-11-01 | 2012-05-24 | Fujitsu Ltd | 接続検証方法、その記憶媒体、及び、接続検証装置 |
US8782579B2 (en) | 2010-11-01 | 2014-07-15 | Fujitsu Limited | Connection verification method, recording medium thereof, and connection verification apparatus |
JP2019531535A (ja) * | 2016-08-05 | 2019-10-31 | ザイリンクス インコーポレイテッドXilinx Incorporated | プログラマブル集積回路上のバイナリニューラルネットワーク |
JP7012073B2 (ja) | 2016-08-05 | 2022-01-27 | ザイリンクス インコーポレイテッド | プログラマブル集積回路上のバイナリニューラルネットワーク |
CN117250480A (zh) * | 2023-11-08 | 2023-12-19 | 英诺达(成都)电子科技有限公司 | 组合逻辑电路的环路检测方法、装置、设备及存储介质 |
CN117250480B (zh) * | 2023-11-08 | 2024-02-23 | 英诺达(成都)电子科技有限公司 | 组合逻辑电路的环路检测方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP3703390B2 (ja) | 2005-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5515383A (en) | Built-in self-test system and method for self test of an integrated circuit | |
US5390193A (en) | Test pattern generation | |
JPH04148882A (ja) | 論理集積回路の故障位置指摘方法 | |
JPH11153646A (ja) | 故障伝搬経路抽出システム及びその方法並びにその制御プログラムを記録した記録媒体 | |
JP2607029B2 (ja) | 信号遷移伝搬検出方法 | |
JP3246865B2 (ja) | スタティックタイミング解析装置及びその方法 | |
JP2002169852A (ja) | ループ回路における発振構成箇所の検出方法 | |
JPH11250119A (ja) | 論理回路の遅延経路探索方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体 | |
Brand et al. | Identification of redundant delay faults | |
US5528604A (en) | Test pattern generation for an electronic circuit using a transformed circuit description | |
JP3090929B2 (ja) | ディレイ故障検査方式 | |
JPH0587885A (ja) | 検査系列生成方法 | |
Ferrandi et al. | Symbolic optimization of interacting controllers based on redundancy identification and removal | |
JPH08184647A (ja) | 半導体集積回路の設計方法 | |
Bonifácio et al. | Complete test suites for input/output systems | |
US6560622B2 (en) | Bit search device and bit search method | |
JPH11328237A (ja) | 順序回路の形式的検証装置および方法 | |
JP2003028935A (ja) | 故障伝搬経路推定システム | |
JPH0915305A (ja) | 論理回路のテストパターン生成システム | |
JP2005221457A (ja) | 論理回路の故障解析方法 | |
JP2000250950A (ja) | 論理回路の遅延計算方法、論理回路の遅延計算装置および論理回路の遅延計算プログラムを記録した媒体 | |
JPH063420A (ja) | 組み合わせ論理回路のテストパタン生成方法 | |
Hierons | Minimizing the cost of fault location when testing from a finite state machine | |
JP2778556B2 (ja) | テストパタン選択システム | |
JPH02224070A (ja) | 論理回路の遅延時間解析装置 |
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 |