(57)【特許請求の範囲】
【請求項１】
検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に対し、１クロック周期内におけるイベント発生時刻毎に入力データを一時記憶させ、クロック信号のアクティブエッジ検出時に前記入力データが前記アクティブエッジ検出の１時刻前の値に対して変化していればメタステーブル状態と定義してそのメタステーブル状態の値を発生して出力し、次の一時刻後に、前記イベント発生時刻毎に一時記憶した入力データのうち任意の１時刻の入力データを出力することを特徴とする非同期回路の検証方法。
【請求項２】
前記クロック信号のアクティブエッジ検出時に一定期間メタステーブル状態の値を出力するとともに、前記入力データとして取り込む値を、クロック信号の１周期内における任意の１時刻の値とする請求項１記載の非同期回路の検証方法。
【請求項３】
検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に対し、クロック信号の１周期内のイベント時刻で発生する入力データ値を保持させる処理と、前記クロック信号のアクティブエッジ検出時に前記入力データの値が１時刻前に前記内部配列要素に保持した値と異なる出力データのときメタステーブル状態であると定義する処理と、そのメタステーブル状態を発生する処理と、前記クロック信号がアクティブエッジの時の前記入力データの変化の有無により、保持した前記内部配列要素の任意の１時刻における入力データを出力する処理と、一定期間前記メタステーブル状態の値を出力する処理とを設けたタイミング検証処理ステップを備えることを特徴とする非同期回路の検証方法。
【請求項４】
前記タイミング検証処理ステップを、同一クロックタイミングに同期して同一データ信号が少なくとも１つの前記内部配列要素から他の複数の前記内部配列要素に共通に与えられる構成の前記順序回路に適用する請求項３記載の非同期回路の検証方法。
【請求項５】
前記内部配列要素の出力データを共通入力する他の前記内部配列要素それぞれに任意の伝達遅延時間で前記出力データを与えて、前記内部配列要素間でそれぞれの一時記憶する値を強制的に異なる状態にし、同一クロックタイミングでトリガされる前記内部配列要素に擬似的に誤動作をさせてタイミングによる不具合箇所の事前検証を行う請求項１又は２記載の非同期回路の検証方法。
【請求項６】
前記順序回路の検証動作を用いて非同期回路の検証を機能シミュレーションで行う請求項５記載の非同期回路の検証方法。
【請求項７】
検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、クロック信号の１周期内のｎ（ｎ＜（クロック周期のイベント数））時刻前の入力データを複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた複数の内部配列要素に一時記憶する第１の処理と、前記クロック信号のアクティブエッジを検出する第２の処理と、前記アクティブエッジを検出したとき前記入力データの変化を検出する第３の処理と、前記入力データの値が１時刻前に前記内部配列要素に一時記憶した値と異なるときの出力データ状態であるメタステーブル状態を検出する第４の処理と、前記メタステーブル状態のフラグを設定する第５の処理と、任意の時刻ｍ（ｍはｎ時刻までの任意の１時刻）における入力データを第１の変数に一時記憶させる第６の処理と、前記メタステーブル状態を示す値を第２の変数に一時記憶させるメタステーブル状態発生のための第７の処理と、前記第２の変数に記憶された前記メタステーブル状態を示す値を出力する第８の処理と、前記入力データが検出されないときの前記メタステーブル状態のフラグ設定処理後に実行する入力データを前記第１の変数に一時記憶させる第９の処理および前記クロック信号のアクティブエッジが検出されないときの前記メタステーブル状態のフラグ設定をする第１０の処理それぞれの実行後、前記入力データが検出されないときに前記第１の変数に一時記憶された入力データを出力する第１１の処理とを備えることを特徴とする非同期回路の検証方法。
【請求項８】
前記第２の変数に一時記憶させる前記メタステーブル状態を示す値を、一定の初期値により疑似乱数によって設定する請求項７記載の非同期回路の検証方法。
【請求項９】
前記第２の変数に一時記憶させる前記メタステーブル状態を示す値を、ユーザ指定の任意の固定値によって設定する請求項７記載の非同期回路の検証方法。
【請求項１０】
ユーザが指定したクロック信号でアクティブになる順序回路の前記内部配列要素を全て抽出し対象となる前記内部配列要素をリストアップするアクティブ順序回路のリストアップ処理と、前記リストアップ処理でリストアップされた全ての前記内部配列要素に対して前記第１から前記第１１までの処理を実行した後に、次の１イベント時刻に移る処理を全イベントを対象に繰り返す全イベント繰り返し処理とを備える請求項７記載の非同期回路の検証方法。
【請求項１１】
非同期回路を予め階層構造化した状態で、ユーザが指定した階層下に含まれる全ての前記順序回路の前記内部配列要素を抽出する階層内抽出処理と、抽出した前記内部配列要素に対して前記リストアップ処理および前記全イベント繰り返し処理を実行して対象となる前記順序回路を階層名で選択する請求項１０記載の非同期回路の検証方法。
【請求項１２】
前記階層下の前記順序回路の指定は、前記階層化に含まれる全ての順序回路を対象とする請求項１１記載の非同期回路の検証方法。
【請求項１３】
前記階層下の前記順序回路の指定は、前記階層下を除く全ての順序回路を対象とする請求項１１記載の非同期回路の検証方法。
【請求項１４】
前記階層化に含まれる全ての順序回路および前記階層下を除く全ての順序回路を対象に指定して特定の階層のみの指定をする請求項１１記載の非同期回路の検証方法。
【請求項１５】
同一クロックタイミングに応答して同一データ信号が与えられる順序回路間で発生した入力データ信号の伝達遅延時間差により前記順序回路間で保持される値が異なる現象を、タイミングを考慮した論理シミュレーションに準ずる状態で再現して検証する請求項１〜１３または１４記載の非同期回路の検証方法。
【請求項１６】
検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、クロック信号の１周期内のｎ（ｎ＜（クロック周期のイベント数））時刻前の入力データを複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に一時記憶する第１の処理と、前記クロック信号のアクティブエッジを検出する第２の処理と、前記アクティブエッジを検出したとき前記入力データの変化を検出する第３の処理と、前記入力データの値が１時刻前に前記内部配列要素に一時記憶した値と異なるときの出力データ状態であるメタステーブル状態を検出する第４の処理と、前記メタステーブル状態のフラグを設定する第５の処理と、任意の時刻ｍ（ｍはｎ時刻までの任意の１時刻）における入力データを前記記憶手段に設けた第１の変数に一時記憶させる第６の処理と、前記メタステーブル状態を示す値を前記記憶手段に設けた第２の変数に一時記憶させるメタステーブル状態発生のための第７の処理と、前記第２の変数に記憶された前記メタステーブル状態を示す値を出力する第８の処理と、前記入力データが検出されないときの前記メタステーブル状態のフラグ設定処理後に実行する入力データを前記第１の変数に一時記憶させる第９の処理および前記クロック信号のアクティブエッジが検出されないときの前記メタステーブル状態のフラグ設定をする第１０の処理それぞれの実行後、前記入力データが検出されないときに前記第１の変数に一時記憶された入力データを出力する第１１の処理とを、コンピュータに実行させるプログラム。
【請求項１７】
ユーザが指定したクロック信号でアクティブになる順序回路の前記内部配列要素を全て抽出し対象となる前記内部配列要素をリストアップするアクティブ順序回路のリストアップ処理と、前記リストアップ処理でリストアップされた全ての前記内部配列要素に対して前記第１から前記第１１までの処理を実行した後に、次の１イベント時刻に移る処理を全イベントを対象に繰り返す全イベント繰り返し処理とを、コンピュータに実行させる請求項１６に記載のプログラム。
【請求項１８】
非同期回路を予め階層構造化した状態で、ユーザが指定した階層下に含まれる全ての前記順序回路の前記内部配列要素を抽出する階層内抽出処理と、抽出した前記内部配列要素に対して前記リストアップ処理および前記全イベント繰り返し処理を実行処理を、コンピュータに実行させる請求項１７に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は非同期回路の検証方法およびそのプログラムに係わり、特に非同期回路の検証を言語レベルの機能シミュレーションで行う際に、クロック信号の周期が異なる複数の順序回路の出力データが組み合わせ回路などを介して相互に順序回路の入力データとなる回路構成の動作を検証する方法を改善した非同期回路の検証方法およびそのプログラムに関する。
【０００２】
【従来の技術】
近年、半導体素子の微細化技術の進展に伴い、その半導体素子で構成する半導体装置（ＬＳＩ）も大規模化しており、その半導体装置における論理回路設計時に、論理動作およびタイミング検証ツールとして言語レベルの機能シミュレーションが適用されている。
【０００３】
本発明に関する非同期回路の検証方法は、クロック信号の周期が異なる複数の順序回路の出力データが組み合わせ回路などを介して相互に順序回路の入力データとなる回路構成の動作を検証するために用いられるものである。このような非同期回路の検証方法は、一般的にゲートレベルのネットリストを用いて、タイミングを考慮した論理シミュレーション、例えばイベントドリブン方式と呼ばれるシミュレーションによりセットアップやホールドタイミングを検証することで行われている。
【０００４】
イベントドリブン方式は、クロック信号やデータ信号等の論理レベルに変化を回路の論理状態に影響を与えるイベントとして記憶手段に登録しておき、このイベントを順次に読み出しながらデータの内容を更新する。
【０００５】
このデータを入力とする検証対象回路について演算処理を行いその出力信号に変化があれば遅延量を勘案しながら順次イベントとして登録し、シミュレーションを実行するというものである。
【０００６】
一方、回路設計はＨＤＬなどの言語で機能設計から行われるため、言語レベルの機能シミュレーションにおいて非同期検証を行うことが要求されている。
【０００７】
この要求に応えるための従来の非同期回路の検証方法の一例のフローチャートを示した図９を参照すると、処理Ｓ６１でクロック信号のアクティブエッジを検出後、処理Ｓ６２で入力データ変化を検出し、さらに処理Ｓ６３でメタステーブル状態の検出を行い、それらの条件にしたがって検出されたら処理Ｓ６４でメタステーブルフラグをｆａｌｓｅに設定し、処理Ｓ６５で入力データの保持、処理Ｓ６６でメタステーブル状態を発生し、処理６７でメタステーブル状態を出力する。
【０００８】
処理６３でメタステーブル状態が検出されなければ処理Ｓ６８でメタステーブル状態のフラグをｔｒｕｅに設定し、処理Ｓ６２で入力データの変化が検出されなければ処理Ｓ６９でメタステーブル状態フラグをｆａｌｓｅに設定し、処理Ｓ７０で入力データを保持し、処理Ｓ７１で保持データを出力する。
【０００９】
処理Ｓ６１でクロック信号のアクティブエッジを検出しなければ処理Ｓ７２でメタステーブル状態フラグをｆａｌｓｅに設定し、処理Ｓ７１へ進む。
【００１０】
これらの処理を行うことで、順序回路の動作において、クロック信号がアクティブな時の入力データが変化したか否かによりメタステーブルを定義する処理と一定期間メタステーブル状態の値を出力する処理を行っている。
【００１１】
上述した処理により、順序回路に対してクロック信号のアクティブエッジ検出毎に強制的にメタステーブル状態を一時刻発生させることで、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更すること無く、タイミングを考慮したシミュレーション同様に再現することにより検証できる。
【００１２】
なお、メタステーブル（ｍｅｔａ−ｓｔａｂｌｅ）状態とは、ラッチやフリップフロップの入力信号において、セットアップ時間やホールド時間が守られなかった場合に出力信号が不安定な状態になることであり、外部からの非同期信号をフリップフロップで同期化するような場合には、入力信号はどこで変化するかわからないので、メタステーブルの発生を防ぐことはできない。しかし、メタステーブルの発生現象を見れば、メタステーブルが発生しても構わない回路構成にすることは可能である。
【００１３】
【発明が解決しようとする課題】
上述した従来の検証方法では以下のような欠点がある。すなわち、後述する本発明の検証方法を適用する一例の回路図を示した図３のような回路構成の場合、順序回路を構成する内部配列要素であるフリップフロップＦＦ１の出力値を、同じクロック信号（ＣＬＫ２）でトリガされた同一データ信号とする順序回路間（ＦＦ２とＦＦ３の関係）では、ゲートレベルのネットリストを用いたタイミングを考慮したシミュレーションにおけるＦＦ１の出力Ｑ１からそれぞれのデータ入力Ｄ２、Ｄ３までは信号伝達の遅延時間差を設けてある。
【００１４】
その遅延時間差による、ＦＦ２とＦＦ３との順序回路間で発生する入力データ信号とクロック信号（ＣＬＫ２）とのタイミング問題、すなわち、ＦＦ２とＦＦ３の順序回路で保持される値が異なるという不具合が、非同期回路における順序回路の不具合動作として発生する。
【００１５】
前述した図９の従来技術の検証方法では、ＦＦ２とＦＦ３の順序回路にはＦＦ１の出力Ｑ１として、必ず同一データ信号の値が保持されるため、ＦＦ２とＦＦ３の順序回路間の不具合動作が検出出来ない欠点があった。
【００１６】
本発明の目的は、上述した従来の欠点に鑑みなされたものであり、非同期回路の順序回路を構成する内部配列要素のフリップフロップＦＦ１の出力値を、同じクロック信号（ＣＬＫ２）でトリガされた同一データ信号とする順序回路間で発生する入力データ信号とクロック信号（ＣＬＫ２）との信号伝達の遅延時間差によるタイミング問題、すなわち、ＦＦ２とＦＦ３の順序回路で保持される値が異なるという不具合動作を検出出来る検証方法を提供することにある。
【００１７】
【課題を解決するための手段】
本発明の非同期回路の検証の特徴は、検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に対し、１クロック周期内におけるイベント発生時刻毎に入力データを一時記憶させ、クロック信号のアクティブエッジ検出時に前記入力データが前記アクティブエッジ検出の１時刻前の値に対して変化していればメタステーブル状態と定義してそのメタステーブル状態の値を発生して出力し、次の一時刻後に、前記イベント発生時刻毎に一時記憶した入力データのうち任意の１時刻の入力データを出力することにある。
【００１８】
また、前記クロック信号のアクティブエッジ検出時に一定期間メタステーブル状態の値を出力するとともに、前記入力データとして取り込む値を、クロック信号の１周期内における任意の１時刻の値とする。
【００１９】
本発明の非同期回路の検証方法の他の特徴は、検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に対し、クロック信号の１周期内のイベント時刻で発生する入力データ値を保持させる処理と、前記クロック信号のアクティブエッジ検出時に前記入力データの値が１時刻前に前記内部配列要素に保持した値と異なる出力データのときメタステーブル状態であると定義する処理と、そのメタステーブル状態を発生する処理と、前記クロック信号がアクティブエッジの時の前記入力データの変化の有無により、保持した前記内部配列要素の任意の１時刻における入力データを出力する処理と、一定期間前記メタステーブル状態の値を出力する処理とを設けたタイミング検証処理ステップを備えることにある。
【００２０】
また、前記タイミング検証処理ステップを、同一クロックタイミングに同期して同一データ信号が少なくとも１つの前記内部配列要素から他の複数の前記内部配列要素に共通に与えられる構成の前記順序回路に適用することができる。
【００２１】
さらに、前記内部配列要素の出力データを共通入力する他の複数の前記内部配列要素それぞれに異なる伝達遅延時間で前記出力データを与えて、複数の前記内部配列要素間でそれぞれの一時記憶する値を強制的に異なる状態にし、同一クロックタイミングでトリガされる前記内部配列要素に擬似的に誤動作をさせてタイミングによる不具合箇所の事前検証を行うこともできる。
【００２２】
さらにまた、前記順序回路の検証動作を用いた非同期回路の検証を機能シミュレーションで行うこともできる。
【００２３】
本発明の非同期回路の検証方法の更に他の特徴は、検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、クロック信号の１周期内のｎ（ｎ＜（クロック周期のイベント数））時刻前の入力データを複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた複数の内部配列要素に一時記憶する第１の処理と、前記クロック信号のアクティブエッジを検出する第２の処理と、前記アクティブエッジを検出したとき前記入力データの変化を検出する第３の処理と、前記入力データの値が１時刻前に前記内部配列要素に一時記憶した値と異なるときの出力データ状態であるメタステーブル状態を検出する第４の処理と、前記メタステーブル状態のフラグを設定する第５の処理と、任意の時刻ｍ（ｍはｎ時刻までの任意の１時刻）における入力データを前記記憶手段に設けた第１の変数に一時記憶させる第６の処理と、前記メタステーブル状態を示す値を前記記憶手段に設けた第２の変数に一時記憶させるメタステーブル状態発生のための第７の処理と、前記第２の変数に記憶された前記メタステーブル状態を示す値を出力する第８の処理と、前記入力データが検出されないときの前記メタステーブル状態のフラグ設定処理後に実行する入力データを前記第１の変数に一時記憶させる第９の処理および前記クロック信号のアクティブエッジが検出されないときの前記メタステーブル状態のフラグ設定をする第１０の処理それぞれの実行後、前記入力データが検出されないときに前記第１の変数に一時記憶された入力データを出力する第１１の処理とを備えることにある。
【００２４】
また、前記第２の変数に一時記憶させる前記メタステーブル状態を示す値を、一定の初期値により疑似乱数によって設定することができる。
【００２５】
さらに、前記第２の変数に一時記憶させる前記メタステーブル状態を示す値を、ユーザ指定の任意の固定値によって設定することもできる。
【００２６】
さらにまた、ユーザが指定したクロック信号でアクティブになる順序回路の前記内部配列要素を全て抽出し対象となる前記内部配列要素をリストアップするアクティブ順序回路のリストアップ処理と、前記リストアップ処理でリストアップされた全ての前記内部配列要素に対して前記第１から前記第１１までの処理を実行した後に、次の１イベント時刻に移る処理を全イベントを対象に繰り返す全イベント繰り返し処理とを備えることもできる。
【００２７】
また、非同期回路を予め階層構造化した状態で、ユーザが指定した階層下に含まれる全ての前記順序回路の前記内部配列要素を抽出する階層内抽出処理と、抽出した前記内部配列要素に対して前記リストアップ処理および前記全イベント繰り返し処理を実行して対象となる前記順序回路を階層名で選択してもよい。
【００２８】
さらに、前記階層下の前記順序回路の指定は、前記階層化に含まれる全ての順序回路を対象としてもよい。
【００２９】
さらにまた、前記階層下の前記順序回路の指定は、前記階層下を除く全ての順序回路を対象としてもよい。
【００３０】
また、前記階層化に含まれる全ての順序回路および前記階層下を除く全ての順序回路を対象に指定して特定の階層のみの指定をしてもよい。
【００３１】
また、同一クロックタイミングに応答して同一データ信号が与えられる順序回路間で発生した入力データ信号の伝達遅延時間差により前記順序回路間で保持される値が異なる現象を、タイミングを考慮した論理シミュレーションに準ずる状態で再現して検証してもよい。
【００３２】
【発明の実施の形態】
まず、本発明の概要を述べる。本発明による非同期回路の検証方法およびそのプログラムは、非同期回路を構成する順序回路の機能シミュレーション上における動作として次のような処理を設けている。
【００３３】
すなわち、クロック信号の１周期内のイベント時刻で発生する入力データ値を内部配列要素に一時記憶する処理と、メタステーブル状態を発生する処理を設けてクロック信号の１周期内のイベント時刻で発生する入力データ値を内部配列要素に一時記憶する処理と、クロック信号がアクティブな時の入力データ変化の有無により、内部配列要素に保持したイベント時刻の入力データのうち任意の１時刻における入力データを出力する処理と、メタステーブル状態を定義する処理と、一定期間メタステーブル状態の値を出力する処理である。
【００３４】
ここでの内部配列要素とは、順序回路を構成するＦＦ１，ＦＦ２，ＦＦ３のそれぞれが持つＤ［ｍ］の配列要素のことであり、各ＦＦの入力データＤｉｎの値をｍ時刻分保持するための配列である。ただし、ｍは０〜ｎ時刻の任意の１時刻を指す。すなわち、ＦＦ一つに付き記憶変数一つを持ち、その一つの変数に入る値は任意の数値（英文字も含み、２、４、８・・・進数の場合もある）である。
【００３５】
また、ＦＦ１、ＦＦ２，ＦＦ３の動作は全て同じで図１の処理フローになり、Ｓ０〜９、Ｂ１〜Ｂ３の各処理の事象は独立である。
【００３６】
上述した順序回路の処理動作は、クロック信号の１周期内のイベント時刻毎に入力データを順序回路を構成するフリップフロップに予め設定した内部配列要素に一時的に保持し、クロック信号のアクティブエッジ検出時に入力データの値が一時刻前の値に対して変化している場合、すなわち前述したように、ラッチやフリップフロップの入力信号において、セットアップ時間やホールド時間が守られなかった場合に出力信号が不安定な状態になるメタステーブル状態と定義し、メタステーブル状態の値を発生して出力する。
【００３７】
そして、次の一時刻後に先に内部配列要素に保持した入力データのうち、任意の１時刻の入力データを出力する。
【００３８】
上述した処理により、順序回路に対してクロック信号のアクティブエッジ検出毎に、強制的にメタステーブル状態を一時刻間発生させるという従来の動作に加え、入力データとして取り込む値を、クロック信号の１周期内における任意の１時刻の値とする動作を行う。
【００３９】
従って、前述した順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【００４０】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において発生する、入力データ信号の伝達遅延時間差によるタイミング問題、すなわち、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【００４１】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証ＴＡＴの短縮という効果が得られるものである。
【００４２】
以下、本発明の第１の実施の形態を、本発明の順序回路の動作フローチャートを示した図１と、本発明を実施するための一般的な機能シミュレータの主要構成図を示した図２と、本発明の順序回路の検証方法を適用する順序回路の一例を示した図３と併せて参照しながらさらに詳細に説明する。
【００４３】
図１に示したフローチャートは、前述した図９に示す従来の順序回路の処理動作にさらに本発明の動作を付加したものであり、図１において処理Ｓ１１と処理Ｓ１６が新たに付加した処理動作である。
【００４４】
すなわち、本発明の順序回路の検証方法は、クロック信号の１周期内のｎ時刻前の入力データを一時記憶する入力データ保持処理Ｓ１１と、クロック信号のアクティブエッジ検出処理Ｓ１２と、アクティブエッジが検出された状態で、入力データが変化したかを検出する入力データの変化検出処理Ｓ１３と、入力データの変化が検出された状態で、メタステーブル状態が検出されたか否かを検出するメタステーブル状態の検出処理Ｓ１４と、メタステーブル状態が検出されたときに、メタステーブル状態のフラグを設定するメタステーブル状態フラグの設定処理Ｓ１５と、任意の時刻ｍ（但し、ｍはｎ時刻までの任意の１時刻）における入力データを一時記憶（入力データを変数ｄに保持）する処理Ｓ１６と、メタステーブル状態を変数ｍｅｔａに保持するメタステーブル状態の発生処理と、変数ｍｅｔａの内容を変数Ｑｏｕｔに移すメタステーブル状態の出力処理Ｓ１８と、メタステーブル状態の検出処理Ｓ１４においてメタステーブル状態が検出されなかった場合、メタステーブル状態フラグをｔｒｕｅに変更するメタステーブル状態の設定処理Ｓ１９と、入力データの変化検出処理Ｓ１３において入力データが検出されなかった場合、メタステーブル状態フラグをｆａｌｓｅに変更するメタステーブル状態の設定処理Ｓ２０と、処理Ｓ２０でメタステーブル状態フラグをｆａｌｓｅに変更したあと、入力データを変数ｄに保持する入力データの保持処理Ｓ２１と、変数ｄに保持された入力データをＱｏｕｔに出力する保持データの出力処理Ｓ２２と、アクティブエッジ検出処理Ｓ１２においてアクティブエッジが検出されなかった場合、メタステーブル状態フラグをｆａｌｓｅに変更して処理Ｓ２１へ進むメタステーブル状態の設定処理Ｓ２３とを有する。
【００４５】
上述したフローチャートを適用する公知の機能シミュレータの構成は、コンピュータ１０と、検査対象装置２０を有し、コンピュータ１０は、検査対象装置からの要求されたデータまたは演算を開始するときにレディ信号をアクティブにし、データの供給準備が終了し、データが検証システムへ供給した後、レディ信号を非アクティブにするとともに、所定の検証の実行を制御する。
【００４６】
次に、第１の実施の形態の動作を説明する。
【００４７】
図１および図３を参照すると、図１における順序回路の動作説明のために、非同期回路の回路図を図３で示している。この回路図は、順序回路としてＦＦ１、ＦＦ２、ＦＦ３および加算器ＡＬＵ１から構成される。
【００４８】
ＦＦ１の入力データＤ１は、ＦＦ１の出力データＱ１に加算器ＡＬＵ１で＋１された値が入力され、ＦＦ２の入力データＤ２とＦＦ３の入力データＤ３にはＦＦ１の出力データＱ１が入力される。また、ＦＦ１にはクロック信号ＣＬＫ１が供給され、ＦＦ２、ＦＦ３にはクロック信号ＣＬＫ２が供給される。
【００４９】
順序回路のＦＦ１の入出力信号は、クロック信号ＣＬＫ１と、入力データＤ１と、出力データＱ１とし、順序回路のＦＦ２、ＦＦ３の入出力信号は、クロック信号ＣＬＫ２、ＦＦ２への入力データＤ２、出力データＱ２、ＦＦ３への入力データＤ３、出力データＱ３とする。
【００５０】
また、ＦＦ１のメタステーブル状態フラグＭＦ１、ＦＦ２のメタステーブル状態フラグＭＦ２、ＦＦ３のメタステーブル状態フラグＭＦ３とする。
【００５１】
この第１の実施の形態における検証動作は、まず入力データ保持処理Ｓ１１で現時刻の入力データの値Ｄｉｎを内部配列要素Ｄ[０]に保持する。内部配列要素Ｄ［ｎ］は、ｎ（ｎは整数）個の配列要素があり、ｎは機能シミュレーションで用いる１クロック周期内のイベント数よりも小さい値とする。
【００５２】
また、内部配列要素にＦＦ１，ＦＦ２，ＦＦ３への入力データ値を保持させる場合、時刻の経過とともにＤ［０］の値はＤ［１］へ、Ｄ［１］の値はＤ［２］へ、Ｄ［ｎ−１］の値はＤ［ｎ］へとｎ時刻分の値を保持する。
【００５３】
次に、クロック信号のアクティブエッジ検出処理Ｓ１２で、順序回路に入力されるクロック信号のエッジ検出を行い、エッジが検出された場合（Ｙｅｓ）は次の入力データの変化検出処理Ｓ１３に移り、検出されない場合（Ｎｏ）はメタステーブル状態フラグの設定処理Ｓ２３を行った後、保持データの出力処理Ｓ２２を行う。
【００５４】
入力データの変化検出処理Ｓ１３では、順序回路への入力データ信号の変化を検出し、変化が検出された場合（Ｙｅｓ）は次段のメタステーブル状態検出処理Ｓ１４に移り、検出されない場合（Ｎｏ）はメタステーブル状態フラグの設定処理Ｓ２０でメタステーブル状態フラグをｆａｌｓｅに変更する。続いて入力データの保持処理Ｓ２１で入力データの値Ｄ［０］を変数ｄに移し、次の保持データの出力処理Ｓ２２において変数ｄに保持された入力データの値を出力する。
【００５５】
次に、メタステーブル状態の検出処理Ｓ１４では、順序回路内で保持されているメタステーブル状態フラグの値をチェックし、メタステーブル状態である場合（ｔｒｕｅ）、次段の処理Ｓ１５でメタステーブル状態フラグをｆａｌｓｅに設定する。
【００５６】
次に、処理Ｓ１５でメタステーブル状態フラグをｆａｌｓｅに設定した後、処理Ｓ１６では、入力データとして前述のＳ１１で保持した内部配列要素Ｄ［ｍ］の任意要素ｍの値を変数ｄに保持し、処理Ｓ１７で乱数を用いてメタステーブル状態の値を発生して変数ｍｅｔａに保持する。
【００５７】
そして最後に処理Ｓ１８で変数ｍｅｔａのメタステーブル状態の値を順序回路の出力Ｑｏｕｔに出力する。また、メタステーブル状態フラグの値がメタステーブル状態でない場合（ｆａｌｓｅ）、処理Ｓ１９でメタステーブル状態フラグをｔｒｕｅに設定した後、前述同様の処理Ｓ１６、処理Ｓ１７、処理Ｓ１８の処理を順次行う。
【００５８】
処理Ｓ２０、処理Ｓ２３の処理は、前述の処理Ｓ１５同様に、メタステーブル状態フラグの値をメタステーブル状態でない場合（ｆａｌｓｅ）に設定するもので、処理Ｓ２１の処理は、前述の処理Ｓ１６同様に、順序回路への入力データＤｉｎの値を変数ｄに保持する。処理Ｓ２２での処理は、変数ｄに保持された値を順序回路の出力Ｑｏｕｔに出力する。
【００５９】
これにより、処理Ｓ１４のメタステーブル状態検出処理後に、処理Ｓ１６では、本発明の特徴である、同じクロック信号でトリガされる同一データ信号を入力データとする順序回路間に、互いに異なった入力データを保持する動作を実現する。処理Ｓ１７、処理Ｓ１８の一連の処理では、従来例の特徴であるクロック信号がアクティブな状態で入力データの値が一時刻前の値に対して変化がある場合のメタステーブル状態の値を出力する動作を行う。
【００６０】
また、処理Ｓ１３の入力データ変化検出処理後の処理Ｓ２０、処理Ｓ２１、処理Ｓ２２の一連の処理によりクロック信号がアクティブな場合で入力データの値が一時刻前の値に対して変化がない場合の動作を行い、処理Ｓ１２のクロック信号アクティブエッジ検出処理後の処理Ｓ２３、処理Ｓ２２の一連の処理によりクロック信号が非アクティブな場合の動作を行うことで、メタステーブル状態の値を出力した後、次の一時刻後に内部配列要素から保持された入力データの出力動作を行う。
【００６１】
次に、図３の非同期回路の回路図に図１の順序回路の検証方法を適用した場合の動作を図４のタイミングチャートを用いて説明する。
【００６２】
図４に示すように、順序回路のＦＦ１へのクロック信号ＣＬＫ１が３時刻毎に変化し、順序回路ＦＦ２へのクロック信号ＣＬＫ２が４時刻毎に変化するものとする。
【００６３】
すなわち、保持する時刻の幅は、それぞれのＣＬＫの１周期（ＣＬＫ１では６時刻分、ＣＬＫ２では８時刻分）-１、以下で無ければ、シミュレーションが成り立たないためである。１周期を超えると、１クロック前の値も取り込むことになり正常な動作シミュレーションでなくなってしまうことになる。
【００６４】
実際には、この保持する幅は、遅延を考慮したシミュレーションでの配線負荷などによる遅延を擬似的にモデルしており、メタステーブル状態の幅（図４では１時刻）は、ＦＦのＳＥＴＵＰ／ＨＯＬＤのスペックを擬似的にモデルしている。
【００６５】
なお、以下の説明では、説明を容易にするため、図１の処理が一巡してメタステーブルフラグＭＦ１，ＭＦ２，ＭＦ３がアクティブになっている状態とする。
【００６６】
この場合、順序回路のＦＦ１は、ＦＦ１のＱｏｕｔの出力Ｑ１に加算器ＡＬＵ１で＋１した値を入力データＤ１として入力し、その３時刻間の値、つまり時刻０の値（＝１）、時刻１の値（＝１）、時刻２の値（＝１）を内部配列要素に保持し（処理Ｓ１１）、時刻３のＣＬＫ１の立ち上がりエッジを検出するとその立ち上がりタイミングで（処理Ｓ１２）、ＦＦ１の内部配列要素における任意時刻（＝時刻２）の値（＝１）を通常値として選択した後、後述するように次の一時刻である時刻４でＱｏｕｔから出力Ｑ１の値（＝１）として出力される（処理Ｓ２２）。
【００６７】
この時、時刻３において、ＦＦ１のメタステーブル状態フラグＭＦ１の値は、ＣＬＫ１の立ち上がりエッジがアクティブな状態、つまりアクティブエッジで（処理Ｓ１２）かつ入力データＤ１の値が一時刻前の値、すなわち、ＦＦ１の初期状態の値（＝０）に対して変化（＝１）があるが（処理Ｓ１３）、初期状態では、ＭＦ１の値はｆａｌｓｅのため、処理Ｓ１４でメタステーブル状態検出は「Ｎｏ」（ｆａｌｓｅを検出）することになり、処理Ｓ１９でｔｒｕｅ（＝１）になり、ＦＦ１の出力端Ｑｏｕｔから出力Ｑ１にメタステーブル状態の値（＝６）を出力する（処理Ｓ１８）。
【００６８】
時刻４ではＣＬＫ１の立ち上がりエッジではない非アクティブな状態になるため（処理Ｓ１２）、メタステーブル状態フラグＭＦ１をｆａｌｓｅ（＝０）に変更し（処理Ｓ２３）、前述したように出力Ｑ１として、内部配列要素で選択された任意時刻（＝時刻２）の値（＝１）を出力する（処理Ｓ２２）。
【００６９】
同様に、時刻９、１０、および時刻１５、１６、時刻２１、２２において１クロック周期間にメタステーブル状態フラグＭＦ１の値はｔｒｕｅ（＝１）になり（処理Ｓ１９）、ＦＦ１の出力端Ｑｏｕｔの出力Ｑ１においてメタステーブル状態の値、例えばここでは「６」を出力後、内部配列要素に保持された３時刻間のうち、任意の一時刻の値を通常値として出力する（処理Ｓ２２）。
【００７０】
なお、このタイミングチャートの例では示していないが、処理Ｓ１２，処理Ｓ１３および処理Ｓ１４でいずれもＹｅｓを選択した場合は、処理Ｓ１５においてメタステーブル状態フラグＭＦ１の値はｆａｌｓｅ（＝０）になる。
【００７１】
次に、順序回路の内部配列素子ＦＦ２においてもＦＦ１と同様に、ＦＦ１の出力Ｑ１と同じ値である入力データＤ２の３時刻間の値、つまり時刻１の値（＝０）、時刻２の値（＝０）、時刻３の値（＝６）を内部配列要素に保持し（処理Ｓ１１）、時刻４のＣＬＫ２の立ち上がりエッジを検出するとその立ち上がりタイミングで（処理Ｓ１２）ＦＦ２の内部配列要素における任意時刻（＝時刻１）の値（＝０）を通常値として選択した後、次の一時刻である時刻５でＦＦ２の出力端Ｑｏｕｔから出力Ｑ２の値（＝０）として出力される（処理Ｓ２２）。
【００７２】
この時、前述のＦＦ１同様に、時刻４においてＦＦ２のメタステーブル状態フラグＭＦ２の値は、ＣＬＫ２の立ち上がりエッジがアクティブな状態で（処理Ｓ１２）かつ、入力データＤ２の値が一時刻前の値、すなわち、ＦＦ２の初期状態（＝０）の値に対して変化（＝６）があるため（処理Ｓ１３）、ｔｒｕｅ（＝１）になり（処理Ｓ１４および処理Ｓ１９）、処理Ｓ１６，処理Ｓ１７を経てＦＦ２の出力端Ｑｏｕｔから出力Ｑ２にメタステーブル状態の値（＝３）を出力する（処理Ｓ１８）。
【００７３】
時刻５では、ＣＬＫ２の立ち上がりエッジではない非アクティブ状態になるため（処理Ｓ１２）、Ｑ２として、メタステーブル状態フラグＭＦ２をｆａｌｓｅ（＝０）に変更し（処理Ｓ２３）、内部配列要素で選択された任意時刻（＝時刻１）の値（＝０）を出力する（処理Ｓ２２）。
【００７４】
時刻１２、１３、および時刻２０、２１においては、ＣＬＫ２が立ち上がるアクティブな状態の時にＤ２の値に変化がないため（処理Ｓ１３）、１クロック周期間にメタステーブル状態フラグＭＦ２の値はｆａｌｓｅ（＝０）になり（処理Ｓ２０）、Ｑｏｕｔの出力Ｑ２において、内部配列要素に保持（処理Ｓ２１）された３時刻間（時刻９，１０，１１）のうち、最後に保持された時刻（＝１１）の値を通常値として出力する（処理Ｓ２２）。
【００７５】
最後に、順序回路ＦＦ３においても、前述のＦＦ１、ＦＦ２同様な動作を行い、ＦＦ１の出力Ｑ１と同じ値である入力データＤ３の３時刻間の値を内部配列要素に保持し（処理Ｓ１１）、時刻４のＣＬＫ２の立ち上がりエッジを検出するとその立ち上がりタイミングで（処理Ｓ１２）ＦＦ３の内部配列要素における任意時刻（＝時刻３）の値（＝６）を通常値として選択した後、次の一時刻である時刻５でＱｏｕｔから出力Ｑ３の値（＝６）として出力される（処理Ｓ２２）。
【００７６】
また、前述のＦＦ２と同様に、時刻４においてＦＦ３のメタステーブル状態フラグＭＦ３の値は、ＣＬＫ２の立ち上がりエッジがアクティブな状態で（処理Ｓ１２）かつ、Ｄ３の値が一時刻前の値、すなわちＦＦ３の初期状態の値に対して変化（＝６）があるため（処理Ｓ１３）、ｔｒｕｅ（＝１）になり（処理Ｓ１９）、処理Ｓ１６および処理Ｓ１７を経てＱｏｕｔからＱ３にメタステーブル状態の値（＝７）を出力する（処理Ｓ１８）。
【００７７】
そして時刻５でＣＬＫ２が立ち上がりエッジではない非アクティブ状態になるため（処理Ｓ１２）、Ｑ３として、メタステーブル状態フラグＭＦ２をｆａｌｓｅ（＝０）に変更し（処理Ｓ２３）、後述する理由から、時刻１の値（＝１）ではなく、内部配列要素で選択された任意時刻（＝時刻３）の値（＝６）を出力する（処理Ｓ２２）
すなわち、時刻４における順序回路ＦＦ２とＦＦ３は、ＣＬＫ２の立ち上がりエッジにより同一データ信号であるＦＦ１の出力Ｑ１の値を入力データＤ２、Ｄ３として取り込むが、それぞれ３時刻間の値として保持された内部配列要素から任意時刻で選択された値は、ＦＦ２においては時刻１の値（＝０）、ＦＦ３においては時刻３の値（＝６）のように異なる値であるため、ＦＦ２とＦＦ３の順序回路間で保持される値が異なる現象を起こしたことになる。
【００７８】
このことは、時刻４のタイミングでＦＦ２への入力データＤ２の信号伝播遅延とＦＦ３への入力データＤ３の信号伝播遅延での時間差をシミュレーションし、同じクロック信号でトリガされる同一データ信号が入力される順序回路間においてタイミング問題による不具合動作が起こることを示している。
【００７９】
また、ＦＦ３が通常値として選択したＤ３の値（＝６）は、順序回路ＦＦ１で発生したメタステーブル状態の値であるため、ＦＦ３には本来の期待される入力データ、すなわち時刻４における出力Ｑ１の値（＝１）と異なり、時刻５から時刻１２までこの非同期回路は不具合動作を起こしたことになり、時刻３のＣＬＫ１の変化と、時刻４のＣＬＫ２の変化はこの非同期回路において不具合動作が起こるタイミングであることを示し、従来技術の検証方法の動作も問題無く実現されている。
【００８０】
上述したメタステーブル状態に値は、任意の固定値であり、後述する第３の実施の形態（図６）のように固定値“Ｘ”でもよい。
【００８１】
実際には、データＤｉｎが取りうる範囲の値のうちの任意の値になるが、それには限定されず、また本発明の効果も変わらない。
【００８２】
例えば、ＦＦが１ｂｉｔの順序回路とすれば、取りうる値は０，１になるということであり、現実に実装するシミュレータの制限として２以上の値は定義できない場合が多い。ただし、１つの順序回路が４ｂｉｔのデータ長を処理する場合は、０〜１５の値を取ることになる。
【００８３】
上述したように、順序回路の動作として、クロック信号の１周期間の入力データ信号を保持し、１周期内の任意の１時刻の値を選択して出力することにより、同じクロック信号でトリガされる順序回路間に擬似的に入力データ信号の伝達遅延時間差によるタイミング問題を考慮した動作を行う。
【００８４】
また、従来例の動作として、アクティブエッジ検出時に入力データの値が、一時刻前の値に対して変化している場合、メタステーブル状態と定義し、メタステーブル状態の値を発生して出力し、次の一時刻後に前述の動作により入力データを出力して順序回路に対してクロック信号のアクティブエッジ毎に強制的にメタステーブル状態を一時刻間発生させるという動作を行う。
【００８５】
従って、この順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、同じクロック信号でトリガされる順序回路間において発生する、入力データ信号の伝達遅延時間差によるタイミング問題を含む回路構成に対しても、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更して動作を確認することで検証することなく、タイミングを考慮したシミュレーション同様に不具合動作を再現することにより検証が出来る。
【００８６】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証ＴＡＴの短縮という効果が得られる。
【００８７】
なお、上述した実施の形態では、クロック信号のアクティブエッジとして立ち上がり変化としているが、立ち下がりの変化の場合も同様である。
【００８８】
また、非同期回路の構成として、クロック信号のアクティブエッジが、立ち上がり変化のものと立ち下がり変化の順序回路が混在しても、上述した実施の形態と同様な非同期回路の検証の効果が得られる。
【００８９】
次に、本発明の第２の実施の形態を説明する。
【００９０】
この第２の実施の形態において、その基本的構成は第１の実施の形態と同様である。すなわち、図１に示す本発明の順序回路の検証フローチャートにおいて、メタステーブル状態の発生処理Ｓ１７におけるメタステーブル状態の発生についてさらに工夫したものである。
【００９１】
その構成を示した図５を参照すると、メタステーブル状態の発生処理Ｓ１７は、メタステーブル状態の値を一定の初期値による擬似乱数にて設定し、変数ｍｅｔａに保持する機能を追加したものである。
【００９２】
一定の初期値による擬似乱数は、一般的に乱数値が周期的なパターンを持つため、本発明の順序回路に用いると、メタステーブル状態の値は、検証対象である非同期回路動作、すなわち、適用すると、回路内の順序回路の個数や動作する順番が変わらない限り同じ値になる。
【００９３】
この第２の実施の形態による非同期回路の検証を実施した場合、対象となる非同期回路や動作のためのシミュレーションパターンが同じであれば、何度実行しても機能シミュレーション結果が同じになるため、再現性を必要とする検証作業において効果がある。
【００９４】
従って、前述の順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【００９５】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において発生する入力データ信号の伝達遅延時間差によるタイミング問題、すなわち、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【００９６】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証ＴＡＴの短縮という効果が得られるものである。
【００９７】
次に、本発明の第３の実施の形態を説明する。
【００９８】
上述した第２の実施の形態では、メタステーブル状態の値を乱数値にて設定することにより、メタステーブル状態の値が伝播することによる非同期回路の動作の不具合検証の網羅性を高める効果を得ているが、この値をユーザ任意の固定値とすることで、機能シュミレーション結果に非同期回路の動作不具合をマーキングすることも可能である。
【００９９】
そのための第３の実施の形態の構成を示した図５を参照すると、メタステーブル状態の発生処理Ｓ１７は、メタステーブル状態の値を、ユーザ指定の任意の固定値による擬似乱数にて設定し、変数ｍｅｔａに保持する機能を追加したものである。
【０１００】
つまり、メタステーブル状態の発生としてユーザ指定の任意の固定値を設定している。これにより対象の非同期回路内の順序回路に対して、メタステーブル状態が発生する時刻や発生した順序回路の特定が可能になり、非同期回路の動作不具合の作り込みの解析が容易に行える効果がある。
【０１０１】
この実施の形態においても、前述の順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【０１０２】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【０１０３】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証ＴＡＴの短縮という効果が得られるものである。
【０１０４】
次に、本発明の第４の実施の形態を説明する。
【０１０５】
この第４の実施の形態では、本発明の順序回路の検証方法を適用する非同期回路に対して、回路内の対象となる順序回路を選択する処理を追加したものである。すなわち、本発明の特徴としてクロック信号の１周期内のイベント時刻で発生する入力データ値を、内部配列要素に保持する機能を有するが、これにより、検証の対象となる非同期回路の規模が大きくなると、機能シミュレータの内部に保持する状態値が膨大になることが予想され、そのため機能シミュレーション速度の著しい低下やシミュレータ動作のためのリソース不足により実行不可能に陥る危険性が予測される。
【０１０６】
第４の実施の形態のフローチャートを示した図７を参照すると、処理の最初に新規に追加した処理であり、ユーザが指定したクロック信号でアクティブになる順序回路を全て抽出し、対象となる順序回路をリストアップする順序回路の抽出処理Ｓ４１と、ＦＦ［ｉ］をｉ＝０にクリアする処理Ｓ４２と、ＦＦ［ｉ］に対して図１の検証フローを実施する処理Ｓ４３と、ＦＦ［ｉ］をｉ＝ｉ＋１で１個ずつカウントアップし次のＦＦ［ｉ］に順次検証フローを実施し、ｉ＝ｋに達するまで繰り返えす処理Ｓ４５と、ｉ＝ｋになり、全イベントが終了するまで処理Ｓ４２から繰り返す処理Ｓ４６を有する。
【０１０７】
すなわち、本実施の形態の処理は、機能シミュレータの１イベント時刻毎に処理Ｓ４３〜処理Ｓ４５のループ処理にて、リストアップされた順序回路全てに対し図１の動作フローを行い、全ての順序回路の処理が完了したら次の１イベント時刻に移る。
【０１０８】
これにより、本発明の順序回路の適用をユーザ指定のクロック信号ラインのものに限定することが出来ので、本発明で生じる機能シミュレータの内部に保持する状態値を低減する効果が得られる。
【０１０９】
また、検証対象の非同期回路部分は、クロック信号ライン単位で容易にユーザ指定出来るため、本発明本来のテストベンチの記述や検証作業の単純化を損なうことがない。
【０１１０】
この実施の形態においても、前述の順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【０１１１】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【０１１２】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証ＴＡＴの短縮という効果が得られるものである。
【０１１３】
次に、本発明の第５の実施の形態を説明する。
【０１１４】
本発明の第５の実施の形態の構成例を示した図８を参照するとす。本実施の形態は、前述した第４の実施の形態にさらに回路内の対象となる順序回路を選択する処理として、階層名による処理Ｓ５１を追加した検証フローチャートである。
【０１１５】
処理Ｓ５１において、ユーザが指定した階層下にある順序回路を全て抽出し、対象となる順序回路をリストアップし、次に前述した第４の実施の形態で示した図７の処理Ｓ４１〜Ｓ４６を行う。
【０１１６】
この階層下の順序回路の指定方法は、その階層下に含まれる全ての順序回路を対象にする方法と、その階層下を除く全ての順序回路を対象にする方法をそれぞれ行うことで、適用する非同期回路の階層構造が複雑な場合でも、特定の階層のみの指定が出来るようになる。
【０１１７】
これにより、クロック信号で対象となる順序回路を指定しても、まだ対象となる順序回路の数が多い場合、適用する非同期回路の設計を階層構造化することで、検証範囲を階層単位で絞り込むことが出来るので、さらなる機能シミュレータの内部に保持する状態値の低減と、検証範囲を絞り込むことにより検証作業が容易になるという効果がある。
【０１１８】
この実施の形態においても、前述の順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【０１１９】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【０１２０】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証ＴＡＴの短縮という効果が得られるものである。
【０１２１】
【発明の効果】
上述したように、本発明の検証方法を適用することにより、機能シミュレーション時に、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【０１２２】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【０１２３】
したがって、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証ＴＡＴの短縮という効果が得られるものである。
【図面の簡単な説明】
【図１】本発明の第１の実施形態における順序回路の動作フローチャートである。
【図２】本実施形態を適用する一般的な機能シミュレータの構成図である。
【図３】本発明の動作説明のための非同期回路の回路図である。
【図４】本発明の動作説明のためのタイミングチャートである。
【図５】本発明の第２の実施形態におけるメタステーブル状態の発生フローチャートである。
【図６】本発明の第３の実施形態におけるメタステーブル状態の発生フローチャートである。
【図７】本発明の第４の実施形態における動作フローチャートである。
【図８】本発明の第５の実施形態における動作フローチャートである。
【図９】従来の順序回路の一例の動作フローチャートである。
【符号の説明】
ＡＬＵ１    加算器
ＦＦ１，ＦＦ２，ＦＦ３    内部配列要素
ＣＬＫ１，ＣＬＫ２    クロック信号
Ｄ１，Ｄ２，Ｄ３    入力データ
【図１】
0003759051.tif 000002
【図２】
0003759051.tif 000003
【図３】
0003759051.tif 000004
【図４】
0003759051.tif 000005
【図５】
0003759051.tif 000006
【図６】
0003759051.tif 000007
【図７】
0003759051.tif 000008
【図８】
0003759051.tif 000009
【図９】
0003759051.tif 000010