(57)【要約】【課題】ＦＰＧＡの動作周波数等の動作条件を示す情報から信号パスに含まれる論理セルの最適な段数を決定する。【解決手段】情報処理装置１は、フィールドプログラマブルゲートアレイに配置配線される複数のセルの接続関係を示すネット情報から、クロックに応じて信号を送受信する送信セル及び受信セルとの間の信号パスに関する情報を抽出する。情報処理装置１は、信号パスにおいて、クロックの１周期の間に包含可能なセルの総遅延量を示すセル総遅延量を、クロックの１周期の長さを示すクロック周期情報を少なくとも含む入力情報から推定する。情報処理装置１は、セル総遅延量から、信号パスに含まれる論理セルの段数を算出する。情報処理装置１は、算出された論理セルの段数を示す段数情報を出力する。【選択図】図６
2018205993.tif 000002
【特許請求の範囲】
【請求項１】
フィールドプログラマブルゲートアレイに配置配線される複数のセルの接続関係を示すネット情報から、クロックに応じて信号を送受信する送信セル及び受信セルとの間の信号パスに関する情報を抽出し、
前記信号パスにおいて、前記クロックの１周期の間に包含可能なセルの総遅延量を示すセル総遅延量を、前記クロックの１周期の長さを示すクロック周期情報を少なくとも含む入力情報から推定し、
前記セル総遅延量から、前記信号パスに含まれる論理セルの段数を算出し、
前記算出された論理セルの段数を示す段数情報を出力する、
処理をコンピュータに実行させる最適段数算出プログラム。
【請求項２】
前記セル総遅延量を推定する処理は、前記入力情報を入力とし、前記セル総遅延量を出力として学習された教師あり学習器により実行される、請求項１に記載の最適段数算出プログラム。
【請求項３】
前記論理セルの段数を算出する処理は、
前記セル総遅延量から前記送信セルの遅延量を減算して、前記送信セルと前記受信セルとの間に配置される論理セルの総遅延量である論理セル総遅延量を演算し、
前記論理セル総遅延量と、前記論理セルの単体の遅延量である論理セル遅延量から前記段数を演算する、
処理を含む請求項１又は２に記載の最適段数算出プログラム。
【請求項４】
前記論理セル総遅延量を演算する処理は、
前記信号パスに含まれる前記送信セル、受信セル及び前記論理セル以外の他セルを抽出し、
前記抽出された他セルの遅延量を、前記論理セル総遅延量から減算して、前記信号パスに含まれる前記論理セルのみの遅延量である純論理セル遅延量を演算する、処理を含み、
前記段数を演算する処理は、前記純論理セル遅延量を前記論理セル遅延量で除して前記段数を演算する、処理を含む、請求項３に記載の最適段数算出プログラム。
【請求項５】
前記ネット情報は、前記複数のセルをフィールドプログラマブルゲートアレイに配置配線したときの前記複数のセルの配置位置及び前記複数のセルの間の配線に関する情報を示す配置配線情報を含み、
前記入力情報は、前記送信セル及び前記受信セルのそれぞれの配置位置を示す配置情報を含む、請求項１〜４の何れか一項に記載の最適段数算出プログラム。
【請求項６】
フィールドプログラマブルゲートアレイに配置配線される複数のセルの接続関係を示すネット情報から、クロックに応じて信号を送受信する送信セル及び受信セルとの間の信号パスに関する情報を抽出し、
前記信号パスにおいて、前記クロックの１周期の間に包含可能なセルの総遅延量を示すセル総遅延量を、前記クロックの１周期の長さを示すクロック周期情報を少なくとも含む入力情報から推定し、
前記セル総遅延量から、前記信号パスに含まれる論理セルの段数を算出し、
前記算出された論理セルの段数を示す段数情報を出力する、
処理をコンピュータが実行する最適段数算出方法。
【請求項７】
フィールドプログラマブルゲートアレイに配置配線される複数のセルの接続関係を示すネット情報から、クロックに応じて信号を送受信する送信セル及び受信セルとの間の信号パスに関する情報を抽出するパス情報抽出部と、
前記信号パスにおいて、前記クロックの１周期の間に包含可能なセルの総遅延量を示すセル総遅延量を、前記クロックの１周期の長さを示すクロック周期情報を少なくとも含む入力情報から推定するセル総遅延量推定部と、
前記セル総遅延量から、前記信号パスに含まれる論理セルの段数を算出するセル段数算出部と、
前記セル段数算出部によって算出された段数を示す段数情報を出力するセル段数情報出力部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、最適段数算出プログラム及び最適段数算出方法に関する。
【背景技術】
【０００２】
フィールドプログラマブルゲートアレイ（Field Programmable Gate Array、ＦＰＧＡ）等の設計において、クリティカルパス等のタイミングエラーの有無を検証する技術が知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１２３０５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、ＦＰＧＡの微細化及び高機能化等の進展に伴って、異なる周波数、及び異なる電圧で動作する複数の機能ブロックを搭載したＦＰＧＡが製品化されてきている。また、ＦＰＧＡを供給するメーカ及び供給されるＦＰＧＡのグレードに応じて遅延特性が異なる種々のＦＰＧＡが提供されている。
【０００５】
ＦＰＧＡに搭載する回路を設計する回路設計者によってレジスタ転送レベル（Register Transfer Level、ＲＴＬ）で記述された論理は、論理検証される。論理検証された論理は、所定のタイミング制約を充足するように論理合成されてネット情報が生成され、生成されたネット情報は配置配線され、セルの配置配線情報を示す配置配線データが生成される。生成された配置配線データは、タイミング検証され、セットアップエラー及びホールドエラー等のタイミングエラーが発生した信号パスを示すタイミング検証情報が出力される。回路設計者は、タイミング検証情報に示されるタイミングエラーが発生した信号パスのそれぞれについて、タイミングエラーが発生した信号パスのタイミングエラーを解消するために、配置配線変更で解消不可の場合、ＲＴＬを修正する。
【０００６】
回路設計者は、過去の経験に基づいて、タイミングエラーが発生した信号パスにフリップフロップを挿入して、タイミングエラーが解消するようにＲＴＬを修正する。ＲＴＬの修正は、回路設計者の過去の経験に基づいて実行されるため、設計者の経験が浅いとき等では、ＲＴＬの修正によりタイミングエラーを解消しないおそれがある。ＲＴＬの修正によってタイミングエラーが解消されないとき、ＲＴＬの修正からタイミング検証までの処理が繰り返されることになり、設計コストが増加するおそれがある。
【０００７】
また、回路設計者は、タイミングエラーを確実に解消するために、タイミングエラーが発生した信号パスにフリップフロップを過剰に挿入するおそれがある。タイミングエラーが発生した信号パスにフリップフロップが過剰に挿入されると、動作周波数が比較的高いフリップフロップの数が増加すると共にＦＰＧＡの回路規模が必要以上に増大しＦＰＧＡの消費電力が増加する。
【０００８】
一実施形態では、ＦＰＧＡの動作周波数等の動作条件を示す情報から信号パスに含まれる論理セルの最適な段数を決定することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、情報処理装置は、フィールドプログラマブルゲートアレイに配置配線される複数のセルの接続関係を示すネット情報から、クロックに応じて信号を送受信する送信セル及び受信セルとの間の信号パスに関する情報を抽出する。情報処理装置は、信号パスにおいてクロックの１周期の間に包含可能なセルの総遅延量を示すセル総遅延量を、クロックの１周期の長さを示すクロック周期情報を少なくとも含む入力情報から推定する。情報処理装置は、セル総遅延量から、信号パスに含まれる論理セルの段数を算出する。情報処理装置は、算出された論理セルの段数を示す段数情報を出力する。
【発明の効果】
【００１０】
一実施形態では、ＦＰＧＡの動作周波数等の動作条件を示す情報から信号パスに含まれる論理セルの最適な段数を決定することができる。
【図面の簡単な説明】
【００１１】
【図１】（ａ）はＦＰＧＡの概略平面図であり、（ｂ）は（ａ）に示すＣＬＢの内部ブロック図であり、（ｃ）は（ｂ）に示すＬＥの内部ブロック図である。
【図２】不図示の情報処理装置によるＦＰＧＡ設計処理を示す図である。
【図３】（ａ）はタイミングエラーが発生している信号パスの一例を示す図であり、（ｂ）は（ａ）に示す信号パスにフリップフロップを挿入した一例を示す図であり、（ｃ）は（ａ）に示す信号パスにフリップフロップを挿入した他の例を示す図である。
【図４】（ａ）は第１実施形態に係る設置位置決定処理を実行する情報処理装置の回路ブロック図であり、（ｂ）は（ａ）に示す処理部の機能ブロック図である。
【図５】図４（ａ）に示すセル遅延情報の一例を示す図である。
【図６】（ａ）は図４（ａ）に示す情報処理装置による最適段数算出処理のフローチャートであり、（ｂ）は（ａ）に示すＳ１０６の処理のより詳細な処理を示すフローチャートである。
【図７】図４（ｂ）に示すセル総遅延量推定部の動作を説明するための図である。
【図８】（ａ）は第２実施形態に係る設置位置決定処理を実行する情報処理装置の回路ブロック図であり、（ｂ）は（ａ）に示す処理部の機能ブロック図である。
【図９】（ａ）は図８（ａ）に示す情報処理装置による最適段数算出処理のフローチャートであり、（ｂ）は（ａ）に示すＳ４０４の処理のより詳細な処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下図面を参照して、実施形態に係る情報処理装置、設置位置決定プログラム及びその方法について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されない。
【００１３】
（一般的な最適段数算出方法）
実施形態に係る最適段数算出方法について説明する前に、一般的な最適段数算出方法について説明する。
【００１４】
図１（ａ）はＦＰＧＡの概略平面図であり、図１（ｂ）は図１（ａ）に示すＣＬＢの内部ブロック図であり、図１（ｃ）は図１（ｂ）に示すＬＥの内部ブロック図である。
【００１５】
ＦＰＧＡ９００は、外周部に沿って配置される複数のＩＯブロック９０１と、複数のＩＯブロック９０１に囲まれる内部領域にアレイ状に配置される複数のＣＬＢ９０２、と、ブロックＲＡＭ９０３及びＤＳＰ９０４等のＩＰプロックを有する。図１（ａ）において、ブロックＲＡＭ９０３は右下がり斜線のハッチが付され、ＤＳＰ９０４は左下がり斜線のハッチが付される。ＩＯブロック９０１、ＣＬＢ９０２、ブロックＲＡＭ９０３及びＤＳＰ９０４の間には、それぞれのブロックを接続可能な配線及びスイッチを有する配線領域が形成される。
【００１６】
ＣＬＢ９０２は、複数のロジックエレメント（Logic Element、ＬＥ）９２０を有する。複数のＬＥ９２０のそれぞれは、ルックアップテーブル（Look-Up Table、ＬＵＴ）９２１と、フリップフロップ９２２とを有する。ＬＵＴ９２１は、論理セルとも称され、多入力−１出力のテーブルであり、入力数に応じた規模のメモリで形成される。例えば、ＬＵＴ９２１は、５入力−１出力の場合には、３２ビットのメモリにより形成される。ＬＵＴ９２１は、配置配線処理時に外部から入力される設定に応じて、所望の組み合わせ回路を実現する。フリップフロップ９２２は、ＬＵＴ９２１から出力される信号を、配線領域を介して入力されるクロックに応じてラッチして、ラッチした信号を配線領域を介して他のＣＬＢ９０２に出力する。
【００１７】
図２は、不図示の情報処理装置によるＦＰＧＡ設計処理を示す図である。不図示の情報処理装置は、例えば、パーソナルコンピュータ等の電子計算機である。図２に示すＦＰＧＡ設計処理は、予め情報処理装置のメモリに記憶させているコンピュータプログラムに基づいて、主に中央処理装置（Central Processing Unit、ＣＰＵ）等の演算部により、情報処理装置の各要素と協働して実行される。
【００１８】
まず、情報処理装置は、設計者により設計されたＲＴＬを示すＲＴＬデータを取得し（Ｓ１０１）、取得したＲＴＬデータに対応するＲＴＬの論理検証を実行する（Ｓ１０２）。次いで、情報処理装置は、論理検証が実行されたＲＴＬデータと、タイミング制約情報とに基づいて論理合成を実行して、ネットリストとも称される論理合成データを生成する（Ｓ１０３）。タイミング制約情報は、クロック周波数等の使用するＦＰＧＡのタイミング制約を示す。次いで、情報処理装置は、生成された論理合成データに対応する回路をＦＰＧＡ上に配置配線する処理を実行して配置配線データを生成する（Ｓ１０４）。次いで、情報処理装置は、配置配線データに対応する配置配線情報のタイミング検証を実行して（Ｓ１０５）、タイミング検証結果を示すタイミング検証データを出力する（Ｓ１０６）。設計者は、タイミング検証結果を参照して、タイミングエラーが発生している信号パスのそれぞれについて、フリップフロップを追加するようにＲＴＬを書き換えることで、タイミングエラーが発生している信号パスのタイミングエラーを解消する。
【００１９】
しかしながら、タイミングエラーを解消するためにタイミングエラーが発生している信号パスにフリップフロップを挿入する処理は、設計者によって手動で実行されるため、作業を実行する設計者の経験に依存した処理となるおそれがある。例えば、経験が浅い設計者によって処理が実行されると、挿入されるフリップフロップの数又は位置が適切でないことに起因して、タイミングエラーが解消されないおそれがある。また、経験が浅い設計者によって処理が実行されると、挿入されるフリップフロップの数が多くなり過ぎるため、回路規模が必要以上に増大しＦＰＧＡの消費電力が増加するおそれがある。
【００２０】
図３（ａ）は、タイミングエラーが発生している信号パスの一例を示す図である。図３（ｂ）は図３（ａ）に示す信号パスにフリップフロップを挿入した一例を示す図であり、図３（ｃ）は図３（ａ）に示す信号パスにフリップフロップを挿入した他の例を示す図である。図３（ａ）及び３（ｂ）に示す例において信号パスにＦＰＧＡの特性では、送信セル及び受信セルであるフリップフロップ間の信号パスに配置可能なＬＵＴの段数は３段であるとする。
【００２１】
図３（ａ）に示す信号パス９０３において、送信セルであるフリップフロップ９２１と受信セルであるフリップフロップ９３２との間には、６段のＬＵＴ９２３が配置される。フリップフロップ９２１及び９３２の間の信号パスに配置可能なＬＵＴ９２３の段数は３段であるので、信号パス９０３において、タイミングエラーが発生する。
【００２２】
図３（ｂ）に示す信号パス９０４では、送信セルであるフリップフロップ９２１と受信セルであるフリップフロップ９２５との間には、フリップフロップ９２４が挿入される。送信セルであるフリップフロップ９２１と受信セルであるフリップフロップ９２５との間には、フリップフロップ９２４が挿入されることで、６段のＬＵＴ９２３が４段のＬＵＴ９２３−１及び２段の９２３−２に分割される。信号パス９０４では、ＬＵＴ９２３−１は４段であり、フリップフロップの間の信号パスに配置可能なＬＵＴの段数は３段よりも多く、タイミングエラーが解消されない。
【００２３】
一方、図３（ｃ）に示す信号パス９０５では、送信セルであるフリップフロップ９２１と受信セルであるフリップフロップ９３２との間には、フリップフロップ９２５及び９２６が挿入される。送信セルであるフリップフロップ９２１と受信セルであるフリップフロップ９３２との間には、フリップフロップ９２５及び９２６が挿入されることで、６段のＬＵＴ９２３がそれぞれが２段のＬＵＴ９２３−３、９２３−４及び９２３−５に分割される。
【００２４】
信号パス９０５では、フリップフロップの間には２段のＬＵＴが配置されるため、タイミングエラーが解消されるが、挿入されるフリップフロップの数が過剰となる。すなわち、フリップフロップの間の信号パスに配置可能なＬＵＴの段数は３段であるので、１つのフリップフロップのみを追加することでタイミングエラーが解消されるにもかかわらず、信号パス９０４では２つのフリップフロップが追加されている。信号パス９０５では、挿入されるフリップフロップの数が過剰となることで、動作周波数が比較的高いフリップフロップの数が増加すると共にＦＰＧＡの回路規模が必要以上に増大しＦＰＧＡの消費電力が増加する。
【００２５】
（実施形態に係る情報処理装置の概要）
実施形態に係る情報処理装置は、信号パスにおいて、クロックの１周期の間に包含可能なセルの総遅延量を示すセル遅延総量を、クロックの１周期の長さを示すクロック周期情報を少なくとも含む入力情報から推定する。そして、実施形態に係る情報処理装置は、セル遅延総量から、信号パスに含まれる論理セルの段数を決定する。実施形態に係る情報処理装置は、クロックの１周期の長さを示すクロック周期情報を少なくとも含む入力情報から推定した遅延総量から信号パスに含まれる論理セルの段数を算出することで、設計者の経験によらずに最適な段数を算出できる。
【００２６】
（第１実施形態に係る設置位置決定処理を実行する情報処理装置の構成及び機能）
図４（ａ）は第１実施形態に係る設置位置決定処理を実行する情報処理装置の回路ブロック図であり、図４（ｂ）は図４（ａ）に示す処理部の機能ブロック図である。
【００２７】
情報処理装置１は、通信部１０と、記憶部１１と、入力部１２と、出力部１３と、処理部２０とを有する。
【００２８】
通信部１０は、ＨＴＴＰ（Hypertext Transfer Protocol）のプロトコルに従ってインタネットを介して不図示のサーバ等と通信を行う。そして、通信部１０は、サーバ等から受信したデータを処理部２０に供給する。また、通信部１０は、処理部２０から供給されたデータをサーバ等に送信する。
【００２９】
記憶部１１は、例えば、磁気テープ装置、磁気ディスク装置、又は光ディスク装置のうちの少なくとも一つを備える。記憶部１１は、処理部２０での処理に用いられるオペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム、データ等を記憶する。例えば、記憶部１１は、アプリケーションプログラムとして、ＦＰＧＡの信号パスに含まれるＬＵＴの最適段数を算出する最適段数算出処理を実行するための最適段数算出プログラムを記憶する。最適段数算出プログラムは、例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な可搬型記録媒体から公知のセットアッププログラム等を用いて記憶部１１にインストールされてもよい。
【００３０】
また、記憶部１１は、最適段数算出処理で使用される種々のデータを記憶する。さらに、記憶部１１は、所定の処理に係る一時的なデータを一時的に記憶してもよい。記憶部１１は、ＦＰＧＡに搭載される回路の論理を記述したＲＴＬ１１１と、クロック周波数等のＦＰＧＡのタイミング制約を記述したタイミング制約情報１１２と、ＦＰＧＡのデバイスの種類のそれぞれのセルの遅延量を示すセル遅延情報１１３とを記憶する。
【００３１】
図５は、セル遅延情報１１３の一例を示す図である。
【００３２】
セル遅延情報１１３は、デバイスＡ及びＢのそれぞれについて、フリップフロップ、ＬＵＴ、ＲＡＭ及びＤＳＰの遅延量を規定する。デバイスＡでは、フリップフロップの遅延量は１００ｐｓ〜１５０ｐｓであり、ＬＵＴの遅延量は８０ｐｓ〜１５０ｐｓであり、ＲＡＭの遅延量は２００ｐｓ〜２５０ｐｓであり、ＤＳＰの遅延量は２００ｐｓ〜３００ｐｓである。一方、デバイスＢでは、フリップフロップの遅延量は１００ｐｓ〜１８０ｐｓであり、ＬＵＴの遅延量は１００ｐｓ〜１５０ｐｓであり、ＲＡＭの遅延量は２２０ｐｓ〜２９０ｐｓであり、ＤＳＰの遅延量は２２０ｐｓ〜３５０ｐｓである。
【００３３】
ＦＰＧＡでは、配置位置、及び使用される入出力端子に応じて、同一のセルでも複数の遅延量を取り得る。例えば、フリップフロップでは、非反転出力端子Ｑから出力される信号と、反転出力ＱＢから出力される信号とでは、クロックの遷移からの遅延量が相違する。また、ＬＵＴでは、使用する入力端子及び出力端子に応じて、遅延量が相違する。
【００３４】
入力部１２は、データの入力が可能であればどのようなデバイスでもよく、例えば、タッチパネル、キーボタン等である。操作者は、入力部１２を用いて、文字、数字、記号等を入力することができる。入力部１２は、操作者により操作されると、その操作に対応する信号を生成する。そして、生成された信号は、操作者の指示として、処理部２０に供給される。
【００３５】
出力部１３は、映像やフレーム等の表示が可能であればどのようなデバイスでもよく、例えば、液晶ディスプレイ又は有機ＥＬ（Electro−Luminescence）ディスプレイ等である。出力部１３は、処理部２０から供給された映像データに応じた映像や、動画データに応じたフレーム等を表示する。
【００３６】
処理部２０は、一又は複数個のプロセッサ及びその周辺回路を有する。処理部２０は、情報処理装置１の全体的な動作を統括的に制御するものであり、例えば、ＣＰＵである。処理部２０は、記憶部１１に記憶されているプログラム（ドライバプログラム、オペレーティングシステムプログラム、アプリケーションプログラム等）に基づいて処理を実行する。また、処理部２０は、複数のプログラム（アプリケーションプログラム等）を並列に実行できる。
【００３７】
処理部２０は、ＲＬＴデータ取得部２１と、論理検証部２２と、論理合成部２３と、配置配線部２４と、タイミング検証部２５と、段数算出部２６と、セル段数情報出力部２７とを有する。段数算出部２６は、パス情報抽出部２６１と、セル総遅延量推定部２６２と、論理セル総遅延量演算部２６３と、セル段数演算部２６４とを有する。これらの各部は、処理部２０が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。あるいは、これらの各部は、ファームウェアとして情報処理装置１に実装されてもよい。
【００３８】
（第１実施形態に係る情報処理装置による最適段数算出処理）
図６（ａ）は情報処理装置１による最適段数算出処理のフローチャートであり、図６（ｂ）は図６（ａ）に示すＳ２０６の処理のより詳細な処理を示すフローチャートである。図６（ａ）に示す最適段数算出処理は、予め記憶部１１に記憶されているプログラムに基づいて、主に処理部２０により、情報処理装置１の各要素と協働して実行される。
【００３９】
まず、ＲＬＴデータ取得部２１は、設計者により設計されたＲＴＬを示すＲＴＬデータを取得（Ｓ２０１）する。次いで、論理検証部２２は、入力部１２を介する設計者の指示に応じて、Ｓ１０１の処理で取得されたＲＴＬデータに対応するＲＴＬの論理検証を実行する（Ｓ２０２）。次いで、論理合成部２３は、Ｓ２０２の処理で論理検証が実行されたＲＴＬデータと、タイミング制約情報１１２とに基づいて、論理合成を実行して論理合成データを生成する（Ｓ２０３）。次いで、配置配線部２４は、Ｓ２０３の処理で生成された論理合成データに対応する回路をＦＰＧＡ上に配置配線する処理を実行して配置配線情報を示す配置配線データを生成する（Ｓ２０４）。配置配線情報は、複数のセルをフィールドプログラマブルゲートアレイに配置配線したときの複数のセルの配置位置及び複数のセルの間の配線に関する情報を示す。次いで、タイミング検証部２５は、Ｓ２０４の処理で生成された配置配線データに対応する配置配線情報のタイミング検証を実行して（Ｓ２０５）、タイミング検証結果を示すタイミング検証情報を記憶部１１に記憶する。タイミング検証情報は、タイミングエラーが発生した信号パスを示す情報を含む。Ｓ２０１〜Ｓ２０５の処理は、よく知られているので、ここでは詳細な説明は省略する。
【００４０】
次いで、段数算出部２６は、記憶部１１に記憶されるタイミング検証情報を参照して、タイミングエラーが発生した信号パスのそれぞれについて、タイミングエラーを解消するための最適なＬＵＴの段数を算出する（Ｓ２０６）。段数算出部２６は、算出したＬＵＴの段数を示すセル段数情報を記憶部１１に記憶する。
【００４１】
より詳細には、パス情報抽出部２６１は、記憶部１１に記憶されるタイミング検証情報に含まれる信号パスに関する情報を、Ｓ２０４の処理で生成された配置配線データから抽出する（Ｓ３０１）。次いで、セル総遅延量推定部２６２は、Ｓ３０１の処理で抽出された信号パスにおいて、クロックの１周期の間に包含可能なセルの総遅延量を示すセル総遅延量を、特徴量とも称される入力情報から推定する（Ｓ３０２）。特徴量は、信号パスのクロックの１周期の長さを示すクロック周期情報を少なくとも含む。
【００４２】
セル総遅延量推定部２６２は、教師あり学習が実行された学習器であり、例えば、回帰型のサポートベクタマシンなどで実現されるが、他アルゴリズムで実現しても良い。回帰型のサポートベクタマシンは、「サポートベクタマシン」（小野田崇著、人工知能学会編集、２００７年８月２０日発行）等に記載されているので、ここでは詳細な説明は省略する。
【００４３】
セル総遅延量推定部２６２は、過去に設計されたＦＰＧＡの配置配線データに基づいて教師あり学習されている。セル総遅延量推定部２６２が教師あり学習されるときの特徴量は、クロックの１周期の長さ又は周波数、及び信号パスに信号を送信する送信セル及び信号パスを介して信号を受信する受信セルのＦＰＧＡ上のそれぞれの配置位置を示す配置情報などを含む。セル総遅延量推定部２６２が教師あり学習されるときの特徴量は、信号パスの総遅延量からセル総遅延量を除いた配線遅延量、並びにＦＰＧＡの動作周波数及び動作温度等のＦＰＧＡの動作条件を示す他の情報を含んでもよい。セル総遅延量推定部２６２は、クロックの１周期の長さを示すクロック周期情報を少なくとも含む入力情報を入力とし、信号パスに含まれるセルの総遅延量を示すセル総遅延量を出力として学習された回帰型の教師あり学習器である。
【００４４】
セル総遅延量推定部２６２が教師あり学習されるときのラベルは、送信セルのセル遅延量、及び信号パスに含まれるＬＵＴのセル総遅延量である。セル総遅延量推定部２６２は、過去に設計されたＦＰＧＡの配置配線データから抽出された特徴量及びラベルを使用して教師あり学習されることで、所定の評価関数を生成する。図７に示すように、セル総遅延量推定部２６２は、信号パスの特徴量を配置配線データ等から抽出し、抽出した特徴量に応じたセル総遅延量を、評価関数に基づいて出力する。図７に示す例では、セル総遅延量推定部２６２は、ｎ個の特徴量Ｃ1〜Ｃnに応じたセル総遅延量Ｄを、評価関数ｆに基づいて出力する。
【００４５】
次いで、論理セル総遅延量演算部２６３は、Ｓ３０２の処理で推定されたセル総遅延量から送信セルの遅延量を減算して、送信セルと受信セルとの間に配置される論理セルの総遅延量である論理セル総遅延量を演算する（Ｓ３０３）。送信セルは、例えば、フリップフロップ及びＲＡＭを含む。次いで、論理セル総遅延量演算部２６３は、信号パスに送信セル、受信セル及びＬＵＴ以外の他セル含まれるか否かを判定する（Ｓ３０４）。他セルは、例えば、ＤＳＰを含む。
【００４６】
論理セル総遅延量演算部２６３は、信号パスに送信セル、受信セル及びＬＵＴ以外の他セルが含まれると判定する（Ｓ３０４−ＹＥＳ）と、信号パスに含まれる送信セル及びＬＵＴ以外の他セルを抽出する（Ｓ３０５）。次いで、論理セル総遅延量演算部２６３は、Ｓ３０４の処理で抽出した他セルの遅延量を、Ｓ３０３の処理で演算した論理セル総遅延量から減算して、信号パスに含まれるＬＵＴのみの遅延量である純論理セル遅延量を演算する（Ｓ３０６）。論理セル総遅延量演算部２６３は、セル遅延情報１１３を参照して論理セル遅延量を取得する。一例では、セル段数演算部２６４は、セル遅延情報１１３に記憶されるＤＳＰの遅延量の最大値を論理セル遅延量を取得する。
【００４７】
セル段数演算部２６４は、Ｓ３０６の処理で演算された純論理セル遅延量をＬＵＴの遅延量である論理セル遅延量で除して、信号パスに配置されるＬＵＴの最適な段数を演算し（Ｓ３０７）、演算した段数を記憶部１１に記憶する。セル段数演算部２６４は、セル遅延情報１１３を参照して論理セル遅延量を取得する。一例では、セル段数演算部２６４は、セル遅延情報１１３に記憶されるＬＵＴの遅延量の最大値を論理セル遅延量を取得する。
【００４８】
セル段数演算部２６４は、信号パスに送信セル、受信セル及びＬＵＴ以外の他セルが含まれないと判定される（Ｓ３０４−ＮＯ）と、論理セル総遅延量を論理セル遅延量で除して、信号パスに配置されるＬＵＴの段数を演算する（Ｓ３０８）。セル段数演算部２６４は、演算した段数を記憶部１１に記憶する。
【００４９】
セル段数演算部２６４は、信号パスに配置可能な段数を、小数点以下を切り捨て演算してもよく、四捨五入して演算してもよい。セル段数演算部２６４が信号パスに配置可能な段数を小数点以下を切り捨て演算することで、演算される段数がマージンを有することができる。
【００５０】
次いで、パス情報抽出部２６１は、タイミング検証情報に情報が含まれる全ての信号パスについて情報を抽出したか否かを判定する（Ｓ３０９）。パス情報抽出部２６１によって全ての信号パスについて情報を抽出したと判定される（Ｓ３０９−ＹＥＳ）まで、Ｓ３０１〜Ｓ３０９の処理が繰り返される。すなわち、信号バスに関する情報を抽出し（Ｓ３０１）、セル遅延量を推定し（Ｓ３０２），セル総遅延量から、信号パスに含まれる論理セルの段数を算出する（Ｓ３０３〜Ｓ３０７）処理が繰り返される。パス情報抽出部２６１によって全ての信号パスについて情報を抽出したと判定される（Ｓ３０９−ＹＥＳ）と、Ｓ２０６の最適段数算出処理は、終了する。
【００５１】
段数算出部２６によってＬＵＴの段数が算出される（Ｓ２０６）と、セル段数情報出力部２７は、記憶部１１に記憶されるセル段数情報を出力部１３に出力する（Ｓ２０７）。設計者は、出力部１３に表示されるセル段数情報に対応する画像に基づいて、タイミング検証情報に情報が含まれる信号パスについてＲＴＬを修正する。
【００５２】
（第１実施形態に係る情報処理装置の作用効果）
第１実施形態に係る情報処理装置は、クロックの１周期の長さを示すクロック周期情報を少なくとも含む入力情報から推定した遅延総量から信号パスに含まれる論理セルの段数を算出することで、設計者の経験によらずに最適な段数を決定できる。第１実施形態に係る情報処理装置は、信号パスにおける論理セルの最適な段数を決定できるので、ＦＰＧＡの回路設計におけるタイミングエラーに伴うＲＴＬの修正が一度のみとすることができる。
【００５３】
また、第１実施形態に係る情報処理装置は、セル総遅延量から送信セルの遅延量を減算した論理セル総遅延量を使用して、信号パスに含まれる論理セルの段数を算出することで、送信セルの遅延量を除いた適切なセル遅延量に基づいて段数を決定できる。
【００５４】
また、第１実施形態に係る情報処理装置は、論理セル以外の他セルの遅延量を更に減算した純論理セル総遅延量を使用して、信号パスに含まれる論理セルの段数を算出することで、論理セルの段数を更に精度よく決定できる。
【００５５】
また、第１実施形態に係る情報処理装置は、前記送信セル及び前記受信セルのそれぞれの配置位置を含む入力情報に基づいて推定したセル総遅延量を使用してことで、信号パスに含まれる論理セルの段数を決定することで、論理セルの段数を更に精度よく決定できる。
【００５６】
（第２実施形態に係る設置位置決定処理を実行する情報処理装置の構成及び機能）
図８（ａ）は第２実施形態に係る設置位置決定処理を実行する情報処理装置の回路ブロック図であり、図８（ｂ）は図８（ａ）に示す処理部の機能ブロック図である。
【００５７】
情報処理装置２は、処理部３０を処理部２０の代わりに有することが情報処理装置１と相違する。処理部３０は、段数算出部３６を段数算出部２６の代わりに有することが処理部２０と相違する。段数算出部３６は、パス情報抽出部３６１及びセル総遅延量推定部３６２をパス情報抽出部２６１及びセル総遅延量推定部３６２の代わりに有することが段数算出部２６と相違する。パス情報抽出部３６１及びセル総遅延量推定部３６２以外の情報処理装置２の構成要素の構成及び機能は、同一符号が付された情報処理装置１の構成要素の構成及び機能と同一なので、ここでは詳細な説明は省略する。
【００５８】
（第２実施形態に係る情報処理装置による最適段数算出処理）
図９（ａ）は情報処理装置２による最適段数算出処理のフローチャートであり、図９（ｂ）は図９（ａ）に示すＳ４０４の処理のより詳細な処理を示すフローチャートである。図９（ａ）に示す最適段数算出処理は、予め記憶部１１に記憶されているプログラムに基づいて、主に処理部３０により、情報処理装置２の各要素と協働して実行される。
【００５９】
Ｓ４０１〜Ｓ４０３の処理は、Ｓ２０１〜Ｓ２０３の処理と同様なので、ここでは詳細な説明は省略する。段数算出部３６は、記憶部１１に記憶される論理合成データを参照して、論理合成データに対応する回路に含まれる信号パスのそれぞれについて、最適なＬＵＴの段数を算出する（Ｓ４０４）。
【００６０】
より詳細には、パス情報抽出部３６１は、Ｓ４０３の処理で生成された論理合成データに対応する回路に含まれる信号パスに関する情報を、Ｓ４０３の処理で生成された論理合成データから抽出する（Ｓ５０１）。次いで、セル総遅延量推定部３６２は、Ｓ５０１の処理で抽出された信号パスにおいて、クロックの１周期の間に包含可能なセルの総遅延量を示すセル総遅延量を、特徴量とも称される入力情報から推定する（Ｓ５０２）。特徴量は、信号パスのクロックの１周期の長さを示すクロック周期情報を少なくとも含むが、送信セル及び受信セルの配置位置等の配置配線情報に含まれる情報は含まない。セル総遅延量推定部３６２は、セル総遅延量推定部２６２と同様に、教師あり学習が実行された学習器であり、例えば、回帰型のサポートベクタマシンである。
【００６１】
Ｓ５０３〜Ｓ５０８の処理は、Ｓ３０３〜Ｓ３０８の処理と同様なので、ここでは詳細な説明は省略する。パス情報抽出部３６１は、タイミング検証情報に含まれる全ての信号パスについて情報を抽出したか否かを判定する（Ｓ５０９）。パス情報抽出部３６１によって全ての信号パスについて情報を抽出したと判定される（Ｓ５０９−ＹＥＳ）まで、Ｓ５０１〜Ｓ５０９の処理が繰り返される。パス情報抽出部３６１によって全ての信号パスについて情報を抽出したと判定される（Ｓ５０９−ＹＥＳ）と、Ｓ４０４の最適段数算出処理は、終了する。
【００６２】
段数算出部３６によってＬＵＴの段数が算出される（Ｓ４０４）と、セル段数情報出力部２７は、記憶部１１に記憶されるセル段数情報を出力部１３に出力する（Ｓ４０５）。設計者は、出力部１３に表示されるセル段数情報に対応する画像に基づいて、Ｓ４０３の処理で生成された論理合成データに対応する回路に含まれる信号パスについてＲＴＬを修正する。
【００６３】
設計者によってＲＴＬが修正されるとＳ４０１〜Ｓ４０３の処理が再度実行されて、設計者によって修正されたＲＴＬに基づく論理合成データが生成される。そして、配置配線部２４は、設計者によって修正されたＲＴＬに基づく論理合成データに対応する回路をＦＰＧＡ上に配置配線する処理を実行してセル配置配線情報を示す配置配線データを生成する。そして、タイミング検証部２５は、Ｓ２０４の処理で生成された配置配線データに対応する配置配線情報のタイミング検証を実行して、タイミング検証結果を示すタイミング検証情報を記憶部１１に記憶する。タイミング検証情報は、タイミングエラーが発生した信号パスを示す情報を含む。
【００６４】
（第２実施形態に係る情報処理装置の作用効果）
第２実施形態に係る情報処理装置は、配置配線を実行する前に論理合成データに対応する回路に含まれる信号パスの論理セルの段数を算出するので、より適切な段数の論理セルが配置された信号パスを含むデータを使用して配置配線を実行することができる。
【符号の説明】
【００６５】
１〜２    情報処理装置
２０、３０    処理部
２１    ＲＬＴデータ取得部
２２    論理検証部
２３    論理合成部
２４    配置配線部
２５    タイミング検証部
２６    段数算出部
２７    セル段数情報出力部
【図１】
2018205993.tif 000003
【図２】
2018205993.tif 000004
【図３】
2018205993.tif 000005
【図４】
2018205993.tif 000006
【図５】
2018205993.tif 000007
【図６】
2018205993.tif 000008
【図７】
2018205993.tif 000009
【図８】
2018205993.tif 000010
【図９】
2018205993.tif 000011