(57)【特許請求の範囲】
【請求項１】
コンピュータが、順序回路を含む非同期の論理回路による動作を検証する非同期回路の検証方法において、
前記順序回路のクロック信号のアクティブエッジを検出し、かつ、前記順序回路の入力データが前記クロック信号の一周期前から変化したことを検出したときに、その入力データを記憶手段に記憶させ、前記入力データとは異なる値をメタステーブル状態を示す値として発生させて前記順序回路の出力データとして出力させる処理と、前記処理の後であって前記クロック信号の一周期より短い一定期間の後、前記メタステーブル状態を示す値に代えて前記記憶手段に記憶された入力データを出力データとして出力させる処理とをコンピュータが実行することを特徴とする非同期回路の検証方法。
【請求項２】
コンピュータが、順序回路を含む非同期の論理回路による動作をハードウェア記述言語レベルで機能シミュレーションする非同期回路の検証方法であって、
前記順序回路のクロック信号のアクティブエッジを検出し、かつ、前記順序回路の入力データが前記クロック信号の一周期前から変化したことを検出したときに、その入力データを記憶手段に記憶させ、前記入力データとは異なる値をメタステーブル状態を示す値として発生させて前記順序回路の出力データとして出力させる処理と、前記処理の後であって前記クロック信号の一周期より短い一定期間の後、前記メタステーブル状態を示す値に代えて前記記憶手段に記憶された入力データを前記順序回路の出力として出力させる処理とをコンピュータが実行することを特徴とする非同期回路の検証方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、非同期で動作する電子回路を検証する方法に関し、特に、異なる周期のクロック信号によって複数の順序回路が動作する場合に、各順序回路の出力データが組み合わされて相互に別の順序回路の入力データとなる非同期回路の検証方法に関する。
【０００２】
【従来の技術】
ゲートアレイなどの実デバイスの機能を試験する場合に、同じ機種の実デバイスでも個々の特性が一般にばらついていた。このため、実デバイスの機能テスタでは、テスタ内部のＦＦ（フリップフロップ）が、前記特性のばらつきに伴って異なる動作をしてしまうことがあった。そこで、このテスタの誤動作を誘発させるために、わざと入力信号どうしのタイミングをずらすテスタ回路があった。
【０００３】
たとえば、特開平５−１８９５１７号公報に開示された従来例のテスタ回路がある。この従来例は、実デバイスの機能試験を前提としたテスタのシミュレーション回路であり、テスタのＦＦモデルにおけるセットアップおよびデータホールド特性を変化させ、実デバイスの出力特性のパラメータと比較する目的を有していた。このため、実デバイスからの入力信号とテスタの動作クロックとを別々の遅延素子を介してテスタのＦＦに導き入れた構成にしてある。
【０００４】
この構成によって、入力信号に対する動作クロックの同期タイミングを任意の時間だけ前後にずらし、実デバイスを対象としたテスタのデータホールド機能をシミュレートしていた。つまり、これは同期回路における誤動作を検証したものであった。ところが実際には、もともと異なる同期タイミングを有した非同期回路を対象とし、実用的な機能シミュレーションを行う場合が多かった。
【０００５】
一般に、非同期回路の検証方法としては、ゲートレベルのネットリストを用いた方法がある。この方法では、各クロック信号のタイミングを考慮したシミュレーションが行われ、これにより各順序回路のセットアップやホールドのタイミングが検証される。また、近年では、ＨＤＬなどのハードウェア記述言語が用いられ、電子回路の設計手法を機能設計から行えるようになった。
【０００６】
このため、非同期回路を検証する場合にも、言語レベルにおける機能シミュレーションを行う必要がある。この要請に応える非同期回路の検証方法としては、その機能シミュレーション上で複数のクロック信号の周期や位相の条件を様々に変更しながらシミュレーションを行う方法がある。これによれば、検証対象となる電子回路の動作において不具合の発生確率を意図的に高めることができた。
【０００７】
図４は、一従来例による非同期回路の検証方法のフローチャートである。
この従来例は、順序回路におけるクロック信号のアクティブエッジ検出処理Ｂ１、この順序回路への入力データの保持処理Ｓ７、これによる保持データの出力処理Ｓ８を行っている。
【０００８】
【発明が解決しようとする課題】
しかし、このような従来例による非同期回路の検証方法を用い、言語レベルで各順序回路の機能シミュレーションを行う場合、次のような技術的な課題を解決しておく必要があった。
【０００９】
一般に、順序回路には、その出力データの論理が定まらないメタステーブル状態が生じてしまうことがある。ところが、前述したフローチャートによれば、このような状態を一定期間にわたって保ち続ける処理が設けられていなかった。このため、次段に構成した各順序回路ごとに、異なるクロック信号の周期と位相の条件を様々に組み合せて用い、非同期回路に生じるかもしれない動作の不具合をシミュレーションさせていた。
【００１０】
したがって、従来の非同期回路の検証方法では、クロック信号に関する条件を必然的に多く組み合せた言語レベルでの機能シミュレーションが必要であった。その結果、順序回路個々の動作のシミュレーションに必要なテストベンチの記述が煩雑になり、検証方法による機能シミュレーションの全体が複雑化してしまう傾向があった。
【００１１】
さらに、このようにしてクロック信号に関する多様な条件を組み合せてシミュレーションを行うと、各順序回路で動作ごとのシミュレーション時間が長期化してしまう。このため、機能シミュレーション全体で検証ＴＡＴが増大することにもなり、これら種々の技術的な課題を一括して解決しておくことがきわめて重要であった。
【００１２】
したがって、本発明の目的は、機能シミュレーションにおける検証動作を言語レベルで単純化させるとともに、その検証ＴＡＴを短縮化させた非同期回路の検証方法を提供することにある。
【００１３】
【課題を解決するための手段】
上記目的を達成するための本発明の請求項１に係る非同期回路の検証方法は、コンピュータが、順序回路を含む非同期の論理回路による動作を検証する非同期回路の検証方法において、前記順序回路のクロック信号のアクティブエッジを検出し、かつ、前記順序回路の入力データが前記クロック信号の一周期前から変化したことを検出したときに、その入力データを記憶手段に記憶させ、前記入力データとは異なる値をメタステーブル状態を示す値として発生させて前記順序回路の出力データとして出力させる処理と、前記処理の後であって前記クロック信号の一周期より短い一定期間の後、前記メタステーブル状態を示す値に代えて前記記憶手段に記憶された入力データを出力データとして出力させる処理とをコンピュータが実行する非同期回路の検証方法である。
【００１６】
本発明の請求項２に係る非同期回路の検証方法は、コンピュータが、順序回路を含む非同期の論理回路による動作をハードウェア記述言語レベルで機能シミュレーションする非同期回路の検証方法であって、前記順序回路のクロック信号のアクティブエッジを検出し、かつ、前記順序回路の入力データが前記クロック信号の一周期前から変化したことを検出したときに、その入力データを記憶手段に記憶させ、前記入力データとは異なる値をメタステーブル状態を示す値として発生させて前記順序回路の出力データとして出力させる処理と、前記処理の後であって前記クロック信号の一周期より短い一定期間の後、前記メタステーブル状態を示す値に代えて前記記憶手段に記憶された入力データを前記順序回路の出力として出力させる処理とをコンピュータが実行する方法としてある。
【００２０】
【発明の実施の形態】
以下、本発明に係る実施の形態について、図面を参照しながら詳細に説明する。なお、前述した従来例と同じ部分については、同一の符号を付して詳しい説明を省略してある。
【００２１】
図１は、本発明の一実施形態に係る非同期回路の検証方法を順序回路を含む非同期回路に適用した一構成例を図示したフローチャートである。
この実施形態には、はじめの処理の後で、順序回路に供給したクロック信号のアクティブエッジを検出する処理Ｂ１、このアクティブエッジで順序回路への入力データの値が変化したことを検出する処理Ｂ２、順序回路がメタステーブル状態であるか否かを検出する処理Ｂ３、メタステーブル状態でなければフラグをtrueに設定する処理Ｓ５、メタステーブル状態であればフラグをfalseに設定する処理Ｓ１を設けてある。
【００２２】
さらに、これらフラグを設定する各処理Ｓ１、Ｓ５に続けて、入力データの値を変数ｄに保持させる処理Ｓ２、また、順序回路のメタステーブル状態の所定値を発生させて変数metaに保持させる処理Ｓ３、保持した所定値を変数Ｑoutに移す処理Ｓ４を有している。
【００２３】
また、入力データの変化を検出する処理Ｂ２で変化を検出しなかったときに、順序回路がメタステーブル状態にならないためフラグをfalseに設定する処理Ｓ６、前述した処理Ｓ２と同様に入力データの値をｄに保持させる処理Ｓ７を有している。
また、クロック信号のアクティブエッジを検出する処理Ｂ１でアクティブエッジを検出しないときに、前述した処理Ｓ６と同様にフラグをfalseに設定する処理Ｓ９を有している。
さらに、これらの処理Ｓ７、Ｓ９に続けて、保持しておいた保持データの値をｄからＱoutに移す処理Ｓ８を有している。
なお、初めの処理は開始処理を、また、終りの処理は終了処理である。
【００２４】
図２は、図１に示す検証方法を適用する非同期回路の一例の回路図であり、それぞれの順序回路などにおける動作を図２を参照しながら説明する。
この非同期回路は、加算器ＡＬＵ１および前後段の順序回路ＦＦ１、ＦＦ２を順に配置して構成され、順序回路ＦＦ１からの出力データＱ１が、その値を加算器ＡＬＵ１で＋１されてから順序回路ＦＦ１への入力データＤ１として入力される。また、順序回路ＦＦ１の出力データＱ１が、順序回路ＦＦ２への入力データＤ２として入力される。
【００２５】
順序回路ＦＦ１には、そのメタステーブル状態を示すフラグＭＦ１が、また、順序回路ＦＦ２には、その別のメタステーブル状態を示す別のフラグＭＦ２がそれぞれ併設されている。このとき、周期が異なる二つのクロック信号ＣＬＫ１、ＣＬＫ２のうち、順序回路ＦＦ１にはクロック信号ＣＬＫ１が、また、順序回路ＦＦ２には別のクロック信号ＣＬＫ２が供給される。
【００２６】
〔実施例による動作の説明〕
以下、本実施形態による実施例の動作の一例について説明する。まず、図１および２を参照しながら非同期回路の検証方法について述べる。
この場合に、クロック信号ＣＬＫ１、入力データＤ１により順序回路ＦＦ１が動作を行って出力データＱ１を出力し、また、クロック信号ＣＬＫ２、入力データＤ２により順序回路ＦＦ２が動作を行って出力データＱ２を出力する。
【００２７】
まず、前記した処理Ｂ１において、クロック信号ＣＬＫ１、ＣＬＫ２のエッジを検出する。このエッジが検出された場合（Ｙｅｓ）には、処理Ｂ２に移るが、これが検出されない場合（Ｎｏ）には、フラグＭＦ１、ＭＦ２を処理Ｓ９でfalseに変更する。
また、エッジが検出された場合には、処理Ｂ２において、入力データＤ１、Ｄ２の値（Ｄin）が変化したか否かを検出する。この値（Ｄin）の変化が検出された場合（Ｙｅｓ）には処理Ｂ３に移るが、これが検出されない場合（Ｎｏ）には、フラグＭＦ１、ＭＦ２を処理Ｓ６でfalseに変更する。
【００２８】
このように、各処理Ｓ９、Ｓ６では、フラグＭＦ１、ＭＦ２の値をメタステーブル状態でない状態（false）に設定する。続いて、処理Ｓ７において、値（Ｄin）を変数（ｄ）として保持しておく。そして、処理Ｓ８において、この変数（ｄ）を変数（Ｑout）に移して出力データＱ１、Ｑ２の値とし、順序回路ＦＦ１、ＦＦ２から出力する。
【００２９】
これらの一連の処理Ｓ６、Ｓ７、Ｓ８によって、クロック信号ＣＬＫ１、ＣＬＫ２がアクティブであって値（Ｄin）が一周期前から変化していない場合の動作を行える。また処理Ｓ９、Ｓ８によって、非アクティブな場合の動作を行える。これにより、順序回路ＦＦ１、ＦＦ２がメタステーブル状態の所定値を出力した後で、続く一周期後の出力動作において保持データを出力することができる。
【００３０】
処理Ｂ２で入力データＤ１、Ｄ２の変化したことを検出した場合、処理Ｂ３においてフラグＭＦ１、ＭＦ２の値をチェックする。そして、フラグＭＦ１、ＭＦ２がtrueになっていれば処理Ｓ１でfalseに変更し、処理Ｓ２において入力データＤ１、Ｄ２を保持した後で、メタステーブル状態を処理Ｓ３で発生させる。最後に、処理Ｓ４においてメタステーブル状態の所定値を出力データＱ１、Ｑ２の値とし、順序回路ＦＦ１、ＦＦ２から出力する。
また、処理Ｂ３でフラグＭＦ１、ＭＦ２がfalseになっていれば、処理Ｓ５でtrueに変更した後に、前述した処理Ｓ２、Ｓ３、Ｓ４を順に行う。
【００３１】
これらの一連の処理Ｓ２、Ｓ３、Ｓ４によって、本発明の特徴であるクロック信号ＣＬＫ１、ＣＬＫ２がアクティブであって入力データＤ１、Ｄ２が一周期前とは変化していた場合に、メタステーブル状態を出力させることができる。
つまり、一つのクロック信号（たとえばＣＬＫ１）のアクティブエッジから、前述した機能上のアルゴリズムによって、入力データ（たとえばＤ１）の変化に伴うメタステーブル状態を言語レベルで定義できる。
【００３２】
さらに、２系統のクロック信号ＣＬＫ１、ＣＬＫ２どうしに位相差が生じると、やはりアルゴリズムに伴って、基本となる１サイクルタイムの時間内で連鎖的に誤動作を引き起こさせる。これらアルゴリズムの各処理により、それぞれのテストベンチの記述や機能シミュレーション全体を複雑化させることなく、非同期回路の機能を多面的にシミュレーションして短時間のうちに検証することができる。
【００３３】
たとえば、処理Ｓ２において、変数（ｄ）が取り得るランダムな値を発生させ、変数（ｄ）に保持される値（Ｄｉｎ）と比較し、この値（Ｄｉｎ）とは異なる値を変数（ｍｅｔａ）に保持させてメタステーブル状態の所定値とすることにより、非同期回路のメタステーブル状態を発生し、その誤動作を検証できるようにする。
【００３４】
図３は、図２に示す非同期回路による動作のタイミングチャートである。
図１〜３を参照しながら、本実施形態による動作のタイミングについて説明する。以下、図２に示す順序回路ＦＦ１では、クロック信号ＣＬＫ１が３サイクルごとに変化し、順序回路ＦＦ２では、クロック信号ＣＬＫ２が４サイクルごとに変化するものとする。
【００３５】
順序回路ＦＦ１への入力データＤ１の値（Ｄin）は、初期状態のときの順序回路ＦＦ１からの出力データＱ１の値（Ｑout）に対し、加算器ＡＬＵ１で＋１した値（＝１）である。第３周期でのクロック信号ＣＬＫ１の立ち上がりエッジで、入力データＤ１が順序回路ＦＦ１に入力される。この値（Ｄin）は、続く一周期である第４周期において出力データＱ１の値（Ｑout）となり値（＝１）が出力される。
【００３６】
続いて、第３周期において、クロック信号ＣＬＫ１がアクティブな状態のときに、値（Ｄin）が一周期前の値から変化している。このため、フラグＭＦ１の値がｔrue（＝１）になり、出力データＱ１の値（Ｑout）がメタステーブル状態の所定値（＝６）として出力される。また、第４周期では、クロック信号ＣＬＫ１が非アクティブな状態になるため、その１周期前に値（Ｄin）として入力し保持した値、すなわち第３周期における入力データＤ１の値（＝１）が出力データＱ１として出力される。
【００３７】
同様に、第９、第１０、第１５、第１６、および第２１、第２２の各周期において、１サイクルの期間内でフラグＭＦ１の値がtrue（セット）になる。そして、値Ｑoutとしてメタステーブル状態の各所定値を出力した後で、その１周期前に値（Ｄin）として入力し保持した各値が出力される。
【００３８】
また、順序回路ＦＦ２では、その入力データＤ２の値（Ｄin）として順序回路ＦＦ１からの出力データＱ１の値（Ｄout）が入力される。そして、第４周期でのクロック信号ＣＬＫ２の立ち上がりエッジにおいて、入力データＤ２の値（Ｄin）として値（＝６）が取り込まれた後で、続く一周期である第５周期において、出力データＱ２の値（Ｑout）となり値（＝６）が出力される。
【００３９】
このとき、順序回路ＦＦ１と同様に、第４周期においてクロック信号ＣＬＫ２がアクティブなときに、入力データＤ２の値（Ｄin）が一周期前の値、すなわち順序回路ＦＦ２が初期状態のときの値から変化している。このため、順序回路ＦＦ２のフラグＭＦ２の値がｔrueになり、メタステーブル状態の所定値（＝３）が出力データＱ２の値（Ｑout）として出力される。また、第５周期において、クロック信号ＣＬＫ２が非アクティブになるため、その１周期前に値（Ｄin）として保持した値、すなわち第４周期における値（＝６）が値Ｑoutとして出力される。
【００４０】
同様にして、第１２、第１３、および第２０、第２１の各周期において、１サイクル内にフラグＭＦ２の値がｔrueになり、メタステーブル状態の各所定値を値Ｑoutとして出力する。その後、その１周期前に値（Ｄin）として保持した各値が出力される。
【００４１】
このとき、第４周期における順序回路ＦＦ２の入力データＤ２の値（Ｄin）として取り込まれた値（＝６）は、順序回路ＦＦ１で発生させたメタステーブル状態の値である。このため、順序回路ＦＦ２には、本来の期待される入力データＤ２の値（Ｄin）、すなわち第４周期における順序回路ＦＦ１の出力データＱ１の値（＝１）と異なる値が入力される。したがって、第５周期から第１２周期までは、この非同期回路の動作が不具合を起こすことになる。
【００４２】
このことから、第３周期におけるクロック信号ＣＬＫ１の変化と、第４周期におけるクロック信号ＣＬＫ２の変化とが、この非同期回路の動作に対して不具合を起こすタイミングとなったことが分かる。
【００４３】
なお、上記実施例では、クロック信号のアクティブエッジを立ち上がりの変化としたが、この他にも立ち下がりの変化とした場合にも同様である。また、非同期回路の構成として、クロック信号のアクティブエッジが立ち上がり変化の順序回路と立ち下がり変化のものとを混在させても同様な効果が得られる。
【００４４】
【発明の効果】
以上に述べたように、本発明の効果は、クロック信号のアクティブエッジごとに強制的なメタステーブル状態を発生させ、この状態を一周期の間だけ論理回路に保ち続けさせるアルゴリズムが実現できる。このため、クロック信号の多様な条件を記述して動作確認の検証をする必要がない。また、その動作タイミングを考慮した従来の機能シミュレーションと同様に、論理回路における動作の不具合を再現できる。したがって、言語レベルでの機能シミュレーションに必要なテストベンチの記述や検証作業を単純化でき、また、その検証ＴＡＴを結果的に短縮化させることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る非同期回路の検証方法の一構成例を図示したフローチャート。
【図２】図１に示す検証方法を適用させた非同期回路の一例の回路図。
【図３】図２に示す非同期回路における動作の一例のタイミングチャート。
【図４】一従来例による非同期回路の検証方法のフローチャート。
【符号の説明】
ＡＬＵ１  加算器
Ｂ１〜Ｂ３、Ｓ１〜Ｓ９  処理
ＣＬＫ１、ＣＬＫ２  クロック信号
Ｄ１、Ｄ２  入力データ
ＦＦ１、ＦＦ２  順序回路
Ｑ１、Ｑ２  出力データ
【図１】
0003953250.tif 000002
【図２】
0003953250.tif 000003
【図３】
0003953250.tif 000004
【図４】
0003953250.tif 000005