(57)【要約】【課題】従来技術では、ラッチ回路間のデータパス上を伝達されるデータパルスがラッチ回路のデータ入力端子以外で消失する場合、そのデータパルスの消失を判定できなかった。【解決手段】同一クロックドメインのラッチ回路間のデータパスのデータパルス検証方法であって、前記データパス上の出力側回路素子から入力側回路素子に伝達されるデータ信号のデータパルスから、回路の動作上問題とならないダータパルス（グリッチ）を除外し、クロックエッジをまたがるデータパルスのパルス幅を算出し、前記算出されたパルス幅と、前記入力側回路素子の最小パルス幅制約とを比較するデータパルス検証方法。【選択図】図１
2012174192.tif 000002
【特許請求の範囲】
【請求項１】
同一クロックドメインのラッチ回路間のデータパスのデータパルス検証方法であって、
前記データパス上の出力側回路素子から入力側回路素子に伝達されるデータ信号のデータパルスのパルス幅を算出し、
前記算出されたパルス幅と、前記入力側回路素子の最小パルス幅制約とを比較する
データパルス検証方法。
【請求項２】
前記データ信号の立ち上がりエッジと、立ち下がりエッジとのタイミングの差に応じて前記入力側回路素子が入力する前記データパルスのパルス幅を算出する
請求項１に記載のデータパルス検証方法。
【請求項３】
前記データ信号の前記立ち上がりエッジのタイミング、もしくは、前記立ち下がりエッジのタイミングは、前記クロックドメインのクロック信号の第１のクロックエッジからの遅延期間、もしくは、前記第１のクロックエッジから前記クロック信号のｎ（ｎは自然数）周期後の第２のクロックエッジからの遅延期間に応じて決定される
請求項２に記載のデータパルス検証方法。
【請求項４】
前記データ信号のデータパルスがハイレベルパルスである場合、前記立ち上がりエッジのタイミングは前記クロックドメインのクロック信号の第１のクロックエッジからの遅延期間に応じて決定され、前記立ち下がりエッジのタイミングは、前記第１のクロックエッジから前記クロック信号のｎ（ｎは自然数）周期後の第２のクロックエッジからの遅延期間に応じて決定される
請求項２に記載のデータパルス検証方法。
【請求項５】
前記データ信号のデータパルスがロウレベルパルスである場合、前記立ち下がりエッジのタイミングは前記クロックドメインのクロック信号の第１のクロックエッジからの遅延期間に応じて決定され、前記立ち上がりエッジのタイミングは、前記第１のクロックエッジから前記クロック信号のｎ（ｎは自然数）周期後の第２のクロックエッジからの遅延期間に応じて決定される
請求項２に記載のデータパルス検証方法。
【請求項６】
前記出力側回路素子が１つの入力と１つの出力とを有する場合、前記出力側回路素子が出力した前記データ信号の前記立ち上がりエッジと、立ち下がりエッジとのタイミングと、の差に応じて前記入力側回路素子が入力する前記パルス幅を算出する
請求項３〜請求項５のいずれか１項に記載のデータパルス検証方法。
【請求項７】
前記出力側回路素子が第１、第２の入力と、１つの出力とを有する場合、
前記第１の入力に応じて出力される前記立ち上がりエッジと前記第２の入力に応じて出力される前記立ち上がりエッジのうち最も遅延の大きい方のタイミングと、
前記第１の入力に応じて出力される前記立ち下がりエッジと前記第２の入力に応じて出力される前記立ち下がりエッジのうち最も遅延の小さい方のタイミングと、の差に応じて前記入力側回路素子が入力する前記パルス幅を算出する
請求項４に記載のデータパルス検証方法。
【請求項８】
前記出力側回路素子が第１、第２の入力と、１つの出力とを有する場合、
前記第１の入力に応じて出力される前記立ち下がりエッジと前記第２の入力に応じて出力される前記立ち下がりエッジのうち最も遅延の大きい方のタイミングと、
前記第１の入力に応じて出力される前記立ち上がりエッジと前記第２の入力に応じて出力される前記立ち上がりエッジのうち最も遅延の小さい方のタイミングと、の差に応じて前記入力側回路素子が入力する前記パルス幅を算出する
請求項５に記載のデータパルス検証方法。
【請求項９】
前記クロックドメインのクロック信号のクロック周波数を変化させ、
前記算出されたパルス幅と、前記入力側回路素子の最小パルス幅制約とを比較した結果、実質的に同じ値となったときの周波数を最大周波数とする
請求項１または請求項２に記載のデータパルス検証方法。
【請求項１０】
同一クロックドメインのラッチ回路間のデータパスのデータパルス検証システムであって、
前記データパス上の出力側回路素子から入力側回路素子に伝達されるデータ信号のパルス幅を算出し、前記算出されたパルス幅と、前記入力側回路素子の最小パルス幅制約とを比較するパルス幅検証部を備える
データパルス検証システム。
【請求項１１】
前記パルス幅検証部は、前記データ信号の立ち上がりエッジと、立ち下がりエッジとのタイミングの差に応じて前記入力側回路素子が入力する前記データパルスのパルス幅を算出する
請求項１０に記載のデータパルス検証システム。
【請求項１２】
遅延計算部を更に有し、
前記遅延計算部は、前記データ信号の前記立ち上がりエッジのタイミング、もしくは、前記立ち下がりエッジのタイミングを、前記クロックドメインのクロック信号の第１のクロックエッジからの第１の遅延期間、もしくは、前記第１のクロックエッジから前記クロック信号のｎ（ｎは自然数）周期後の第２のクロックエッジからの第２の遅延期間により算出する
請求項１０もしくは請求項１１に記載のデータパルス検証システム。
【請求項１３】
前記遅延計算部は、
前記第１、第２の遅延期間を前記出力側回路素子の入力に対する出力の遅延特性情報に応じて算出する
請求項１２に記載のデータパルス検証システム。
【請求項１４】
情報保持部を更に有し、
前記情報保持部は、
前記出力側回路素子の前記遅延特性情報と、前記出力側回路素子の前記最小パルス幅制約とを有する
請求項１３に記載のデータパルス検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データパルス幅検証方法及びその検証システムに関するものである。
【背景技術】
【０００２】
半導体集積回路を構成するプリミティブセルには、最大動作周波数（限界動作周波数）が定義されており、たとえ1つのプリミティブセルにおいてその周波数を越える場合でも、回路全体の動作が保証されない。
【０００３】
ここで、従来からあるＳＴＡ(Static timing analysis)の機能として、最小パルス幅(min_pulse_width)検証が存在する。クロックパスにおいて、上記最大動作周波数制約を最小パルス幅制約に置き換えることにより、最大動作周波数制約が可能である。
【０００４】
同期方式の回路（同期回路）では、クロック信号線上に伝達される信号（以下、クロック系信号と称す）の立ち上がりエッジまたは立ち下がりエッジに同期して、レジスタにデータがラッチされる。しかし、クロック系信号のハイレベルのパルス幅、または、ロウレベルのパルス幅が一定以下である場合、レジスタがデータを正常にラッチ出来なくなる。このため、クロック系信号においては、最小パルス幅検証が行われている。最小パルス幅制約はレジスタなどの論理素子のデバイス特性により決定される。このデバイス特性は、一般的にライブラリ（LibertyやVerilog等）において、論理素子のクロック端子ごとに定義されている。なお、クロック系信号の最小パルス幅検証は、論理シミュレーションやＳＴＡ(Static timing analysis)で行われる。
【０００５】
最小パルス幅制約を検証する従来技術として、特許文献１〜４、非特許文献１が開示されている。これら従来技術では、クロック系信号もしくはタイミング信号等のパルス幅を対象としている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１８７７７７号公報
【特許文献２】特開平２−８１１３９号公報
【特許文献３】特開２００１−１８４３７２号公報
【特許文献４】特開平８−２０２５６９号公報
【非特許文献】
【０００７】
【非特許文献１】http://www.altera.co.jp/literature/hb/qts/qts_qii53018_j.pdf ＳＴＡによる最小パルス幅検証例
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、従来技術のように、クロックパスにおけるクロック系信号の最小パルス幅検証が行われる。しかし、図２０（Ａ）に示すように、データパス上では原理的にグリッチ等の小さなパルスが多数発生しえる、また、同期式回路においてクロックサイクル内でのグリッチ等のパルスの消滅は回路動作上特に問題にならない等の理由から、データパスにおいては最小パルス幅検証を行っていない。しかし、図２０（Ｂ）に示すように、クロック信号エッジタイミングにおいて本来あるべきデータパルスが、データパス上で消失した場合、回路の動作不正となる。
【０００９】
このような、データパルスがデータパス上で消滅する一例を図２１、図２２に示す。まず、図２１に示すように、２つのレジスタ（フリップフロップＦＦ１、ＦＦ２）間に複数の回路素子（例えば、バッファ回路）１〜４が配置されていると想定する。フリップフロップＦＦ１、回路素子１〜４、フリップフロップＦＦ２間のデータ信号をそれぞれデータＤＡＴＡ１〜ＤＡＴＡ５とする。
【００１０】
図２２に示すように、フリップフロップＦＦ１のデータ出力端子Ｑから出力されたデータパルスが、ＤＡＴＡ１〜ＤＡＴＡ３としてデータパス間を伝達される。ここで、全ての回路素子は、その特性上、入力信号に一定パルス幅以下のパルスが入力すると、そのパルスに対する出力応答が正常にできなくなる。この一定パルス幅が、上述した最小パルス幅制約となる。ここで、回路素子３の最小パルス幅制約がＴａであるとすると、図２２に示すように回路素子２の出力するＤＡＴＡ３のパルス幅Ｔ３が、Ｔ３≦Ｔａである場合は、回路素子３はこのＤＡＴＡ３に対する出力応答が正常にできなくなる。そして、回路素子３は、ハイレベルのデータパルスをＤＡＴＡ４として出力することができず、ここでデータパルスがデータパス上で消失してしまう。
【００１１】
通常、レジスタに入力されるデータのクロックエッジ前後のタイミング検証は、セットアップ検証、ホールド検証により行われる。しかし、図２２のように、データパルスの消失がレジスタ（図２１の例ではＦＦ２）のデータ入力端子Ｄ以外で発生する場合、検証が不可能となる。このため、データパスに配置される素子間の最小パルス幅制約を勘案したパルス消滅の検証が求められている。
【課題を解決するための手段】
【００１２】
本発明の一態様は、同一クロックドメインのラッチ回路間のデータパスのデータパルス検証方法であって、前記データパス上の出力側回路素子から入力側回路素子に伝達されるデータ信号のデータパルスのパルス幅を算出し、前記算出されたパルス幅と、前記入力側回路素子の最小パルス幅制約とを比較するデータパルス検証方法である。
【００１３】
本発明の他の態様は、同一クロックドメインのラッチ回路間のデータパスのデータパルス検証システムであって、前記データパス上の出力側回路素子から入力側回路素子に伝達されるデータ信号のパルス幅を算出し、前記算出されたパルス幅と、前記入力側回路素子の最小パルス幅制約とを比較するパルス幅検証部を備えるデータパルス検証システムである。
【００１４】
本発明は、同一クロックドメインのラッチ回路間のデータパス上の出力側回路素子から伝達されるデータパルスが、入力側回路素子の最小パルス幅制約に違反するか否かを判定することができ、データパス上のデータパルスの消失が発生する可能性を防止することができる。
【発明の効果】
【００１５】
本発明によれば、データパスにおいて、データパルスの消滅を検証できる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１にかかる最小パルス幅制約の検証システムの構成である。
【図２】実施の形態１にかかる最小パルス幅制約の検証システムの動作フローチャートである。
【図３】実施の形態１にかかるサンプル回路の構成である。
【図４】実施の形態１にかかるサンプル回路の動作タイミングチャートである。
【図５】実施の形態１にかかるサンプル回路の動作タイミングチャートである。
【図６】実施の形態１にかかるサンプル回路の動作タイミングチャートである。
【図７】実施の形態１にかかるサンプル回路の動作タイミングチャートである。
【図８】実施の形態２にかかるサンプル回路の構成である。
【図９】実施の形態２にかかるサンプル回路の動作タイミングチャートである。
【図１０】実施の形態２にかかるサンプル回路の動作タイミングチャートである。
【図１１】実施の形態３にかかるサンプル回路の構成である。
【図１２】実施の形態３にかかるサンプル回路の動作タイミングチャートである。
【図１３】実施の形態３にかかるサンプル回路の動作タイミングチャートである。
【図１４】実施の形態３にかかるサンプル回路の動作タイミングチャートである。
【図１５】実施の形態３にかかるサンプル回路の動作タイミングチャートである。
【図１６】実施の形態３にかかるサンプル回路の動作タイミングチャートである。
【図１７】実施の形態４にかかる最小パルス幅制約の検証システムの構成である。
【図１８】実施の形態４にかかるサンプル回路の動作タイミングチャートである。
【図１９】その他の実施の形態にかかる
【図２０】従来の技術の問題点を説明するタイミングチャートである。
【図２１】従来の技術の問題点を説明するサンプル回路の構成である。
【図２２】従来の技術の問題点を説明するタイミングチャートである。
【発明を実施するための形態】
【００１７】
発明の実施の形態１
【００１８】
以下、本発明を適用した具体的な実施の形態１について、図面を参照しながら詳細に説明する。図１に本実施の形態１にかかる半導体集積回路の最小パルス幅制約の検証システム１００のブロック構成を示す。図１に示すように、最小パルス幅制約の検証システム１００は、情報保持部１０１と、遅延計算部１０２と、最小パルス幅検証部１０３とを有する。
【００１９】
情報保持部１０１は、所定の機能を有した半導体集積回路を設計するために必要な様々な情報を格納する。これらの情報は、最小パルス幅制約の検証を行うために必要となる。情報保持部１０１は、ネットリスト１１１と、ライブラリ１１２と、クロック情報１１３とを有する。
【００２０】
ネットリスト１１１は、ユーザーが設計した所定の機能を有する半導体集積回路を実現するための回路素子（論理回路（ＡＮＤ回路、ＯＲ回路等）、フリップフロップ等）の接続関係を示す回路情報である。
【００２１】
ライブラリ１１２は、上記ネットリストで使用される半導体集積回路が備える回路素子（論理回路（ＡＮＤ回路、ＯＲ回路、等）、フリップフロップ等）の回路情報を有する。例えば、各論理回路の入力信号の立ち上がり、立ち下がりに対する出力信号の立ち上がり、立ち下がりの応答遅延時間、また、クロック信号に対するフリップフロップの出力応答遅延時間等の各回路素子の遅延特性情報がある。また、論理回路及びフリップフロップの最小パルス幅制約情報やフリップフロップのセットアップ時間及びホールド時間等がある。ここで、最小パルス幅制約情報とは、論理回路やフリップフロップ等の回路素子が、入力信号に対する出力応答が正常にできる最小のパルス幅を規定する情報である。この最小パルス幅制約以下のデータパルスが入力された場合は、論理回路やフリップフロップが正常にデータパルスを次段に出力することができず、データパス上のデータパルス消失の原因となる。
【００２２】
クロック情報１１３は、クロック周波数（クロック周期）、クロック信号のデューティ比、クロックエッジのタイミング時刻等の情報がある。
【００２３】
遅延計算部１０２は、ネットリスト１１１とライブラリ１１２の情報から注目するデータパス上に配置される各回路ブロックにおいて、出力側回路素子が出力するデータ信号の立ち上がり、立ち下がりのタイミングが規定の時刻からどれくらい遅延するかの遅延期間を算出し、遅延算出情報として生成する。この出力側回路素子が出力するデータ信号の立ち上がり、立ち下がりのタイミングの遅延期間は、上記ライブラリ１１２が有する論理回路、フリップフロップの応答遅延時間に応じて決定される。
【００２４】
ここで、回路ブロックとは、後述する図３、図８、図１１にサンプル回路例を示すが、同じクロックドメインで動作するレジスタ間のデータパス上に存在する少なくとも２つの回路素子（出力側回路素子、入力側回路素子）を１つのブロックとする構成を指すものとする。例えば、後述する図３では、バッファ回路ＢＵＦ１３（出力側回路素子）、ＢＵＦ１４（入力側回路素子）が１つの回路ブロックを構成する。
【００２５】
最小パルス幅検証部１０３は、遅延計算部１０２が生成した遅延算出情報に応じて、上記注目する回路ブロック内のデータパスに伝達されるデータパルスのパルス幅を算出する。そして、その算出されたパルス幅と、回路ブロックが有する最小パルス幅制約とを比較し、その回路ブロックの最小パルス幅制約検証を行う。そして、その検証結果を検証結果情報１０４として出力する。
【００２６】
なお、回路ブロックが有する最小パルス幅制約とは、回路ブロックが有する入力側回路素子の最小パルス幅制約である。
【００２７】
次に、本実施の形態１にかかる半導体集積回路の最小パルス幅制約の検証システム１００の動作について説明する。図２に半導体集積回路の最小パルス幅制約の検証システム１００の動作フローチャートを示す。
【００２８】
図２に示すように、まず、本検証システムが、所定のデータパス上の回路ブロックを全て選択し終わったかを判定し（Ｓ１０１）、全て選択していない場合（Ｓ１０１ＮＯ）、上記所定のデータパス上の回路ブロックを選択する（Ｓ１０２）。
【００２９】
次に、ステップＳ１０２で選択した回路ブロックに最小パルス幅制約が存在するか否かの判定を行う（Ｓ１０３）。この最小パルス幅制約が存在するかの判定は、その選択した回路ブロックが有する回路素子（論理回路、フリップフロップ等）の最小パルス幅制約情報をライブラリ１１２から参照することで行う。
【００３０】
そして、最小パルス幅制約が存在しない場合（Ｓ１０３ＮＯ）、ステップＳ１０１に遷移する。一方、最小パルス幅制約が存在する場合（Ｓ１０３ＹＥＳ）、遅延計算部１０２が行った遅延算出情報を基に、回路ブロックのデータパスに伝達されるパルス幅を計算する（Ｓ１０４）。
【００３１】
次に、ステップＳ１０４で計算したパルス幅とライブラリ１１２から参照した最小パルス幅制約とを比較する。そして、「パルス幅＜最小パルス幅制約」という不等式を充たす場合、最小パルス幅制約違反となると判定する。このように、ステップＳ１０４で計算したパルス幅が最小パルス幅制約違反となるか否かを判定する（Ｓ１０５）。
【００３２】
そして、最小パルス幅制約に違反しない場合（Ｓ１０５ＮＯ）、ステップＳ１０１に遷移する。一方、最小パルス幅制約に違反する場合（Ｓ１０５ＹＥＳ）、エラー判定を検証結果情報１０４として出力する（Ｓ１０６）。なお、ステップＳ１０１において、全ての回路ブロックを選択し終えている場合（Ｓ１０１ＹＥＳ）では、最小パルス幅制約の検証動作を終了する。
【００３３】
なお、ステップＳ１０５のパルス幅が最小パルス幅制約違反となるか否かを判定は、パルスが、ハイレベルパルスとロウレベルパルスとで分けて検証を行うものとする。
【００３４】
ここで、図３〜図７を用いて、データパスのパルス幅に対する最小パルス幅検証メカニズムを説明する。図３はサンプル回路の構成である。図３に示すように、本実施の形態１のサンプル回路は、レジスタ（フリップフロップ）ＦＦ１１とＦＦ１２と、バッファ回路ＢＵＦ１３、ＢＵＦ１４とを有する。
【００３５】
フリップフロップＦＦ１１とＦＦ１２のクロック入力端子には、クロック信号ＣＬＫが入力される。そして、フリップフロップＦＦ１１のデータ出力端子Ｑと、フリップフロップＦＦ１２のデータ入力端子Ｄとの間にバッファ回路ＢＵＦ１３、ＢＵＦ１４が直列に接続されている。ここで、バッファ回路ＢＵＦ１３の最小パルス幅制約をＴｍｉｎ１３、バッファ回路ＢＵＦ１４の最小パルス幅制約をＴｍｉｎ１４、フリップフロップＦＦ１２の最小パルス幅制約をＴｍｉｎ１２とする。
【００３６】
なお、図３において上記所定のデータパスは、フリップフロップＦＦ１１が出力したデータパルスがフリップフロップＦＦ１２に伝達される伝達経路となる。そして、この所定のデータパス上に配置されるフロップＦＦ１１、バッファ回路ＢＵＦ１３を回路ブロック１とし、バッファ回路ＢＵＦ１３、ＢＵＦ１４を回路ブロック２、バッファ回路ＢＵＦ１４、フリップフロップＦＦ１２を回路ブロック３とする。このため、回路ブロック１の入力側回路素子であるバッファ回路ＢＵＦ１３の最小パルス幅制約Ｔｍｉｎ１３が、回路ブロック１の最小パルス幅制となる。同様に、回路ブロック２の入力側回路素子であるバッファ回路ＢＵＦ１４の最小パルス幅制約Ｔｍｉｎ１４が回路ブロック２の最小パルス幅制となる。また、回路ブロック３の入力側回路素子であるフリップフロップＦＦ１２の最小パルス幅制約Ｔｍｉｎ１２が回路ブロック３の最小パルス幅制となる。
【００３７】
フリップフロップＦＦ１１が、クロック信号ＣＬＫの立ち上がりエッジに応じてデータ出力端子Ｑから出力する信号をＤ１１とする。また、バッファ回路ＢＵＦ１３が出力する信号をＤ１３、バッファ回路ＢＵＦ１４が出力する信号をＤ１４とする。なお、データＤ１４は、クロック信号ＣＬＫの立ち上がりエッジに応じてフリップフロップＦＦ１２にラッチされる。
【００３８】
図４、図５に、データ信号Ｄ１１、Ｄ１３、Ｄ１４のタイミングチャートを示す。但し、本例では前提として、データ信号Ｄ１３のデータパルス幅Ｔｄ１３がバッファ回路ＢＵＦ１４の最小パルス幅制約Ｔｍｉｎ１４より小さいとする。なお、図４ではデータパルスがハイレベル、図５ではデータパルスがロウレベルの場合を示す。以後、データパルスがハイレベルの場合にはデータ信号等の符号の最後に「Ｈ」を付し、ロウレベルの場合には符号の最後に「Ｌ」を付すものとする。また、クロック信号ＣＬＫの周期をＴｃｌｋとする。
【００３９】
図４に示すように、クロック信号ＣＬＫが時刻ｔ０、ｔ１に立ち上がる。このクロック信号ＣＬＫの立ち上がりエッジに応じて、フリップフロップＦＦ１１がデータ信号Ｄ１１Ｈをそれぞれハイレベルに立ち上げ、ロウレベルに立ち下げる。このデータ信号Ｄ１１Ｈがハイレベルとなる期間が、データ信号Ｄ１１Ｈのハイレベルのデータパルス幅ＴａＨとなる。
【００４０】
なお、データ信号Ｄ１１Ｈの立ち上がり、立ち下がりのタイミングが、それぞれ時刻ｔ０、ｔ１から遅延しているが、この遅延期間はフリップフロップＦＦ１１が有する遅延特性に応じて決定される。その遅延特性の情報は、ライブラリ１１２が遅延特性情報として有している。
【００４１】
フリップフロップＦＦ１１から出力されるデータ信号Ｄ１１Ｈのデータパルス幅ＴａＨは、バッファ回路ＢＵＦ１３の最小パルス幅制約Ｔｍｉｎ１３Ｈより大きいため、バッファ回路ＢＵＦ１３がデータ信号Ｄ１１Ｈに応じたデータ信号Ｄ１３Ｈを、バッファ回路ＢＵＦ１４へ出力する。但し、このデータ信号Ｄ１３Ｈの立ち上がり及び立ち下がりのタイミングも、バッファ回路ＢＵＦ１３の遅延特性に応じた期間それぞれ遅延する。このバッファ回路ＢＵＦ１３の遅延特性情報もライブラリ１１２が有している。
【００４２】
ここで、図４に示すように、データ信号Ｄ１３Ｈのデータパルス幅ＴｂＨが、バッファ回路ＢＵＦ１４の最小パルス幅制約Ｔｍｉｎ１４Ｈより小さいため、バッファ回路ＢＵＦ１４がハイレベルのデータ信号Ｄ１４Ｈを出力することができず、ロウレベルのままとなる。このように、回路ブロック１のデータパスでは、データパルスの伝達に問題が無かったが、回路ブロック２のデータパスでは、バッファ回路ＢＵＦ１４の最小パルス幅制約違反により、データパルスが消失してしまう。
【００４３】
このため、時刻ｔ１にフリップフロップＦＦ１２がハイレベルのデータ信号Ｄ１４Ｈをラッチすることができず、結果として動作不正が発生する。なお、図５に示すように、ロウレベルのデータパルスの場合であっても同様となる。このような同じクロックドメインのクロック信号に同期して動作するレジスタ間のデータパス上におけるデータパルスの消失は、従来の検証方法では検出することができず、従来技術で問題となっていた。
【００４４】
ここで、本実施の形態１の検証システム１００では、遅延計算部１０２で、データパス上の各回路ブロック（図３の回路ブロック１、２等）において、時刻ｔ０のクロック信号の立ち上がりエッジを基準点に、データパス上のデータパルスがどれくらい遅延するかを、ライブラリ１１２が有する回路素子の遅延情報から算出する。そして、その算出した遅延算出情報から各回路ブロックのデータパス上のデータパルスのパルス幅を算出する。この算出メカニズムを図６、図７を基に説明する。なお、図６では、データパルスがハイレベルの場合、図７ではデータパルスがロウレベルの場合を示す。
【００４５】
まず、回路ブロック１に注目する。図６に示すように、ライブラリ１１２で定義されているフリップフロップＦＦ１１の立ち上がり信号の遅延特性に応じて、時刻ｔ０から期間Ｔｄ１１ｒだけ遅延（ｒｉｓｅ遅延）した時刻ｔ１１にフリップフロップＦＦ１１の出力信号が立ち上がる。同様に、ライブラリ１１２で定義されているフリップフロップＦＦ１１の立ち下がり信号の遅延特性に応じて、時刻ｔ１から期間Ｔｄ１１ｆだけ遅延（ｆａｌｌ遅延）した時刻ｔ１３に出力信号が立ち下がる。この信号の立ち上がり、立ち下がりの時刻の算出が遅延計算部１０２で行われ、この遅延時刻の情報が遅延算出情報となる。
【００４６】
そして、最小パルス幅検証部１０３が、データ信号Ｄ１１Ｈのデータパルス幅ＴａＨを算出する。図６からも分かるように、データ信号Ｄ１１Ｈのデータパルス幅ＴａＨは、時刻ｔ１３からｔ１１を引いた値となる。時刻ｔ０を基準点０とすると、時刻ｔ１１はＴｄ１１ｒ、時刻ｔ１３は（Ｔｃｌｋ＋Ｔｄ１１ｆ）となり、データ信号Ｄ１１Ｈのデータパルス幅ＴａＨは、（Ｔｃｌｋ＋Ｔｄ１１ｆ−Ｔｄ１１ｒ）となる。
【００４７】
そして、最小パルス幅検証部１０３が、このデータパルス幅ＴａＨと、ライブラリ１１２が有するバッファ回路ＢＵＦ１３の最小パルス幅制約Ｔｍｉｎ１３Ｈと比較する。本例では、ＴａＨ＞Ｔｍｉｎ１３Ｈとなるため、最小パルス幅検証部１０３は回路ブロック１における最小パルス幅制約違反が無いと判定する。
【００４８】
次に、回路ブロック２では、回路ブロック１の遅延特性、つまりフリップフロップＦＦ１１の遅延特性に加えて、バッファ回路ＢＵＦ１３の遅延特性も加わる。図６に示すように、バッファ回路ＢＵＦ１３の立ち上がり信号の遅延特性に応じて、時刻ｔ１１から期間Ｔｄ１３ｒだけ遅延した時刻ｔ１２に、バッファ回路ＢＵＦ１３の出力信号が立ち上がる。同様に、ライブラリ１１２で定義されているバッファ回路１１の立ち下がり信号の遅延特性に応じて、時刻ｔ１３から期間Ｔｄ１３ｆだけ遅延した時刻ｔ１４に出力信号が立ち下がる。この信号の立ち上がり、立ち下がりの時刻の算出が遅延計算部１０２で行われ、この遅延時刻の情報が遅延算出情報となる。
【００４９】
そして、最小パルス幅検証部１０３が、データ信号Ｄ１２Ｈのデータパルス幅ＴｂＨを算出する。図６からも分かるように、データパルス幅ＴｂＨは、時刻ｔ１４からｔ１２を引いた値となる。時刻ｔ０を基準点０とすると、時刻ｔ１２は（Ｔｄ１１ｒ＋Ｔｄ１３ｒ）、時刻ｔ１４は（Ｔｃｌｋ＋Ｔｄ１１ｆ＋Ｔｄ１３ｆ）となり、データパルス幅ＴｂＨは、（Ｔｃｌｋ＋（Ｔｄ１１ｆ＋Ｔｄ１３ｆ）−（Ｔｄ１１ｒ＋Ｔｄ１３ｒ））となる。
【００５０】
そして、最小パルス幅検証部１０３が、このデータパルス幅ＴｂＨと、ライブラリ１１２が有するバッファ回路ＢＵＦ１４の最小パルス幅制約Ｔｍｉｎ１４Ｈと比較する。本例では、ＴｂＨ＜Ｔｍｉｎ１４Ｈとなるため、最小パルス幅検証部１０３は回路ブロック２における最小パルス幅制約違反があると判定し、回路ブロック２でデータパルスが消失すると判断する。このため、回路ブロック２の最小パルス幅制約検証の結果であるエラー判定結果を検証結果情報１０４として出力する。
【００５１】
なお、各回路ブロックの出力側回路素子と入力側回路素子間の配線による配線遅延が存在する場合、その配線遅延の値を付加して上記遅延算出情報を生成してもよい。上述した図６の例では、出力側回路素子の出力する信号の立ち上がり、立ち下がりの遅延タイミングが、そのまま入力側回路素子の入力する信号の立ち上がり、立ち下がりの遅延タイミングとなっていた。このため、回路ブロックの最小パルス幅制約を検証する場合、出力側回路素子の出力する信号の立ち上がり、立ち下がりの遅延タイミングにより、入力側回路素子が入力するデータパルスを算出可能であった。しかし、配線遅延の存在を考慮する場合、入力側回路素子が入力する信号の立ち上がり、立ち下がりの遅延タイミングにより、入力側回路素子が入力するデータパルスを算出することに注意する。なお、この配線遅延の情報もライブラリ１１２が有する。
【００５２】
上記算出メカニズムは、図７におけるロウレベルのデータパルスである場合でも、立ち下がり、立ち上がりの関係が逆になる以外は基本的に同様である。このため、図７の説明は省略する。
【００５３】
なお、本例では、同じクロックドメインのレジスタ間にあるバッファ回路が２つであったが、更に複数であってもよい。但し、この場合、最小パルス幅制約検証の対象となる回路ブロック数も増加する。また、バッファ回路だけでなく、インバータ回路等であってもよい。但し、インバータ回路後の最小パルス幅制約検証ではハイレベルとロウレベルとのデータパルスの関係が入れ替わることに注意する。
【００５４】
このようにして、本実施の形態１の最小パルス幅制約の検証システム１００では、対象となる同じクロックドメインのレジスタ間のデータパスにおいて、選択される回路ブロックの最小パルス幅制約検証を行う。この最小パルス幅制約検証では、ライブラリ１１２で定義されているバッファ回路等の回路素子の遅延情報を基に、その回路ブロックのデータパス上のデータパルス幅を算出し、その算出結果とライブラリ１１２で定義されている最小パルス幅制約とを比較することで、データパルスが消失するか否かを判定する。
【００５５】
これをデータパス上の全ての回路ブロックで行い、エラー判定結果が生成されない場合は、対象となるレジスタ間のデータ信号の伝達に問題が無く、回路の動作不正が発生しないと判断できる。逆に、図６、図７で例示したように、１つでも回路ブロックでエラー判定結果が生成されると、対象となるレジスタ間のデータパス上のデータ信号伝達に問題があり、回路の動作不正が発生する可能性があると判断できる。
【００５６】
以上から、検証システム１００は、設計した半導体集積回路のレジスタ間のデータパスにおいて、データパルスが消失する不具合をなくすことができ、従来技術で問題となっていたフリップフロップのデータ入力端子以外で生じたデータパルス消失による回路の動作不正の発生を防ぐことが可能となる。
【００５７】
発明の実施の形態２
【００５８】
以下、本発明を適用した具体的な実施の形態２について、図面を参照しながら詳細に説明する。本実施の形態２では、最小パルス幅制約検証の対象となる回路が、図６、図７のようなレジスタ間に１入力、１出力の論理回路が直列接続された構成ではなく、ＯＲ回路のような２入力の論理回路が接続された構成の場合を想定する。
【００５９】
よって、本実施の形態２の最小パルス幅制約の検証システムの構成、及び、動作フローチャートは、実施の形態１の図１、図２と同様となるため、その説明は省略する。
【００６０】
ここで、図８〜図１０を用いて、本実施の形態２のデータパスのパルス幅に対する最小パルス幅検証メカニズムを説明する。図８は本実施の形態２のサンプル回路の構成である。図８に示すように、本実施の形態２のサンプル回路は、レジスタ（フリップフロップ）ＦＦ２１〜ＦＦ２３と、バッファ回路ＢＵＦ２４、ＢＵＦ２６と、ＯＲ回路ＯＲ２５とを有する。
【００６１】
フリップフロップＦＦ２１〜ＦＦ２３のクロック入力端子には、それぞれクロック信号ＣＬＫが入力される。フリップフロップＦＦ２１のデータ出力端子ＱとＯＲ回路ＯＲ２５の一方の入力端子との間にバッファ回路ＢＵＦ２４が接続される。フリップフロップＦＦ２１のデータ出力端子Ｑからの出力信号をＤ２１とし、バッファ回路ＢＵＦ２４の出力信号をＤ２４とする。
【００６２】
フリップフロップＦＦ２２のデータ出力端子Ｑが、ＯＲ回路ＯＲ２５の他方の入力端子に接続される。フリップフロップＦＦ２２のデータ出力端子Ｑからの出力信号をＤ２２とする。ＯＲ回路ＯＲ２５の出力端子とフリップフロップＦＦ２３のデータ入力端子Ｄとの間にバッファ回路ＢＵＦ２６が接続される。ＯＲ回路ＯＲ２５の出力信号をＤ２５とし、バッファ回路ＢＵＦ２６の出力信号をＤ２６とする。
【００６３】
ここで、バッファ回路ＢＵＦ２４の最小パルス幅制約をＴｍｉｎ２４、バッファ回路ＢＵＦ２６の最小パルス幅制約をＴｍｉｎ２６とする。また、ＯＲ回路ＯＲ２５の最小パルス幅制約をＴｍｉｎ２５とする。
【００６４】
図８のサンプル回路には、ＯＲ回路ＯＲ２５が存在する。ＯＲ回路ＯＲ２５は、２入力、１出力の論理回路である。このため、図８のサンプル回路は、データパスがフリップフロップＦＦ２１、ＦＦ２３間と、フリップフロップＦＦ２２、ＦＦ２３間の２つ存在することになる。フリップフロップＦＦ２１、ＦＦ２３間のデータパス上のフロップＦＦ２１、バッファ回路ＢＵＦ２４を回路ブロック１とし、バッファ回路ＢＵＦ２４、ＯＲ回路ＯＲ２５を回路ブロック２とする。
【００６５】
同じく、フリップフロップＦＦ２２、ＦＦ２３間のデータパス上のフロップＦＦ２２、ＯＲ回路ＯＲ２５を回路ブロック３とする。そして、ＯＲ回路ＯＲ２５、バッファ回路ＢＵＦ２６を回路ブロック４とする。
【００６６】
図９、図１０に、データ信号Ｄ２１、Ｄ２２、Ｄ２４、Ｄ２５のタイミングチャートを示す。この図を基に、実施の形態１と同様、本サンプル回路における各回路ブロックの遅延計算部１０２が算出する遅延算出情報、及び、最小パルス幅検証部１０４が算出するデータパルス幅の算出メカニズムを説明する。
【００６７】
但し、本例では、データ信号Ｄ２５の最小データパルス幅Ｔｄ２５がバッファ回路ＢＵＦ２６の最小パルス幅制約Ｔｍｉｎ２６より小さいとする。なお、図９ではデータパルスがハイレベル、図１０ではデータパルスがロウレベルの場合を示す。
【００６８】
まず、回路ブロック１に注目する。図９に示すように、ライブラリ１１２で定義されているフリップフロップＦＦ２１の立ち上がり信号の遅延特性に応じて、時刻ｔ０から期間Ｔｄ２１ｒだけ遅延した時刻ｔ１１に、フリップフロップＦＦ２１の出力信号が立ち上がる。同様に、ライブラリ１１２で定義されているフリップフロップＦＦ２１の立ち下がり信号の遅延特性に応じて、時刻ｔ１から期間Ｔｄ２１ｆだけ遅延した時刻ｔ１６に、出力信号が立ち下がる。この信号の立ち上がり、立ち下がりの時刻の算出が遅延計算部１０２で行われ、この遅延時刻の情報が遅延算出情報となる。
【００６９】
そして、最小パルス幅検証部１０３が、データ信号Ｄ２１Ｈのデータパルス幅ＴａＨを算出する。図９からも分かるように、データ信号Ｄ２１Ｈのデータパルス幅ＴａＨは、時刻ｔ１６からｔ１１を引いた値となる。時刻ｔ０を基準点０とすると、時刻ｔ１１はＴｄ２１ｒ、時刻ｔ１６は（Ｔｃｌｋ＋Ｔｄ２１ｆ）となり、データパルス幅ＴａＨは、（Ｔｃｌｋ＋Ｔｄ２１ｆ−Ｔｄ２１ｒ）となる。
【００７０】
そして、最小パルス幅検証部１０３が、このデータパルス幅ＴａＨと、ライブラリ１１２が有するバッファ回路ＢＵＦ２４の最小パルス幅制約Ｔｍｉｎ２４Ｈと比較する。本例では、ＴａＨ＞Ｔｍｉｎ２４Ｈとなるため、最小パルス幅検証部１０３は回路ブロック１における最小パルス幅制約違反がないと判定する。
【００７１】
次に、回路ブロック２では、回路ブロック１の遅延特性、つまり上記フリップフロップＦＦ２１の遅延特性に加えて、バッファ回路ＢＵＦ２４の遅延特性も加わる。図９に示すように、バッファ回路ＢＵＦ２４の立ち上がり信号の遅延特性に応じて、時刻ｔ１１から期間Ｔｄ２４ｒだけ遅延した時刻ｔ１３に、バッファ回路ＢＵＦ２４の出力信号が立ち上がる。同様に、ライブラリ１１２で定義されているバッファ回路２４の立ち下がり信号の遅延特性に応じて、時刻ｔ１６から期間Ｔｄ２４ｆだけ遅延した時刻ｔ１８に、出力信号が立ち下がる。この信号の立ち上がり、立ち下がりの時刻の算出が遅延計算部１０２で行われ、この遅延時刻の情報が遅延算出情報となる。
【００７２】
そして、最小パルス幅検証部１０３が、データ信号Ｄ２４Ｈのデータパルス幅ＴｂＨを算出する。図９からも分かるように、データ信号Ｄ２４Ｈのデータパルス幅ＴｂＨは、時刻ｔ１８からｔ１３を引いた値となる。時刻ｔ０を基準点０とすると、時刻ｔ１３は（Ｔｄ２１ｒ＋Ｔｄ２４ｒ）、時刻ｔ１８は（Ｔｃｌｋ＋Ｔｄ２１ｆ＋Ｔｄ２４ｆ）となり、データパルス幅ＴｂＨは、（Ｔｃｌｋ＋（Ｔｄ２１ｆ＋Ｔｄ２４ｆ）−（Ｔｄ２１ｒ＋Ｔｄ２４ｒ））となる。
【００７３】
そして、最小パルス幅検証部１０３が、このデータパルス幅ＴｂＨと、ライブラリ１１２が有するＯＲ回路ＯＲ２５の最小パルス幅制約Ｔｍｉｎ２５Ｈと比較する。本例では、ＴｂＨ＞Ｔｍｉｎ２５Ｈとなるため、最小パルス幅検証部１０３は回路ブロック２における最小パルス幅制約違反がないと判定する。
【００７４】
次に、回路ブロック３に注目する。図９に示すように、ライブラリ１１２で定義されているフリップフロップＦＦ２２の立ち上がり信号の遅延特性に応じて、時刻ｔ０から期間Ｔｄ２２ｒだけ遅延した時刻ｔ１２にフリップフロップＦＦ２２の出力信号が立ち上がる。同様に、ライブラリ１１２で定義されているフリップフロップＦＦ２２の立ち下がり信号の遅延特性に応じて、時刻ｔ１から期間Ｔｄ２２ｆだけ遅延した時刻ｔ１７に、出力信号が立ち下がる。この信号の立ち上がり、立ち下がりの時刻の算出が遅延計算部１０２で行われ、この遅延時刻の情報が遅延算出情報となる。
【００７５】
そして、最小パルス幅検証部１０３が、データ信号Ｄ２２Ｈのデータパルス幅ＴｃＨを算出する。図９からも分かるように、データ信号Ｄ２２Ｈのデータパルス幅ＴｃＨは、時刻ｔ１７からｔ１２を引いた値となる。時刻ｔ０を基準点０とすると、時刻ｔ１２はＴｄ２２ｒ、時刻ｔ１７は（Ｔｃｌｋ＋Ｔｄ２２ｆ）となり、データパルス幅ＴｃＨは、（Ｔｃｌｋ＋Ｔｄ２２ｆ−Ｔｄ２２ｒ）となる。
【００７６】
そして、最小パルス幅検証部１０３が、このデータパルス幅ＴｃＨと、ライブラリ１１２が有するＯＲ回路ＯＲ２５の最小パルス幅制約Ｔｍｉｎ２５Ｈと比較する。本例では、ＴｃＨ＞Ｔｍｉｎ２５Ｈとなるため、最小パルス幅検証部１０３は回路ブロック３における最小パルス幅制約違反がないと判定する。
【００７７】
次に、回路ブロック４に注目する。回路ブロック４では、上記回路ブロック２、３の遅延特性に加えて、ＯＲ回路ＯＲ２５の遅延特性も加わる。但し、ＯＲ回路ＯＲ２５は２入力論理回路である。このため、データ信号Ｄ２４側の入力端子と、データ信号Ｄ２２側の入力端子に入力される信号の遅延の差に応じて、ＯＲ回路ＯＲ２５が出力する最小パルス幅が決定される。ここで、ＯＲ回路ＯＲ２５は、データ信号Ｄ２２の遅延に自身の遅延をプラスしたデータ信号Ｄ２５の出力と、データ信号Ｄ２４の遅延に自身の遅延を足したデータ信号Ｄ２５の出力の２種類が考えられる。
【００７８】
まず、単純化のため、各フリップフロップ、論理素子の遅延に大きな違いが無い場合を想定する。この場合、ＯＲ回路ＯＲ２５の前段の回路ブロックのうち、最長データパスを有するのは回路ブロック２側となり、最短データパスを有するのは回路ブロック３側となる。そして、図９からも明らかなように、最長データパス側の回路ブロック２のデータ信号Ｄ２４の遅延の方が、最短データパス側の回路ブロック３のデータ信号Ｄ２２の遅延よりも大きくなる。このため、ＯＲ回路ＯＲ２５の出力の遅延もデータ信号Ｄ２４の遅延の方がデータ信号Ｄ２２の遅延よりも大きくなる。
【００７９】
よって、ライブラリ１１２で定義されているＯＲ回路ＯＲ２５の立ち上がり信号の遅延特性がＴｄ２５ｒとすると、データ信号Ｄ２５の最小立ち上がり時刻は、時刻ｔ１２から期間Ｔｄ２５ｒだけ遅延した時刻ｔ１４となる。一方、データ信号Ｄ２５の最大立ち上がり時刻は、時刻ｔ１３から期間Ｔｄ２５ｒだけ遅延した時刻ｔ１５となる。
【００８０】
同様に、ライブラリ１１２で定義されているＯＲ回路ＯＲ２５の立ち下がり信号の遅延特性がＴｄ２５ｆとすると、データ信号Ｄ２５の最小立ち下がり時刻は、時刻ｔ１７から期間Ｔｄ２５ｆだけ遅延した時刻ｔ１９となる。一方、データ信号Ｄ２５の最大立ち下がり時刻は、時刻ｔ１８から期間Ｔｄ２５ｆだけ遅延した時刻ｔ２０となる。これら、最大、最小立ち上がり時刻、最大、最小立ち下がり時刻の算出が遅延計算部１０２で行われ、この遅延時刻の情報が遅延算出情報となる。
【００８１】
ここで、ＯＲ回路ＯＲ２５が出力するデータ信号Ｄ２５のパルス幅が、バッファ回路ＢＵＦ２６の最小パルス幅制約違反となるか否かを判定するには、ＯＲ回路ＯＲ２５が出力するデータ信号Ｄ２５のパルス幅の最小値だけに注目すればよい。ここで、データ信号Ｄ２５のパルス幅の最小値を求めるため、ＯＲ回路ＯＲ２５の出力信号のタイミングウィンドウを計算する。
【００８２】
以下に、ＯＲ回路ＯＲ２５の出力のタイミングウィンドウＴＷ（ＯＲ２５）の計算方法を記載する。なお、タイミングウィンドウＴＷ（ＯＲ２５）は、クロックのアクティブエッジを基準点０として、立ち上がり信号と立ち下がり信号を別々で計算する。以下では、立ち上がり信号のタイミングウィンドウをＴＷｒ（ＯＲ２５）＝（データ信号Ｄ２５の最小立ち上がり時刻、データ信号Ｄ２５の最大立ち上がり時刻）とし、立ち下がり信号のタイミングウィンドウをＴＷｆ（ＯＲ２５）＝（データ信号Ｄ２５の最小立ち下がり時刻、データ信号Ｄ２５の最大立ち下がり時刻）と記載する。
【００８３】
上述した、遅延算出情報から時刻ｔ０を基準点０とすると、時刻ｔ１４は（Ｔｄ２２ｒ＋Ｔｄ２５ｒ）、時刻ｔ１５は（Ｔｄ２１ｒ＋Ｔｄ２４ｒ＋Ｔｄ２５ｒ）となる。ここで、Ｔｄ２２ｒ＋Ｔｄ２５ｒ＝Ｔｄ２５ｒ（ｍｉｎ）、Ｔｄ２１ｒ＋Ｔｄ２４ｒ＋Ｔｄ２５ｒ＝Ｔｄ２５ｒ（ｍａｘ）とすると、立ち上がり信号のタイミングウィンドウは、ＴＷｒ（ＯＲ２５）＝（Ｔｄ２５ｒ（ｍｉｎ）、Ｔｄ２５ｒ（ｍａｘ））となる。
【００８４】
更に、時刻ｔ１を基準点０とすると、時刻ｔ１９は（Ｔｄ２２ｆ＋Ｔｄ２５ｆ）、時刻ｔ２０は（Ｔｄ２１ｆ＋Ｔｄ２４ｆ＋Ｔｄ２５ｆ）となる。ここで、Ｔｄ２２ｆ＋Ｔｄ２５ｆ＝Ｔｄ２５ｆ（ｍｉｎ）、Ｔｄ２１ｆ＋Ｔｄ２４ｆ＋Ｔｄ２５ｆ＝Ｔｄ２５ｆ（ｍａｘ）とすると、立ち下がり信号のタイミングウィンドウは、ＴＷｆ（ＯＲ２５）＝（Ｔｄ２５ｆ（ｍｉｎ）、Ｔｄ２５ｆ（ｍａｘ））となる。
【００８５】
そして、最小パルス幅検証部１０３が、データ信号Ｄ２５Ｈのデータパルス幅ＴｄＨの最小値ＴｄＨ（ｍｉｎ）を算出する。図９からも分かるように、データ信号Ｄ２５Ｈの最小データパルス幅ＴｄＨ（ｍｉｎ）は、時刻ｔ１９からｔ１５を引いた値となる。上述のように、時刻ｔ１５はＴｄ２５ｒ（ｍａｘ）、時刻ｔ１９はＴｃｌｋ＋Ｔｄ２５ｆ（ｍｉｎ）となり、ＴｄＨ（ｍｉｎ）は、（Ｔｃｌｋ＋Ｔｄ２５ｆ（ｍｉｎ）−Ｔｄ２５ｒ（ｍａｘ））となる。言い換えると、ＯＲ回路ＯＲ２５の出力タイミングウィンドウの最小立ち下がり時刻＋クロック周期Ｔｃｌｋから最大立ち上がり時刻を引いた値が、データ信号Ｄ２５Ｈの最小データパルス幅ＴｄＨ（ｍｉｎ）となる。
【００８６】
そして、最小パルス幅検証部１０３が、この最小データパルス幅ＴｄＨ（ｍｉｎ）と、ライブラリ１１２が有するバッファ回路ＢＵＦ２６の最小パルス幅制約Ｔｍｉｎ２６Ｈと比較する。本例では、ＴｄＨ（ｍｉｎ）＜Ｔｍｉｎ２６Ｈとなるため、最小パルス幅検証部１０３は回路ブロック４における最小パルス幅制約違反があると判定し、回路ブロック４でデータパルスが消失すると判断する。このため、回路ブロック４の最小パルス幅制約検証の結果であるエラー判定結果を検証結果情報１０４として出力する。
【００８７】
なお、上述したタイミングウィンドウは、ＯＲ回路ＯＲ２５の出力のみを示したが、他のフリップフロップ、論理回路にもタイミングウィンドウが存在し、以下の様になる。
【００８８】
フリップフロップＦＦ２１の出力の立ち上がりタイミングウィンドウは、ＴＷｒ（ＦＦ２１）＝（Ｔｄ２１ｒ、Ｔｄ２１ｒ）、立ち下がりタイミングウィンドウは、ＴＷｆ（ＦＦ２１）＝（Ｔｄ２１ｆ、Ｔｄ２１ｆ）となる。
【００８９】
フリップフロップＦＦ２２の出力の立ち上がりタイミングウィンドウは、ＴＷｒ（ＦＦ２２）＝（Ｔｄ２２ｒ、Ｔｄ２２ｒ）、立ち下がりタイミングウィンドウは、ＴＷｆ（ＦＦ２２）＝（Ｔｄ２２ｆ、Ｔｄ２２ｆ）となる。
【００９０】
バッファ回路ＢＵＦ２４の出力の立ち上がりタイミングウィンドウは、ＴＷｒ（ＢＵＦ２４）＝（Ｔｄ２４ｒ＋Ｔｄ２１ｒ、Ｔｄ２４ｒ＋Ｔｄ２１ｒ）、立ち下がりタイミングウィンドウは、ＴＷｆ（ＢＵＦ２４）＝（Ｔｄ２４ｆ＋Ｔｄ２１ｆ、Ｔｄ２４ｆ＋Ｔｄ２１ｆ）となる。
【００９１】
このように、回路ブロック内に２入力の回路素子が存在しない場合には、最小および最大立ち上がり時刻が同じとなる。同様に、最小および最大立ち下がり時刻も同じとなる。
【００９２】
そして、上述したように、ＯＲ回路ＯＲ２５の出力の立ち上がりタイミングウィンドウは、ＴＷｒ（ＯＲ２５）＝（Ｔｄ２２ｒ＋Ｔｄ２５ｒ、Ｔｄ２１ｒ＋Ｔｄ２４ｒ＋Ｔｄ２５ｒ）、立ち下がりタイミングウィンドウは、ＴＷｆ（ＯＲ２５）＝（Ｔｄ２２ｆ＋Ｔｄ２５ｆ、Ｔｄ２１ｆ＋Ｔｄ２４ｆ＋Ｔｄ２５ｆ）となる。
【００９３】
更に、バッファ回路ＢＵＦ２６の出力の立ち上がりタイミングウィンドウは、ＴＷｒ（ＢＵＦ２６）＝（Ｔｄ２２ｒ＋Ｔｄ２５ｒ＋Ｔｄ２６ｒ、Ｔｄ２１ｒ＋Ｔｄ２４ｒ＋Ｔｄ２５ｒ＋Ｔｄ２６ｒ）、立ち下がりタイミングウィンドウは、ＴＷｆ（ＢＵＦ２６）＝（Ｔｄ２２ｆ＋Ｔｄ２５ｆ＋Ｔｄ２６ｆ、Ｔｄ２１ｆ＋Ｔｄ２４ｆ＋Ｔｄ２５ｆ＋Ｔｄ２６ｆ）となる。但し、バッファ回路ＢＵＦ２６の立ち上がり、立ち下がり信号の遅延特性をそれぞれＴｄ２６ｒ、Ｔｄ２６ｆとする。
【００９４】
ここで、もしフリップフロップＦＦ２３の最小パルス幅制約違反を判定する場合は、バッファ回路ＢＵＦ２６の出力の最小立ち下がり時刻（Ｔｄ２２ｆ＋Ｔｄ２５ｆ＋Ｔｄ２６ｆ）＋クロック周期（Ｔｃｌｋ）から最大立ち上がり時刻（Ｔｄ２１ｒ＋Ｔｄ２４ｒ＋Ｔｄ２５ｒ＋Ｔｄ２６ｒ）を引いた値を最小データパルス幅ＴｆＨ（ｍｉｎ）とし、フリップフロップＦＦ２３の最小パルス幅制約Ｔｍｉｎ２３ＨとＴｆＨ（ｍｉｎ）とを比較することで判定する。
【００９５】
つまり、回路ブロックにおいて、出力側回路素子の出力信号の最小立ち下がり時刻＋クロック周期から最大立ち上がり時刻を引いた値を最小データパルス幅とし、その最小データパルス幅が入力側回路素子の最小パルス幅制約以下であるか否かを判定する。
【００９６】
上記算出メカニズムは、図１０におけるロウレベルのデータパルスである場合でも、立ち下がり、立ち上がりの関係が逆になる以外は基本的に同様である。このため、図１０の説明は省略する。但し、ハイレベルのデータパルスとは逆に、回路ブロックにおいて、出力素子側の出力信号の最小立ち上がり時刻から最大立ち下がり時刻を引いた値をロウレベルの最小データパルス幅とし、その最小データパルス幅が入力素子側のロウレベルの最小パルス幅制約以下であるか否かを判定する。
【００９７】
以上の様に、最小パルス幅制約検証の対象となる回路が、実施の形態１の図３のようなレジスタ間に１入力、１出力の論理回路が直列接続された構成ではなく、本実施の形態２の図８のような２入力、１出力の論理回路が接続された構成の場合であっても、実施の形態１と同様、最小パルス幅制約検証が可能である。本実施の形態２では、２入力、１出力の論理回路に対応するため、上述した論理回路出力のタイミングウィンドウを用いる。そして、最小立ち下がり時刻＋クロック周期から最大立ち上がり時刻を引いた値をハイレベルの最小データパルス幅、最小立ち上がり時刻＋クロック周期から最大立ち下がり時刻を引いた値をロウレベルの最小データパルス幅としている。そして、この最小データパルス幅が入力素子側の最小パルス幅制約違反となるか否かを判定し、最小パルス幅制約違反である場合、エラー判定結果を検証結果情報１０４として出力する。
【００９８】
また、このタイミングウィンドウは、ネットリスト１１１の回路接続情報とライブラリ１１２の遅延情報から容易に求めることができ、新たに複雑な計算方法を必要としない。このため、この計算方法を実現する遅延計算部１０２、最小パルス幅検証部１０３の回路構成が必要以上に複雑になることがない。
【００９９】
発明の実施の形態３
【０１００】
以下、本発明を適用した具体的な実施の形態３について、図面を参照しながら詳細に説明する。本実施の形態３では、最小パルス幅制約検証の対象となる回路が、以下に示す図１１のような構成である場合を想定する。
【０１０１】
よって、本実施の形態３の最小パルス幅制約の検証システムの構成、及び、動作フローチャートは、実施の形態１の図１、図２と同様となるため、その説明は省略する。
【０１０２】
図１１は本実施の形態３のサンプル回路の構成である。図１１に示すように、本実施の形態３のサンプル回路は、レジスタ（フリップフロップ）ＦＦ２１〜ＦＦ２３、ＦＦ３１と、バッファ回路ＢＵＦ２４、ＢＵＦ２６と、ＯＲ回路ＯＲ２５と、ＡＮＤ回路ＡＮＤ３２とを有する。
【０１０３】
なお、図１１に示された符号のうち、図８と同じ符号を付した構成は、図８と同じか又は類似の構成を示している。実施の形態２と異なるのは、フリップフロップＦＦ３１と、ＡＮＤ回路ＡＮＤ３２が加わった点である。その他の構成は、実施の形態２と同様であるため説明は省略する。
【０１０４】
フリップフロップＦＦ３１のクロック入力端子には、クロック信号ＣＬＫが入力される。フリップフロップＦＦ３１のデータ出力端子Ｑからの出力信号をＤ３１とする。ＯＲ回路ＯＲ２５の出力端子とＡＮＤ回路ＡＮＤ３２の一方の入力端子とが接続され、フリップフロップＦＦ２２のデータ出力端子Ｑが、ＡＮＤ回路ＡＮＤ３２の他方の入力端子に接続される。ＡＮＤ回路ＡＮＤ３２の出力端子とフリップフロップＦＦ２３のデータ入力端子Ｄとの間にバッファ回路ＢＵＦ２６が接続される。ＡＮＤ回路ＡＮＤ３２の出力信号をＤ３２とする。ここで、ＡＮＤ回路ＡＮＤ３２の最小パルス幅制約をＴｍｉｎ３２とする。
【０１０５】
なお、実施の形態１と同様、フリップフロップＦＦ２１、ＦＦ２３間のデータパス上のフロップＦＦ２１、バッファ回路ＢＵＦ２４を回路ブロック１とし、バッファ回路ＢＵＦ２４、ＯＲ回路ＯＲ２５を回路ブロック２とする。同じく、フリップフロップＦＦ２２、ＦＦ２３間のデータパス上のフロップＦＦ２２、ＯＲ回路ＯＲ２５を回路ブロック３とする。
【０１０６】
そして、本実施の形態３では、フリップフロップＦＦ３１、ＦＦ２３間のデータパス上のフロップＦＦ３１、ＡＮＤ回路ＡＮＤ３２を回路ブロック４とし、ＯＲ回路ＯＲ２５、ＡＮＤ回路ＡＮＤ３２を回路ブロック５とする。更に、ＡＮＤ回路ＡＮＤ３２、バッファ回路ＢＵＦ２６を回路ブロック６とする。
【０１０７】
ここで、図１２〜図１５に、データ信号Ｄ２１〜Ｄ２６、Ｄ３１、Ｄ３２のタイミングチャートを示す。なお、図１２の例では、全ての回路ブロックにおいて、最小パルス幅制約違反が無い、つまりデータパルスの消失が無い場合を示している。また、説明の簡略化のため、フリップフロップＦＦ２１、ＦＦ２２、ＦＦ２３、ＦＦ３１、バッファ回路ＢＵＦ２４、ＢＵＦ２６、ＯＲ回路ＯＲ２５、ＡＮＤ回路ＡＮＤ３２の各遅延特性を全て期間Ｔ１とする。
【０１０８】
図１２に示すように、時刻ｔ０のクロック信号の立ち上がりエッジから期間Ｔ１後の時刻ｔ１に、データ信号Ｄ２１、Ｄ３１がハイレベルに立ち上がり、データ信号Ｄ２２が立ち下がる。また、時刻ｔ６（時刻ｔ０からクロック周期Ｔｃｌｋ後）のクロック信号の立ち上がりエッジから期間Ｔ１後の時刻ｔ７に、データ信号Ｄ２１、Ｄ３１がロウレベルに立ち下がる。よって、データ信号Ｄ２１、Ｄ３１は、パルス幅がＴｃｌｋのハイレベルのデータパルスを有する。
【０１０９】
バッファ回路ＢＵＦ２４は、データ信号Ｄ２１のデータパルスを期間Ｔ１遅延してデータ信号Ｄ２４として出力する。ＯＲ回路ＯＲ２５は、データ信号Ｄ２４とＤ２２とを入力し、ＯＲ演算した演算結果を期間Ｔ１遅延し、データ信号Ｄ２５として出力する。但し、データ信号Ｄ２１とＤ２２の遅延の関係から、図１２に示すような時刻ｔ３からｔ４の間ロウレベルのパルスが発生する。
【０１１０】
更に、ＡＮＤ回路ＡＮＤ３２は、データ信号Ｄ２５とＤ３１とを入力し、ＡＮＤ演算した演算結果を期間Ｔ１遅延し、データ信号Ｄ３２として出力する。但し、データ信号Ｄ２４とＤ３１の遅延の関係から、図１２に示すような時刻ｔ２からｔ３の間ハイレベルのパルス、時刻ｔ３からｔ４の間ロウレベルのパルスが発生する。
【０１１１】
バッファ回路ＢＵＦ２６は、データ信号Ｄ３２のデータパルスを期間Ｔ１遅延してデータ信号Ｄ２６として出力する。そして、フリップフロップＦＦ２３が、時刻ｔ６（時刻ｔ０からクロック周期Ｔｃｌｋ後）のクロック信号の立ち上がりエッジにデータ信号Ｄ２６をラッチする。なお、フリップフロップＦＦ２３がラッチした信号は期間Ｔ１後の時刻ｔ７に、データ出力端子Ｑから信号Ｄ２３として出力される。
【０１１２】
ここで、図１３〜図１５に回路ブロック６で、最小パルス幅制約によるパルスの消失が発生した場合を示す。但し、図１３はバッファ回路ＢＵＦ２６の最小パルス幅制約により２×Ｔ１以下のハイレベルデータパルスが消失する場合、図１４はバッファ回路ＢＵＦ２６の最小パルス幅制約により２×Ｔ１以下のロウレベルのデータパルスが消失する場合である。また、図１５はバッファ回路ＢＵＦ２６の最小パルス幅制約により４×Ｔ１以下のハイレベルのデータパルスが消失する場合である。
【０１１３】
まず、図１３示すように、バッファ回路ＢＵＦ２６でデータ信号Ｄ２６の時刻ｔ３からｔ４におけるハイレベルのデータパルスが消失する場合では、時刻ｔ６（フリップフロップＦＦ２３のラッチタイミング）に問題なくフリップフロップＦＦ２３が正しいデータをラッチする。また、図１４示すように、データ信号Ｄ２６の時刻ｔ４からｔ５におけるロウレベルのデータパルスが消失した場合でも、時刻ｔ６に問題なくフリップフロップＦＦ２３が正しいデータをラッチする。
【０１１４】
しかし、図１５示すように、時刻ｔ６にまたがった、時刻ｔ５〜ｔ９のハイレベルデータパルスが消失した場合、フリップフロップＦＦ２３が正しいデータをラッチすることができず、回路が誤作動することになる。
【０１１５】
以上のことから、最小パルス幅検証部１０３が、最小パルス幅検証を行う対象として、図１３、図１４の例のような、時刻ｔ０からクロック信号ＣＬＫの周期Ｔｃｌｋ内のデータパルスのパルス幅を検証する必要が無いことが分かる（このような回路動作上問題のないパルスをグリッチと呼ぶ）。逆に、最小パルス幅検証部１０３が、最小パルス幅検証を行う対象として、周期Ｔｃｌｋのクロック信号ＣＬＫのクロックエッジにまたがるデータパルスに対してのみ検証すればよく、全てのデータパルスに対して検証を行う必要がない。
【０１１６】
そして、上記周期Ｔｃｌｋのクロック信号ＣＬＫのクロックエッジにまたがるデータパルスの判定は、実施の形態２で説明したタイミングウィンドウを利用する。上述したように、フリップフロップＦＦ２１、ＦＦ２２、ＦＦ３１、バッファ回路ＢＵＦ２４、ＢＵＦ２６、ＯＲ回路ＯＲ２５、ＡＮＤ回路ＡＮＤ３２の立ち上がり、立ち下がりの各遅延特性を全て期間Ｔ１とした場合、フリップフロップＦＦ２１、ＦＦ２２、ＦＦ３１の出力の立ち上がりタイミングウィンドウはＴＷｒ（ＦＦ２１）＝ＴＷｒ（ＦＦ２２）＝ＴＷｒ（ＦＦ３１）＝（Ｔ１、Ｔ１）となり、立ち下がりタイミングウィンドウはＴＷｆ（ＦＦ２１）＝ＴＷｆ（ＦＦ２２）＝ＴＷｆ（ＦＦ３１）＝（Ｔ１、Ｔ１）となる。
【０１１７】
また、バッファ回路ＢＵＦ２４の立ち上がりタイミングウィンドウは、ＴＷｒ（ＢＵＦ２４）＝（Ｔ１×２、Ｔ１×２）、立ち下がりタイミングウィンドウは、ＴＷｆ（ＢＵＦ２４）＝（Ｔ１×２、Ｔ１×２）となる。次に、ＯＲ回路ＯＲ２５の立ち上がりタイミングウィンドウは、ＴＷｒ（ＯＲ２５）＝（Ｔ１×２、Ｔ１×３）、立ち下がりタイミングウィンドウは、ＴＷｆ（ＯＲ２５）＝（Ｔ１×２、Ｔ１×３）となる。
【０１１８】
また、ＡＮＤ回路ＡＮＤ３２の立ち上がりタイミングウィンドウは、ＴＷｒ（ＡＮＤ３２）＝（Ｔ１×２、Ｔ１×４）、立ち下がりタイミングウィンドウは、ＴＷｆ（ＡＮＤ３２）＝（Ｔ１×２、Ｔ１×４）となる。また、バッファ回路ＢＵＦ２６の立ち上がりタイミングウィンドウは、ＴＷｒ（ＢＵＦ２６）＝（Ｔ１×３、Ｔ１×５）、立ち下がりタイミングウィンドウは、ＴＷｆ（ＢＵＦ２６）＝（Ｔ１×３、Ｔ１×５）となる。
【０１１９】
例えば、回路ブロック６のハイレベルデータパルスの最小パルス幅検証を、図１６を用いて説明する。ＡＮＤ回路ＡＮＤ３２の立ち上がりタイミングウィンドウは、ＴＷｒ（ＡＮＤ３２）＝（Ｔ１×２、Ｔ１×４）であり、図１６に示すように最小立ち上がり時刻が時刻ｔ０から期間Ｔ１×２後の時刻ｔ２、最大立ち上がり時刻が時刻ｔ０から期間Ｔ１×４後の時刻ｔ４となる。また、ＡＮＤ回路ＡＮＤ３２の立ち下がりタイミングウィンドウは、ＴＷｆ（ＡＮＤ３２）＝（Ｔ１×２、Ｔ１×４）であり、図１６に示すように最小立ち下がり時刻が時刻ｔ６から期間（Ｔ１×２）後の時刻ｔ８、最大立ち下がり時刻が時刻ｔ６から期間（Ｔ１×４）後の時刻ｔ１０となる。なお、他の実施の形態と同様、それぞれの回路ブロックの遅延時刻の遅延算出情報は、遅延計算部１０２で行われる。
【０１２０】
そして、最小パルス幅検証部１０３は、実施の形態２と同様、データ信号Ｄ３２の最小パルス幅を、最小立ち下がり時刻（Ｔ１×２）＋クロック周期（Ｔｃｌｋ）から最大立ち下がり時刻（Ｔ１×４）を引いた値（Ｔｃｌｋ−Ｔ１×２）として計算し、バッファ回路ＢＵＦ２６の最小パルス幅制約Ｔｍｉｎ２６と比較することで、回路ブロック６における最小パルス幅制約違反となるか否かを判定することができる。そして、Ｔｃｌｋ−Ｔ１×２≦Ｔｍｉｎ２６である場合は、最小パルス幅制約違反として、エラー判定結果を検証結果情報１０４として出力する。
【０１２１】
以上の様に、最小パルス幅検証を行うデータパルスの対象をクロック信号ＣＬＫのクロックエッジにまたがるものに限定することで、回路ブロックで発生する全てのデータパルスを検証する必要が無く、検証期間の短縮を図ることが可能となる。
【０１２２】
発明の実施の形態４
【０１２３】
以下、本発明を適用した具体的な実施の形態４について、図面を参照しながら詳細に説明する。図１７に本実施の形態４にかかる半導体集積回路の最小パルス幅制約の検証システム２００のブロック構成を示す。図１７に示すように、最小パルス幅制約の検証システム２００は、情報保持部１０１と、最小パルス幅検証部１０３とを有する。
【０１２４】
なお、図１７に示された符号のうち、図１と同じ符号を付した構成は、図１と同じか又は類似の構成を示している。実施の形態１と異なるのは、遅延計算部１０２を削除した構成である。このため、情報保持部１０１と最小パルス幅検証部１０３の動作等の説明は、実施の形態１と同様であるため特に必要なもの以外は説明を省略する。また、本実施の形態４の検証システム２００の動作フローも、実施の形態１の図２と同様であるため、説明は省略する。
【０１２５】
本実施の形態４では、注目するデータパス上の回路素子の遅延特性を考慮せず、全ての回路素子が理想的なタイミングで動作すると想定している。このため、実施の形態２、３で説明したタイミングウィンドウは、図１８で示すように単純化が可能となる。なお、図１８は、図１１のサンプル回路のＡＮＤ回路ＡＮＤ３２の出力データ信号Ｄ３２の例を本実施の形態４に適用した場合のタイミングチャートである。
【０１２６】
図１８に示すように、本実施の形態４では、回路素子の遅延特性を考慮しないため、ＡＮＤ回路ＡＮＤ３２、及び、その前段の回路素子であるフリップフロップＦＦ２１、ＦＦ２２、ＦＦ３１、バッファ回路ＢＵＦ２４、ＯＲ回路ＯＲ２５の遅延が発生しない前提となる。このため、ＡＮＤ回路ＡＮＤ３２の出力も理想的なデータパルス幅、つまり、クロック信号ＣＬＫの周期Ｔｃｌｋとなる。更に、本実施の形態４で想定されるデータパルスは、必ず時刻ｔ６のクロックエッジをまたぐことになり、実施の形態３のように、最小パルスがクロック信号ＣＬＫのクロックエッジにまたがるか否かの判定を行う必要がない。
【０１２７】
但し、フリップフロップＦＦ２１、ＦＦ２２、ＦＦ３１の遅延特性は上述のように考慮しなくてよいが、フリップフロップＦＦ２１、ＦＦ２２、ＦＦ３１のパルスデータの出力タイミングが時刻ｔ０である場合、フリップフロップＦＦ２３のラッチタイミングである時刻ｔ１において、フリップフロップＦＦ２３が入力するデータＤ２６のパルスエッジのタイミングが重なってしまう可能性がある。このため、フリップフロップＦＦ２３のラッチするラッチデータが不定となってしまう可能性がある。これを防ぐため、フリップフロップＦＦ２１、ＦＦ２２、ＦＦ３１のデータパルスの出力タイミングを時刻ｔ０から所定のマージンを取って遅らせることにより、最小パルス幅検証を行うことが好ましい。
【０１２８】
ここで、本実施の形態４の最小パルス幅制約の検証システム２００では、クロック情報１１３で与えるクロック信号の周波数を上昇させていく、つまり、クロック信号ＣＬＫの周期Ｔｃｌｋを小さくしていくと、ある周波数でいずれかの回路ブロックにおいて最小パルス幅制約違反が発生する。これは、クロック信号ＣＬＫの周期Ｔｃｌｋに応じて、各回路ブロックに伝達されるデータパルス幅が決定されるが、各回路ブロックが有する最小パルス幅制約には変化がないためである。
【０１２９】
このため、ある周波数でいずれかの回路ブロックにおいて最小パルス幅制約違反が発生し、エラー判定結果が検証結果情報１０４として出力される。そして、この最小パルス幅制約違反が発生したときの周波数が、注目する回路の最大動作周波数となる。つまり、本実施の形態４の最小パルス幅制約の検証システム２００では、クロック情報１１３で定義されるクロック周波数を変更することで、自動で回路の最大動作周波数を検証することが可能となる。なお、このような最大動作周波数の検証方法は、回路素子の遅延を考慮した実施の形態１〜３でも利用可能である。
【０１３０】
以上、本実施の形態４の最小パルス幅制約の検証システム２００は、パルス幅の計算において、回路ブロックの遅延情報を必要としないため、実施の形態１〜３で行っていた遅延算出情報の算出処理やパス解析が不要となる。よって、論理合成後の回路などにおいて、正確な遅延算出情報をできない場合であっても、回路の最大動作周波数を検証することが可能となる。また、上記算出処理やパス解析が不要となることから、検証処理速度が高速となるメリットもある。
【０１３１】
なお、本発明は上記実施の形態に限られたものでなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述した実施の形態１〜４では、クロック信号ＣＬＫの１周期で回路動作を行うシングルサイクルパスを想定していた。この場合、クロック信号ＣＬＫの周期Ｔｃｌｋごとのエッジタイミングでレジスタ（フリップフロップ）がラッチした値に応じて、回路動作が決定される。
【０１３２】
ここで、本発明を複数のクロック周期を１サイクルとするマルチサイクルパス構成の回路においても適用可能である。つまり、クロック信号ＣＬＫの周期Ｔｃｌｋのｎ回ごとのエッジタイミングでレジスタ（フリップフロップ）がラッチした値に応じ、回路動作が決定される場合であっても、本発明を適用可能である（ここで、ｎは２以上の整数）。図１９に、図３のサンプル回路において、クロック信号ＣＬＫの２周期のマルチサイクルパス下で動作させた場合の動作タイミングチャートを示す。
【０１３３】
この場合、図１９に示すように、フリップフロップＦＦ１１の立ち上がり信号の遅延特性を含め、時刻ｔ０から期間Ｔｄ４１ｒ後にフリップフロップＦＦ１１の出力信号が立ち上がる。同様に、フリップフロップＦＦ１１の立ち下がり信号の遅延特性に応じて、立ち下がりエッジが時刻ｔ１から期間Ｔｄ４１ｆだけ遅延した時刻ｔ１３に出力信号が立ち下がる。
【０１３４】
ここで、実施の形態１では、時刻ｔ１３は、クロック信号ＣＬＫの１周期分Ｔｃｌｋ＋Ｔｄ１１ｆとなっていた。しかし、本例では、Ｔｃｌｋ×２＋Ｔｄ４１ｆとなることに注意する。そして、最小パルス幅検証部１０３が、データ信号Ｄ１１Ｈのデータパルス幅ＴａＨを算出する。データ信号Ｄ１１Ｈのデータパルス幅ＴａＨは、時刻ｔ１３からｔ１１を引いた値となる。
【０１３５】
時刻ｔ０を基準点０とすると、時刻ｔ１１はＴｄ４１ｒとなり、時刻ｔ１を基準点０とすると、時刻ｔ１３はＴｄ４１ｆとなる。本回路がマルチサイクルパスで動作することを考慮すると、データパルス幅ＴａＨは、最小立ち下がり時刻＋（クロック周期×サイクル数）−最大立ち上がり時刻＝（Ｔｃｌｋ×２＋Ｔｄ４１ｆ−Ｔｄ４１ｒ）となる。このデータパルス幅ＴａＨとバッファ回路ＢＵＦ１３の最小パルス幅制約Ｔｍｉｎ１３と比較する。このように、マルチサイクルパスでは、実施の形態１の「Ｔｃｌｋ」の計算部分が「Ｔｃｌｋ×２」として計算される。これ以降の計算も同様となる。
【０１３６】
なお、実施の形態２、３のように、２入力、１出力の回路素子があっても同様のことが言える。更に、上記方法に従うことで、２以上のクロック信号周期のマルチサイクルパス構成も可能であることは言うまでもない。
【符号の説明】
【０１３７】
１００、２００  半導体集積回路の最小パルス幅制約の検証システム
１０１  情報保持部
１０２  遅延計算部
１０３  最小パルス幅検証部
１０４  検証結果情報
１１１  ネットリスト
１１２  ライブラリ
１１３  クロック情報
ＦＦ１１、ＦＦ１２、ＦＦ２１〜ＦＦ２３、ＦＦ３１  レジスタ（フリップフロップ）
ＢＵＦ１３、ＢＵＦ１４、ＢＵＦ２４、ＢＵＦ２６  バッファ回路
ＯＲ２５  ＯＲ回路
ＡＮＤ３２  ＡＮＤ回路
【図１】
2012174192.tif 000003
【図２】
2012174192.tif 000004
【図３】
2012174192.tif 000005
【図４】
2012174192.tif 000006
【図５】
2012174192.tif 000007
【図６】
2012174192.tif 000008
【図７】
2012174192.tif 000009
【図８】
2012174192.tif 000010
【図９】
2012174192.tif 000011
【図１０】
2012174192.tif 000012
【図１１】
2012174192.tif 000013
【図１２】
2012174192.tif 000014
【図１３】
2012174192.tif 000015
【図１４】
2012174192.tif 000016
【図１５】
2012174192.tif 000017
【図１６】
2012174192.tif 000018
【図１７】
2012174192.tif 000019
【図１８】
2012174192.tif 000020
【図１９】
2012174192.tif 000021
【図２０】
2012174192.tif 000022
【図２１】
2012174192.tif 000023
【図２２】
2012174192.tif 000024