(57)【要約】【課題】簡易かつ容易に、非同期データパスを含む半導体装置を設計することができる半導体設計装置、および、非同期データパスを含む半導体装置を提供する。【解決手段】ＦＦ挿入部９は、非同期データパスにフリップフロップ（ＦＦ１）を挿入する。遅延設定部８は、非同期データパスの受信側のＦＦ（ＦＦ２）においてメタステーブル収束時間Ｔｒがクロックツリー（ＣＴ）のレイテンシＴｃｌよりも短いときには、ＣＴのあるノードから出力される第１のクロックをＦＦ１の入力クロックに設定し、ＣＴの別のノードから出力され、かつ第１のクロックよりもＴｒだけ遅延した第２のクロックをＦＦ２の入力クロックに設定する。遅延設定部８は、ＴｒがＴｃｌ以上のときには、第１のクロックをＦＦ１の入力クロックに設定し、第１のクロックをＴｒだけ遅延回路で遅延させた第２のクロックをＦＦ２の入力クロックに設定する。【選択図】図１
2012159960.tif 000002
【特許請求の範囲】
【請求項１】
半導体装置の設計データを記憶する記憶部と、
前記設計データに基づいて、前記半導体装置に含まれる非同期パスを検出する検出部と、
前記検出した非同期パスに第１のフリップフロップを挿入する挿入部と、
前記挿入したフリップフロップにおいてメタステーブル状態が開始してから終了するまでのメタステーブル収束時間がクロックツリーのレイテンシよりも短いときには、前記クロックツリーのあるノードから出力される第１のクロックを前記第１のフリップフロップのクロック端子の入力に設定し、前記クロックツリーの別のノードから出力され、かつ前記第１のクロックよりも前記メタステーブル収束時間だけ遅延した第２のクロックを前記検出された非同期パスの受信側のフリップフロップのクロック端子の入力に設定する遅延設定部とを備え、
前記遅延設定部は、前記メタステーブル収束時間がクロックツリーのレイテンシ以上のときには、前記クロックツリーのあるノードから出力される第１のクロックを前記第１のフリップフロップのクロック端子の入力に設定し、前記第１のクロックを前記メタステーブル収束時間だけ、前記クロックツリー以外の遅延回路で遅延させた第２のクロックを前記検出された非同期パスの受信側のフリップフロップのクロック端子の入力に設定する、半導体設計装置。
【請求項２】
半導体装置の設計データを記憶する記憶部と、
前記設計データに基づいて、前記半導体装置に含まれる非同期パスを検出する検出部と、
前記検出した非同期パスに、第１のフリップフロップと、前記第１のフリップフロップからデータを受ける第２のフリップフロップを挿入する挿入部と、
前記挿入した第１のフリップフロップにおいてメタステーブル状態が開始してから終了するまでのメタステーブル収束時間がクロックツリーのレイテンシよりも短いときには、前記クロックツリーのあるノードから出力される第１のクロックを前記第１のフリップフロップのクロック端子の入力および前記検出された非同期パスの受信側のフリップフロップのクロック端子の入力に設定し、前記クロックツリーの別のノードから出力され、かつ前記第１のクロックとの位相差が前記メタステーブル収束時間となる第２のクロックを前記第２のフリップフロップのクロック端子の入力に設定する遅延設定部とを備え、
前記遅延設定部は、前記メタステーブル収束時間がクロックツリーのレイテンシ以上のときには、前記クロックツリーのあるノードから出力される第１のクロックを前記第１のフリップフロップのクロック端子の入力および前記検出された非同期パスの受信側のフリップフロップのクロック端子の入力に設定し、前記第１のクロックを前記メタステーブル収束時間だけ、前記クロックツリー以外の遅延回路で遅延させた第２のクロックを前記第２のフリップフロップのクロック端子の入力に設定する、半導体設計装置。
【請求項３】
互いに同期しないクロックで動作する第１の回路ブロックと第２の回路ブロックとの間に接続されたフリップフロップと、
第１のクロックと第２のクロックが入力されて、いずれかのクロックを前記フリップフロップのクロック端子へ出力するセレクタとを備え、
前記第２のクロックが、前記第２の回路ブロックのフリップフロップのクロック端子に入力され、
前記第２のクロックは、前記第１のクロックを前記第２の回路ブロックのフリップフロップにおいてメタステーブル状態が開始してから終了するまでのメタステーブル収束時間だけ遅延した信号である、半導体装置。
【請求項４】
互いに同期しないクロックで動作する第１の回路ブロックと第２の回路ブロックとの間に接続された前段の第１のフリップフロップおよび後段の第２のフリップフロップと、
第１のクロックと第２のクロックが入力されて、いずれかのクロックを前記第２のフリップフロップのクロック端子へ出力するセレクタとを備え、
前記第１のクロックが、第２の回路ブロックのフリップフロップのクロック端子および前記第１のフリップフロップのクロック端子に入力され、
前記第２のクロックは、前記第１のクロックを前記第２の回路ブロックのフリップフロップにおいてメタステーブル状態が開始してから終了するまでのメタステーブル収束時間だけ遅延した信号である、半導体装置。
【請求項５】
前記第１のクロックおよび前記第２のクロックは、クロックツリーのそれぞれ異なるノードから出力された信号である、請求項３または４に記載の半導体装置。
【請求項６】
前記第２のクロックは、前記クロックツリーの末端のノードから出力された信号である、請求項５記載の半導体装置。
【請求項７】
前記第１のクロックを前記メタステーブル収束時間だけ遅延させて前記第２のクロックを出力する遅延回路をさらに備える、請求項３または４に記載の半導体装置。
【請求項８】
半導体装置の設計データを記憶する記憶部と、
前記設計データに基づいて、前記半導体装置に含まれる、それぞれ異なるクロックで動作する第１の回路ブロックと第２の回路ブロックの間の非同期パスに挿入された同期化回路を検出する検出部と、
前記第２の回路ブロックの入力の論理を前記挿入された同期化回路を削除することによって、論理圧縮する圧縮部と、
前記同期化回路挿入前の前記第２の回路ブロックの入力の論理と、前記圧縮後の前記第２の回路ブロックの入力の論理が一致するか否かを判定する一致判定部とを備えた、半導体設計装置。
【請求項９】
半導体装置の設計データを記憶する記憶部と、
前記設計データに基づいて、論理シミュレーション時に、タイミング違反した信号が入力されるフリップフロップを検出する検出部と、
論理シミュレーション時に、タイミング違反した時点で、前記検出したフリップフロップのシミュレーション上の出力を不定値に設定し、かつその後前記検出したフリップフロップにおいてメタステーブル状態が開始してから終了するまでのメタステーブル収束時間経過後に、前記フリップフロップのシミュレーション上の出力を不定値から確定値に戻す設定部とを備えた、半導体設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体設計装置および半導体装置に関する。
【背景技術】
【０００２】
非同期パス設計は難易度が高く、かつ、チップばらつきやチップの外部環境が大きく影響するため、十分なスクリーニングができず不良品がフィールドに流出してしまうことがある。
【０００３】
そのための対策として、たとえば、特許文献１（特開２００２−２１５５６８号公報）には、データの転送基準となるデータ転送基準信号と、該データ転送基準信号と対になって転送される転送データとで行なう非同期データ転送方法において、送信側においては、前記転送データの確定基準タイミングを、データ転送基準信号のアサート・タイミングのクロック・エッジとし、受信側においては、最初に転送基準信号のアサートを検出したクロック・エッジでサンプリングした転送データを使用することを特徴とする非同期データ転送方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２１５５６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１（特開２００２−２１５５６８号公報）に記載される方式は、回路のオーバーヘッドによるコストが大きい上、同期設計をベースとしたプラットフォーム設計に乗らず、設計者のスキル不足によって不良品が流出したり、設計ＴＡＴ(Turn Around Time)が長期化するなどの問題がある。
【０００６】
それゆえに、本発明の目的は、簡易かつ容易に、非同期パスを含む半導体装置を設計することができる半導体設計装置、および、非同期パスを含む半導体装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一実施形態の半導体設計装置は、半導体装置の設計データを記憶する記憶部と、設計データに基づいて、半導体装置に含まれる非同期パスを検出する検出部と、検出した非同期パスに第１のフリップフロップを挿入する挿入部と、挿入したフリップフロップにおいてメタステーブル状態が開始してから終了するまでのメタステーブル収束時間がクロックツリーのレイテンシよりも短いときには、クロックツリーのあるノードから出力される第１のクロックを第１のフリップフロップのクロック端子の入力に設定し、クロックツリーの別のノードから出力され、かつ第１のクロックよりもメタステーブル収束時間だけ遅延した第２のクロックを検出された非同期パスの受信側のフリップフロップのクロック端子の入力に設定する遅延設定部とを備え、遅延設定部は、メタステーブル収束時間がクロックツリーのレイテンシ以上のときには、クロックツリーのあるノードから出力される第１のクロックを第１のフリップフロップのクロック端子の入力に設定し、第１のクロックをメタステーブル収束時間だけ、クロックツリー以外の遅延回路で遅延させた第２のクロックを検出された非同期パスの受信側のフリップフロップのクロック端子の入力に設定する。
【発明の効果】
【０００８】
本発明の一実施形態によれば、簡易かつ容易に、非同期パスを含む半導体装置を設計することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の半導体設計装置の構成を表わす図である。
【図２】第１の実施形態の半導体設計装置の動作手順を表わすフローチャートである。
【図３】図２の同期化回路挿入処理の具体的な処理手順を表わすフローチャートである。
【図４】非同期バスの送信側の回路ブロック、および非同期パスの受信側の回路ブロックを表わす図である。
【図５】Ｔｃｌ≧Ｔｒの場合に、図４の非同期パスに挿入される同期化回路を表わす図である。
【図６】Ｔｃｌ＜Ｔｒの場合に、図４の非同期パスに挿入される同期化回路を表わす図である。
【図７】図２の同期化挿入処理の具体的な処理手順の別の例を表わすフローチャートである。
【図８】Ｔｃｌ≧Ｔｒの場合に、図４の非同期パスに挿入される同期化回路を表わす図である。
【図９】Ｔｃｌ＜Ｔｒの場合に、図４の非同期パスに挿入される同期化回路を表わす図である。
【図１０】本発明の第２の実施形態の半導体チップの構成を表わす図である。
【図１１】非同期バスの送信側の第１の回路ブロック、非同期パスの受信側の第２の回路ブロック、および非同期パスに挿入された同期化回路の例を表わす図である。
【図１２】非同期バスの送信側の第１の回路ブロック、非同期パスの受信側の第２の回路ブロック、および非同期パスに挿入された同期化回路の別の例を表わす図である。
【図１３】非同期バスの送信側の第１の回路ブロック、非同期パスの受信側の第２の回路ブロック、および非同期パスに挿入された同期化回路のさらに別の例を表わす図である。
【図１４】非同期バスの送信側の第１の回路ブロック、非同期パスの受信側の第２の回路ブロック、および非同期パスに挿入された同期化回路のさらに別の例を表わす図である。
【図１５】第３の実施形態の半導体設計装置の構成を表わす図である。
【図１６】第３の実施形態の半導体設計装置の動作手順を表わすフローチャートである。
【図１７】図１６の形式検証処理の具体的な処理手順を表わすフローチャートである。
【図１８】同期化回路挿入前の非同期パスの送信側の第１の回路ブロックと、非同期パスの受信側の第２の回路ブロックを表わす図である。
【図１９】図１８の非同期パスに同期化回路が挿入された例を表わす図である。
【図２０】同期化回路挿入前の非同期パスの送信側の第１の回路ブロックと、非同期パスの受信側の第２の回路ブロックを表わす図である。
【図２１】図２０の非同期パスに同期化回路が挿入された例を表わす図である。
【図２２】第４の実施形態の半導体設計装置の構成を表わす図である。
【図２３】第４の実施形態の半導体設計装置の動作手順を表わすフローチャートである。
【図２４】図２３のタイミング検証処理の具体的な処理手順を表わすフローチャートである。
【図２５】タイミング検証対象の回路を表わす図である。
【図２６】従来のタイミング検証でのタイミングチャートである。
【図２７】第４の実施形態のタイミング検証でのタイミングチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を参照して説明する。
［第１の実施形態］
第１の実施形態では、非同期パスへの同期化回路の挿入に関する。
【００１１】
第１の実施形態は、従来のように非同期パスに複数段のフリップフロップ（以下、ＦＦ）を挿入して挿入周期分の時間を稼ぐことによって同期化を実現するのではなく、メタステーブル収束時間を算出し、その遅延時間だけ受信側のＦＦへ供給するクロックを遅らせることで同期化を実現する。
【００１２】
（半導体設計装置の構成）
図１は、第１の実施形態の半導体設計装置の構成を表わす図である。
【００１３】
図１を参照して、この半導体設計装置は、論理合成部２と、設計データ記憶部３と、同期化回路挿入部４と、タイミング検証部５と、形式検証部６とを備える。
【００１４】
論理合成部２は、抽象的な回路の動作に関する記述から半導体装置の論理設計を行って、半導体装置の設計データを作成し、設計データ記憶部３に書き込む。
【００１５】
設計データ記憶部３は、設計データを記憶する。
同期化回路挿入部４は、非同期パス検出部７と、遅延設定部８と、ＦＦ挿入部９とを備える。
【００１６】
非同期パス検出部７は、設計データに基づいて、半導体装置に含まれる非同期パスを検出する。ここで、非同期パスとは、周波数の異なる、互いに独立のクロックで動作している回路の間の転送バスをいう。
【００１７】
ＦＦ挿入部９は、検出された非同期パスにＦＦ（Ｄ型フリップフロップ）を挿入する。
遅延設定部８は、デバイス特性、回路制約、およびＭＴＢＦ（Mean time between failures）に基づいて、メタステーブル収束時間Ｔｒを算出する。メタステーブル状態とは、論理レベルがローレベルでもハイレベルでもない中途半端な中間レベルを保持する状態をいう。メタステーブル収束時間Ｔｒとは、非同期パスの受信側のＦＦにおいてメタステーブル状態が開始してから終了するまでの時間をいう。
【００１８】
たとえば、文献「Measuring metastability and its effect on communication signal processing systems」(Instrumentation and Measurement, IEEE Transactions)、Intel Corp.」には、メタステーブル収束時間Ｔｒ、デバイス依存の収束時間係数τ、デバイス依存のfailureウインドウＴ０、非同期パスの送信側の回路ブロックのクロックの周波数ｆｂ、非同期パスの受信側の回路ブロックのクロックの周波数ｆａ、ＭＴＢＦとの間に以下の関係が成立することが示されている。
【００１９】
ＭＴＢＦ＝ｅｘｐ（−Ｔｒ／τ）／（ｆｂ×ｆａ×Ｔ０）
遅延設定部８は、非同期パスの受信側のフリップフロップ（後述の挿入するＦＦ）のメタステーブル収束時間Ｔｒがクロックツリーのレイテンシ(遅延時間)Ｔｃｌよりも短いときには、クロックツリーのあるノードから出力される第１のクロックを挿入したＦＦのクロック端子の入力に設定する。遅延設定部８は、さらに、クロックツリーの別のノードから出力され、かつ第１のクロックよりもメタステーブル収束時間Ｔｒだけ遅延した第２のクロックを検出された非同期パスの受信側のフリップフロップのクロック端子の入力に設定する。
【００２０】
遅延設定部８は、非同期パスの受信側のフリップフロップ（後述の挿入するＦＦ）のメタステーブル収束時間ＴｒがクロックツリーのレイテンシＴｃｌ以上のときには、クロックツリーのあるノードから出力される第１のクロックを挿入したＦＦのクロック端子の入力に設定する。遅延設定部８は、第１のクロックをメタステーブル収束時間Ｔｒだけ、クロックツリー以外の遅延回路で遅延させた第２のクロックを検出された非同期パスの受信側のフリップフロップのクロック端子の入力に設定する。
【００２１】
ここで、クロックツリーのレイテンシとは、クロックツリーの末端（リーフ）から出力されるクロックが、クロックツリーのルートから出力されるクロックに対して遅延している時間を表わす。
【００２２】
タイミング検証部５は、設計された半導体装置が所望する周波数で動作するかの検証、およびタイミング規格値を満たしているかの検証を行なう。
【００２３】
形式検証部６は、同期化回路などの付加回路の追加前後で、半導体装置の論理が等価であるかの検証を行なう。
【００２４】
（全体動作）
図２は、第１の実施形態の半導体設計装置の動作手順を表わすフローチャートである。
【００２５】
図２を参照して、論理合成部２は、抽象的な回路の動作に関する記述から半導体装置の論理設計を行って、半導体装置の設計データを作成し、設計データ記憶部３に書き込む（ステップＳ１０１）。
【００２６】
次に、同期化回路挿入部４は、後述する本実施の形態に特有の、半導体装置に含まれる非同期バスに同期化回路を挿入する処理を実施する（ステップＳ１０２）。
【００２７】
次に、タイミング検証部５は、半導体装置のタイミング検証処理を実施する（ステップＳ１０３）。
【００２８】
次に、形式検証部６は、半導体装置の形式検証を実施する（ステップＳ１０４）。
（同期化回路の挿入処理）
図３は、図２の同期化回路挿入処理の具体的な処理手順を表わすフローチャートである。
【００２９】
図４は、非同期バスの送信側の回路ブロック（以下、第１の回路ブロック）、および非同期パスの受信側の回路ブロック（以下、第２の回路ブロック）を表わす図である。図５は、Ｔｃｌ≧Ｔｒの場合に、図４の非同期パスに挿入される同期化回路を表わす図である。図６は、Ｔｃｌ＜Ｔｒの場合に、図４の非同期パスに挿入される同期化回路を表わす図である。
【００３０】
図３〜図６を参照して、非同期パス検出部７は、設計データに基づいて、半導体装置に含まれる非同期パスを検索する（ステップＳ２０１）。
【００３１】
次に、遅延設定部８は、クロックツリーのレイテンシＴｃｌを取得する（ステップＳ２０２）。
【００３２】
ＦＦ挿入部９は、１つのＦＦを挿入する。図５および図６の例では、ＦＦ６２が挿入される（ステップＳ２０３）。
【００３３】
次に、遅延設定部８は、挿入したＦＦのメタステーブル収束時間Ｔｒを算出する（ステップＳ２０４）。
【００３４】
次に、ＴｃｌがＴｒよりも小さいときには（ステップＳ２０５でＹＥＳ）、遅延設定部８は、第２の回路ブロックのＦＦのクロック端子へのクロックを元々入力されているクロックφ２からＴｒ時間だけ遅延させたクロックφ３とする遅延回路を挿入する（ステップＳ２０６）。
【００３５】
さらに、遅延設定部８は、同期化のために挿入したＦＦのクロック端子へのクロックを第２の回路ブロックのＦＦのクロック端子に元々入力されていたクロックφ２に設定する。図６の例では、ＦＦ６２のクロック端子にクロックφ２が入力される（ステップＳ２０７）。
【００３６】
一方、ＴｃｌがＴｒ以上のときには（ステップＳ２０５でＮＯ）、遅延設定部８は、第２の回路ブロックのＦＦのクロック端子へのクロックを元のクロックφ２から変更して、クロックツリーのリーフ（末端）から出力されるクロックφ３に設定する。図５の例では、ＦＦ５５のクロック端子にクロックφ３が入力される（ステップＳ２０８）。
【００３７】
次に、遅延設定部８は、クロックツリーのリーフ（末端）から出力されるクロックφ３よりもＴｒ時間だけ早いクロックφ４（つまり、クロックツリーのルート側のクロック）をクロックツリーから取り出す。遅延設定部８は、同期化回路のＦＦのクロック端子へのクロックを取り出したクロックφ４に設定する。図５の例では、ＦＦ６２のクロック端子にクロックφ４が入力される（ステップＳ２０９）。
【００３８】
以上のように本実施の形態では、送信側の回路ブロックからのデータを受信側周波数で動作する同期化のためのＦＦでサンプリングし、受信側の回路ブロックでメタステーブル収束時間経過後に当該データをサンプルすることで、受信側の回路ブロックは、安定したデータをキャプチャすることができるので、設計スキルの乏しい設計者でもミスなく短ＴＡＴで非同期パスを設計することができる。
【００３９】
また、受信側の回路ブロックへ供給するクロックを遅らせるために、可能な限り、クロックツリーのレイテンシを利用するので、新たにArea/Powerのオーバーヘッドを生じることなく実装が可能である。
【００４０】
［第１の実施形態の変形例１］
この変形例では、ＦＦ挿入部９は、検出した非同期パスに、第１のフリップフロップ（前段のＦＦ）と、前段のＦＦからデータを受ける第２のフリップフロップ（後段のＦＦ）を挿入する。
【００４１】
遅延設定部８は、非同期パスの受信側のフリップフロップ（挿入する２段のＦＦの前段のＦＦ）のメタステーブル収束時間Ｔｒがクロックツリーの長さＴＣｌよりも短いときには、クロックツリーのあるノードから出力される第１のクロックを前段のＦＦのクロック端子の入力および検出された非同期データバスの受信側のフリップフロップのクロック端子の入力に設定する。遅延設定部８は、さらに、クロックツリーの別のノードから出力され、かつ第１のクロックとの位相差がメタステーブル収束時間Ｔｒとなる第２のクロックを後段のＦＦのクロック端子の入力に設定する。
【００４２】
遅延設定部８は、非同期パスの受信側のフリップフロップ（挿入する２段のＦＦの前段のＦＦ）のメタステーブル収束時間ＴｒがクロックツリーのレイテンシＴｃｌ以上のときには、クロックツリーのあるノードから出力される第１のクロックを前段のＦＦのクロック端子の入力および検出された非同期パスの受信側のフリップフロップのクロック端子の入力に設定する。遅延設定部８は、第１のクロックをメタステーブル収束時間Ｔｒだけ、クロックツリー以外の遅延回路で遅延させた第２のクロックを後段のＦＦのクロック端子の入力に設定する。
【００４３】
図７は、図２の同期化挿入処理の具体的な処理手順の別の例を表わすフローチャートである。
【００４４】
図８は、Ｔｃｌ≧Ｔｒの場合に、図４の非同期パスに挿入される同期化回路を表わす図である。図９は、Ｔｃｌ＜Ｔｒの場合に、図４の非同期パスに挿入される同期化回路を表わす図である。
【００４５】
図４、図７〜図９を参照して、非同期パス検出部７は、設計データに基づいて、半導体装置に含まれる非同期パスを検索する（ステップＳ３０１）。
【００４６】
次に、遅延設定部８は、クロックツリーのレイテンシＴｃｌを取得する（ステップＳ３０２）。
【００４７】
次に、ＦＦ挿入部９は、２段のＦＦを挿入する。図８および図９の例では、ＦＦ６４およびＦＦ６５が挿入される（ステップＳ３０３）。
【００４８】
次に、遅延設定部８は、挿入した２段のＦＦの前段のＦＦのメタステーブル収束時間Ｔｒを算出する（ステップＳ３０４）。
【００４９】
次に、ＴｃｌがＴｒよりも小さいときには（ステップＳ３０５でＹＥＳ）、遅延設定部８は、後段のＦＦのクロック端子へのクロックを、第２の回路ブロックのＦＦのクロック端子に元々入力されていたクロックφ２からＴｒ時間だけ遅延させる遅延回路を挿入する。図９の例では、遅延回路６７が挿入される（ステップＳ３０６）。
【００５０】
さらに、遅延設定部８は、前段のＦＦのクロック端子へのクロック、および第２の回路ブロックのＦＦのクロック端子へのクロックを第２の回路ブロックのＦＦのクロック端子に元々入力されていたクロックφ２に設定する。図９の例では、ＦＦ６４のクロック端子にクロックφ２が入力される（ステップＳ３０７）。
【００５１】
一方、ＴｃｌがＴｒ以上のときには（ステップＳ３０５でＮＯ）、遅延設定部８は、後段のＦＦのクロック端子へのクロックをクロックツリーの中間ノードからクロックφ３に設定する。図８の例では、ＦＦ６５のクロック端子にクロックφ３が入力される（ステップＳ３０８）。ここで、φ３は、φ３から後述のφ４の間の位相（遅延）差がＴｒ以上となるように選択される。
【００５２】
次に、遅延設定部８は、クロックツリーのリーフ（末端）からクロックφ４を取出す。遅延設定部８は、第２の回路ブロックのＦＦのクロック端子へのクロックをクロックφ２から変更して、クロックφ４に設定する。また、遅延設定部８は、前段のＦＦのクロック端子へのクロックをクロックφ４に設定する。図８の例では、ＦＦ５５およびＦＦ６４のクロック端子にクロックφ４が入力される（ステップＳ３０９）。
【００５３】
本変形例では、第１の実施形態と同様の効果が得られる。さらに、本変形例では、複数段のＦＦを用いるので、受信側の回路ブロックにおいて、より確実にデータを取込むことができる。
【００５４】
［第２の実施形態］
（半導体チップ）
図１０は、本発明の第２の実施形態の半導体チップの構成を表わす図である。
【００５５】
図１０を参照して、この半導体チップ７０は、ＣＰＵ（Central Processing Unit）１７３と、ＳＲＡＭ（Static Random Access Memory）７１と、フラッシュメモリ７２と、ＰＬＬ７９とを備える。ＣＰＵ１７３は、クロックツリー８２と、ＦＦ８３と、Ｌｏｇｉｃ８７とを備える。
【００５６】
ＰＬＬ７９は、基準クロックをクロックツリー８２へ出力する。クロックツリー８２は、複数段のバッファ８６（遅延素子）を含み、複数のノードからＣＰＵの各素子へクロックを供給する。
【００５７】
ＣＰＵ１７３と、ＳＲＡＭ７１およびフラッシュメモリ７２とは、データバス８０で接続される。
【００５８】
また、この半導体チップは、周辺ＩＰブロックとしてＩ２Ｃバスインタフェース５７４およびＵＳＢコントローラ５７５とを備え、さらにＰＬＬ７６とを備える。
【００５９】
ＣＰＵ１７３は、周辺バス８１を介して、Ｉ２Ｃバスインタフェース５７４およびＵＳＢコントローラ５７５と接続される。
【００６０】
ＰＬＬ７６は、基準クロックをＩ２Ｃバスインタフェース５７４内のクロックツリー（図示は省略）およびＵＳＢコントローラ５７５内のクロックツリー（図示は省略）へ出力する。これらのクロックツリーは、それぞれ複数段のバッファ（遅延素子）を含み、複数のノードから各素子へクロックを供給する。
【００６１】
ＣＰＵ１７３とＩ２Ｃバスインタフェース５７４とは、別個のクロックツリーから供給されるクロックで動作するので、ＣＰＵ１７３とＩ２Ｃバスインタフェース５７４との間のデータパスは、非同期で動作する。
【００６２】
同様に、ＣＰＵ１７３とＵＳＢコントローラ５７５とは、別個のクロックツリーから供給されるクロックで動作するので、ＣＰＵ１７３とＵＳＢコントローラ５７５との間のデータパスは、非同期で動作する。
【００６３】
ＣＰＵ１７３（送信側回路ブロック）からＩ２Ｃバスインタフェース５７４(受信側回路ブロック）への非同期パスには、同期化回路７７が挿入されている。
【００６４】
ＣＰＵ１７３（送信側回路ブロック）からＵＳＢコントローラ５７５（受信側回路ブロック）への非同期パスには、同期化回路７８が挿入されている。
【００６５】
同期化回路７７および同期化回路７８は、端子Ｔｍからテスト信号ＴＥＳＴを受ける。
（同期化回路）
次に、図１０の同期化回路７７の詳細を説明する。同期化回路７８も、これと同様である。
【００６６】
図１１は、非同期データバスの送信側の第１の回路ブロック、非同期パスの受信側の第２の回路ブロック、および非同期パスに挿入された同期化回路の例を表わす図である。
【００６７】
第１の回路ブロック７４は、ＦＦ８４を備える。ＦＦ８４のクロック端子には、クロックφ１が入力される。
【００６８】
同期化回路７７は、ＦＦ９１と、セレクタ１８８を備える。
セレクタ１８８は、第１のクロックφ４と第２のクロックφ３とが入力される。第２のクロックφ３は、第１のクロックφ４をＦＦ９１のメタステーブル収束時間Ｔｒだけ遅延させた信号である。第１のクロックφ４と第２のクロックφ３とは、クロックツリー８２の別個のノードから供給される。第２のクロックφ３は、クロックツリーの末端（リーフ）から出力されるクロックとする。第１のクロックφ４は、クロックツリーの末端（リーフ）よりもルート側のノードから出力される。
【００６９】
セレクタ１８８は、テスト時にはテスト信号ＴＥＳＴが活性化され、第２のクロックφ３をＦＦ９１のクロック端子へ出力する。これにより、テスト時には、ＦＦ８３とＦＦ９１とは、同一のクロックφ３で動作する。セレクタ１８８は、通常時にはテスト信号ＴＥＳＴが非活性化され、第１のクロックφ４をＦＦ９１のクロック端子へ出力する。ＦＦ９１は、ＦＦ８４の出力を受ける。ＦＦ９１のクロック端子には、セレクタ１８８の出力が入力される。
【００７０】
第２の回路ブロック７３は、Ｌｏｇｉｃ８７と、ＦＦ８３とを備える。
Ｌｏｇｉｃ８７は、同期化回路７７内のＦＦ９１の出力を受けて、論理演算処理を行なって、その結果をＦＦ８３へ出力する。
【００７１】
ＦＦ８３は、Ｌｏｇｉｃ８７からの出力を受ける。ＦＦ８３のクロック端子には、第２のクロックφ３が入力される。
【００７２】
［第２の実施形態の変形例１］
図１２は、非同期データバスの送信側の第１の回路ブロック、非同期パスの受信側の第２の回路ブロック、および非同期パスに挿入された同期化回路の別の例を表わす図である。
【００７３】
第１の回路ブロック７４は、ＦＦ８４を備える。ＦＦ８４のクロック端子には、クロックφ１が入力される。
【００７４】
同期化回路７７は、ＦＦ９１と、セレクタ１８８と、遅延回路９０を備える。
遅延回路９０は、第１のクロックφ２をＦＦ９１のメタステーブル収束時間Ｔｒだけ遅延させて、第２のクロックφ３を出力する。第１のクロックφ２は、クロックツリー８２から供給される。
【００７５】
セレクタ１８８は、第２のクロックφ３と、第１のクロックφ２とが入力される。セレクタ１８８は、テスト時にはテスト信号ＴＥＳＴが活性化され、第２のクロックφ３をＦＦ９１のクロック端子へ出力する。これにより、テスト時には、ＦＦ８３とＦＦ９１とは、同一のクロックφ３で動作する。セレクタ１８８は、通常時にはテスト信号ＴＥＳＴが非活性化され、第１のクロックφ２をＦＦ９１のクロック端子へ出力する。ＦＦ９１は、ＦＦ８４の出力を受ける。ＦＦ９１のクロック端子には、セレクタ１８８の出力が入力される。
【００７６】
第２の回路ブロック７３は、Ｌｏｇｉｃ８７と、ＦＦ８３とを備える。
Ｌｏｇｉｃ８７は、同期化回路７７内のＦＦ９１の出力を受けて、論理演算処理を行なって、その結果をＦＦ８３へ出力する。
【００７７】
ＦＦ８３は、Ｌｏｇｉｃ８７からの出力を受ける。ＦＦ８３のクロック端子には、第２のクロックφ３が入力される。
【００７８】
［第２の実施形態の変形例２］
図１３は、非同期データバスの送信側の第１の回路ブロック、非同期パスの受信側の第２の回路ブロック、および非同期パスに挿入された同期化回路のさらに別の例を表わす図である。
【００７９】
第１の回路ブロック７４は、ＦＦ８４を備える。ＦＦ８４のクロック端子には、クロックφ１が入力される。
【００８０】
同期化回路７７は、前段のＦＦ９３と、後段のＦＦ９２と、セレクタ９４を備える。
セレクタ９４は、第１のクロックφ４と第２のクロックφ３とが入力される。第２のクロックφ３は、第１のクロックφ４をＦＦ９３のメタステーブル収束時間Ｔｒだけ位相を遅らせた信号である。第１のクロックφ４と第２のクロックφ３とは、クロックツリー８２の別個のノードから供給される。たとえば、第１のクロックφ４は、クロックツリーの末端（リーフ）から出力されるクロックとする。第２のクロックφ３は、クロックツリーの末端（リーフ）よりもルート側のノードから出力される。ここでφ３とφ４の間にはＴｒ以上の位相（遅延）差を確保するものとする。
【００８１】
セレクタ９４は、テスト時にはテスト信号ＴＥＳＴが活性化され、第１のクロックφ４をＦＦ９２のクロック端子へ出力する。これにより、テスト時には、ＦＦ８３とＦＦ９３とＦＦ９２とは、同一のクロックφ４で動作する。セレクタ９４は、通常時にはテスト信号ＴＥＳＴが非活性化され、第２のクロックφ３をＦＦ９２のクロック端子へ出力する。
【００８２】
ＦＦ９３は、ＦＦ８４の出力を受ける。ＦＦ９３のクロック端子には、第１のクロックφ４が入力される。
【００８３】
ＦＦ９２は、ＦＦ９３の出力を受ける。ＦＦ９２のクロック端子には、セレクタ９４の出力が入力される。
【００８４】
第２の回路ブロック７３は、Ｌｏｇｉｃ８７と、ＦＦ８３とを備える。
Ｌｏｇｉｃ８７は、同期化回路７７内のＦＦ９２の出力を受けて、論理演算処理を行なって、その結果をＦＦ８３へ出力する。
【００８５】
ＦＦ８３は、Ｌｏｇｉｃ８７からの出力を受ける。ＦＦ８３のクロック端子には、第１のクロックφ４が入力される。
【００８６】
［第２の実施形態の変形例３］
図１４は、非同期データバスの送信側の第１の回路ブロック、非同期パスの受信側の第２の回路ブロック、および非同期パスに挿入された同期化回路のさらに別の例を表わす図である。
【００８７】
第１の回路ブロック７４は、ＦＦ８４を備える。ＦＦ８４のクロック端子には、クロックφ１が入力される。
【００８８】
同期化回路７７は、前段のＦＦ９３と、後段のＦＦ９２と、セレクタ９４と、遅延回路９５を備える。
【００８９】
遅延回路９５は、第１のクロックφ２をＦＦ９３のメタステーブル収束時間Ｔｒだけ遅延させて、第２のクロックφ３を出力する。第１のクロックφ２は、クロックツリー８２のノードから供給される。
【００９０】
セレクタ９４は、第１のクロックφ２と第２のクロックφ３とが入力される。セレクタ９４は、テスト時にはテスト信号ＴＥＳＴが活性化され、第１のクロックφ２をＦＦ９２のクロック端子へ出力する。これにより、テスト時には、ＦＦ８３とＦＦ９３とＦＦ９２とは、同一のクロックφ２で動作する。セレクタ９４は、通常時にはテスト信号ＴＥＳＴが非活性化され、第２のクロックφ３をＦＦ９２のクロック端子へ出力する。
【００９１】
ＦＦ９３は、ＦＦ８４の出力を受ける。ＦＦ９３のクロック端子には、第１のクロックφ２が入力される。
【００９２】
ＦＦ９２は、ＦＦ９３の出力を受ける。ＦＦ９２のクロック端子には、セレクタ９４の出力が入力される。
【００９３】
第２の回路ブロック７３は、Ｌｏｇｉｃ８７と、ＦＦ８３とを備える。
Ｌｏｇｉｃ８７は、同期化回路７７内のＦＦ９２の出力を受けて、論理演算処理を行なって、その結果をＦＦ８３へ出力する。
【００９４】
ＦＦ８３は、Ｌｏｇｉｃ８７からの出力を受ける。ＦＦ８３のクロック端子には、第１のクロックφ２が入力される。
【００９５】
以上のように、第２の実施形態、および第２の実施形態の変形例によれば、送信側の回路ブロックからのデータを受信側周波数で動作する同期化のためのＦＦでサンプリングし、受信側の回路ブロックでメタステーブル収束時間経過後に当該データをサンプルすることで、受信側の回路ブロックは、安定したデータをキャプチャすることができる。
【００９６】
また、同期化回路内にセレクタを設けて、テスト時には、同期化回路と、受信側の回路ブロックとを同一のクロックで動作させることができる。
【００９７】
なお、第２の実施形態、および変形例２において、第２のクロックφ３が、クロックツリーの末端（リーフ）から出力されるクロックとしたが、これに限定するものではない。第１のクロックと第２のクロックとが、クロックツリー内にメタステーブル収束時間だけ異なるノードから出力されるものであれば、どのようなものであってもよい。
【００９８】
［第３の実施形態］
図１５は、第３の実施形態の半導体設計装置の構成を表わす図である。
【００９９】
図１５の半導体設計装置１１が、図１の半導体設計装置１と相違する点は、形式検証部１２である。
【０１００】
形式検証部１２は、同期化回路検出部１４と、論理圧縮部１５と、一致判定部１６とを備える。
【０１０１】
同期化回路検出部１４は、それぞれ異なるクロックで動作する第１の回路ブロックと第２の回路ブロックの間の非同期パスを検出する。同期化回路検出部１４は、非同期パスに挿入された同期化回路を検出する。
【０１０２】
論理圧縮部１５は、挿入された同期化回路を削除することによって、第２の回路ブロックの入力の論理を論理圧縮する。
【０１０３】
一致判定部１６は、同期化回路挿入前の第２の回路ブロックの入力の論理と、論理圧縮後の第２の回路ブロックの入力の論理が一致するか否かを判定する。
【０１０４】
（全体動作）
図１６は、第３の実施形態の半導体設計装置の動作手順を表わすフローチャートである。
【０１０５】
図１６を参照して、論理合成部２は、抽象的な回路の動作に関する記述から半導体装置の論理設計を行って、半導体装置の設計データを作成し、設計データ記憶部３に書き込む（ステップＳ４０１）。
【０１０６】
次に、同期化回路挿入部４は、半導体装置に含まれる非同期データバスに同期化回路を挿入する処理を実施する（ステップＳ４０２）。
【０１０７】
次に、タイミング検証部５は、半導体装置のタイミング検証処理を実施する（ステップＳ４０３）。
【０１０８】
次に、形式検証部１２は、後述する本発明の実施形態に特有の、半導体装置の形式検証を実施する（ステップＳ４０４）。
【０１０９】
（形式検証処理）
図１７は、図１６の形式検証処理の具体的な処理手順を表わすフローチャートである。
【０１１０】
図１７を参照して、まず、同期化回路検出部１４は、それぞれ異なるクロックで動作する第１の回路ブロックと第２の回路ブロックの間の非同期パスを検出する（ステップＳ５０１）。
【０１１１】
次に、同期化回路検出部１４は、非同期パスに挿入された同期化回路（前段のＦＦ１および後段のＦＦ２）を検出する（ステップＳ５０２）。
【０１１２】
次に、論理圧縮部１５は、ＦＦ２を削除することによって、第２の回路ブロックの入力の論理を論理圧縮する（ステップＳ５０３）。
【０１１３】
さらに、論理圧縮部１５は、ＦＦ１を削除することによって、第２の回路ブロックの入力の論理を論理圧縮する（ステップＳ５０４）。
【０１１４】
一致判定部１６は、論理圧縮後の論理が、同期化回路挿入前の論理と等しい場合には（ステップＳ５０５でＹＥＳ）、検証結果として一致を出力する（ステップＳ５０６）。
【０１１５】
一方、一致判定部１６は、論理圧縮後の論理が、同期化回路挿入前の論理と等しくない場合には（ステップＳ５０５でＮＯ）、検証結果として不一致を出力する（ステップＳ５０７）。
【０１１６】
（例１）
図１８は、同期化回路挿入前の非同期パスの送信側の第１の回路ブロックと、非同期パスの受信側の第２の回路ブロックを表わす図である。
【０１１７】
第１の回路ブロック５１のＦＦ５３の入力の論理をＦＡ１とする。第２の回路ブロック５２のＦＦ５５の入力の論理をＦＢ１とする。
【０１１８】
Ｌｏｇｉｃ５４は、特に論理演算を実行しないものとする。
ＦＦ５５の入力の論理をＦＢ１は、
ＦＢ１＝ＦＡ１＠φ１  ・・・（２−１）
と表わされる。ここで、＠以下は、クロックドメインを表わす。
【０１１９】
図１９は、図１８の非同期パスに同期化回路が挿入された例を表わす図である。
同期化回路検出部１４は、前段のＦＦ６４は、クロックφ４に同期してデータがラッチされているが、ＦＦ６４へのデータ入力は、クロックφ４とは別のクロックドメインのクロックφ１に同期して生成されたものであるため、非同期転送がなされていることを認識する。さらに、同期化回路検出部は、ＦＦ６４をフォワードトレースすると、後段のＦＦ６５が見つかり、その他の分岐はないことを認識する。さらに、同期化回路検出部１４は、ＦＦ６５をフォワードトレースし、Ｌｏｇｉｃ５４を経由して、ＦＦ５５が見つかり、その他の分岐がないことを認識する。したがって、同期化回路検出部１４は、ＦＦ６４およびＦＦ６５が同期化回路として挿入されていると判断する。
【０１２０】
同期化回路６３のＦＦ６４の入力の論理をＦＢ３とし、ＦＦ６５の入力の論理をＦＢ４とする。
【０１２１】
本実施の形態はファンクションの一致を検証するため、遅延は考慮しない。したがって、図１９の遅延クロックφ３はφ４と等価と判断される。
【０１２２】
ＦＦ５５の入力の論理をＦＢ１は、
ＦＢ１＝ＦＢ４＠φ４  ・・・（２−２）
となる。さらに、
ＦＢ４＝ＦＢ３＠φ４  ・・・（２−３）
ＦＢ３＝ＦＡ１＠φ１  ・・・（２−４）
と表わされる。
【０１２３】
論理圧縮部１５は、式（２−３）を用いて、ＦＦ６５を削除することによって、ＦＦ５５の入力の論理ＦＢ１を、以下のように論理圧縮する。
【０１２４】
ＦＢ１＝ＦＢ３＠φ４  ・・・（２−５）
さらに、論理圧縮部１５は、式（２−４）を用いて、ＦＦ６４を削除することによって、ＦＦ５５の入力の論理ＦＢ１を、以下のように論理圧縮する。
【０１２５】
ＦＢ１＝ＦＡ１＠φ１  ・・・（２−６）
一致判定部１６は、論理式（２−１）と論理式（２−６）とが一致するから、検証結果として一致を出力する。
【０１２６】
（例２）
図２０は、同期化回路挿入前の非同期パスの送信側の第１の回路ブロックと、非同期パスの受信側の第２の回路ブロックを表わす図である。
【０１２７】
第１の回路ブロック１６１のＦＦ１６３の入力の論理をＦＡ１とし、ＦＦ１６４の入力の論理をＦＡ２とする。
【０１２８】
第２の回路ブロック１６２のＦＦ１６７の入力の論理をＦＢ１とし、ＦＦ１６８の入力の論理をＦＢ２とする。
【０１２９】
Ｌｏｇｉｃ１６５は加算を実行し、Ｌｏｇｉｃ１６６は減算を実行するものとする。
ＦＦ１６７の入力の論理をＦＢ１は、
ＦＢ１＝（ＦＡ１＋ＦＡ２）＠φ１−ＦＢ２φ２  ・・・（３−１）
と表わされる。ここで、＠以下は、クロックドメインを表わす。
【０１３０】
図２１は、図２０の非同期パスに同期化回路が挿入された例を表わす図である。
同期化回路検出部１４は、ＦＦ６４は、クロックφ４に同期してデータがラッチされているが、ＦＦ６４へのデータ入力は、クロックφ４とは別のクロックドメインのクロックφ１に同期して生成されたものであるため、非同期転送がなされていることを認識する。さらに、同期化回路検出部１４は、ＦＦ６４をフォワードトレースすると、ＦＦ６５が見つかり、その他の分岐はないことを認識する。さらに、同期化回路検出部１４は、ＦＦ６５をフォワードトレースし、Ｌｏｇｉｃ１６６を経由して、ＦＦ１６７が見つかり、その他の分岐がないことを認識する。したがって、同期化回路検出部１４は、ＦＦ６４およびＦＦ６５が同期化回路として挿入されていると判断する。
【０１３１】
同期化回路６３のＦＦ６４の入力の論理をＦＢ３とし、ＦＦ６５の入力の論理をＦＢ４とする。なお、本実施の形態はファンクションの一致を検証するため、遅延は考慮しない。したがって、図１９の遅延クロックφ３はφ２と等価と判断される。
【０１３２】
ＦＦ１６７の入力の論理をＦＢ１は、
ＦＢ１＝ＦＢ４＠φ２−ＦＢ２φ２  ・・・（３−２）
となる。さらに、
ＦＢ４＝ＦＢ３＠φ２  ・・・（３−３）
ＦＢ３＝（ＦＡ１＋ＦＡ２）＠φ１  ・・・（３−４）
と表わされる。
【０１３３】
論理圧縮部１５は、式（３−３）を用いて、ＦＦ６５を削除することによって、ＦＦ１６７の入力の論理ＦＢ１を、以下のように論理圧縮する。
【０１３４】
ＦＢ１＝ＦＢ３＠φ２−ＦＢ２＠φ２  ・・・（３−５）
さらに、論理圧縮部１５は、式（３−４）を用いて、ＦＦ６４を削除することによって、ＦＦ１６７の入力の論理ＦＢ１を、以下のように論理圧縮する。
【０１３５】
ＦＢ１＝（ＦＡ１＋ＦＡ２）＠φ１−ＦＢ２φ２  ・・・（３−６）
一致判定部１６は、論理式（３−１）と論理式（３−６）とが一致するから、検証結果として一致を出力する。
【０１３６】
以上のように、本発明の実施形態によれば、同期化前後の回路の論理（ファンクション）が一致しているか否かを自動で検証できるので、同期化後に同期化前に行った膨大なファンクション検証を再実行する必要がなくなる。
【０１３７】
なお、本発明の実施形態の形式検証は、第１の実施形態および第２の実施形態で説明した同期化回路にのみ適用されるのではなく、その他の同期化回路の形式検証にも適用できる。
【０１３８】
［第４の実施形態］
本実施の形態では、メタステーブルの影響による誤動作をダイレクトに検証する形式検証に関する。
【０１３９】
通常、ＦＦはクロックのアクティブエッジの近郊でのデータ変化に対して、キャプチャデータの妥当性が保証できないため、セットアップおよびホールドのタイミング制約を設けている。
【０１４０】
従来の、タイミング検証を実施する論理シミュレータはこのようなタイミングエラー発生時に、ＦＦのシミュレーション上の論理値を不定(‘X’)に設定していた。しかし、次サイクル以降のクロックのアクティブエッジで確定値を取り込まない限り、設定した不定を消滅させることができないため、必要以上に不定が伝播する。しかしながら、タイミングエラー発生時に、実機のＦＦの論理値は、メタステーブル収束時間が経過した後、確定値に戻り、従来の論理シミュレータは、実機の動作を正確に反映していない。
【０１４１】
本発明の実施形態では、より実機の動作に近いタイミング検証を説明する。
図２２は、第４の実施形態の半導体設計装置の構成を表わす図である。
【０１４２】
図２２の半導体設計装置１７が、図１の半導体設計装置１と相違する点は、タイミング検証部１８である。この半導体設計装置１７は、図示しないが、さらに第１の実施形態で説明した同期化回路挿入部４を含むものとしてもよい。
【０１４３】
タイミング検証部１８は、タイミング違反検出部２０と、ＦＦ論理値設定部２１とを備える。
【０１４４】
タイミング違反検出部２０は、設計データに基づいて、論理シミュレーション時に、タイミング違反した信号が入力されるＦＦを検出する。
【０１４５】
ＦＦ論理値設定部２１は、論理シミュレーション時に、タイミング違反した時点で、検出したＦＦのシミュレーション上の出力を不定値に設定し、かつその後検出したＦＦにおけるメタステーブル収束時間経過後に、検出したＦＦのシミュレーション上の出力を不定値から確定値に戻す。
【０１４６】
（全体動作）
図２３は、第４の実施形態の半導体設計装置の動作手順を表わすフローチャートである。
【０１４７】
図２３を参照して、論理合成部２は、抽象的な回路の動作に関する記述から半導体装置の論理設計を行って、半導体装置の設計データを作成し、設計データ記憶部３に書き込む（ステップＳ６０１）。
【０１４８】
次に、タイミング検証部１８は、後述する本発明の実施形態に特有の、半導体装置のタイミング検証処理を実施する（ステップＳ６０３）。
【０１４９】
次に、形式検証部６は、半導体装置の形式検証を実施する（ステップＳ６０４）。
（タイミング検証処理）
図２４は、図２３のタイミング検証処理の具体的な処理手順を表わすフローチャートである。
【０１５０】
図２４を参照して、まず、タイミング違反検出部２０は、設計データに基づいて、論理シミュレーション時に、タイミング違反した信号が入力されるＦＦを検出した場合には（ステップＳ７０２でＹＥＳ）、ＦＦ論理値設定部２１は、タイミング違反した時点で、検出されたＦＦのシミュレーション上の論理値を不定にする（ステップＳ７０３）。
【０１５１】
さらに、ＦＦ論理値設定部２１は、検出されたＦＦにおけるメタステーブル収束時間Ｔｒ時間が経過した場合には（ステップＳ７０４でＹＥＳ）、検出したＦＦのシミュレーション上の論理値を確定値にもどす（ステップＳ７０５）。
【０１５２】
さらに、すべての部分が検証されていない場合には（ステップＳ７０６でＮＯ）、未検証部分に関して、ステップＳ７０２からの処理が繰返される。すべての部分が検証された場合には（ステップＳ７０６でＹＥＳ）、終了する。
【０１５３】
（例）
図２５は、タイミング検証対象の回路を表わす図である。
【０１５４】
図２６は、従来のタイミング検証でのタイミングチャートである。
図２６に示すように、Ｔ１の時点で、ClkAに同期しているＦＦ４４から出力される信号IntEnableがClkBに同期しているＦＦ４５のタイミング制約に違反したと仮定する。従来の論理シミュレータでは、図２４に示されるように、次サイクル以降のClkBの立ち上がりによって確定値がラッチされるまで、ＦＦ４５から出力される信号SyncEnableのシミュレーション上の論理値が不定に設定される。これによって、信号SyncEnableを受けるＦＦ４６から出力される信号Enable、および、信号Enableを受けるＭＵＸ４２から出力される信号SyncDataのシミュレーション上の論理値が、次サイクルにおいて不定になる。さらに、信号SyncDataを受けるＦＦ４３から出力される信号DataOutのシミュレーション上の論理値が、次々サイクルにおいて不定となる。
【０１５５】
この現象は、Ｔ２の時点、およびＴ３の時点でも同様に発生する。
したがって、従来手法では、実機において正しく同期化されていても、シミュレーションでは不定が伝播し、解析の妨げとなっていた。
【０１５６】
図２７は、第４の実施形態のタイミング検証でのタイミングチャートである。
図２６の従来例と同様に、Ｔ１の時点で、ClkAに同期しているＦＦ４４から出力される信号IntEnableがClkBに同期しているＦＦ４５のタイミング制約に違反したと仮定する。
【０１５７】
この場合、従来例と同様に、ＦＦ４５から出力される信号SyncEnableのシミュレーション上の論理値が不定に設定される。その後、ＦＦ４５のメタステーブル収束時間Ｔｒ経過後にＦＦ４５から出力される信号SyncEnableのシミュレーション上の論理値が不定値から確定値に戻される。
【０１５８】
メタステーブル収束時間ＴｒがClkBの周期ＴＰＢよりも小さいため、ＦＦ４６のセットアップ制約前にSyncEnableのシミュレーション上の論理値が確定値(‘1’)になる。その結果、次サイクルのEnable信号のシミュレーション上の論理値も確定値(‘1’)となり、SyncData、およびDataOutに不定が乗ることがない。つまり、後段への不必要な不定伝播が発生しない。
【０１５９】
ただし、メタステーブル収束時間ＴｒがClkBの周期ＴＰＢ以上の場合には、従来と同様に、ＦＦ４６は不定をラッチしてしまい、後段回路へ不定を伝播させてしまうことになる。
【０１６０】
以上のように、本実施の形態では、メタステーブル収束時間経過後にタイミング違反したＦＦのシミュレーション上の論理値を不定から確定値にすることで、不必要な不定伝播を防ぐことができ、より実機に近いシミュレーションが可能となる。また、実機では非同期パスのタイミングを網羅的に検証することが難しいが、本実施の形態によってシミュレーション上で実現することができる。
【０１６１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１６２】
１，１１，１７  半導体設計装置、２  論理合成部、３  設計データ記憶部、４  同期化回路挿入部、５  タイミング検証部、６，１２  形式検証部、７  非同期パス検出部、８  遅延設定部、９  ＦＦ挿入部、１４  同期化回路検出部、１５  論理圧縮部、１６  一致判定部、２０  タイミング違反検出部、２１  論理値設定部、５１，７４，１６１  第１の回路ブロック、５２，７３，１６２  第２の回路ブロック、４１，４３，４４，４５，４６，５３，５５，６２，６４，６５，８３，８４，８５，９１，９２，９３，１６３，１６４，１６７，１６８  ＦＦ、５４，８７，１６５，１６６  Ｌｏｇｉｃ、６１，６３，７７，７８  同期化回路、６６，６７，９０，９５  遅延回路、１８８，９４  セレクタ、４２  ＭＵＸ、７０  半導体チップ、７１  ＳＲＡＭ、７２  フラッシュメモリ、１７３  ＣＰＵ、５７４  Ｉ２Ｃバスインタフェース、５７５  ＵＳＢコントローラ、７６，７９  ＰＬＬ、８２  クロックツリー、８６  バッファ、８０  データバス、８１  周辺パス、Ｔｍ  端子。
【図１】
2012159960.tif 000003
【図２】
2012159960.tif 000004
【図３】
2012159960.tif 000005
【図４】
2012159960.tif 000006
【図５】
2012159960.tif 000007
【図６】
2012159960.tif 000008
【図７】
2012159960.tif 000009
【図８】
2012159960.tif 000010
【図９】
2012159960.tif 000011
【図１０】
2012159960.tif 000012
【図１１】
2012159960.tif 000013
【図１２】
2012159960.tif 000014
【図１３】
2012159960.tif 000015
【図１４】
2012159960.tif 000016
【図１５】
2012159960.tif 000017
【図１６】
2012159960.tif 000018
【図１７】
2012159960.tif 000019
【図１８】
2012159960.tif 000020
【図１９】
2012159960.tif 000021
【図２０】
2012159960.tif 000022
【図２１】
2012159960.tif 000023
【図２２】
2012159960.tif 000024
【図２３】
2012159960.tif 000025
【図２４】
2012159960.tif 000026
【図２５】
2012159960.tif 000027
【図２６】
2012159960.tif 000028
【図２７】
2012159960.tif 000029