(57)【要約】【課題】ＦＰＧＡ等のプログラマブルロジックデバイスの設計効率を向上させる。【解決手段】回路合成装置４０は、プログラマブルロジックデバイスに内包される回路ブロック６０に実装可能な複数の論理機能５１−１乃至５１−ｍを表す回路合成入力情報５０に対して、それら複数の論理機能５１−１乃至５１−ｍのうちの少なくともいずれかを選択する選択部４１と、選択部４１によって選択された特定の論理機能５１−ｉを、回路合成入力情報５０に基づいて回路ブロック６０に実装する際に、特定の論理機能５１−ｉが複数の論理機能５１−１乃至５１−ｍのいずれであっても、回路ブロック６０に対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにする実装部４２と、を備える。【選択図】      図７
2018092506.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルロジックデバイスに内包される回路ブロックに実装可能な複数の論理機能を表す回路合成入力情報に対して、前記複数の論理機能のうちの少なくともいずれかを選択する選択手段と、
前記選択手段によって選択された特定の前記論理機能を、前記回路合成入力情報に基づいて前記回路ブロックに実装する際に、前記特定の論理機能が前記複数の論理機能のいずれであっても、前記回路ブロックに対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにする実装手段と、
を備える回路合成装置。
【請求項２】
前記実装手段によって求められた、前記特定の論理機能を実現するハードウェア資源の量が、前記回路ブロックが実装可能なハードウェア資源の量の最大値以下であるか否かを判定する判定手段をさらに備え、
前記選択手段は、前記特定の論理機能が前記複数の論理機能のうちの２以上を含み、かつ、前記判定手段によって前記特定の論理機能を実現するハードウェア資源の量が前記最大値よりも大きいと判定された場合に、前記特定の論理機能に含まれる少なくともいずれかの前記論理機能に対する選択を解除し、
前記実装手段は、前記選択手段が前記特定の論理機能に含まれるいずれかの前記論理機能に対する選択を解除した結果に基づいて、前記特定の論理機能を実現するハードウェア資源を求める、
請求項１に記載の回路合成装置。
【請求項３】
前記選択手段は、前記判定手段によって前記特定の論理機能を実現するハードウェア資源の量が前記最大値以下と判定されるまで、前記特定の論理機能に含まれる少なくともいずれかの前記論理機能に対する選択を解除することを繰り返し実行し、
前記実装手段は、前記判定手段によって前記特定の論理機能を実現するハードウェア資源の量が前記最大値以下と判定されるまで、前記選択手段が前記特定の論理機能に含まれるいずれかの前記論理機能に対する選択を解除した結果に基づいて、前記特定の論理機能を実現するハードウェア資源を求めることを繰り返し実行する、
請求項２に記載の回路合成装置。
【請求項４】
前記選択手段は、前記プログラマブルロジックデバイスに内包される複数の前記回路ブロックのうちの少なくともいずれかの回路ブロックを、前記特定の論理機能が選択されない予備回路ブロックに設定し、
前記実装手段は、前記予備回路ブロックに対しては前記複数の論理機能のうちのいずれも実装せずに、前記予備回路ブロックに対する入力信号を入力する前記入出力端子と、前記入力信号に割り付けられる出力信号を出力する前記入出力端子とを接続する配線を行う、
請求項１乃至３のいずれか一項に記載の回路合成装置。
【請求項５】
前記実装手段は、後段の前記回路ブロックに対して前記信号を出力する前段の前記回路ブロックに含まれる前記入出力端子と、前記前段の回路ブロックから前記信号を入力する前記後段の回路ブロックに含まれる前記入出力端子とを、前記前段及び後段の回路ブロックに含まれる前記特定の論理機能が前記複数の論理機能のいずれであっても、同様に接続する配線を行なう、
請求項１乃至４のいずれか一項に記載の回路合成装置。
【請求項６】
前記実装手段は、所属するグループを識別可能な識別子が付与された、個々の前記入出力端子を、前記識別子に基づいて前記回路ブロックの中に配置する、
請求項１乃至５のいずれか一項に記載の回路合成装置。
【請求項７】
前記選択手段は、前記回路ブロックと、前記回路ブロックに対して選択した前記論理機能とを関連付けて管理する、
請求項１乃至６のいずれか一項に記載の回路合成装置。
【請求項８】
前記複数の論理機能は、当該論理機能をデバッグ可能なデバッグ機能を含む、
請求項１乃至７のいずれか一項に記載の回路合成装置。
【請求項９】
情報処理装置によって、
プログラマブルロジックデバイスに内包される回路ブロックに実装可能な複数の論理機能を表す回路合成入力情報に対して、前記複数の論理機能のうちの少なくともいずれかを選択し、
選択した特定の前記論理機能を、前記回路合成入力情報に基づいて前記回路ブロックに実装する際に、前記特定の論理機能が前記複数の論理機能のいずれであっても、前記回路ブロックに対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにする、
回路合成方法。
【請求項１０】
プログラマブルロジックデバイスに内包される回路ブロックに実装可能な複数の論理機能を表す回路合成入力情報に対して、前記複数の論理機能のうちの少なくともいずれかを選択する選択処理と、
前記選択処理によって選択された特定の前記論理機能を、前記回路合成入力情報に基づいて前記回路ブロックに実装する際に、前記特定の論理機能が前記複数の論理機能のいずれであっても、前記回路ブロックに対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにする実装処理と、
をコンピュータに実行させるための回路合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、プログラマブルロジックデバイスの回路合成を行なう技術に関する。
【背景技術】
【０００２】
ＦＰＧＡ（Field Programmable Gate Array）等のプログラマブルロジックデバイスは、プログラミングによって、容易に論理変更を行なうことができるという利点があることから、様々なコンピュータシステムにおいて利用されている。このような環境において、ＦＰＧＡ等を使用したシステムの設計効率を向上させる技術に対する期待が高まってきている。
【０００３】
このような技術に関連する技術として、特許文献１には、ＦＰＧＡ用ネット接続情報からゲートアレイのネット接続情報を作成するゲートアレイ用ネットデータ作成方法が開示されている。この方法では、回路図入力ツールを用いて作成したＦＰＧＡの回路図に、階層間接続コネクタを付与したのち、各階層単位にＦＰＧＡ用ネットを出力する。この方法では、階層構造を保持した状態で論理合成ツールにそのネットを読み込み、論理合成ツールによって各階層単位に論理変換を行う。そしてこの方法では、変換データを任意の規模のブロックへ展開して再合成を行なったのち、再合成した結果に基づいてゲートアレイ用ネットを出力する。これによりこの方法では、再合成したブロック単位での配置、または全てのブロックを展開した状態でのゲートアレイのセル配置およびセル間の配線を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平10-320451号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＦＰＧＡ等の開発においては、一般的に、ＦＰＧＡに形成（内包）される回路ブロック（マクロブロック：以降本願では、「マクロ」と称する）を使用した設計が行われる。そして、ＦＰＧＡに関する仕様変更が発生した場合、あるいは、ＦＰＧＡが搭載された実機の評価において不具合が発生した場合に、マクロの論理が変更されることに伴い、当該マクロが有する入出力端子の仕様（マクロが使用する各信号に割り付けられる入出力端子の配置等）も変更されることが多い。このような入出力端子の配置に対する仕様変更に起因して、マクロ間を接続する煩雑な配線作業を再度行なう必要が生じるので、ＦＰＧＡの回路変更に要する時間が増加することによって、ＦＰＧＡの設計効率が低下するという問題がある。特許文献１は、この問題に対して言及していない。本願発明の主たる目的は、このような問題を解決する回路合成装置等を提供することである。
【課題を解決するための手段】
【０００６】
本願発明の一態様に係る回路合成装置は、プログラマブルロジックデバイスに内包される回路ブロックに実装可能な複数の論理機能を表す回路合成入力情報に対して、前記複数の論理機能のうちの少なくともいずれかを選択する選択手段と、前記選択手段によって選択された特定の前記論理機能を、前記回路合成入力情報に基づいて前記回路ブロックに実装する際に、前記特定の論理機能が前記複数の論理機能のいずれであっても、前記回路ブロックに対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにする実装手段と、を備える。
【０００７】
上記目的を達成する他の見地において、本願発明の一態様に係る回路合成方法は、情報処理装置によって、プログラマブルロジックデバイスに内包される回路ブロックに実装可能な複数の論理機能を表す回路合成入力情報に対して、前記複数の論理機能のうちの少なくともいずれかを選択し、選択した特定の前記論理機能を、前記回路合成入力情報に基づいて前記回路ブロックに実装する際に、前記特定の論理機能が前記複数の論理機能のいずれであっても、前記回路ブロックに対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにする。
【０００８】
また、上記目的を達成する更なる見地において、本願発明の一態様に係る回路合成プログラムは、プログラマブルロジックデバイスに内包される回路ブロックに実装可能な複数の論理機能を表す回路合成入力情報に対して、前記複数の論理機能のうちの少なくともいずれかを選択する選択処理と、前記選択処理によって選択された特定の前記論理機能を、前記回路合成入力情報に基づいて前記回路ブロックに実装する際に、前記特定の論理機能が前記複数の論理機能のいずれであっても、前記回路ブロックに対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにする実装処理と、をコンピュータに実行させるためのプログラムである。
【０００９】
更に、本願発明は、係る回路合成プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
【発明の効果】
【００１０】
本願発明は、ＦＰＧＡ等のプログラマブルロジックデバイスの設計効率を向上させることを可能とする。
【図面の簡単な説明】
【００１１】
【図１】本願発明の第１の実施形態に係る回路合成装置１０の構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係るマクロ管理情報１１０の構成を例示する図である。
【図３】本願発明の第１の実施形態に係る回路合成出力情報３０が示す、回路合成されたＦＰＧＡのイメージ（マクロの配置と接続）を例示する図である。
【図４】本願発明の第１の実施形態に係る回路合成出力情報３０が示す、回路合成されたマクロ３１のイメージ（回路と端子の配置と接続）を例示する図である。
【図５】本願発明の第１の実施形態に係る回路合成出力情報３０が予備のマクロを含む場合における、回路合成出力情報３０が示す、回路合成されたＦＰＧＡのイメージ（マクロの配置と接続）を例示する図である。
【図６】本願発明の第１の実施形態に係る回路合成装置１０の動作を示すフローチャートである。
【図７】本願発明の第２の実施形態に係る回路合成装置４０の構成を示すブロック図である。
【図８】本願発明の各実施形態に係る回路合成装置を実行可能な情報処理装置９００の構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１３】
＜第１の実施形態＞
図１は、本願発明の第１の実施の形態に係る回路合成装置１０の構成を概念的に示すブロック図である。回路合成装置１０は、開発対象であるＦＰＧＡ（以降、本願では、単にＦＰＧＡと称する）の回路仕様を表す回路合成入力情報２０に基づいて回路を合成し、合成した結果として、回路合成出力情報３０を生成する装置である。そして、回路合成出力情報３０が示す回路が、ＦＰＧＡに形成される。
【００１４】
回路合成入力情報２０は、例えばＶＨＤＬ（VHSIC Hardware Description Language：但しVHSICは、「Very High Speed Integrated Circuits」の略称）等のハードウェア記述言語によって表された情報である。回路合成入力情報２０は、ＦＰＧＡが実現する論理仕様、及び、ＦＰＧＡが入出力する信号の仕様等を含んでいる。回路合成入力情報２０は、ＦＰＧＡに形成するマクロに実装可能な複数の機能（図１に示す例では、機能Ａ乃至機能Ｆなど）を表す情報を含んでいる。
【００１５】
本実施形態に係る回路合成装置１０は、選択部１１、実装部１２、及び、判定部１３を備えている。選択部１１は、例えば内包するメモリなどの記憶デバイスに記憶したマクロ管理情報１１０を管理し、マクロ管理情報１１０に基づいて、ＦＰＧＡに形成するマクロごとに、実装する機能を選択し、マクロごとに実装する機能を示す情報を実装部１２に入力する。
【００１６】
図２は、本実施形態に係るマクロ管理情報１１０の構成を概念的に例示する図である。マクロ管理情報１１０は、ＦＰＧＡに形成するマクロごとに、実装する機能を表したテーブルである。すなわち、マクロ管理情報１１０は、ＦＰＧＡに形成するマクロと、そのマクロに実装する機能とを関連付ける情報である。図２に例示するマクロ管理情報１１０は、例えば、ＦＰＧＡに形成するマクロ３１は、機能Ａと機能Ｂを実装し、ＦＰＧＡに形成するマクロ３２は、機能Ｃと機能Ｄを実装することなどを示している。
【００１７】
本実施形態に係る実装部１２は、回路合成入力情報２０、及び、選択部１１から入力された、ＦＰＧＡに形成するマクロごとに実装する機能を表した情報に基づいて、ＦＰＧＡに形成する回路（ハードウェア資源）を合成し、その合成結果を表す回路合成出力情報３０を生成する。
【００１８】
図３は、本実施形態に係る回路合成出力情報３０が示す、回路合成されたＦＰＧＡのイメージ（マクロの配置と接続等）を概念的に例示する図である。図３に例示する通り、回路合成出力情報３０が示すＦＰＧＡには、マクロ３１乃至３６、及び、ＦＰＧＡインタフェース３７及び３８が形成されている。マクロ３１乃至３６は、それぞれ、図２に例示するマクロ管理情報１１０が示す機能を実装している。ＦＰＧＡインタフェース３７及び３８は、ＦＰＧＡが外部（例えば他のＦＰＧＡ等）と入出力を行なうためのインタフェース（入出力端子）である。
【００１９】
実装部１２は、ＦＰＧＡにおいて、隣接するマクロ同士、及び、隣接するマクロとＦＰＧＡインタフェースとの間を、Ｎ（Ｎは任意の自然数）ビットの接続バスによって接続する配線を行なう。この際、実装部１２は、隣接するマクロ同士を、互いにひも付けられるビットｉ同士（ｉは１乃至Ｎのいずれかの整数）を接続する。実装部１２は、マクロ３１乃至３６に実装する機能によらず、隣接するマクロ同士、及び、隣接するマクロとＦＰＧＡインタフェースとの間を、同様に接続する配線を行なう。
【００２０】
図４は、図３に例示する回路合成出力情報３０において、回路合成されたマクロ３１のイメージ（回路と端子の配置と接続）を概念的に例示する図である。マクロ３１は、端子群３１１及び３１２、機能Ａ回路３１３、及び、機能Ｂ回路３１４を含んでいる。端子群３１１は、ＦＰＧＡインタフェース３７との間の接続バスに接続されるＮ個（Ｎビット）の入出力端子を含んでいる。端子群３１２は、マクロ３２との間の接続バスに接続されるＮ個の入出力端子を含んでいる。
【００２１】
実装部１２は、機能Ａを実現（実装）する機能Ａ回路３１３を合成し、機能Ａ回路３１３に対して信号を入出力する入出力端子Ｘ１乃至Ｘｎ（端子グループ３１１−Ｘ）、及び、入出力端子Ｚ１乃至Ｚｎ（端子グループ３１２−Ｚ）を、機能Ａ回路３１３と接続する。但し、ｎは任意の自然数である。実装部１２は、同様に、機能Ｂを実現する機能Ｂ回路３１４を合成し、機能Ｂ回路３１４に対して信号を入出力する入出力端子Ｙ１乃至Ｙｎ（端子グループ３１１−Ｙ）、及び、入出力端子Ｗ１乃至Ｗｎ（端子グループ３１２−Ｗ）を、機能Ｂ回路３１４と接続する。
【００２２】
図４に例示する通り、本実施形態では、機能Ａ回路３１３及び機能Ｂ回路３１４は、２系統のｎビットの入出力系統を有する。本実施形態では、図３に例示するマクロ３２乃至３６に形成される、機能Ｃ乃至機能Ｆを実装する回路も機能Ａ及び機能Ｂと同様に、２系統のｎビットの入出力系統を有することとする。そして、実装部１２は、マクロに実装する機能が、機能Ａ乃至機能Ｆのいずれであっても、マクロに対して入出力される信号に割り付けられる入出力端子の物理的な配置が同一となるように、当該入出力端子を配置する。
【００２３】
マクロ３１に実装する各入出力端子には、例えば図４に例示する通り、所属するグループを識別可能な識別子（例えば「Ｘ」「Ｙ」「Ｚ」「Ｗ」等）を含む端子名が付与されている。実装部１２は、この識別子に基づいて、個々の前記入出力端子をマクロ３１に配置する。すなわち、実装部１２は、端子グループ３１１−Ｘ、端子グループ３１１−Ｙ、端子グループ３１２−Ｚ、及び、端子グループ３１２−Ｗ等を、マクロに搭載する機能によらず、所定の位置に配置する。実装部１２は、マクロ３１における２Ｎ個の入出力端子において、未使用の入出力端子が存在する場合は、当該入出力端子の配置、及び、当該入出力端子への配線を行なわなくてもよい。
【００２４】
実装部１２は、マクロ３２乃至３６に対しても、マクロ３１と同様に、回路を合成して、合成した回路と入出力端子の配置と接続を行なう。
【００２５】
本実施形態に係る実装部１２は、ＦＰＧＡに形成するマクロの一部を予備の（機能を実装していない）マクロ（予備回路ブロック）として、回路を合成してもよい。図５は、本実施形態に係る回路合成出力情報３０が予備のマクロを含む場合における、回路合成出力情報３０が示す、回路合成されたＦＰＧＡのイメージを概念的に例示する図である。
【００２６】
図５に示す例では、選択部１１は、マクロ３２及びマクロ３５を、予備のマクロに設定し、マクロ管理情報１１０における、マクロ３２及びマクロ３５の機能を選択しない。これにより、実装部１２は、マクロ３２及びマクロ３５を、予備のマクロとして回路を合成する。実装部１２は、この場合、マクロ３２あるいはマクロ３５に含まれる２つの端子群における、互いにひも付けられるビットｉ同士（ｉは１乃至Ｎのいずれかの整数）を接続する。したがって、図５に例示する回路合成出力情報３０が示すＦＰＧＡは、マクロ３２及びマクロ３５を形成しているが、マクロ３１とマクロ３３とが接続バスによって接続され、マクロ３４とマクロ３６とが接続バスによって接続された（即ち、マクロ３２及びマクロ３５がスルーされた）論理を構成している。
【００２７】
本実施形態に係る実装部１２は、回路合成入力情報２０、及び、マクロ管理情報１１０がユーザ等によって更新されることにより、図５に例示する予備のマクロ３２及びマクロ３５に機能を新たに実装する。この場合、図５に例示する回路合成出力情報３０が示すＦＰＧＡの機能が追加されることになる。
【００２８】
図１に示す判定部１３は、ＦＰＧＡに形成されるマクロごとに、実装部１２によって合成された（求められた）、選択部１１が選択した機能を実現する回路（ハードウェア資源）の量が、当該マクロに実装可能な回路の量の最大値以下であるか否かを判定する。本実施形態では、マクロに実装する機能にかかわらず、マクロに対して入出力される信号に割り付けられる入出力端子の物理的な配置が同一となるようにするので、マクロの大きさ、即ちマクロに実装可能な回路の量の最大値は、マクロによらず同等（一定）とする。
【００２９】
判定部１３は、この判定結果を、選択部１１及び実装部１２へ通知する。選択部１１は、判定部１３から通知された判定結果が、いずれかのマクロについて実装部１２によって合成された回路の量が実装可能な回路の量の最大値を超えており、かつ、当該マクロが２以上の機能を実装している場合、マクロ管理情報１１０を更新することによって、当該マクロが実装する機能のいずれかの選択を解除する。ただし、本実施形態では、マクロが実装する機能がいずれか１つの場合には、合成された回路の量が実装可能な回路の量の最大値以下となることを満たすように、マクロの大きさが設定されていることとする。実装部１２は、選択部１１が当該マクロに実装する機能のいずれかの選択を解除した結果に基づいて、当該マクロに実装する回路を再合成する。
【００３０】
選択部１１は、合成された回路の量が実装可能な回路の量の最大値を超えているマクロから、いずれかの機能の選択を解除した場合、その解除した機能を、別のマクロが実装するように、マクロ管理情報１１０を更新してもよい。選択部１１は、ＦＰＧＡが図５に例示するように予備のマクロを搭載している場合は、その予備のマクロが当該機能を実装するように、マクロ管理情報１１０を更新してもよい。
【００３１】
選択部１１、実装部１２、及び、判定部１３は、上述した動作を、合成された回路の量が実装可能な回路の量の最大値を超えているマクロがなくなるまで、繰り返し実行してもよい。
【００３２】
次に図６のフローチャートを参照して、本実施形態に係る回路合成装置１０の動作（処理）について詳細に説明する。
【００３３】
実装部１２は、回路合成入力情報２０に基づいて、ＦＰＧＡにマクロを配置する（ステップＳ１０１）。実装部１２は、回路合成入力情報２０に基づいて、配置した前段のマクロの端子群と後段のマクロの端子群との間において、ひも付けられる端子同士を接続する（ステップＳ１０２）。
【００３４】
選択部１１は、マクロ管理情報１１０に基づいて、マクロごとに、回路合成入力情報２０に含まれる論理機能の少なくともいずれかを選択する（ステップＳ１０３）。実装部１２は、回路合成入力情報２０に基づいて、選択部１１によって選択された論理機能を含む各マクロの回路合成を、マクロに入出力される信号に割り付けられる入出力端子の配置が同一となるように実行する（ステップＳ１０４）。
【００３５】
判定部１３は、実装部１２によって合成された回路のハードウェア量が、マクロに実装可能なハードウェア量の最大値以下である否かを、マクロごとに確認する（ステップＳ１０５）。
【００３６】
全てのマクロについて、当該ハードウェア量が当該最大値以下である場合（ステップＳ１０６でＹｅｓ）、全体の処理は終了する。いずれかのマクロについて、当該ハードウェア量が当該最大値よりも大きい場合（ステップＳ１０６でＮｏ）、選択部１１は、ハードウェア量が最大値を超えたマクロに含まれる論理機能の少なくともいずれかの選択を解除するとともに、選択を解除した論理機能を、別のマクロにおいて選択し（ステップＳ１０７）、処理はステップＳ１０４へ戻る。
【００３７】
本実施形態に係る回路合成装置１０は、ＦＰＧＡ等のプログラマブルロジックデバイスの設計効率を向上させることができる。その理由は、回路合成装置１０は、プログラマブルロジックデバイスに内包される回路ブロック（マクロ）に実装する論理機能を複数の論路機能から選択する場合に、選択した論理機能にかかわらず、当該回路ブロックに対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにするからである。
【００３８】
以下に、本実施形態に係る回路合成装置１０によって実現される効果について、詳細に説明する。
【００３９】
ＦＰＧＡ等の開発においては、一般的に、ＦＰＧＡに形成されるマクロを使用した設計が行われる。そして、ＦＰＧＡに関する仕様変更が発生した場合、あるいは、ＦＰＧＡが搭載された実機の評価において不具合が発生した場合に、マクロの論理が変更されることに伴い、当該マクロが有する入出力端子の仕様（マクロが使用する各信号に割り付けられる入出力端子の配置等）も変更されることが多い。このような入出力端子の配置に対する仕様変更により、マクロ間を接続する煩雑な配線作業を再度行なう必要が生じるので、ＦＰＧＡの設計効率が低下するという問題がある。
【００４０】
このような問題に対して、本実施形態に係る回路合成装置１０は、選択部１１、及び、実装部１２を備える。即ち、選択部１１は、ＦＰＧＡ等のプログラマブルロジックデバイスに内包されるマクロが実装可能な複数の機能（論理機能）を表す回路合成入力情報２０に対して、それら複数の機能のうちの少なくともいずれかを選択する。そして実装部１２は、選択部１１によって選択された特定の機能を、回路合成入力情報２０に基づいて当該マクロに実装する際に、その特定の機能が当該複数の機能のいずれであっても、当該マクロに対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにする。
【００４１】
したがって、回路合成装置１０は、各マクロに実装する機能を変更した場合に、変更前のマクロ間の配線を変更する必要が無いので、マクロ間を接続する煩雑な配線作業を再度行なうことを回避できる。また、回路合成装置１０は、ＦＰＧＡの設計における早い段階において、マクロ間の配線を実行することができる。これらのことにより、本実施形態に係る回路合成装置１０は、ＦＰＧＡ等のプログラマブルロジックデバイスの設計効率を向上させることができる。
【００４２】
また、本実施形態に係る回路合成装置１０は、判定部１３を備えている。判定部１３は、実装部１２によって求められた、マクロに実装する回路（ハードウェア資源）の量が、当該マクロが実装可能な回路の量の最大値以下であるか否かを判定する。選択部１１は、判定部１３によって、マクロに実装する回路の量が当該マクロに実装可能な回路の量の最大値よりも大きいと判定された場合に、当該マクロに実装する少なくともいずれかの機能に対する選択を解除する。実装部１２は、選択部１１がいずれかの機能に対する選択を解除した結果に基づいて、当該マクロの回路を再合成する。そして、回路合成装置１０は、ＦＰＧＡに形成する全てのマクロについて、実装する回路の量が実装可能な最大値以下になるまで、上述した動作を繰り返し実行する。これにより、本実施形態に係る回路合成装置１０は、ＦＰＧＡ等のプログラマブルロジックデバイスの設計効率を向上させることができる。
【００４３】
また、本実施形態に係る回路合成装置１０は、ＦＰＧＡに内包される複数のマクロのうちの少なくともいずれかのマクロを予備のマクロ（予備回路ブロック）とする。そして回路合成装置１０は、その予備のマクロに対しては複数の論理のうちのいずれも実装せずに、予備のマクロに対する入力信号を入力する入出力端子と、その入力信号にひも付けられる出力信号を出力する入出力端子とを接続する配線を行う。これにより、ユーザは、この予備のマクロを利用することにより、ＦＰＧＡに対する機能追加を容易に行なうことができる。したがって、本実施形態に係る回路合成装置１０は、ＦＰＧＡ等のプログラマブルロジックデバイスの設計効率をさらに向上させることができる。
【００４４】
また、ＦＰＧＡに内包される特定のマクロをデバッグしたい場合、選択部１１は、デバッグ対象であるマクロを除くマクロを予備のマクロに設定する。この場合、実装部１２は、デバック対象である特定のマクロに実装する機能のみを備えたＦＰＧＡの回路を合成する。これにより、本実施形態に係る回路合成装置１０は、ＦＰＧＡのデバッグ効率を向上することができる。
【００４５】
また、あるマクロに実装する複数の論理機能は、そのマクロが実装する論理機能と、当該論理機能に対するデバッグ機能とを含むようにしてもよい。その場合、当該論理機能のデバッグが必要となって時点で、新たにデバッグ機能をそのマクロに追加する必要がなくなるので、ＦＰＧＡのデバッグ効率を向上することができる。
【００４６】
＜第２の実施形態＞
図７は、本願発明の第２の実施形態に係る回路合成装置４０の構成を概念的に示すブロック図である。
【００４７】
本実施形態に係る回路合成装置４０は、選択部４１、及び、実装部４２を備えている。
【００４８】
選択部４１は、プログラマブルロジックデバイスに内包される回路ブロック６０に実装可能な複数の論理機能５１−１乃至５１−ｍ（ｍは任意の自然数）を表す回路合成入力情報５０に対して、その複数の論理機能５１−１乃至５１−ｍのうちの少なくともいずれかを選択する。
【００４９】
実装部４２は、選択部４１によって選択された特定の論理機能５１−ｉ（ｉは１乃至ｍの少なくともいずれかの整数）を、回路合成入力情報５０に基づいて回路ブロック６０に実装する際に、特定の論理機能５１−ｉが複数の論理機能５１−１乃至５１−ｍのいずれであっても、回路ブロック６０に対して入出力される信号に割り付けられる入出力端子の配置が同一となるように、入出力端子を回路ブロック６０に実装する。
【００５０】
本実施形態に係る回路合成装置４０は、プログラマブルロジックデバイスの設計効率を向上させることができる。その理由は、回路合成装置４０は、プログラマブルロジックデバイスに内包される回路ブロックに実装する論理機能を複数の論路機能から選択する場合に、選択した論理機能にかかわらず、当該回路ブロックに対して入出力される信号に割り付けられる入出力端子の配置が同一となるようにするからである。
【００５１】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図７に示した回路合成装置１０及び４０における各部は、専用のＨＷ（ＨａｒｄＷａｒｅ）（電子回路）によって実現することができる。また、図１、及び、図７において、少なくとも、下記構成は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。
・選択部１１及び４１
・実装部１２及び４２、
・判定部１３、
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図８を参照して説明する。
【００５２】
図８は、本願発明の各実施形態に係る回路合成装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図８は、図１、及び、図７に示した回路合成装置或いはその一部を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。図８に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク（記憶装置）９０４、
・無線送受信部等の外部装置との通信インタフェース９０５、
・バス９０６（通信線）、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記録媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・入出力インタフェース９０９。
【００５３】
即ち、上記構成要素を備える情報処理装置９００は、これらの構成がバス９０６を介して接続された一般的なコンピュータである。情報処理装置９００は、ＣＰＵ９０１を複数備える場合もあれば、マルチコアにより構成されたＣＰＵ９０１を備える場合もある。
【００５４】
そして、上述した実施形態を例に説明した本願発明は、図８に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図（図１及び図７）における上述した構成、或いはフローチャート（図６）の機能である。本願発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ（ＲＡＭ９０３）、または、ＲＯＭ９０２やハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００５５】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記録媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本願発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体９０７によって構成されると捉えることができる。
【００５６】
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００５７】
１０    回路合成装置
１１    選択部
１１０    マクロ管理情報
１２    実装部
１３    判定部
２０    回路合成入力情報
３０    回路合成出力情報
３１乃至３６    マクロ
３１１及び３１２    端子群
３１１−Ｘ    端子グループ
３１１−Ｙ    端子グループ
３１２−Ｚ    端子グループ
３１２−Ｗ    端子グループ
３１３    機能Ａ回路
３１４    機能Ｂ回路
３７及び３８    ＦＰＧＡインタフェース
４０    回路合成装置
４１    選択部
４２    実装部
５０    回路合成入力情報
５１−１乃至５１−ｍ    論理機能
５１−ｉ    論理機能
６０    回路ブロック
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク（記憶装置）
９０５    通信インタフェース
９０６    バス
９０７    記録媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2018092506.tif 000003
【図２】
2018092506.tif 000004
【図３】
2018092506.tif 000005
【図４】
2018092506.tif 000006
【図５】
2018092506.tif 000007
【図６】
2018092506.tif 000008
【図７】
2018092506.tif 000009
【図８】
2018092506.tif 000010