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
Application number
JP2000367338A
Other languages
English (en)
Other versions
JP3703390B2 (ja
Inventor
Akihiko Hama
明彦 浜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Micro Systems Co Ltd
Original Assignee
Renesas Micro Systems Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Micro Systems Co Ltd filed Critical Renesas Micro Systems Co Ltd
Priority to JP2000367338A priority Critical patent/JP3703390B2/ja
Publication of JP2002169852A publication Critical patent/JP2002169852A/ja
Application granted granted Critical
Publication of JP3703390B2 publication Critical patent/JP3703390B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Tests Of Electronic Circuits (AREA)

Abstract

(57)【要約】 【課題】発振ループ回路の検出、検証を行う検証方法を
提供する。 【解決手段】内部回路における正帰還および負帰還によ
るループ回路のうち禁止されている負帰還ループを論理
検証段階で検出するループ検出手段として、内部回路を
構成する素子それぞれの少なくとも一方の入力端子と出
力端子間で信号極性が反転する経路と、他方の入力端子
の入力値に関係無く出力値を確定させるために必要な入
力条件の情報とを、あらかじめ定める真理値情報11に
基き作成および更新して論理検証装置の記憶媒体12に
ライブラリ化するとともに、ライブラリを引用しなが
ら、内部回路の構成が発振ループ構成になっているかど
うかの判定を行ない、その判定結果を外部の表示手段に
表示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はループ回路における
発振構成箇所の検出方法に係わり、特に半導体装置の中
でも特定用途向けICであるASIC(Applica
tion 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を参照すると、この回路は、NA
ND12a→AND12b→NAND12aのループを
一つ有し、入力端子BはHIGH_CLAMP(“1”
でクランプ)12cにより論理レベルの“1”にクラン
プされているので、論理シミュレーション上ではNAN
D12aの出力は最初から不確定であり、これは時刻が
いくら進んでも不確定の反転は不確定である。
【0010】したがって、シミュレーション結果の波形
図を示した図13の様に、時刻t=0における入力Aが
Xのため、それ以降の出力Y→入力A間はXが周回し続
けることになり、最初(時刻t=0)から最後まで不確
定Xが流れるような形になっていまい、発振しているの
かどうかがわからない。
【0011】しかし、実機上でのNAND12aの入出
力波形を示した図14を参照すると、論理レベルのHI
GH(=1)/LOW(=0)の値を繰り返しつつ次第
に中間電圧付近に安定していくので、貫通電流が流れる
原因となってしまう。
【0012】また、論理シミュレータを用いる方法で
は、検出の可否はVECTORの質に大きく左右されて
しまうが、回路規模が大きい程、内部ノード全てをトグ
ルさせるVECTORの作成は困難であり、実際には対
応が難しくなってきているのが現状である。
【0013】本発明の目的は、上述した従来の欠点に鑑
みなされたものであり、論理ゲート一つ一つに対する特
定ルールに基づいた情報を備えたライブラリを用意する
ことで、回路そのものに対して発振ループ回路の検出、
検証を行う検証方法を提供することにある。
【0014】
【課題を解決するための手段】本発明のループ回路にお
ける発振構成箇所の検出方法は、半導体装置の内部回路
における正帰還および負帰還によるループ回路のうち禁
止されている負帰還ループを論理検証段階で検出するル
ープ検出手段として、前記内部回路を構成する素子それ
ぞれの少なくとも一方の入力端子と出力端子間で信号極
性が反転する経路と、他方の入力端子の入力値に関係無
く出力値を確定させるために必要な入力条件の情報と
を、あらかじめ定める真理値情報に基き作成および更新
して論理検証装置の記憶手段にライブラリ化するととも
に、前記ライブラリを引用しながら、前記内部回路の構
成が発振ループ構成になっているかどうかの判定を行な
い、その判定結果を外部の表示手段に表示することを特
徴とする。
【0015】また、排他的論理和または排他的否定論理
和それぞれの一方の入力端子を経路とする前記負帰還ル
ープであって、前記負帰還ループ外である他方の入力端
子の論理レベルがクランプにより確定している場合に、
前記真理値情報に基づき前記排他的論理和または排他的
否定論理和をインバータまたはノンインバータに置き換
えて検証を行うことができる。
【0016】さらに、排他的論理和または排他的否定論
理和それぞれの一方の入力端子を経路とする前記負帰還
ループであって、前記負帰還ループ外である他方の入力
端子の論理レベルが特定の素子または特定の機能ブロッ
クにより不確定の場合は、前記負帰還ループにおける信
号極性の反転または非反転検証は行わず、前記負帰還ル
ープ外である他方の入力端子の経路における他ブロック
の検証のみを行うこともえきる。
【0017】さらにまた、検出した前記負帰還ループの
中に更に小負帰還ループが存在する場合は、前記小負帰
還ループを予め検証するとともに、前記小負帰還ループ
内で前記ライブラリの発振停止条件を満たす値が確定し
ている場合はループ遮断後引き続きトレースを継続し、
前記小負帰還ループ外である他方の入力端子の入力値は
不確定として前記負帰還ループを遮断してトレースを継
続することもできる。
【0018】また、前記ライブラリに記憶される論理反
転経路は、前記負帰還ループ内での接続経路において入
出力端子間で論理が反転する経路がどこかを定義され、
前記発振停止条件は、前記負帰還ループ外である他方の
入力端子からの信号入力値がどの値で固定されていれば
発振しないかの情報が定義されている。
【0019】さらに、前記ライブラリを参照しながら、
検証対象の全ての素子を始点として出力段をトレースし
ていき、既に訪れた素子に戻った場合その素子を前記ル
ープとして検出するループ検出処理と、前記ループに排
他的論理和または排他的否定論理和を検出したら、前記
ループ外である他方の入力端子からの入力信号レベルが
固定されているかどうかを検証し、前記真理値情報に基
づいてインバータまたはノンインバータに置き換えられ
るか否かを判断し可能なら置き換える排他的論理和また
は排他的否定論理和の処置処理と、前記ループ内の各素
子に対して前記ライブラリ内の論理反転経路との照合を
行い、前記ループ全体で反転経路がいくつ存在するかを
計算しその結果が奇数の場合は負帰還ループ、零か偶数
の場合は正帰還ループと判定する正・負帰還チェック処
理と、前記負帰還ループの場合および前記インバータま
たはノンインバータに置き換えられない場合は、前記負
帰還ループ内の各素子がループ外の他方の入力端子から
の入力信号によって出力論理が固定されるか否かをその
素子の前段の素子に遡って順次検証するループ外入力チ
ェック処理と、前記ループ外入力チェック処理で問題無
しと判定する確証が得られなかった場合に、どの素子が
ループ構成になっているかの情報を明示して、前記ルー
プに関する検証を終了する問題点表示処理と、前記ルー
プ検出処理で検出した前記ループ全てを検出したかどう
かを確認するループ検出確認処理とを備える。
【0020】さらにまた、前記ループ外入力チェック処
理において出力論理が固定されないと判断しそれ以上の
前記前段の素子に遡るトレースを行わない特定の素子ま
たは特定の機能ブロックは、順序回路、入出力回路の折
返し、アダー、パリティジェネレータの全端子接続と、
ラッチとマルチプレクサとデコーダとのイネーブル部分
の端子接続とする。
【0021】また、前記ループ外入力チェック処理にお
いて前記前段の素子に遡るトレースを実行するか否かを
任意に選択する。
【0022】さらに、前記ループ外入力チェック処理に
おいて前記前段トレースの段数を任意に指定し、その段
数以内で値の確定または不確定が決まらない場合は不確
定扱いにする。
【0023】さらにまた、前記排他的論理和および排他
的否定論理和の処置処理は、前記ループ検出処理で発見
された論理ループ内に排他的論理和または排他的否定論
理和が含まれるか否かを判断する第1の排他的論理和ま
たは排他的否定論理和の有無判断処理と、前段の処理で
検出された前記排他的論理和または前記排他的否定論理
和でまだ検証のされていないものを一つ選択して、その
素子に対する前記ループ外である他方の入力端子からの
入力値が固定されているかどうかを検証する入力段トレ
ース処理と、前段の処理で前段トレースを行った前記排
他的論理和または前記排他的否定論理和をインバータま
たはノンインバータに置き換えることが可能かどうかを
判定し可能であれば次へ進み不可であれば前記ループ外
入力チェック処理へ移る置き換え判断処理と、前記置き
換え判断処理の判定結果を受けて前記入力段処理で判定
をおこなった前記排他的論理和または前記排他的否定論
理和をインバータまたはノンインバータに置き換える置
き換え実行処理と、前記排他的論理和または排他的否定
論理和の有無処理で発見された前記排他的論理和または
前記排他的否定論理和が他にある場合は、それを対象に
再び前記入力段トレース処理から繰り返し、検出されな
くなると検証継続の判断を下し前記正・負帰還処理へ移
る第2の排他的論理和または排他的否定論理和の有無判
断処理とを備える。
【0024】また、前記入力段トレース処理で検証した
前記排他的論理和または前記排他的否定論理和に入力さ
れる前記ループ外である他方の入力端子からの入力値が
論理レベルの“1”ならインバータに、“0”ならノン
インバータに置き換えが可能と判断して次の処理へ進
み、それ以外の場合は置き換え不可と判断して前記ルー
プ外入力チェック処理へ移る。
【0025】さらに、前記正・負帰還処理は、前記ルー
プ検証処理で検出された素子、もしくは前記排他的論路
和または排他的否定論理和の処置処理で一部変換された
ループ内の任意の素子を、検証対象素子として選択する
始点決定処理と、現在検証している素子の前記ループ内
における入出力端子間で信号極性が反転するかどうか
を、前記ライブラリで定義されている論理反転経路の接
続が前記ループ内にあるか否かで判定する反転経路通過
判定処理と、前記反転経路通過判定処理の検証の結果、
検証している素子の前記ループ内における入出力端子間
の信号極性が反転する場合に反転数を1増加し、前記正
・負帰還処理が全て終了した時にクリアされる反転数+
1処理と、検証対象素子として後段の素子を新たに選択
する次段素子選択処理と、前記次段素子選択処理で新た
に選択された素子が前記始点決定処理で選択されたもの
と同じかどうかを判定し、同一の場合は次の処理へ進み
同一でなければ前記反転経路通過判定処理に戻る始点戻
り判定処理と、前記反転経路通過判定処理から前記始点
戻り判定処理までの結果として前記反転数+1処理で記
憶された反転数が偶数の場合は正帰還と判断して前記問
題点表示処理へ移り、奇数の場合は前記ループ外入力チ
ェック処理へ移る反転結果判定処理とを備える。
【0026】さらにまた、前記ループ外入力チェック処
理は、前記排他的論理和または前記排他的否定論理和が
他の素子に置き換えられた前記ループ内の任意の素子を
最初に検証する素子として選択する始点決定処理と、現
在検証している素子が前記排他的論理和または前記排他
的否定論理和かどうかを判定しそれぞれ後続する定めら
れた処理へ移る排他的論理和または排他的否定論理和の
判定処理と、現在検証している素子が前記ライブラリ内
の前記発振停止条件をもつかどうかを確認し、前記発振
停止条件が無い場合は後続する次段素子選択処理へ移
り、前記発振停止条件がある場合は次段の入力段トレー
ス処理へ進む発振停止条件の有無確認処理と、前記発振
停止条件を持つ時に、現在検証している素子の前記ルー
プ外である他方の入力端子からの入力値が固定されてい
るかどうかを検証する入力段トレース処理と、前記入力
段トレース処理で得られた現在検証中の素子に対する前
記ループ外である他方の入力端子からの入力値と、前記
発振停止条件との比較を行う発振停止条件比較処理と、
前記発振停止条件比較処理で得られた判定結果が前記発
振停止条件を満たす内容であれば次段の処理へ進み、満
たさない場合は後続する処理である次段の素子選択処理
へ移る発振ループの有無確認処理と、前記発振ループの
有無確認処理で発振条件を満たすと判定された前記ルー
プ外の入力端子からの入力値がクランプで固定される場
合は現在検証しているループの検証は終了し、外部端子
の使用条件によって発振が停止する場合は次段の処理へ
進む条件有無確認処理と、前記条件有無確認処理で発振
停止に条件がある場合にその条件を外部表示で示す条件
明示処理と、現在検証している素子からは前記ループ外
である他方の入力端子の入力値で発振停止可能な確証が
得られない場合および条件付き停止の場合に、前記ルー
プ内の現在検証している素子の後段の素子を新たな検証
対象素子として選択する次段素子選択処理と、前記検証
対象素子として選択された素子が前記始点決定処理で選
択されたものと同じかどうかを判定し、同一の場合は条
件付き通過または問題有りとして前記外部表示処理へ移
動し、同一でなければ前記排他的論理和または排他的否
定論理和の判定処理に戻る検証終了確認処理とを備え
る。
【0027】また、前記入力段トレース処理は、直前の
処理で検証していた素子の前記ループ外の入力端子の方
に接続されている、一つ前段の素子を新たに検証対象素
子として選択する前段の素子選択手段と、前記前段の素
子選択手段で選択した前記検証対象素子が前に訪れた素
子か否かを判定し、既に訪れている場合と初めて訪れる
素子の場合とにそれぞれ分岐する検証素子判断処理と、
前記検証素子判断処理で既に訪れている素子と判断され
た場合その経路は検証対象外としてその経路からの値は
確定しない値とする不確定値設定処理と、現在検証して
いる素子に対する前記ループ外である他方の入力端子か
らの入力値が“0”、“1”または“不確定”のいずれ
に確定するかを判定し、確定しない場合は前記前段の素
子選択処理に戻る“0”“1”“不確定”判定処理とを
備える。
【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とDECO
DERのデータ部分。
【0035】処理3および処理4の実行に必要なライブ
ラリ(図6)内では予め個々の素子に関して、論理反
転経路発振停止条件、の2つの情報が定義されてい
る。論理反転経路は、文字どおり、ループ内での接続経
路において、“入出力端子間で論理レベルが極性反転す
る経路がどこか”を定義したものである。
【0036】また、発振停止条件は、“ループ外である
他方の入力端子からの入力値がどの値で固定されていれ
ば発振しないか”の情報が定義されている。
【0037】処理S2においては、XOR/XNORが
ある場合の処理を行う。XOR/XNORはループ外で
ある他方の入力端子からの入力値によって、その入出力
端子間で信号レベルが極性反転するかしないかが変わる
ため、例外的にループ外である他方の入力端子からの入
力を最初にトレースして、ループ外からの入力値が固定
されているかどうかを検証する。
【0038】そして、ループ外からの入力値の固定が可
能なら、これらXOR/XNORを真理値情報11に基
づいてINVERTERもしくはNON−INVERT
ERに置き換える。置き換えられない場合、そのループ
は正帰還・負帰還の判定(処理3)が出来ないため、他
のブロックのループ外入力チェック(処理4)からのみ
判定する。
【0039】処理S3においては、ループ内の各素子に
対してライブラリ内に貯えられた論理反転経路との照ら
し合わせを行い、ループ全体で反転経路がいくつ存在す
るかを計算する。その結果を元にループの正・負帰還を
判定する。
【0040】判定結果が奇数の場合は負帰還ループ、
“0”か偶数の場合は正帰還ループと判定する。正帰還
ループの場合は回路的に発振することは無いため、その
ループに関しては問題無しと判定する。前述の様に、I
NVERTERもしくは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/XN
ORがある場合INVERTER/NON−INVER
TERに置き換える試みを行う。XOR/XNORがあ
り、かつ置き換えが出来なかった場合、処理S3は行わ
れず処理S4に移る。それ以外は処理S3に移る。
【0054】処理S3“正・負帰還チェック”では処理
S1で発見され、場合によっては処理S2でXOR/X
NORが他のブロックに置き換えられたループが正帰還
ループか負帰還ループかを判定する。
【0055】正帰還ループの場合、そのループの検証は
終了して処理S6へ移る。負帰還ループの場合は処理S
4に移る。その判定には“専用ライブラリ”に記述され
ている“論理反転経路”がループ内の接続にいくつ用い
られているかを検証することで行われる。
【0056】処理S4“ループ外入力チェック”は、処
理S3で負帰還ループと判定された場合か、処理S2で
XOR/XNOR全てを置き換え出来なかった場合に行
われる処理である。
【0057】処理S1で検出されたループ、あるいは処
理S2でXOR/XNORが他の素子に置き換えられた
ループ内の各素子(XOR/XNORは除く)に対して
ループ外である他方の入力端子からの入力値によって出
力が固定されるかどうかを判定する。
【0058】その結果、ループ外の入力がクランプで固
定されており、“専用ライブラリ”内で定義されている
“発振停止条件”と照らし合わせた時に普遍的に発振す
ることが無い場合は、このループの検証は終了して処理
S6へ移る。それ以外の場合、つまり、条件付きOK,
あるいは問題有りの場合は処理S5へ移る。
【0059】処理S5“回路個所を明示して問題点を表
示”は処理S4の結果として、普遍的に発振しないとい
う確証が得られなかった場合に行われる。具体的には、
処理S4で検証されたループがループ外である他方の入
力端子からの入力値によって、発振停止される確証が得
られない場合と、外部端子の使い方によっては発振停止
される場合を含む。後者の場合は外部端子の使い方条件
についてもここで表示する。この処理が終わると処理S
6に移る。
【0060】処理S6“他のループがあるか?”では、
回路内に検証すべき他のループがあるかを確認する。あ
る場合は再び処理S2へ移り、一連の検証が行われる。
無い場合はそのまま終了する。
【0061】次に、処理S1でのループ発見後に必ず行
われるフロー、すなわち、図1内における処理S2“X
OR/XNORの処理”の詳細な検証方法を示した図2
の処理について説明をする。なお、図1内の処理S1お
よびび処理S6については公知技術なので特にここでの
詳細な動作説明は省略する。
【0062】処理S2a“XOR/XNORの有無”
は、処理S1で発見されたループ内にXOR/XNOR
が含まれるかをチェックする。一つでも含まれる場合は
処理S2bへ、そうでない場合は即図1でいうところの
処理S3へ移る。
【0063】処理S2b“入力段トレース”は、処理S
2aで発見されたXOR/XNORでまだ検証のされて
いないものを一つ選択して、その素子に対するループ外
である他方の入力端子からの入力値が固定されているか
どうかを検証する。
【0064】この“入力段トレース”部分の動作につい
ては、さらに詳細な検証方法を示した図5があり、この
処理については後述する。図5に示す処理を実行の結
果、返り値を得たら処理S2cへ移る。
【0065】処理S2c“(NON−)INVERTE
Rに置き換え可?”は、処理S2bで前段トレースを行
ったXOR/XNORをINVERTER/NON−I
NVERTERに置き換えることが可能かどうかを判定
する。
【0066】具体的には、処理S2bで検証したXOR
/XNORに入力される、ループ外である他方の入力端
子からの入力値が“1”ならINVERTERに置き換
えが可能、“0”ならNON−INVERTERに置き
換えが可能、と判断して処理S2dへ移る。
【0067】それ以外(不定)の場合は、置き換え不可
と判断して、図1でいう所の処理S4へ一気に移動す
る。これは複数のXOR/XNORがある場合に一つで
も置き換え不可のものがあれば図1でいう所の処理4へ
移動するものである。
【0068】処理S2d“置き換えを実行”は、処理S
2cの判定結果を受けて、処理S2cで判定をおこなっ
たXOR/XNORをINVERTER/NON−IN
VERTERに置き換える。
【0069】この後、処理S2eへ移る。処理S2e
“他にもXOR/XNORはあるか?”では、処理S2
aで発見されたXOR/XNORが他にある場合は、そ
れを対象に再び処理S2bから処理を行う。無ければ図
1に示す処理S3に移動する。
【0070】次に、図1における処理S3について、そ
の詳細な検証方法を記載した図3を参照しながら説明す
る。この処理は、処理S2でのXOR/XNOR検証の
結果、処理S1で検出したループ内にXOR/XNOR
が存在しない場合、もしくは、XOR/XNORが存在
するが全てINVERTER/NON−INVERTE
Rに置き換えが可能だった場合に行われ、内容としては
そのループが正帰還ループか、負帰還ループかの判定を
行う。
【0071】処理S3a“始点を決める”では、処理S
1で発見して、場合によっては処理2で一部変換された
ループ内の任意の素子を検証素子として選択する。最終
的にはSすべての素子を同じ条件で検証することになる
ので、この選択方法は任意で問題無い。選択したら処理
S3bへ移る。
【0072】処理S3b“反転経路通る?”では、現在
検証している素子のループ内における入出力端子間にお
いて、入力および出力信号の極性が反転するかどうかを
検証する。
【0073】現在検証している素子は処理S3aで最初
に選択された素子か、後述する処理S3dで新たに検証
素子として選択された素子が対象となる。検証の方法は
ライブラリ(図6)内で定義されている“論理反転経
路”の接続がループ内にあれば、反転経路を通っている
として、処理S3cに移動する。そうでない場合は処理
S3dに移動する。
【0074】処理S3c“反転数+1”は、処理S3b
の検証の結果、検証している素子のループ内における入
出力端子間において、入力および出力信号の極性が反転
する場合に行われる。
【0075】内部的に反転数を1増加する。内部記憶は
処理S3を終了した時にクリアされるが、それまでは保
持される。この処理終了後は処理S3dへ移る。
【0076】処理S3d“次段へ”では、検証している
素子を他の素子に移す。具体的には後段の素子を新たに
検証する素子として選択する。この処理の次の処理S3
eへ移る。
【0077】処理S3e“始点に戻ったか?”では、処
理S3dの実行結果、検証する素子として選択された素
子が処理S3aで選択されたものと同じかどうかを判定
する。
【0078】選択された素子が同一の場合は、ループ内
の全ての素子に対して検証したことになるので、処理S
3fへ移る。同一でなければ、処理S3bに戻り同様の
検証を行う。
【0079】処理S3f“判定”では、処理S3b〜S
3eまでの結果として内部的に記憶された反転数が偶数
か奇数かで行う。偶数の場合は正帰還ループと判断し
て、次の移り先としては図1の中でいう所の処理S5と
なる。
【0080】反対に奇数の場合は図1の中でいう処理S
4になる。どちらに移動するとしても、内部記憶として
保持されていた反転数はここで一度クリアされることと
なる。
【0081】次に、図1における処理S4について、そ
の詳細な検証方法のフローチャートを示した図4を参照
しながら説明する。
【0082】この処理は、処理S3cで検証した正・負
帰還チェックの結果、負帰還ループと検証された場合、
および処理S2bのXOR/XNOR検証の結果、処理
S1で検出したループ内のXOR/XNOR全てを他の
素子に置き換えることが出来なかった場合に行われる。
【0083】内容としては、処理S1で検出され、場合
によっては処理S2でXOR/XNORが他の素子に置
き換えられたループ内の全ての素子に対して、ループ外
である他方の入力端子からの入力信号により出力値が固
定されるかどうかを検証する。
【0084】処理S4a“始点決める”では、処理S1
で検出され、場合によっては処理S2でXOR/XNO
Rが他の素子に置き換えられたループ内の全ての素子を
検証するにあたって、任意の素子を最初に検証する素子
として選択する。
【0085】最終的には全ての素子を検証することとな
るため、この素子の選択は任意で問題無い。この処理の
後、処理S4bへ移る。
【0086】処理S4b“XOR/XNOR?”では、
現在検証している素子がXOR/XNORかどうかを判
定する。現在検証している素子とは、処理S4aで最初
に選択されたか、後述する処理S4iで新たに検証素子
として選択された素子が対象となる。
【0087】現在検証している素子がXOR/XNOR
の場合、ループ外である他方の入力端子からの入力値が
固定されるかどうかはここに至るまでの間にすでに処理
S2bで行われている。したがって、これ以上のこの素
子に関する検証は不要のため、一気に処理4iまで移
る。それ以外の場合は通常通りの検証を行うため、処理
S4cへ移る。
【0088】処理S4c“発振停止条件有り?”では、
現在検証している素子が専用ライブラリ(図6)内で定
義されている“発振停止条件”を持つかどうかを確認す
る。
【0089】現在検証している素子とは、処理S4aで
最初に選択されたか、後述する処理S4iで新たに検証
素子として選択された素子が対象となる。例えば、IN
VERTERの様に、入力端子が一個所しかなく、ルー
プ外から発振を停めることが出来ない素子等は、その
“発振停止条件”を持たない。
【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“発振止まる?”では、処理S
4eで行った判定の結果により次の移り先が変化する。
具体的には処理S4eで得られた判定結果が、専用ライ
ブラリ内(図6)の“発振停止条件”として提示されて
いる条件を満たす、といった内容であれば、このループ
で発振することは無いとして処理S4gへ移る。
【0096】これには、“満たすが、外部端子が○○の
場合のみ”といった条件付きの場合も含まれる。満たさ
ない場合は他の素子を検証すべく処理S4iへ移る。
【0097】処理S4g“条件有り?”は、処理S4f
で、現在検証している素子はループ外である他方の入力
端子からの入力値により発振の停止が可能な場合に行わ
れる処理である。現在検証している素子とは、処理S4
aで最初に選択されたか、後述する処理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“前段見る”では、現在検証し
ている素子の一つ前段の素子を新たに現在検証する素子
として選択する。最初にここに訪れた時は、処理S2
b、処理S4dから起動された時に検証していた素子の
ループ外である他方の入力端子から1つ前段の素子を現
在検証する素子として選択する。複数ある場合は全て選
択する形となる。その(それらの)素子に関する判定は
次の処理SRbで行う。
【0107】処理SRb“前に訪れたか?”は、処理S
Raで選択した素子(群)が前に訪れた所である場合、
その経路をトレースしつづけると無限ループに陥ってし
まうため、カットする必要がある。そうした部分がある
場合は処理SRcへ移る。なければ処理SRdに直接移
る。
【0108】処理SRc“小ループをカット。値はXと
する”は、処理SRbで現在検証している素子(群)が
これまでに訪れたことのある素子であった場合は、その
経路は検証対象外として、その経路からの値は確定しな
い(X)とする。その後、処理SRdへと進む。
【0109】処理SRd“0・1・Xいずれかに確定
?”は、現在検証している素子(群)がクランプである
場合、その種類、接続により、そこが“0”“1”に確
定すると判定する。
【0110】外部端子である場合は“0”“1”の任意
の値に確定できるとする(その場合は後からその確定す
る任意の値を条件として処理S5で表示することとな
る)。順序回路などの場合は確定しない(X)と判定す
る。それ以外の素子の場合は、判定は保留とする。
【0111】個々の詳細な判定条件については前述した
通りである。ここに至るまでに得られたこれらの値が確
定する個所/しない個所/判定保留の個所より、処理S
2b/処理S4dから起動された時に検証していた素子
に対するループ外からの入力値が“0”/“1”/
“X”いずれかに確定するかを判定する。
【0112】“0”/“1”/“X”いずれにも確定し
ない場合は再び処理SRaに戻り、そうでない場合は、
確定する値を返り値として処理S2cまたはS4eに戻
る。
【0113】次に、具体的な検証対象の回路例を示した
図7を参照しながら上述した検証方法を適用する第1の
実施例を説明する。
【0114】処理S1(図1):ループ構成を見つける
(この処理は公知技術の応用)一例として、図7に示す
INVERTER付きAND7a→NON−INVER
TER7b→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の7
a)のループ内における入出力経路(入力A→出力Y)
が論理反転かどうかを検証する。専用ライブラリ図6の
“論理反転経路”と照らし合わせ、論理反転経路を通過
しているかを判定する。
【0120】図7のAND(7a)の場合、ライブラリ
よりを参照すると、入力A→出力Yの経路は論理反転経
路に当るため、“通る”ことになり、処理S3cへ移
る。
【0121】処理S3c(図3):内部記憶として、反
転数を+1し、処理S3dへ移る。
【0122】処理S3d(図3):AND7aの検証は
終わったため、別の素子の検証に移る。
【0123】後段ブロックであるNON−INVERT
ER7bへ移動する。処理S3eへ移る。
【0124】処理S3e(図3):全ての素子を検証し
たかどうかを確認する。処理S3aで選択した始点はA
ND7aで、NON−INVERTER7bでは無いた
め、“NO”へ移動する。フロチャート上では処理S3
b(2回目)にあたる。
【0125】処理S3b(図3)−2:INVERTE
R(図7の7b)におけるループ内の入出力経路(入力
A→出力Y)が論理反転かどうかを検証する。専用ライ
ブラリ図6の“論理反転経路”列と照らし合わせ、反転
経路を通過しているかを判定する。図7のNON−IN
VERTER7bの場合、ライブラリより反転経路は存
在しないため、“通らない”へ進み、次の処理S3dへ
移る。
【0126】処理S3d(図3)−2:NON−INV
ERTER7bの検証が終わったたため、別の素子の検
証に移る。ここでは、後段ブロックであるOR7cへ移
動し、次の処理S3eへ移る。
【0127】処理S3e(図3)−2:全ての素子を検
証したかどうかを確認する。処理S3aで選択した始点
はNAND7aであり、OR7cでは無いので“NO”
へ移動する。フロチャート上では処理S3b(3回目)
にあたる。
【0128】処理S3b(図3)−3:OR(図7の7
c)におけるループ内の入出力経路が論理反転かどうか
を検証する。専用ライブラリ図6の“論理反転経路”と
照らし合わせ、反転経路を通過しているかを判定する。
図7のOR7cの場合、ライブラリを参照して反転経路
が存在しないので、“通らない”へ進み、次の処理S3
dへ移る。
【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に戻る)処理S
4(図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は外部端子“I
N1”から来ている。
【0138】処理SRb(図5):処理SRaで見つけ
たAND7aの一つ前段の素子は前に訪れたかどうかを
確認。まだ訪れていないため“NO”へ進み、次の処理
SRcへ移る。
【0139】処理SRc(図5):処理SRaで見つけ
たAND7aの前段入力により値が“0”/“1”/
“X”(不定)いずれかに確定するかを判定する。AN
D7aの入力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−INV
ERTER7bがXOR/XNORでないか確認(処理
S2にて別方法でトレース済みのため)。NON−IN
VERTER7bはXOR/XNORでは無いため“N
O”へ進み、次の処理S4c−2へ移動する。
【0148】処理S4c(図4)−2:NON−INV
ERTER7bが発振停止条件を持つかどうかを確認す
る。図6のライブラリを参照すると発振停止条件を持た
ないことから“NO”へ進み、処理S4i−2へ移る。
【0149】処理S4i(図4)−2:NON−INV
ERTER7bの検証が終わったので、別の素子の検証
に移る。
【0150】後段ブロックであるOR7cを新たに検証
する素子として選択し、処理S4j−2へ移る。
【0151】処理S4j(図4)−2:現在検証してい
る素子であるOR7cで、処理S1で発見された、現在
検証しているループ内の始点に戻ったかを確認する。始
点はAND7aで、現在検証している素子はOR7cの
ため“NO”へ進み、処理S4b(3回目)へ移る。
【0152】処理S4b(図4)−3:OR7cがXO
R/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で、現在検証している素子もAND7
aのため“YES”へ進み、処理S5へ移る。
【0163】処理S5(図1):処理S1で発見された
ループ回路個所を明示して、問題点を表示する。この例
ではAND7a,NON−INVERTER7a,OR
7cを回路データ内でブロック毎に与えられたユニーク
な名前を用いて明示しつつ、実機上で発振する可能性が
あること、また、外部端子IN1=0固定で使う限りに
おいては問題無い旨明示する。
【0164】処理S6(図1):処理S1で発見された
他のループは有るか?→無いので“無”へ進む。(処理
おわり)上述したように本発明は、問題のある回路構成
を検出したり、実機上で発振状態を回避するための条件
等を予め明示することで、より良い品質の製品を供給す
ることが出来る。また、通常開発そのものの数倍〜数十
倍かかる、不良発生時の解析、発見、リカバリのTAT
を完全にカットできる。
【0165】さらに、一つ一つの素子に対して、入出力
端子間で信号極性が反転する経路、および他の入力値に
関係無く出力値を確定させるために必要な入力条件の情
報をライブラリ化することで、回路構成に依存すること
無く、発振ループ構成になっているかどうかの判定を行
うことが出来る。
【0166】さらにまた、そのライブラリそのものは、
真理値情報11を基に容易に作成、更新することが出来
る。
【0167】次に、具体的な検証対象の回路例を示した
図8を参照しながら前述した検証方法を適用する第2の
実施例を説明する。ここではループ部分にXORが含ま
れている場合の例である。
【0168】上述した第1の実施例と異なる点は、XO
R/XNORが含まれている場合、ループ外である他方
の入力端子からの入力値によって、信号極性の反転、非
反転が変化するため、ループ内が正帰還ループか負帰還
ループかの判定が通常の手段では行えない点にある。
【0169】本発明では、ループ外の入力がクランプに
より論理が確定している場合に関して、INVERTE
R/NON−INVERTERに置き換えることで反
転、非反転の検証を可能にしている。また、置き換えら
れない場合でも他のブロックのループ外入力チェックも
行い、疑似エラーとなる可能性を探っている。
【0170】処理S1(図1):ループ構成を見つける
(前述したように公知技術の応用)。
【0171】処理S2へ進む。例として、図8に示した
様なINVERTER付きAND8a→NON−INV
ERTER8b→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):ここまでで、XOR
8cのループ外からの入力が“0”“1”“X”のいず
れかになるか確定するか?→XOR8cのループ外から
の入力はLOWクランプ(8e)なので、“0”に確定
するため“YES”へ進み、処理S2cへ移る。
【0178】処理S2c(図2):処理S1で発見され
たループ内における、XOR8cはINVERTERな
どに置き換えが可能か?→処理SRcの結果から、ルー
プ外がLOW固定のため、真理値情報11よりNON−
INVERTERに置き換えが可能となり、次の処理S
2dへ移る。
【0179】処理S2d(図2):処理S1で発見され
たループ内における、XOR8cをNON−INVER
TERに置き換える。以後、内部的に置き換えられた図
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で、9
cでは無いため“NO”へ進み、処理S3b−2へ移
る。
【0186】処理S3b(図3)−3:現在検証してい
る素子がループ内で接続されている経路は専用ライブラ
リ(図6)内で定義されている“論理反転経路”に含ま
れているかを判定する。図9におけるNON−INVE
RTER9cの場合、ライブラリを参照すると論理反転
経路は存在しないため、“通らない”へ進む。
【0187】これ以降の動作は上述した第1の実施例と
同様であり、ここでの説明は省略する。
【0188】次に、具体的な検証対象の回路例を示した
図10を参照しながら前述した検証方法を適用する第3
の実施例を説明する。この例はXOR/XNORが上述
した第2の実施例の様に縮退出来ないケースについて説
明する。
【0189】ここでの縮退とは、冗長な個所、構成を、
より簡略化されたものに置き換えることが可能である場
合に、それに置き換えることを意味し、この例では、X
OR/XNORを回路構成よりBUFFER/INVE
RTERに置き換えることである。
【0190】縮退が出来ない場合は、ループの反転・非
反転検証は行わず、他ブロックのループ外入力チェック
のみを行うものとなる。
【0191】処理S1(図1):ループ構成を見つける
(公知技術の応用)例として、図10に示す様なINV
ERTER付きAND10a→NON−INVERTE
R10b→2入力XOR10c→INVERTER付き
AND10aによるループが一つだけ発見されたと仮定
する。
【0192】処理S2(図1):処理S1で発見された
ループ内におけるXOR/XNOR処理を行う。処理S
2aへ移る。
【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/X
NORに関しては既に検証済みのため、現在選択されて
いる検証対象の素子がXOR/XNORでないか確認す
る(処理S2にて別方法でトレース済みのため)。XO
Rのため“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→NAN
D11c→AND11d→NAND11aによるループ
が、数あるループの中一つとして発見されたと仮定す
る。
【0207】これ以降の動作は処理S4内で検証素子が
NAND11cに移動するまで前述した第1の実施例と
同様であるからここでの説明は省略する。
【0208】処理S4b(図4):ループ外である他方
の入力端子からの入力値をトレースするにあたって、現
在検証している素子がXOR/XNORでないか確認す
る。上述したように、現在検証している素子はNAND
11cであり、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):この素子AND11
dは前に訪れたことがあるか?→訪れていないため“N
O”へ進み、次の処理SRcへ移る。
【0213】処理SRc(図5):この素子AND11
dの出力値が“0”/“1”/“X”(不確定)のいず
れに確定するかを判定するが、この情報のみでは確定さ
せることは不可能であるから“NO”へ進み、次の処理
SRa(2回目)へ移る。
【0214】処理SRa(図5)−2:現在検証する素
子はAND11dだが、さらに1つ前段の素子であるN
AND11c(入力Aから)と、NON−INVERT
ER11e(入力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なので“N
O”へ進み、処理S4b(2回目)へ移る。
【0222】処理S4b(図4)−2:処理S4iで選
択されたAND11dはXOR/XNORでないか確認
?→“NO”へ進み、次の処理S4c−2へ移る。
【0223】処理S4c(図4)−2:処理S4iで選
択されたAND11dは専用ライブラリ(図6)内で、
発振停止条件を持つか?→入力Bが“0”で固定されて
いれば発振停止するため“YES”へ進み、次の処理S
4d−2へ移る。
【0224】処理S4d(図4)−2:処理S4iで選
択されたAND11dのループ外からの入力をトレース
するため、サブルーチンの処理SRa−3へ移る。
【0225】処理SRa(図5)−3:AND11dの
ループ外からの1つ前段の素子を確認する。AND11
dの入力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”(不確定)のいずれに確定するかを判定する。N
ON−INVERTER11eの出力からきており、こ
の情報のみからでは確定しているかわからない。処理S
Ra−4へ戻る。
【0228】処理SRa(図5)−4:NON−INV
ERTER11eのさらに1つ前段をトレースする。N
ON−INVERTER11eの入力AはLOW_CL
AMP(LOWでクランプ)11gから来ている。次の
処理SRb−4へ移る。
【0229】処理SRb(図5)−4:処理SRa−4
で選択された素子は前に訪れたことがあるか?→訪れて
いないため“NO”へ進み、次の処理SRc−4へ移
る。
【0230】処理SRc(図5)−4:処理SRa−4
で選択された素子の出力値が“0”/“1”/“X”
(不確定)いずれかに確定するかを判定する。処理SR
a−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−INVER
TER9cに置き換えた図である。
【図10】本発明の検証方法を適用する第3の実施例の
回路例を示した図である。
【図11】本発明の検証方法を適用する第4の実施例の
回路例を示した図である。
【図12】従来の検証方法の説明用回路例を示す図であ
る。
【図13】シミュレーション結果の波形図を示した図で
ある。
【図14】実機上でのNANDの入出力波形を示した図
である。
【符号の説明】
11 真理値情報 12 ライブラリ 7a,8a,9a,10a INVERTER付きA
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. 【請求項1】 半導体装置の内部回路における正帰還お
    よび負帰還によるループ回路のうち禁止されている負帰
    還ループを論理検証段階で検出するループ検出手段とし
    て、前記内部回路を構成する素子それぞれの少なくとも
    一方の入力端子と出力端子間で信号極性が反転する経路
    と、他方の入力端子の入力値に関係無く出力値を確定さ
    せるために必要な入力条件の情報とを、あらかじめ定め
    る真理値情報に基き作成および更新して論理検証装置の
    記憶手段にライブラリ化するとともに、前記ライブラリ
    を引用しながら、前記内部回路の構成が発振ループ構成
    になっているかどうかの判定を行ない、その判定結果を
    外部の表示手段に表示することを特徴とするループ回路
    における発振構成箇所の検出方法。
  2. 【請求項2】 排他的論理和または排他的否定論理和そ
    れぞれの一方の入力端子を経路とする前記負帰還ループ
    であって、前記負帰還ループ外である他方の入力端子の
    論理レベルがクランプにより確定している場合に、前記
    真理値情報に基づき前記排他的論理和または排他的否定
    論理和をインバータまたはノンインバータに置き換えて
    検証を行う請求項1記載のループ回路における発振構成
    箇所の検出方法。
  3. 【請求項3】 排他的論理和または排他的否定論理和そ
    れぞれの一方の入力端子を経路とする前記負帰還ループ
    であって、前記負帰還ループ外である他方の入力端子の
    論理レベルが特定の素子または特定の機能ブロックによ
    り不確定の場合は、前記負帰還ループにおける信号極性
    の反転または非反転検証は行わず、前記負帰還ループ外
    である他方の入力端子の経路における他ブロックの検証
    のみを行う請求項1記載のループ回路における発振構成
    箇所の検出方法。
  4. 【請求項4】 検出した前記負帰還ループの中に更に小
    負帰還ループが存在する場合は、前記小負帰還ループを
    予め検証するとともに、前記小負帰還ループ内で前記ラ
    イブラリの発振停止条件を満たす値が確定している場合
    はループ遮断後引き続きトレースを継続し、前記小負帰
    還ループ外である他方の入力端子の入力値は不確定とし
    て前記負帰還ループを遮断してトレースを継続する請求
    項1記載のループ回路における発振構成箇所の検出方
    法。
  5. 【請求項5】 前記ライブラリに記憶される論理反転経
    路は、前記負帰還ループ内での接続経路において入出力
    端子間で論理が反転する経路がどこかを定義され、前記
    発振停止条件は、前記負帰還ループ外である他方の入力
    端子からの信号入力値がどの値で固定されていれば発振
    しないかの情報が定義されている請求項1記載のループ
    回路における発振構成箇所の検出方法。
  6. 【請求項6】 前記ライブラリを参照しながら、検証対
    象の全ての素子を始点として出力段をトレースしてい
    き、既に訪れた素子に戻った場合その素子を前記ループ
    として検出するループ検出処理と、前記ループに排他的
    論理和または排他的否定論理和を検出したら、前記ルー
    プ外である他方の入力端子からの入力信号レベルが固定
    されているかどうかを検証し、前記真理値情報に基づい
    てインバータまたはノンインバータに置き換えられるか
    否かを判断し可能なら置き換える排他的論理和または排
    他的否定論理和の処置処理と、前記ループ内の各素子に
    対して前記ライブラリ内の論理反転経路との照合を行
    い、前記ループ全体で反転経路がいくつ存在するかを計
    算しその結果が奇数の場合は負帰還ループ、零か偶数の
    場合は正帰還ループと判定する正・負帰還チェック処理
    と、前記負帰還ループの場合および前記インバータまた
    はノンインバータに置き換えられない場合は、前記負帰
    還ループ内の各素子がループ外の他方の入力端子からの
    入力信号によって出力論理が固定されるか否かをその素
    子の前段の素子に遡って順次検証するループ外入力チェ
    ック処理と、前記ループ外入力チェック処理で問題無し
    と判定する確証が得られなかった場合に、どの素子がル
    ープ構成になっているかの情報を明示して、前記ループ
    に関する検証を終了する問題点表示処理と、前記ループ
    検出処理で検出した前記ループ全てを検出したかどうか
    を確認するループ検出確認処理とを備える請求項1記載
    のループ回路における発振構成箇所の検出方法。
  7. 【請求項7】 前記ループ外入力チェック処理において
    出力論理が固定されないと判断しそれ以上の前記前段の
    素子に遡るトレースを行わない特定の素子または特定の
    機能ブロックは、順序回路、入出力回路の折返し、アダ
    ー、パリティジェネレータの全端子接続と、ラッチとマ
    ルチプレクサとデコーダとのイネーブル部分の端子接続
    とする請求項6記載のループ回路における発振構成箇所
    の検出方法。
  8. 【請求項8】 前記ループ外入力チェック処理において
    前記前段の素子に遡るトレースを実行するか否かを任意
    に選択する請求項6記載のループ回路における発振構成
    箇所の検出方法。
  9. 【請求項9】 前記ループ外入力チェック処理において
    前記前段トレースの段数を任意に指定し、その段数以内
    で値の確定または不確定が決まらない場合は不確定扱い
    にする請求項6記載のループ回路における発振構成箇所
    の検出方法。
  10. 【請求項10】 前記排他的論理和および排他的否定論
    理和の処置処理は、前記ループ検出処理で発見された論
    理ループ内に排他的論理和または排他的否定論理和が含
    まれるか否かを判断する第1の排他的論理和または排他
    的否定論理和の有無判断処理と、前段の処理で検出され
    た前記排他的論理和または前記排他的否定論理和でまだ
    検証のされていないものを一つ選択して、その素子に対
    する前記ループ外である他方の入力端子からの入力値が
    固定されているかどうかを検証する入力段トレース処理
    と、前段の処理で前段トレースを行った前記排他的論理
    和または前記排他的否定論理和をインバータまたはノン
    インバータに置き換えることが可能かどうかを判定し可
    能であれば次へ進み不可であれば前記ループ外入力チェ
    ック処理へ移る置き換え判断処理と、前記置き換え判断
    処理の判定結果を受けて前記入力段処理で判定をおこな
    った前記排他的論理和または前記排他的否定論理和をイ
    ンバータまたはノンインバータに置き換える置き換え実
    行処理と、前記排他的論理和または排他的否定論理和の
    有無処理で発見された前記排他的論理和または前記排他
    的否定論理和が他にある場合は、それを対象に再び前記
    入力段トレース処理から繰り返し、検出されなくなると
    検証継続の判断を下し前記正・負帰還処理へ移る第2の
    排他的論理和または排他的否定論理和の有無判断処理と
    を備える請求項1記載のループ回路における発振構成箇
    所の検出方法。
  11. 【請求項11】 前記入力段トレース処理で検証した前
    記排他的論理和または前記排他的否定論理和に入力され
    る前記ループ外である他方の入力端子からの入力値が論
    理レベルの“1”ならインバータに、“0”ならノンイ
    ンバータに置き換えが可能と判断して次の処理へ進み、
    それ以外の場合は置き換え不可と判断して前記ループ外
    入力チェック処理へ移る請求項10記載のループ回路に
    おける発振構成箇所の検出方法。
  12. 【請求項12】 前記正・負帰還処理は、前記ループ検
    証処理で検出された素子、もしくは前記排他的論路和ま
    たは排他的否定論理和の処置処理で一部変換されたルー
    プ内の任意の素子を、検証対象素子として選択する始点
    決定処理と、現在検証している素子の前記ループ内にお
    ける入出力端子間で信号極性が反転するかどうかを、前
    記ライブラリで定義されている論理反転経路の接続が前
    記ループ内にあるか否かで判定する反転経路通過判定処
    理と、前記反転経路通過判定処理の検証の結果、検証し
    ている素子の前記ループ内における入出力端子間の信号
    極性が反転する場合に反転数を1増加し、前記正・負帰
    還処理が全て終了した時にクリアされる反転数+1処理
    と、検証対象素子として後段の素子を新たに選択する次
    段素子選択処理と、前記次段素子選択処理で新たに選択
    された素子が前記始点決定処理で選択されたものと同じ
    かどうかを判定し、同一の場合は次の処理へ進み同一で
    なければ前記反転経路通過判定処理に戻る始点戻り判定
    処理と、前記反転経路通過判定処理から前記始点戻り判
    定処理までの結果として前記反転数+1処理で記憶され
    た反転数が偶数の場合は正帰還と判断して前記問題点表
    示処理へ移り、奇数の場合は前記ループ外入力チェック
    処理へ移る反転結果判定処理とを備える請求項1記載の
    ループ回路における発振構成箇所の検出方法。
  13. 【請求項13】 前記ループ外入力チェック処理は、前
    記排他的論理和または前記排他的否定論理和が他の素子
    に置き換えられた前記ループ内の任意の素子を最初に検
    証する素子として選択する始点決定処理と、現在検証し
    ている素子が前記排他的論理和または前記排他的否定論
    理和かどうかを判定しそれぞれ後続する定められた処理
    へ移る排他的論理和または排他的否定論理和の判定処理
    と、現在検証している素子が前記ライブラリ内の前記発
    振停止条件をもつかどうかを確認し、前記発振停止条件
    が無い場合は後続する次段素子選択処理へ移り、前記発
    振停止条件がある場合は次段の入力段トレース処理へ進
    む発振停止条件の有無確認処理と、前記発振停止条件を
    持つ時に、現在検証している素子の前記ループ外である
    他方の入力端子からの入力値が固定されているかどうか
    を検証する入力段トレース処理と、前記入力段トレース
    処理で得られた現在検証中の素子に対する前記ループ外
    である他方の入力端子からの入力値と、前記発振停止条
    件との比較を行う発振停止条件比較処理と、前記発振停
    止条件比較処理で得られた判定結果が前記発振停止条件
    を満たす内容であれば次段の処理へ進み、満たさない場
    合は後続する処理である次段の素子選択処理へ移る発振
    ループの有無確認処理と、前記発振ループの有無確認処
    理で発振条件を満たすと判定された前記ループ外の入力
    端子からの入力値がクランプで固定される場合は現在検
    証しているループの検証は終了し、外部端子の使用条件
    によって発振が停止する場合は次段の処理へ進む条件有
    無確認処理と、前記条件有無確認処理で発振停止に条件
    がある場合にその条件を外部表示で示す条件明示処理
    と、現在検証している素子からは前記ループ外である他
    方の入力端子の入力値で発振停止可能な確証が得られな
    い場合および条件付き停止の場合に、前記ループ内の現
    在検証している素子の後段の素子を新たな検証対象素子
    として選択する次段素子選択処理と、前記検証対象素子
    として選択された素子が前記始点決定処理で選択された
    ものと同じかどうかを判定し、同一の場合は条件付き通
    過または問題有りとして前記外部表示処理へ移動し、同
    一でなければ前記排他的論理和または排他的否定論理和
    の判定処理に戻る検証終了確認処理とを備える請求項1
    記載のループ回路における発振構成箇所の検出方法。
  14. 【請求項14】 前記入力段トレース処理は、直前の処
    理で検証していた素子の前記ループ外の入力端子の方に
    接続されている、一つ前段の素子を新たに検証対象素子
    として選択する前段の素子選択手段と、前記前段の素子
    選択手段で選択した前記検証対象素子が前に訪れた素子
    か否かを判定し、既に訪れている場合と初めて訪れる素
    子の場合とにそれぞれ分岐する検証素子判断処理と、前
    記検証素子判断処理で既に訪れている素子と判断された
    場合その経路は検証対象外としてその経路からの値は確
    定しない値とする不確定値設定処理と、現在検証してい
    る素子に対する前記ループ外である他方の入力端子から
    の入力値が“0”、“1”または“不確定”のいずれに
    確定するかを判定し、確定しない場合は前記前段の素子
    選択処理に戻る“0”“1”“不確定”判定処理とを備
    える請求項10または13記載のループ回路における発
    振構成箇所の検出方法。
JP2000367338A 2000-12-01 2000-12-01 論理検証装置 Expired - Fee Related JP3703390B2 (ja)

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)

* Cited by examiner, † Cited by third party
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 英诺达(成都)电子科技有限公司 组合逻辑电路的环路检测方法、装置、设备及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
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