(57)【要約】【課題】包括的なタイミング検証を実行可能であるタイミング検証装置を得ること。【解決手段】論理回路を構成する素子への入力の変化（入力イベント）のうち最小遅延条件を満たす入力イベントによる出力をスケジューリングする出力イベントスケジューリング部１−１と、最大遅延条件を満たす入力イベントによる出力をスケジューリングする出力イベントスケジューリング部１−２と、シミュレーション時刻の進行にあわせてイベントを出力するスケジューラ６とを備え、出力イベントスケジューリング部１−１の出力変化算出部４−１は、最小遅延条件を満たす入力イベントにより出力信号値が変化する場合は、信号変化が発生しうることを示す値：信号可変を出力信号値とし、タイミング違反検出部３−１，３−２は、タイミングチェック時刻にてチェック対象の信号値が信号可変である場合にタイミング違反を検出する。【選択図】図１
2011060131.tif 000002
【特許請求の範囲】
【請求項１】
１以上の素子により構成される論理回路のタイミング検証を行うタイミング検証装置であって、
素子への入力の変化である入力イベントのうち、最小遅延条件を満たす入力イベントによる素子からの出力をスケジューリングする第１の出力イベントスケジューリング手段と、
素子への入力の変化である入力イベントのうち、最大遅延条件を満たす入力イベントによる素子からの出力をスケジューリングする第２の出力イベントスケジューリング手段と、
シミュレーション時刻の進行にあわせてイベントを出力するスケジューラと、
を備え、
前記第１の出力イベントスケジューリング手段および前記第２の出力イベントスケジューリング手段のそれぞれは、
素子に対する入力イベントを検出し、かつ、当該入力イベントが所定の遅延条件を満たす場合に、当該入力イベントを、信号値を出力する対象として選択する入力イベント選択手段と、
前記所定の遅延条件に対して予め決められたタイミング仕様に基づいて、入力イベントのタイミング違反を検出するタイミング違反検出手段と、
前記所定の遅延条件を満たす入力イベントを含む入力イベントに基づいて、素子から出力される出力信号値を算出し、また、信号値が変化する時刻である出力変化時刻を算出する出力変化算出手段と、
前記出力変化算出手段が算出する出力信号値を保持し、前記所定の遅延条件を満たす入力イベントに基づく出力信号値を現在の出力信号値と比較して変化の有無を判定し、さらに、出力信号値が変化すると判定した場合に、当該出力信号値および前記出力変化算出手段が算出する出力変化時刻を含む出力イベント情報を通知するスケジュール判定手段と、
を備え、
前記スケジューラは、前記論理回路への入力パターンを保持し、前記スケジュール判定手段から出力イベント情報を通知されると当該出力イベント情報に基づいてイベントをスケジューリングし、
前記第１の出力イベントスケジューリング手段の前記出力変化算出手段は、最小遅延条件を満たす入力イベントにより出力信号値が変化する場合には、信号変化が発生しうることを示す値である信号可変を出力信号値とし、
前記タイミング違反検出手段は、タイミング検証を行う対象範囲であるタイミングチェック時刻にて、チェック対象となる信号値が信号可変である場合にタイミング違反を検出する、
ことを特徴とするタイミング検証装置。
【請求項２】
１以上の素子により構成される論理回路のタイミング検証を行うタイミング検証装置であって、
素子への入力の変化である入力イベントのうち、最小遅延条件を満たす入力イベントによる素子からの出力をスケジューリングする第１の出力イベントスケジューリング手段と、
素子への入力の変化である入力イベントのうち、最大遅延条件を満たす入力イベントによる素子からの出力をスケジューリングする第２の出力イベントスケジューリング手段と、
素子から出力される信号値である出力信号値の履歴を素子に対応させて記憶するための信号値記憶手段と、
シミュレーション時刻の進行にあわせてイベントを出力するスケジューラと、
を備え、
前記第１の出力イベントスケジューリング手段および前記第２の出力イベントスケジューリング手段のそれぞれは、
素子に対する入力イベントを検出し、かつ、当該入力イベントが所定の遅延条件を満たす場合には、当該入力イベントを、信号値を出力する対象として選択する入力イベント選択手段と、
前記所定の遅延条件に対して予め決められたタイミング仕様に基づいて、入力イベントのタイミング違反を検出するタイミング違反検出手段と、
前記所定の遅延条件の入力イベントに基づいて、出力信号値を算出して前記信号値記憶手段に保存し、また、前記所定の遅延条件の入力イベントについて、信号値が変化する時刻である出力変化時刻を算出する出力変化算出手段と、
前記信号値記憶手段から現在の出力信号値を読み出し、前記所定の遅延条件のイベントに基づく出力信号値を当該現在の出力信号値と比較して変化の有無を判定し、さらに、出力信号値が変化すると判定した場合に、当該出力信号値および前記出力変化算出手段が算出する出力変化時刻を含む出力イベント情報を通知するスケジュール判定手段と、
を備え、
前記スケジューラは、前記論理回路への入力パターンを保持し、前記スケジュール判定手段から出力イベント情報を通知されると当該出力イベント情報に基づいてイベントをスケジューリングすることとし、
前記出力変化算出手段は、最小遅延条件を満たす入力イベントにより出力信号値が変化する場合には、信号変化が発生しうることを示す値である信号可変を出力信号値とし、
前記タイミング違反検出手段は、タイミング検証を行う対象範囲であるタイミングチェック時刻にて、チェック対象となる信号値が信号可変である場合にタイミング違反を検出する、
ことを特徴とするタイミング検証装置。
【請求項３】
前記論理回路への入力パターンが単一の遅延条件のみを有する場合に、
前記第１の出力イベントスケジューリング手段の前記入力イベント選択手段は、当該入力パターンによる入力イベントが最小遅延条件を満たすと判断し、
前記第２の出力イベントスケジューリング手段の前記入力イベント選択手段は、当該入力パターンによる入力イベントが最大遅延条件を満たすと判断する、
ことを特徴とする請求項１または２に記載のタイミング検証装置。
【請求項４】
前記スケジューラは、
同一の出力変化時刻に対し、信号可変から確定値へ変化する第１のイベントと確定値から信号可変へ変化する第２のイベントが通知された場合に、当該第１のイベントおよび当該第２のイベントをキャンセルする、
ことを特徴とする請求項１、２または３に記載のタイミング検証装置。
【請求項５】
前記タイミング違反検出手段は、
チェック対象となる信号値のタイミング違反を検出した場合に、当該信号値を、信号値の変化前の値、信号値の変化後の値、不定値、のいずれかに修正する、
ことを特徴とする請求項１〜４のいずれか１つに記載のタイミング検証装置。
【請求項６】
前記スケジューラから出力される入力イベントに基づいて出力信号を表示させるための処理を行う信号表示手段、
をさらに備え、
前記信号表示手段は、信号可変を他の信号値と区別して表示させる、
ことを特徴とする請求項１〜５のいずれか１つに記載のタイミング検証装置。
【請求項７】
１以上の素子により構成される論理回路のタイミング検証を行うためのタイミング検証装置、におけるタイミング検証方法であって、
前記論理回路への入力パターンを入力イベントとして印加する入力パターン印加ステップと、
素子に対する入力イベントを検出し、かつ、当該入力イベントが最小遅延条件または最大遅延条件を満たす場合に、当該入力イベントを、信号値を出力する対象として選択する入力イベント選択ステップと、
前記最小遅延条件または前記最大遅延条件に対して予め決められたタイミング仕様に基づいて、入力イベントのタイミング違反の検出を行うタイミング違反検出ステップと、
前記最小遅延条件または前記最大遅延条件のイベントを含む入力イベントに基づいて、素子から出力される出力信号値を算出し、また、信号値が変化する時刻である出力変化時刻を算出する出力変化算出ステップと、
前記最小遅延条件または前記最大遅延条件のイベントに基づく出力信号値を現在の出力信号値と比較して変化の有無を判定し、さらに、出力信号値が変化すると判定した場合に、当該出力信号値および前記出力変化時刻を含む出力イベント情報を通知するスケジュール判定ステップと、
前記出力イベント情報に基づいてイベントをスケジューリングするスケジューリングステップと、
シミュレーション時刻の進行にあわせてイベントを出力するイベント出力ステップと、
を含み、
前記出力変化算出ステップでは、最小遅延条件を満たす入力イベントにより出力信号値が変化する場合には、信号変化が発生しうることを示す値である信号可変を出力信号値とし、
前記タイミング違反検出ステップでは、タイミング検証を行う対象範囲であるタイミングチェック時刻にて、チェック対象となる信号値が信号可変である場合には、タイミング違反を検出する、
ことを特徴とするタイミング検証方法。
【請求項８】
前記入力イベント選択ステップでは、
前記論理回路への入力パターンが単一の遅延条件のみを有する場合に、当該入力パターンによる入力イベントは最小遅延条件および最大遅延条件を満たすと判断する、
ことを特徴とする請求項７に記載のタイミング検証方法。
【請求項９】
前記スケジューリングステップでは、
同一の出力変化時刻に対し、信号可変から確定値へ変化する第１のイベントと確定値から信号可変へ変化する第２のイベントが通知された場合に、当該第１のイベントおよび当該第２のイベントをキャンセルする、
ことを特徴とする請求項７または８に記載のタイミング検証方法。
【請求項１０】
前記タイミング違反検出ステップでは、
チェック対象となる信号値のタイミング違反を検出した場合に、当該信号値を、信号値の変化前の値、信号値の変化後の値、不定、のいずれかに修正する、
ことを特徴とする請求項７、８または９のいずれか１つに記載のタイミング検証方法。
【請求項１１】
前記スケジューラから出力される入力イベントに基づいて出力信号を表示させるための処理を行う信号表示ステップ、
をさらに含み、
前記信号表示ステップでは、信号可変を他の信号値と区別して表示させる、
ことを特徴とする請求項７〜１０のいずれか１つに記載のタイミング検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路のシミュレーションにおけるタイミングを検証するタイミング検証装置に関する。
【背景技術】
【０００２】
論理回路は、動作条件（温度，電源電圧など），半導体の製造プロセスのばらつき、といった複合的要因により、出力変化の遅延が変化する。したがって、論理回路を設計する場合は、遅延変化の範囲、すなわち遅延が最小となる条件（以下、ベストケースという）から最大となる条件（以下、ワーストケースという）にわたるいずれの状況下でも、同様に動作することが求められる。かかるタイミング設計は、基本タイミング信号（以下、クロック）を基準とし、いずれの遅延条件においても記憶素子（フリップフロップ，ラッチなど）の入力変化が一定の時間範囲に収まるように行われる。
【０００３】
タイミング設計が正しいことの検証（以下、タイミング検証）の手法は、静的タイミング検証と動的タイミング検証に大別される。静的タイミング検証では、タイミングの起点（回路外周の入力、記憶素子出力、等）から終点（回路外周の出力、記憶素子入力、等）までの遅延値を積算し、所定のタイミング条件を満たすことを確認する。一方、動的タイミング検証では、ネットリストに遅延情報を付加し、イベントドリブンシミュレータを用いて動作の検証を行う。
【０００４】
たとえば、下記特許文献１には、従来のイベントドリブンシミュレータが開示されている。当該特許文献では、論理シミュレーションを実行する際に処理を高速化する方法を提案している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−１１４８６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の技術における動的タイミング検証によれば、１つの検証用パターンにつき少なくともワーストケースおよびベストケースの２回の検証を実行する必要があるため、シミュレーションに要する時間が増加する、という問題があった。
【０００７】
また、いずれの遅延条件においても、各素子の入力に対する出力は、単一の（即ち幅を持たない）遅延情報を以って行われることとなる。しかしながら、ワーストケースとベストケースの間に存在する条件にて顕在化する不具合は、ワーストケース、ベストケースの２ケースのみでは発見できず、さらに遅延条件を細分化してケース数を増やす必要がある。したがって、上記ケースを検証する場合、シミュレーションの実行時間はさらに増加することとなり、現実的に検証不可能である、という問題があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、包括的なタイミング検証を実行可能であるタイミング検証装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、１以上の素子により構成される論理回路のタイミング検証を行うタイミング検証装置であって、素子への入力の変化である入力イベントのうち、最小遅延条件を満たす入力イベントによる素子からの出力をスケジューリングする第１の出力イベントスケジューリング手段と、素子への入力の変化である入力イベントのうち、最大遅延条件を満たす入力イベントによる素子からの出力をスケジューリングする第２の出力イベントスケジューリング手段と、シミュレーション時刻の進行にあわせてイベントを出力するスケジューラと、を備え、前記第１の出力イベントスケジューリング手段および前記第２の出力イベントスケジューリング手段のそれぞれは、素子に対する入力イベントを検出し、かつ、当該入力イベントが所定の遅延条件を満たす場合に、当該入力イベントを、信号値を出力する対象として選択する入力イベント選択手段と、前記所定の遅延条件に対して予め決められたタイミング仕様に基づいて、入力イベントのタイミング違反を検出するタイミング違反検出手段と、前記所定の遅延条件を満たす入力イベントを含む入力イベントに基づいて、素子から出力される出力信号値を算出し、また、信号値が変化する時刻である出力変化時刻を算出する出力変化算出手段と、前記出力変化算出手段が算出する出力信号値を保持し、前記所定の遅延条件を満たす入力イベントに基づく出力信号値を現在の出力信号値と比較して変化の有無を判定し、さらに、出力信号値が変化すると判定した場合に、当該出力信号値および前記出力変化算出手段が算出する出力変化時刻を含む出力イベント情報を通知するスケジュール判定手段と、を備え、前記スケジューラは、前記論理回路への入力パターンを保持し、前記スケジュール判定手段から出力イベント情報を通知されると当該出力イベント情報に基づいてイベントをスケジューリングし、前記第１の出力イベントスケジューリング手段の前記出力変化算出手段は、最小遅延条件を満たす入力イベントにより出力信号値が変化する場合には、信号変化が発生しうることを示す値である信号可変を出力信号値とし、前記タイミング違反検出手段は、タイミング検証を行う対象範囲であるタイミングチェック時刻にて、チェック対象となる信号値が信号可変である場合にタイミング違反を検出する、ことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、単一シミュレーションでタイミング検証網羅度を向上可能となり、さらに、タイミング検証時間が短縮可能となる、という効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明にかかるタイミング検証装置の実施の形態１の構成例を示す図である。
【図２】図２は、タイミング検証を行う対象である論理回路のサンプルを示す図である。
【図３】図３は、図２のサンプル回路を対象としたシミュレーション例を示すタイミングチャートである。
【図４】図４は、ベストケース遅延に対するイベントスケジューリング処理を示すフローチャートである。
【図５】図５は、入力イベント選択部の処理を示すフローチャートその１である。
【図６】図６は、ワーストケース遅延に対するイベントスケジューリング処理を示すフローチャートである。
【図７】図７は、入力イベント選択部の処理を示すフローチャートその２である。
【図８】図８は、２入力ＡＮＤにおける入力および出力信号値の変化例を示すタイミングチャートである。
【図９】図９は、フリップフロップに対するイベントの入力例を示すタイミングチャートである。
【図１０】図１０は、実施の形態１のタイミング検証装置の、他の構成例を示す図である。
【図１１】図１１は、実施の形態２におけるタイミング検証装置の構成例を示す図である。
【図１２】図１２は、実施の形態２における入力イベント選択部の処理を示すフローチャートその１である。
【図１３】図１３は、実施の形態２における入力イベント選択部の処理を示すフローチャートその２である。
【図１４】図１４は、２入力ＡＮＤに対するイベントの入力例を示すタイミングチャートである。
【図１５】図１５は、実施の形態３におけるタイミング検証装置の構成例を示す図である。
【図１６】図１６は、図２の２入力ＡＮＤに対する入力例を示すタイミングチャートである。
【図１７】図１７は、実施の形態４におけるタイミング検証装置の構成例を示す図である。
【図１８】図１８は、フリップフロップに対する入力例を示すタイミングチャートである。
【図１９】図１９は、実施の形態４のタイミング検証装置の、他の構成例を示す図である。
【図２０】図２０は、波形表示において信号値を区別して表示した画面例を示す図である。
【図２１】図２１は、あるシミュレーション時刻における信号値を一覧表示した場合の画面例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本発明にかかるタイミング検証装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態１．
図１は、本発明にかかるタイミング検証装置の実施の形態１の構成例を示す図である。図１のタイミング検証装置は、出力イベントスケジューリング部１−１および１−２と、スケジューラ６とを備える。出力イベントスケジューリング部１−１は、論理回路を構成する素子への入力の変化（入力イベント）のうち、最小遅延条件を満たすイベント（ベストケースイベント）による素子からの出力をスケジューリングする制御を行う。同様に、出力イベントスケジューリング部１−２は、入力イベントのうち、最大遅延条件を満たすイベント（ワーストケースイベント）による素子からの出力をスケジューリングする制御を行う。
【００１４】
本実施の形態のタイミング検証装置は、従来のイベントドリブンシミュレーション機能を前提として備え、論理回路と等価なモデルおよびその配線情報（ネットリストなど）を計算機上に展開し、信号値に変化（イベント）が生じる都度、そのイベントに対する素子の出力挙動を模擬することで、回路動作のシミュレーションを行う。
【００１５】
また、出力イベントスケジューリング部１−１は、入力イベント選択部２−１と、出力変化算出部４−１と、タイミング違反検出部３−１と、スケジュール判定部５−１とを備える。
【００１６】
出力イベントスケジューリング部１−１の入力イベント選択部２−１は、素子に対する入力イベントを検出すると、当該入力イベントがベストケースイベントであるかどうかを判断し、ベストケースイベントである場合には、当該入力イベントを、信号値を出力する対象として選択する。タイミング違反検出部３−１は、ベストケースイベントに対してタイミング仕様に基づいたタイミングチェックを行い、タイミング違反を報告する。出力変化算出部４−１は、ベストケースイベントを含む入力イベントに基づいて、素子から出力される出力信号値を算出し、また、遅延値計算処理により得た遅延値を用いて、信号値が変化する時刻である出力変化時刻を算出する。スケジュール判定部５−１は、出力変化算出部４−１が算出する出力信号値を保持し、出力変化算出部４−１が算出した出力信号値を現在の出力信号値と比較して変化の有無を判定し、変化がある場合には、出力イベント情報をスケジューラ６に転送する。ここでは、出力イベント情報として、出力先の配線，当該出力信号値および対応する出力変化時刻を含めるとする。一方、出力信号値に変化がない場合は、出力イベントをキャンセルし、スケジューラ６に通知しない。
【００１７】
遅延値計算処理は、既存技術と同様、計算機上のシミュレーションデータにアノテートされた回路の遅延情報データ（たとえば、ＳＤＦ（Standard  Delay  Format）等）を基に行うとする。
【００１８】
出力イベントスケジューリング部１−２は、入力イベント選択部２−２と、出力変化算出部４−２と、タイミング違反検出部３−２と、スケジュール判定部５−２とを備える。
【００１９】
出力イベントスケジューリング部１−２の入力イベント選択部２−２は、素子に対する入力イベントを検出すると、当該入力イベントがワーストケースイベントであるかどうかを判断し、ワーストケースイベントである場合には、当該入力イベントを、信号値を出力する対象として選択する。タイミング違反検出部３−２は、ワーストケースイベントに対してタイミング仕様に基づいたタイミングチェックを行い、タイミング違反を報告する。出力変化算出部４−２は、ワーストケースイベントを含む入力イベントに基づいて、素子から出力される出力信号値を算出し、また、遅延値計算処理により得た遅延値を用いて、信号値が変化する時刻である出力変化時刻を算出する。スケジュール判定部５−２は、出力変化算出部４−２が算出する出力信号値を保持し、出力変化算出部４−２が算出した出力信号値を現在の出力信号値と比較して変化の有無を判定し、変化がある場合には、出力イベント情報をスケジューラ６に転送する。ここでは、出力イベント情報として、出力先の配線，当該出力信号値および対応する出力変化時刻を含めるとする。一方、出力信号値に変化がない場合は、出力イベントをキャンセルし、スケジューラ６に通知しない。
【００２０】
なお、入力イベント選択部２−１は、ベストケース入力イベントを、信号値を出力する対象として選択するが、他のイベント（図２のサンプル回路にて発生する全てのイベント）も、後段の、タイミング違反検出部３−１および出力変化算出部４−１に伝播させる。同様に、入力イベント選択部２−２は、ワーストケース入力イベントを、信号値を出力する対象として選択するが、他のイベントも伝播させる。したがって、タイミング違反検出部および出力変化算出部のそれぞれは、サンプル回路について全イベントの発生状況（各配線上の信号値の変化）を認識できる。
【００２１】
スケジューラ６は、自身に転送された出力イベント情報を、当該出力イベント情報に含まれる出力変化時刻の順にスケジューリングする。そして、スケジューラ６は、当該出力変化時刻が、現在のシミュレーション時刻と一致した際に、当該出力イベント情報に含まれる出力先の配線を指定して、当該出力イベント情報に含まれる信号値と、その信号値に変化する前の信号値とを、入力イベントとして出力する。
【００２２】
なお、図１のタイミング検証装置は、シミュレーション対象回路を構成する回路素子（記憶素子やゲート回路などのセル情報）ごとに検証を行い、検証結果を連携させることで、シミュレーション対象回路全体での遅延検証を行う。
【００２３】
つぎに、上記のように構成されたタイミング検証装置の動作を説明する。図２は、タイミング検証を行う対象である論理回路のサンプルを示す図である。
【００２４】
図２のサンプル回路は、クロック立上り同期フリップフロップ１１および１３と、２入力ＡＮＤ１２から成り、配線１４〜２０によって結線されている。配線１４〜２０のそれぞれの信号変化点は、ベストケース遅延とワーストケース遅延の間に位置する信号可変範囲を有する。本実施の形態では、ベストケースおよびワーストケースのそれぞれについて遅延条件を積算する。図１のタイミング検証装置は、このサンプル回路の場合、配線１４，１５（１９），１７への入力パターンおよび、各素子に対する配線状況の情報を与えられ、シミュレーション開始などの指示を受けて動作する。配線への入力パターンは、スケジューラ６にて予め設定され、また、配線情報は、予め、タイミング違反検出部３−１および３−２，出力変化算出部４−１および４−２にそれぞれ与えられるとする。
【００２５】
本実施の形態では、信号値として、信号変化が発生しうることを示す値として「信号可変」を定義する。ここでの「信号可変」は、ある時間幅内に少なくとも１回の信号遷移が発生することを示す。従来の概念では、「信号可変」は信号の遷移が発生することを必ずしも意味しないため、本実施の形態の「信号可変」は、従来の論理シミュレーション装置で一般的に利用される「確定値ではない」という概念（未初期化、不定など）とは異なる。
【００２６】
図３は、図２のサンプル回路を対象としたシミュレーション例を示すタイミングチャートである。図３において、３１〜３９は信号可変範囲、４０〜４２，４６，４８，５０，５２〜５４，６４がベストケースでの変化時刻、４３〜４５，４７，４９，５１，５５〜５７，６５がワーストケースでの変化時刻、５８，６０，６２がベストケースでの遅延、５９，６１，６３がワーストケースでの遅延である。配線１４，１５（１９），１７は、それぞれ、信号可変範囲を有することとする。以下、ベストケース遅延の場合と、ワーストケース遅延の場合に分けて順に説明する。
【００２７】
＜ベストケースの遅延＞
図４は、ベストケース遅延に対するイベントスケジューリング処理を示すフローチャートである。フリップフロップ１１では、クロック入力の立上りエッジ発生の時のみ、出力値更新にかかる演算が行われる。スケジューラ６の処理により、たとえば、図３のクロック配線１５上で、時刻４０，４１，４２の各々にてベストケースでの立上りエッジイベントが発生する。この場合、スケジューラ６は、それぞれの時刻にて、クロック配線１５に対して、出力変化情報として、変化前の信号値（ここでは“０”）および変化後の信号値（ここでは“信号可変”）を出力する。入力イベント選択部２−１は、ベストケース入力イベントが発生したと判断した場合には、当該イベントを選択し後段に通知する（ステップＳ１）。
【００２８】
図５は、入力イベント選択部２−１の処理を示すフローチャートである。入力イベント選択部２−１は、入力イベントの発生を検出すると（ステップＳ１１）、当該入力イベントに含まれる変化後の入力値を確認する（ステップＳ１２）。ここで、ベストケースのイベントは、必ず信号可変範囲の始端となる。したがって、入力イベント選択部２−１は、変化後の入力値が「信号可変」の場合は、入力イベントがベストケースのイベントであると判断し（ステップＳ１２：＝信号可変）、当該入力イベントを、信号値を出力する対象として選択し、後段に通知する（ステップＳ１３）。一方、変化後の入力値が「信号可変」でない場合は、入力イベント選択部２−１は、入力イベントがベストケースのイベントではないと判断し（ステップＳ１２：≠信号可変）、当該入力イベントを、ベストケースの信号値を出力する対象としては選択しない。
【００２９】
タイミング違反検出部３−１は、選択された入力イベントに対してタイミングチェックを行い、当該入力イベントを出力変化算出部４−１へ出力する（詳細後述）。
【００３０】
出力変化算出部４−１は、上述の通り論理回路の配線状況を有し、当該配線状況に基づいて、入力イベントがベストケース入力イベントであるかどうかに関わらず、全ての入力イベントについて出力信号値を算出する。そして、当該出力信号値をスケジュール判定部５−１に通知し、これを受けたスケジュール判定部５−１は、当該出力信号値を該当する素子の現在の出力信号値として保持する。たとえば、図３の配線１６への出力に関係して、時刻４１の直近に発生したクロック立上りエッジイベントは、時刻４３のワーストケースイベントである。出力変化算出部４−１は、このイベントに際して、クロック配線１５の立上りにより配線１４の値：“０”を取得し、配線１６の出力信号値を“０”と算出して、スケジュール判定部５−１に通知している。したがって、スケジュール判定部５−１は、このとき、配線１６の現在の出力信号値として“０”を保持している。
【００３１】
図４の処理に戻り、出力変化算出部４−１は、ベストケース入力イベントの信号値を用いて新たな出力信号値を算出する（ステップＳ２）。フリップフロップ１１の場合、時刻４１にてクロック配線１５の立上りエッジが発生するので、配線１４の値が出力となるが、ここでは、既に述べたように、ベストケースのイベントは必ず信号可変範囲の始端になるため、出力変化算出部４−１は、出力信号値を「信号可変」とする（ベストケースにおいて以下も同様）。そして、出力変化算出部４−１は、ベストケース入力イベントである旨とともに、算出結果をスケジュール判定部５−１に通知する。スケジュール判定部５−１は、ベストケース入力イベントである旨の通知を受けると、受け取った出力信号値を現在の出力信号値（ここでは、配線１６の信号値：“０”）と比較する（ステップＳ３）。スケジュール判定部５−１は、両者が一致する場合には、出力変化がないため、イベントスケジューリングにかかる処理を行わずに処理を終了する（ステップＳ３：＝現在の出力信号値）。ここでは、両者が一致しないので（ステップＳ３：≠現在の出力信号値）、スケジュール判定部５−１は、その旨とともに処理を出力変化算出部４−１に戻す。これを受けた出力変化算出部４−１は、ベストケースの遅延値計算処理を実行し、計算結果として遅延値５８を得て（ステップＳ４）、遅延値５８を現在のシミュレーション時刻に加算することで出力変化時刻を算出する。そして、出力変化算出部４−１は、当該出力変化時刻および算出した出力信号値をスケジュール判定部５−１に通知する。スケジュール判定部５−１は、配線の識別子（配線１６），当該出力変化時刻および出力信号値を、イベント情報としてスケジューラ６に転送する（ステップＳ５）。
【００３２】
フリップフロップ１１の場合、取得した入力がそのまま出力となるため、現在の出力値と取得した入力の値が一致する時刻４０および４２では、出力変化が発生しない。よって、出力イベントのスケジューリングを行わない。
【００３３】
２入力ＡＮＤ１２では、配線１６および配線１７からの入力である信号値が変化するつど、論理積演算による出力信号値の算出が行われる。入力イベント選択部２−１は、配線１６において時刻４６でベストケースの信号変化が発生すると、同配線の入力値を取得し、タイミング違反検出部３−１へ出力する。タイミング違反検出部３−１は、ここでは、タイミング違反を検出しないので、当該入力値を出力変化算出部４−１に出力する。出力変化算出部４−１およびスケジュール判定部５−１は、上述同様、図４の処理を行う。同時刻（時刻４６）における配線１７の信号値は“１”であるところへ、配線１６の信号値が“０”から“信号可変”へ変化し、出力信号値は“信号可変”となる。したがって、スケジュール判定部５−１は、出力信号値が現在の出力信号値と一致しない旨を通知する。これを受けた出力変化算出部４−１は、ベストケースの遅延値計算処理により遅延値６０を算出し、遅延値６０を用いて出力変化時刻４８を算出し、当該出力変化時刻４８および出力信号値“信号可変”をスケジュール判定部５−１に通知する。これを受けたスケジュール判定部５−１は、出力先となる配線（配線１８），当該出力変化時刻および出力信号値を、イベント情報としてスケジューラ６に転送する。
【００３４】
また、配線１７における信号変化に対しても上述同様の処理を行う。すなわち、入力イベント選択部２−１は、時刻６４でベストケースの信号変化が発生すると、配線１７の入力イベントを選択し、タイミング違反検出部３−１へ出力する。タイミング違反検出部３−１は、ここでは、タイミング違反を検出しないので、当該入力イベントを出力変化算出部４−１に出力する。出力変化算出部４−１は、上述同様、図４の処理を行う。時刻６４では、配線１６の信号値が“１”であるところへ、配線１７の信号値が“１”から“信号可変”へ変化するため、出力値が変化する。したがって、出力変化算出部４−１は、ベストケースの遅延値計算処理により遅延値６２を算出し、遅延値６２を用いて出力変化時刻５０を算出し、当該出力変化時刻５０および出力信号値“信号可変”をスケジュール判定部５−１に通知する。これを受けたスケジュール判定部５−１は、出力先となる配線（配線１８），当該出力変化時刻および出力信号値を、イベント情報としてスケジューラ６に転送する。
【００３５】
フリップフロップ１３には、フリップフロップ１１に対する処理と同様の処理が行われる。すなわち、時刻５２，５３，５４にて発生するベストケースでの立上りエッジイベントにて、図４の処理を行う。図３にみられるように、時刻５２，５３，５４では、配線１８からの入力信号値がいずれも“０”であるため、これらの時刻では配線２０上の出力変化が発生しない。したがって、スケジュール判定部５−１は、スケジューリングを行わない。
【００３６】
＜ワーストケースの遅延＞
図６は、ワーストケース遅延に対するイベントスケジューリング処理を示すフローチャートである。フリップフロップ１１では、クロック入力の立上りエッジイベント時のみ、出力値更新にかかる演算が行われる。スケジューラ６の処理により、たとえば、図３のクロック配線１５上で、時刻４３，４４，４５の各々にてワーストケースでの立上りエッジイベントが発生する。この場合、スケジューラ６は、それぞれの時刻にて、クロック配線１５に対して、出力変化情報として、変化前の信号値（ここでは“信号可変”）および変化後の信号値（ここでは“１”）を出力する。入力イベント選択部２−２は、ワーストケース入力イベントが発生したと判断した場合には、当該イベントを選択し後段に通知する（ステップＳ２１）。
【００３７】
図７は、入力イベント選択部２−２の処理を示すフローチャートである。入力イベント選択部２−２は、入力イベントの発生を検出すると（ステップＳ３１）、当該入力イベントに含まれる変化前の入力値を確認する（ステップＳ３２）。変化前の入力値が「信号可変」である場合は、入力イベント選択部２−２は、入力イベントがワーストケースのイベントであると判断し（ステップＳ３２：＝信号可変）、当該入力イベントを選択する（ステップＳ３３）。一方、変化前の入力値が「信号可変」でない場合は、入力イベント選択部２−２は、入力イベントがワーストケースのイベントではないと判断し（ステップＳ３２：≠信号可変）、当該入力イベントを、ワーストケースの信号値を出力する対象としては選択しない。
【００３８】
タイミング違反検出部３−２は、選択された入力イベントに対してタイミングチェックを行い、当該入力イベントを出力変化算出部４−２へ出力する（詳細後述）。
【００３９】
出力変化算出部４−２は、出力変化算出部４−１同様、入力イベントがワーストケース入力イベントであるかどうかに関わらず、全ての入力イベントについて出力信号値を算出する。そして、当該出力信号値をスケジュール判定部５−２に通知し、これを受けたスケジュール判定部５−２は、当該出力信号値を現在の出力信号値として保持する。たとえば、図３の配線１６への出力に関して、時刻４４の直近に発生したクロック立上りエッジイベントは、時刻４１のベストケースイベントである。出力変化算出部４−２は、このイベントに際して、クロック配線１５の立上りにより配線１４の値：“１”を取得し、ベストケースであるため配線１６の出力信号値を“信号可変”と算出して、スケジュール判定部５−２に通知している。したがって、スケジュール判定部５−２は、このとき、配線１６の現在の出力信号値として“信号可変”を保持している。
【００４０】
図６の処理に戻り、出力変化算出部４−２は、ワーストケース入力イベントの信号値を用いて出力信号値を算出する（ステップＳ２２）。ここで、ベストケースの場合とは異なり、ワーストケースでは、計算した値そのものを出力信号値とする。そして、出力変化算出部４−２は、ワーストケース入力イベントである旨とともに、算出結果（この場合は、出力値“１”）をスケジュール判定部５−２に通知する。スケジュール判定部５−２は、ワーストケース入力イベントである旨の通知を受けると、受け取った算出結果を現在の出力信号値（ここでは、配線１６の信号値：“信号可変”）と比較する（ステップＳ２３）。スケジュール判定部５−２は、両者が一致する場合には、出力変化がないため、イベントスケジューリングにかかる処理を行わずに処理を終了する（ステップＳ２３：＝現在の出力信号値）。ここでは、両者が一致しないので（ステップＳ２３：≠現在の出力信号値）、スケジュール判定部５−２は、その旨とともに処理を出力変化算出部４−２に戻す。これを受けた出力変化算出部４−２は、ワーストケースの遅延値計算処理を実行し、計算結果として遅延値５８を得て（ステップＳ２４）、遅延値５８を現在のシミュレーション時刻に加算することで出力変化時刻を算出する。そして、出力変化算出部４−２は、当該出力変化時刻および算出した出力信号値をスケジュール判定部５−２に通知する。スケジュール判定部５−２は、配線の識別子（配線１６），当該出力変化時刻および出力信号値を、イベント情報としてスケジューラ６に転送する（ステップＳ２５）。このように、ベストケースの場合とは異なり、ワーストケースの場合には、出力信号値として算出結果そのものをスケジューリングする。
【００４１】
なお、時刻４３および時刻４５では出力変化が発生しないため、算出される出力信号値が変化しない。したがって、出力変化算出部４−２より算出値を受けたスケジュール判定部５−２は、イベントスケジューリングにかかる処理を行わずに処理を終了する（ステップＳ２３：＝現在の出力信号値）。
【００４２】
２入力ＡＮＤ１２では、配線１６および配線１７からの入力である信号値が変化するつど、論理積演算による出力信号値の算出が行われる。入力イベント選択部２−２は、配線１６において時刻４７でワーストケースの信号変化が発生すると、同配線の入力値を取得し、タイミング違反検出部３−２へ出力する。タイミング違反検出部３−２は、ここでは、タイミング違反を検出しないので、当該入力値を出力変化算出部４−２に出力する。出力変化算出部４−２およびスケジュール判定部５−２は、上述同様、図６の処理を行う。同時刻（時刻４７）における配線１７の信号値は“１”であるところへ、配線１６の信号値が“信号可変”から“１”へ変化するため、出力変化算出部４−２は、配線１６における出力信号値“１”を得て、スケジュール判定部５−２に通知する。ここで、現在の出力信号値は「信号可変」であるため、スケジュール判定部５−２は、出力信号値が変化したと判断し（ステップＳ２３：≠現在の出力信号値）、出力信号値が現在の出力信号値と一致しない旨を通知する。これを受けた出力変化算出部４−２は、ワーストケースの遅延値計算処理を行って遅延値６０を得て、当該遅延値６０を用いて出力変化時刻４８を算出し、当該出力変化時刻４８および出力信号値“１”をスケジュール判定部５−２に通知する。これを受けたスケジュール判定部５−２は、出力先となる配線（配線１８），当該出力変化時刻および出力信号値を、イベント情報としてスケジューラ６に転送する。
【００４３】
また、配線１７における信号変化に対しても上述同様の処理を行う。すなわち、入力イベント選択部２−２は、時刻６５でワーストケースの信号変化が発生すると、配線１７の入力イベントを選択し、タイミング違反検出部３−２へ通知する。タイミング違反検出部３−２は、ここでは、タイミング違反を検出しないので、当該入力イベントを出力変化算出部４−２に出力する。出力変化算出部４−２は、上述同様、図６の処理を行う。時刻６５では、配線１６の信号値が“１”であるところへ、配線１７の信号値が“信号可変”から“０”へ変化するため、出力値が変化する。したがって、出力変化算出部４−２は、ワーストケースの遅延値計算処理により遅延値６３を算出し、遅延値６３を用いて出力変化時刻５１を算出し、当該出力変化時刻５１および出力信号値“０”をスケジュール判定部５−２に通知する。これを受けたスケジュール判定部５−２は、出力先となる配線（配線１８），当該出力変化時刻および出力信号値を、イベント情報としてスケジューラ６に転送する。
【００４４】
フリップフロップ１３には、フリップフロップ１１に対する処理と同様の処理が行われる。すなわち、時刻５５，５６，５７にて発生するワーストケースでの立上りエッジイベントにて、図６の処理を行う。図３にみられるように、時刻５５，５６，５７では、配線１８からの入力信号値がいずれも“０”であるため、これらの時刻では配線２０上の出力変化が発生しない。したがって、スケジュール判定部５−２は、スケジューリングを行わない。
【００４５】
なお、上述のように、入力値によっては、出力のイベント発生がスケジューリングされずキャンセルされる場合がある。ここで、図８を用いて、当該場合の具体例を説明する。図８は、２入力ＡＮＤ１２における入力および出力信号値の変化例を示すタイミングチャートである。図８では、７１〜７３が信号可変範囲、７４〜７９が信号の変化時刻、８０〜８２が遅延値である。
【００４６】
２入力ＡＮＤ１２へ接続する配線１６は、時刻７５および７７で入力変化のイベントを発生する。また、配線１７は、時刻７４および７６で入力変化のイベントを発生する。このうち、時刻７４では、配線１６の出力信号値は“１”で固定であり、一方、配線１７の出力信号値が“１”から「信号可変」へ変化するため、配線１８には、「信号可変」を出力するためのベストケースのイベントが、遅延値８１を伴う時刻７８にスケジューリングされる。また、時刻７６では、配線１６の出力信号値が“信号可変”である一方、配線１７の出力信号値が“信号可変”から“０”へ変化するため、配線１８には、“０”を出力するためのワーストケースのイベントが、遅延値８２を伴う時刻７９にスケジューリングされる。
【００４７】
一方、時刻７５では、配線１６の出力信号値が“１”から“信号可変”へ変化し、一方、配線１７の出力信号値が“信号可変”で固定である。したがって、配線１８に対する出力信号値は“信号可変”と算出される。この場合、算出された出力信号値が、配線１８に対する現在の出力信号値、すなわち、時刻７４で発生したイベントについて算出された配線１８に対する出力信号値、と同じ値であることから、当該変化に対する出力イベントはスケジューリングされない。
【００４８】
また、時刻７７では、配線１６の出力信号値が“信号可変”から“０”へ変化し、一方、配線１７の出力信号値が“０”で固定である。したがって、配線１８に対する出力信号値は“０”と算出される。この場合、算出された出力信号値が、配線１８に対する現在の出力信号値、すなわち、時刻７６で発生したイベントについて算出された配線１８に対する出力信号値、と同じ値であることから、当該変化に対する出力イベントはスケジューリングされない。
【００４９】
以上説明した処理により、ベストケースからワーストケースへ信号が変化する期間について、信号値を“信号可変”としたシミュレーション結果を得ることができる。
【００５０】
つづいて、このタイミング検証装置におけるタイミング違反の検証動作について説明する。このタイミング検証装置は、タイミング仕様に基づくタイミングチェック対象範囲にて、チェック対象となる信号値が“信号可変”となる場合には、信号変化が発生しうるためタイミング違反であると判定し、違反を報告する。
【００５１】
本実施の形態におけるタイミング検証方法について、図２のフリップフロップ１３を例に挙げ、図９のタイミングチャートを用いて説明する。図９は、フリップフロップ１３に対するイベントの入力例を示すタイミングチャートである。図９では、９１〜９４が信号可変範囲、９５〜９８が変化時刻、９９がセットアップタイム、１００がクロック配線１９での信号可変範囲９１に該当する期間、１０１がホールドタイム、１０２がタイミングチェック対象範囲、である。図９では、配線１８のイベントの入力例として、信号可変範囲９２，９３または９４を有する入力例をそれぞれ記載する。
【００５２】
クロック配線１９は、図３でも示した通り、信号可変範囲（図９では信号可変範囲９１）を有する。タイミング検証装置のタイミング違反検出部３−１および３−２は、タイミングチェック対象範囲に対して、シミュレーションが進行するなかで、タイミング違反があるかどうかを検証する。図９の例では、信号可変範囲９１に対し、フリップフロップ１３のタイミングチェックのためのパラメータ（以下、「タイミング検証パラメータ」ともいう）を加味し、タイミングチェック対象範囲１０２となる。たとえば、クロック配線１９のベストケース変化時刻９６より前に、セットアップタイム９９を付加し、また、クロック配線１９のワーストケース変化時刻９７の後ろに、ホールドタイム１０１を付加する。そして、セットアップタイム９９の始点時刻９５から、ホールドタイム１０１の終点時刻９８までをタイミングチェック対象範囲１０２とする。
【００５３】
たとえば、タイミング検証装置の入力イベント選択部２−１からタイミング違反検出部３−１に対し、入力イベントが出力された場合を考える。タイミング違反検出部３−１は、クロック配線１９のタイミングチェック対象範囲１０２に対して、フリップフロップ１３のタイミングチェックを行う。この場合は、タイミングチェック対象範囲１０２内でチェック対象入力となる配線１８の信号値が遷移した場合に、タイミング違反となる。すなわち、タイミング違反検出部３−１は、タイミングチェック対象範囲１０２内で、配線１８の信号値が“信号可変”となるベストケースイベントが発生した場合、タイミング違反と判定し、その旨を報告する。たとえば、タイミング違反検出部３−１は、タイミング違反を出力変化算出部４−１に報告する。
【００５４】
図９の信号可変範囲９２〜９４は、いずれも、タイミングチェック対象範囲１０２内にその一部または全部が含まれるため、いずれのケースもタイミング違反となる。タイミング違反検出部３−１は、ベストケースイベントをチェックするので、タイミングチェック対象範囲１０２内にて信号値が確定値から“信号可変”へ変化する場合に、タイミング違反と判断する。図９では、信号可変範囲９３、または９４を持つ入力が該当する。具体的には、タイミング違反検出部３−１は、クロック配線１９が信号可変範囲９１である間に、配線１８上で信号可変範囲９３が開始することで、タイミング違反と判断する。また、タイミング違反検出部３−１は、クロック配線１９が信号可変範囲９１の後、ホールドタイム１０１を満了しないうちに、配線１８上で信号可変範囲９４が開始することで、タイミング違反と判断する。
【００５５】
一方、タイミング違反検出部３−２は、ワーストケースイベントをチェックするので、タイミングチェック対象範囲１０２内にて信号値が“信号可変”から確定値へ変化するワーストケースイベントが発生した場合に、タイミング違反と判断する。図９では、信号可変範囲９２、または９３を持つ入力が該当する。具体的には、タイミング違反検出部３−２は、配線１８上で信号可変範囲９２が終了して確定値となってから、セットアップタイム９９が経過しないうちに、クロック配線１９上で信号可変範囲９１が開始することで、タイミング違反と判定し、その旨を報告する。たとえば、タイミング違反検出部３−２は、タイミング違反を出力変化算出部４−２に報告する。
【００５６】
なお、上記ではフリップフロップの場合を説明したが、ラッチやメモリなどの場合は、セットアップタイムおよびホールドタイムの基準タイミングが異なるケースがある。また、上記のセットアップタイムおよびホールドタイムを用いる他にも、タイミングチェックの規定は存在する。これらの場合には、基準タイミングの前にチェック値を設定することが規定されるパラメータを用いる場合は、ベストケース変化点（図９の場合には時刻９６）の前にチェック値を付与し、基準タイミングの後にチェック値を設定することが規定されるパラメータを用いる場合は、ワーストケース変化点（図９の場合には時刻９７）の後にチェック値を付与する。
【００５７】
以上説明したように、本実施の形態におけるタイミング検証装置では、シミュレーションの実行にあたり、最小値遅延条件（ベストケース）のイベントと最大遅延条件（ワーストケース）のイベントとの２系統について信号値および信号出力時刻をスケジューリングしてイベント発生させ、２系統のイベントを独立して伝播させることとした。また、ベストケースのイベントにより出力信号の算出値が変化した場合には、出力信号値を“信号可変”としてスケジューリングする構成とした。また、出力信号値が変化するつど、遅延値を算出し、最小値遅延条件および最大遅延条件の各イベントについて、出力変化時刻を算出する構成とした。また、タイミングチェック対象の時刻において、チェック対象となる信号値が信号可変となるかどうかをチェックすることで、タイミング違反を検出する構成とした。
【００５８】
これにより、シミュレーション実行にあたり信号が変化する可能性がある時間範囲を明確にし、当該範囲に対して単一シミュレーションにより包括的にタイミングチェックを行うことができ、タイミング検証を網羅的に実行可能となる。また、網羅性を向上させるために必須となる「タイミング条件の細分化による繰り返し検証」が不要となるため、タイミング検証時間を飛躍的に短縮できる。さらに、信号可変となる範囲が伝播するので、当該範囲をチェックすることにより、着実にタイミング違反を検出できる。
【００５９】
＜変形例＞
なお、上記実施の形態では、出力変化を判断するために、２系統の出力変化算出部が、全ての入力イベントについて出力信号値を算出し、保持することとしたが、他の方法により出力変化を判断してもよい。
【００６０】
図１０は、本実施の形態のタイミング検証装置の、他の構成例を示す図である。図１０のタイミング検証装置は、図１のタイミング検証装置と比較すると、出力イベントスケジューリング部１−１および１−２の代わりに、出力イベントスケジューリング部１Ａ−１および１Ａ−２を備える。また、出力変化算出部４−１およびスケジュール判定部５−１の代わりに、出力変化算出部４Ａ−１およびスケジュール判定部５Ａ−１を備え、出力変化算出部４−２およびスケジュール判定部５−２の代わりに、出力変化算出部４Ａ−２およびスケジュール判定部５Ａ−２を備える。さらに、素子の出力信号値の履歴を記憶するための記憶手段である信号値記憶部７を備える。信号値記憶部７は、出力変化算出部４Ａ−１および出力変化算出部４Ａ−２から通知される出力信号値を、素子に対応させて保持する。
【００６１】
出力イベントスケジューリング部１Ａ−１の出力変化算出部４Ａ−１は、ベストケースイベントのみに基づいて、素子から出力される出力信号値を算出して信号値記憶部７に保存する。スケジュール判定部５Ａ−１は、信号値記憶部７から素子に対応する現在の出力信号値を読み出し、出力変化算出部４Ａ−１が算出した出力信号値と比較して、変化の有無を判定する。一方、出力イベントスケジューリング部１Ａ−２の出力変化算出部４Ａ−２は、ワーストケースイベントのみに基づいて、素子から出力される出力信号値を算出して信号値記憶部７に保存する。スケジュール判定部５Ａ−２は、信号値記憶部７から素子に対応する現在の出力信号値を読み出し、出力変化算出部４Ａ−２が算出した出力信号値と比較して、変化の有無を判定する。
【００６２】
また、上記実施の形態では、スケジューラ６が出力するイベントには、変化前の信号値と変化後の信号値とを含めることとしたが、スケジューラ６は変化後の信号値のみを出力することとし、２系統の入力イベント選択部およびタイミング違反検出部は、素子に接続する各配線からの入力イベントの履歴（現在の信号値）を保持するとしてもよい。
【００６３】
実施の形態２．
実施の形態１では、ベストケースとワーストケースの両方の遅延を考慮する検証環境を用いることを前提として説明した。本実施の形態では、上記の両方の遅延を考慮していない従来の検証環境、すなわち、単一遅延条件での検証環境を用いて、本発明にかかるタイミング検証方法を実行する場合を説明する。
【００６４】
図１１は、本実施の形態におけるタイミング検証装置の構成例を示す図である。図１１のタイミング検証装置は、出力イベントスケジューリング部１−１および出力イベントスケジューリング部１−２の代わりに、出力イベントスケジューリング部１Ｂ−１および出力イベントスケジューリング部１Ｂ−２を備える。出力イベントスケジューリング部１Ｂ−１は、出力イベントスケジューリング部１−１における入力イベント選択部２−１の代わりに入力イベント選択部２Ｂ−１を備える。出力イベントスケジューリング部１Ｂ−２は、出力イベントスケジューリング部１−２における入力イベント選択部２−２の代わりに入力イベント選択部２Ｂ−２を備える。入力イベント選択部２−１（または入力イベント選択部２−２）は、変化後（または変化前）の入力信号値が「信号可変」であるかどうかのみをチェックしたが、入力イベント選択部２Ｂ−１および２Ｂ−２は、当該チェックを変化前後の入力信号値について行う。
【００６５】
つづいて、以上のように構成されたタイミング検証装置における動作について説明する。図１２は、本実施の形態における入力イベント選択部２Ｂ−１の処理を示すフローチャートである。入力イベント選択部２Ｂ−１は、入力イベント発生を検出すると、上述同様、ステップＳ１１およびＳ１２の処理を実行する。入力イベント選択部２Ｂ−１は、変化後の入力信号値が「信号可変」でないと判断した場合には（ステップＳ１２：≠信号可変）、さらに、変化前の入力信号値が「信号可変」であるかどうかを判断する（ステップＳ１４）。入力イベント選択部２Ｂ−１は、変化前の入力信号値が「信号可変」でないと判断した場合には（ステップＳ１４：≠信号可変）、上述のステップＳ１３の処理、すなわち、ベストケースの入力イベントを選択する処理を行い、当該入力イベントを出力変化算出部４−１に出力する。一方、変化前の入力信号値が「信号可変」であると判断した場合には（ステップＳ１４：＝信号可変）、処理を終了する。
【００６６】
このように、入力イベント選択部２Ｂ−１は、変化後の入力信号値が「信号可変」である場合にくわえ、変化後の入力信号値および変化前の入力信号値がいずれも「信号可変」でない場合に、ベストケースのイベントを発生させる。単一遅延条件での検証環境では、信号可変範囲が伝播しないので、変化後および変化前の入力信号値はいずれも「信号可変」ではない。したがって、単一遅延条件のイベントは、必ず、変化後および変化前の入力信号値がいずれも「信号可変」でない場合に該当し、入力イベント選択部２Ｂ−１は、これをベストケースイベントとして選択する。
【００６７】
図１３は、本実施の形態における入力イベント選択部２Ｂ−２の処理を示すフローチャートである。入力イベント選択部２Ｂ−２は、入力イベント発生を検出すると、上述同様、ステップＳ３１およびＳ３２の処理を実行する。入力イベント選択部２Ｂ−２は、変化前の入力信号値が「信号可変」でないと判断した場合には（ステップＳ３２：≠信号可変）、さらに、変化後の入力信号値が「信号可変」であるかどうかを判断する（ステップＳ３４）。入力イベント選択部２Ｂ−２は、変化後の入力信号値が「信号可変」でないと判断した場合には（ステップＳ３４：≠信号可変）、上述のステップＳ３３の処理、すなわち、ワーストケースの入力イベントを選択する処理を行い、当該入力イベントを出力変化算出部４−２に出力する。一方、変化後の入力信号値が「信号可変」であると判断した場合には（ステップＳ３４：＝信号可変）、処理を終了する。
【００６８】
このように、入力イベント選択部２Ｂ−２は、変化前の入力信号値が「信号可変」である場合にくわえ、変化前の入力信号値および変化後の入力信号値がいずれも「信号可変」でない場合に、ワーストケースのイベントを発生させる。上述のように、単一遅延条件での検証環境では、変化後および変化前の入力信号値はいずれも「信号可変」ではない。したがって、単一遅延条件のイベントは、必ず、変化前および変化後の入力信号値がいずれも「信号可変」でない場合に該当し、入力イベント選択部２Ｂ−２は、これをワーストケースイベントとして選択する。
【００６９】
つぎに、図２の２入力ＡＮＤ１２を例に上記処理を行う場合を説明する。図１４は、２入力ＡＮＤ１２に対するイベントの入力例を示すタイミングチャートである。図１４では、１１１が信号可変範囲、１１２および１１３が遅延値、１１４〜１１６が信号変化時刻である。
【００７０】
配線１７では、入力イベントにかかる信号値の可変領域がなく、時刻１１４に、入力値が“１”から“０”へ変化する。当該入力イベントの変化が発生すると、出力イベントスケジューリング部１Ｂ−１の入力イベント選択部２Ｂ−１は、図１２のフローを実行して入力信号値をチェックし、変化後の入力信号値（“０”）が信号可変ではなく、変化前の入力信号値（“１”）が信号可変ではないため、ベストケースのイベントとして当該入力信号値を選択する。同様に、出力イベントスケジューリング部１Ｂ−２の入力イベント選択部２Ｂ−２は、図１３のフローを実行して入力信号値をチェックし、変化前の入力信号値（“１”）が信号可変ではなく、変化後の入力信号値（“０”）が信号可変ではないため、ワーストケースのイベントとして当該入力信号値を選択する。したがって、ベストケースおよびワーストケースの両イベントが伝播される。
【００７１】
その後、ベストケースイベント発生に伴い、出力変化算出部４−１により上述同様の処理が実施されると、時刻１１４から遅延値１１２が経過した後の時刻１１５に、ベストケースの出力変化イベントがスケジューリングされる。また、ワーストケースイベント発生に伴い、出力変化算出部４−２により上述同様の処理が実施されると、時刻１１４から遅延値１１３が経過した後の時刻１１６に、ワーストケースの出力変化イベントがスケジューリングされる。
【００７２】
なお、従来の検証環境にて、「信号可変」を持たない信号が印加され、実施の形態１の入力イベント選択処理フロー（図６および図７のフロー）を実行した場合は、ベストケースイベントおよびワーストケースイベントのいずれも選択されない。
【００７３】
以上説明したように、本実施の形態では、ベストケース／ワーストケースの２系統の情報を持たない、すなわち単一遅延情報のみを保持する入力が印加された場合には、当該入力を用いて、ベストケースおよびワーストケースの情報を付与した出力情報を生成する構成とした。これにより、従来の検証環境のようなベストケース／ワーストケースの２系統の情報を保持する入力パターンを印加不能である環境にも、本発明にかかるタイミング検証方法を実行可能となり、入力初段の信号以外については、実施の形態１と同等の効果が得られる。
【００７４】
実施の形態３．
実施の形態１および２では、ベストケースおよびワーストケースの２系統のイベントをスケジューリングするための方法について説明した。本実施の形態では、２系統のイベントが同時刻にスケジューリングされた場合の処理について説明する。
【００７５】
図１５は、本実施の形態におけるタイミング検証装置の構成例を示す図である。図１５のタイミング検証装置は、図１のタイミング検証装置と比較すると、スケジューラ６の代わりにスケジューラ６Ｃを備える。スケジューラ６Ｃは、スケジューラ６の機能を備え、さらに、ベストケースのイベントと、ワーストケースのイベントとが、同一の出力変化時刻を指定して通知された場合には、これらのイベントのスケジューリングの要否により、当該スケジューリングをキャンセルする。
【００７６】
つづいて、以上のように構成されたタイミング検証装置の動作について説明する。図１６は、図２の２入力ＡＮＤ１２に対する入力例を示すタイミングチャートである。図１６では、１２１〜１２５が信号可変範囲、１２６および１２７が遅延値、１２８〜１３０が信号変化時刻である。
【００７７】
図１６に示すように、たとえば、配線１６の信号可変範囲１２１が信号可変範囲１２３として配線１８に伝播するとする。この場合、配線１８の出力イベントとしては、配線１６での時刻１２８におけるワーストケースイベントが、時刻１２８から遅延値１２６を伴った時刻１３０にスケジューリングされる。また、配線１７の信号可変範囲１２２が信号可変範囲１２４として配線１８に伝播するとする。この場合、配線１８の出力イベントとしては、配線１７での時刻１２９におけるベストケースイベントが、時刻１２９から遅延値１２７を伴った時刻１３０にスケジューリングされる。
【００７８】
スケジューラ６Ｃは、配線１６での時刻１２８におけるワーストケースイベントに基づいて、スケジュール判定部５−２から、配線１８について、出力変化時刻が時刻１３０であり、出力値が“０”である出力イベント情報を通知され、当該イベントをスケジューリングする。また、配線１７での時刻１２９におけるベストケースイベントに基づいて、スケジュール判定部５−１から、配線１８について、出力変化時刻が時刻１３０であり、出力信号値が“信号可変”である出力イベント情報を通知される。スケジューラ６Ｃは、自身が保持するスケジューリング内容を参照し、出力イベント情報に含まれる出力変化時刻のイベント登録状況を確認する。スケジューラ６Ｃは、配線１８について、時刻１３０に、出力信号値が“信号可変”から“０”へ変化するイベントが既に登録され、さらに同時刻に新たな出力イベント情報が通知されたと認識する。このように、同一シミュレーション時刻に対して２つの出力イベント情報が通知された場合は、スケジューラ６Ｃは、これらのイベントのスケジューリングの要否を判断する。
【００７９】
図１６でみると、同一時刻１３０において、“信号可変”から確定値への変化（ワーストケースイベントによる）と、確定値から“信号可変”への変化（ベストケースイベントによる）とが発生する。これにより、時刻１３０の前後とも、出力信号値が“信号可変”となり、時刻１３０における当該ワーストケースイベントおよびベストケースイベントがなくとも、信号の状態は変化せず、等価性を維持できる。したがって、スケジューラ６Ｃは、これらのイベントをキャンセルする。これにより、信号可変範囲１２３および１２４の代わりに、信号可変範囲１２３と１２４との境界を排した信号可変範囲１２５が保持された状態でシミュレーションが行われる。
【００８０】
以上説明したように、本実施の形態では、同一時刻に「“信号可変”から確定値への変化」と、「確定値から“信号可変への変化”」とが発生した場合には、当該時刻の信号変化イベントをキャンセルする構成とした。これにより、タイミングチェックに不要であるイベントを排除できるので、検証の性能低下を抑止可能となる。
【００８１】
実施の形態４．
実施の形態１〜３では、タイミングチェックを行うにあたってのイベント出力について説明した。本実施の形態では、シミュレーションを続行可能とするために、タイミング違反が発生した素子の出力を修正する場合について説明する。
【００８２】
図１７は、本実施の形態におけるタイミング検証装置の構成例を示す図である。図１７のタイミング検証装置は、図１のタイミング検証装置と比較すると、出力イベントスケジューリング部１−１および１−２の代わりに、出力イベントスケジューリング部１Ｄ−１および１Ｄ−２を備え、出力変化算出部４−１および４−２の代わりに、出力変化算出部４Ｄ−１および４Ｄ−２を備える。出力変化算出部４Ｄ−１および４Ｄ−２は、タイミング違反検出部３−１または３−２からの通知によりタイミング違反が発生したことを認識した場合に、予め設定された修正パターンにしたがって信号値を修正し、修正後の信号値を用いて出力変化を算出する。
【００８３】
修正パターンは、所定の指定値（たとえば、「不定」とする）、変化前の信号値、変化後の信号値、より選択可能とする。これにより、ユーザが所望する出力にしたがってシミュレーションが実行可能となる。
【００８４】
つづいて、本実施の形態におけるタイミング検証装置の動作を説明する。図１８は、フリップフロップ１３に対する入力例を示すタイミングチャートである。図１８では、１４１〜１４３が信号可変範囲、１４４および１４５が遅延値、１４６が不定である。配線１８の信号可変範囲１４１の一部は、クロック配線１９の立上りエッジにおける信号可変範囲１４２と重複するため、上述の通り、タイミング違反検出部によってタイミング違反が検出される。
【００８５】
ベストケースを例に説明する。出力イベントスケジューリング部１Ｄ−１の入力イベント選択部２−１は、配線１８の立上りエッジを選択し、その後、クロック配線１９の立上りエッジを選択する。これを受けたタイミング違反検出部３−１は、この場合、配線１８の信号がタイミング違反である旨を通知する。出力変化算出部４Ｄ−１は、配線１８の信号がタイミング違反である旨を通知されると、予め設定された修正パターンにしたがって信号値を修正する。
【００８６】
たとえば、「変化前の入力信号値」に修正する設定の場合、出力変化算出部４Ｄ−１は、図１８の波形＃１のように、配線１８における信号変化前の値（信号可変範囲１４１以前の値）：“０”を配線１８の信号値とする。そして、出力変化算出部４Ｄ−１は、配線１８の修正後の信号値に基づいて、出力変化を算出する。この場合、配線１８の修正後の信号値（この場合、出力信号値）は、配線２０の現在の出力信号値“０”と同一であるため、スケジュール判定部５−１は、イベントスケジューリングにかかる処理を行わずに処理を終了する。結果として、配線２０には信号可変範囲は伝播しない。
【００８７】
また、たとえば、「変化後の入力信号値」に修正する設定の場合、配線１８の信号値は、“０”〜“信号可変”と遷移しているので、その後は“１”である。したがって、出力変化算出部４Ｄ−１は、波形＃２のように、信号可変範囲１４１以後の値：“１”を配線１８の信号値とする。そして、出力変化算出部４Ｄ−１は、配線１８の修正後の信号値に基づいて、出力変化を算出する。この場合、配線１８の修正後の信号値“１”（この場合、出力信号値）は、配線２０の現在の信号値“０”と異なるため、スケジュール判定部５−１は、その旨とともに処理を出力変化算出部４Ｄ−１に戻す。出力変化算出部４Ｄ−１は、上述同様にして、遅延値１４４を得て、当該遅延値を用いて出力変化時刻を得る。出力変化算出部４Ｄ−１は、配線２０，出力変化時刻“１”，算出した出力変化時刻、をスケジュール判定部５−１に通知する。スケジュール判定部５−１は、通知にしたがった出力イベント情報を、スケジューラ６に通知する。この結果、図１８で示すように、ベストケース遅延１４４および，たとえばワーストケース遅延１４５を伴った信号可変範囲１４３が、出力値“０”から出力値“１”へ変化する間に伝播する。
【００８８】
また、たとえば、「不定」に修正する設定の場合、出力変化算出部４Ｄ−１は、波形＃３のように不定を出力する。そして、出力変化算出部４Ｄ−１は、配線１８の信号値とクロック配線１９の信号値とに基づいて、出力変化を算出する。ここで、ベストケースの場合は出力信号値を“信号可変”となり、出力信号値：“信号可変”は、配線２０の現在の信号値と異なるため、波形＃２同様、信号可変範囲１４３が、出力値“０”の後に伝播する。
【００８９】
さらに、「不定」に修正する設定の場合に、ワーストケースについて記載する。出力イベントスケジューリング部１Ｄ−２の入力イベント選択部２−２は、配線１８の信号可変の終端でイベントを選択する。その時点で、クロック配線１９の信号値は“信号可変”である。したがって、これを受けたタイミング違反検出部３−２は、この場合、配線１８の信号がタイミング違反である旨を通知する。出力変化算出部４Ｄ−２は、配線１８の信号がタイミング違反である旨を通知されると、予め設定された修正パターンにしたがって、配線１８の信号値を“不定”に修正する。そして、出力変化算出部４Ｄ−２は、配線１８の信号値から出力信号値：“不定”を得る。当該出力信号値は、配線２０の現在の信号値（“信号可変”）と異なるため、信号可変範囲１４３の後に、出力値“不定”が伝播する。
【００９０】
以上説明したように、本実施の形態では、素子入力でタイミング違反が検出された場合には、当該素子の入力値を設定にしたがって修正し、修正後の値を用いて出力値を算出する構成とした。これにより、不定伝播のためシミュレーションが正常に行えなくなるケースであっても、確定値を与えることでシミュレーションを進めることが可能となる。
【００９１】
＜変形例＞
本実施の形態におけるタイミング検証装置は、さらに、信号値「信号可変」を、他の既定義の信号値と区別して表示手段に表示させてもよい。以下、この場合について説明する。表示する方法として、たとえば、色，記号，シンボル等、従来の表現形式を利用する。
【００９２】
図１９は、本実施の形態のタイミング検証装置の、他の構成例を示す図である。図１９のタイミング検証装置は、上記実施の形態のタイミング検証装置の構成に加えて、信号表示部８を備える。信号表示部８は、スケジューラ６から出力される入力イベントに基づいて出力信号を表示させるための処理を行う。
【００９３】
図２０は、信号値を区別して波形を表示した画面例を示す図である。図２０では、１５０〜１５４は、いずれも信号値固定区間である。図２０では、一例として、信号表示部８は、不定（Ｘ）や高インピーダンス（Ｚ）に対し、信号値「信号可変」を“Ｔ”という記号で表現する。図２０の区間１５０は“０”、区間１５１および１５３が“Ｔ（信号可変）”、区間１５２が“Ｘ（不定）”、区間１５４が“１”である。
【００９４】
図２１は、あるシミュレーション時刻における信号値を一覧表示した場合の画面例を示す図である。図２１の画面は、時刻表示部１６０と、信号名表示部１６１と、信号値表示部１６２とを備える。図２１では、信号表示部８は、信号名表示部１６１に表示される信号の種別に対して、時刻表示部１６０に表示された時刻における各信号値を、信号値表示部１６２に表示させる。ここでは、シミュレーション時刻２００万（ｎｓ）における、信号名“Databus［７：０］”および“DataStrobe”の信号値を表示する。ここでは、“Databus［７：０］”の信号値として、最上位ビットをビット７，最下位ビットをビット０として表示する。すなわち、信号値表示部１６２に表示される値により、ビット７が不定，ビット５が“１”，ビット３が高インピーダンス（Ｚ），ビット１が「信号可変」（Ｔ）であり、他のビットは全て“０”であることが示される。また、“DataStrobe”は“１”であることが示される。
【００９５】
このように、シミュレーション結果の表示において「信号可変」の信号値を他の信号値と区別して表示するといった視覚化を行うことにより、ユーザは、シミュレーションの実行結果を確認することが容易になる。
【産業上の利用可能性】
【００９６】
以上のように、本発明にかかるタイミング検証装置は、論理回路のシミュレーションを行う場合に有用であり、特に、動的タイミング検証を行う場合に適している。
【符号の説明】
【００９７】
１−１，１−２，１Ａ−１，１Ａ−２，１Ｂ−１，１Ｂ−２，１Ｄ−１，１Ｄ−２  出力イベントスケジューリング部
２−１，２−２，２Ｂ−１，２Ｂ−２  入力イベント選択部
３−１，３−２  タイミング違反検出部
４−１，４−２，４Ａ−１，４Ａ−２，４Ｄ−１，４Ｄ−２  出力変化算出部
５−１，５−２，５Ａ−１，５Ａ−２  スケジュール判定部
６，６Ｃ  スケジューラ
７  信号値記憶部
８  信号表示部
１１，１３  フリップフロップ
１２  ２入力ＡＮＤ
１４〜２０  配線
３１〜３９  信号可変範囲
４０〜４２，４６，４８，５０，５２〜５４，６４  ベストケースでの変化時刻
４３〜４５，４７，４９，５１，５５〜５７，６５  ワーストケースでの変化時刻
５８，６０，６２  ベストケースでの遅延
５９，６１，６３  ワーストケースでの遅延
７１〜７３  信号可変範囲
７４〜７９  信号の変化時刻
８０〜８２  遅延値
９１〜９４  信号可変範囲
９５〜９８  変化時刻
９９  セットアップタイム
１００  信号可変範囲に該当する期間
１０１  ホールドタイム
１０２  タイミングチェック対象範囲
１１１  信号可変範囲
１１２，１１３  遅延値
１１４〜１１６  信号変化時刻
１２１〜１２５  信号可変範囲
１２６，１２７  遅延値
１２８〜１３０  信号変化時刻
１４１〜１４３  信号可変範囲
１４４，１４５  遅延値
１４６  不定
１５０〜１５４  信号値固定区間
１６０  時刻表示部
１６１  信号名表示部
１６２  信号値表示部
【図１】
2011060131.tif 000003
【図２】
2011060131.tif 000004
【図３】
2011060131.tif 000005
【図４】
2011060131.tif 000006
【図５】
2011060131.tif 000007
【図６】
2011060131.tif 000008
【図７】
2011060131.tif 000009
【図８】
2011060131.tif 000010
【図９】
2011060131.tif 000011
【図１０】
2011060131.tif 000012
【図１１】
2011060131.tif 000013
【図１２】
2011060131.tif 000014
【図１３】
2011060131.tif 000015
【図１４】
2011060131.tif 000016
【図１５】
2011060131.tif 000017
【図１６】
2011060131.tif 000018
【図１７】
2011060131.tif 000019
【図１８】
2011060131.tif 000020
【図１９】
2011060131.tif 000021
【図２０】
2011060131.tif 000022
【図２１】
2011060131.tif 000023