(57)【要約】【課題】  非同期回路の動作検証を精度良く効率的に行う。【解決手段】  非同期抽出プログラム１１により、ＲＴＬ１からすべての非同期箇所を抽出した非同期リスト１２を生成し、制御タスク挿入部２０により、クロック・遅延制御部４０を制御するコントロールカード２１を生成するとともにＲＴＬ１に制御タスクを挿入する。制御タスクが挿入されたＲＴＬ３１についてのシミュレータ３３による論理シミュレーション段階においては、シミュレータ３３にクロック・遅延制御部４０を連携させ、ＲＴＬ３１の制御タスクに対し変調クロックや遅延信号を挿入する。これにより、論理合成前のＲＴＬ３１の論理シミュレーション段階で各種遅延状態を作り出し、非同期回路の動作検証を精度良く効率的に行うことができる。【選択図】  図１
2005284426.tif 000002
【特許請求の範囲】
【請求項１】
非同期回路の動作を検証する非同期回路検証方法において、
レジスタ・トランスファ・レベルの論理回路に存在する非同期箇所を抽出し、抽出された前記非同期箇所で発生する遅延を考慮した前記論理回路のシミュレーションにより前記論理回路の動作を検証することを特徴とする非同期回路検証方法。
【請求項２】
前記遅延は、パラメータを用いて前記論理回路内のクロックを変調させた変調クロックまたは前記論理回路内の信号の伝播を遅らせる信号遅延を前記論理回路に挿入することによって発生させることを特徴とする請求項１記載の非同期回路検証方法。
【請求項３】
前記論理回路に前記変調クロックを挿入する際には、前記論理回路のクロックパスにクロック変調タスクを挿入し、前記クロック変調タスクに対して前記変調クロックを挿入することを特徴とする請求項２記載の非同期回路検証方法。
【請求項４】
前記論理回路に前記変調クロックを挿入する際には、前記パラメータを用い、変調を与える変調対象クロックの１周期ごとに前記変調クロックを生成し、生成した前記変調クロックを前記論理回路に挿入することを特徴とする請求項２記載の非同期回路検証方法。
【請求項５】
前記論理回路に前記信号遅延を挿入する際には、前記論理回路内に遅延制御タスクを挿入し、前記遅延制御タスクに対して前記信号遅延を挿入することを特徴とする請求項２記載の非同期回路検証方法。
【請求項６】
前記論理回路に前記信号遅延を挿入する際には、前記信号遅延の遅延量をシミュレーションごとに計算し、シミュレーション後に一の遅延量が指定されたときには前記一の遅延量のシミュレーションを再現することを特徴とする請求項２記載の非同期回路検証方法。
【請求項７】
コンピュータに非同期回路の動作を検証する処理を実行させる非同期回路検証プログラムにおいて、
コンピュータを、
レジスタ・トランスファ・レベルの論理回路に存在する非同期箇所を抽出する抽出手段、
前記抽出手段によって抽出された前記非同期箇所で発生する遅延を考慮した前記論理回路のシミュレーションにより前記論理回路の動作を検証する検証手段、
として機能させることを特徴とする非同期回路検証プログラム。
【請求項８】
前記検証手段は、パラメータを用いて前記論理回路内のクロックを変調させた変調クロックまたは前記論理回路内の信号の伝播を遅らせる信号遅延を前記論理回路に挿入することによって前記遅延を発生させた前記論理回路のシミュレーションにより前記論理回路の動作を検証することを特徴とする請求項７記載の非同期回路検証プログラム。
【請求項９】
コンピュータに非同期回路の動作を検証する処理を実行させる非同期回路検証プログラムにおいて、
コンピュータを、
レジスタ・トランスファ・レベルの論理回路に存在する非同期箇所に制御タスクを挿入する挿入手段、
前記制御タスクが挿入された前記論理回路のシミュレーション段階で前記制御タスクを用いて前記論理回路に遅延を発生させる遅延発生手段、
として機能させることを特徴とする非同期回路検証プログラム。
【請求項１０】
前記遅延発生手段は、パラメータを用いて前記論理回路内のクロックを変調させた変調クロックまたは前記論理回路内の信号の伝播を遅らせる信号遅延を前記制御タスクに挿入することによって前記遅延を発生させることを特徴とする請求項９記載の非同期回路検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は非同期回路検証方法および非同期回路検証プログラムに関し、特に、非同期箇所を含んだ論理回路の動作をシミュレーションによって検証する非同期回路検証方法および非同期回路検証プログラムに関する。
【背景技術】
【０００２】
システムＬＳＩ（Large Scale Integrated circuit）等の回路設計では、回路の動作記述にハードウェア記述言語（Hardware Description Language，ＨＤＬ）が用いられる。通常は、その動作記述から回路の論理機能がレジスタ・トランスファ・レベル（Resistor Transfer Level，ＲＴＬ）で記述され、その後、これとテストベンチを用いた論理シミュレーションによりその動作が検証される。
【０００３】
図３０は従来の回路設計フローの一例である。
従来の回路設計では、まず、論理設計段階で回路の論理機能がＲＴＬで記述され（ステップＳ１００）、ＲＴＬの論理シミュレーションが行われる（ステップＳ１０１）。その後、論理合成が行われ（ステップＳ１０２）、仮配線、ゲートライブラリの読込み、配線遅延を与える遅延情報ファイル（ＳＤＦ）の作成が行われ、仮配線によるゲートレベルの論理シミュレーションが行われる（ステップＳ１０３）。次いで、レイアウト（ステップＳ１０４）、スタティックタイミングアナライザ（ＳＴＡ）によるタイミング検証（ステップＳ１０５）を経て、試作品が作成され（ステップＳ１０６）、実機評価が行われる（ステップＳ１０７）。
【０００４】
ステップＳ１０３のゲートレベル論理シミュレーション、ステップＳ１０５のＳＴＡタイミング検証、ステップＳ１０７の実機評価において期待された結果が得られない場合には、ステップＳ１００に戻って論理設計データを修正してＲＴＬを作成した後、以降の処理が再度行われる。あるいは、ステップＳ１０７の実機評価で発生した問題に応じ、ステップＳ１０２の論理合成、ステップＳ１０３のゲートレベル論理シミュレーション、ステップＳ１０４のレイアウト、ステップＳ１０５のＳＴＡタイミング検証に戻り、以降の処理が再度行われる。また、ステップＳ１００のＲＴＬ作成後は適当な段階で形式検証ツールを用いた形式検証が行われ（ステップＳ１０８）、ここで期待した結果が得られなければステップＳ１００に戻ってＲＴＬを再作成する。
【０００５】
ところで、多くの回路には入力信号に対してクロックが同期する箇所やクロックが異なる非同期箇所が存在し、このような非同期箇所を含んだ論理回路（「非同期回路」という。）は、近年の素子の高機能化、高性能化に伴い、その重要性がいっそう高まってきている。
【０００６】
図３１は非同期回路の基本構成例である。
例えば、非同期回路２００を、クロックＣＬＫＭの１段のフリップフロップ（ＦＦ）回路（送信側ＦＦ回路）２０１の出力をＣＬＫＭと異なるＣＬＫＮの２段のＦＦ回路（受信側ＦＦ回路）２０２ａ，２０２ｂで受信する、いわゆるダブルシンクロナイザで構成する。ところが、このような非同期回路２００では、次に述べるようなメタステーブル（meta-stable）、レーシング、オーバーディレイといった非同期特有の現象が起こる場合がある。
【０００７】
図３２はメタステーブルの説明図、図３３はレーシングの説明図、図３４はオーバーディレイの説明図である。
メタステーブルとは、ビット幅を持つデータパス信号で起きる現象であり、一定期間内に不定値が発生してしまう現象である。例えば、図３２に示すように、ＣＬＫＭの送信側ＦＦ回路２０１の信号にメタステーブルが発生すると、ＣＬＫＮの受信側ＦＦ回路２０２ａ，２０２ｂがメタステーブルを受信してその出力信号に不定値が入り込み、その後段以降の処理に障害が発生する場合がある。
【０００８】
また、レーシングとは、１周期早く信号を受信してしまう現象である。例えば、図３３に示すように、送信側ＦＦ回路２０１の信号を受信する受信側ＦＦ回路２０２ａ，２０２ｂがその信号を本来受信するタイミングよりもＣＬＫＮの１周期分早いタイミングで受信してしまうような場合である。
【０００９】
それに対し、オーバーディレイとは、１周期遅く信号を受信してしまう現象である。例えば、図３４に示すように、送信側ＦＦ回路２０１に大きな遅延が発生することにより、受信側ＦＦ回路２０２ａ，２０２ｂでその信号を本来受信するタイミングよりもＣＬＫＮの１周期分遅いタイミングで受信してしまうような場合である。
【００１０】
なお、これらのメタステーブル、レーシング、オーバーディレイといった現象自体は非同期回路の障害ではない。これらの現象が起きても他の回路部分でそれをカバーするような回路構成になっていれば障害の発生は回避することができる。例えば、メタステーブルは最大でクロックの１周期分発生するので、非同期回路の後段の回路においてその非同期回路から受信した信号のうち最初の１周期分は取り込まないような構成とすればよい。
【００１１】
図３５および図３６は非同期回路の別の構成例である。
まず、図３５に示す非同期回路３００は、ＣＬＫＭの２つの送信側ＦＦ回路３０１ａ，３０１ｂの出力側に組合せ論理回路３０２が設けられており、この組合せ論理回路３０２の出力をＣＬＫＮの１段の受信側ＦＦ回路３０３で受信する構成を有している。
【００１２】
しかし、この非同期回路３００のような構成の場合、ハザードや予期せぬ遅延が発生したり、受信側ＦＦ回路３０３が１段であるため特にクロックエッジが近いときには信号値が確定せずに不定値を出力したりして、上記のような現象がより起こり易くなる。
【００１３】
また、図３６に示す非同期回路４００は、図３１の非同期回路２００と同様、ＣＬＫＭの送信側ＦＦ回路４１１および送信側ＦＦ回路４２１の出力を、ＣＬＫＮの２段の受信側ＦＦ回路４１２ａ，４１２ｂおよび受信側ＦＦ回路４２２ａ，４２２ｂでそれぞれ受信する構成を有している。そして、これら２組の非同期回路４１０，４２０の出力信号が最後に組合せ論理回路４３０で合流するようになっている。
【００１４】
この非同期回路４００のような構成の場合、各非同期回路４１０，４２０において上記のような現象が起こる可能性がある。また、たとえそのような現象が起こって各非同期回路４１０，４２０で障害が発生しなかったとしても、その後段の組合せ論理回路４３０において初めて障害が発生する場合もある。
【００１５】
図３７は非同期回路の障害発生例の説明図である。
例えば、図３６に示した非同期回路４００において、一方の受信側ＦＦ回路４１２ａの入力信号（I）にレーシングが発生しており、さらに、もう一方の受信側ＦＦ回路４２２ａの入力信号（II）にオーバーディレイが発生しているような場合を想定する。
【００１６】
もしこのような現象が発生しなければ、例えば、一方の受信側ＦＦ回路４１２ｂからの出力信号（III）が、もう一方の受信側ＦＦ回路４２２ｂからの出力信号（IV）によってマスクされ、組合せ論理回路４３０にはマスクされた制御信号が入力されるようになる（図３７上図）。
【００１７】
ところが、入力信号（I），（II）にそれぞれレーシング、オーバーディレイが発生していると、出力信号（III），（IV）がその影響を受け、本来マスクされるべき制御信号が組合せ論理回路４３０に入力されてしまうようになる（図３７下図）。このとき、組合せ論理回路４３０でサイクルマージンを取っていたとしても、このレーシングとオーバーディレイでマージンを使い果たしてしまえば障害が発生することになる。
【００１８】
また、同じく図３６に示した非同期回路４００において、出力信号（IV）が多ビットの信号となる場合を想定する。例えば、入力信号（I）はそのデータのイネーブル信号で十分な時間をとって発生させていたが出力信号（III）にレーシングが発生して組合せ論理回路４３０でメタステーブルの信号が受信され、さらに、多ビットの入力信号（II）にメタステーブルが発生してその影響を受けた出力信号（IV）が組合せ論理回路４３０に入力されるような場合には、障害が発生することになる。
【００１９】
以上述べたような障害が発生し得る非同期回路について、これまでの動作検証は、通常、ＲＴＬの論理シミュレーション段階やゲートレベルの論理シミュレーション段階あるいはＳＴＡタイミング検証段階など、回路設計時の適当なプロセスにおいて行われてきた。
【００２０】
しかし、ＲＴＬの論理シミュレーション段階における非同期回路の動作検証の場合、２段ラッチなどによる構造的検証は可能であるが、ＲＴＬには元々時間的概念がないため、複数信号間の遅延差によって発生するメタステーブルを考慮したような機能的検証は非常に難しいものであった。例えば、従来のＲＴＬの論理シミュレーションでは、ＤＡＴＡ［３１：０］と記述されたような３２ビットデータの各ビット間には遅延差がないものとして論理シミュレーションが行われていた。つまり、本来ＤＡＴＡ［３１：０］の値が変化する途中に発生し得るメタステーブルがないものとして論理シミュレーションが行われていた。
【００２１】
一方、ゲートレベルの論理シミュレーション段階における非同期回路の動作検証の場合、例えばＤＡＴＡ［３１：０］をＤＡＴＡ［３１］，ＤＡＴＡ［３０］，・・・，ＤＡＴＡ［０］のように分割し、ＳＤＦをバックアノテーションするため、ビット間に遅延差は生じる。しかし、その遅延差は一般的に非常に小さい値になる。つまり、メタステーブルが発生している時間が非常に短く、それを検出できなければ回路が有する問題点を発見することができない。
【００２２】
ここでは１つのデータパス信号を例にしたが、データパス信号とこれを制御する信号の間の関係や、２ビット以上の相互に関係のある信号については同様のことがいえる。
また、従来、非同期回路の動作検証に関しては、ＲＴＬから非同期箇所を抽出する方法（例えば特許文献１参照）、ＲＴＬの非同期箇所の後段にメタステーブルを発生させて以降の回路動作を検証する方法なども提案されている（例えば特許文献２，３参照）。
【特許文献１】特開２００３−１０８６１９号公報
【特許文献２】特開２００３−２３３６３８号公報
【特許文献３】特開２００１−２２９２１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２３】
通常、回路設計者は、送信側回路から受信側回路にデータパス信号が非同期に受け渡される場合に、送信側回路で発生したメタステーブルが受信側回路のクロックによってサンプリングされるときのことを考慮して論理設計を行う。しかし、前述のように、ＲＴＬの論理シミュレーション自体では、複数信号間の遅延差によって発生するメタステーブルを考慮することができず、ＲＴＬの論理シミュレーション段階で信号伝播のタイミングを十分に考慮した動作検証を行うことはこれまでできなかった。
【００２４】
また、ゲートレベルの論理シミュレーションでは、複数信号間の遅延差は生じるものの、メタステーブルによる不定値の存在する時間が極めて短く、その不定値のクロックによるサンプリングは稀にしか起きず偶然に頼るところが大きい。そのため、非同期回路に潜む問題点を見過ごしてしまう可能性が非常に高い。さらに、ゲートレベルの論理シミュレーションに要する時間が長いため、多数のテストベクタを実行することが難しく、限られた開発・製造期間内では十分な動作検証が行えないこともある。そのため、無作為抽出した試作品の実機評価を行い、評価を行った範囲内で非同期回路に障害が発生しないことを最終的に確認しているのが現状である。
【００２５】
ＳＴＡタイミング検証によって非同期回路の動作検証を行おうとする場合には、タイミング検証前に論理合成が必要になる。また、たとえＳＴＡタイミング検証時に問題点が見つかったとしても、論理合成されたネットリストからＲＴＬ上の問題箇所の特定や障害の再現を行うのは難しい。
【００２６】
ＳＴＡタイミング検証にはこのほかにもゲートライブラリやＳＤＦが必要になる、シミュレーション速度が遅い（ＲＴＬの１／１００以下程度）、ＲＴＬ内の論理に対して遅延制御が行えない、複数段のゲーテッドクロックに対応できない、ゲート遅延や配線遅延を考慮したレイアウトが必要になる、といったように、多大な労力と時間が費やされる。
【００２７】
この段階で仮にレイアウトが変更されると、ＳＴＡタイミング検証あるいは論理シミュレーションの結果が以前のものと変わってくる場合があるので、それによって非同期回路に潜む問題点を見過ごしてしまう危険性が高くなってしまう。また、ここで問題点が発見されれば再びレイアウトの変更が必要になってくる。
【００２８】
さらに、このようなＳＴＡタイミング検証では、タイミングをずらしていく際、セットアップ（setup）エラーやホールド（hold）エラーが発生してしまうことが多い。これらのエラーはいずれも論理のエラーではなくタイミングのエラーであり、これらのタイミングエラーによって論理エラーが隠されてしまう場合もある。本来ＳＴＡタイミング検証は、タイミングが適切か否かを検証するものであって、ＲＴＬに存在する論理に潜在的な問題点がないかを検証する論理検証ではなく、それのみでは非同期回路の動作を十分に検証することはできない。
【００２９】
また、以上述べてきたような検証方法を用いて非同期回路の動作検証を行った場合、回路内に多数の非同期箇所が存在することで、それまで問題がないとされていた回路にも問題が発生するといったことも起こり得る。
【００３０】
なお、試作品の実機評価では、その動作回数を多くすることで非同期回路内の潜在的な問題点を発見する確率を高める試みがなされている。しかし、実際に問題点が見つかったとしてもその問題箇所の特定が難しいなどその解析に要する労力や時間が多大であり、また、それで問題点がすべて抽出されたという保証もない。そして、最終的には試作品の作り直しも必要になってくる。
【００３１】
また、形式検証では、形式的に非同期箇所で正しい動作が行われているかの確認を行えるツールは存在するが、複数ビットのそれぞれが連続して異なるクロックでサンプリングされた場合などに正しい動作が行われているかといったことは検証することができない。
【００３２】
図３８は従来提案されている非同期回路の検証方法の説明図である。
従来提案されている非同期回路の検証方法として、この図３８に示すように、ＣＬＫＭの送信側ＦＦ回路５０１とＣＬＫＮの受信側ＦＦ回路５０２を有する非同期回路のその受信側ＦＦ回路５０２の後段にメタステーブルを強制的に発生させるものがある。これにより、そのメタステーブルが以降の他の回路部分に伝播しても障害が発生しないことを検証しようとするものである。
【００３３】
しかしながら、この検証方法の場合、非同期箇所が多数存在する場合には、一の非同期箇所と他の非同期箇所との間の干渉については十分に検証が行えない可能性がある。また、この方法では、レーシングやオーバーディレイを意図的に発生させることはできない。
【００３４】
さらに、受信側が２段のＦＦ回路になっているような回路構成を有する非同期回路の場合には、発生させたメタステーブルが途中で消滅してしまう可能もある。これは、メタステーブルが最大でも１周期しか発生しないため、１段目のＦＦ回路の出力後に１周期未満のメタステーブルを発生させても、２段目のＦＦ回路がそれを受信するまでメタステーブルが残らない可能性があるためである。
【００３５】
このように、これまでの非同期回路の検証方法では、今後ますます重要性を増し、複雑化する可能性のある非同期回路の動作を十分に検証することができないのが現状である。また、従来から行われているＳＴＡタイミング検証によっても非同期回路の十分な動作検証は難しい。そして、このように非同期回路の適切な動作検証の方法がないことで、多大な労力と時間を伴う複数のプロセスが何度も繰り返され、回路設計者は大きな負担を被るとともに、ＬＳＩ等の開発・製造期間の長期化が引き起こされている。
【００３６】
本発明はこのような点に鑑みてなされたものであり、非同期回路に存在する非同期箇所において信号の受渡しが正しく行われるか否かをＲＴＬのシミュレーション段階で精度良く効率的に検証することのできる非同期回路検証方法および非同期回路検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【００３７】
本発明では上記課題を解決するために、図１に例示する構成により実現可能な非同期回路検証方法が提供される。本発明の非同期回路検証方法は、非同期回路の動作を検証する非同期回路検証方法において、ＲＴＬの論理回路に存在する非同期箇所を抽出し、抽出された前記非同期箇所で発生する遅延を考慮した前記論理回路のシミュレーションにより前記論理回路の動作を検証することを特徴とする。
【００３８】
このような非同期回路検証方法では、ＲＴＬ３１についてあらかじめ非同期箇所を抽出しておき、ＲＴＬ３１のシミュレータ３３によるシミュレーション時に、抽出された非同期箇所で発生し得る遅延を例えばＲＴＬ３１内のクロックを変調させるあるいは信号に遅延を与える等の手法により発生させる。これにより、非同期箇所に様々な遅延状態を作り出し、非同期箇所自体における動作のほか非同期箇所の後段以降における信号伝播や複数の非同期箇所間の干渉等も含めた非同期回路の動作を、ＲＴＬ３１のシミュレーション段階で精度良く効率的に検証することができるようになる。
【００３９】
また、本発明では、コンピュータに非同期回路の動作を検証する処理を実行させる非同期回路検証プログラムにおいて、コンピュータを、ＲＴＬの論理回路に存在する非同期箇所を抽出する抽出手段、前記抽出手段によって抽出された前記非同期箇所で発生する遅延を考慮したシミュレーションにより前記論理回路の動作を検証する検証手段、として機能させることを特徴とする非同期回路検証プログラムが提供される。
【００４０】
このような非同期回路検証プログラムによれば、ＲＴＬのシミュレーション段階において、抽出した非同期箇所に様々な遅延状態を作り出し、遅延を考慮したシミュレーションを行うことができるので、精度良く効率的に非同期回路の動作検証が行えるようになる。
【００４１】
さらにまた、本発明では、コンピュータを、ＲＴＬの論理回路に存在する非同期箇所に制御タスクを挿入する挿入手段、前記制御タスクが挿入された前記論理回路のシミュレーション段階で前記制御タスクを用いて前記論理回路に遅延を発生させる遅延発生手段、として機能させることを特徴とする非同期回路検証プログラムが提供される。
【００４２】
このような非同期回路検証プログラムによれば、例えば既存の非同期箇所抽出手段や論理検証環境を用い、ＲＴＬのシミュレーション段階において、抽出した非同期箇所に様々な遅延状態を作り出し、遅延を考慮したシミュレーションを行うことができるようになる。
【発明の効果】
【００４３】
本発明では、ＲＴＬのシミュレーション段階でクロック変調や信号遅延を発生させることで、非同期箇所に発生し得る様々な遅延状態を作り出すことができ、メタステーブルのほかレーシングやオーバーディレイといった非同期回路に特徴的な動作をシミュレーションにおいて発生させることができる。それにより、抽出した非同期箇所自体における動作のほか非同期箇所の後段以降における信号伝播や複数の非同期箇所間の干渉等も含め、非同期回路の動作検証を精度良く効率的に行うことができる。
【００４４】
さらに、本発明では、非同期回路のタイミングを考慮した動作検証を論理合成前のＲＴＬのシミュレーション段階で行うので、たとえ問題点が発見された場合であってもその前の論理設計段階に戻ればよく、論理合成以降の段階で問題点が発見された場合に比べ非常に短期間のうちに動作検証を行うことができ、回路設計者の負担を大幅に軽減し、製品の開発・製造期間の短縮化を図ることができる。
【発明を実施するための最良の形態】
【００４５】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
図２は非同期回路検証環境の概念図である。
従来、回路設計者は、ＲＴＬ１の作成後、テストベンチを用いて論理シミュレーションが行われる論理検証環境２においてＲＴＬ１の論理検証を行っている。本発明では、非同期回路の動作検証が行われる非同期回路検証環境３を、従来から回路設計者が用いてきた論理検証環境２を包含するようにして構築する。
【００４６】
すなわち、それによって既存の論理検証環境２を利用して非同期回路の動作検証を行うことができ、検証に当たり新たなテストベンチの作成等は不要である。そのため、このような非同期回路検証環境３は、従来の回路設計環境の中に容易に構築することが可能であり、また、非同期回路の動作検証で問題点が発見された場合にも、ＲＴＬ１や論理検証環境２を利用してその問題箇所の特定や発生した障害の再現が容易に行えるようになっている。
【００４７】
図１は非同期回路検証システムの概略説明図である。
図１に示す非同期回路検証システム３ａでは、まず、従来同様、回路設計者によってＲＴＬ１の論理回路が設計される。
【００４８】
そして、このＲＴＬ１は、そこに含まれる非同期箇所を自動的に抽出するプログラム（非同期抽出プログラム）１１に入力される。ここで、非同期箇所とは、論理回路内のクロックの異なる複数回路間で一方の回路から他方の回路へ信号が受け渡されてクロックの乗換えが起きる箇所をいう。
【００４９】
非同期抽出プログラム１１は、ＲＴＬ１が入力されると、そのＲＴＬ１内の非同期箇所をすべて抽出し、抽出された全非同期箇所が記録された非同期リスト１２を生成する。この非同期リスト１２には、各非同期箇所に、信号の乗換えが起こるクロックのグループ（クロックグループ）、および論理シミュレーション時に信号遅延が考慮されるべき遅延挿入箇所（送信クロック名、送信レジスタ名、受信クロック名、受信レジスタ名）の情報等が関連付けられて記録される。
【００５０】
このように非同期抽出プログラム１１で生成された非同期リスト１２は、制御タスク挿入部２０に入力される。制御タスク挿入部２０は、コントロールカード２１を生成するとともに、ＲＴＬ１およびその論理シミュレーションに用いるテストベンチに対し、その論理シミュレーション時に非同期箇所でクロック変調や信号遅延の制御が行えるようにするための制御タスクの挿入を行う。
【００５１】
ここで、コントロールカード２１とは、論理シミュレーション時にシミュレータ３３と連携するクロック・遅延制御部４０に対し、連携に必要な制御パラメータ（クロックグループ、クロック変調値、遅延挿入箇所、信号遅延値等）の指定を行うものである。
【００５２】
制御タスク挿入部２０は、非同期リスト１２を入力とし、各非同期箇所に関連付けられたクロックグループや遅延挿入箇所の情報等を用いて制御パラメータを含むコントロールカード２１を生成する。なお、コントロールカード２１は、その制御パラメータの指定／変更を後から回路設計者が修正することもできるようになっている。
【００５３】
制御タスク挿入部２０によってＲＴＬ１およびテストベンチに挿入される制御タスクには、大きく分けて、回路内のクロックを変調させるためのクロック変調タスクと、回路内に信号遅延を挿入するための遅延制御タスクの２種類が設定されている。それぞれの制御タスクは、クロック・遅延制御部４０とシミュレータ３３とを連携させるためのインタフェース（Ｉ／Ｆ）機能を有する。制御タスク挿入部２０は、ＲＴＬ１のクロックグループに対してクロック変調タスクを挿入し、遅延挿入箇所に対して遅延制御タスクを挿入する。これにより、オリジナルのＲＴＬ１に制御タスクが挿入されたＲＴＬ３１、およびオリジナルのデータに制御タスクが挿入されたテストベンチ３２が得られる。
【００５４】
得られたＲＴＬ３１およびテストベンチ３２を用いてシミュレータ３３による論理シミュレーションが行われる。シミュレータ３３は、ＲＴＬ３１に挿入されたクロック変調タスクや遅延制御タスクによってクロック・遅延制御部４０とインタフェースし、クロック変調や信号遅延を発生させながら、ＲＴＬ３１の論理シミュレーションを行い、その時に発生するエラー等を検出する。
【００５５】
論理シミュレーションのログ・結果５１は集計部５０に供給され、集計部５０は、ログ・結果５１を入力とし、それにエラー発生時の情報を関連付け、論理シミュレーションの実行結果をカバレッジとして集計する。集計結果は試験成績書５２として非同期回路検証システム３ａが有する表示装置等の画面上に出力され、必要に応じて印刷される。
【００５６】
図３は非同期回路検証システムの構成例である。
非同期回路検証システム３ａは、大きく分けて、ＲＴＬ１を用いてコントロールカード２１を生成する非同期抽出部１０、コントロールカード２１に基づいて論理シミュレーション時にクロック変調や信号遅延の発生を制御するクロック・遅延制御部４０、およびシミュレーション部３０により構成されている。
【００５７】
このシミュレーション部３０では、クロック変調や信号遅延の制御タスクが挿入されたＲＴＬ３１およびテストベンチ３２、ＲＴＬ３１とインタフェースされたデバイスモデル３４が用いられる。シミュレーション部３０では、クロック・遅延制御部４０によってクロック変調や信号遅延が引き起こされながらシミュレータ３３によるＲＴＬ３１の論理シミュレーションが行われる。
【００５８】
非同期抽出部１０は、オリジナルのＲＴＬ１に対して非同期抽出プログラム１１を実行して非同期リスト１２を生成する。制御タスク挿入部２０は、その非同期リスト１２を用いてクロック・遅延制御部４０の制御パラメータを含んだコントロールカード２１を生成する。コントロールカード２１には、回路設計者が必要に応じて制御パラメータの指定／変更が行えるようになっている。また、この制御タスク挿入部２０により、ＲＴＬ３１およびテストベンチ３２には制御タスクが挿入される。
【００５９】
クロック・遅延制御部４０は、コントロールカード２１から制御パラメータを読み込み、論理シミュレーション時に行うクロック変調や信号遅延に応じたユニットプログラムを生成するクロック変調部４２および遅延制御部４３の制御を行うコントロール部４１を有している。クロック変調部４２は、ＲＴＬ３１およびテストベンチ３２に挿入されたクロック変調タスクに対して制御パラメータに応じたクロック変調を行うクロック変調ユニットの発行を行い、遅延制御部４３は、遅延制御タスクに対して制御パラメータに応じた信号遅延を行う遅延制御ユニットの発行を行う。その際、クロック変調ユニットはクロックグループの数だけ準備され、遅延制御ユニットは遅延挿入箇所の数だけ準備される。
【００６０】
クロック変調部４２でクロック変調ユニットが発行されると、ＲＴＬ３１に挿入されているクロック変調タスクにより、クロック・遅延制御部４０とシミュレーション部３０とが連携可能になる。これにより、シミュレーション部３０においてクロック変調を発生させることが可能になる。ＲＴＬ３１の論理シミュレーションが始まると、クロックグループ数分のクロック変調ユニットがそれぞれ独立にクロックを変調させる。
【００６１】
また、遅延制御部４３で遅延制御ユニットが発行されると、ＲＴＬ３１に挿入されている遅延制御タスクにより、クロック・遅延制御部４０とシミュレーション部３０とが連携可能になる。これにより、シミュレーション部３０において信号遅延を発生させることが可能になる。ＲＴＬ３１の論理シミュレーションが始まると、遅延挿入箇所分の遅延制御ユニットがそれぞれ独立に信号遅延を発生させる。
【００６２】
集計部５０のログ・カバレッジ部５３は、ＲＴＬ３１の論理シミュレーション時のエラー発生状況、各クロックに与えたクロック変調値、各信号に与えた遅延量（遅延時間）等をトレースする。モニタ部５４は、クロック変調や信号遅延を行った信号波形を取得する。なお、クロック・遅延制御部４０のログ・カバレッジ集計機能および信号波形取得機能については後述する。
【００６３】
図４はクロック・遅延制御部の処理フローである。
シミュレーション部３０では、制御タスクが挿入されたＲＴＬ３１およびテストベンチ３２を用いた論理シミュレーションがシミュレータ３３によって行われる。
【００６４】
クロック・遅延制御部４０は、クロック変調部４２および遅延制御部４３でクロック変調ユニットおよび遅延制御ユニットを発行するため、まずコントロール部４１において、コントロールカード２１からシミュレーション条件に関する情報を読み込み（ステップＳ１）、その情報を基に各ユニット発行のための設定を行う（ステップＳ２）。
【００６５】
そして、クロック・遅延制御部４０は、クロック変調部４２においてクロックグループ数分のクロック変調ユニットを発行し（ステップＳ３）、論理シミュレーション中のＲＴＬ３１に既に挿入されているクロック変調タスクに対してクロック変調を行う。さらに、クロック・遅延制御部４０は、遅延制御部４３において遅延挿入箇所分の遅延制御ユニットを発行し（ステップＳ４）、論理シミュレーション中のＲＴＬ３１に挿入されている遅延制御タスクに対して信号遅延を行う。
【００６６】
論理シミュレーション終了後、クロック・遅延制御部４０は、クロック変調部４２および遅延制御部４３においてクロック変調ユニットおよび遅延制御ユニットをそれぞれ終了し（ステップＳ５，Ｓ６）、シミュレータ３３とのインタフェースを終了する（ステップＳ７）。
【００６７】
図５は非同期回路検証システムを利用した回路設計フローの一例である。
この図５に示す回路設計フローでは、まず、論理設計段階において非同期箇所を含んだＲＴＬ１の論理回路が作成され（ステップＳ１０）、その論理シミュレーションが実行される（ステップＳ１１）。この論理シミュレーション段階においてＲＴＬ１の動作検証が行われる（ステップＳ１２）。
【００６８】
この論理シミュレーション段階での動作検証では、前述のように、オリジナルのＲＴＬ１から非同期箇所を抽出する。そして、生成されたコントロールカード２１に基づき、制御タスクが挿入されたＲＴＬ３１に対してクロック・遅延制御部４０からクロック変調や信号遅延を意図的に発生させる。
【００６９】
この動作検証によってＲＴＬ３１に問題点が発見された場合には、ステップＳ１０に戻って論理設計データを修正し、修正後のＲＴＬ１について再度上記のような論理シミュレーションを行う。
【００７０】
そして、ＲＴＬ３１に問題点がなかった場合には、従来同様、論理合成が行われ（ステップＳ１３）、仮配線、ゲートライブラリの読込み、ＳＤＦの作成が行われ、ゲートレベルの論理シミュレーションが行われる（ステップＳ１４）。次いで、レイアウト（ステップＳ１５）、ＳＴＡタイミング検証（ステップＳ１６）を経て、試作品が作成され（ステップＳ１７）、実機評価が行われる（ステップＳ１８）。また、ステップＳ１０の論理設計後は適当な段階で形式検証が行われ（ステップＳ１９）、ここで期待した結果が得られなければステップＳ１０に戻って論理設計データが修正され、以降の処理が行われる。
【００７１】
このように、ＲＴＬの論理シミュレーション段階でクロック変調や信号遅延を発生させることで、非同期箇所に発生し得る様々な遅延状態を作り出すことができる。そのため、メタステーブルをはじめ、レーシングやオーバーディレイといった非同期回路に特徴的な動作を論理シミュレーション中に頻繁に発生させることが可能になる。これにより、抽出した非同期箇所自体における動作のほか、非同期箇所の後段以降における信号伝播や複数の非同期箇所間の干渉等を含め、非同期回路の動作検証を精度良く効率的に行うことができる。
【００７２】
さらに、このように非同期回路の動作検証を論理合成前のＲＴＬの論理シミュレーション段階で行うことで、たとえＲＴＬに問題点が発見された場合であっても、その前の論理設計段階に戻ればよい。したがって、論理合成以降の段階で問題点が発見された場合に比べ非常に短期間のうちに動作検証を行うことができ、回路設計者の負担を大幅に軽減し、製品の開発・製造期間の短縮化を図ることができる。
【００７３】
図６は非同期回路の動作検証による効果の説明図である。
例えば、従来は、ＲＴＬの論理シミュレーション段階でＣＬＫＭの送信側回路とＣＬＫＮの受信側回路との間の信号受渡しが正常に行われている場合でも、試作品の段階で障害が発生することがあった。その場合、再度ＲＴＬを作り直してその論理シミュレーション以降の処理を行わなければならなかった。
【００７４】
しかし、上記のように非同期回路に発生し得る遅延を論理合成前のＲＴＬの論理シミュレーション段階で意図的に発生させることで、問題点を精度良く効率的に発見することができる。例えば、ゲートレベルの論理シミュレーション段階でビット間遅延が生じた結果問題点が発見されたり、ＬＳＩ等の製造後に問題点が発見されたりすることがほとんどなくなる。したがって、ＲＴＬの再作成による無駄を最小限に抑えることができるようになる。そして、比較的短期間のうちに完成度の高い試作品を作成して実機評価を行うことができるようになるので、回路設計者の負担を軽減し、ＬＳＩ等の開発・製造期間を短縮することが可能になる。
【００７５】
なお、上記図５に示した回路設計フローにおいては、勿論従来同様、図中点線で示したように、ステップＳ１４のゲートレベル論理シミュレーション、ステップＳ１６のＳＴＡタイミング検証、ステップＳ１８の実機評価において期待された結果が得られない場合には、ステップＳ１０に戻って以降の処理を再度行うことも可能である。あるいは、ステップＳ１８の実機評価で発生した問題に応じて、ステップＳ１３の論理合成、ステップＳ１４のゲートレベル論理シミュレーション、ステップＳ１５のレイアウト、ステップＳ１６のＳＴＡタイミング検証に戻り、以降の処理を再度行うことも可能である。
【００７６】
次に、上記非同期回路検証システム３ａにおけるクロック変調と信号遅延についてより詳細に説明する。
まず、クロック変調について説明する。
【００７７】
図７はクロック変調タスクの説明図である。
例えば、上位モジュール６０の内部に含まれる非同期の内部モジュール６１に対してあるＣＬＫＭが入力するようにＲＴＬ１が設計されている場合を想定する。この場合、コントロールカード２１を基に制御タスク挿入部２０によってＲＴＬ１に挿入されるクロック変調タスク６２は、内部モジュール６１の直前にＣＬＫＭのクロックパスを切断して挿入される。これにより、クロック変調タスク６２が挿入されたＲＴＬ３１が得られる。
【００７８】
このようにクロック変調タスク６２が挿入されることで、ＲＴＬ３１の論理シミュレーションを行うシミュレータ３３がクロック・遅延制御部４０と連携可能になり、ＲＴＬ３１の論理シミュレーション時にはこのクロック変調タスク６２に対して所定の変調量の変調クロックが挿入される。ここで、クロックの変調量は、次の図８から図１０に示すようなフェイズ・スキュー（Ｐｈａｓｅ Ｓｋｅｗ），デューティー（Ｄｕｔｙ），ジッター（Ｊｉｔｔｅｒ）の３つのパラメータを用いて決定される。
【００７９】
図８はＰｈａｓｅ Ｓｋｅｗの説明図、図９はＤｕｔｙの説明図、図１０はＪｉｔｔｅｒの説明図である。
Ｐｈａｓｅ Ｓｋｅｗは、図８に示すように、参照するクロック（Ｒｅｌａｔｉｖｅ Ｃｌｏｃｋ）と変調を与えるクロック（Ｃｌｏｃｋ）との位相差Ｔｐの最小値から最大値の範囲をいう。
【００８０】
Ｄｕｔｙは、図９に示すように、クロックのある任意の１周期のｈｉｇｈ，ｌｏｗのパルス幅の比（Ｔlow／Ｔhigh）の最小値から最大値の範囲をいう。
Ｊｉｔｔｅｒは、図１０に示すように、連続する２周期（Ｔ１とＴ２，Ｔ２とＴ３，Ｔ３とＴ４）における周期のばらつき（Ｔ２−Ｔ１，Ｔ３−Ｔ２，Ｔ４−Ｔ３）の最小値から最大値の範囲をいう。または、入力するクロックの１周期（Ｔ）と各周期との間の周期のばらつき（Ｔ１−Ｔ，Ｔ２−Ｔ，Ｔ３−Ｔ，Ｔ４−Ｔ）の最小値から最大値の範囲をいう。
【００８１】
変調クロックは、Ｐｈａｓｅ Ｓｋｅｗ，Ｄｕｔｙ，Ｊｉｔｔｅｒの各パラメータ範囲内で、変調を与えるクロック（「変調対象クロック」という。）の１周期ごとに、その次の１周期分のクロック周期およびＤｕｔｙ比をランダムに自動計算して生成される。その際、変調対象クロックの選択やＰｈａｓｅ Ｓｋｅｗ，Ｄｕｔｙ，Ｊｉｔｔｅｒの各パラメータによってどのような変調範囲を与えるかといったコントロールカード２１に対する制御パラメータの指定／変更は、非同期リスト１２を基に自動でまたはユーザによって手動で、論理シミュレーション前に行われる。
【００８２】
クロック変調に関し、クロック・遅延制御部４０は、Ｐｈａｓｅ Ｓｋｅｗで指定された任意のクロックノードに対し、Ｐｈａｓｅ Ｓｋｅｗで指定された範囲内で変調クロックの位相差を保つようにクロック周期を計算する機能を有している。この場合、クロック・遅延制御部４０では、回路内の任意のクロックが参照クロックとして選択され、その参照クロックと変調対象クロックとの位相差がＰｈａｓｅ Ｓｋｅｗ範囲として正の値で指定される。そして、指定されたＰｈａｓｅ Ｓｋｅｗ範囲内で、変調対象クロックの１周期ごとにランダムに参照クロックとの位相差が計算され、その分だけ位相をずらしたクロック周期が求められる。これが変調クロックのクロック周期になる。
【００８３】
また、クロック変調に関し、クロック・遅延制御部４０は、Ｊｉｔｔｅｒで指定された範囲内でクロック周期を計算する機能を有している。この場合、クロック・遅延制御部４０では、任意に指定されたＪｉｔｔｅｒの範囲内で、変調クロックのクロック周期が１周期ごとにランダムに計算される。前述のように通常Ｊｉｔｔｅｒとは連続する２周期の周期差を表すものであるが、このように変調前の変調対象クロックのクロック周期とその変調後に得られる変調クロックのクロック周期との周期差として計算に用いることもできる。
【００８４】
また、クロック変調に関し、クロック・遅延制御部４０は、Ｄｕｔｙで指定された範囲内でクロックのｈｉｇｈ，ｌｏｗのパルス幅を計算する機能を有している。この場合、クロック・遅延制御部４０では、Ｐｈａｓｅ Ｓｋｅｗ，Ｊｉｔｔｅｒで指定された範囲内で計算されたクロック周期について、指定されたＤｕｔｙ比の範囲内で、変調対象クロックのｈｉｇｈ，ｌｏｗのパルス幅が計算され、そのクロックにＤｕｔｙ比が与えられる。
【００８５】
図１１はクロック変調の説明図である。
クロック変調は、コントロールカード２１に基づくクロック・遅延制御部４０のクロック変調ユニットの発行に際し、まず、図１１に示すように、現在出力中の１周期の変調対象クロック７０に対し、設定されたＰｈａｓｅ Ｓｋｅｗ，Ｊｉｔｔｅｒの範囲内で次の１周期分の変調クロック７１のクロック周期を求める。このクロック周期に対し、設定されたＤｕｔｙ比の範囲からｈｉｇｈ，ｌｏｗのパルス幅を求め、変調クロック７１を求める。
【００８６】
そして、クロック・遅延制御部４０がクロック変調ユニットを発行することで、求められた変調クロック７１が、ＲＴＬ３１の論理シミュレーション中に回路内の図７に示したように挿入されたクロック変調タスク６２に強制的に挿入され、それによりクロック変調が発生する。
【００８７】
１周期分の変調クロック７１の挿入後は、更にその次の変調クロックを同様に求め、論理シミュレーション中の回路内に挿入していく。
図１２はクロック変調による信号変化の一例である。
【００８８】
例えば、本来クロック変調前にはＣＬＫＭで入力信号ＩＮと出力信号ＯＵＴが図１２上図に示すように推移する場合について、そのＣＬＫＭに上記のようなクロック変調を行うと、クロック変調後には入力信号ＩＮと出力信号ＯＵＴが図１２下図に示すように変化して推移するようになる。このように、クロック変調を行うことにより、本来正しく拾えていた入力信号ＩＮが拾えずにデータの取りこぼしが発生するといった状況を、ＲＴＬ３１の論理シミュレーション段階で作り出すことが可能になる。
【００８９】
続いて、信号遅延について説明する。
図１３は信号遅延の説明図である。
例えば、図１３上図に示すような信号Ｓ１に対して遅延を与えたい場合には、信号Ｓ１の変化点Ｐを遅延制御タスクによって監視し、変化が検出されたときには、図１３下図に示すように、与えたい遅延時間分など、所定の遅延量だけずらして信号Ｓ１を出力するよう、遅延制御タスクに対して遅延を制御する。これにより、信号Ｓ１の取りこぼし等を発生させる。
【００９０】
この非同期回路検証における信号遅延では、遅延を与える信号の選択やその遅延の範囲、非同期箇所の送信側と受信側のいずれに遅延を与えるかといったコントロールカード２１に対する制御パラメータの指定／変更は、非同期リスト１２を基に自動でまたはユーザによって手動で、論理シミュレーション前に行われる。
【００９１】
ＲＴＬ３１に挿入される遅延制御タスクには、後述の強制遅延制御を行うための強制遅延制御タスク、および後述の遅延挿入パラメータ制御を行うための遅延挿入パラメータ制御タスクの２種類が設定されており、それぞれに対してクロック・遅延制御部４０から信号遅延が制御されるようになっている。このように、クロック・遅延制御部４０は、遅延制御タスクに対して遅延を制御することにより、非同期回路内に所定の遅延量の信号遅延を挿入することができるようになっている。
【００９２】
遅延量は、非同期回路に関連するクロックの１周期範囲内、またはユーザによって指定された範囲内で、コントロールカード２１に基づき、クロック・遅延制御部４０がランダムに計算する。遅延量は、１シミュレーションにつき１回計算され、そのシミュレーション中は変化しない。しかし、再度シミュレーションを行う場合には、クロック・遅延制御部４０で新たな遅延量が再計算される。
【００９３】
ただし、クロック・遅延制御部４０では、遅延量およびクロック変調量(周期およびパルス幅)を計算するために生成された乱数に対して番号（「乱数生成番号」という。）が付与され、保存される。そして、乱数生成番号が指定されれば、以前行ったシミュレーションと同じ遅延量のシミュレーションをクロック・遅延制御部４０により何度でも再現することができるようになっている。
【００９４】
ここで、まず強制遅延制御について説明する。
強制遅延制御は、まず、遅延制御ユニットが発行されると、論理シミュレーション時のレジスタの入力信号について、その変化前後の信号値がそれぞれクロック・遅延制御部４０に保存される。そして、そのレジスタを駆動するクロックがアクティブになったときに、クロック・遅延制御部４０が保存していた変化前の信号値を強制的にそのレジスタ出力に挿入し、所定遅延量経過後に、クロック・遅延制御部４０が保存していた変化後の信号値を強制的にそのレジスタ出力に挿入する。
【００９５】
図１４は強制遅延制御の説明図である。
非同期箇所の送信側に遅延を与える場合、まず、ＲＴＬ３１内の非同期乗換えを行う信号送信側のレジスタを遅延挿入レジスタとする。そして、ＲＴＬ３１の論理シミュレーション時には、この遅延挿入レジスタについて、駆動するクロック（ＣＬＫ）がアクティブになっていて入力信号ＩＮが変化したことを条件に、変化前の信号値ａをクロック・遅延制御部４０に保存し（ＯＵＴ＿ｒｅｇ）、かつ、変化後の信号値ｂをクロック・遅延制御部４０に保存する（ＯＵＴ＿ｎｘｔ）。
【００９６】
そして、クロック・遅延制御部４０に保存された変化前の信号値ａを、ＣＬＫがアクティブになった後で、遅延挿入レジスタの変化後の信号値ｂが保存されたのと同時刻に、クロック・遅延制御部４０から遅延挿入レジスタの出力信号ＯＵＴに強制的に挿入する。さらに、あらかじめ計算された遅延量の経過後、クロック・遅延制御部４０に保存された変化後の信号値ｂを遅延挿入レジスタの出力信号ＯＵＴに強制的に挿入する。これにより、出力信号ＯＵＴには遅延Ｑが挿入されるようになる。
【００９７】
なお、この強制遅延制御では、後述の遅延挿入パラメータ制御とは異なり、強制遅延制御タスクを挿入するのみでＲＴＬに対して本質的な変更は加えられない。また、このような強制遅延制御は、遅延挿入レジスタがビット幅を持つ場合には、各ビットに対して行われる。
【００９８】
図１５はビット幅を持つ信号の各ビットに対して遅延挿入を行う場合の説明図である。
ＣＬＫＭの送信側回路８０とＣＬＫＮの受信側回路８１について、ビット幅を持つ信号Ｓ２に遅延を発生させる場合には、各ビットに対して別々に遅延を与えるように遅延制御が行われる。これにより、各ビットに対してそれぞれ別々の遅延（ここではDelay＃１〜＃５）が与えられ、各ビット間の遅延差を考慮した動作検証が可能になる。
【００９９】
次いで、遅延挿入パラメータ制御について説明する。
遅延挿入パラメータ制御は、クロック・遅延制御部４０が遅延制御ユニットを発行すると、ＲＴＬ３１に遅延制御用のパラメータ（遅延挿入パラメータ）を挿入し、この遅延挿入パラメータに応じて、所定遅延量をＲＴＬ３１に挿入する。この制御では、非同期乗換えを行う送信側、受信側いずれの信号に対しても遅延を挿入することが可能である。
【０１００】
図１６は送信側出力信号の遅延挿入パラメータ制御の説明図である。
クロック・遅延制御部４０は、送信側レジスタの出力信号に遅延を挿入する遅延挿入パラメータをＲＴＬ３１に自動挿入する機能（送信側レジスタ出力遅延挿入機能）を有している。その挿入方法としては、図１６のVerilogサンプル１，２にそれぞれ示すように、送信側のalways文に直接挿入する方法（図１６上図）、あるいはassign文に取り出して挿入する方法（図１６下図）がある。
【０１０１】
図１７は受信側入力信号の遅延挿入パラメータ制御の説明図である。
クロック・遅延制御部４０は、上記の送信側レジスタ出力遅延挿入機能のほか、受信側レジスタに入力される直前の入力信号に遅延を挿入する機能（受信側レジスタ入力遅延挿入機能）を有している。通常、ＲＴＬ３１のレジスタ記述では、レジスタ内の代入文で論理演算、分岐、ループといった制御構造が作成されている。本機能は、これらの論理式通過後の信号に対して遅延を挿入するために、それに必要な遅延挿入パラメータをＲＴＬ３１に自動挿入するものである。その場合、図１７のVerilogサンプルに示すように、遅延挿入パラメータを受信側のassign文に取り出して挿入する方法がある。
【０１０２】
図１８は遅延挿入による信号変化の一例である。
例えば、本来遅延挿入前にはＣＬＫＭのときに入力信号ＩＮと出力信号ＯＵＴが図１８上図に示すように推移する場合について、入力信号ＩＮに遅延挿入を行うと、遅延挿入後には出力信号ＯＵＴが図１８下図に示すように変化して推移するようになる。
【０１０３】
このように遅延挿入を行うことにより、ＣＬＫＭ，ＣＬＫＮ間の信号の乗換えが正しく行われず、信号が本来のタイミングよりも遅れて伝播されてしまうといった状況を、ＲＴＬ３１の論理シミュレーション段階で作り出すことが可能になる。
【０１０４】
以上説明したように、本発明に係る非同期回路検証システムは、非同期抽出プログラム１１によってＲＴＬ１の論理回路からそこに存在する非同期箇所を抽出する手段を備える。それとともに、この非同期回路検証システム３ａは、ＲＴＬ１に制御タスクを挿入する制御タスク挿入部２０、制御タスクに対し各種遅延を発生させる機能するクロック・遅延制御部４０およびＲＴＬ３１の論理シミュレーションを行うシミュレーション部３０により、非同期箇所で発生し得る遅延をクロック変調や信号遅延によって論理シミュレーション段階で作り出し、ＲＴＬ３１の動作を検証する手段を備えている。
【０１０５】
これにより、論理合成前のＲＴＬの論理シミュレーション段階において、ＲＴＬの任意の非同期箇所に対してクロック変調や信号遅延を挿入してメタステーブルによる不定値を発生させたり、レーシングやオーバーディレイを発生させたりすることができる。その結果、各非同期箇所が不定値を受け取る確率を大幅に上げることができ、また、様々な信号遅延状態を作り出すことができるので、非同期回路が正しく設計され動作しているか否かを精度良く効率的に検証することができる。
【０１０６】
なお、この非同期回路検証システム３ａは、ゲートレベルの論理シミュレーションにも同様に適用可能であり、それにより、従来不定値のサンプリングが稀にしか発生しなかったゲートレベルの論理シミュレーションにおいてそのサンプリング確率を大幅に上げて動作検証を行うことも可能になる。
【０１０７】
次に、非同期回路検証システム３ａのその他の機能について説明する。
非同期回路検証システム３ａは、上記のように、クロックの変調量や信号遅延量を自動的に変化させながら、ＲＴＬ３１の論理シミュレーションを行うシミュレータ３３と連携する機能を有している。そして、非同期回路検証システム３ａは、論理シミュレーションの際には、そのシミュレーション回数の指定、シミュレーション終了日時の指定、全シミュレーションのログやカバレッジの集計が行えるようになっている。
【０１０８】
次いで、ログ・カバレッジ集計機能について説明する。
非同期回路検証システム３ａは、クロック変調によるエラー発生状況や信号遅延によるエラー発生状況など、シミュレーション時の情報を集計することができるようになっている。これにより、各クロックに与えたクロック変調の設定とシミュレーション時の情報を集計することができ、また、各非同期信号に対して与えた信号遅延の設定とシミュレーション時の情報を集計することができるようになっている。この非同期回路検証システム３ａでは、このような集計機能を備えることで、検証もれを防止することが可能になっている。
【０１０９】
さらに、非同期回路検証システム３ａは、乱数生成番号とシミュレーション時の情報を関連付けて集計することができるようになっている。これにより、どの乱数生成番号のときにエラーが発生したかを確認することができる。そして、クロック・遅延制御部４０は、ユーザによって同じ乱数生成番号が選択されればその乱数を用いたときの論理シミュレーションを再び行ってエラーの再現が行えるようになっている。
【０１１０】
さらにまた、非同期回路検証システム３ａは、信号遅延量とシミュレーション時の情報の統計をとることができるようになっており、どの信号にどの程度の遅延を与えるとエラーが発生するのかを評価した統計表を作成することもできるようになっている。
【０１１１】
次いで、信号波形取得機能について説明する。
非同期回路検証システム３ａは、ＲＴＬ３１の非同期箇所に遅延を挿入したときの信号の波形ファイルを取得することができるようになっている。波形を取得するか否かはユーザが任意に設定することができ、また、波形を取得する非同期箇所もユーザが任意に設定することができる。
【０１１２】
取得可能な信号波形としては、非同期回路の送信側レジスタ信号、受信側レジスタ信号、送信側クロックおよび受信側クロックがある。波形は例えばＶＣＤ(Value Change Dump)フォーマットで取得することができる。
【０１１３】
このように非同期回路検証システム３ａでは、非同期箇所の信号変化を波形で確認することができるようになっているので、エラー発生状況やエラー発生条件等を非同期箇所ごとに詳細に解析することができる。これにより、ＲＴＬ３１の論理シミュレーション段階で問題点が発見された場合でも、ＲＴＬ１の再作成を効率的かつ適切に行うことが可能になる。
【０１１４】
なお、上記の非同期回路検証システムの各種処理機能は、次の図１９に例示すようなハードウェア構成を有するコンピュータを用いて実現される。
図１９はコンピュータのハードウェア構成例である。
【０１１５】
コンピュータ９０は、ＣＰＵ（Central Processing Unit）９１、ＲＯＭ（Read Only Memory）９２、ＲＡＭ（Random Access Memory）９３、ＨＤＤ（Hard Disk Drive）９４、グラフィック処理部９５、入力Ｉ／Ｆ（Interface）９６、通信Ｉ／Ｆ９７等によって構成され、これらはバス９８を介して接続されている。
【０１１６】
ここで、ＣＰＵ９１は、ＲＯＭ９２、ＲＡＭ９３、ＨＤＤ９４に格納されているプログラムやデータに応じた処理を実行する。ＲＯＭ９２は、ＣＰＵ９１が実行する基本的なプログラムやデータを記録する。ＲＡＭ９３は、ＣＰＵ９１が実行途中のプログラムやデータを記録する。ＨＤＤ９４には、ＣＰＵ９１が実行するＯＳ（Operation System）やアプリケーションプログラム等が記録される。
【０１１７】
グラフィック処理部９５には、ディスプレイなどの表示装置９５ａが接続され、グラフィック処理部９５は、ＣＰＵ９１からの描画命令に従って表示装置９５ａの画面上に操作情報、論理シミュレーション後のログやカバレッジの集計結果、信号波形等を表示する。
【０１１８】
入力Ｉ／Ｆ９６には、マウス９６ａやキーボード９６ｂが接続され、これらによってユーザが入力した情報を受信し、バス９８を介してＣＰＵ９１に送信する。通信Ｉ／Ｆ９６は、必要に応じ、他のコンピュータとの間のＬＡＮ接続やインターネット接続のためのインタフェースである。
【０１１９】
このようなハードウェア構成を有するコンピュータを１台または２台以上用いることによって非同期回路検証システムの各種処理機能が実現される。その場合、非同期回路検証システムが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(Digital Versatile Disc)、ＤＶＤ−ＲＡＭ(Random Access Memory)、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Optical disk)などがある。
【０１２０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１２２】
以下、非同期回路検証システムの適用例について説明する。
ここでは、非同期回路（ＴＢｒｉｄｇｅ＿ｔｏｐ）の動作検証を行った場合を例に説明する。この非同期回路の仕様は次のようなものである。
【０１２３】
まず、この非同期回路は、ＲＴＬのブリッジ（Ｂｒｉｄｇｅ）回路であり、あるＣＬＫＳ（Ｓ＿ＣＬＫ）から別のＣＬＫＡ（Ａ＿ＣＬＫ）へ信号の乗せ換えを行う回路である。ただし、非同期信号は２段のＦＦ回路（ダブルシンクロナイザ）で受信するものとする。
【０１２４】
この場合、非同期回路のクロックグループはＳ＿ＣＬＫとＡ＿ＣＬＫの２系統であり、この２系統のクロックは非同期であるが位相は合っている必要はない。
クロックの周波数には特に規定はなく、クロック同士の関係についても次の３つ、Ｆａｓｔ：Ｓ＿ＣＬＫ＞Ａ＿ＣＬＫ，Ｔｙｐ：Ｓ＿ＣＬＫ＝Ａ＿ＣＬＫ，Ｌａｔｅ：Ｓ＿ＣＬＫ＜Ａ＿ＣＬＫのいずれの関係を有していても構わない。
【０１２５】
リセットはＳ＿ＣＬＫ側から行われるものとし、リセット中にＡ＿ＣＬＫが停止していてもリセットは有効とする。また、データのビット幅は３２ビットとする。
このような仕様のＲＴＬの非同期回路についてその動作検証を行う。
【０１２６】
図２０はＴＢｒｉｄｇｅ＿ｔｏｐ回路の信号伝播を示す図である。
図２０は、前段のＳ＿ＣＬＫのレシーバ回路（ＦｒｏｎｔＲｅｃｅｉｖｅｒ）１１０と後段のＡ＿ＣＬＫのトランシーバ回路（ＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ）１２０との間の信号伝播の様子を示している。
【０１２７】
まず、ＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０においてタイミング信号Ｓ＿ＸＳｔｒｏｂｅに応じたタイミングで入力データＳ＿ＤＡＴＡが入力されると、ＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０からＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ１２０にタイミング信号Ｉ＿Ｘｓｔｒｏｂｅのタイミングで中間データＩ＿ｄａｔａが入力され、ＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ１２０からタイミング信号Ａ＿ＸＳｔｒｏｂｅ，出力データＡ＿ＤＡＴＡが出力される。その後、ＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ１２０には、一連の動作終了を示す信号Ａ＿ＸＲｅａｄｙが入力され、中間のＩ＿Ｘｒｅａｄｙを経て最終的にＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０からＳ＿ＸＲｅａｄｙが出力される。ＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０では、このＳ＿ＸＲｅａｄｙにより次のデータ転送が行われるようになる。
【０１２８】
図２１はＴＢｒｉｄｇｅ＿ｔｏｐ回路の回路構成図である。
ＴＢｒｉｄｇｅ＿ｔｏｐ回路１００は、Ｓ＿ＣＬＫで同期するＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０とＡ＿ＣＬＫで同期するＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ１２０を有している。
【０１２９】
ＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０には受信コントロール部（ＦＲ＿ｃｏｎｔｒｏｌ）１１１および送信コントロール部（ＦＴ＿ｃｏｎｔｒｏｌ）１１２が設けられており、入力される信号に応じてそれぞれ状態（ＦＲ＿ＳＴＡＴＥ，ＦＴ＿ＳＴＡＴＥ）が切り替わり、出力する信号が制御される。また、ＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ１２０にはそれぞれ受信コントロール部（ＡＲ＿ｃｏｎｔｒｏｌ）１２１および送信コントロール部（ＡＴ＿ｃｏｎｔｒｏｌ）１２２が設けられており、入力される信号に応じてそれぞれ状態（ＡＲ＿ＳＴＡＴＥ，ＡＴ＿ＳＴＡＴＥ）が切り替わり、出力する信号が制御される。
【０１３０】
このようなＴＢｒｉｄｇｅ＿ｔｏｐ回路１００において、ＦＲ＿ｃｏｎｔｒｏｌ１１１にＳ＿ＸＳｔｒｏｂｅに応じてＳ＿ＤＡＴＡが入力されると、ＦＴ＿ｃｏｎｔｒｏｌ１１２において変換後のＴｒ＿ｄａｔａが生成される。このＴｒ＿ｄａｔａは、Ｔｒ＿ＸｓｔｒｏｂｅのタイミングでＩ＿ｄａｔａとしてＡＲ＿ｃｏｎｔｒｏｌ１２１に対して出力され、Ｒｅ＿ｄａｔａとしてＡＲ＿ｃｏｎｔｒｏｌ１２１に入力される。ＡＲ＿ｃｏｎｔｒｏｌ１２１では、Ｒｅ＿ｄａｔａが入力されるとＲｅ＿Ｘｓｔｒｏｂｅ，Ｒｅ＿Ｘｒｅａｄｙの各信号が生成される。
【０１３１】
ＡＲ＿ｃｏｎｔｒｏｌ１２１に入力されたＲｅ＿ｄａｔａは、ＡＴ＿ｃｏｎｔｒｏｌ１２２に供給され、Ａ＿ＸＳｔｒｏｂｅと共に、Ａ＿ＤＡＴＡとしてＡＴ＿ｃｏｎｔｒｏｌ１２２から出力される。ＡＴ＿ｃｏｎｔｒｏｌ１２２にＡ＿ＸＲｅａｄｙが入力されると、ＡＲ＿ｃｏｎｔｒｏｌ１２１からはＲｅ＿ＸｒｅａｄｙがＩ＿Ｘｒｅａｄｙとして出力され、ＦＴ＿ｃｏｎｔｒｏｌ１１２にＴｒ＿Ｘｒｅａｄｙとして入力される。ＦＲ＿ｃｏｎｔｒｏｌ１１１からはＳ＿ＸＲｅａｄｙが出力され、ＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０は、このＳ＿ＸＲｅａｄｙを受けて、次のデータ転送処理に移行する。
【０１３２】
なお、Ｓ＿ＸＲＥＳＥＴはリセット信号であり、前述のように、リセットはＳ＿ＣＬＫ側から行われ、リセット中にＡ＿ＣＬＫが停止していてもリセットは有効である。
図２２はＴＢｒｉｄｇｅ＿ｔｏｐ回路の非同期リスト、図２３および図２４はコントロールカードである。
【０１３３】
図２２に示すように、非同期リスト１２ａには、ここでは１２０ＭＨｚのＳ＿ＣＬＫと６０ＭＨｚのＡ＿ＣＬＫのクロックグループと共に、ＴＢｒｉｄｇｅ＿ｔｏｐ回路１００の非同期信号が記録されている。ＴＢｒｉｄｇｅ＿ｔｏｐ回路１００の非同期信号は、図２２に示したように、ここでは、Ｔｒ＿Ｘｓｔｒｏｂｅ（Ｓ＿ＣＬＫ）とＲｅ＿Ｘｓｔｏｒｏｂｅ（Ａ＿ＣＬＫ）、Ｔｒ＿ｄａｔａ［３１：０］（Ｓ＿ＣＬＫ）とＲｅ＿ｄａｔａ［３１：０］（Ａ＿ＣＬＫ）、およびＲｅ＿Ｘｒｅａｄｙ（Ａ＿ＣＬＫ）とＴｒ＿Ｘｒｅａｄｙ（Ｓ＿ＣＬＫ）の３つである。これら３つの非同期信号が含まれる非同期リストから生成されるコントロールカードは、図２３および図２４に示すようなものとなる。
【０１３４】
図２３および図２４に示すコントロールカード２１ａでは、ＳｅｔＣｌｏｃｋ部１３０において、Ｓ＿ＣＬＫ（Ｇｒｏｕｐ：０）とＡ＿ＣＬＫ（Ｇｒｏｕｐ：１）のそれぞれについて、Ｊｉｔｔｅｒ，Ｄｕｔｙ，Ｐｈａｓｅ Ｓｋｅｗのパラメータ範囲のほか、１０ｐｓを遅延の１ユニットとする等、論理シミュレーションに用いられる各制御パラメータが設定される。
【０１３５】
また、ＳｅｔＳｉｇｎａｌ部１４０においては、受渡しが行われる各非同期信号についてそれぞれ、送信側回路の情報と受信側回路の情報や、論理シミュレーションを行うときの遅延ユニット数等が設定される。例えば、ＳｅｔＳｉｇｎａｌ部１４１においては、ＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０のＦＴ＿ｃｏｎｔｒｏｌ１１２から送信されるＴｒ＿Ｘｓｔｒｏｂｅが、ＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ１２０においてＲｅ＿Ｘｓｔｒｏｂｅとして受信され、その際、送信側が１２０ＭＨｚのＳ＿ＣＬＫであり、受信側が６０ＭＨｚのＡ＿ＣＬＫであるといった情報が設定されている。
【０１３６】
同様にＳｅｔＳｉｇｎａｌ部１４２においては、ＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０のＦＴ＿ｃｏｎｔｒｏｌ１１２から送信されるＴｒ＿ｄａｔａ［３１：０］が、ＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ１２０においてＲｅ＿ｄａｔａとして受信され、その際、送信側が１２０ＭＨｚのＳ＿ＣＬＫであり、受信側が６０ＭＨｚのＡ＿ＣＬＫであるといった情報が設定されている。
【０１３７】
また、ＳｅｔＳｉｇｎａｌ部１４３においては、ＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ１２０のＡＲ＿ｃｏｎｔｒｏｌ１２１から送信されるＲｅ＿Ｘｒｅａｄｙが、ＦｒｏｎｔＲｅｃｅｉｖｅｒ１１０においてＴｒ＿Ｘｒｅａｄｙとして受信され、その際、送信側が６０ＭＨｚのＡ＿ＣＬＫであり、受信側が１２０ＭＨｚのＳ＿ＣＬＫであるといった情報が設定されている。
【０１３８】
ここで、図２５はＴＢｒｉｄｇｅ＿ｔｏｐ回路の論理設計時に想定されたタイミングチャートである。
ＴＢｒｉｄｇｅ＿ｔｏｐ回路１００がこの図２５に示すようなタイミングチャートに従って動作するかを検証する。その際、検証パターンは、０と１がチェッカパターンでトグルするよう、３２’ｈａａａａ＿ａａａａ，３２’ｈ５５５５＿５５５５を交互にＳ＿ＤＡＴＡとしてＴＢｒｉｄｇｅ＿ｔｏｐ回路１００に入力する。そして、Ａ＿ＸＳｔｒｏｂｅ時にＡ＿ＤＡＴＡの値がＳ＿ＤＡＴＡの値と同じであれば“Ｒｅａｄ ＯＫ”とし、異なれば“Ｒｅａｄ ＮＧ”として、Ａ＿ＤＡＴＡの値と期待値（ｅｘｐｅｃｔ）を表示する。このパターンを５００回繰り返すことにより、ＴＢｒｉｄｇｅ＿ｔｏｐ回路１００の動作を検証する。
【０１３９】
図２６は従来のＲＴＬ論理シミュレーションによる検証結果の一部、図２７は非同期回路検証システムを用いたＲＴＬ論理シミュレーションによる検証結果の一部である。
図２６の検証結果１５０に示すように、従来のＲＴＬ論理シミュレーションによれば、全くエラーが検証されず、各非同期信号はＳ＿ＣＬＫ，Ａ＿ＣＬＫ間で正常に受渡しが行われている。これはここで例示しているＦａｓｔ条件のほか、Ｔｙｐ，Ｌａｔｅ条件で行ったいずれの場合であっても同じであった。
【０１４０】
しかし、同じテストベンチを用いて上記の非同期回路検証を行った場合の検証結果１５１には“Ｒｅａｄ ＮＧ”が出力されるようになる。これはＳ＿ＣＬＫ側で発生したメタステーブルをＡ＿ＣＬＫ側で受信してしまっているためと考えられる。もしメタステーブルの受信である場合には、このＴＢｒｉｄｇｅ＿ｔｏｐ回路１００の潜在的な機能障害ということになる。このような状況を波形解析すると、次の図２８に示すようになるものと推察される。
【０１４１】
図２８は推察される障害発生時のタイミングチャートである。
この図２８に示すように、Ｓ＿ＣＬＫ側でＴｒ＿ｄａｔａにメタステーブルが発生しており、その一部の不定値がＡ＿ＣＬＫ側でＲｅ＿ｄａｔａ１として受信されたとする。その場合、そのＲｅ＿ｄａｔａ１が次のクロック周期でＲｅ＿ｄａｔａ２に影響を及ぼし、その不定値がＡＲ＿ｃｏｎｔｒｏｌ１２１のレジスタ（ＡＲ＿ＲＥＧ）にデータとして格納されるようになる。
【０１４２】
このような状況を回避するため、次の図２９に示すようなタイミングチャートが考えられる。
図２９は障害対策済みＴＢｒｉｄｇｅ＿ｔｏｐ回路のタイミングチャートである。
【０１４３】
この図２９に示すように、Ａ＿ＣＬＫ側でセットレジスタ信号Ｒ＿Ｓｅｔｒｅｇを設定し直し、Ｒ＿ＥｎｄＳｅｔｒｅｇを新たに設定する。その結果、ＡＲ＿ＲＥＧにはＲｅ＿ｄａｔａ２に入り込んでいた不定値が入り込まず、正しい値が格納されるようになる。
【０１４４】
このように、ＴＢｒｉｄｇｅ＿ｔｏｐ回路１００に上記非同期回路検証システムを適用することにより、非同期箇所で正しい信号受渡しが行われているかを、論理合成前のＲＴＬの論理シミュレーション段階で検証することができ、動作検証自体を効率的に行えるとともに、ＲＴＬの論理シミュレーション以降のプロセスも効率的に進めることができるようになる。
【０１４５】
以上説明したように、本発明の非同期回路検証システムでは、論理合成前のＲＴＬの論理シミュレーション段階において、検証する非同期回路の非同期箇所を抽出し、それらについてクロック変調や信号遅延を発生させ、非同期箇所における信号の受渡しが正しく行われるか否かを検証するようにした。これにより、非同期箇所にメタステーブル、レーシング、オーバーディレイを発生させ、その非同期箇所自体における動作、その後段以降の信号伝播、非同期箇所間の干渉等、非同期回路の動作検証を精度良く効率的に行うことができるようになる。その結果、回路設計者の負担を大幅に軽減し、製品の開発・製造期間の大幅な短縮化を図ることができる。
【０１４６】
（付記１）  非同期回路の動作を検証する非同期回路検証方法において、
レジスタ・トランスファ・レベルの論理回路に存在する非同期箇所を抽出し、抽出された前記非同期箇所で発生する遅延を考慮した前記論理回路のシミュレーションにより前記論理回路の動作を検証することを特徴とする非同期回路検証方法。
【０１４７】
（付記２）  前記遅延は、パラメータを用いて前記論理回路内のクロックを変調させた変調クロックまたは前記論理回路内の信号の伝播を遅らせる信号遅延を前記論理回路に挿入することによって発生させることを特徴とする付記１記載の非同期回路検証方法。
【０１４８】
（付記３）  前記論理回路に前記変調クロックを挿入する際には、前記論理回路のクロックパスにクロック変調タスクを挿入し、前記クロック変調タスクに対して前記変調クロックを挿入することを特徴とする付記２記載の非同期回路検証方法。
【０１４９】
（付記４）  前記論理回路に前記変調クロックを挿入する際には、前記パラメータを用い、変調を与える変調対象クロックの１周期ごとに前記変調クロックを生成し、生成した前記変調クロックを前記論理回路に挿入することを特徴とする付記２記載の非同期回路検証方法。
【０１５０】
（付記５）  前記論理回路に前記信号遅延を挿入する際には、前記論理回路内に遅延制御タスクを挿入し、前記遅延制御タスクに対して前記信号遅延を挿入することを特徴とする付記２記載の非同期回路検証方法。
【０１５１】
（付記６）  前記論理回路に前記信号遅延を挿入する際には、前記信号遅延の遅延量をシミュレーションごとに計算し、シミュレーション後に一の遅延量が指定されたときには前記一の遅延量のシミュレーションを再現することを特徴とする付記２記載の非同期回路検証方法。
【０１５２】
（付記７）  コンピュータに非同期回路の動作を検証する処理を実行させる非同期回路検証プログラムにおいて、
コンピュータを、
レジスタ・トランスファ・レベルの論理回路に存在する非同期箇所を抽出する抽出手段、
前記抽出手段によって抽出された前記非同期箇所で発生する遅延を考慮した前記論理回路のシミュレーションにより前記論理回路の動作を検証する検証手段、
として機能させることを特徴とする非同期回路検証プログラム。
【０１５３】
（付記８）  前記検証手段は、パラメータを用いて前記論理回路内のクロックを変調させた変調クロックまたは前記論理回路内の信号の伝播を遅らせる信号遅延を前記論理回路に挿入することによって前記遅延を発生させた前記論理回路のシミュレーションにより前記論理回路の動作を検証することを特徴とする付記７記載の非同期回路検証プログラム。
【０１５４】
（付記９）  前記検証手段は、前記変調クロックを前記論理回路に挿入する場合には、前記論理回路のクロックパスにクロック変調タスクを挿入し、前記クロック変調タスクに対して前記変調クロックを挿入することを特徴とする付記８記載の非同期回路検証プログラム。
【０１５５】
（付記１０）  前記検証手段は、前記変調クロックを前記論理回路に挿入する場合には、前記パラメータを用い、変調を与える変調対象クロックの１周期ごとに前記変調クロックを生成し、生成した前記変調クロックを前記論理回路に挿入することを特徴とする付記８記載の非同期回路検証プログラム。
【０１５６】
（付記１１）  前記検証手段は、前記信号遅延を前記論理回路に挿入する場合には、前記論理回路内に遅延制御タスクを挿入し、前記遅延制御タスクに対して前記信号遅延を挿入することを特徴とする付記８記載の非同期回路検証プログラム。
【０１５７】
（付記１２）  前記検証手段は、前記信号遅延を前記論理回路に挿入する場合には、挿入する前記信号遅延の遅延量をシミュレーションごとに計算し、シミュレーション後に一の遅延量が指定されたときには前記一の遅延量によって前記遅延を発生させることを特徴とする付記８記載の非同期回路検証プログラム。
【０１５８】
（付記１３）  コンピュータに非同期回路の動作を検証する処理を実行させる非同期回路検証プログラムにおいて、
コンピュータを、
レジスタ・トランスファ・レベルの論理回路に存在する非同期箇所に制御タスクを挿入する挿入手段、
前記制御タスクが挿入された前記論理回路のシミュレーション段階で前記制御タスクを用いて前記論理回路に遅延を発生させる遅延発生手段、
として機能させることを特徴とする非同期回路検証プログラム。
【０１５９】
（付記１４）  前記遅延発生手段は、パラメータを用いて前記論理回路内のクロックを変調させた変調クロックまたは前記論理回路内の信号の伝播を遅らせる信号遅延を前記制御タスクに挿入することによって前記遅延を発生させることを特徴とする付記１３記載の非同期回路検証プログラム。
【０１６０】
（付記１５）  非同期回路の動作を検証する非同期回路検証システムにおいて、
レジスタ・トランスファ・レベルの論理回路に存在する非同期箇所を抽出する抽出手段と、
前記抽出手段によって抽出された前記非同期箇所で発生する遅延を考慮した前記論理回路のシミュレーションにより前記論理回路の動作を検証する検証手段と、
を有することを特徴とする非同期回路検証システム。
【０１６１】
（付記１６）  前記検証手段は、パラメータを用いて前記論理回路内のクロックを変調させた変調クロックまたは前記論理回路内の信号の伝播を遅らせる信号遅延を前記論理回路に挿入することによって前記遅延を発生させた前記論理回路のシミュレーションにより前記論理回路の動作を検証することを特徴とする付記１５記載の非同期回路検証システム。
【０１６２】
（付記１７）  前記検証手段は、前記変調クロックを前記論理回路に挿入する場合には、前記論理回路のクロックパスにクロック変調タスクを挿入し、前記クロック変調タスクに対して前記変調クロックを挿入することを特徴とする付記１６記載の非同期回路検証システム。
【０１６３】
（付記１８）  前記検証手段は、前記変調クロックを前記論理回路に挿入する場合には、前記パラメータを用い、変調を与える変調対象クロックの１周期ごとに前記変調クロックを生成し、生成した前記変調クロックを前記論理回路に挿入することを特徴とする付記１６記載の非同期回路検証システム。
【０１６４】
（付記１９）  前記検証手段は、前記信号遅延を前記論理回路に挿入する場合には、前記論理回路内に遅延制御タスクを挿入し、前記遅延制御タスクに対して前記信号遅延を挿入することを特徴とする付記１６記載の非同期回路検証システム。
【０１６５】
（付記２０）  前記検証手段は、前記信号遅延を前記論理回路に挿入する場合には、挿入する前記信号遅延の遅延量をシミュレーションごとに計算し、シミュレーション後に一の遅延量が指定されたときには前記一の遅延量によって前記遅延を発生させることを特徴とする付記１６記載の非同期回路検証システム。
【０１６６】
（付記２１）  非同期回路の動作を検証する非同期回路検証システムにおいて、
レジスタ・トランスファ・レベルの論理回路に存在する非同期箇所に制御タスクを挿入する挿入手段と、
前記制御タスクが挿入された前記論理回路のシミュレーション段階で前記制御タスクを用いて前記論理回路に遅延を発生させる遅延発生手段と、
を有することを特徴とする非同期回路検証システム。
【０１６７】
（付記２２）  前記遅延発生手段は、パラメータを用いて前記論理回路内のクロックを変調させた変調クロックまたは前記論理回路内の信号の伝播を遅らせる信号遅延を前記制御タスクに挿入することによって前記遅延を発生させることを特徴とする付記２１記載の非同期回路検証システム。
【図面の簡単な説明】
【０１６８】
【図１】非同期回路検証システムの概略説明図である。
【図２】非同期回路検証環境の概念図である。
【図３】非同期回路検証システムの構成例である。
【図４】クロック・遅延制御部の処理フローである。
【図５】非同期回路検証システムを利用した回路設計フローの一例である。
【図６】非同期回路の動作検証による効果の説明図である。
【図７】クロック変調タスクの説明図である。
【図８】Ｐｈａｓｅ Ｓｋｅｗの説明図である。
【図９】Ｄｕｔｙの説明図である。
【図１０】Ｊｉｔｔｅｒの説明図である。
【図１１】クロック変調の説明図である。
【図１２】クロック変調による信号変化の一例である。
【図１３】信号遅延の説明図である。
【図１４】強制遅延制御の説明図である。
【図１５】ビット幅を持つ信号の各ビットに対して遅延挿入を行う場合の説明図である。
【図１６】送信側出力信号の遅延挿入パラメータ制御の説明図である。
【図１７】受信側入力信号の遅延挿入パラメータ制御の説明図である。
【図１８】遅延挿入による信号変化の一例である。
【図１９】コンピュータのハードウェア構成例である。
【図２０】ＴＢｒｉｄｇｅ＿ｔｏｐ回路の信号伝播を示す図である。
【図２１】ＴＢｒｉｄｇｅ＿ｔｏｐ回路の回路構成図である。
【図２２】ＴＢｒｉｄｇｅ＿ｔｏｐ回路の非同期リストである。
【図２３】コントロールカード（その１）である。
【図２４】コントロールカード（その２）である。
【図２５】ＴＢｒｉｄｇｅ＿ｔｏｐ回路の論理設計時に想定されたタイミングチャートである。
【図２６】従来のＲＴＬ論理シミュレーションによる検証結果の一部である。
【図２７】非同期回路検証システムを用いたＲＴＬ論理シミュレーションによる検証結果の一部である。
【図２８】推察される障害発生時のタイミングチャートである。
【図２９】障害対策済みＴＢｒｉｄｇｅ＿ｔｏｐ回路のタイミングチャートである。
【図３０】従来の回路設計フローの一例である。
【図３１】非同期回路の基本構成例である。
【図３２】メタステーブルの説明図である。
【図３３】レーシングの説明図である。
【図３４】オーバーディレイの説明図である。
【図３５】非同期回路の別の構成例（その１）である。
【図３６】非同期回路の別の構成例（その２）である。
【図３７】非同期回路の障害発生例の説明図である。
【図３８】従来提案されている非同期回路の検証方法の説明図である。
【符号の説明】
【０１６９】
１，３１  ＲＴＬ
２  論理検証環境
３  非同期回路検証環境
３ａ  非同期回路検証システム
１０  非同期抽出部
１１  非同期抽出プログラム
１２，１２ａ  非同期リスト
２０  制御タスク挿入部
２１，２１ａ  コントロールカード
３０  シミュレーション部
３２  テストベンチ
３３  シミュレータ
３４  デバイスモデル
４０  クロック・遅延制御部
４１  コントロール部
４２  クロック変調部
４３  遅延制御部
５０  集計部
５１  ログ・結果
５２  試験成績書
５３  ログ・カバレッジ部
５４  モニタ部
６０  上位モジュール
６１  内部モジュール
６２  クロック変調タスク
７０  変調対象クロック
７１  変調クロック
８０  送信側回路
８１  受信側回路
９０  コンピュータ
９１  ＣＰＵ
９２  ＲＯＭ
９３  ＲＡＭ
９４  ＨＤＤ
９５  グラフィック処理部
９５ａ  表示装置
９６  入力Ｉ／Ｆ
９６ａ  マウス
９６ｂ  キーボード
９７  通信Ｉ／Ｆ
９８  バス
１００  ＴＢｒｉｄｇｅ＿ｔｏｐ回路
１１０  ＦｒｏｎｔＲｅｃｅｉｖｅｒ
１１１  ＦＲ＿ｃｏｎｔｒｏｌ
１１２  ＦＴ＿ｃｏｎｔｒｏｌ
１２０  ＡｆｔｅｒＴｒａｎｓｃｅｉｖｅｒ
１２１  ＡＲ＿ｃｏｎｔｒｏｌ
１２２  ＡＴ＿ｃｏｎｔｒｏｌ
１３０  ＳｅｔＣｌｏｃｋ部
１４０  ＳｅｔＳｉｇｎａｌ部
１４１，１４２，１４３  ＳｅｔＳｉｇｎａｌ部
【図１】
2005284426.tif 000003
【図２】
2005284426.tif 000004
【図３】
2005284426.tif 000005
【図４】
2005284426.tif 000006
【図５】
2005284426.tif 000007
【図６】
2005284426.tif 000008
【図７】
2005284426.tif 000009
【図８】
2005284426.tif 000010
【図９】
2005284426.tif 000011
【図１０】
2005284426.tif 000012
【図１１】
2005284426.tif 000013
【図１２】
2005284426.tif 000014
【図１３】
2005284426.tif 000015
【図１４】
2005284426.tif 000016
【図１５】
2005284426.tif 000017
【図１６】
2005284426.tif 000018
【図１７】
2005284426.tif 000019
【図１８】
2005284426.tif 000020
【図１９】
2005284426.tif 000021
【図２０】
2005284426.tif 000022
【図２１】
2005284426.tif 000023
【図２２】
2005284426.tif 000024
【図２３】
2005284426.tif 000025
【図２４】
2005284426.tif 000026
【図２５】
2005284426.tif 000027
【図２６】
2005284426.tif 000028
【図２７】
2005284426.tif 000029
【図２８】
2005284426.tif 000030
【図２９】
2005284426.tif 000031
【図３０】
2005284426.tif 000032
【図３１】
2005284426.tif 000033
【図３２】
2005284426.tif 000034
【図３３】
2005284426.tif 000035
【図３４】
2005284426.tif 000036
【図３５】
2005284426.tif 000037
【図３６】
2005284426.tif 000038
【図３７】
2005284426.tif 000039
【図３８】
2005284426.tif 000040