(57)【要約】【課題】フリップフロップのタイミングエラーの発生時に、不要なエラーログの出力と不定伝搬を抑制して、デバッグの効率化を図る。【解決手段】送信部と受信部との間に、組み合わせ回路が接続された論理回路についての論理回路シミュレーターであって、受信部はフリップフロップであって、送信部と受信部との組み合わせ情報１１４を入力する情報入力手段１１０と、送信部の出力値の変化時において、該送信部の識別情報を付加する識別情報付加手段１２１と、送信部の出力値を、組み合わせ回路および受信部に伝搬させる際に、識別情報も合わせて伝搬させる識別情報伝搬手段１２２と、受信部においてタイミングエラーが発生する際に、識別情報における送信部と、組み合わせ情報における該受信部に対応する送信部と、が一致するか否かを判断する比較手段１２３と、該判断結果に応じた結果出力を行う結果出力手段１２４と、を備える。【選択図】図７
2014232469.tif 000002
【特許請求の範囲】
【請求項１】
信号を送信する送信部と信号を受信する受信部との間に、組み合わせ回路が接続された論理回路についての論理回路シミュレーターであって、
前記受信部はフリップフロップであって、
前記送信部と前記受信部との組み合わせ情報を入力する情報入力手段と、
前記送信部の出力値の変化時において、該送信部の識別情報を付加する識別情報付加手段と、
前記送信部の出力値を、前記組み合わせ回路および前記受信部に伝搬させる際に、前記識別情報も合わせて伝搬させる識別情報伝搬手段と、
前記受信部においてタイミングエラーが発生する際に、前記識別情報における送信部と、前記組み合わせ情報における該受信部に対応する送信部と、が一致するか否かを判断する比較手段と、
該比較手段での判断結果に応じた結果出力を行う結果出力手段と、
を備えることを特徴とする論理回路シミュレーター。
【請求項２】
前記識別情報付加手段は、前記識別情報を付加する前に、前記組み合わせ情報を参照して、出力値が変化した送信部が前記組み合わせ情報にある送信部に該当する場合にのみ前記識別情報を付加することを特徴とする請求項１に記載の論理回路シミュレーター。
【請求項３】
前記送信部は、フリップフロップであることを特徴とする請求項１または２に記載の論理回路シミュレーター。
【請求項４】
前記送信部は、外部端子であることを特徴とする請求項１または２に記載の論理回路シミュレーター。
【請求項５】
前記送信部は、マクロセルであることを特徴とする請求項１または２に記載の論理回路シミュレーター。
【請求項６】
信号を送信する送信部と、該信号を受信する受信部としてのフリップフロップと、の間に、組み合わせ回路が接続された論理回路のシミュレーション方法であって、
前記送信部と前記受信部との組み合わせ情報を入力する情報入力処理と、
前記送信部の出力値の変化時において、該送信部の識別情報を付加する識別情報付加処理と、
前記送信部の出力値を、前記組み合わせ回路および前記受信部に伝搬させる際に、前記識別情報も合わせて伝搬させる識別情報伝搬処理と、
前記受信部においてタイミングエラーが発生する際に、前記識別情報における送信部と、前記組み合わせ情報における該受信部に対応する送信部と、が一致するか否かを判断する比較処理と、
該比較処理での判断結果に応じた結果出力を行う結果出力処理と、
を行うようにしたことを特徴とする論理回路のシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路シミュレーターおよび論理回路のシミュレーション方法に関する。さらに詳述すると、フリップフロップのタイミングエラー発生時における問題検出に好適な論理回路シミュレーターおよび論理回路のシミュレーション方法に関する。
【背景技術】
【０００２】
半導体集積回路の設計においては、設計対象回路の性能評価のためにシミュレーションが行われる。論理回路の基本要素の一つであるフリップフロップ（ＦＦ）は、通常、クロックの有効エッジ（一般的にはクロック立ち上がり）の近辺でデータが変化する使用方法を禁じており、クロック変化点の前後の一定期間にセットアップおよびホールドの時間規定（セットアップタイム、ホールドタイムという）が設けられている。
【０００３】
この規定された時間を守れば、クロックの立ち上がりでフリップフロップの出力値が確定するが、規定された時間に違反した際には、フリップフロップの出力値が保証されず、ある確率でメタステーブルと呼ばれる出力値が発振する不安定期間をつくりだしてしまう。メタステーブルとは、フリップフロップの出力変化遷移時間が長くなり、最終的にＨ（High）となるかＬ（Low）となるかが不定な状態をいう。
【０００４】
論理回路において、クロックが複数あり、それら同士は関連性を持たないこと、すなわち、非同期パスを持つことがある。互いに非同期動作しているクロックによるフリップフロップのデータ受け渡し部分は、上記メタステーブルが起こりえる状態であり、設計者にはこの危険性を考慮した回路設計が要求される。
【０００５】
メタステーブルが発生した場合、後段の論理回路の状態が予測できないため、現在主流となっている同期設計では、メタステーブルが発生しても、それが後段の論理回路に伝搬（伝播）しないように回路設計の工夫がなされることが一般的である。
【０００６】
また、同一クロック間であっても、フリップフロップ間の論理回路の段数が多い場合には、クロックの立ち上がり間隔内に値を確定できないことがある。なお、この場合には、遅延がクロック周期より大きな組合せ回路の場合に複数クロックで転送させるマルチサイクルパスと呼ばれるメタステーブルが発生しても問題ない場合もある。
【０００７】
一般に、半導体集積回路の設計では、設計した論理回路について、タイミングを考慮したシミュレーションすることが必要となる。ここでいうタイミングの考慮とは、セルの入力から出力までの遅延、セルとセルとの間の遅延を考慮すること、および、フリップフロップやマクロセルのように、入力信号にＡＣスペックが存在するものについては、それが守られているかのチェックを行うこと等をいうものである。
【０００８】
このような論理回路のシミュレーションをする論理回路シミュレーターでは、シミュレーション時間０からスタートし、信号変化のイベントごとに各セルに与えられたＡＣスペックを満足するかどうかの確認が行われる。このシミュレーションにおいて、メタステーブルが発生する場合には、メタステーブルの発生ログを表示し、フリップフロップの出力値を不定にする処理が行われる。
【０００９】
上述したような非同期クロックを持つ大規模な回路などでは、メタステーブルが発生する頻度が高いため、論理回路のシミュレーションにおいて、このメタステーブルの発生がファイルシステムを圧迫し、真に問題のある箇所のログの発見が困難になってしまうことがあった。
【００１０】
具体的には、例えば、１回のシミュレーションを実施すればログファイルが数１００メガバイト以上になることがあり、バイオレーションの回数も１万回を超えることがあった。また、従来の論理回路シミュレーターでは、メタステーブル発生時にフリップフロップ出力を不定に処理するか否かを指定することができるものもあるが、その指定を有効にすると後段の論理回路に不定が伝搬して、全ての回路が不定となってしまうため、実際には、無効としてしまうことがほとんどであった。
【００１１】
このような問題に対し、メタステーブルの発生する可能性のあるフリップフロップを指定し、ログの表示と不定出力を抑制する方法が提案されている。
【００１２】
例えば、特許文献１には、遅延シミュレーション用標準セルライブラリに規定されているタイミング制約の許容値を違反した場合、タイミングエラー制約指定情報の処理にしたがって、遅延付きネットリストで定義されるデジタル回路のセルの出力およびエラーメッセージに出力するエラーメッセージを決定する論理シミュレーターが開示されている。特許文献１では、特定のセルを指定して、当該セルで発生するタイミング制約違反（メタステーブル）のメッセージ出力を抑制し、当該セルの後段のセルへ不定を伝搬することを抑制して、エラーログを削減することを図っている。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、従来の論理回路シミュレーターでは、メタステーブルの発生する起因となるフリップフロップを指定できない、すなわち、信号経路を指定できないために、回路設計上対応する必要がない問題のないメタステーブルでも、回路設計上対応を要する問題のあるメタステーブルでも、一様に抑制されてしまっていた。
【００１４】
つまり、メタステーブル発生時のログ出力と不定値を抑制する従来の処理では、真のエラーと偽のエラーが一様に抑制されてしまい、真のエラーを発見できなくなってしまっていた。上記特許文献１の技術でも、エラーと扱わなくてもよいエラーに対するログ、不定出力を抑制することについては解決することができていない。また、当該処理を行わない場合はログファイルが膨大になり、その中から真のエラーを発見できない可能性があることが問題であった。
【００１５】
そこで本発明は、フリップフロップのタイミングエラーの発生時に、それが回路設計上問題の生じるエラーであるか、問題の生じないエラーであるかを判別し、問題が生じないエラーである場合には、ログの出力と不定伝搬を抑制して、デバッグの効率化を図ることができる論理回路シミュレーターを提供することを目的とする。
【課題を解決するための手段】
【００１６】
かかる目的を達成するため、本発明に係る論理回路シミュレーターは、信号を送信する送信部と信号を受信する受信部との間に、組み合わせ回路が接続された論理回路についての論理回路シミュレーターであって、前記受信部はフリップフロップであって、前記送信部と前記受信部との組み合わせ情報を入力する情報入力手段と、前記送信部の出力値の変化時において、該送信部の識別情報を付加する識別情報付加手段と、前記送信部の出力値を、前記組み合わせ回路および前記受信部に伝搬させる際に、前記識別情報も合わせて伝搬させる識別情報伝搬手段と、前記受信部においてタイミングエラーが発生する際に、前記識別情報における送信部と、前記組み合わせ情報における該受信部に対応する送信部と、が一致するか否かを判断する比較手段と、該比較手段での判断結果に応じた結果出力を行う結果出力手段と、を備えるものである。
【発明の効果】
【００１７】
本発明によれば、フリップフロップのタイミングエラーの発生時に、それが回路設計上問題の生じるエラーであるか、問題の生じないエラーであるかを判別し、問題が生じないエラーである場合には、ログの出力と不定伝搬を抑制して、デバッグの効率化を図ることができる。
【図面の簡単な説明】
【００１８】
【図１】共通するクロックで駆動する送り側フリップフロップと受け側フリップフロップとの間に、組み合わせ回路が設けられた回路の説明図である。
【図２】フリップフロップにおけるメタステーブルの発生を説明する説明図である。
【図３】異なるクロックソースで駆動する送り側フリップフロップと受け側フリップフロップとの間に、組み合わせ回路が設けられた回路の説明図である。
【図４】非同期チェックツールによる出力結果の一例である。
【図５】非同期チェックツールの出力結果に基づく論理回路の設計フローチャートである。
【図６】論理回路シミュレーターのハードウェア構成の一例を示す図である。
【図７】論理回路シミュレーターの構成の一例を示す機能ブロック図である。
【図８】異なるクロックソースで駆動する送り側フリップフロップと受け側フリップフロップとの間に、組み合わせ回路が設けられた回路の説明図においてタグの伝搬を模式的に示した説明図である。
【図９】論理回路シミュレーターが実行するシミュレーションの処理フローを示すフローチャート（１）である。
【図１０】論理回路シミュレーターが実行するシミュレーションの処理フローを示すフローチャート（２）である。
【図１１】外部端子を送信部として、受け側フリップフロップとの間に、組み合わせ回路が設けられた回路の説明図である。
【図１２】論理回路シミュレーターが実行するシミュレーションの処理フローを示すフローチャート（３）である。
【図１３】論理回路シミュレーターが実行するシミュレーションの処理フローを示すフローチャート（４）である。
【発明を実施するための形態】
【００１９】
以下、本発明に係る構成を図１から図１３に示す実施の形態に基づいて詳細に説明する。
【００２０】
［前提構成］
本発明に係る論理回路シミュレーターの説明に先立って、前提となる論理回路構成例および論理回路シミュレーターによるシミュレーションについて説明する。
【００２１】
図１は、共通のクロックＣＫで駆動する信号を送信する送信部としての送り側フリップフロップ１０と信号を受信する受信部としての受け側フリップフロップ３０との間に、組み合わせ回路２０が設けられた回路の説明図である。
【００２２】
半導体集積回路の設計における主流の設計手法は、クロック同期設計である。クロック同期設計による回路は、ソース（クロックソース）が共通であるクロックＣＫで駆動するフリップフロップ（送り側フリップフロップ（送り側ＦＦ）１０、受け側フリップフロップ（受け側ＦＦ）３０）を設け、その間に機能を満足させるための組み合わせ回路２０である論理ゲート、エンコーダ、マルチプレクサ、加算器、乗算器、比較器などが組み合わされて構成される。
【００２３】
図１に示す回路では、クロックＣＫの立ち上がりごとに、フリップフロップ１０，３０間の組み合わせ回路２０で決定される値が、受け側フリップフロップ３０に伝搬し、次のクロックＣＫの立ち上がりで、受け側フリップフロップ３０に保持される。このようにして所望の機能を実現する動作が可能となる。
【００２４】
図２は、フリップフロップにおけるメタステーブルの発生を説明する説明図である。フリップフロップには、クロックＣＫの立ち上がりに対して、データ入力端子（Ｄ端子）の確定時間ｆｔが定められている。
【００２５】
このデータ入力端子の確定時間ｆｔを基準として、その前の所定期間がセットアップタイムｓｔ、その後の所定期間がホールドタイムｈｔとされ、このセットアップタイムｓｔとホールドタイムｈｔの期間内（図２の塗りつぶし部分）でデータ入力が変化すると、メタステーブル状態となる。
【００２６】
上述のように、メタステーブルはフリップフロップの出力値が安定せず、最終的にＨとなるかＬとなるかわからない状態であるため、論理回路シミュレーターでは、一般にメタステーブルとなった場合には、フリップフロップの出力値を不定（Ｘ（値不明））とする処理がなされる。また、同時に、メタステーブル状態となったフリップフロップの場所が出力される。
【００２７】
図３は、異なるクロックソースで生成されるクロック（非同期クロックＣＫ１，ＣＫ２）で駆動する送り側フリップフロップ１０と受け側フリップフロップ３０との間に、組み合わせ回路２０が設けられた回路の説明図である。図３に示すような非同期回路では、クロックのソースが異なるためメタステーブルの発生を防ぐことは不可能である。
【００２８】
このような異なるクロックソースで動作するフリップフロップの信号経路を抽出するツール（非同期チェックツールという）として様々なものが提案されており、例えば、Ｃａｄｅｎｃｅ社製のＣｏｎｆｏｒｍａｌ  ＣＤＣ（クロック・ドメイン・クロッシング）などが知られている。
【００２９】
このような非同期チェックツールを使用すると、その出力結果として、例えば、図４に示すような送り側フリップフロップ１０と受け側フリップフロップ３０の一覧表示を得ることができる。図４は、送り側フリップフロップ１０の名称（インスタンス）、送り側クロック名、受け側フリップフロップ３０の名称（インスタンス）、および受け側クロック名の一覧となっている。
【００３０】
このような非同期チェックツールの出力結果に基づく論理回路の設計フローチャートを図５に示す。
【００３１】
先ず、設計者は図４に示したような一覧を確認し、意図したところ以外に信号経路がないか、抽出された経路に対して正しく非同期対策がなされているか、等を確認する（Ｓ１０４）。設計者による確認の結果に問題がある場合は（Ｓ１０４：ＮＧ）、回路修正を行って、設計データＤ１０２を更新しつつ、非同期チェックツールを再度実行し、非同期パスを抽出し、すべての経路についての問題がクリアするまで繰り返す（Ｓ１０４〜Ｓ１０４）。
【００３２】
すべての経路について対応が完了すると（Ｓ１０４：ＯＫ）、最終的にメタステーブルが発生しても問題のない送り側フリップフロップと受け側フリップフロップの組み合わせを表すデータ（メタステーブル容認パス一覧Ｄ１０５という）を得ることができる。
【００３３】
次いで、回路修正が完了した設計データＤ１０２と、別途準備したタイミング情報Ｄ１０６を用いて論理シミュレーションを実施する（Ｓ１０７）。ここで、タイミング情報には、少なくとも（１）セルとセル間の遅延情報と、（２）フリップフロップのセットアップタイム、ホールドタイムが含まれている。
【００３４】
この論理シミュレーションの実行により、セットアップタイム、ホールドタイムの規定を守れなかった場合のフリップフロップのインスタンスとその時刻を示すログが出力される。
【００３５】
設計者はそのログのフリップフロップのインスタンスを見て、意図しない箇所、すなわち、メタステーブル容認パス一覧Ｄ１０５にない箇所でメタステーブルが発生していないかを確認し、メタステーブルが発生している場合（Ｓ１０８：ＮＧ）には、再度回路修正を行う（Ｓ１０１へ戻る）。一方、メタステーブルが発生していなければ（Ｓ１０８：ＯＫ）、設計は完了する。
【００３６】
［第１の実施形態］
以下、本発明の実施の形態を説明する。本実施形態に係る論理回路シミュレーター（論理回路シミュレーター１００）は、信号遅延を考慮した論理回路シミュレーターであって、信号を送信する送信部（送り側フリップフロップ１０）と信号を受信する受信部（受け側フリップフロップ３０）との間に、組み合わせ回路（組み合わせ回路２０）が接続された論理回路についての論理回路シミュレーターであって、受信部はフリップフロップであって、送信部と受信部との組み合わせ情報（フリップフロップ組み合わせ情報１１４）を入力する情報入力手段（情報入力手段１１０）と、送信部の出力値の変化時において、該送信部の識別情報（タグＡ）を付加する識別情報付加手段（識別情報付加手段１２１）と、送信部の出力値を、組み合わせ回路および受信部に伝搬させる際に、識別情報も合わせて伝搬させる識別情報伝搬手段（識別情報伝搬手段１２２）と、受信部においてタイミングエラー（メタステーブル）が発生する際に、識別情報における送信部と、組み合わせ情報における該受信部に対応する送信部と、が一致するか否かを判断する比較手段（比較手段１２３）と、該比較手段での判断結果に応じた結果出力を行う結果出力手段（結果出力手段１２４）と、を備えるものである。なお、括弧内は実形態での符号、適用例を示す。
【００３７】
図６は、本実施形態の論理回路シミュレーターのハードウェア構成の一例を示す図である。本実施形態の論理回路シミュレーター１００は、入力装置１０１、出力装置１０２、ドライブ装置１０３、補助記憶装置１０４、メモリ装置１０５、演算処理装置１０６、インターフェース装置１０７がバス１０９を介して接続されている。
【００３８】
入力装置１０１は、キーボードやマウスなどで構成され、各種信号を入力するために用いられる。出力装置１０２は、ディスプレイ装置などで構成され、各種ウインドウやデータ等を表示するために用いられる。ドライブ装置１０３は、記録媒体１０８に記録されたプログラム等をドライブする。補助記憶装置１０４は、インストールされた論理回路シミュレーションプログラムを格納すると共に、必要なファイル、データ等を格納する。
【００３９】
メモリ装置１０５は、論理回路シミュレーター１００の起動時に補助記憶装置１０４から論理回路シミュレーションプログラムを読み出して格納する。演算処理装置１０６は、論理回路シミュレーター１００の全体の処理を制御する。また演算処理装置１０６は、メモリ装置１０５に格納された論理回路シミュレーションプログラムに従って、後述するような各種処理（論理回路のシミュレーション方法）を実現する。インターフェース装置１０７は、モデム、ＬＡＮカードなどで構成されており、論理回路シミュレーター１００をネットワークに接続するために用いられる。
【００４０】
論理回路シミュレーションプログラムは、論理回路シミュレーター１００を制御する各種プログラムの少なくとも一部である。論理回路シミュレーションプログラムは例えば記録媒体１０８の配布やネットワークからのダウンロードなどによって提供される。論理回路シミュレーションプログラムを記録した記録媒体１０８は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【００４１】
また、論理回路シミュレーションプログラムを記録した記録媒体１０８がドライブ装置１０３にセットされると、論理回路シミュレーションプログラムは記録媒体１０８からドライブ装置１０３を介して補助記憶装置１０４にインストールされる。ネットワークからダウンロードされた論理回路シミュレーションプログラムは、インターフェース装置１０７を介して補助記憶装置１０４にインストールされる。
【００４２】
図７は、本実施形態の論理回路シミュレーターの構成を示す機能ブロック図である。本実施形態の論理回路シミュレーター１００は、情報入力手段１１０、シミュレーター１２０、情報記憶手段１３０を備えている。また、シミュレーター１２０は、識別情報付加手段１２１、識別情報伝搬手段１２２、比較手段１２３および結果出力手段１２４を備えている。
【００４３】
図８は、異なるクロックソースで生成される非同期クロックＣＫ１，ＣＫ２で駆動する送り側フリップフロップ１０と受け側フリップフロップ３０（フリップフロップＦともいう）との間に、組み合わせ回路２０が設けられた回路の説明図において識別情報（タグＡ）の伝搬を模式的に示した説明図である。また、図９は、本実施形態に係る論理回路シミュレーター１００が実行するシミュレーションの処理フローを示すフローチャートである。以下、図７〜図９を参照して、本実施形態の論理回路シミュレーター１００について説明する。
【００４４】
論理回路シミュレーター１００の情報入力手段１１０には、シミュレーションの開始時において、少なくとも（１）検証対象となる回路についての回路情報ファイル１１１と、（２）素子間の遅延情報である遅延情報ファイル１１２と、（３）外部端子や機能モデルの動作記述ファイル（テストパターン１１３）と、（４）予め作成された送り側フリップフロップと受け側フリップフロップの組み合わせであるフリップフロップ組み合わせ情報１１４が入力され、情報入力手段１１０はこれらの情報を保持する（情報入力処理）。
【００４５】
論理回路シミュレーター１００のシミュレーター１２０に、シミュレーションの開始トリガが入力されることで、シミュレーションが開始する。シミュレーションでは、テストパターン１１３に従って論理回路の入力信号を遷移させる処理がなされる。すなわち、組み合わせ回路であるＯＲゲートやＡＮＤゲートなどについては真理値表に従って入力信号に対応して出力信号を変化させ、順序回路であるフリップフロップについては、クロック端子の立ち上がり時に、Ｑ端子の値（出力値）を更新する。この時、シミュレーター１２０の識別情報付加手段１２１は、図８に示すように、Ｑ端子が遷移するイベント（信号）に識別情報であるタグＡを付加する（識別情報付加処理）。
【００４６】
識別情報としてのタグＡには、少なくとも、送り側フリップフロップ１０のインスタンス名が含まれる。また、出力端子名も含めることが好ましい。なお、識別情報は、識別情報一時ファイル１３１として情報記憶手段１３０に記憶される。
【００４７】
次いで、識別情報伝搬手段１２２は、識別情報が付加された状態の信号を後段の回路に伝搬させる（識別情報伝搬処理）。すなわち、タグＡの属性が付加された信号は、別の論理回路Ｂに入力させる。また、論理回路Ｂは入力された値に対応して出力端子Ｃの値を変化させる。また、その信号にタグＡを付加する。さらに、出力端子Ｃの値は別の論理回路Ｄに入力され、その出力端子Ｅの変化イベントにタグＡを付加する。このように組み合わせ回路２０を伝搬した信号遷移はフリップフロップＦのＤ端子に到達する。
【００４８】
ここで、フリップフロップＦのＤ端子には、セットアップタイムおよびホールドタイムが規定されており、クロックの立ち上がり時刻とＤ端子の変化時刻を常にチェックしている。
【００４９】
このようにタグＡが付加された信号が伝搬するようにして、図９に示す処理が実行される。比較手段１２３は、セットアップ、ホールドタイム時間内にフリップフロップＦのＤ端子の変化があった場合（Ｓ２０１，Ｓ２０２：Ｙｅｓ）に、識別情報一時ファイル１３１のタグＡに記載された送り側フリップフロップ１０のインスタンス名を参照する（Ｓ２０３）。
【００５０】
さらに、このフリップフロップＦのインスタンス名に基づいて、情報入力手段１１０に入力されたフリップフロップ組み合わせ情報１１４を参照して対応する送り側フリップフロップ１０のインスタンス名を抽出する。
【００５１】
次いで、タグＡに記載された送り側フリップフロップ１０のインスタンス名と、フリップフロップ組み合わせ情報１１４に記載された対応する送り側フリップフロップ１０のインスタンス名と、を比較して（Ｓ２０４）、これらが一致するかどうかを判断する（Ｓ２０５）（比較処理）。
【００５２】
この２つの送り側フリップフロップ１０のインスタンス名が一致しない場合（Ｓ２０５：Ｙｅｓ）、結果出力手段１２４は、従来のシミュレーターと同様に、ログの出力と受け側フリップフロップＦの出力値を不定とする処理を行う（Ｓ２０６：結果出力処理）。
【００５３】
一方、２つの送り側フリップフロップ１０のインスタンス名が一致する場合（Ｓ２０５：Ｎｏ）は、メタステーブルが発生しても問題のない経路におけるものと判定することができるので、ログの出力と受け側フリップフロップＦの出力値を不定とする処理はなされない（Ｓ２０１へ戻る）。
【００５４】
このように、本実施形態に係る論理回路シミュレーター１００では、メタステーブルが発生した場合であっても、それが問題の有るものか否かを判断して、問題のないものと判断できる場合は、ログの出力と受け側フリップフロップＦの出力値を不定とする処理はなされないようにしている。したがって、ログの出力処理および受け側フリップフロップFの出力値を不定とする処理を抑制して、問題のあるエラーのみを抽出することでエラーの発見漏れを防ぐことができ、デバッグの効率化を図ることができる。
【００５５】
なお、本実施形態において説明した、（１）送り側フリップフロップ１０と受け側フリップフロップ３０の組み合わせについてのフリップフロップ組み合わせ情報１１４を入力する処理、（２）タグＡを送り側フリップフロップ１０の出力、およびそれが伝搬する後段の論理回路の出力に付加する処理、（３）受け側フリップフロップ３０において、タグＡの情報を参照して、ログの出力と不定出力の抑制を行う処理、を除く他の処理については、公知の論理回路シミュレーターの処理方法を必要に応じて適用することによれば良く、特に限られるものではないため説明は省略する。
【００５６】
［第２の実施形態］
以下、本発明に係る論理回路シミュレーターの他の実施形態について説明する。なお、上記実施形態と同様の点についての説明は適宜省略する。
【００５７】
第１の実施形態で説明した論理回路シミュレーターでは、送り側フリップフロップ１０の出力が変化する際に、識別情報としてのタグＡを付加し、それを後段の回路にも伝搬させている。このため、シミュレーションに必要なリソースが増大する。
【００５８】
すなわち、従来の論理回路シミュレーターでは、信号変化値だけを一時的に保持するだけであるが、第１の実施形態で説明した論理回路シミュレーター１００では、それに加えて、送り側フリップフロップ１０のインスタンス名を伝搬させており、一般にインスタンス名のデータ量は多いため、シミュレーション時間や、必要メモリが増えることが予想される。
【００５９】
図１０は、第２の実施形態に係る論理回路シミュレーター１００が実行するシミュレーションの処理フローを示すフローチャートである。
【００６０】
そこで、第２の実施形態では、識別情報付加手段１２１は、フリップフロップの出力が変化した際（Ｓ３０１）、タグＡを付加する前に、フリップフロップ組み合わせ情報１１４を参照して、当該フリップフロップがフリップフロップ組み合わせ情報１１４の送り側フリップフロップ１０に該当するかどうかを確認する（Ｓ３０２）。
【００６１】
フリップフロップ組み合わせ情報１１４の送り側フリップフロップ１０に該当しないフリップフロップの信号変化である場合（Ｓ３０３：Ｎｏ）は、メタステーブルが発生した場合に、従来と同様のログ出力、不定出力の処理が必要となるためタグＡを付加しないようにしている。
【００６２】
これに対し、フリップフロップ組み合わせ情報１１４の送り側フリップフロップ１０に該当するフリップフロップの信号変化である場合（Ｓ３０３：Ｙｅｓ）は、タグＡを付加して（Ｓ３０４）、以降、第１の実施形態で説明した処理フロー（図９）の処理がなされるようにしている。
【００６３】
この処理を行うことで、必要な箇所のみタグＡを付加することが可能となり、タグＡの付加数を減らすことができる。よって、第２の実施形態に係る論理回路シミュレーターによれば、第１の実施形態で説明した論理回路シミュレーターの効果と併せて、シミュレーションに必要なリソースの増大についても抑えることが可能となる。
【００６４】
［第３の実施形態］
半導体集積回路において、外部とのインターフェースが、半導体集積回路内部のクロックと関連のない非同期である場合は多い。例えば、レガシーＣＰＵのインターフェース（ＩＳＡバスなど）、ＰＳ／２ポートやＲＳ−２３２Ｃポートなどの低速インターフェース等である。
【００６５】
すなわち、図１１に示すように、非同期の外部端子４０を送信部として、受け側フリップフロップ３０との間に、組み合わせ回路２０が設けられた回路が用いられる。図１２は、第３の実施形態に係る論理回路シミュレーター１００が実行するシミュレーションの処理フローを示すフローチャートである。
【００６６】
このような非同期のインターフェースでは、外部端子４０の値の変化時に、半導体集積回路内部の論理回路の値が伝搬し、受け側フリップフロップ３０においてメタステーブルが発生することがある。
【００６７】
このメタステーブルには、フリップフロップ間のやり取りと同様に、実動作上問題のないメタステーブルと、問題のあるメタステーブルがあり、従来の論理回路シミュレーションでは、ログをすべて出力して設計者による確認がされるか、問題の有無を問わずログを出力しないか、の２択となっており、対応する必要のあるエラーを見逃してしまう可能性があった。
【００６８】
そこで、このような外部端子４０に接続される場合、識別情報付加手段１２１は、識別情報であるタグＡに送り側フリップフロップ１０のインスタンス名と出力端子名を記載することに替えて、半導体集積回路の外部端子４０のインスタンス名と出力端子名を記載するものである。また、情報入力手段１１０に、予め作成された外部端子４０と受け側フリップフロップ３０の組み合わせである外部端子／フリップフロップ組み合わせ情報１１５（図７）を入力しておく。
【００６９】
本実施形態では、送り側フリップフロップ１０と受け側フリップフロップ３０間の処理に替えて、外部端子４０と受け側フリップフロップ３０間の処理が実現される。すなわち、識別情報付加手段１２１は、外部端子４０の出力端子が変化する際にタグＡを付加し、また、識別情報伝搬手段１２２は、後段の論理回路に伝搬する時に、信号変化の情報とともにタグＡを付加していき、受け側フリップフロップ３０に、タグＡが付加された信号の変化が伝搬するようにする。
【００７０】
受け側フリップフロップ３０のセットアップ、ホールドタイムチェックを行い、エラーだった場合（Ｓ４０１，Ｓ４０２：Ｙｅｓ）に、比較手段１２３は、タグＡに記載された外部端子４０のインスタンス名と、外部端子／フリップフロップ組み合わせ情報１１５と、を比較する（Ｓ４０３，Ｓ４０４）。
【００７１】
この２つの外部端子４０のインスタンス名が一致しない場合（Ｓ４０５：Ｙｅｓ）、結果出力手段１２４は、ログの出力と受け側フリップフロップ３０の出力値を不定とする処理を行う（Ｓ４０６）。
【００７２】
一方、２つが一致する場合（Ｓ４０５：Ｎｏ）は、メタステーブルが発生しても問題のない経路におけるものと判定することができるので、ログの出力と受け側フリップフロップＦの出力値を不定とする処理はなされない（Ｓ４０１へ戻る）。
【００７３】
本実施形態によれば、外部端子の信号変化を起因とするタイミングエラーについても、問題のない経路については、ログの出力と不定出力を抑制することができるので、さらに効率よくデバッグすることが可能となる。
【００７４】
［第４の実施形態］
送り側フリップフロップ１０や外部端子４０に替えて、送信部としてＳＲＡＭやアナログセルなどのマクロセル５０（図示せず）を指定することも好ましい。図１３は、第４の実施形態に係る論理回路シミュレーター１００が実行するシミュレーションの処理フローを示すフローチャートである。
【００７５】
本実施形態では、マクロセル５０の出力端子に接続される場合、識別情報付加手段１２１は、識別情報であるタグＡにマクロセル５０のインスタンス名と出力端子名を記載する。また、情報入力手段１１０に、予め作成されたマクロセル５０の出力端子と受け側フリップフロップ３０の組み合わせであるマクロセル／フリップフロップ組み合わせ情報１１６（図７）を入力しておく。
【００７６】
本実施形態では、マクロセル５０の出力端子と受け側フリップフロップ３０間の処理が実現される。すなわち、識別情報付加手段１２１は、マクロセル５０の出力端子が変化する際にタグＡを付加し、また、識別情報伝搬手段１２２は、後段の論理回路に伝搬する時に、信号変化の情報とともにタグＡを付加していき、受け側フリップフロップ３０に、タグＡが付加された信号の変化が伝搬するようにする。
【００７７】
受け側フリップフロップ３０のセットアップ、ホールドタイムチェックを行い、エラーだった場合（Ｓ５０１，Ｓ５０２：Ｙｅｓ）に、比較手段１２３は、タグＡに記載されたマクロセル５０のインスタンス名と、マクロセル／フリップフロップ組み合わせ情報１１６と、を比較する（Ｓ５０３，Ｓ５０４）。
【００７８】
この２つのマクロセル５０のインスタンス名が一致しない場合（Ｓ５０５：Ｙｅｓ）、結果出力手段１２４は、ログの出力と受け側フリップフロップ３０の出力値を不定とする処理を行う（Ｓ５０６）。
【００７９】
一方、２つが一致する場合（Ｓ５０５：Ｎｏ）は、メタステーブルが発生しても問題のない経路におけるものと判定することができるので、ログの出力と受け側フリップフロップＦの出力値を不定とする処理はなされない（Ｓ５０１へ戻る）。
【００８０】
本実施形態によれば、マクロセルの信号変化を起因とするタイミングエラーについても、問題のない経路については、ログの出力と不定出力を抑制することができるので、さらに効率よくデバッグすることが可能となる。
【００８１】
尚、上述の実施形態は本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々変形実施可能である。
【符号の説明】
【００８２】
１０  送り側フリップフロップ（送信部）
２０  組み合わせ回路
３０  受け側フリップフロップ（受信部）
４０  外部端子（送信部）
４１  バッファ
５０  マクロセル（送信部）
１００  論理回路シミュレーター
１０１  入力装置
１０２  出力装置
１０３  ドライブ装置
１０４  補助記憶装置
１０５  メモリ装置
１０６  演算処理装置
１０７  インターフェース装置
１０８  記録媒体
１０９  バス
１１０  情報入力手段
１１１  回路情報ファイル
１１２  遅延情報ファイル
１１３  テストパターン
１１４  フリップフロップ組み合わせ情報
１１５  外部端子／フリップフロップ組み合わせ情報
１１６  マクロセル／フリップフロップ組み合わせ情報
１２０  シミュレーター
１２１  識別情報付加手段
１２２  識別情報伝搬手段
１２３  比較手段
１２４  結果出力手段
１３０  情報記憶手段
１３１  識別情報一時ファイル
【先行技術文献】
【特許文献】
【００８３】
【特許文献１】特開２００４−３０１８６号公報
【図１】
2014232469.tif 000003
【図３】
2014232469.tif 000004
【図４】
2014232469.tif 000005
【図５】
2014232469.tif 000006
【図６】
2014232469.tif 000007
【図７】
2014232469.tif 000008
【図８】
2014232469.tif 000009
【図９】
2014232469.tif 000010
【図１０】
2014232469.tif 000011
【図１１】
2014232469.tif 000012
【図１２】
2014232469.tif 000013
【図１３】
2014232469.tif 000014
【図２】
2014232469.tif 000015