(57)【要約】【課題】タイミングエラー要因の特定の容易化を図ること。【解決手段】情報処理装置１００は、検証の対象回路１１１に含まれるパス１１２の遅延に関する項目の値を取得する。パス１１２は、レジスタ１１３と、レジスタ１１４との間の経路である。パス１１２上の論理段数は、２３段である。情報処理装置１００は、第１対応情報１０１を参照して、２３段に対応する領域としてＷＡＲＮ領域を特定する。情報処理装置１００は、複数の領域のうち、取得した項目の値に対応する領域が、ＷＡＲＮ領域またはＮＧ領域いずれかの領域であるか否かを判定する。情報処理装置１００は、ＷＡＲＮ領域であると判定した場合、ＷＡＲＮ領域に対応する対策内容をレポート１０４へ出力する。【選択図】図１
2018073150.tif 000002
【特許請求の範囲】
【請求項１】
回路に含まれるパスがタイミング制約を満たさない可能性の高さによって区分けされた複数の領域の各々の領域について、前記領域を示す領域情報と、前記領域における前記パスの遅延に関する項目の値の範囲と、が対応付けられた第１対応情報と、
前記複数の領域のうちのいずれかの領域について、前記いずれかの領域を示す領域情報と、前記項目の値が前記いずれかの領域に対応する前記パスの遅延への対応策を示す対策情報と、が対応付けられた第２対応情報と、
を記憶する記憶部にアクセス可能なコンピュータに、
検証の対象回路に含まれるパスの遅延に関する前記項目の値を取得し、
前記第１対応情報を参照して、前記複数の領域のうち、取得した前記項目の値に対応する領域が前記いずれかの領域であるか否かを判定し、
前記いずれかの領域であると判定した場合、前記第２対応情報を参照して、前記いずれかの領域を示す前記領域情報に対応付けられた前記対策情報を出力する、
処理を実行させることを特徴とする検証支援プログラム。
【請求項２】
前記複数の領域は、前記回路に含まれる複数のパスの各々のパスについての前記パスの遅延に関する指標値と、前記パスの遅延に関する前記項目の値と、に基づいて区分けされたことを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記複数の領域は、前記タイミング制約を満たさない可能性の高さが最も高い第１領域と、前記タイミング制約を満たさない可能性の高さが最も低い第２領域と、前記タイミング制約を満たさない可能性の高さが２番目に高い第３領域と、を含み、
前記回路に含まれる前記複数のパスの各々のパスが前記複数の領域のうちのいずれかの領域に分類される場合に、
前記第１領域は、前記複数のパスのうち、前記指標値に基づいて前記タイミング制約を満たさないと判定されたパスが前記項目の値に基づいて分類される領域であり、
前記第２領域は、前記複数のパスのうち、前記指標値に基づいて前記タイミング制約を満たすと判定されたパスが前記項目の値に基づいて分類される領域であり、
前記第３領域は、前記複数のパスのうち、所定の割合のパスが前記項目の値に基づいて分類される領域であることを特徴とする請求項２に記載の検証支援プログラム。
【請求項４】
前記第１対応情報は、前記パスの遅延に関する複数の項目の各々の項目について、前記複数の領域の各々の領域についての前記領域を示す領域情報と、前記領域における前記項目の値の範囲と、が対応付けられ、
前記第２対応情報は、前記複数の項目の各々の項目について、前記いずれかの領域についての前記いずれかの領域を示す領域情報と、前記項目の値が前記いずれかの領域に対応する前記パスの遅延への対応策を示す対策情報と、が対応付けられ、
前記コンピュータに、
前記複数の項目の各々の項目について、前記項目の値を取得する処理と、前記いずれかの領域であるか否かを判定する処理と、前記対策情報を出力する処理と、を実行させることを特徴とする請求項１〜３のいずれか一つに記載の検証支援プログラム。
【請求項５】
前記コンピュータに、
前記複数の項目のうちのいずれかの項目について、取得した前記項目の値に対応する領域が前記いずれかの領域であると判定した場合、前記複数の項目のうちの前記いずれかの項目と異なる項目について、前記いずれかの領域であるか否かを判定する処理と、前記対策情報を出力する処理と、を実行させないことを特徴とする請求項４に記載の検証支援プログラム。
【請求項６】
前記いずれかの項目は、前記対象回路に含まれるセルと前記セル間の接続関係を示すネットリストから値が特定可能な項目であることを特徴とする請求項５に記載の検証支援プログラム。
【請求項７】
回路に含まれるパスがタイミング制約を満たさない可能性の高さによって区分けされた複数の領域の各々の領域について、前記領域を示す領域情報と、前記領域における前記パスの遅延に関する項目の値の範囲と、が対応付けられた第１対応情報と、
前記複数の領域のうちのいずれかの領域について、前記いずれかの領域を示す領域情報と、前記項目の値が前記いずれかの領域に対応する前記パスの遅延への対応策を示す対策情報と、が対応付けられた第２対応情報と、
を記憶する記憶部にアクセス可能なコンピュータが、
検証の対象回路に含まれるパスの遅延に関する前記項目の値を取得し、
前記第１対応情報を参照して、前記複数の領域のうち、取得した前記項目の値に対応する領域が前記いずれかの領域であるか否かを判定し、
前記いずれかの領域であると判定した場合、前記第２対応情報を参照して、前記いずれかの領域を示す前記領域情報に対応付けられた前記対策情報を出力する、
処理を実行することを特徴とする検証支援方法。
【請求項８】
回路に含まれるパスがタイミング制約を満たさない可能性の高さによって区分けされた複数の領域の各々の領域について、前記領域を示す領域情報と、前記領域における前記パスの遅延に関する項目の値の範囲と、が対応付けられた第１対応情報と、前記複数の領域のうちのいずれかの領域について、前記いずれかの領域を示す領域情報と、前記項目の値が前記いずれかの領域に対応する前記パスの遅延への対応策を示す対策情報と、が対応付けられた第２対応情報と、を記憶する記憶部と、
検証の対象回路に含まれるパスの遅延に関する前記項目の値を取得し、前記第１対応情報を参照して、前記複数の領域のうち、取得した前記項目の値に対応する領域が前記いずれかの領域であるか否かを判定し、前記いずれかの領域であると判定した場合、前記第２対応情報を参照して、前記いずれかの領域を示す前記領域情報に対応付けられた前記対策情報を出力する制御部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証支援プログラム、検証支援方法、および情報処理装置に関する。
【背景技術】
【０００２】
従来、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）への回路の構成設定や半導体集積回路の設計などが行われた後に、設計者の要求したクロック周波数において回路が正しく動作するかを確認するためのタイミング解析が行われる。ＦＰＧＡは、例えば製造後に購入者や設計者が内部に所望の回路構成を設定できる集積回路の一種である。
【０００３】
ＦＰＧＡに回路構成を設定する方法としては、ハードウェア記述言語を使って設計の対象回路の機能が記述されたネットリストを論理合成し、論理合成によって得られたゲートレベルのネットリストに基づいてＦＰＧＡに対してレイアウトを行う技術が公知である。
【０００４】
また、半導体集積回路の設計では、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）設計やレイアウト設計などが行われる。ＲＴＬ設計では、ユーザ仕様がレジスタ転送レベルの記述に変換される。ＲＴＬ設計では、ハードウェア記述言語などによって、半導体集積回路の各部がクロックサイクルごとにどのように動作するかがネットリストなどに記述される。レイアウト設計では、ＲＴＬのネットリストを論理合成することにより得られたゲートレベルのネットリストに基づいてレイアウトが行われる。
【０００５】
先行技術としては、例えば設計作業開始から終了までの設計者の操作を記録し、設計ルールチェックにより検出されたエラー数の設計経過時間に対する変化の度合いに基づいて、設計者の設計に対する習熟度を判定する技術がある（例えば、以下特許文献１参照。）。
【０００６】
また、先行技術としては、例えば、半導体集積回路の開発時の上流工程において実施されるＣＤＣ（Ｃｌｏｃｋ  Ｄｏｍａｉｎ  Ｃｒｏｓｓｉｎｇ）検証結果に基づいて、レイアウト後の下流工程において実施されるタイミング制約ファイルを抽出する技術がある（例えば、以下特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−５８９１１号公報
【特許文献２】特開２０１２−１６８７１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、例えばタイミング解析によって得られたタイミングエラーを解析してタイミングエラーの原因を特定することは困難である。例えば、タイミングエラーの原因を特定することは、検証者の経験に基づいて行われるため、検証者の習熟度によっては困難である。また、例えば、タイミングエラーの数が多い場合、一度にすべてのタイミングエラーの解析を行うことは困難であり、タイミングエラーを複数にグループ分けして何回も解析が行われるため、解析に時間がかかる。
【０００９】
１つの側面では、本発明は、タイミングエラーの解析の効率化を図ることができる検証支援プログラム、検証支援方法、および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの実施態様では、回路に含まれるパスがタイミング制約を満たさない可能性の高さによって区分けされた複数の領域の各々の領域について、前記領域を示す領域情報と、前記領域における前記パスの遅延に関する項目の値の範囲と、が対応付けられた第１対応情報と、前記複数の領域のうちのいずれかの領域について、前記いずれかの領域を示す領域情報と、前記項目の値が前記いずれかの領域に対応する前記パスの遅延への対応策を示す対策情報と、が対応付けられた第２対応情報と、を記憶する記憶部にアクセス可能なコンピュータに、検証の対象回路に含まれるパスの遅延に関する前記項目の値を取得し、前記第１対応情報を参照して、前記複数の領域のうち、取得した前記項目の値に対応する領域が前記いずれかの領域であるか否かを判定し、前記いずれかの領域であると判定した場合、前記第２対応情報を参照して、前記いずれかの領域を示す前記領域情報に対応付けられた前記対策情報を出力する検証支援プログラム、検証支援方法、および情報処理装置が提案される。
【発明の効果】
【００１１】
一態様によれば、タイミングエラーの解析の効率化を図ることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、情報処理装置の一動作例を示す説明図である。
【図２】図２は、ＦＰＧＡの設計フロー例を示す説明図である。
【図３】図３は、実施例の全体を示す説明図である。
【図４】図４は、情報処理装置のハードウェア構成例を示す説明図である。
【図５】図５は、論理段数によって設計情報を分類した例を示す説明図である。
【図６】図６は、ＷＡＲＮ領域の変動例を示す説明図である。
【図７】図７は、機械学習ＤＢの記憶例を示す説明図である。
【図８】図８は、対応策ＤＢの記憶例を示す説明図である。
【図９】図９は、タイミングエラーに関するレポート例を示す説明図である。
【図１０】図１０は、情報処理装置の機能的構成例を示すブロック図である。
【図１１】図１１は、画面出力例１を示す説明図である。
【図１２】図１２は、画面出力例２を示す説明図である。
【図１３】図１３は、情報処理装置が行う処理手順例１を示すフローチャートである。
【図１４】図１４は、情報処理装置が行うレポート生成処理手順例を示すフローチャートである。
【図１５】図１５は、情報処理装置が行う処理手順例２を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して、本発明にかかる検証支援プログラム、検証支援方法、および情報処理装置の実施の形態を詳細に説明する。
【００１４】
図１は、情報処理装置の一動作例を示す説明図である。情報処理装置１００は、解析の対象回路のタイミング解析を支援するコンピュータである。情報処理装置１００については、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やサーバなどであり、特に限定しない。
【００１５】
従来、ＦＰＧＡへの回路の構成設定や半導体集積回路の設計が終了した後に、タイミング検証が行われる。ＦＰＧＡに回路を構成させる簡単な設計フローについては図２を用いて後述する。
【００１６】
従来、例えばタイミング解析によって得られたタイミングエラーを解析してタイミングエラーの原因を特定および対策を実施することは困難である。例えば、タイミングエラーの原因を特定および対策を実施するのは、検証者の経験に基づいて行われるため、検証者の習熟度によっては困難である。また、例えば設計の対象回路の高集積化によって回路規模が増大したため、タイミング検証の対象となるパスが増大し、タイミングエラーが発生するパスが増加している。検証者によって数千または数万などの複数のタイミングエラーを同時に解析するのは難しい。例えば、タイミングエラーの数が多い場合、タイミングエラーを分割して何回も解析および対策を行うため、解析に要する時間がかかる。
【００１７】
そこで、本実施の形態では、情報処理装置１００は、対象回路のパスの遅延に関する項目の値が、タイミングエラーの可能性の高さで区切られた領域のうち、タイミングエラーの可能性が比較的高い領域に該当する場合、エラー解消の対策を出力する。これにより、タイミングエラー要因の特定の容易化を図ることができる。例えば、検証者の習熟度に依存せずに、タイミングエラー要因の特定に要する時間の短縮化を図ることができる。
【００１８】
記憶部（図１にて図示省略）は、例えば、第１対応情報１０１と、第２対応情報１０２と、を記憶する。
【００１９】
第１対応情報１０１は、回路に含まれるパスがタイミング制約を満たさない可能性の高さによって区分けされた複数の領域の各々の領域について、領域を示す領域情報と、領域におけるパスの遅延に関する項目の値の範囲と、が対応付けられた情報である。パスとは、例えば、レジスタ間の経路、入力端子からレジスタまでの経路、レジスタから出力端子までの経路、入力端子から出力端子までの経路である。
【００２０】
図１では、領域情報は領域名を示す情報である。領域の数は２つ以上である。図１では、ＯＫ領域と、ＷＡＲＮ領域と、ＮＧ領域と、の３つの領域を例に挙げる。タイミング制約を満たさない可能性の高さは、例えばタイミングエラーが発生する可能性の高さである。領域を分ける例については、図５および図６を用いて詳細に説明する。本実施の形態では、ＮＧ領域、ＷＡＲＮ領域、ＯＫ領域の順に、タイミング制約を満たさない可能性が高い。
【００２１】
パスの遅延に関係する項目の値には、例えば、設計値や検証値などが挙げられる。パスの遅延に関する項目には、設計によって値が得られる項目やタイミング検証によって値が得られる項目がある。設計によって値が得られる項目としては、論理段数、配置間距離、配線長さ、ファンアウト数などが挙げられる。論理段数については、論理合成後のネットリストから値が得られる項目である。配置間距離、配線長さ、ファンアウト数などは、レイアウトによって得られるレポートなどから値が得られる項目である。このレポートには、レイアウトデータも含まれることとする。論理段数、配置間距離、配線長さ、ファンアウト数などについては図３において後述する。図１の例では、項目として論理段数を例に挙げる。
【００２２】
第１対応情報１０１によれば、パスの論理段数が２０段以下であれば、そのパスはＯＫ領域に分類される。パスの論理段数が２１段以上３０段以下であれば、そのパスはＷＡＲＮ領域に分類される。パスの論理段数が３１段以上であれば、そのパスはＮＧ領域に分類される。
【００２３】
第２対応情報１０２は、複数の領域のうちのいずれかの領域について、いずれかの領域を示す領域情報と、項目の値がいずれかの領域に対応するパスの遅延への対応策を示す対策情報と、が対応付けられた情報である。図１の例では、いずれかの領域はＷＡＲＮ領域とＮＧ領域である。
【００２４】
情報処理装置１００は、検証の対象回路１１１に含まれるパス１１２の遅延に関する項目の値を取得する。パス１１２の遅延に関係する項目の値としては、例えば、設計値や検証値などが挙げられる。パス１１２の遅延に関する項目としては、設計によって値が得られる項目やタイミング検証によって値が得られる項目が挙げられる。設計によって値が得られる項目としては、論理段数、配置間距離、配線長さ、ファンアウト数などが挙げられる。論理段数については、論理合成後のネットリスト１０３から値が得られる項目である。配置間距離、配線長さ、ファンアウト数などは、レイアウトによって得られるレポートなどから値が得られる項目である。このレポートには、レイアウトデータも含まれることとする。図１では項目として論理段数を例に挙げる。対象回路１１１に含まれるセルとセル間の接続関係を示すネットリスト１０３は、例えば、ハードウェア記述言語を使って設計の対象回路の機能が記述されたネットリストに対して論理合成が行われることによって得られる。ハードウェア記述言語としては、例えば、Ｖｅｒｉｌｏｇ  ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｉｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）やＶＨＤＬなどが挙げられる。
【００２５】
パス１１２は、レジスタ１１３と、レジスタ１１４との間の経路である。パス１１２上の論理段数は、２３段である。
【００２６】
情報処理装置１００は、第１対応情報１０１を参照して、複数の領域のうち、取得した項目の値に対応する領域がいずれかの領域であるか否かを判定する。いずれかの領域は、第２対応情報１０２に含まれる領域情報が示す領域である。具体的には、例えば、いずれかの領域は、ＷＡＲＮ領域とＮＧ領域である。図１の例では、情報処理装置１００は、第１対応情報１０１によれば、２３段に対応する領域としてＷＡＲＮ領域を特定する。そして、情報処理装置１００は、特定したＷＡＲＮ領域がいずれかの領域であると判定する。
【００２７】
情報処理装置１００は、いずれかの領域であると判定した場合、第２対応情報１０２を参照して、いずれかの領域を示す領域情報に対応付けられた対策情報を出力する。具体的には、情報処理装置１００は、例えば、第２対応情報１０２のＷＡＲＮ領域に対応する対策内容を取得する。そして、情報処理装置１００は、例えば、取得した対策内容をレポート１０４へ出力する。情報処理装置１００は、レポート１０４を記憶部などに格納してもよい。または、情報処理装置１００は、レポート１０４をディスプレイなどに表示してもよい。
【００２８】
これにより、タイミングエラー要因の特定の容易化を図ることができる。例えば、検証者の習熟度に依存せずに、タイミングエラー要因の特定に要する時間の短縮化を図ることができる。図１の例では、情報処理装置１００が、論理段数が要因である可能性が高いことを検証者に出力することができる。
【００２９】
ここで、本実施の形態では、タイミング検証として、ＦＰＧＡへ回路を構成させた場合のタイミング検証を例に挙げる。図２を用いてＦＰＧＡへ回路を構成させる設計フローについて簡単に説明する。ただし、タイミング検証は、ＦＰＧＡへ回路を構成させた場合のタイミング検証に限らない。例えば、ＦＰＧＡへ回路を構成させるための論理合成後のタイミング検証であってもよいし、半導体集積回路の設計フローにおけるレイアウト設計後のタイミング検証や論理合成後のタイミング検証であってもよく、特に限定しない。
【００３０】
図２は、ＦＰＧＡの設計フロー例を示す説明図である。ＦＰＧＡへの回路構成の設定やタイミング制約を満たすかの判定などの処理については、ＦＰＧＡの供給業者が提供しているアプリケーションプログラムによって行われる。ここでは、設計装置は、アプリケーションプログラムを動作するコンピュータである。設計装置は、例えば、ハードウェア記述言語を使って設計の対象回路の機能が記述されたネットリストに対して論理合成を行う（ステップＳ２０１）。ハードウェア記述言語としては、例えば、Ｖｅｒｉｌｏｇ  ＨＤＬやＶＨＤＬなどが挙げられる。つぎに、設計装置は、論理合成によって得られたゲートレベルのネットリストに基づいてターゲットのＦＰＧＡに対してレイアウトを行う（ステップＳ２０２）。ここでのゲートとは、論理回路に含まれるトランジスタを含む（マクロ）セルである。ゲートとしては、ＮＯＲゲート、ＯＲゲート、インバータゲート、バッファゲート、レジスタなどが挙げられる。
【００３１】
そして、設計装置は、ＦＰＧＡに回路を構成した後に、例えばＳＴＡ（Ｓｔａｔｉｃ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ）と呼ばれるタイミング検証を行う（ステップＳ２０３）。設計装置は、タイミング検証において、タイミングが所定の制約を満たしているか否かを判定する。また、設計装置は、タイミング以外に、エリア、消費電力等が所定の制約を満たしているか否かを判定する処理などを行う。これにより、設計装置は、タイミング検証によって得られたタイミングエラーのレポートを出力する。
【００３２】
そして、従来、検証者は、例えば、タイミングエラーのレポートを参照して、エラー解析を行う（ステップＳ２０４）。検証者は、例えばタイミングエラーの原因を特定して対策を実施する。原因の特定や対策には、例えば、解析ポイント、手順などの検証者の経験に基づいて行われる。原因の特定や対策に要する時間は、検証者の習熟度に依存する。また、回路規模が大きくなり、検証の対象となるパスが増加したため、タイミングエラーとなるパスの数が増加している。習熟度の高い検証者であっても、多くのタイミングエラーをすべて解析するのは、時間がかかる。
【００３３】
本実施の形態では、情報処理装置１００は、ステップＳ２０１からステップＳ２０３などを行う設計装置と同じであってもよいし、設計装置とは異なるコンピュータであってもよい。
【００３４】
図３は、実施例の全体を示す説明図である。作成者は、過去の設計情報３０５に基づいて、機械学習ＤＢ３０３や対応策ＤＢ３０４を作成する。作成者は、情報処理装置１００の提供者である。また、作成者は、対象回路の検証者であってもよい。作成者は、新たに設計されたネットリスト３０１と、タイミングエラー等のレポート３０２と、を情報処理装置１００に入力する。
【００３５】
そして、情報処理装置１００は、入力されたネットリスト３０１およびレポート３０２と、作成された機械学習ＤＢ３０３や対応策ＤＢ３０４と、に基づいてタイミングエラーの原因の解析を支援する。機械学習ＤＢ３０３は、図１において説明した第１対応情報１０１に相当する。対応策ＤＢ３０４は、図１において説明した第２対応情報１０２に相当する。そして、情報処理装置１００は、項目別に、レポート３１０−１〜３１０−５を出力する。本実施の形態では、情報処理装置１００は、レポート３１０について、項目の値がタイミングエラーの要因であると判定された場合に出力する。
【００３６】
（情報処理装置１００のハードウェア構成例）
図４は、情報処理装置のハードウェア構成例を示す説明図である。情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、ディスクドライブ４０４と、ディスク４０５と、を有する。情報処理装置１００は、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０６と、キーボード４０７と、マウス４０８と、ディスプレイ４０９と、を有する。また、ＣＰＵ４０１と、ＲＯＭ４０２と、ＲＡＭ４０３と、ディスクドライブ４０４と、Ｉ／Ｆ４０６と、キーボード４０７と、マウス４０８と、ディスプレイ４０９とは、バス４００によってそれぞれ接続される。
【００３７】
ここで、ＣＰＵ４０１は、情報処理装置１００の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶する。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。ディスクドライブ４０４は、ＣＰＵ４０１の制御にしたがってディスク４０５に対するデータのリード／ライトを制御する。ディスク４０５は、ディスクドライブ４０４の制御で書き込まれたデータを記憶する。ディスク４０５としては、磁気ディスク、光ディスクなどが挙げられる。
【００３８】
Ｉ／Ｆ４０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク４１０に接続され、このネットワーク４１０を介して他の装置に接続される。そして、Ｉ／Ｆ４０６は、ネットワーク４１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ４０６には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００３９】
キーボード４０７やマウス４０８は、検証者などのユーザの操作により、各種データの入力を受け付けるインターフェースである。ディスプレイ４０９は、ＣＰＵ４０１の指示により、データを出力するインターフェースである。
【００４０】
また、図示を省略するが、情報処理装置１００には、カメラから画像や動画を取り込む入力装置やマイクから音声を取り込む入力装置が設けられていてもよい。また、図示を省略するが、情報処理装置１００には、プリンタなどの出力装置が設けられていてもよい。
【００４１】
また、本実施の形態では、情報処理装置１００のハードウェア構成として、パーソナル・コンピュータを例に挙げているが、これに限らず、サーバなどであってもよい。情報処理装置１００がサーバである場合、情報処理装置１００と、検証者が操作可能な装置やディスプレイ４０９などと、がネットワーク４１０を介して接続されてもよい。
【００４２】
（機械学習ＤＢの作成方法）
つぎに、情報処理装置１００が有する機械学習ＤＢ３０３の作成方法について説明する。機械学習ＤＢ３０３は、図３で説明したように、過去の設計情報３０５に基づいて作成される。機械学習ＤＢ３０３の作成者は、情報処理装置１００の開発者または設計者などである。
【００４３】
まず、作成者は、過去のＦＰＧＡの設計情報をパスの遅延に関する項目ごとにタイミングエラーの発生の可能性の高さによって複数の領域に分類する。パスの遅延に関する項目としては、例えば、論理段数、配置間距離、ファンアウト数、クロックスキュー、配線長などが挙げられる。タイミングエラーの発生の要因は、例えば、論理段数が大きすぎること、配置間距離が長すぎること、ファンアウト数が大きすぎること、クロックスキューが大きすぎること、配線長が長すぎることなどである。
【００４４】
また、パスとは、例えば、ＦＦ間の経路、入力端子からＦＦまでの経路、ＦＦから出力端子までの経路、入力端子から出力端子までの経路である。
【００４５】
論理段数とは、パス上のゲートの段数である。論理段数が大きすぎると、ゲート遅延の増大によりタイミングエラーが発生する場合がある。
【００４６】
配置間距離とは、例えばパスの始点となるＦＦや入力端子と、パスの終点となるＦＦや出力端子との間の距離である。配置間距離が長すぎると、配線遅延の増大によりタイミングエラーが発生する場合がある。
【００４７】
ファンアウト数とは、パス上の各ゲートに接続されたゲートの数である。パス上のゲートのファンアウト数が多すぎると、信号変化が間に合わずタイミング違反が発生する場合がある。クロックスキューとは、クロック信号が回路の異なる部分に異なったタイミングで到着する現象である。換言すると、クロックスキューが大きいと、セットアップタイム違反やホールドタイム違反を発生する場合がある。
【００４８】
配線長とは、例えばパスの配線の長さである。配線長が長すぎると、配線遅延の増大によりタイミングエラーが発生する場合がある。
【００４９】
つぎに、図５および図６を用いて、論理段数を例に挙げて、項目の値とスラック値とに基づいて複数の領域を区分けする例について説明する。
【００５０】
図５は、論理段数によって設計情報を分類した例を示す説明図である。グラフ５００は、過去の設計情報３０５に含まれる論理段数とスラック値とによってパスをプロットしたプロット結果を示す。過去の設計情報３０５には、回路の複数のパスについてのスラック値および各項目の値が含まれる。グラフ５００の横軸は、論理段数である。グラフ５００の縦軸は、スラック値である。
【００５１】
スラック値とは、タイミング検証結果であり、パスの遅延に関する指標値である。スラック値は、例えば、ターゲットの動作周波数と、パスのデータ遅延時間やクロックスキューに基づいてパスが動作可能な最大の動作周波数とに基づく値である。より具体的には、スラック値は、「（１／ターゲットの動作周波数）−（１／最大動作周波数）」である。タイミング検証では、スラック値の正負によって、タイミング制約を満たすかどうかが判定される。パスのスラック値がマイナスであれば、パスはタイミング制約を満たさないと判定される。パスのスラック値がプラスであれば、パスはタイミング制約を満たすと判定される。
【００５２】
グラフ５００において、○は、タイミングエラーが無いパスを示す。グラフ５００において、×は、タイミングエラーがあるパスを示す。
【００５３】
つぎに、作成者は、プロット結果を、複数の領域に区別する。区別させる領域の数は、例えば２または３である。図５の例では、ＯＫ領域、ＷＡＲＮ領域、ＮＧ領域の３つの領域にプロット結果が区別される。
【００５４】
ＯＫ領域とは、過去の設計情報３０５においてタイミングエラーが発生していない領域である。ＮＧ領域は、過去の設計情報３０５においてタイミングエラーが発生する領域である。ＷＡＲＮ領域は、過去の設計情報３０５において、タイミングエラーが発生する場合とタイミングエラーが発生しない場合との両方の可能性がある領域である。
【００５５】
作成者は、各領域に設計情報を分類させて機械学習ＤＢ３０３に実装する。機械学習ＤＢ３０３に実装するとは、論理段数を例に挙げると、ＯＫ領域における論理段数の範囲、ＮＧ領域における論理段数の範囲、ＷＡＲＮ領域における論理段数の範囲を機械学習ＤＢ３０３に登録することを示す。
【００５６】
ここで、ＷＡＲＮ領域幅は、閾値を中心に全検証パス数の何［％］をＷＡＲＮ領域とするかによって定まる。閾値については、例えば、×と○の境界の項目の値である。閾値については、例えば、機械学習ＤＢ３０３の開発者によって定められる。ＷＡＲＮ領域については、新たに設計情報をプロットさせることにより変動する場合がある。
【００５７】
図６は、ＷＡＲＮ領域の変動例を示す説明図である。図６において上側のグラフ５００は、新たな設計情報を追加する前のプロット結果を示す。図６において下側のグラフ５００は、新たな設計情報を追加したプロット結果を示す。
【００５８】
ここで、ＷＡＲＮ領域は、全体のパスのうちの所定の割合のパスが含まれる領域とする。所定の割合は、例えば、１０［％］とし、例えばＷＡＲＮ領域は、全体の１０［％］のパスが含まれる領域とする。上側のグラフ５００では、検証パス数が５０サンプルであると、ＷＡＲＮ領域に該当するパス数は５０／１０の５サンプルである。下側のグラフ５００では、新たに１０サンプルの設計情報についてプロットされる。下側のグラフ５００では、検証パス数が６０サンプルであり、ＷＡＲＮ領域に該当するパス数は６０／１０の６サンプルである。下側のグラフ５００に示すＷＡＲＮ領域は６サンプルを包含する領域幅となるため、下側のグラフ５００に示すＷＡＲＮ領域の領域幅は、上側のグラフ５００に示すＷＡＲＮ領域の領域幅よりも小さくなる。領域幅の縮小に伴い、ＯＫ領域とＮＧ領域が拡大するため、エラー要因の判定精度の向上を図ることができる。
【００５９】
例えば、上側のグラフ５００では、タイミングエラーが発生したパスの論理段数が「１０」段の場合、ＷＡＲＮ領域に該当する。このため、情報処理装置１００は、パスの論理段数が「１０」段であることが要因となってタイミングエラーとなったか否かを一意に判定することができない。一方、下側のグラフ５００では、タイミングエラーが発生したパスの論理段数が「１０」段の場合、ＯＫ領域に該当する。このため、情報処理装置１００は、論理段数が「１０」段であることが要因となってタイミングエラーとなっていないと判定することができる。また、図示省略するが、ＦＰＧＡの提供元のメーカやＦＰＧＡの種類、動作周波数別に機械学習ＤＢ３０３が作成されてもよい。
【００６０】
（各種ＤＢ等の記憶内容）
つぎに、情報処理装置１００が有する各種ＤＢ等の記憶内容について説明する。各種ＤＢ等は、例えば、図４に示した情報処理装置１００のＲＯＭ４０２やディスク４０５、不揮発性の半導体メモリ（図示省略）などの記憶部により実現される。
【００６１】
図７は、機械学習ＤＢの記憶例を示す説明図である。機械学習ＤＢ３０３は、例えば、メーカやデバイス、周波数などの特徴情報に、タイミングエラーの要因別に複数の領域の各々における最大値又は最小値などが対応付けられた情報である。
【００６２】
機械学習ＤＢ３０３は、メーカ、デバイス、周波数、タイミングエラー主要因のフィールドを有する。メーカ、デバイス、周波数のフィールドに設定される情報は、設計の対象回路の仕様に関する特徴情報である。
【００６３】
メーカのフィールドには、ターゲットのＦＰＧＡの製造元の識別情報として会社名が設定される。デバイスのフィールドには、ターゲットのＦＰＧＡの識別情報としてデバイス名が設定される。周波数のフィールドには、ターゲットのＦＰＧＡを動作させる最大周波数が設定される。
【００６４】
タイミングエラー主要因のフィールドは、論理段数、配置間距離、ファンアウト数、クロックスキュー、配線長のフィールドを有する。
【００６５】
論理段数、配置間距離、ファンアウト数、クロックスキュー、配線長の各フィールドには、Ｖａｌｕｅ、判定のフィールドを有する。Ｖａｌｕｅのフィールドには、領域ごとに領域に該当する要因の値が設定される。判定のフィールドには、領域を示す領域情報が設定される。領域情報は、例えば領域名などの領域の識別情報である。
【００６６】
例えば、論理段数のフィールドの場合、Ｖａｌｕｅのフィールドには、論理段数の範囲が設定される。そして、例えば、判定のフィールドには、Ｖａｌｕｅのフィールドに設定された論理段数の範囲が該当する領域の識別情報が設定される。機械学習ＤＢ３０３によれば、情報処理装置１００は、例えば、論理段数が０以上２０個以内であるＯＫ領域に該当すると判定する。
【００６７】
図８は、対応策ＤＢの記憶例を示す説明図である。対応策ＤＢ３０４は、例えば、タイミングエラー主要因ごとに、判定結果に応じた対策の出力内容を有する。対応策ＤＢ３０４は、例えば、タイミングエラー主要因、判定値、対策内容のフィールドを有する。
【００６８】
タイミングエラー主要因のフィールドには、タイミングエラー主要因の識別情報として、要因の名前が設定される。判定値のフィールドには、判定結果が設定される。判定値のフィールドには、「ＷＡＲＮ」または「ＮＧ」が設定される。対策内容のフィールドには、要因別に、判定結果に対応する対策内容が設定される。情報処理装置１００は、例えば、タイミング検証結果において新たなネットリストが示す対象回路の内のパスの論理段数がＷＡＲＮ領域に対応すると判定した場合、対応策ＤＢ３０４から対策内容を取得してレポートとして出力する。
【００６９】
図９は、タイミングエラーに関するレポート例を示す説明図である。レポート３０２−ｘは、例えば、タイミング検証によって得られるタイミングエラーに関するレポートである。
【００７０】
レポート３０２−ｘは、例えば、レジスタＡとレジスタＢとのパスのタイミングエラーに関する情報である。「Ｓｏｕｒｃｅ」とは、パスの送信側のレジスタを示す。図９の例では、レジスタＡが送信側のレジスタである。送信側のレジスタを省略して送信レジスタとも称する。「Ｓｉｎｋ」とは、パスの受信側のレジスタを示す。受信側のレジスタを省略して受信レジスタとも称する。図９の例では、レジスタＢが受信側のレジスタである。
【００７１】
「Ｄａｔａ  Ａｒｒｉｖａｌ  Ｔｉｍｅ」は、例えば共通のクロックソースの送信エッジから送信レジスタを通って、受信レジスタにデータが到着するまでの時間である。「Ｄａｔａ  Ｒｅｑｕｉｒｅｄ  Ｔｉｍｅ」は、満たすべき時間である。
【００７２】
「Ｄａｔａ  Ｒｅｑｕｉｒｅｄ  Ｔｉｍｅ」から「Ｄａｔａ  Ａｒｒｉｖａｌ  Ｔｉｍｅ」を引いた値が「Ｓｌａｃｋ（スラック）」である。「Ｓｌａｃｋ」は、マイナス値であれば、パスにはタイミングエラーが発生してあり、プラス値であれば、パスにはタイミングエラーが発生していない。図９の例では、「Ｓｌａｃｋ」が「−２」であるため、パスにはタイミングエラーが発生していると判定される。
【００７３】
また、「Ｄａｔａ  Ａｒｒｉｖａｌ  Ｐａｔｈ」および「Ｔｏｔａｌ  Ａｒｒｉｖａｌ  Ｐａｔｈ」には、パスのデータ信号の詳細な遅延が記載される。
【００７４】
「Ｔｏｔａｌ」が合計遅延時間である。「Ｉｎｃｒ」はパス上の要素の遅延時間である。「Ｔｙｐｅ」は遅延の種類である。「Ｔｙｐｅ」が「ＣＥＬＬ」の場合、遅延はゲート遅延である。「Ｔｙｐｅ」が「ＩＣ（Ｉｎｔｅｒ  Ｃｏｎｎｅｃｔ）」であれば、遅延は配線遅延である。「Ｆａｎｏｕｔ」はパス上の要素のファンアウト数である。「Ｅｌｅｍｅｎｔ」は、パス上の遅延となる要素である。
【００７５】
レポート３０２−ｘによれば、レジスタＡとレジスタＢとのデータパス上には、セルＡとセルＢとがある。セルＡとセルＢとレジスタＢとのそれぞれのゲート遅延時間は１［ｎｓ］である。配線遅延時間は７［ｎｓ］である。このため、合計遅延時間が１０［ｎｓ］であるのに対して、配線遅延時間が７［ｎｓ］であるため、このパスは配線経路が悪いため、タイミングエラーが発生していると推測される。
【００７６】
（情報処理装置１００の機能的構成例）
図１０は、情報処理装置の機能的構成例を示すブロック図である。情報処理装置１００は、制御部１０００と、記憶部１０１０と、を有する。制御部１０００は、取得部１００１と、判定部１００２と、出力部１００３と、を有する。制御部１０００の処理は、例えば、図４に示すＣＰＵ４０１がアクセス可能なＲＯＭ４０２、ＲＡＭ４０３、ディスク４０５などの記憶装置に記憶されたプログラムにコーディングされている。そして、ＣＰＵ４０１が記憶装置から該プログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部１０００の処理が実現される。また、制御部１０００の処理結果は、例えば、ＲＯＭ４０２、ＲＡＭ４０３、ディスク４０５、半導体メモリ（図示省略）などの記憶装置に記憶される。
【００７７】
記憶部１０１０は、例えば、ネットリスト３０１と、各種のレポート３０２と、機械学習ＤＢ３０３と、対応策ＤＢ３０４と、を有する。記憶部１０１０は、ＲＯＭ４０２、ＲＡＭ４０３、ディスク４０５、半導体メモリ（図示省略）などの記憶装置によって実現される。
【００７８】
まず、パスの遅延に関する項目の種類が１種類の場合を例に挙げて説明する。
【００７９】
取得部１００１は、検証の対象回路に含まれるパスの遅延に関する項目の値を取得する。具体的には、取得部１００１は、例えば、ネットリスト３０１や各種のレポート３０２から、項目の値を抽出することにより項目の値を取得してもよい。また、取得部１００１は、例えば、キーボード４０７やマウス４０８などの入力装置に対するユーザの操作によって入力された項目の値を受け付けることにより項目の値を取得してもよい。
【００８０】
また、取得部１００１は、対象回路に含まれるパスのうちレポート３０２−ｘに示すようにタイミングエラーと判定されたパスのいずれかのパスを順に処理対象のパスとして決定する。そして、取得部１００１は、決定した処理対象のパスについての項目の値を取得する。これにより、情報処理装置１００は、タイミングエラーと判定されたパスの各々について順番にタイミングエラーの要因を判定することができる。ここで、項目が論理段数であり、処理対象のパスについて取得された項目の値が「２３」の場合を例に挙げて説明する。
【００８１】
つぎに、判定部１００２は、機械学習ＤＢ３０３を参照して、複数の領域のうち、取得部１００１によって取得された項目の値に対応する領域がいずれかの領域であるか否かを判定する。複数の領域は、例えば、少なくとも上述したＯＫ領域と、ＮＧ領域と、を含む。本実施の形態では、複数の領域は、例えば、ＯＫ領域と、ＷＡＲＮ領域と、ＮＧ領域と、の３つの領域を含む。複数の領域が３つの領域を含む場合に、例えばいずれかの領域は、複数の領域のうち、タイミング制約を満たさない可能性の高さが高い順に１または２つの領域である。タイミング制約を満たさない可能性の高さは、ＮＧ領域、ＷＡＲＮ領域、ＯＫ領域の順である。タイミング制約を満たさない可能性の高さが高い順に２つの領域をいずれかの領域とする場合、いずれかの領域は、ＷＡＲＮ領域と、ＮＧ領域と、の２つの領域である。具体的には、判定部１００２は、複数の領域のうち、取得部１００１によって取得された項目の値に対応する領域を特定する。そして、判定部１００２は、特定した領域がいずれかの領域であるか否かを判定する。
【００８２】
上述した論理段数が「２３」である場合、判定部１００２は、「２３」に対応するＷＡＲＮ領域を特定する。そして、判定部１００２は、特定した領域がいずれかの領域であると判定する。
【００８３】
つぎに、出力部１００３は、いずれかの領域であると判定した場合、対応策ＤＢ３０４を参照して、いずれかの領域を示す領域情報に対応付けられた対策情報を出力する。出力部１００３は、例えば、対応策ＤＢ３０４から、項目についてのいずれかの領域を示す領域情報に対策内容を取得して対策内容を含むレポートを出力する。出力部１００３は、対策情報をディスプレイ４０９などに表示してもよい。または、出力部１００３は、パスおよび項目に関連付けて対策情報を、記憶部１０１０などに記憶してもよい。
【００８４】
上述した論理段数が「２３」である場合、出力部１００３は、対応策ＤＢ３０４から、タイミングエラー主要因のフィールドが「論理段数」であり、判定値のフィールドが「ＷＡＲＮ」である場合の対策内容を取得する。そして、出力部１００３は、取得した対策内容に基づきレポート３１０−１を生成して出力する。
【００８５】
つぎに、パスの遅延に関する項目の種類が複数種類の場合を例に挙げて説明する。
【００８６】
取得部１００１は、複数の項目の各々について、検証の対象回路に含まれるパスの遅延に関する項目の値を取得する。取得方法は、項目の種類が１つの場合と同じであるため、詳細な説明を省略する。
【００８７】
つぎに、判定部１００２は、複数の項目の各々について、機械学習ＤＢ３０３を参照して、複数の領域のうち、取得部１００１によって取得された項目の値に対応する領域がいずれかの領域であるか否かを判定する。
【００８８】
そして、出力部１００３は、複数の項目の各々について、いずれかの領域であると判定した場合、対応策ＤＢ３０４を参照して、いずれかの領域を示す領域情報に対応付けられた対策情報を出力する。出力形式としては、ディスプレイ４０９への出力、ネットワーク４１０を介して外部の装置への出力、ＲＯＭ４０２やＲＡＭ４０３などの記憶装置への出力が挙げられる。具体的には、出力部１００３は、例えば、対応策ＤＢ３０４から、いずれかの領域であると判定された項目についてのいずれかの領域を示す領域情報に対策内容を取得する。つづいて、出力部１００３は、例えば、取得した対策内容を含むレポートを生成する。そして、出力部１００３は、例えば、生成したレポートを出力する。
【００８９】
また、出力部１００３は、例えば、生成したレポートに基づいて、パス別に、対策内容を出力してもよい。なお、後述する図１１を用いてパス別に対策内容をディスプレイ４０９へ出力した例を説明する。
【００９０】
また、出力部１００３は、例えば、生成したレポートに基づいて、項目別、または項目および領域別に、対策内容と、パスと、を出力してもよい。
【００９１】
また、複数の項目の各々に優先度が定められていてもよい。出力部１００３は、生成したレポートに基づいて、優先度の高い項目順に、対策内容と、パスとを出力してもよい。なお、後述する図１２を用いて優先度の高い項目順に対策内容とパスとをディスプレイ４０９へ出力した例を説明する。
【００９２】
ここで、いずれかの項目は、複数の項目のうちの優先度が高い順に上位所定数番目までの項目である。例えば、対象回路の設計工程において上流の工程により値が特定可能な項目の優先度が高くなるように設定され、対象回路の設計工程において下流の工程により値が特定可能な項目の優先度は低くなるように設定される。例えば、論理段数は、ＲＴＬのネットリストを論理合成した後のネットリスト３０１に基づいて特定される。すなわち、論理段数は、レイアウト設計を行うことなく特定可能な項目である。一方、配置間距離、ファンアウト数、クロックスキュー、配線長などのようにレイアウト設計を行うことにより値が特定される項目は、優先度を低くする。ここでは、論理段数の優先度は、配置間距離、ファンアウト数、クロックスキュー、配線長の優先度よりも高く設定される。また、配置間距離、ファンアウト数、クロックスキュー、配線長の優先度は同じに設定される。
【００９３】
具体的には、判定部１００２は、例えば、複数の項目のうち、優先度が高い順に所定数番目までの項目についての項目の値に対応する領域がＷＡＲＮ領域またはＮＧ領域であると判定した場合、所定数番目までの項目以外の項目について判定処理を行わない。ここでの判定処理とは、上述した項目の値が対応する領域がいずれかの領域であるか否かを判定する処理である。より具体的には、判定部１００２は、例えば、論理段数についての値に対応する領域がＷＡＲＮ領域またはＮＧ領域であると判定した場合、論理段数以外の項目についての判定処理を行わない。また、判定部１００２は、例えば、論理段数についての値に対応する領域がＷＡＲＮ領域またはＮＧ領域でないと判定した場合、論理段数以外の項目についての判定処理を行う。
【００９４】
図１１は、画面出力例１を示す説明図である。上述したように、出力部１００３は、例えば、各対策内容を含むレポートに基づいて、パス別に、対策内容をディスプレイ４０９に出力する。図１１の例では、出力部１００３は、パスＰ１に関連付けて論理段数の対策内容と配置間距離の対策内容とを出力する。論理段数および配置間距離は、パスＰ１についての値に対応する領域がＷＡＲＮ領域またはＮＧ領域に該当すると判定された項目である。これにより、情報処理装置１００は、パス別に、エラー要因の特定の容易化を図ることができる。
【００９５】
図１２は、画面出力例２を示す説明図である。上述したように、出力部１００３は、例えば、項目および領域の対策内に関連付けてパスを出力する。図１２の例では、論理段数が多いことをエラー要因とするパスは、パスＰ１とパスＰ２である。出力部１００３は、論理段数についての対策内容と、論理段数が多いことがエラー要因であるパスと、を関連付けて出力する。これにより、情報処理装置１００は、タイミングエラーの解消を支援することができる。
【００９６】
（情報処理装置１００が行う処理手順例）
図１３は、情報処理装置が行う処理手順例１を示すフローチャートである。情報処理装置１００は、レポート３０２からエラーファイルを読み込む（ステップＳ１３０１）。エラーファイルとは、例えば、レポート３０２−ｘなどである。つぎに、情報処理装置１００は、最初のパスを処理対象に決定する（ステップＳ１３０２）。最初のパスとは、エラーファイルの先頭に記載されたタイミングエラーであると判定されたパスである。そして、情報処理装置１００は、処理対象のパスについて各項目の値を取得する（ステップＳ１３０３）。
【００９７】
つぎに、情報処理装置１００は、論理段数についてチェックを行い（ステップＳ１３０４）、ステップＳ１３０５へ移行する。ステップＳ１３０４においてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得した論理段数に対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、ステップＳ１３０５の他に図１４に示す処理に移行する。このように、ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、図１４に示す処理をスレッドとして起動して実行する。このため、ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、図１４に示す処理と、ステップＳ１３０５との両方に移行する。
【００９８】
情報処理装置１００は、配置間距離についてチェックを行い（ステップＳ１３０５）、ステップＳ１３０６へ移行する。ステップＳ１３０５において配置間距離についてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得した配置間距離に対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、ステップＳ１３０４と同様に、ステップＳ１３０６と、図１４に示す処理と、に移行する。このように、ＷＡＲＮ領域またはＮＧ領域であると判定される都度、情報処理装置１００は、図１４に示す処理をスレッドとして起動する。
【００９９】
情報処理装置１００は、ファンアウト数についてチェックを行い（ステップＳ１３０６）、ステップＳ１３０７へ移行する。ステップＳ１３０６においてファンアウト数についてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得したファンアウト数に対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、ステップＳ１３０４およびステップＳ１３０５と同様に、図１４に示す処理にも移行する。
【０１００】
また、情報処理装置１００は、クロックスキューについてチェックを行い（ステップＳ１３０７）、ステップＳ１３０８へ移行する。ステップＳ１３０７においてクロックスキューについてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得したクロックスキューに対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、ステップＳ１３０４からステップＳ１３０６と同様に、ステップＳ１３０８と、図１４に示す処理と、に移行する。
【０１０１】
つぎに、情報処理装置１００は、配線長についてチェックを行い（ステップＳ１３０８）、ステップＳ１３０９へ移行する。ステップＳ１３０８において配線長についてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得した配線長に対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、ステップＳ１３０４からステップＳ１３０７と同様に、図１４に示す処理にも移行する。
【０１０２】
つぎに、情報処理装置１００は、処理対象のパスが最後のパスか否かを判定する（ステップＳ１３０９）。ステップＳ１３０９において最後のパスか否かを判定するとは、タイミングエラーと判定されたパスのうち、処理対象のパス以外のパスがすでに処理対象となっているか否かを判定することを示す。
【０１０３】
そして、処理対象のパスが最後のパスでないと判断された場合（ステップＳ１３０９：Ｎｏ）、情報処理装置１００は、つぎのパスを処理対象に決定し（ステップＳ１３１０）、ステップＳ１３０３へ戻る。つぎのパスとは、エラーファイルに記載されたタイミングエラーであると判定されたパスのうち処理対象となっていないパスのいずれかのパスを示す。情報処理装置１００は、ステップＳ１３０２とステップＳ１３０９とステップＳ１３１０とによってタイミングエラーと判定されたパスを順番に処理対象として選択することができる。処理対象のパスが最後のパスであると判断された場合（ステップＳ１３０９：Ｙｅｓ）、情報処理装置１００は、生成されたレポートを出力する（ステップＳ１３１１）。レポートについては、図１４に示す処理を行うスレッドによって生成される。また、ステップＳ１３１１について、情報処理装置１００は、図１４に示す処理が終了した後に行う。
【０１０４】
図１４は、情報処理装置が行うレポート生成処理手順例を示すフローチャートである。図１３または後述する図１５において項目の値に対応する領域がＷＡＲＮ領域またはＮＧ領域であると判定された場合に、情報処理装置１００は、項目の種類と、領域情報と、を入力としてレポートの生成処理を行うスレッドを生成する。図１４に示す各ステップは、生成されたスレッドの処理内容である。
【０１０５】
まず、情報処理装置１００は、対応策ＤＢ３０４を参照して、項目および該当領域についての対策内容を取得する（ステップＳ１４０１）。つぎに、情報処理装置１００は、対応内容に基づきレポートを生成し（ステップＳ１４０２）、一連の処理を終了する。
【０１０６】
図１５は、情報処理装置が行う処理手順例２を示すフローチャートである。情報処理装置１００は、レポート３０２からエラーファイルを読み込む（ステップＳ１５０１）。エラーファイルとは、例えば、レポート３０２−ｘなどである。つぎに、情報処理装置１００は、最初のパスを処理対象に決定する（ステップＳ１５０２）。最初のパスとは、エラーファイルの先頭に記載されたタイミングエラーであると判定されたパスである。そして、情報処理装置１００は、処理対象のパスについて各項目の値を取得する（ステップＳ１５０３）。
【０１０７】
つぎに、情報処理装置１００は、論理段数についてチェックを行い（ステップＳ１５０４）、ステップＳ１５０５へ移行する。ステップＳ１５０４においてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得した論理段数に対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、図１４の処理にも移行する。このように、ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、図１４に示す処理をスレッドとして起動して実行する。このため、ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、図１４に示す処理と、ステップＳ１５０５との両方に移行する。
【０１０８】
つぎに、情報処理装置１００は、ＷＡＲＮ領域またはＮＧ領域であるか否かを判断する（ステップＳ１５０５）。ＷＡＲＮ領域またはＮＧ領域であると判断された場合（ステップＳ１５０５：Ｙｅｓ）、情報処理装置１００は、ステップＳ１５１０へ移行する。ＷＡＲＮ領域またはＮＧ領域でないと判断された場合（ステップＳ１５０５：Ｎｏ）、情報処理装置１００は、ステップＳ１５０６へ移行する。
【０１０９】
情報処理装置１００は、配置間距離についてチェックを行い（ステップＳ１５０６）、ステップＳ１５０７へ移行する。ステップＳ１５０６において配置間距離についてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得した配置間距離に対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、ステップＳ１５０４と同様に、図１４に処理にも移行する。このように、ＷＡＲＮ領域またはＮＧ領域であると判定される都度、情報処理装置１００は、図１４に示す処理をスレッドとして起動する。
【０１１０】
情報処理装置１００は、ファンアウト数についてチェックを行い（ステップＳ１５０７）、ステップＳ１５０８へ移行する。ステップＳ１５０７においてファンアウト数についてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得したファンアウト数に対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、ステップＳ１５０４およびステップＳ１５０６と同様に、図１４に示す処理にも移行する。
【０１１１】
また、情報処理装置１００は、クロックスキューについてチェックを行い（ステップＳ１５０８）、ステップＳ１５０９へ移行する。ステップＳ１５０８においてクロックスキューについてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得したクロックスキューに対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、ステップＳ１５０４とステップＳ１５０６とステップＳ１５０７と同様に、ステップＳ１５０９の他に図１４に示す処理にも移行する。
【０１１２】
つぎに、情報処理装置１００は、配線長についてチェックを行い（ステップＳ１５０９）、ステップＳ１５１０へ移行する。ステップＳ１５０９において配線長についてチェックを行うとは、情報処理装置１００が、処理対象のパスについて取得した配線長に対応する領域がＷＡＲＮ領域またはＮＧ領域であるか否かを判定する。ＷＡＲＮ領域またはＮＧ領域であると判定された場合、情報処理装置１００は、ステップＳ１５０４とステップＳ１５０６からステップＳ１５０８と同様に、ステップＳ１５１０の他に、図１４に示す処理にも移行する。
【０１１３】
つぎに、情報処理装置１００は、処理対象のパスが最後のパスか否かを判定する（ステップＳ１５１０）。ステップＳ１５１０において最後のパスか否かを判定するとは、タイミングエラーと判定されたパスのうち、処理対象のパス以外のパスがすでに処理対象となっているか否かを判定することを示す。
【０１１４】
そして、処理対象のパスが最後のパスでないと判断された場合（ステップＳ１５１０：Ｎｏ）、情報処理装置１００は、つぎのパスを処理対象に決定し（ステップＳ１５１１）、ステップＳ１５０３へ戻る。つぎのパスとは、エラーファイルに記載されたタイミングエラーであると判定されたパスのうち処理対象となっていないパスのいずれかのパスを示す。情報処理装置１００は、ステップＳ１５０２とステップＳ１５１０とステップＳ１５１１とによってタイミングエラーと判定されたパスを順番に処理対象として選択することができる。処理対象のパスが最後のパスであると判断された場合（ステップＳ１５１０：Ｙｅｓ）、情報処理装置１００は、生成されたレポートを出力する（ステップＳ１５１２）。レポートについては、図１４に示す処理を行うスレッドによって生成される。また、ステップＳ１５１２について、情報処理装置１００は、図１４に示す処理が終了した後に行う。
【０１１５】
また、本実施の形態では、処理対象のパスとしてタイミングエラーであると判定されたパスを例に挙げたが、これに限らない。情報処理装置１００は、例えば、検証者などによって指定されたパスを処理対象のパスとしてもよい。例えば、情報処理装置１００は、タイミング検証を行う前に、タイミングエラーが発生する可能性の高いパスを判別するために用いられてもよい。
【０１１６】
また、本実施の形態では、機械学習ＤＢ３０３を作成者の操作によって作成する例を挙げたが、これに限らない。例えば、情報処理装置１００が、項目別に、項目の値とスラック値とを入力情報として、機械学習ＤＢ３０３を生成してもよい。情報処理装置１００は、項目別に、項目の値と、スラック値とを入力情報として、機械学習ＤＢ３０３を生成してもよい。
【０１１７】
以上説明したように、情報処理装置１００は、対象回路のパスの遅延に関する項目の値が、タイミングエラーの可能性の高さで区切られた領域のうちのＮＧ領域またはＷＡＲＮ領域に該当する場合、タイミングエラー解消の対策案を出力する。これにより、タイミングエラーの原因の特定の効率化を図ることができる。例えば、タイミングエラーの原因の特定の効率化を図るとは、例えば、検証者の習熟度によらずに、タイミングエラーの原因の特定に要する時間の短縮化を図ることを示す。例えばタイミングエラーの原因を特定するために、検証者の操作によって数ヶ月要していた場合、本実施の形態によれば数日で行うことができるようになる場合がある。
【０１１８】
また、複数の領域は、パスのスラック値と、パスの項目の値と、に基づいて区分けされた領域である。これにより、情報処理装置１００は、過去の設計情報に基づいて区分けされた領域を用いることができるため、項目別に項目の値がタイミングエラーの要因であるか否かの判定精度の向上を図ることができる。
【０１１９】
また、複数の領域は、ＯＫ領域とＮＧ領域とＷＡＲＮ領域との３つの領域であり、ＷＡＲＮ領域は、スラック値が計算済みの複数のパスのうち所定の割合のパスが項目の値に基づいて分類される領域である。これにより、複数のパスが多くなると、ＷＡＲＮ領域の領域範囲が狭くなる。したがって、判定精度の向上を図ることができる。
【０１２０】
また、項目の種類が複数ある場合、情報処理装置１００は、複数の項目の各々について各処理を行う。これにより、情報処理装置１００は、タイミングエラーの様々な要因についての検証の容易化を図ることができる。
【０１２１】
情報処理装置１００は、いずれかの項目について項目の値に対応する領域がＷＡＲＮ領域またはＮＧ領域であると判定した場合、いずれかの項目以外の項目について、いずれかの領域であるか否かを判定する処理と、対策情報を出力する処理と、を行わない。いずれかの項目は、論理合成後のネットリストから値が特定可能な項目である。ネットリストから値が特定可能な項目とは、例えば、論理段数である。例えば論理段数が多いことが、タイミングエラーの原因である場合、設計者が、ネットリストを修正しなければならない可能性がある。このため、論理段数が多いことが、タイミングエラーの原因である場合、レイアウトデータから値が特定されるような項目については処理の対象としないことにより、検証に要する時間の短縮化を図ることができる。
【０１２２】
また、処理対象のパスは、タイミングエラーであると判定されたパスである。これにより、タイミングエラーであると判定済みのパスに限定することにより、解析時間の短縮を図ることができる。
【０１２３】
なお、本実施の形態で説明した検証支援方法は、予め用意された検証支援プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証支援プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、検証支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１２４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１２５】
（付記１）回路に含まれるパスがタイミング制約を満たさない可能性の高さによって区分けされた複数の領域の各々の領域について、前記領域を示す領域情報と、前記領域における前記パスの遅延に関する項目の値の範囲と、が対応付けられた第１対応情報と、
前記複数の領域のうちのいずれかの領域について、前記いずれかの領域を示す領域情報と、前記項目の値が前記いずれかの領域に対応する前記パスの遅延への対応策を示す対策情報と、が対応付けられた第２対応情報と、
を記憶する記憶部にアクセス可能なコンピュータに、
検証の対象回路に含まれるパスの遅延に関する前記項目の値を取得し、
前記第１対応情報を参照して、前記複数の領域のうち、取得した前記項目の値に対応する領域が前記いずれかの領域であるか否かを判定し、
前記いずれかの領域であると判定した場合、前記第２対応情報を参照して、前記いずれかの領域を示す前記領域情報に対応付けられた前記対策情報を出力する、
処理を実行させることを特徴とする検証支援プログラム。
【０１２６】
（付記２）前記複数の領域は、前記回路に含まれる複数のパスの各々のパスについての前記パスの遅延に関する指標値と、前記パスの遅延に関する前記項目の値と、に基づいて区分けされたことを特徴とする付記１に記載の検証支援プログラム。
【０１２７】
（付記３）前記複数の領域は、前記タイミング制約を満たさない可能性の高さが最も高い第１領域と、前記タイミング制約を満たさない可能性の高さが最も低い第２領域と、前記タイミング制約を満たさない可能性の高さが２番目に高い第３領域と、を含み、
前記回路に含まれる前記複数のパスの各々のパスが前記複数の領域のうちのいずれかの領域に分類される場合に、
前記第１領域は、前記複数のパスのうち、前記指標値に基づいて前記タイミング制約を満たさないと判定されたパスが前記項目の値に基づいて分類される領域であり、
前記第２領域は、前記複数のパスのうち、前記指標値に基づいて前記タイミング制約を満たすと判定されたパスが前記項目の値に基づいて分類される領域であり、
前記第３領域は、前記複数のパスのうち、所定の割合のパスが前記項目の値に基づいて分類される領域であることを特徴とする付記２に記載の検証支援プログラム。
【０１２８】
（付記４）前記第１対応情報は、前記パスの遅延に関する複数の項目の各々の項目について、前記複数の領域の各々の領域についての前記領域を示す領域情報と、前記領域における前記項目の値の範囲と、が対応付けられ、
前記第２対応情報は、前記複数の項目の各々の項目について、前記いずれかの領域についての前記いずれかの領域を示す領域情報と、前記項目の値が前記いずれかの領域に対応する前記パスの遅延への対応策を示す対策情報と、が対応付けられ、
前記コンピュータに、
前記複数の項目の各々の項目について、前記項目の値を取得する処理と、前記いずれかの領域であるか否かを判定する処理と、前記対策情報を出力する処理と、を実行させることを特徴とする付記１〜３のいずれか一つに記載の検証支援プログラム。
【０１２９】
（付記５）前記コンピュータに、
前記複数の項目のうちのいずれかの項目について、取得した前記項目の値に対応する領域が前記いずれかの領域であると判定した場合、前記複数の項目のうちの前記いずれかの項目と異なる項目について、前記いずれかの領域であるか否かを判定する処理と、前記対策情報を出力する処理と、を実行させないことを特徴とする付記４に記載の検証支援プログラム。
【０１３０】
（付記６）前記いずれかの項目は、前記対象回路に含まれるセルと前記セル間の接続関係を示すネットリストから値が特定可能な項目であることを特徴とする付記５に記載の検証支援プログラム。
【０１３１】
（付記７）前記対象回路に含まれる前記パスは、前記タイミング制約を満たさないと判定されたパスであることを特徴とする付記１〜６のいずれか一つに記載の検証支援プログラム。
【０１３２】
（付記８）回路に含まれるパスがタイミング制約を満たさない可能性の高さによって区分けされた複数の領域の各々の領域について、前記領域を示す領域情報と、前記領域における前記パスの遅延に関する項目の値の範囲と、が対応付けられた第１対応情報と、
前記複数の領域のうちのいずれかの領域について、前記いずれかの領域を示す領域情報と、前記項目の値が前記いずれかの領域に対応する前記パスの遅延への対応策を示す対策情報と、が対応付けられた第２対応情報と、
を記憶する記憶部にアクセス可能なコンピュータが、
検証の対象回路に含まれるパスの遅延に関する前記項目の値を取得し、
前記第１対応情報を参照して、前記複数の領域のうち、取得した前記項目の値に対応する領域が前記いずれかの領域であるか否かを判定し、
前記いずれかの領域であると判定した場合、前記第２対応情報を参照して、前記いずれかの領域を示す前記領域情報に対応付けられた前記対策情報を出力する、
処理を実行することを特徴とする検証支援方法。
【０１３３】
（付記９）回路に含まれるパスがタイミング制約を満たさない可能性の高さによって区分けされた複数の領域の各々の領域について、前記領域を示す領域情報と、前記領域における前記パスの遅延に関する項目の値の範囲と、が対応付けられた第１対応情報と、前記複数の領域のうちのいずれかの領域について、前記いずれかの領域を示す領域情報と、前記項目の値が前記いずれかの領域に対応する前記パスの遅延への対応策を示す対策情報と、が対応付けられた第２対応情報と、を記憶する記憶部と、
検証の対象回路に含まれるパスの遅延に関する前記項目の値を取得し、前記第１対応情報を参照して、前記複数の領域のうち、取得した前記項目の値に対応する領域が前記いずれかの領域であるか否かを判定し、前記いずれかの領域であると判定した場合、前記第２対応情報を参照して、前記いずれかの領域を示す前記領域情報に対応付けられた前記対策情報を出力する制御部と、
を有することを特徴とする情報処理装置。
【符号の説明】
【０１３４】
１００  情報処理装置
１０１  第１対応情報
１０２  第２対応情報
１０３，３０１  ネットリスト
１１１  対象回路
１１２  パス
１１３，１１４  レジスタ
３０３  機械学習ＤＢ
３０４  対応策ＤＢ
３０５  設計情報
１０００  制御部
１００１  取得部
１００２  判定部
１００３  出力部
１０１０  記憶部
【図１】
2018073150.tif 000003
【図２】
2018073150.tif 000004
【図３】
2018073150.tif 000005
【図４】
2018073150.tif 000006
【図５】
2018073150.tif 000007
【図６】
2018073150.tif 000008
【図７】
2018073150.tif 000009
【図８】
2018073150.tif 000010
【図９】
2018073150.tif 000011
【図１０】
2018073150.tif 000012
【図１１】
2018073150.tif 000013
【図１２】
2018073150.tif 000014
【図１３】
2018073150.tif 000015
【図１４】
2018073150.tif 000016
【図１５】
2018073150.tif 000017