(57)【要約】【課題】マルチサイクルパスまたはフォルスパスのタイミング例外制約を自動生成すること。【解決手段】支援装置１００は、回路の設計データに基づいて、回路に含まれる複数の素子の中から、タイミング制約を適用する可能性があるタイミングパスＰの始点となる第１の順序回路ＦＦ１と、タイミングパスＰの終点となる第２の順序回路ＦＦ２とを特定する。支援装置１００は、設計データに基づいて、回路に対する論理シミュレーションを実行することにより、複数の素子のそれぞれの素子に入力または出力される信号の波形を解析する。支援装置１００は、タイミングパスＰから回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、タイミングパスＰがマルチサイクルパスまたはフォルスパスであるか否かを判断する。支援装置１００は、タイミングパスＰがマルチサイクルパスまたはフォルスパスであれば、タイミング例外制約を生成する。【選択図】図１
2016201045.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
回路の設計データに基づいて、前記回路に含まれる複数の素子の中から、パスの始点となる第１の順序回路と、前記パスの終点となる第２の順序回路とを特定し、
前記設計データに基づいて、前記複数の素子のそれぞれの素子に入力または出力される信号の波形を解析し、
解析した前記第１の順序回路から前記第２の順序回路を経由して前記回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、前記パスがマルチサイクルパスまたはフォルスパスであるか否かを判断し、
前記マルチサイクルパスまたは前記フォルスパスであると判断した場合には、前記パスのタイミング例外制約を生成する、
処理を実行することを特徴とする設計支援方法。
【請求項２】
前記コンピュータが、
解析した前記波形に基づいて、特定した前記第１の順序回路に入力される第１のクロック信号のエッジから、特定した前記第２の順序回路に入力される第２のクロック信号のエッジまでの間隔を算出し、
解析した前記波形に基づいて、前記第１の順序回路から出力されるデータ信号が前記外部端子まで伝搬されるか否かを判定する、
処理を実行し、
前記判断する処理は、
算出した前記間隔、および判定した結果に基づいて、前記パスがマルチサイクルパスまたはフォルスパスであるか否かを判断する、
ことを特徴とする請求項１に記載の設計支援方法。
【請求項３】
前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記第１のクロック信号のエッジから、時間軸上で当該エッジよりも後方にあり当該エッジに最も近い前記第２のクロック信号のエッジまでの間隔が、前記回路のクロック信号の２周期分の間隔以上であれば、前記パスが前記マルチサイクルパスであると判断する、
ことを特徴とする請求項２に記載の設計支援方法。
【請求項４】
前記算出する処理は、
前記波形に基づいて、前記第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジよりも後方にあり当該エッジに最も近い前記第２のクロック信号のエッジまでの間隔を算出し、
前記判定する処理は、
算出した前記間隔が小さい前記第１のクロック信号のエッジから順に、当該エッジに対応する期間における前記データ信号が、前記外部端子まで伝搬されるか否かを判定し、
前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記外部端子まで伝搬されると判定したエッジについて算出した前記間隔が、前記回路のクロック信号の２周期分の間隔以上であれば、前記パスが前記マルチサイクルパスであると判断する、
ことを特徴とする請求項３に記載の設計支援方法。
【請求項５】
前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記第１のクロック信号のエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い前記第２のクロック信号のエッジまでの間隔が、前記回路のクロック信号の１周期分の間隔以上であれば、前記パスが前記マルチサイクルパスであると判断する、
ことを特徴とする請求項２〜４のいずれか一つに記載の設計支援方法。
【請求項６】
前記算出する処理は、
前記波形に基づいて、前記第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い前記第２のクロック信号のエッジまでの間隔を算出し、
前記判定する処理は、
算出した前記間隔が小さい前記第１のクロック信号のエッジから順に、当該エッジに対応する期間における前記データ信号が、前記外部端子まで伝搬されるか否かを判定し、
前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記外部端子まで伝搬されると判定したエッジについて算出した前記間隔が、前記回路のクロック信号の１周期分の間隔以上であれば、前記パスが前記マルチサイクルパスであると判断する、
ことを特徴とする請求項５に記載の設計支援方法。
【請求項７】
前記判断する処理は、
前記第１のクロック信号のそれぞれのエッジに対応する期間における前記データ信号が、前記外部端子まで伝搬しないと判定したか、または、期待値が設定されていない前記外部端子に伝搬されると判定した場合に、前記パスが前記フォルスパスであると判断する、
ことを特徴とする請求項２〜６のいずれか一つに記載の設計支援方法。
【請求項８】
前記生成する処理は、
前記マルチサイクルパスであると判断した場合には、前記間隔に基づいて前記パスのタイミング制約を緩和するタイミング例外制約を生成する、
ことを特徴とする請求項２〜７のいずれか一つに記載の設計支援方法。
【請求項９】
前記生成する処理は、
前記フォルスパスであると判断した場合には、前記パスのタイミング制約を無効化するタイミング例外制約を生成する、
ことを特徴とする請求項１〜８のいずれか一つに記載の設計支援方法。
【請求項１０】
コンピュータに、
回路の設計データに基づいて、前記回路に含まれる複数の素子の中から、パスの始点となる第１の順序回路と、前記パスの終点となる第２の順序回路とを特定し、
前記設計データに基づいて、前記複数の素子のそれぞれの素子に入力または出力される信号の波形を解析し、
解析した前記第１の順序回路から前記第２の順序回路を経由して前記回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、前記パスがマルチサイクルパスまたはフォルスパスであるか否かを判断し、
前記マルチサイクルパスまたは前記フォルスパスであると判断した場合には、前記パスのタイミング例外制約を生成する、
処理を実行させることを特徴とする設計支援プログラム。
【請求項１１】
回路の設計データに基づいて、前記回路に含まれる複数の素子の中から、パスの始点となる第１の順序回路と、前記パスの終点となる第２の順序回路とを特定し、
前記設計データに基づいて、前記複数の素子のそれぞれの素子に入力または出力される信号の波形を解析し、
解析した前記第１の順序回路から前記第２の順序回路を経由して前記回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、前記パスがマルチサイクルパスまたはフォルスパスであるか否かを判断し、
前記マルチサイクルパスまたは前記フォルスパスであると判断した場合には、前記パスのタイミング例外制約を生成する、
制御部を有することを特徴とする設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計支援方法、設計支援プログラム、および設計支援装置に関する。
【背景技術】
【０００２】
従来、回路設計の際に、所定のクロック周波数において回路が正常に動作するかを検証する静的タイミング解析（ＳＴＡ：Ｓｔａｔｉｃ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ）の技術がある。通常、同期回路におけるＳＴＡでは、回路のそれぞれのパスに、パスの始点から終点まで１クロック周期以内で信号が伝搬するように、また、始点と終点の間で同一クロックエッジでの信号伝搬が起こらないように、所定のタイミング制約が適用される。所定のタイミング制約に違反するパスがあれば、遅延バッファの挿入やセル駆動能力の変更などの調整を行ってから再びＳＴＡを行う。
【０００３】
また、回路には、実際には所定のタイミング制約を満たさなくても正常に動作するマルチサイクルパスやフォルスパスが含まれることがある。このため、タイミング制約に違反するパスを検証して、当該パスがマルチサイクルパスやフォルスパスであれば、所定のタイミング制約を緩和または適用外にするタイミング例外制約を生成してから、再びＳＴＡを行う。
【０００４】
関連する技術としては、例えば、ユーザ仕様依存のマルチサイクルパスを検出するためのものがある。また、例えば、論理回路のマルチサイクルパスを検出するための技術がある。また、例えば、外部出力ピンまでの遅延時間を得るための技術がある。また、例えば、回路要素の必要、不要の判定を行うための技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２４８０３８号公報
【特許文献２】特開２００３−１５７２９７号公報
【特許文献３】特開平４−２５６１７７号公報
【特許文献４】特開平４−３６３７６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、ＳＴＡを行う前に、マルチサイクルパスやフォルスパスといったパスを特定して、当該パスのタイミング例外制約を生成しておくことが難しい場合がある。そして、ＳＴＡを行った後にタイミング例外制約を生成すると、手戻りが発生して、回路設計にかかる時間が増大してしまう。
【０００７】
１つの側面では、本発明は、マルチサイクルパスまたはフォルスパスのタイミング例外制約を自動生成することができる設計支援方法、設計支援プログラム、および設計支援装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、回路の設計データに基づいて、前記回路に含まれる複数の素子の中から、パスの始点となる第１の順序回路と、前記パスの終点となる第２の順序回路とを特定し、前記設計データに基づいて、前記複数の素子のそれぞれの素子に入力または出力される信号の波形を解析し、解析した前記第１の順序回路から前記第２の順序回路を経由して前記回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、前記パスがマルチサイクルパスまたはフォルスパスであるか否かを判断し、前記マルチサイクルパスまたは前記フォルスパスであると判断した場合には、前記パスのタイミング例外制約を生成する設計支援方法、設計支援プログラム、および設計支援装置が提案される。
【発明の効果】
【０００９】
本発明の一態様によれば、マルチサイクルパスまたはフォルスパスのタイミング例外制約を自動生成することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態にかかる設計支援方法の一実施例を示す説明図である。
【図２】図２は、支援装置１００のハードウェアの一例を示すブロック図である。
【図３】図３は、支援装置１００の機能的構成例を示すブロック図である。
【図４】図４は、論理シミュレーションパターン４００のデータ構造の一例を示す説明図である。
【図５】図５は、論理・クロック情報５００のデータ構造の一例を示す説明図である。
【図６】図６は、波形情報６００のデータ構造の一例を示す説明図である。
【図７】図７は、タイミングパス情報７００のデータ構造の一例を示す説明図である。
【図８】図８は、タイミングパスＰの波形を特定する一例を示す説明図である。
【図９】図９は、エッジ間の間隔を算出する一例を示す説明図である。
【図１０】図１０は、始点データ信号の終点順序回路ＦＦ２までの伝搬状況を検証する一例を示す説明図である。
【図１１】図１１は、タイミングパスＰから外部端子までにある素子の一例を示す説明図（その１）である。
【図１２】図１２は、図１１に示したそれぞれの素子の波形の一例を示す説明図である。
【図１３】図１３は、タイミングパスＰから外部端子までにある素子の一例を示す説明図（その２）である。
【図１４】図１４は、図１３に示したそれぞれの素子の波形の一例を示す説明図である。
【図１５】図１５は、タイミングパスＰから外部端子までにある素子の一例を示す説明図（その３）である。
【図１６】図１６は、図１５に示したそれぞれの素子の波形の一例を示す説明図である。
【図１７】図１７は、周期差分に基づいてタイミング例外制約を生成する一例を示す説明図である。
【図１８】図１８は、タイミング例外制約１８００のデータ構造の一例を示す説明図である。
【図１９】図１９は、ＳＴＡを行う一例を示す説明図である。
【図２０】図２０は、生成処理手順の一例を示すフローチャート（その１）である。
【図２１】図２１は、生成処理手順の一例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１１】
以下に、図面を参照して、本発明にかかる設計支援方法、設計支援プログラム、および設計支援装置の実施の形態を詳細に説明する。
【００１２】
（実施の形態にかかる設計支援方法の一実施例）
図１は、実施の形態にかかる設計支援方法の一実施例を示す説明図である。図１において、設計支援装置１００は、実施の形態にかかる設計支援方法を実現し、回路に対する静的タイミング解析を支援するコンピュータである。以下の説明では、設計支援装置１００を「支援装置１００」と表記する場合がある。また、以下の説明では、静的タイミング解析を「ＳＴＡ」と表記する場合がある。
【００１３】
回路とは、複数の素子を含み、素子間を導体によって接続したものである。素子は、例えば、否定論理積回路（ＮＡＮＤ）、否定論理和回路（ＮＯＲ）、順序回路（ＦＦ：Ｆｌｉｐ−Ｆｌｏｐ）などである。順序回路とは、入力信号と、過去の内部状態とに基づいて、出力信号の値が決定される回路である。回路には、複数のパスが含まれる。パスとは、信号が伝搬される経路であって、始点となる素子から終点となる素子までの経路である。パスは、例えば、始点となる順序回路から、終点となる順序回路までの経路である。
【００１４】
ＳＴＡは、所定のクロック周波数における回路の正常動作を検証する解析方法である。ＳＴＡは、例えば、パスの始点となる順序回路から出力された信号がパスの終点となる順序回路に到達するまでの時間が早過ぎず遅過ぎないことを検証する。ＳＴＡは、具体的には、それぞれのパスが、信号のホールドおよびセットアップに関するタイミング制約に違反するか否かを判定する。
【００１５】
信号のホールドに関するタイミング制約とは、あるクロックエッジで遷移した始点の順序回路からの信号を、同一クロックエッジにおける終点の順序回路で取り込まないための制約条件である。信号のホールドに関するタイミング制約は、始点の順序回路が遷移したクロックエッジを基準として終点の順序回路に何クロック周期早く信号が到達してもよいかを示す。クロック周期とは、回路内のクロック信号の周期である。
【００１６】
信号のセットアップに関するタイミング制約とは、あるクロックエッジで遷移した始点の順序回路からの信号を、次のクロックエッジにおける終点の順序回路で取り込むための制約条件である。信号のセットアップに関するタイミング制約は、始点の順序回路が遷移したクロックエッジを基準として終点の順序回路に何クロック周期遅く信号が到達してもよいかを示す。
【００１７】
通常、ＳＴＡでは、それぞれのパスに、始点から終点までの伝搬遅延が１クロック周期以内になるように所定のタイミング制約が適用される。換言すれば、通常、所定のタイミング制約が適用されると、ホールド解析は始点となる順序回路と終点となる順序回路の同一クロックエッジで検証され、セットアップ解析では始点となる順序回路のクロックエッジと終点となる順序回路のその次のクロックエッジの間で検証される。
【００１８】
しかしながら、回路には、始点の順序回路と終点の順序回路との間で同一クロックエッジまたはより前のクロックエッジで信号を取り込んでもよい、あるいは、始点の順序回路が遷移したクロックエッジの２クロック周期以上後のクロックエッジで信号の取り込みがあってもよいマルチサイクルパスが含まれる場合がある。換言すれば、回路には、所定のタイミング制約を適用せず、緩和されたタイミング制約を適用可能なマルチサイクルパスが含まれる場合がある。また、回路には、所定のタイミング制約を適用しなくてもよいフォルスパスが含まれる場合がある。
【００１９】
この場合でも、ＳＴＡでは、それぞれのパスに、所定のタイミング制約が適用されてしまう。このため、ＳＴＡにおいて、所定のタイミング制約に違反していても正常に動作可能なマルチサイクルパスやフォルスパスを、タイミング調整が必要なパスとして検出してしまうことがある。そして、タイミング調整しなくてもよいパスをタイミング調整してから、あるいは、タイミング調整しなくてもよい検出パスを所定のタイミング制約を緩和または適用外にするタイミング例外制約を生成してから、再びＳＴＡを行うことになり、手戻りが発生してしまう。タイミング調整は、例えば、遅延バッファの挿入やセル駆動能力の変更などの調整である。また、ＳＴＡにおいて、所定のタイミング制約を満たすか否かを判定しなくてもよいマルチサイクルパスやフォルスパスについても所定のタイミング制約を満たすか否かの判定処理を行うことになり、ＳＴＡにかかる時間が増大してしまうことがある。
【００２０】
ここで、ＳＴＡが行われる前に、人手で、マルチサイクルパスやフォルスパスを検出して、マルチサイクルパスやフォルスパスにタイミング例外制約を設定しておく場合が考えられる。タイミング例外制約とは、タイミング制約を適用する例外となるパスを規定する情報である。タイミング例外制約は、例えば、緩和されたタイミング制約を適用するマルチサイクルパスを規定する情報である。また、タイミング例外制約は、例えば、タイミング制約を適用しないフォルスパスを規定する情報である。
【００２１】
しかしながら、回路の大規模化に伴って、人手で、マルチサイクルパスやフォルスパスを検出することが困難になる。このため、マルチサイクルパスやフォルスパスの検出漏れが発生してしまい、マルチサイクルパスやフォルスパスについても、所定のタイミング制約が適用されてしまうことになる。このため、ＳＴＡにおいて、所定のタイミング制約に違反していても正常に動作可能なマルチサイクルパスやフォルスパスを、タイミング調整が必要なパスとして検出してしまうことがある。そして、タイミング調整しなくてもよいパスをタイミング調整してから、あるいは、タイミング調整しなくてもよいパスを所定のタイミング制約を緩和または適用外にするタイミング例外制約を生成してから、再びＳＴＡを行うことになり、手戻りが発生してしまう。あるいは、タイミング調整しなくてもよいパスについてタイミング例外制約を生成して、再びＳＴＡを行うことになり、手戻りが発生してしまう。
【００２２】
そこで、本実施の形態では、回路に含まれるマルチサイクルパスやフォルスパスについてのタイミング例外制約を自動生成することにより、回路に対するＳＴＡを支援することができる設計支援方法について説明する。
【００２３】
図１の例では、（１）支援装置１００は、回路の設計データを取得する。回路の設計データとは、回路に含まれる要素と、当該要素の属性や性質などを示すデータである。回路の設計データは、例えば、回路の端子と、端子の属性や性質と、端子に入出力される信号値などを示すデータを含む。また、回路の設計データは、例えば、回路の素子と、素子間の接続関係などを示すデータを含む。回路の設計データは、具体的には、論理シミュレーションパターンと、ネットリストまたはＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）データとを含む。
【００２４】
（２）支援装置１００は、設計データに基づいて、回路に含まれる複数の素子の中から、タイミング制約を適用する可能性があるタイミングパスＰの始点となる第１の順序回路ＦＦ１と、タイミングパスＰの終点となる第２の順序回路ＦＦ２とを特定する。また、支援装置１００は、設計データに基づいて、回路に対する論理シミュレーションを実行することにより、複数の素子のそれぞれの素子に入力または出力される信号の波形を解析する。
【００２５】
（３）支援装置１００は、解析した波形のうち、タイミングパスＰから回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、タイミングパスＰがマルチサイクルパスまたはフォルスパスであるか否かを判断する。ここで、第１の順序回路ＦＦ１に入力されるクロック信号と、第２の順序回路ＦＦ２に入力されるクロック信号との波形が、波形Ａ１である場合を例に挙げて、支援装置１００の動作について説明する。ここで、始点となる第１の順序回路ＦＦ１に入力されるクロック信号は、ラウンチクロック（Ｌａｕｎｃｈ  Ｃｌｏｃｋ）と呼ばれる場合がある。終点となる第２の順序回路ＦＦ２に入力されるクロック信号は、キャプチャクロック（Ｃａｐｔｕｒｅ  Ｃｌｏｃｋ）と呼ばれる場合がある。
【００２６】
この場合、支援装置１００は、波形Ａ１に基づいて、第１の順序回路ＦＦ１に入力される第１のクロック信号のエッジから、当該エッジ以前にあり当該エッジに最も近い、第２の順序回路ＦＦ２に入力される第２のクロック信号のエッジまでの間隔を算出する。そして、支援装置１００は、算出した間隔「０クロック周期」が、閾値「１クロック周期」未満であると判定する。これにより、支援装置１００は、タイミングパスＰが、タイミング制約のうち、信号のホールドに関する制約条件を緩和可能ではないパスであると判断する。
【００２７】
また、支援装置１００は、波形Ａ１に基づいて、第１の順序回路ＦＦ１に入力される第１のクロック信号のエッジから、当該エッジより後方にあり当該エッジに最も近い、第２の順序回路ＦＦ２に入力される第２のクロック信号のエッジまでの間隔を算出する。そして、支援装置１００は、算出した間隔「２クロック周期」が、閾値「２クロック周期」以上であると判定する。これにより、支援装置１００は、タイミングパスＰが、タイミング制約のうち、信号のセットアップに関する制約条件を緩和可能であるマルチサイクルパスであると判断する。
【００２８】
そして、支援装置１００は、タイミングパスＰがマルチサイクルパスであると判断した場合には、当該タイミングパスＰが、緩和されたタイミング制約を適用するマルチサイクルパスであることを規定するタイミング例外制約を生成する。支援装置１００は、例えば、タイミングパスＰが、信号のセットアップに関する制約条件が緩和されたタイミング制約を適用するマルチサイクルパスであることを規定するタイミング例外制約を生成する。
【００２９】
（４）ここで、第１の順序回路ＦＦ１に入力されるクロック信号と、第２の順序回路ＦＦ２に入力されるクロック信号との波形が、波形Ａ２である場合を、（３）とは異なる例として挙げて、支援装置１００の動作について説明する。
【００３０】
この場合、支援装置１００は、波形Ａ２に基づいて、第１の順序回路ＦＦ１に入力される第１のクロック信号のエッジから、当該エッジ以前にあり当該エッジに最も近い、第２の順序回路ＦＦ２に入力される第２のクロック信号のエッジまでの間隔を算出する。そして、支援装置１００は、算出した間隔「１クロック周期」が、閾値「１クロック周期」以上であると判定する。これにより、支援装置１００は、タイミングパスＰが、タイミング制約のうち、信号のホールドに関する制約条件を緩和可能であるマルチサイクルパスであると判断する。
【００３１】
また、支援装置１００は、波形Ａ２に基づいて、第１の順序回路ＦＦ１に入力される第１のクロック信号のエッジから、当該エッジより後方にあり当該エッジに最も近い、第２の順序回路ＦＦ２に入力される第２のクロック信号のエッジまでの間隔を算出する。そして、支援装置１００は、算出した間隔「１クロック周期」が、閾値「２クロック周期」未満であると判定する。これにより、支援装置１００は、タイミングパスＰが、タイミング制約のうち、信号のセットアップに関する制約条件を緩和可能ではないパスであると判断する。
【００３２】
そして、支援装置１００は、タイミングパスＰがマルチサイクルパスであると判断した場合には、当該タイミングパスＰが、緩和されたタイミング制約を適用するマルチサイクルパスであることを規定するタイミング例外制約を生成する。支援装置１００は、例えば、タイミングパスＰが、信号のホールドに関する制約条件が緩和されたタイミング制約を適用するマルチサイクルパスであることを規定するタイミング例外制約を生成する。
【００３３】
（５）支援装置１００は、解析した波形に基づいて、第１の順序回路ＦＦ１から出力されるデータ信号が外部端子まで伝搬されるか否かを判定してもよい。支援装置１００は、外部端子まで伝搬されないと判定した場合には、タイミングパスＰがフォルスパスであると判断する。また、支援装置１００は、タイミングパスＰがフォルスパスであると判断した場合には、当該タイミングパスＰが、タイミング制約を適用しないフォルスパスであることを規定するタイミング例外制約を生成する。
【００３４】
これにより、支援装置１００は、マルチサイクルパスまたはフォルスパスのタイミング例外制約を、自動生成することができる。このため、支援装置１００の利用者は、回路の中から、マルチサイクルパスやフォルスパスを検出してタイミング例外制約を生成しなくてもよく、作業負担を低減することができる。さらに、支援装置１００は、ＳＴＡにおいて、所定のタイミング制約に違反していても正常に動作可能なマルチサイクルパスやフォルスパスを、タイミング調整が必要なパスとして検出してしまうことを防止することができる。結果として、支援装置１００は、手戻りが発生しないようにして、回路設計にかかる時間を低減するとともに、回路設計にかかるコストを低減することができる。
【００３５】
また、支援装置１００は、人手でタイミング例外制約を生成する際に発生しうるヒューマンエラーを回避することができる。ヒューマンエラーは、例えば、制約条件を緩和しすぎたり、マルチサイクルパスやフォルスパス以外についてタイミング例外制約を生成したり、マルチサイクルパスやフォルスパスについてタイミング例外制約を生成しなかったりすることである。
【００３６】
また、支援装置１００は、論理シミュレーションによって解析した波形に基づいてタイミング例外制約を生成するため、制約条件を緩和しすぎないようにすることができる。また、支援装置１００は、マルチサイクルパスやフォルスパス以外についてタイミング例外制約を生成したり、マルチサイクルパスやフォルスパスについてタイミング例外制約を生成しないことを抑制することができる。このように、支援装置１００は、ＳＴＡに効果的なタイミング例外制約を生成することができる。ここでは、支援装置１００が、タイミング例外制約に基づいて、ＳＴＡを行う場合について説明したが、これに限らない。例えば、支援装置１００は、タイミング例外制約を、他の演算装置に出力してもよい。そして、他の演算装置が、ＳＴＡを行ってもよい。
【００３７】
（支援装置１００のハードウェア）
次に、図２を用いて、図１に示した支援装置１００のハードウェアの一例について説明する。
【００３８】
図２は、支援装置１００のハードウェアの一例を示すブロック図である。図２において、支援装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、を有する。また、支援装置１００は、さらに、ディスクドライブ２０４と、ディスク２０５と、インターフェース（Ｉ／Ｆ：Ｉｎｔｅｒｆａｃｅ）２０６と、入力装置２０７と、出力装置２０８とを有する。
【００３９】
また、ＣＰＵ２０１と、ＲＯＭ２０２と、ＲＡＭ２０３と、ディスクドライブ２０４と、Ｉ／Ｆ２０６と、入力装置２０７と、出力装置２０８とは、バス２００によってそれぞれ接続される。支援装置１００は、例えば、サーバ、ノート型パソコン、デスクトップ型パソコンなどである。
【００４０】
ここで、ＣＰＵ２０１は、支援装置１００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどの各種プログラムを記憶する。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。また、ＲＡＭ２０３は、各種プログラムの実行により得られたデータなどの各種データを記憶する。
【００４１】
ディスクドライブ２０４は、ＣＰＵ２０１の制御に従ってディスク２０５に対するデータのリードおよびライトを制御する。ディスク２０５は、ディスクドライブ２０４の制御で書き込まれたデータを記憶する。ディスク２０５は、例えば、磁気ディスク、または光ディスクなどである。
【００４２】
Ｉ／Ｆ２０６は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他の装置に接続される。そして、Ｉ／Ｆ２０６は、ネットワーク２１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０６には、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどを採用することができる。
【００４３】
入力装置２０７は、キーボード、タッチパネルなどユーザの操作により、各種データの入力を行うインターフェースである。入力装置２０７は、マウス、スキャナなどであってもよい。出力装置２０８は、ＣＰＵ２０１の指示により、データを出力するインターフェースである。出力装置２０８は、例えば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示するディスプレイである。出力装置２０８は、プリンタであってもよい。
【００４４】
支援装置１００は、入力装置２０７や出力装置２０８の少なくともいずれかを有していなくてもよい。支援装置１００は、さらに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）と半導体メモリとを有していてもよい。支援装置１００は、ディスクドライブ２０４とディスク２０５との代わりに、ＳＳＤと半導体メモリとを有していてもよい。
【００４５】
（支援装置１００の機能的構成例）
次に、図３を用いて、支援装置１００の機能的構成例について説明する。
【００４６】
図３は、支援装置１００の機能的構成例を示すブロック図である。支援装置１００は、制御部となる機能として、取得部３０１と、特定部３０２と、解析部３０３と、算出部３０４と、判定部３０５と、判断部３０６と、生成部３０７とを含む。
【００４７】
取得部３０１は、回路の設計データを取得する。ここで、回路の設計データとは、回路に含まれる要素と、当該要素の属性や性質となどを示すデータである。取得部３０１は、例えば、回路の端子と、当該端子の属性や性質と、当該端子に入出力される信号値となどを示す、図４に後述する論理シミュレーションパターン４００を取得する。また、取得部３０１は、例えば、回路の素子と、素子間の接続関係と、クロック信号の属性となどを示す、図５に後述する論理・クロック情報５００を取得する。これにより、取得部３０１は、タイミング例外制約を生成するか否かの判定やタイミング例外制約の生成に用いる情報を取得することができる。
【００４８】
取得されたデータは、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。取得部３０１は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０６により、その機能を実現する。
【００４９】
特定部３０２は、回路の設計データに基づいて、回路に含まれる複数の素子の中から、パスの始点となる第１の順序回路と、パスの終点となる第２の順序回路とを特定する。ここで、パスとは、タイミング制約を適用する可能性があるタイミングパスＰである。特定部３０２は、例えば、論理・クロック情報５００に基づいて、始点となる順序回路ＦＦ１から終点となる順序回路ＦＦ２までのタイミングパスＰを特定する。これにより、特定部３０２は、タイミング例外制約を生成する可能性があるタイミングパスＰを特定することができる。
【００５０】
特定結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。特定結果は、具体的には、図７に後述するタイミングパス情報７００として、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。特定部３０２は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。
【００５１】
解析部３０３は、設計データに基づいて、複数の素子のそれぞれの素子に入力または出力される信号の波形を解析する。解析部３０３は、論理シミュレーションパターン４００、および論理・クロック情報５００に基づいて、回路に対する論理シミュレーションを実行して、回路上のすべての論理素子について、すべての周期における波形情報６００を生成する。これにより、解析部３０３は、タイミング例外制約を生成するか否かの判定やタイミング例外制約の生成に用いる波形情報６００を生成することができる。
【００５２】
解析結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。解析部３０３は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。
【００５３】
算出部３０４は、解析した波形に基づいて、特定した第１の順序回路に入力される第１のクロック信号のエッジから、特定した第２の順序回路に入力される第２のクロック信号のエッジまでの間隔を算出する。エッジとは、クロック信号の立ち上がりの変化、またはクロック信号の立ち下がりの変化である。
【００５４】
算出部３０４は、例えば、解析した波形のうち、始点となる順序回路ＦＦ１に入力される第１のクロック信号の波形と、終点となる順序回路ＦＦ２に入力される第２のクロック信号の波形とを特定する。そして、算出部３０４は、第１のクロック信号の波形上のエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い第２のクロック信号の波形上のエッジまでの間隔を算出する。これにより、算出部３０４は、ホールドに関する制約条件を緩和可能か否かの判定に用いる情報を算出することができる。
【００５５】
また、算出部３０４は、第１のクロック信号の波形上のエッジから、時間軸上で当該エッジより後方にあり当該エッジに最も近い第２のクロック信号の波形上のエッジまでの間隔を算出してもよい。これにより、算出部３０４は、セットアップに関する制約条件を緩和可能か否かの判定に用いる情報を算出することができる。
【００５６】
算出部３０４は、波形に基づいて、第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジよりも後方にあり当該エッジに最も近い第２のクロック信号のエッジまでの間隔を算出してもよい。算出部３０４は、例えば、解析した波形のうち、始点となる順序回路ＦＦ１に入力される第１のクロック信号の波形と、終点となる順序回路ＦＦ２に入力される第２のクロック信号の波形とを特定する。
【００５７】
そして、算出部３０４は、第１のクロック信号の波形上のそれぞれのエッジから、時間軸上で当該エッジよりも後方にあり当該エッジに最も近い第２のクロック信号の波形上のエッジまでの間隔を算出する。これにより、算出部３０４は、セットアップに関する制約条件を緩和可能か否かの判定に用いる情報を算出することができる。
【００５８】
算出部３０４は、波形に基づいて、第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い第２のクロック信号のエッジまでの間隔を算出してもよい。算出部３０４は、例えば、解析した波形のうち、始点となる順序回路ＦＦ１に入力される第１のクロック信号の波形と、終点となる順序回路ＦＦ２に入力される第２のクロック信号の波形とを特定する。
【００５９】
そして、算出部３０４は、第１のクロック信号の波形上のそれぞれのエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い第２のクロック信号の波形上のエッジまでの間隔を算出する。これにより、算出部３０４は、ホールドに関する制約条件を緩和可能か否かの判定に用いる情報を算出することができる。
【００６０】
算出結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。算出部３０４は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。
【００６１】
判定部３０５は、解析した波形に基づいて、第１の順序回路から出力されるデータ信号が外部端子まで伝搬されるか否かを判定する。判定部３０５は、例えば、論理・クロック情報５００に基づいて、タイミングパスＰの始点となる順序回路ＦＦ１から、接続先となる素子を検索していき、始点となる順序回路ＦＦ１から出力されたデータ信号が外部端子まで伝搬されるか否かを判定する。これにより、判定部３０５は、タイミングパスＰが、フォルスパスであるか否かの判断に用いる、判定結果を取得することができる。
【００６２】
判定部３０５は、算出した間隔が小さい第１のクロック信号のエッジから順に、当該エッジに対応する期間におけるデータ信号が、外部端子まで伝搬されるか否かを判定してもよい。判定部３０５は、例えば、算出した差分が小さい第１のクロック信号のエッジから順に、当該エッジから１クロック周期分の期間におけるデータ信号が、外部端子まで伝搬されるか否かを判定する。これにより、判定部３０５は、タイミングパスＰが、フォルスパスであるか否かの判断に用いる、判定結果を取得することができる。
【００６３】
判定部３０５は、算出した間隔が最小になる第１のクロック信号のエッジに対応する期間におけるデータ信号が、外部端子まで伝搬されるか否かを判定してもよい。これにより、判定部３０５は、タイミングパスＰが、フォルスパスであるか否かの判断にかかる処理量を低減することができる。
【００６４】
判定結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。判定部３０５は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。
【００６５】
判断部３０６は、解析したタイミングパスＰから回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、タイミングパスＰがマルチサイクルパスまたはフォルスパスであるか否かを判断する。マルチサイクルパスとは、始点となる順序回路ＦＦ１と終点となる順序回路ＦＦ２との間で同一クロックエッジまたはより前のクロックエッジで信号を取り込んでもよい、あるいは、始点の順序回路ＦＦ１が遷移したクロックエッジの２クロック周期以上後のクロックエッジで終点の順序回路ＦＦ２が信号を取り込んでもよいパスである。フォルスパスとは、タイミング検証が不要なパスである。マルチサイクルパスやフォルスパスは、所定のタイミング制約に違反していても正常に動作可能なパスである。所定のタイミング制約は、それぞれのパスに原則として一律に適用される基本的な制約条件である。
【００６６】
判断部３０６は、例えば、算出部３０４が算出した間隔、および判定部３０５が判定した結果に基づいて、タイミングパスＰがマルチサイクルパスまたはフォルスパスであるか否かを判断する。判断部３０６は、具体的には、外部端子まで伝搬されると判定した場合に、算出部３０４が算出したセットアップに関する間隔が、回路のクロック信号の２周期分の間隔以上であれば、タイミングパスＰがマルチサイクルパスであると判断する。セットアップに関する間隔とは、第１のクロック信号のエッジから、当該エッジよりも時間軸上で後方にあり当該エッジに最も近い第２のクロック信号のエッジまでの間隔である。これにより、判断部３０６は、タイミングパスＰが、セットアップに関する制約条件を緩和可能なマルチサイクルパスであるか否かを判断することができる。
【００６７】
また、判断部３０６は、具体的には、判定部３０５が外部端子まで伝搬されると判定した都度、伝搬されると判定したエッジについて算出部３０４が算出したセットアップに関する間隔が、回路のクロック信号の２周期分の間隔以上であるか否かを判断する。ここで、判断部３０６は、閾値以上であれば、タイミングパスＰがマルチサイクルパスであると判断する。このとき、判断部３０６は、判定部３０５が、算出した間隔が小さい第１のクロック信号のエッジから順に、判定処理を行っている途中であれば、以降の判定処理を終了させてもよい。これにより、判断部３０６は、タイミングパスＰが、セットアップに関する制約条件を緩和可能なマルチサイクルパスであると判断することができる。
【００６８】
一方で、判断部３０６は、間隔が閾値未満であれば、タイミングパスＰがマルチサイクルパスおよびフォルスパスではないと判断する。これにより、判断部３０６は、タイミングパスＰが、セットアップに関する制約条件を緩和できない通常のパスであると判断することができる。
【００６９】
また、判断部３０６は、具体的には、外部端子まで伝搬されると判定した場合に、算出部３０４が算出したホールドに関する間隔が、回路のクロック信号の１周期分の間隔以上であれば、タイミングパスＰがマルチサイクルパスであると判断する。ホールドに関する間隔とは、第１のクロック信号のエッジから、当該エッジよりも時間軸上で同一あるいは前方にあり当該エッジに最も近い第２のクロック信号のエッジまでの間隔である。これにより、判断部３０６は、タイミングパスＰが、ホールドに関する制約条件を緩和可能なマルチサイクルパスであるか否かを判断することができる。
【００７０】
また、判断部３０６は、具体的には、判定部３０５が外部端子まで伝搬されると判定した都度、伝搬されると判定したエッジについて算出部３０４が算出したホールドに関する間隔が、回路のクロック信号の１周期分の間隔以上であるか否かを判断する。ここで、判断部３０６は、閾値以上であれば、タイミングパスＰがマルチサイクルパスであると判断する。このとき、判断部３０６は、判定部３０５が、算出した間隔が小さい第１のクロック信号のエッジから順に、判定処理を行っている途中であれば、以降の判定処理を終了させてもよい。これにより、判断部３０６は、タイミングパスＰが、ホールドに関する制約条件を緩和可能なマルチサイクルパスであると判断することができる。
【００７１】
一方で、判断部３０６は、間隔が閾値未満であれば、タイミングパスＰがマルチサイクルパスおよびフォルスパスではないと判断する。これにより、判断部３０６は、タイミングパスＰが、ホールドに関する制約条件を緩和できない通常のパスであると判断することができる。
【００７２】
また、判断部３０６は、間隔が算出されない場合、タイミングパスＰがフォルスパスであると判断してもよい。判断部３０６は、例えば、第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジよりも後方に、第２のクロック信号のエッジが存在しない場合に、タイミングパスＰが、セットアップに関する制約条件を無効化可能なフォルスパスであると判断する。
【００７３】
また、判断部３０６は、第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジ以前に、第２のクロック信号のエッジが存在しない場合に、タイミングパスＰが、ホールドに関する制約条件を無効化可能なフォルスパスであると判断する。これにより、判断部３０６は、タイミングパスＰが、セットアップまたはホールドに関する制約条件を無効化可能なフォルスパスであると判断することができる。
【００７４】
判断部３０６は、それぞれのエッジに対応する期間におけるデータ信号が、外部端子まで伝搬しないと判定したか、または、期待値が設定されていない外部端子に伝搬されると判定した場合に、パスがフォルスパスであると判断する。これにより、判断部３０６は、タイミングパスＰが、セットアップまたはホールドに関する制約条件を無効化可能なフォルスパスであると判断することができる。
【００７５】
判断結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。判断部３０６は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。
【００７６】
生成部３０７は、タイミングパスＰが、マルチサイクルパスまたはフォルスパスであると判断した場合には、タイミングパスＰのタイミング例外制約を生成する。生成部３０７は、例えば、マルチサイクルパスであると判断した場合には、算出部３０４が算出した間隔に基づいてパスの制約条件を緩和するタイミング例外制約を生成する。
【００７７】
また、生成部３０７は、例えば、フォルスパスであると判断した場合には、パスの制約条件を無効化するタイミング例外制約を生成する。これにより、生成部３０７は、タイミング例外制約を自動生成することができ、ＳＴＡの手戻りを抑制することができる。
【００７８】
生成したデータは、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。生成部３０７は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０６により、その機能を実現する。
【００７９】
（タイミング例外制約を生成する実施例）
次に、図４〜図１８を用いて、支援装置１００がタイミング例外制約を生成する実施例について説明する。
【００８０】
＜支援装置１００が論理シミュレーションパターン４００を取得する一例＞
実施例において、支援装置１００は、図４に示す論理シミュレーションパターン４００を取得する。支援装置１００は、例えば、入力装置２０７を介して、図４に示す論理シミュレーションパターン４００を受け付けることにより、論理シミュレーションパターン４００を取得してもよい。支援装置１００は、論理シミュレーションパターン４００を取得すると、論理シミュレーションパターン４００を、ＲＡＭ２０３、ディスク２０５などに記憶する。ここで、図４の説明に移り、論理シミュレーションパターン４００のデータ構造について説明する。
【００８１】
図４は、論理シミュレーションパターン４００のデータ構造の一例を示す説明図である。図４の例では、論理シミュレーションパターン４００は、チップ端子のリストを含む。チップ端子は、回路が有する、回路に信号を入出力する外部端子である。
【００８２】
また、論理シミュレーションパターン４００は、チップ端子グループのリストを含む。チップ端子グループは、種類ごとにグループ分けされた外部端子である。外部端子の種類は、例えば、入力端子、出力端子、双方向端子などである。
【００８３】
また、論理シミュレーションパターン４００は、チップ端子グループごとの波形変化タイミング定義を含む。波形変化タイミング定義は、クロック周期と、クロック周期内の入力端子のデータ変化タイミングと、クロック周期内の入力端子の立ち上がりエッジと立ち下がりエッジとのタイミングと、クロック周期内の出力端子の期待値の比較タイミングとを含む。
【００８４】
また、論理シミュレーションパターン４００は、チップ端子グループごとのすべての信号値と期待値とのパターンを含む。すべての信号値と期待値とのパターンは、すべての入力端子・双方向端子の周期ごとに入力される信号値のリストと、すべての出力端子・双方向端子の周期ごとに出力される信号値と比較する期待値のリストとを含む。
【００８５】
＜支援装置１００が論理・クロック情報５００を取得する一例＞
実施例の説明に戻り、支援装置１００は、論理・クロック情報５００を取得する。支援装置１００は、例えば、入力装置２０７を介して、図５に示す論理・クロック情報５００を受け付けることにより、論理・クロック情報５００を取得してもよい。支援装置１００は、論理・クロック情報５００を取得すると、論理・クロック情報５００を、ＲＡＭ２０３、ディスク２０５などに記憶する。ここで、図５の説明に移り、論理・クロック情報５００のデータ構造について説明する。
【００８６】
図５は、論理・クロック情報５００のデータ構造の一例を示す説明図である。図５の例では、論理・クロック情報５００は、論理情報を含む。論理情報は、回路内のモジュールに付されたモジュール名と、モジュールが有するモジュール端子との組み合わせを含む。論理情報は、モジュール内のインスタンスに付されたインスタンス名と、インスタンスが有するインスタンス端子との組み合わせを含む。インスタンスは、回路素子である。論理情報は、インスタンス端子の間の接続情報を含む。
【００８７】
論理・クロック情報５００は、セルライブラリを含む。セルライブラリは、セルの機能情報と、セルが有するセル端子の機能情報とを含む。論理・クロック情報５００は、クロック情報を含む。クロック情報は、クロック信号が入力される外部端子などの端子情報と、クロック信号間の同期関係とを含む。
【００８８】
＜支援装置１００が論理シミュレーションを実行する一例＞
実施例の説明に戻り、支援装置１００は、取得した論理シミュレーションパターン４００、および論理・クロック情報５００に基づいて、回路に対する論理シミュレーションを実行する。支援装置１００は、例えば、既存の回路シミュレーションツールを用いて回路シミュレーションを実行して、チップ上のすべての論理素子について、すべての周期における波形情報６００を生成する。支援装置１００は、生成した波形情報６００を、ＲＡＭ２０３、ディスク２０５などに記憶する。ここで、図６の説明に移り、波形情報６００のデータ構造について説明する。
【００８９】
図６は、波形情報６００のデータ構造の一例を示す説明図である。図６の例では、波形情報６００は、チップ端子およびインスタンス端子のすべての端子のリストを含む。すべての端子のリストとは、回路の外部端子と、回路のモジュール内のインスタンスのインスタンス端子とのリストである。波形情報６００は、すべての端子の時間ごとの信号値のリストを含む。すべての端子の時間ごとの信号値のリストとは、すべての端子に入力または出力される信号の時間軸上の波形である。すべての端子の時間ごとの信号値のリストは、端子間の接続情報と、信号変化点ごとの信号値のリストとを含む。
【００９０】
＜支援装置１００がタイミングパスＰを特定する一例＞
実施例の説明に戻り、支援装置１００は、取得した論理・クロック情報５００に基づいて、タイミングパスＰを特定する。支援装置１００は、例えば、論理・クロック情報５００のうち、論理情報と、セルライブラリとに基づいて、タイミングパスＰの始点となる順序回路ＦＦ１として選択した任意の順序回路の出力端子から、当該順序回路の接続先となるインスタンスを検索する。
【００９１】
ここで、支援装置１００は、検索した接続先となるインスタンスが順序回路でない場合には、さらに、当該インスタンスの出力端子から、当該インスタンスの接続先となる他のインスタンスを検索する動作を、順次繰り返す。一方で、支援装置１００は、接続先となるインスタンスが順序回路である場合には、当該インスタンスを、タイミングパスＰの終点となる順序回路ＦＦ２として選択する。
【００９２】
以下の説明では、始点となる順序回路ＦＦ１を「始点順序回路ＦＦ１」と表記する場合がある。以下の説明では、終点となる順序回路ＦＦ２を「終点順序回路ＦＦ２」と表記する場合がある。そして、支援装置１００は、始点順序回路ＦＦ１から、終点順序回路ＦＦ２までの経路を、タイミングパスＰとして特定する。
【００９３】
ここでは、支援装置１００が、論理・クロック情報５００に基づいて、タイミングパスＰを特定する場合について説明したが、これに限らない。例えば、支援装置１００は、既存のＳＴＡツールを、クロック信号に関する条件を設定して実行することにより、タイミングパスＰを特定してもよい。
【００９４】
支援装置１００は、タイミングパスＰを特定すると、特定したタイミングパスＰの始点順序回路ＦＦ１と終点順序回路ＦＦ２とを示すタイミングパス情報７００を生成する。支援装置１００は、生成したタイミングパス情報７００を、ＲＡＭ２０３、ディスク２０５などに記憶する。ここで、図７の説明に移り、タイミングパス情報７００のデータ構造について説明する。
【００９５】
図７は、タイミングパス情報７００のデータ構造の一例を示す説明図である。図７の例では、タイミングパス情報７００は、すべての始点と終点のインスタンス端子対のリストを含む。インスタンス端子対は、タイミングパスＰごとに、タイミングパスＰの始点順序回路ＦＦ１と終点順序回路ＦＦ２とのそれぞれにおいてクロック信号が入力されるインスタンス端子に付されたインスタンス端子名の対を含む。端子対は、タイミングパスＰごとに、タイミングパスＰの始点順序回路ＦＦ１と終点順序回路ＦＦ２とのそれぞれに入力されるクロック信号の情報の対を含む。
【００９６】
＜支援装置１００がタイミングパスＰを削除する一例＞
実施例の説明に戻り、支援装置１００は、論理・クロック情報５００のうち、クロック情報に基づいて、タイミングパスＰの始点順序回路ＦＦ１と終点順序回路ＦＦ２とに、互いに非同期関係にあるクロック信号が入力されるか否かを判定する。そして、支援装置１００は、互いに非同期関係にあるクロック信号が入力されると判定した始点順序回路ＦＦ１と終点順序回路ＦＦ２とのインスタンス端子対を、タイミングパス情報７００から削除する。
【００９７】
＜支援装置１００が何の種類に関する制約条件を検証するかを決定する一例＞
支援装置１００は、セットアップに関する制約条件を緩和可能であるか否かを検証するか、ホールドに関する制約条件を緩和可能であるか否かを検証するかを決定する。支援装置１００は、例えば、セットアップ、またはホールドのいずれかの種類を選択する。
【００９８】
以下では、支援装置１００が、セットアップを選択した場合について説明する。支援装置１００は、セットアップを選択して、以下に説明する処理を行った後に、ホールドを選択して、再び以下に説明する処理と同様の処理を行ってもよい。
【００９９】
＜支援装置１００が制約条件を検証するタイミングパスＰを選択する一例＞
支援装置１００は、タイミングパス情報７００に基づいて、タイミングパスＰのいずれかを選択する。支援装置１００は、タイミングパスＰを選択して、以下に説明する処理を行った後に、未選択のタイミングパスＰを選択し直して、再び、以下に説明する処理と同様の処理を行ってもよい。ここで、図８の説明に移り、支援装置１００が、選択したタイミングパスＰの波形を特定する一例について説明する。
【０１００】
＜支援装置１００がタイミングパスＰの波形を特定する一例＞
図８は、タイミングパスＰの波形を特定する一例を示す説明図である。図８において、支援装置１００は、波形情報６００が示す複数の波形８００の中から、選択したタイミングパスＰの始点順序回路ＦＦ１に入力されるクロック信号の波形と、終点順序回路ＦＦ２に入力されるクロック信号の波形とのペア８１０を特定する。
【０１０１】
以下の説明では、始点順序回路ＦＦ１に入力されるクロック信号を「始点クロック信号」と表記する場合がある。以下の説明では、終点順序回路ＦＦ２に入力されるクロック信号を「終点クロック信号」と表記する場合がある。ここで、図９の説明に移り、支援装置１００が、エッジ間の間隔を算出する一例について説明する。
【０１０２】
＜支援装置１００がエッジ間の間隔を算出する一例＞
図９は、エッジ間の間隔を算出する一例を示す説明図である。図９において、支援装置１００は、特定した始点クロック信号の波形に基づいて、始点クロック信号のそれぞれのエッジを選択する。
【０１０３】
支援装置１００は、セットアップを選択している場合には、特定した終点クロック信号の波形に基づいて、選択した始点クロック信号のエッジから、時間軸上で当該エッジよりも後方にあり当該エッジに最も近い終点クロック信号のエッジまでの間隔を算出する。支援装置１００は、選択した始点クロック信号のエッジから、時間軸上で当該エッジよりも後方に、終点クロック信号のエッジが存在しない場合には、間隔として「∞」を算出してもよい。
【０１０４】
図９の例では、支援装置１００は、例えば、先頭から３，１２クロック周期目の区間にある始点クロック信号のエッジについて、間隔「２クロック周期」を算出する。また、支援装置１００は、例えば、先頭から８，９，１１クロック周期目の区間にある始点クロック信号のエッジについて、間隔「１クロック周期」を算出する。
【０１０５】
また、支援装置１００は、ホールドを選択している場合には、特定した終点クロック信号の波形に基づいて、選択した始点クロック信号のエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い終点クロック信号のエッジまでの間隔を算出する。支援装置１００は、選択した始点クロック信号のエッジから、時間軸上で当該エッジよりも前方に、終点クロック信号のエッジが存在しない場合には、間隔として「∞」を算出してもよい。
【０１０６】
図９の例では、支援装置１００は、例えば、先頭から３，９，１１，１２，１４クロック周期目の区間にある始点クロック信号のエッジについて、間隔「０クロック周期」を算出する。また、支援装置１００は、例えば、先頭から８クロック周期目の区間にある始点クロック信号のエッジについて、間隔「１クロック周期」を算出する。以下の説明では、エッジ間の間隔を「周期差分」と表記する場合がある。
【０１０７】
＜支援装置１００がデータ信号の伝搬状況を検証する一例＞
支援装置１００は、絶対値が最小になる周期差分を選択する。支援装置１００は、例えば、周期差分「１クロック周期」を選択する。支援装置１００は、周期差分を選択して、以下に説明する処理を行った後に、次に絶対値が小さい周期差分を選択し直して、再び、以下に説明する処理と同様の処理を行ってもよい。
【０１０８】
支援装置１００は、選択した周期差分に対応する１クロック周期分の区間を選択する。支援装置１００は、例えば、先頭から８，９，１１クロック周期目の区間のうち、いずれかの区間を選択する。支援装置１００は、いずれかの区間を選択して、以下に説明する処理を行った後に、他の区間を選択し直して、同様の処理を行い、最終的に該当する全ての区間に対して処理を行う。
【０１０９】
支援装置１００は、選択した区間にある始点クロック信号のエッジにより始点順序回路ＦＦ１から出力された、選択した区間におけるデータ信号が、回路の外部端子まで伝搬するか否かを判定する。以下の説明では、始点順序回路ＦＦ１から出力されたデータ信号を「始点データ信号」と表記する場合がある。ここで、図１０の説明に移り、支援装置１００が、始点データ信号の伝搬状況を検証する一例について説明する。
【０１１０】
図１０は、始点データ信号の終点順序回路ＦＦ２までの伝搬状況を検証する一例を示す説明図である。図１０において、支援装置１００は、波形情報６００と論理情報とに基づいて、選択した区間における始点データ信号が、終点順序回路ＦＦ２まで伝搬するか否かを検証する。
【０１１１】
支援装置１００は、例えば、論理情報に基づいて、始点順序回路ＦＦ１の出力端子から、始点順序回路ＦＦ１の接続先となるインスタンスを検索する。支援装置１００は、論理情報のうちの検索したインスタンスのセル機能と、波形情報６００のうちの検索したインスタンスに入出力された信号値とに基づいて、選択した区間における始点データ信号が当該インスタンス以降に伝搬するか否かを判定する。
【０１１２】
支援装置１００は、伝搬すると判定した場合には、検索したインスタンスの出力端子から、当該インスタンスの接続先となる他のインスタンスを検索する動作を、順次繰り返す。そして、支援装置１００は、選択した区間における始点データ信号が、終点順序回路ＦＦ２以降に伝搬するか否かを判定する。
【０１１３】
支援装置１００は、具体的には、終点クロック信号の波形に基づいて、選択した区間以降における終点クロック信号のエッジが存在するか否かを判定する。支援装置１００は、存在しないと判定した場合に、選択した区間における始点データ信号が、終点順序回路ＦＦ２以降に伝搬しないと判断する。この場合、支援装置１００は、タイミングパスＰが当該区間においてはフォルスパスであると判断し、タイミングパスＰのタイミング制約のうち、セットアップに関する制約条件、およびホールドに関する制約条件を当該区間においては無効化可能であると判断する。
【０１１４】
また、支援装置１００は、具体的には、終点順序回路ＦＦ２に入力されるデータ信号の波形に基づいて、選択した区間以降において、終点順序回路ＦＦ２に入力されるデータ信号が変化するか否かを判定する。支援装置１００は、変化しないと判定した場合に、選択した区間における始点データ信号が、終点順序回路ＦＦ２に伝搬されるまでに他のインスタンスにより停止されたとして、終点順序回路ＦＦ２以降に伝搬しないと判断する。この場合、支援装置１００は、タイミングパスＰがセットアップに関して当該区間においてはフォルスパスであると判断し、タイミングパスＰのタイミング制約のうち、セットアップに関する制約条件を当該区間においては無効化可能であると判断する。
【０１１５】
次に、支援装置１００は、図１０を用いて説明した、終点順序回路ＦＦ２以降に伝搬するか否かを判定した動作と同様にして、タイミングパスＰから外部端子まで伝搬するか否かを判定する。ここで、図１１の説明に移り、タイミングパスＰから外部端子までにある素子の一例について説明する。
【０１１６】
図１１は、タイミングパスＰから外部端子までにある素子の一例を示す説明図（その１）である。図１１の例では、タイミングパスＰの終点順序回路ＦＦ２の出力端子Ｚから、論理積回路ＡＮＤ１の入力端子Ｂ、および順序回路ＦＦ３の入力端子Ｄまでが、導線によって接続されている。また、順序回路ＦＦ３の出力端子Ｚから、論理積回路ＡＮＤ２の入力端子Ａまでが、導線によって接続されている。
【０１１７】
また、論理積回路ＡＮＤ２の出力端子Ｚから、外部端子ＯＵＴ１、順序回路ＦＦ４の入力端子Ｄ、および順序回路ＦＦ５の入力端子Ｄまでが、導線によって接続されている。また、順序回路ＦＦ５の出力端子Ｚから、外部端子ＯＵＴ２までが、導線によって接続されている。
【０１１８】
図１１の例では、論理積回路ＡＮＤ１の入力端子Ａには、常に「０」が入力されている。論理積回路ＡＮＤ２の入力端子Ｂには、常に「０」が入力されている。順序回路ＦＦ４には、クロック信号として、論理和回路ＯＲ１の出力端子Ｚからの信号が入力されている。ここで、図１２の説明に移り、支援装置１００が、図１１に示したそれぞれの素子について、データ信号の伝搬状況を検証する一例について説明する。
【０１１９】
図１２は、図１１に示したそれぞれの素子の波形の一例を示す説明図である。図１２に示すように、論理積回路ＡＮＤ１は、入力端子Ｂに終点順序回路ＦＦ２から出力されたデータ信号が入力されるが、入力端子Ａに常に「０」が入力されているため、出力端子Ｚ以降にはデータ信号を伝搬させない。同様に、論理積回路ＡＮＤ２は、入力端子Ａに終点順序回路ＦＦ２から出力され、順序回路ＦＦ３を経由したデータ信号が入力されるが、入力端子Ｂに常に「０」が入力されているため、出力端子Ｚ以降にはデータ信号を伝搬させない。
【０１２０】
このため、支援装置１００は、論理積回路ＡＮＤ２以降の素子を検証しなくても、終点順序回路ＦＦ２から出力されたデータ信号が、外部端子まで伝搬しないと判定する。この場合、支援装置１００は、タイミングパスＰがセットアップに関して当該区間においてはフォルスパスであると判断し、タイミングパスＰのタイミング制約のうち、セットアップに関する制約条件を当該区間においては無効化可能であると判断する。ここで、図１３の説明に移り、図１１とは異なる、タイミングパスＰから外部端子までにある素子の一例について説明する。
【０１２１】
図１３は、タイミングパスＰから外部端子までにある素子の一例を示す説明図（その２）である。図１３の例では、図１１と同様の要素については説明を省略する。図１３の例では、論理積回路ＡＮＤ１の入力端子Ａには、常に「０」が入力されている。論理積回路ＡＮＤ２の入力端子Ｂには、図１１とは異なり、「０」か「１」が入力される。
【０１２２】
論理和回路ＯＲ１の入力端子Ｂには、常に「１」が入力されている。順序回路ＦＦ４には、クロック信号として、常に「１」となる、論理和回路ＯＲ１の出力端子Ｚからの信号が入力されている。外部端子ＯＵＴ１、ＯＵＴ２には、期待値が設定されていない。ここで、図１４の説明に移り、支援装置１００が、図１３に示したそれぞれの素子について、データ信号の伝搬状況を検証する一例について説明する。
【０１２３】
図１４は、図１３に示したそれぞれの素子の波形の一例を示す説明図である。図１４に示すように、論理積回路ＡＮＤ１は、入力端子Ｂに終点順序回路ＦＦ２から出力されたデータ信号が入力されるが、入力端子Ａに常に「０」が入力されているため、出力端子Ｚ以降にはデータ信号を伝搬させない。
【０１２４】
論理積回路ＡＮＤ２は、図１１とは異なり、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３を経由したデータ信号を、出力端子Ｚ以降に伝搬させる。論理積回路ＡＮＤ２は、具体的には、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３を経由したデータ信号を、外部端子ＯＵＴ１、順序回路ＦＦ４、順序回路ＦＦ５に伝搬させる。
【０１２５】
順序回路ＦＦ４は、クロック信号が固定されているため、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３と論理積回路ＡＮＤ２とを経由したデータ信号を、出力端子Ｚ以降に伝搬させない。順序回路ＦＦ５は、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３と論理積回路ＡＮＤ２とを経由したデータ信号を、出力端子Ｚ以降に伝搬させる。順序回路ＦＦ５は、具体的には、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３と論理積回路ＡＮＤ２とを経由したデータ信号を、外部端子ＯＵＴ２に伝搬させる。
【０１２６】
このため、支援装置１００は、終点順序回路ＦＦ２から出力されたデータ信号が、外部端子まで伝搬すると判定する。この場合、支援装置１００は、伝搬した外部端子に期待値が設定されているか否かを判定する。ここで、支援装置１００は、期待値が設定された外部端子がないため、タイミングパスＰがセットアップに関して当該区間においてはフォルスパスであると判断し、タイミングパスＰのタイミング制約のうち、セットアップに関する制約条件を当該区間においては無効化可能であると判断する。ここで、図１５の説明に移り、図１１および図１３とは異なる、タイミングパスＰから外部端子までにある素子の一例について説明する。
【０１２７】
図１５は、タイミングパスＰから外部端子までにある素子の一例を示す説明図（その３）である。図１５の例では、図１３と同様の要素については説明を省略する。図１５の例では、外部端子ＯＵＴ１には、期待値が設定されていない。外部端子ＯＵＴ２には、図１３とは異なり、期待値が設定されている。ここで、図１６の説明に移り、支援装置１００が、図１５に示したそれぞれの素子について、データ信号の伝搬状況を検証する一例について説明する。
【０１２８】
図１６は、図１５に示したそれぞれの素子の波形の一例を示す説明図である。図１６に示すように、論理積回路ＡＮＤ１は、入力端子Ｂに終点順序回路ＦＦ２から出力されたデータ信号が入力されるが、入力端子Ａに常に「０」が入力されているため、出力端子Ｚ以降にはデータ信号を伝搬させない。
【０１２９】
論理積回路ＡＮＤ２は、図１１とは異なり、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３を経由したデータ信号を、出力端子Ｚ以降に伝搬させる。論理積回路ＡＮＤ２は、具体的には、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３を経由したデータ信号を、外部端子ＯＵＴ１、順序回路ＦＦ４、順序回路ＦＦ５に伝搬させる。
【０１３０】
順序回路ＦＦ４は、クロック信号が固定されているため、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３と論理積回路ＡＮＤ２とを経由したデータ信号を、出力端子Ｚ以降に伝搬させない。順序回路ＦＦ５は、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３と論理積回路ＡＮＤ２とを経由したデータ信号を、出力端子Ｚ以降に伝搬させる。順序回路ＦＦ５は、具体的には、終点順序回路ＦＦ２から出力され、順序回路ＦＦ３と論理積回路ＡＮＤ２とを経由したデータ信号を、外部端子ＯＵＴ２に伝搬させる。
【０１３１】
このため、支援装置１００は、終点順序回路ＦＦ２から出力されたデータ信号が、外部端子まで伝搬すると判定する。この場合、支援装置１００は、伝搬した外部端子に期待値が設定されているか否かを判定する。ここで、支援装置１００は、期待値が設定された外部端子があるため、タイミングパスＰがセットアップに関してフォルスパスではないと判断する。
【０１３２】
また、支援装置１００は、期待値が設定された外部端子があるため、選択中の周期差分が「２クロック周期」以上であるか否かを判定する。ここで、支援装置１００は、選択中の周期差分が「２クロック周期」以上である場合には、タイミングパスＰがセットアップに関してマルチサイクルパスであると判断し、タイミングパスＰのタイミング制約のうち、セットアップに関する制約条件を、当該区間においては緩和可能であると判断する。
【０１３３】
そして、支援装置１００は、選択中の周期差分に基づいて、タイミングパスＰのタイミング制約のうち、セットアップに関する制約条件を緩和または無効化するタイミングパスＰのタイミング例外制約を生成する。支援装置１００は、例えば、すべての区間において緩和可能、または、すべての区間において緩和可能と無効化可能とが混在すると判断した場合には、選択中の周期差分に基づいて制約条件を緩和するタイミング例外制約を生成する。また、支援装置１００は、例えば、すべての区間において無効化可能と判断した場合には、制約条件を無効化するタイミング例外制約を生成する。ここで、図１７の説明に移り、支援装置１００が、周期差分に基づいてタイミング例外制約を生成する一例について説明する。
【０１３４】
＜支援装置１００が周期差分に基づいてタイミング例外制約を生成する一例＞
図１７は、周期差分に基づいてタイミング例外制約を生成する一例を示す説明図である。支援装置１００は、例えば、図１７の波形１７０１のように、セットアップに関して、選択中の周期差分が「１クロック周期」であって、閾値「２クロック周期」未満である場合には、タイミング例外制約を生成しない。また、支援装置１００は、例えば、図１７の波形１７０１のように、ホールドに関して、選択中の周期差分が「０クロック周期」であって、閾値「１クロック周期」未満である場合には、タイミング例外制約を生成しない。
【０１３５】
また、支援装置１００は、例えば、図１７の波形１７０２のように、セットアップに関して、選択中の周期差分が「２クロック周期」であって、閾値「２クロック周期」以上である場合には、タイミング例外制約を生成する。支援装置１００は、具体的には、制約条件を緩和して、終点の順序回路が信号をセットアップするまでの期間が周期差分「２クロック周期」以内になる制約条件を適用すればよいと判断する。そして、支援装置１００は、タイミングパスＰが、信号をセットアップするまでの期間が周期差分「２クロック周期」以内になる、緩和された制約条件を適用すればよいマルチサイクルパスであることを規定するタイミング例外制約を生成する。
【０１３６】
また、支援装置１００は、例えば、図１７の波形１７０２のように、ホールドに関して、選択中の周期差分が「１クロック周期」であって、閾値「１クロック周期」以上である場合には、タイミング例外制約を生成する。支援装置１００は、具体的には、制約条件を緩和して、終点の順序回路が信号をセットアップするまでの期間が周期差分「１クロック周期」＋「１クロック周期」以内になる制約条件を適用すればよいと判断する。そして、支援装置１００は、タイミングパスＰが、信号をセットアップするまでの期間が「２クロック周期」以内になる、緩和された制約条件を適用すればよいマルチサイクルパスであることを規定するタイミング例外制約を生成する。
【０１３７】
また、支援装置１００は、例えば、図１７の波形１７０３のように、セットアップに関して、選択中の周期差分が「２クロック周期」であって、閾値「２クロック周期」以上である場合には、タイミング例外制約を生成する。支援装置１００は、具体的には、タイミングパスＰが、信号をセットアップするまでの期間が周期差分「２クロック周期」以内になる、緩和された制約条件を適用すればよいマルチサイクルパスであることを規定するタイミング例外制約を生成する。
【０１３８】
また、支援装置１００は、例えば、図１７の波形１７０３のように、ホールドに関して、選択中の周期差分が「∞」である場合には、タイミング例外制約を生成する。支援装置１００は、具体的には、ホールドに関する制約条件を無効化してよいと判断する。そして、支援装置１００は、タイミングパスＰが、ホールドに関する制約条件を無効化してもよいフォルスパスであることを規定するタイミング例外制約を生成する。
【０１３９】
また、支援装置１００は、例えば、図１７の波形１７０４のように、セットアップに関して、選択中の周期差分が「∞」である場合には、タイミング例外制約を生成する。支援装置１００は、具体的には、セットアップに関する制約条件を無効化してもよいと判断する。そして、支援装置１００は、タイミングパスＰが、セットアップに関する制約条件を無効化してもよいフォルスパスであることを規定するタイミング例外制約を生成する。
【０１４０】
また、支援装置１００は、例えば、図１７の波形１７０４のように、ホールドに関して、選択中の周期差分が「０クロック周期」であって、閾値「１クロック周期」未満である場合には、タイミング例外制約を生成しない。
【０１４１】
始点クロック信号のエッジのうち、算出した周期差分が小さくなるエッジの方が、制約条件を満たすことが相対的に難しい。支援装置１００は、絶対値が最小の周期差分から順に選択しているため、選択中の周期差分に基づいてタイミング例外制約を生成した場合には、緩和可能な範囲で最も厳しい制約条件を設定することができる。これにより、支援装置１００は、制約条件を緩和しすぎることを防止することができる。ここで、図１８の説明に移り、タイミング例外制約のデータ構造の一例について説明する。
【０１４２】
＜タイミング例外制約１８００のデータ構造の一例＞
図１８は、タイミング例外制約１８００のデータ構造の一例を示す説明図である。タイミング例外制約１８００は、所定のタイミング制約を適用しなくてもよいフォルスパスを示すフォルス制約と、所定のタイミング制約を適用しなくてもよいマルチサイクルパスを示すマルチサイクル制約とを含む。
【０１４３】
フォルス制約は、フォルスパスの始点順序回路ＦＦ１を示す情報として、始点順序回路ＦＦ１のクロック信号の入力端子に付された端子名を含む。フォルス制約は、フォルスパスの終点順序回路ＦＦ２を示す情報として、終点順序回路ＦＦ２のデータ信号の入力端子に付された端子名を含む。フォルス制約は、セットアップかホールドのいずれの種類に関する制約条件を無効化可能であるかを示す情報として、セットアップ／ホールド種類を含む。
【０１４４】
マルチサイクル制約は、マルチサイクルパスの始点順序回路ＦＦ１を示す情報として、始点順序回路ＦＦ１のクロック信号の入力端子に付された端子名を含む。マルチサイクル制約は、マルチサイクルパスの終点順序回路ＦＦ２を示す情報として、終点順序回路ＦＦ２のデータ信号の入力端子に付された端子名を含む。マルチサイクル制約は、セットアップかホールドのいずれの種類に関する制約条件を緩和可能であるかを示す情報として、セットアップ／ホールド種類を含む。マルチサイクル制約は、緩和した制約条件において、終点順序回路ＦＦ２のホールド検証エッジを前方に移動したクロック周期の数、または終点順序回路ＦＦ２のセットアップ検証エッジを後方に移動したクロック周期の数を含む。ここで、図１９の説明に移り、支援装置１００が、タイミング例外制約１８００を生成したうえで、ＳＴＡを行う一例について説明する。
【０１４５】
＜支援装置１００がＳＴＡを行う一例＞
図１９は、ＳＴＡを行う一例を示す説明図である。図１９の例では、タイミングパスＰにおいて始点順序回路ＦＦ１からの信号が終点順序回路ＦＦ２に到達するまでの期間が周期差分「３クロック周期」以内になればよいマルチサイクルパスであることを規定するタイミング例外制約１８００が生成されているとする。ここで、タイミングパスＰは、所定のタイミング制約に違反してしまう疑似違反のパスであるが、所定のタイミング制約を満たさなくても正常に動作することができるとする。
【０１４６】
支援装置１００は、タイミングパスＰについては、所定のタイミング制約を適用せず、緩和されたタイミング制約を適用する。ここで、支援装置１００は、始点クロック信号のエッジから、３クロック周期以内に、終点クロック信号のエッジがあるため、タイミング制約に違反しないと判断する。
【０１４７】
このように、支援装置１００は、それぞれのパスに所定のタイミング制約を適用する場合には、所定のタイミング制約に違反する、タイミング調整が必要なパスとして検出されてしまうタイミングパスＰを、検出しないようにすることができる。このため、支援装置１００は、ＳＴＡの手戻りを抑制し、回路設計の効率化を図ることができる。
【０１４８】
（生成処理手順の一例）
次に、図２０および図２１を用いて、支援装置１００が実行する、生成処理手順の一例について説明する。
【０１４９】
図２０および図２１は、生成処理手順の一例を示すフローチャートである。図２０において、支援装置１００は、論理シミュレーションを実行する（ステップＳ２００１）。次に、支援装置１００は、タイミングパスＰを特定する（ステップＳ２００２）。そして、支援装置１００は、それぞれのタイミングパスＰのエッジの周期差分を算出する（ステップＳ２００３）。
【０１５０】
次に、支援装置１００は、セットアップ、またはホールドのいずれかの種類を選択する（ステップＳ２００４）。そして、支援装置１００は、いずれかのタイミングパスＰを選択する（ステップＳ２００５）。次に、支援装置１００は、絶対値が最小になる周期差分を選択する（ステップＳ２００６）。そして、支援装置１００は、選択した周期差分に対応する、いずれかの周期を選択する（ステップＳ２００７）。
【０１５１】
次に、支援装置１００は、選択したいずれかの周期におけるデータ信号の伝搬状況を検証する（ステップＳ２００８）。そして、支援装置１００は、外部端子まで伝搬されたか否かを判定する（ステップＳ２００９）。
【０１５２】
ここで、外部端子まで伝搬しない場合（ステップＳ２００９：Ｎｏ）、支援装置１００は、図２１のステップＳ２１０１の処理に移行する。一方で、外部端子まで伝搬される場合（ステップＳ２００９：Ｙｅｓ）、支援装置１００は、外部端子に期待値が設定されているか否かを判定する（ステップＳ２０１０）。
【０１５３】
ここで、設定されていない場合（ステップＳ２０１０：Ｎｏ）、支援装置１００は、ステップＳ２１０１の処理に移行する。一方で、設定されている場合（ステップＳ２０１０：Ｙｅｓ）、支援装置１００は、選択した周期差分が閾値以上であるか否かを判定する（ステップＳ２０１１）。
【０１５４】
ここで、閾値以上である場合（ステップＳ２０１１：Ｙｅｓ）、支援装置１００は、図２１のステップＳ２１０６の処理に移行する。一方で、閾値未満である場合（ステップＳ２０１１：Ｎｏ）、支援装置１００は、図２１のステップＳ２１０７の処理に移行する。次に、図２１の説明に移行する。
【０１５５】
図２１において、支援装置１００は、ステップＳ２００９の処理、またはステップＳ２０１０の処理から、ステップＳ２１０１の処理に移行した場合、すべての周期を選択したか否かを判定する（ステップＳ２１０１）。
【０１５６】
ここで、未選択の周期がある場合（ステップＳ２１０１：Ｎｏ）、支援装置１００は、次の周期を選択して（ステップＳ２１０２）、図２０のステップＳ２００８の処理に移行する。一方で、すべての周期を選択した場合（ステップＳ２１０１：Ｙｅｓ）、支援装置１００は、すべての周期差分を選択したか否かを判定する（ステップＳ２１０３）。
【０１５７】
ここで、未選択の周期差分がある場合（ステップＳ２１０３：Ｎｏ）、支援装置１００は、選択中の周期差分の次に絶対値が小さい他の周期差分を選択して（ステップＳ２１０４）、図２０のステップＳ２００７の処理に移行する。一方で、すべての周期差分を選択した場合（ステップＳ２１０３：Ｙｅｓ）、支援装置１００は、フォルスパスのタイミング例外制約を生成して（ステップＳ２１０５）、ステップＳ２１０７の処理に移行する。
【０１５８】
また、支援装置１００は、ステップＳ２０１１の処理から、ステップＳ２１０６の処理に移行した場合、マルチサイクルパスのタイミング例外制約を生成して（ステップＳ２１０６）、ステップＳ２１０７の処理に移行する。
【０１５９】
支援装置１００は、ステップＳ２０１１の処理、ステップＳ２１０５の処理、またはステップＳ２１０６の処理から、ステップＳ２１０７に移行した場合、すべてのタイミングパスＰを選択したか否かを判定する（ステップＳ２１０７）。
【０１６０】
ここで、未選択のタイミングパスＰがある場合（ステップＳ２１０７：Ｎｏ）、支援装置１００は、次のタイミングパスＰを選択して（ステップＳ２１０８）、図２０のステップＳ２００６の処理に移行する。一方で、すべてのタイミングパスＰを選択した場合（ステップＳ２１０７：Ｙｅｓ）、支援装置１００は、セットアップ、およびホールドの両方の種類を選択したか否かを判定する（ステップＳ２１０９）。
【０１６１】
ここで、未選択の種類がある場合（ステップＳ２１０９：Ｎｏ）、支援装置１００は、未選択の種類を選択して（ステップＳ２１１０）、図２０のステップＳ２００５の処理に移行する。一方で、両方の種類を選択した場合（ステップＳ２１０９：Ｙｅｓ）、支援装置１００は、生成処理を終了する。これにより、支援装置１００は、タイミング例外制約を自動生成することができる。
【０１６２】
以上説明したように、支援装置１００によれば、回路の設計データに基づいて、回路に含まれる複数の素子の中から、パスの始点となる第１の順序回路と、パスの終点となる第２の順序回路とを特定することができる。また、支援装置１００によれば、設計データに基づいて、複数の素子のそれぞれの素子に入力または出力される信号の波形を解析することができる。また、支援装置１００によれば、パスから回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、パスがマルチサイクルパスまたはフォルスパスであるか否かを判断し、パスのタイミング例外制約を生成することができる。
【０１６３】
これにより、支援装置１００は、マルチサイクルパスまたはフォルスパスのタイミング例外制約を、自動生成することができる。このため、支援装置１００の利用者は、回路の中から、マルチサイクルパスやフォルスパスを検出しなくてもよく、作業負担を低減することができる。さらに、支援装置１００は、ＳＴＡにおいて、所定のタイミング制約に違反していても正常に動作可能なマルチサイクルパスやフォルスパスを、タイミング調整が必要なパスとして検出してしまうことを防止することができる。結果として、支援装置１００は、手戻りが発生しないようにして、回路設計にかかる時間を低減することができる。
【０１６４】
また、支援装置１００によれば、解析した波形に基づいて、特定した第１の順序回路に入力される第１のクロック信号のエッジから、特定した第２の順序回路に入力される第２のクロック信号のエッジまでの間隔を算出することができる。また、支援装置１００によれば、解析した波形に基づいて、第１の順序回路から出力されるデータ信号が外部端子まで伝搬されるか否かを判定することができる。また、支援装置１００によれば、算出した間隔、および判定した結果に基づいて、パスがマルチサイクルパスまたはフォルスパスであるか否かを判断することができる。
【０１６５】
これにより、支援装置１００は、制約条件を緩和可能か否かの判定に用いる指標値となる間隔を算出し、制約条件を無効化可能か否かの判定に用いるデータ信号の伝搬状況を特定することができる。そして、支援装置１００は、指標値に基づいて制約条件を緩和可能な程度を特定したうえで、パスがマルチサイクルパスであると判断することができる。また、支援装置１００は、マルチサイクルパスとして判断されうるパスであっても、フォルスパスであるか否かを判断することができ、精度よくタイミング例外制約を生成することができる。
【０１６６】
また、支援装置１００によれば、セットアップに関する制約条件を緩和可能な程度を示す、第１のクロック信号のエッジから、時間軸上で当該エッジよりも後方にあり当該エッジに最も近い第２のクロック信号のエッジまでの間隔を算出することができる。また、支援装置１００によれば、外部端子まで伝搬されると判定した場合に、算出したセットアップに関する制約条件を緩和可能な程度を示す間隔が、回路のクロック信号の２周期分の間隔以上であれば、パスがマルチサイクルパスであると判断することができる。これにより、支援装置１００は、パスが、セットアップに関する制約条件を緩和可能なマルチサイクルパスであるか否かを判断することができる。
【０１６７】
また、支援装置１００によれば、波形に基づいて、第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジよりも後方にあり当該エッジに最も近い第２のクロック信号のエッジまでの間隔を算出することができる。また、支援装置１００によれば、算出した間隔が小さい第１のクロック信号のエッジから順に、当該エッジに対応する期間におけるデータ信号が、外部端子まで伝搬されるか否かを判定することができる。また、支援装置１００によれば、外部端子まで伝搬されると判定した場合に、外部端子まで伝搬されると判定したエッジについて算出した間隔が、回路のクロック信号の２周期分の間隔以上であれば、パスがマルチサイクルパスであると判断することができる。これにより、支援装置１００は、制約条件の緩和の程度が小さい、算出した間隔が小さいエッジから順に、タイミング例外制約を生成することができる。このため、支援装置１００は、制約条件を緩和しすぎないようにすることができる。
【０１６８】
また、支援装置１００によれば、外部端子まで伝搬されると判定したエッジについて算出した間隔が、回路のクロック信号の２周期分の間隔未満であれば、パスがマルチサイクルパスおよびフォルスパスではないと判断することができる。これにより、支援装置１００は、所定のタイミング制約を適用することが好ましいパスについては、タイミング例外制約を生成しないようにする。
【０１６９】
また、支援装置１００によれば、ホールドに関する制約条件を緩和可能な程度を示す、第１のクロック信号のエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い第２のクロック信号のエッジまでの間隔を算出することができる。また、支援装置１００によれば、外部端子まで伝搬されると判定した場合に、算出したホールドに関する制約条件を緩和可能な程度を示す間隔が、回路のクロック信号の１周期分の間隔以上であれば、パスがマルチサイクルパスであると判断することができる。これにより、支援装置１００は、パスが、ホールドに関する制約条件を緩和可能なマルチサイクルパスであるか否かを判断することができる。
【０１７０】
また、支援装置１００によれば、波形に基づいて、第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い第２のクロック信号のエッジまでの間隔を算出することができる。また、支援装置１００によれば、算出した間隔が小さい第１のクロック信号のエッジから順に、当該エッジに対応する期間におけるデータ信号が、外部端子まで伝搬されるか否かを判定することができる。また、支援装置１００によれば、外部端子まで伝搬されると判定した場合に、外部端子まで伝搬されると判定したエッジについて算出した間隔が、回路のクロック信号の１周期分の間隔以上であれば、パスがマルチサイクルパスであると判断することができる。これにより、支援装置１００は、制約条件の緩和の程度が小さい、算出した間隔が小さいエッジから順に、タイミング例外制約を生成することができる。このため、支援装置１００は、制約条件を緩和しすぎないようにすることができる。
【０１７１】
また、支援装置１００によれば、外部端子まで伝搬されると判定したエッジについて算出した間隔が、回路のクロック信号の１周期分の間隔未満であれば、パスがマルチサイクルパスおよびフォルスパスではないと判断することができる。これにより、支援装置１００は、所定のタイミング制約を適用することが好ましいパスについては、タイミング例外制約を生成しないようにする。
【０１７２】
また、支援装置１００によれば、間隔が算出されない場合、パスがフォルスパスであると判断することができる。これにより、支援装置１００は、タイミング制約を無効化可能なフォルスパスを特定することができ、タイミング例外制約を自動生成することができる。
【０１７３】
また、支援装置１００によれば、それぞれのエッジに対応する期間におけるデータ信号が、外部端子まで伝搬しないと判定したか、または、期待値が設定されていない外部端子に伝搬されると判定した場合に、パスがフォルスパスであると判断することができる。これにより、支援装置１００は、タイミング制約を無効化可能なフォルスパスを特定することができ、タイミング例外制約を自動生成することができる。
【０１７４】
また、支援装置１００によれば、マルチサイクルパスであると判断した場合には、間隔に基づいてパスのタイミング制約を緩和するタイミング例外制約を生成することができる。これにより、支援装置１００の利用者は、作業負担を低減することができる。さらに、支援装置１００は、ＳＴＡにおいて、所定のタイミング制約に違反していても正常に動作可能なマルチサイクルパスやフォルスパスを、タイミング調整が必要なパスとして検出してしまうことを防止することができる。結果として、支援装置１００は、手戻りが発生しないようにして、回路設計にかかる時間を低減することができる。
【０１７５】
また、支援装置１００によれば、フォルスパスであると判断した場合には、パスのタイミング制約を無効化するタイミング例外制約を生成することができる。これにより、支援装置１００の利用者は、作業負担を低減することができる。さらに、支援装置１００は、ＳＴＡにおいて、所定のタイミング制約に違反していても正常に動作可能なマルチサイクルパスやフォルスパスを、タイミング調整が必要なパスとして検出してしまうことを防止することができる。結果として、支援装置１００は、手戻りが発生しないようにして、回路設計にかかる時間を低減することができる。
【０１７６】
ここで、他の演算装置が、回路を解析して得られた波形に基づいて、タイミングパスのタイミング例外制約を生成する場合が考えられる。しかしながら、この場合、演算装置は、タイミングパスからのデータ信号が、外部端子まで伝搬するか否かを考慮していないため、制約条件を緩和しきれないことがある。例えば、演算装置は、制約条件を無効化可能な場合であっても、制約条件を緩和するタイミング例外制約を生成してしまうことがある。一方で、本実施の形態にかかる支援装置１００は、制約条件を緩和可能な範囲で最も厳しい制約条件でタイミング例外制約を生成することができ、ＳＴＡに効果的なタイミング例外制約を生成することができる。
【０１７７】
なお、本実施の形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１７８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１７９】
（付記１）コンピュータが、
回路の設計データに基づいて、前記回路に含まれる複数の素子の中から、パスの始点となる第１の順序回路と、前記パスの終点となる第２の順序回路とを特定し、
前記設計データに基づいて、前記複数の素子のそれぞれの素子に入力または出力される信号の波形を解析し、
解析した前記第１の順序回路から前記第２の順序回路を経由して前記回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、前記パスがマルチサイクルパスまたはフォルスパスであるか否かを判断し、
前記マルチサイクルパスまたは前記フォルスパスであると判断した場合には、前記パスのタイミング例外制約を生成する、
処理を実行することを特徴とする設計支援方法。
【０１８０】
（付記２）前記コンピュータが、
解析した前記波形に基づいて、特定した前記第１の順序回路に入力される第１のクロック信号のエッジから、特定した前記第２の順序回路に入力される第２のクロック信号のエッジまでの間隔を算出し、
解析した前記波形に基づいて、前記第１の順序回路から出力されるデータ信号が前記外部端子まで伝搬されるか否かを判定する、
処理を実行し、
前記判断する処理は、
算出した前記間隔、および判定した結果に基づいて、前記パスがマルチサイクルパスまたはフォルスパスであるか否かを判断する、
ことを特徴とする付記１に記載の設計支援方法。
【０１８１】
（付記３）前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記第１のクロック信号のエッジから、時間軸上で当該エッジよりも後方にあり当該エッジに最も近い前記第２のクロック信号のエッジまでの間隔が、前記回路のクロック信号の２周期分の間隔以上であれば、前記パスが前記マルチサイクルパスであると判断する、
ことを特徴とする付記２に記載の設計支援方法。
【０１８２】
（付記４）前記算出する処理は、
前記波形に基づいて、前記第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジよりも後方にあり当該エッジに最も近い前記第２のクロック信号のエッジまでの間隔を算出し、
前記判定する処理は、
算出した前記間隔が小さい前記第１のクロック信号のエッジから順に、当該エッジに対応する期間における前記データ信号が、前記外部端子まで伝搬されるか否かを判定し、
前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記外部端子まで伝搬されると判定したエッジについて算出した前記間隔が、前記回路のクロック信号の２周期分の間隔以上であれば、前記パスが前記マルチサイクルパスであると判断する、
ことを特徴とする付記３に記載の設計支援方法。
【０１８３】
（付記５）前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記外部端子まで伝搬されると判定したエッジについて算出した前記間隔が、前記回路のクロック信号の２周期分の間隔未満であれば、前記パスが前記マルチサイクルパスおよび前記フォルスパスではないと判断する、
ことを特徴とする付記４に記載の設計支援方法。
【０１８４】
（付記６）前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記第１のクロック信号のエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い前記第２のクロック信号のエッジまでの間隔が、前記回路のクロック信号の１周期分の間隔以上であれば、前記パスが前記マルチサイクルパスであると判断する、
ことを特徴とする付記２〜５のいずれか一つに記載の設計支援方法。
【０１８５】
（付記７）前記算出する処理は、
前記波形に基づいて、前記第１のクロック信号のそれぞれのエッジから、時間軸上で当該エッジ以前にあり当該エッジに最も近い前記第２のクロック信号のエッジまでの間隔を算出し、
前記判定する処理は、
算出した前記間隔が小さい前記第１のクロック信号のエッジから順に、当該エッジに対応する期間における前記データ信号が、前記外部端子まで伝搬されるか否かを判定し、
前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記外部端子まで伝搬されると判定したエッジについて算出した前記間隔が、前記回路のクロック信号の１周期分の間隔以上であれば、前記パスが前記マルチサイクルパスであると判断する、
ことを特徴とする付記６に記載の設計支援方法。
【０１８６】
（付記８）前記判断する処理は、
前記外部端子まで伝搬されると判定した場合に、前記外部端子まで伝搬されると判定したエッジについて算出した前記間隔が、前記回路のクロック信号の１周期分の間隔未満であれば、前記パスが前記マルチサイクルパスおよび前記フォルスパスではないと判断する、
ことを特徴とする付記７に記載の設計支援方法。
【０１８７】
（付記９）前記判断する処理は、
前記間隔が算出されない場合、前記パスが前記フォルスパスであると判断する、
ことを特徴とする付記２〜８のいずれか一つに記載の設計支援方法。
【０１８８】
（付記１０）前記判断する処理は、
前記第１のクロック信号のそれぞれのエッジに対応する期間における前記データ信号が、前記外部端子まで伝搬しないと判定したか、または、期待値が設定されていない前記外部端子に伝搬されると判定した場合に、前記パスが前記フォルスパスであると判断する、
ことを特徴とする付記２〜９のいずれか一つに記載の設計支援方法。
【０１８９】
（付記１１）前記生成する処理は、
前記マルチサイクルパスであると判断した場合には、前記間隔に基づいて前記パスのタイミング制約を緩和するタイミング例外制約を生成する、
ことを特徴とする付記２〜１０のいずれか一つに記載の設計支援方法。
【０１９０】
（付記１２）前記生成する処理は、
前記フォルスパスであると判断した場合には、前記パスのタイミング制約を無効化するタイミング例外制約を生成する、
ことを特徴とする付記１〜１１のいずれか一つに記載の設計支援方法。
【０１９１】
（付記１３）コンピュータに、
回路の設計データに基づいて、前記回路に含まれる複数の素子の中から、パスの始点となる第１の順序回路と、前記パスの終点となる第２の順序回路とを特定し、
前記設計データに基づいて、前記複数の素子のそれぞれの素子に入力または出力される信号の波形を解析し、
解析した前記第１の順序回路から前記第２の順序回路を経由して前記回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、前記パスがマルチサイクルパスまたはフォルスパスであるか否かを判断し、
前記マルチサイクルパスまたは前記フォルスパスであると判断した場合には、前記パスのタイミング例外制約を生成する、
処理を実行させることを特徴とする設計支援プログラム。
【０１９２】
（付記１４）回路の設計データに基づいて、前記回路に含まれる複数の素子の中から、パスの始点となる第１の順序回路と、前記パスの終点となる第２の順序回路とを特定し、
前記設計データに基づいて、前記複数の素子のそれぞれの素子に入力または出力される信号の波形を解析し、
解析した前記第１の順序回路から前記第２の順序回路を経由して前記回路の外部端子までに存在する素子に入力または出力される信号の波形に基づいて、前記パスがマルチサイクルパスまたはフォルスパスであるか否かを判断し、
前記マルチサイクルパスまたは前記フォルスパスであると判断した場合には、前記パスのタイミング例外制約を生成する、
制御部を有することを特徴とする設計支援装置。
【符号の説明】
【０１９３】
１００  設計支援装置
２００  バス
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  ディスクドライブ
２０５  ディスク
２０６  Ｉ／Ｆ
２０７  入力装置
２０８  出力装置
２１０  ネットワーク
３０１  取得部
３０２  特定部
３０３  解析部
３０４  算出部
３０５  判定部
３０６  判断部
３０７  生成部
４００  論理シミュレーションパターン
５００  論理・クロック情報
６００  波形情報
７００  タイミングパス情報
１８００  タイミング例外制約
ＦＦ１，ＦＦ２，ＦＦ３，ＦＦ４，ＦＦ５  順序回路
ＡＮＤ１，ＡＮＤ２  論理積回路
ＯＵＴ１，ＯＵＴ２  外部端子
ＯＲ１  論理和回路
【図１】
2016201045.tif 000003
【図２】
2016201045.tif 000004
【図３】
2016201045.tif 000005
【図４】
2016201045.tif 000006
【図５】
2016201045.tif 000007
【図６】
2016201045.tif 000008
【図７】
2016201045.tif 000009
【図８】
2016201045.tif 000010
【図９】
2016201045.tif 000011
【図１０】
2016201045.tif 000012
【図１１】
2016201045.tif 000013
【図１２】
2016201045.tif 000014
【図１３】
2016201045.tif 000015
【図１４】
2016201045.tif 000016
【図１５】
2016201045.tif 000017
【図１６】
2016201045.tif 000018
【図１７】
2016201045.tif 000019
【図１８】
2016201045.tif 000020
【図１９】
2016201045.tif 000021
【図２０】
2016201045.tif 000022
【図２１】
2016201045.tif 000023