(57)【要約】【課題】フリップフロップのタイミングエラーの発生時に、次回シミュレーション実施の際にタイミング確認が必要であるか否かをシミュレーション実施中に選択することが可能な論理回路シミュレータを提供することである。【解決手段】本発明に係る論理回路シミュレータは、シミュレーションを実行する回路情報を回路モデルとして記憶し、テストパターンと回路モデルに基づいてシミュレーションを実行し、フリップフロップに入力されるデータ信号のイベントを検出し、イベントの発生タイミングを確認し、イベントの発生タイミングが、フリップフロップへのデータ信号の入力禁止期間であった際に、該フリップフロップの回路情報を保持し、保持されたフリップフロップにおいて、次回シミュレーション実施時のイベントの発生タイミングを確認するか否か選択させることを特徴とする。【選択図】図３
2017107471.tif 000002
【特許請求の範囲】
【請求項１】
データ信号を送信する送信部と前記データ信号を受信する受信部との間に、組み合わせ回路が接続された論理回路についての論理回路シミュレータであって、
前記送信部、および前記受信部はフリップフロップであり、
シミュレーションを実行する回路情報を回路モデルとして記憶する回路モデル記憶手段と、
前記シミュレーションの動作内容が記述されたテストパターンと前記回路モデルに基づいてシミュレーションを実行する実行手段と、
前記フリップフロップに入力される前記データ信号のイベントを検出する検出手段と、
前記検出されたイベントの発生タイミングを確認するタイミング確認手段と、
前記確認されたイベントの発生タイミングが、前記フリップフロップへの前記データ信号の入力禁止期間であった際に、該フリップフロップの回路情報を保持する保持手段と、
前記保持されたフリップフロップにおいて、次回シミュレーション実施時の前記イベントの発生タイミングを確認するか否か選択させる選択手段と、
を備えることを特徴とする論理回路シミュレータ。
【請求項２】
前記回路モデル記憶手段は、前記送信部と前記受信部の間で発生する前記データ信号の遅延情報と、予め前記イベントの発生タイミングを確認しないタイミング確認不要回路情報と、を含めて回路モデルに記憶する、
ことを特徴とする請求項１に記載の論理回路シミュレータ。
【請求項３】
前記選択手段により、次回の前記イベントの発生タイミングを確認しないことが選択された際に、該フリップフロップの回路情報を、前記タイミング確認不要回路情報に含める、
ことを特徴とする請求項２に記載の論理回路シミュレータ。
【請求項４】
前記検出手段は、前記フリップフロップに入力される前記データ信号に変化が生じたことを検出する、
ことを特徴とする請求項１から３のいずれか１項に記載の論理回路シミュレータ。
【請求項５】
前記保持手段は、前記確認されたイベントの発生タイミングが、クロックの立ち上がりに係るセットアップ時間とホールド時間の合算期間であった際に、該フリップフロップの回路情報を保持する、
ことを特徴とする請求項１から４のいずれか１項に記載の論理回路シミュレータ。
【請求項６】
データ信号を送信する送信部と前記データ信号を受信する受信部との間に、組み合わせ回路が接続された論理回路についての論理回路のシミュレーション方法であって、
前記送信部、および前記受信部はフリップフロップであり、
シミュレーションを実行する回路情報を回路モデルとして記憶する処理と、
前記シミュレーションの動作内容が記述されたテストパターンと前記回路モデルに基づいてシミュレーションを実行する処理と、
前記フリップフロップに入力される前記データ信号のイベントを検出する処理と、
前記検出されたイベントの発生タイミングを確認する処理と、
前記確認されたイベントの発生タイミングが、前記フリップフロップへの前記データ信号の入力禁止期間であった際に、該フリップフロップの回路情報を保持する処理と、
前記保持されたフリップフロップにおいて、次回シミュレーション実施時の前記イベントの発生タイミングを確認するか否か選択させる処理と、
を行うようにしたことを特徴とする論理回路のシミュレーション方法。
【請求項７】
データ信号を送信する送信部と前記データ信号を受信する受信部との間に、組み合わせ回路が接続された論理回路についての論理回路のシミュレーションをコンピュータに実行させるプログラムであって、
前記送信部、および前記受信部はフリップフロップであり、
シミュレーションを実行する回路情報を回路モデルとして記憶する機能と、
前記シミュレーションの動作内容が記述されたテストパターンと前記回路モデルに基づいてシミュレーションを実行する機能と、
前記フリップフロップに入力される前記データ信号のイベントを検出する処理と、
前記検出されたイベントの発生タイミングを確認する機能と、
前記確認されたイベントの発生タイミングが、前記フリップフロップへの前記データ信号の入力禁止期間であった際に、該フリップフロップの回路情報を保持する機能と、
前記保持されたフリップフロップにおいて、次回シミュレーション実施時の前記イベントの発生タイミングを確認するか否か選択させる機能と、
をコンピュータに実行させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路シミュレータ、シミュレーション方法、およびプログラムに関する。
【背景技術】
【０００２】
半導体集積回路の設計においては、設計対象回路の性能評価のためにシミュレーションが行われる。論理回路の基本要素の一つであるフリップフロップ（ＦＦ）は、通常、クロックの有効エッジ（一般的にはクロック立ち上がり）の近辺でデータが変化する使用方法を禁じており、クロック変化点の前後の一定期間にセットアップおよびホールドの時間規定（セットアップタイム、ホールドタイムという）が設けられている。
【０００３】
この規定された時間を守れば、クロックの立ち上がりでフリップフロップの出力値が確定するが、規定された時間に違反した際には、フリップフロップの出力値が保証されず、ある確率でメタステーブルと呼ばれる出力値が発振する不安定期間をつくりだしてしまう。メタステーブルとは、フリップフロップの出力変化遷移時間が長くなり、最終的にＨ（High）となるかＬ（Low）となるかが不定な状態をいう。
【０００４】
論理回路において、クロックが複数あり、それら同士は関連性を持たないこと、すなわち、非同期パスを持つことがある。互いに非同期動作しているクロックによるフリップフロップのデータ受け渡し部分は、上記メタステーブルが起こりえる状態であり、設計者にはこの危険性を考慮した回路設計が要求される。
【０００５】
メタステーブルが発生した場合、後段の論理回路の状態が予測できないため、現在主流となっている同期設計では、メタステーブルが発生しても、それが後段の論理回路に伝搬（伝播）しないように回路設計の工夫がなされることが一般的である。
【０００６】
一般に、半導体集積回路の設計では、設計した論理回路について、タイミングを考慮したシミュレーションすることが必要となる。ここでいうタイミングの考慮とは、セルの入力から出力までの遅延、セルとセルとの間の遅延を考慮すること、および、フリップフロップやマクロセルのように、入力信号にＡＣスペックが存在するものについては、それが守られているかのチェックを行うこと等をいうものである。
【０００７】
このような論理回路のシミュレーションをする論理回路シミュレータでは、シミュレーション時間０からスタートし、信号変化のイベントごとに各セルに与えられたＡＣスペックを満足するかどうかの確認が行われる。このシミュレーションにおいて、メタステーブルが発生する場合には、メタステーブルの発生ログを表示し、フリップフロップの出力値を不定にする処理が行われることが一般的であった。
【０００８】
しかし、メタステーブルの発生の度に、フリップフロップの値を不定にするのは、シミュレーションの一連の動作の度にフリップフロップの値を不定にするという処理上の手間が発生すること課題となっている。
【０００９】
論理回路のシミュレーションはステップ単位で行われることが多く、特に非同期回路では、フリップフロップへの信号入力タイミングを確認するのはシミュレーションの１回目だけであり、２回目以降のタイミングの確認は不要となるケースがほとんどである。つまり、メタステーブル発生の際、２回目以降のフリップフロップへの信号入力タイミング確認を行う必要があるか否かをシミュレーション実行中に選択できる技術が求められている。
【００１０】
例えば、特許文献１には、メタステーブル発生の際、送り型フリップフロップと受け側フリップフロップの組み合わせ情報と、送信部の識別情報を比較し、回路設計上で問題のあるエラーか否かを判別し、問題のないエラーであればエラー発生ログの出力を抑制できる技術が公開されている。
【００１１】
特許文献２には、高速化対象とするロジックコーンと非高速化対象とするロジックコーンとで論理シミュレーションを実施し、高速化対象部で発生するイベント（信号入力タイミングの確認）を省略できる技術が公開されている。
【００１２】
特許文献１、および特許文献２では、論理回路のシミュレーションにかかる時間の短縮という観点からは本発明と似ている。しかし、フリップフロップへの信号入力タイミング確認を行う、もしくは行わないといった情報リストの作成はユーザ側で行われ、実際には、全てのフリップフロップをカバーしたタイミング確認除外リストを作成することは非常に困難である。また、非同期回路では、フリップフロップへの信号入力タイミングの確認は必須であるため、２回目のシミュレーション実行の際も、設計上タイミング確認が不要であっても、常にタイミング確認を行う必要があるため、シミュレーション時間の短縮という観点での課題は解消されない。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
そこで本発明は、フリップフロップのタイミングエラーの発生時に、次回シミュレーション実施の際にタイミング確認が必要であるか否かをシミュレーション実施中に選択することが可能な論理回路シミュレータを提供することを目的とする。
【課題を解決するための手段】
【００１４】
係る目的を達成するため、本発明に係る論理回路シミュレータは、データ信号を送信する送信部とデータ信号を受信する受信部との間に、組み合わせ回路が接続された論理回路についての論理回路シミュレータであって、送信部、および受信部はフリップフロップであり、シミュレーションを実行する回路情報を回路モデルとして記憶する回路モデル記憶手段と、シミュレーションの動作内容が記述されたテストパターンと回路モデルに基づいてシミュレーションを実行する実行手段と、フリップフロップに入力されるデータ信号のイベントを検出する検出手段と、検出されたイベントの発生タイミングを確認するタイミング確認手段と、確認されたイベントの発生タイミングが、フリップフロップへのデータ信号の入力禁止期間であった際に、該フリップフロップの回路情報を保持する保持手段と、保持されたフリップフロップにおいて、次回シミュレーション実施時のイベントの発生タイミングを確認するか否か選択させる選択手段と、を備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、フリップフロップのタイミングエラーの発生時に、次回シミュレーション実施の際にタイミング確認が必要であるか否かをシミュレーション実施中に選択することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態にかかる共通するクロックで駆動する送り側フリップフロップと受け側フリップフロップとの間に、組み合わせ回路が設けられた回路の説明図である。
【図２】本実施形態にかかるフリップフロップにおけるメタステーブルの発生を説明する説明図である。
【図３】本実施形態にかかる論理回路シミュレータのハードウェア構成の一例を示す図である。
【図４】本実施形態にかかる論理回路シミュレータの構成の一例を示す機能ブロック図である。
【図５】本実施形態にかかる論理回路シミュレータが実行するシミュレーションの処理フローを示すフローチャート（１）である。
【図６】本実施形態にかかる論理回路シミュレータが実行するシミュレーションの処理フローを示すフローチャート（２）である。
【図７】本実施形態にかかる論理回路シミュレータが実行するシミュレーションの処理フローを示すフローチャート（３）である。
【発明を実施するための形態】
【００１７】
［前提構成］
本発明に係る論理回路シミュレータの説明に先立って、前提となる論理回路構成例および論理回路シミュレータによるシミュレーションについて説明する。
【００１８】
図１は、共通のクロックＣＫで駆動する信号を送信する送信部としての送り側フリップフロップ１０と信号を受信する受信部としての受け側フリップフロップ３０との間に、組み合わせ回路２０が設けられた回路の説明図である。
【００１９】
半導体集積回路の設計における主流の設計手法は、クロック同期設計である。クロック同期設計による回路は、ソース（クロックソース）が共通であるクロックＣＫで駆動するフリップフロップ（送り側フリップフロップ（送り側ＦＦ）１０、受け側フリップフロップ（受け側ＦＦ）３０）を設け、その間に機能を満足させるための組み合わせ回路２０である論理ゲート、エンコーダ、マルチプレクサ、加算器、乗算器、比較器などが組み合わされて構成される。
【００２０】
図１に示す回路では、クロックＣＫの立ち上がりごとに、フリップフロップ１０，３０間の組み合わせ回路２０で決定される値が、受け側フリップフロップ３０に伝搬し、次のクロックＣＫの立ち上がりで、受け側フリップフロップ３０に保持される。このようにして所望の機能を実現する動作が可能となる。
【００２１】
図２は、フリップフロップにおけるメタステーブルの発生を説明する説明図である。フリップフロップには、クロックＣＫの立ち上がりに対して、データ入力端子（Ｄ端子）の確定時間ｆｔが定められている。
【００２２】
このデータ入力端子の確定時間ｆｔを基準として、その前の所定期間がセットアップタイム、その後の所定期間がホールドタイムとされ、このセットアップタイムとホールドタイムの期間内（図２の塗りつぶし部分）でデータ入力が変化すると、メタステーブル状態となる。
【００２３】
上述のように、メタステーブルはフリップフロップの出力値が安定せず、最終的にＨとなるかＬとなるかわからない状態であるため、論理回路シミュレータでは、一般にメタステーブルとなった場合には、フリップフロップの出力値を不定（Ｘ（値不明））とする処理がなされる。また、同時に、メタステーブル状態となったフリップフロップの場所が出力される。
【００２４】
図３は、本実施形態の論理回路シミュレータのハードウェア構成の一例を示す図である。本実施形態の論理回路シミュレータ１００は、メモリ装置１０１、演算処理装置１０２、インターフェース装置１０３、入力部１０４、出力部１０５、ドライブ装置１０６、補助記憶装置１０７、通信Ｉ／Ｆ１０８を備えている。
【００２５】
メモリ装置１０１は、論理回路シミュレータ１００の起動時に補助記憶装置１０７から論理回路シミュレーションプログラムを読み出して格納する。演算処理装置１０２は、論理回路シミュレータ１００の全体の処理を制御する。また演算処理装置１０２は、メモリ装置１０１に格納された論理回路シミュレーションプログラムに従って、後述するような各種処理（論理回路のシミュレーション方法）を実現する。インターフェース装置１０３は、モデム、ＬＡＮカードなどで構成されており、論理回路シミュレータ１００をネットワークに接続するために用いられる。
【００２６】
入力部１０４は、キーボードやマウスなどで構成され、各種信号を入力するために用いられる。出力部１０５は、ディスプレイ装置などで構成され、各種ウインドウやデータ等を表示するために用いられる。ドライブ装置１０６は、記録媒体１０９に記録されたプログラム等をドライブする。補助記憶装置１０７は、インストールされた論理回路シミュレーションプログラムを格納すると共に、必要なファイル、データ等を格納する。
【００２７】
通信Ｉ／Ｆ１０８は、外部の機器やコンピュータ等の電子機器との間で各種情報を、ネットワークを介して入出力するためのインターフェースである。通信Ｉ／Ｆ１０８は、例えばＵＳＢポートやＬＡＮポート、無線ＬＡＮポートなどがあり、また、赤外線通信Ｉ／Ｆなどもあり、外部の機器とデータの送受信が行えればどのようなものでも構わない。
【００２８】
本実施形態で用いられる論理回路シミュレーションプログラムは、論理回路シミュレータ１００を制御する各種プログラムの少なくとも一部である。論理回路シミュレーションプログラムは例えば記録媒体１０９の配布やネットワークからのダウンロードなどによって提供される。論理回路シミュレーションプログラムを記録した記録媒体１０９は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【００２９】
また、論理回路シミュレーションプログラムを記録した記録媒体１０９がドライブ装置１０６にセットされると、論理回路シミュレーションプログラムは記録媒体１０９からドライブ装置１０６を介して補助記憶装置１０７にインストールされる。ネットワークからダウンロードされた論理回路シミュレーションプログラムは、インターフェース装置１０３を介して補助記憶装置１０７にインストールされる。
【００３０】
図４は、本実施形態の論理回路シミュレータ１００の構成を示す機能ブロック図である。本実施形態の論理回路シミュレータ１００は、回路モデル記憶手段１１１、シミュレータ１２０を備えており、また、シミュレータ１２０は、実行手段１２１、検出手段１２２、タイミング確認手段１２３、保持手段１２４、および選択手段１２５を備えている。
【００３１】
論理回路シミュレータ１００の回路モデル記憶手段１１１は、検証対象となる回路についての回路情報ファイル１０１と、素子間の遅延情報である遅延情報ファイル１０２と、予め、ユーザがフリップフロップへの信号入力のタイミングを確認しないと判断したタイミング確認除外対象ファイル１０３と、外部端子や機能モデルの動作記述ファイルであるテストパターン１０４と、の情報を記憶する。
【００３２】
論理回路シミュレータ１００の実行手段１２１は、シミュレーションの開始トリガが入力されることで、シミュレーションが開始する。ここでのシミュレーション開始トリガとは、回路モデル記憶手段１１１に所定の情報が入力されることを意味している。シミュレーションでは、テストパターン１０４に従って論理回路の入力信号を遷移させる処理がなされる。すなわち、入力信号に対応して出力信号を変化させ、順序回路であるフリップフロップについては、クロック端子の立ち上がり時に、Ｑ端子の値（出力値）を更新する。
【００３３】
論理回路シミュレータ１００の検出手段１２２は、フリップフロップに入力されるデータ信号のイベントを検出する。ここでのイベントとは、例えば論理回路の入力信号に変化が生じた場合などが考えられる。入力信号の変化に対応して出力信号が変化する一連の処理を検出する。
【００３４】
論理回路シミュレータ１００のタイミング確認手段１２３は、検出されたイベントの発生タイミングを確認する。つまりフリップフロップへの信号入力の遷移が起こるタイミングがクロック端子の立ち上がり時であるセットアップ時間、およびホールド時間に抵触するか否かの確認を行う。
【００３５】
フリップフロップへの信号入力の遷移がクロック端子の立ち上がり時であれば、出力値はメタステーブルとなってしまう。タイミング確認手段１２３は、回路モデル１１０に記憶されているタイミング確認タスクで確認対象となっているフリップフロップにおいて、信号入力の遷移が起こるタイミングを確認し、所定の記憶装置などに確認結果を出力する。
【００３６】
論理回路シミュレータ１００の保持手段１２４は、確認されたイベントの発生タイミングが、フリップフロップへのデータ信号の入力禁止期間（クロック信号の立ち上がり時に抵触する期間）であった際に、該フリップフロップの回路情報を保持する。回路情報には、予め番号などを定めておき、メタステーブルとなった回路を番号で管理してもよい。いずれにしてもメタステーブルとなった回路情報を記憶し、回路モデル１１０に記憶されている該回路情報を別途保持する。
【００３７】
保持方法としては、例えば論理回路シミュレータ１００の補助記憶装置１０７などでデータとして保持してもよいし、またRandom Access Memory（ＲＡＭ）などに保持しておくことも可能である。
【００３８】
論理回路シミュレータ１００のタイミング選択手段１２５は、保持されたフリップフロップにおいて、次回シミュレーション実施時のイベントの発生タイミングを確認するか否か選択する。例えば、非同期回路などであれば、初回のシミュレーション実施時にタイミングエラーとなり、メタステーブルになった際、２回目以降では、タイミング確認が不要となるようなケースも多い。そのような場合などでは、選択手段１２５により、次回のタイミング確認タスクをOFFにすることが可能となり、シミュレーションの時間短縮に有益である。
【００３９】
また、選択手段１２５により、２回目以降のシミュレーションでも引き続きタイミング確認タスクを行う、つまりタイミング確認タスクをOnとする場合は、従来通り、メタステーブルとなった際のフリップフロップの出力値を不定値とすることも可能である。選択手段１２５による選択は、例えば出力部１０５などによりポップアップなどで表示を行い、タイミング確認タスクのOn、OFFをユーザが選択できるようにしてもよい。
【００４０】
選択手段１２５により、次回のタイミング確認タスクをOFFとした場合、回路モデル１１０に記憶されている該回路のタイミング確認タスクを削除し、現在実施しているシミュレーションでは二度と該回路のタイミング確認を行わないようにすることが可能である。そのように処理を行うことでメタステーブル発生の際に出力値を不定値とする処理の発生、およびエラー発生のログ出力の処理なども行わなくてよく、シミュレーション実行の時間短縮に有益であると言える。
【００４１】
次に、本実施形態のシミュレーションの処理についてフローチャートで説明を行う。図５は本実施形態にかかる論理回路シミュレータが実行するシミュレーションの１つ目の処理フローを示すフローチャートである。１つ目のフローチャートは、本発明の代表的な実施例に沿った処理を説明するものである。
【００４２】
まず、回路モデルに記憶されている情報、およびテストパターンに基づいてシミュレーションを実行する（ステップ１）。そして、フリップフロップへの入力信号のイベントを検出する（ステップ２）。ここでのイベントとは、例えば、論理回路の入力信号に変化が生じた場合などである。検出されたイベントの発生タイミングを検出する（ステップ３）。論理回路のタイミングはクロック信号の立ち上がりにより測ることが可能となる。
【００４３】
イベントの発生タイミングがクロック信号の立ち上がり期間であるセットアップ／ホールド期間かどうかを確認する（ステップ４）。イベント発生タイミングがクロック信号の立ち上がり期間であるセットアップ／ホールド期間であった場合、タイミング違反との判定がなされ、タイミング違反となった回路情報を抽出する（ステップ５）。抽出された回路情報の、例えば次回以降のシミュレーション時に引き続きタイミング確認タスクを行うか否か選択を行う（ステップ６）。
【００４４】
タイミング確認タスクがOFFにされたとき、抽出された回路情報のタイミング確認タスクを、回路データが記憶されている回路モデルから削除する（ステップ７）。ステップ４、およびステップ６でNo判定されたときは、従来通り、タイミング違反の回路は引き続き次回のシミュレーションでもタイミング確認対象とするため、例えば、メタステーブル発生の際に出力値を不定値とするなどの処理が行われる（ステップ８）。
【００４５】
図６は本実施形態にかかる論理回路シミュレータが実行するシミュレーションの２つ目の処理フローを示すフローチャートである。２つ目のフローチャートは、タイミング違反となった回路情報をシミュレータ外部へ出力する処理を説明するものである。回路情報を外部へ出力することで他のシミュレーション実行時にも結果を活かすことが可能となる。
【００４６】
まず、回路モデルに記憶されている情報、およびテストパターンに基づいてシミュレーションを実行する（ステップ９）。そして、フリップフロップへの入力信号のイベントを検出する（ステップ１０）。ここでのイベントとは、例えば、論理回路の入力信号に変化が生じた場合などである。検出されたイベントの発生タイミングを検出する（ステップ１１）。論理回路のタイミングはクロック信号の立ち上がりにより測ることが可能となる。
【００４７】
イベントの発生タイミングがクロック信号の立ち上がり期間であるセットアップ／ホールド期間かどうかを確認する（ステップ１２）。イベント発生タイミングがクロック信号の立ち上がり期間であるセットアップ／ホールド期間であった場合、タイミング違反との判定がなされ、タイミング違反となった回路情報を抽出し、外部記憶装置などに回路情報を記憶する（ステップ１３）。尚、外部記憶情報に記憶するタイミングとしては、タイミング確認直後でもよいし、一連の処理が終了し、該回路のタイミング確認タスクの決定がなされた後でもよい。
【００４８】
抽出された回路情報の、例えば次回以降のシミュレーション時に引き続きタイミング確認タスクを行うか否か選択を行う（ステップ１４）。タイミング確認タスクがOFFにされたとき、抽出された回路情報のタイミング確認タスクを、回路データが記憶されている回路モデルから削除する（ステップ１５）。ステップ１２、およびステップ１４でNo判定されたときは、従来通り、タイミング違反の回路は引き続き次回のシミュレーションでもタイミング確認対象とするため、例えば、メタステーブル発生の際に出力値を不定値とするなどの処理が行われる（ステップ１６）。
【００４９】
図７は本実施形態にかかる論理回路シミュレータが実行するシミュレーションの３つ目の処理フローを示すフローチャートである。３つ目のフローチャートは、回路モデルにタイミング確認タスクを選択させる時間を予め定めておき、タイミング違反の時と、所定のタイミング確認タスクを選択させる時との最低２回のタイミング確認タスクの選択を行う処理を説明するものである。例えばシミュレーションの途中で処理内容を変更したい場合などで有益な効果が出ることが想定される。
【００５０】
まず、回路モデルに記憶されている情報、およびテストパターンに基づいてシミュレーションを実行する（ステップ１７）。そして、フリップフロップへの入力信号のイベントを検出する（ステップ１８）。ここでのイベントとは、例えば、論理回路の入力信号に変化が生じた場合などである。検出されたイベントの発生タイミングを検出する（ステップ１９）。
【００５１】
イベントの発生タイミングがクロック信号の立ち上がり期間であるセットアップ／ホールド期間かどうかを確認する（ステップ２０）。イベント発生タイミングがクロック信号の立ち上がり期間であるセットアップ／ホールド期間であった場合、タイミング違反との判定がなされ、タイミング違反となった回路情報を抽出する（ステップ２１）。抽出された回路情報の、例えば次回以降のシミュレーション時に引き続きタイミング確認タスクを行うか否か選択を行う（ステップ２２）。
【００５２】
タイミング確認タスクがOFFにされたとき、抽出された回路情報のタイミング確認タスクを、回路データが記憶されている回路モデルから削除する（ステップ２３）。ステップ２０でNo、つまりイベント発生タイミングがクロック信号の立ち上がりに抵触しない期間であったとき、タイミング確認タスクのON／OFFを決める時間を確認する（ステップ２４）。タイミング確認タスクのON／OFFを決める時間であったとき、ステップ２２の処理に向かう。ここで、タイミング違反にならない場合でもタイミング確認タスクのOn／OFFを決めることができる。
【００５３】
ステップ２２、およびステップ２５でNo判定されたときは、従来通り、タイミング違反の回路は引き続き次回のシミュレーションでもタイミング確認対象とするため、例えば、メタステーブル発生の際に出力値を不定値とするなどの処理が行われる（ステップ２６）。
【００５４】
本実施形態によれば、フリップフロップのタイミングエラーの発生時に、次回シミュレーション実施の際にタイミング確認が必要であるか否かをシミュレーション実施中に選択することが可能となる。
【００５５】
尚、上述の実施形態は本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々変形実施可能である。
【符号の説明】
【００５６】
１１１    回路モデル記憶手段
１２１    実行手段
１２２    検出手段
１２３    タイミング確認手段
１２４    保持手段
１２５    選択手段
【先行技術文献】
【特許文献】
【００５７】
【特許文献１】特開２０１４−２３２４６９号公報
【特許文献２】特開２００４−１８５２１３号公報
【図１】
2017107471.tif 000003
【図２】
2017107471.tif 000004
【図３】
2017107471.tif 000005
【図４】
2017107471.tif 000006
【図５】
2017107471.tif 000007
【図６】
2017107471.tif 000008
【図７】
2017107471.tif 000009