(57)【要約】【課題】  設計されたシステムや回路を適切にモジュールに分割すること。【解決手段】  システムあるいは回路を構成する要素および該要素間の結線を配置し、システムを分割する分割点を、例えばダミーバッファ１５により結線上に指定する。その後自動分割ツールを用いて、少なくとも指定された分割点でシステムを分割する。【選択図】      図１
2006236263.tif 000002
【特許請求の範囲】
【請求項１】
システムを構成する要素および該要素間の結線を配置するステップと、
システムを分割するための分割点のうちの少なくとも一つの分割点を、前記結線上に指定するステップと、
自動分割ツールを用いて、少なくとも前記指定された分割点で前記システムを分割するステップと
を有するシステム分割方法。
【請求項２】
前記少なくとも一つの分割点を前記結線上に指定するステップは、ダミーバッファを前記結線上に埋め込むステップである請求項１に記載のシステム分割方法。
【請求項３】
前記要素および該要素間の結線を配置するステップと、前記少なくとも一つの分割点を前記結線上に指定するステップとは、ハードウェア記述言語を用いて記述される請求項１又は２に記載のシステム分割方法。
【請求項４】
前記少なくとも一つの分割点を、前記結線上に指定するステップは、ハードウェア記述言語を用いて前記結線に分割点を指示する修飾子を挿入するように記述される請求項１に記載のシステム分割方法。
【請求項５】
さらに、自動分割ツールを用いて、前記分割されたシステムの分割端に、それぞれ入出力バッファを配置するステップと
を有する請求項１〜４のいずれか１項に記載のシステム分割方法。
【請求項６】
前記要素および該要素間の結線を配置するステップは、前記要素をブロックで表示するブロック線図で記述するステップであり、前記少なくとも一つの分割点を結線上に指定するステップは、ダミーブロックを前記結線上の点に埋め込むステップである請求項１に記載のシステム分割方法。
【請求項７】
さらに、前記分割されたシステムが、ハード構成のシステムとソフト構成のシステムとからなる場合、前記分割されたシステムの分割端にそれぞれインタフェイスを挿入するステップを有する請求項６に記載のシステム分割方法。
【請求項８】
要素と、該要素間の結線と、前記結線上に指定された分割点とを有するシステムを、少なくとも前記指定された分割点でコンピュータに分割させるためのシステム分割プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムあるいは回路を分割するシステム分割方法およびシステム分割プログラムに関する。
【背景技術】
【０００２】
システムや回路を開発設計して、具体的な回路に変換あるいは合成する場合、回路規模、コスト、ハード構成、ソフト構成等により、システムや回路を分割する必要がでてくる。例えば、回路開発ＣＡＤ（Computer Aided Design）システムでは、回路図、機能図、又は言語による論理記述を、具体的な回路を想定した回路に変換あるいは合成する。このような合成は、詳細な回路規模あるいは遅延時間などが算出できるようになる回路開発の最終工程に行われる。したがって、具体的にＦＰＧＡ（Field Programmable Gate Array）を選定するときになって、コストや実装面積の見地から、設計された回路規模に見合った大きなＦＰＧＡを使用することが困難であるということが起こり得る。
【０００３】
設計変更により回路規模を縮小して、小さなＦＰＧＡに収めるようにできればよいが、回路規模を縮小できない場合が多い。このような場合、全体の回路を分割して、小規模なＦＰＧＡを組み合わせて使うことになる。分割すると、安価なＦＰＧＡを使用することができるのでコスト面でも有利である。
【０００４】
また、システムや回路の開発設計に際しては、まずソフトウェアでモデルを作り、シミュレーションを行って、その結果を開発設計にフィードバックすることが行われている。しかしながら、ソフトウェアによる実行では結果が出るまで時間がかかる場合があった。高速実行のためには、ハードウェアで実現すればよいが、すべてをハードウェアで構成するのは現実的ではない。すなわち、ソフトウェア処理の方が向いている部分も存在している。したがってこのような場合も、システムを分割して、ハード構成とソフト構成とに振り分けることが考えられる。
【０００５】
例えばＭＡＴＬＡＢのＳｉｍｕｌｉｎｋ（登録商標）では、ブロック線図で回路モデルを作成するが、すべてをハードウェアで構成することができなくとも、高速に動作させたい部分はハードウェア化して、ソフトウェアで実行する部分と切り分けることができれば、シミュレーションを高速化できる。
【０００６】
このように、システムあるいは回路のモジュールへの分割が必要となる場合、従来では、全体設計が終了した段階で、作業者の手作業でモジュールへの分割が行われていた。また、手作業を回避するために、一部で自動分割ツールによる回路の自動分割が試みられているが、自動分割ツールは、回路のパフォーマンスを最優先に分割点を探すために、必ずしも設計者の意図する部分で分割するというものではない。自動分割ツールでは、ある箇所がどちらのチップに含まれるのか、分割されるまで分からないという問題がある。例えば、ある箇所の信号をモニタしたいと思っても、その箇所がどのように配置されるか分からない状況では、モニタの端子を配置することが困難である。また、自動分割ツールは、回路全体に対して分割点を決めるので、回路を追加すると分割点が変わるおそれもある。さらには、現実の回路ではトラブルが潜んでいる場合が多く、設計者の意図する箇所で分割されない場合には、分割後の実記試験でトラブルをあぶりだす作業が必要となる。
【０００７】
従来提案されているシステム又は回路の分割方法には、設計対象システムを複数の機能ブロックから構成し、機能ブロック間の通信量に基づいて、各機能ブロックをソフトウェアで構成するか、ハードウェアで構成するかを決定する方法がある（特許文献１参照）。また、単位となる機能ブロックを、通信量を考慮してグループ化し、このグループにハードウェアまたはソフトウェアを割り当てる方法（特許文献２参照）がある。しかしながら、これらの従来の方法は、通信量という基準に基づいて分割するので、設計者の意図を考慮するところがなく、回路を分割する際の柔軟性に欠ける。
【０００８】
【特許文献１】特開２００３−１３２１０８号公報
【特許文献２】特開２００３−２３３６３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、前記問題点に鑑み、システムや回路のモジュールへの分割を適切に行うことができるシステム分割方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明によるシステム分割方法は、システムを構成する要素および該要素間の結線を配置するステップと、システムを分割するための分割点のうちの少なくとも一つの分割点を、前記結線上に指定するステップと、自動分割ツールを用いて、少なくとも前記指定された分割点で前記システムを分割するステップとを有する。
【００１１】
前記少なくとも一つの分割点を前記結線上に指定するステップは、ダミーバッファを前記結線上に埋め込むステップとすることができる。
【００１２】
また、前記要素および該要素間の結線を配置するステップと、前記少なくとも一つの分割点を前記結線上に指定するステップとは、ハードウェア記述言語を用いて記述するようにしてもよく、前記少なくとも一つの分割点を、前記結線上に指定するステップは、ハードウェア記述言語を用いて前記結線に分割点を指示する修飾子を挿入するようにしてもよい。
【００１３】
さらに、自動分割ツールを用いて、前記分割されたシステムの分割端に、それぞれ入出力バッファを配置するステップを含むようにできる。
【００１４】
さらに、前記要素および該要素間の結線を配置するステップは、前記要素をブロックで表示するブロック線図で記述するステップであり、前記少なくとも一つの分割点を結線上に指定するステップは、ダミーブロックを前記結線上の点に埋め込むステップであってもよい。前記分割されたシステムが、ハード構成のシステムとソフト構成のシステムとからなる場合、前記分割されたシステムの分割端にそれぞれインタフェイスを挿入するステップを有するようにもできる。
【００１５】
さらに、本発明のシステム分割プログラムは、要素と、該要素間の結線と、前記結線上に指定された分割点とを有するシステムを、少なくとも前記指定された分割点でコンピュータに分割させる。
【発明の効果】
【００１６】
本発明によれば、システムを分割するための分割点のうちの少なくとも一つの分割点を、例えば設計者である作業者によって結線上に指定しておくので、自動分割ツールを使用しても、設計者の意図のとおり確実に分割することができる。また、モニタ用の端子なども簡単に設定することができ、その後の回路の追加による分割点の変動などを回避することができる。さらに、分割したモジュールをハードで構成するかソフトで構成するかを選択して、シミュレーションを高速にすることもできる。
【００１７】
大規模回路の場合、必要最小限の分割点の指定を行って、その他の部分の分割は、自動分割ツールに任せることもできるので、大規模回路の分割を確実かつ高速に実行できる。
【００１８】
また、ダミーバッファや修飾子を使用して指定すると、設計者に特別な負担をかけることなく分割指定を行える。また、ダミーバッファをハードウェア記述言語で記述する場合、ネットリストでも分割指定を行うことができる。またブロック線図でシステムを記述する場合は、ダミーブロックを挿入するだけで、ハード部分とソフト部分の切り分けも容易にできる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して実施の形態を説明する。
図１および図２により、本発明による回路の分割を説明する。
図１は、分割対象の回路を説明する一例であり、分割対象の回路１０は、インバータ１１の出力と、ゲート回路１３の出力とが、ＯＲ回路１２とを備える。このような回路１０を、ゲート回路１３とＯＲ回路１２との結線で分割したい場合、設計者は回路図上で、結線部分にダミーバッファ１５を挿入する。挿入されるダミーバッファ１５は、実装される部品ではなく、論理上のものであり、次の特徴を有する。
【００２０】
（１）通常の回路パーツと同様に扱え、設計者は特別な配慮をしなくとも挿入できる。
（２）論理シミュレータからは、単なる結線として扱われ、論理にも遅延時間にも影響しない。
（３）自動分割ツールは、このバッファの位置を、分割した結果の回路の終点／始点とすることができる。なお、自動分割ツールは、コンピュータに自動分割を行わせるプログラムで構成できる。
【００２１】
設計者は、通常の回路設計の段階で、ダミーバッファ１５を単なる回路パーツとして回路に埋め込むことにより、分割すべき箇所を指定することができる。自動分割ツールにダミーバッファ１５を分割点であることを教えておくと、自動分割ツールは、ダミーバッファ１５の位置で、回路を分割する。図２に、分割結果を示す。図１の回路１０のダミーバッファ１５の地点で、第１のモジュール１０Ａと第２のモジュール１０Ｂとに分割される。分割の際に、自動分割ツールは、Ｉ／Ｏバッファ１６、１７を配置する。バッファ１６は、第１のモジュール１０Ａの出力バッファであり、バッファ１７は、第２のモジュール１０Ｂの入力バッファである。
【００２２】
本実施形態では、設計時点で回路の分割位置を明確に示すことができるので、自動分割ツールを用いて確実に回路を分割できる。また、モニタしたい信号線にダミーバッファを挿入して、モニタ用の端子を確実に露出させることができる。さらに、設計時点で分割点を指定できるので、シミュレーションに際して、高速に動作するモジュールをハードで構成することができ、高速なシミュレーションを行うことができる。
【００２３】
VHDLやVerilogHDLのようなハードウェア記述言語（HDL）で回路を設計する場合には、ハードウェア記述言語にダミーバッファを導入して分割点に埋め込むように記述することによって、分割点を指定することができる。このように、ダミーバッファをハードウェア記述言語で定義される一部品として組み込めば、要素間の接続関係が記述されているネットリストでも分割点を指示することができる。ネットリスト上で分割点を指示できれば、分割点の追加、削除などの分割点を変更する場合でも、ソース作成の段階に戻ることなく、ネットリスト上で変更することができる。
【００２４】
ハードウェア記述言語で分割点を指示する場合、ダミーバッファに代えて、分割点の位置を指示する修飾子を用いることができる。すなわち、ハードウェア記述言語で分割点を指示するために、設計者が信号の宣言時に、VerilogHDLではwire、VHDLではsignalとして、例えば「_split」という修飾子を付した名前を信号名LINE_splitとして付与する。図１の例では、ダミーバッファ１５を埋め込むことなく、ダミーバッファ１５の位置すなわち分割すべき配線にLINE_splitを付与する。
【００２５】
付与された「LINE_split」は、記述上はあくまでも信号であるから、論理シミュレーションには影響がない。自動分割ツールは、その信号名をてがかりに分割を行い、入出力端にＩ／Ｏバッファを挿入する。結果は、図２と同様に、モジュール１０Aと１０Bに分割される。なお、ソフトウェア記述言語で設計される場合、自動分割ツールは、通常合成エンジンと一体に構成される。
【００２６】
ところで近年、例えばMATLAB／Simulink（登録商標）のような、システムをブロック線図等でグラフィカルに表現することができるツールを用いて、システム又は回路を設計する手法が開発されている。本発明によると、ブロック図で表現されたシステムに対して、ハードウェアで実現するモジュールであっても、ソフトウェアで実現するモジュールであっても、的確に分割点を指示することができ、分割後のモジュールのインタフェイスをとることができる。
【００２７】
図３（ａ）〜（ｃ）は、ブロック線図における分割を説明する図である。図３（ａ）は、ブロック３１とブロック３２とを有する分割前のシステムを示す。図３（ｂ）に示すように、このシステムに対して、設計者は、分割すべき位置にダミーブロック３５を埋め込む。ダミーブロック３５は、前述のダミーバッファと同様に、分割位置を指示するためのものであり、次のような特徴をもつ。
【００２８】
（１）通常のブロックと同様に扱え、設計者は何の配慮をしなくとも挿入できる。
（２）シミュレータからは、単なる結線として扱われる。
（３）自動分割ツールを用いて、ダミーブロックを手がかりとしてその位置で分割し、分割されたブロックは、別々のプログラムに変換できる。
【００２９】
設計者が、ブロック線図でシステムを記述する際に、ダミーブロック３５を埋め込んでおくと、自動分割ツールは、ダミーブロック３５を目印にダミーブロック３１の位置でシステムを分割する。その後、例えばＣ言語で作成されたブロック３１と３２のそれぞれのプログラムは、ＣＰＵで実行するソフトウェアで構成する場合は、バイナリの実行ファイルとし、ハードウェア例えばＦＰＧＡで構成する場合は、ロジックに変換することができる。本実施形態の場合は、シミュレーション時には全体で動作確認をして、その後実機で動作させるために分割することになる。
【００３０】
図３（ｃ）に示すように、ブロック３１が、ＣＰＵが実行するソフトウェアで実現すべきものであり、ブロック３２が、ＦＰＧＡで構成されたハードウェアとすべきものである場合、ソフトウェア（ブロック３１）とハードウェア（ブロック３２）を協調動作させるインタフェイス（Ｉ／Ｆ）ブロックを、分割点に配置することが必要である。
【００３１】
以下、このインタフェイスの一例を説明する。
ソフト部分とハード部分とのインタフェイスは、ブロック間接続をできるだけシームレスに見せるために、システムに仮想的な接続を用意しておき、ハード部分を周期動作させてソフト側と協調をとる。
【００３２】
例えば、ソフト部分のブロック３１のＩ／Ｆブロックを、レジスタアクセスルーチン３６で構成し、対応するハード部分のブロック３２のＩ／Ｆブロックは、レジスタ３７から構成するようにする。
【００３３】
ソフト側モデルにリンクするレジスタアクセスルーチン３６は、ハード側のＦＰＧＡのレジスタ３７をアクセスする。すなわち、ブロック３１のモデル出力の変数を取り出し、ＦＰＧＡに書き込み、ＦＰＧＡから信号を読み出しブロック３１に入力する。このルーチン３６の動作は、周期動作のために、ＦＰＧＡに対して演算条件が整ったことを示すフラグと演算が終わったことを示すフラグをやりとりする。
【００３４】
ハード側モデルと接続するレジスタ３７は、ソフト側とレジスタベースでインタフェイスをとる。モデル入力に接続された入力レジスタと、モデル出力に接続された出力レジスタとを備える。ソフト側から演算実行条件が整ったことを示すフラグを受け取り、演算終了を示すフラグを渡す。
【００３５】
このように、ダミーブロックを用いると、ブロック図のようにグラフィカルにシステムを記述できるツールにおいても、設計者がシステムの分割を指定することができ、設計者の意図する分割を確実に行うことができる。
【００３６】
前記の各実施形態は、設計者がすべての分割点を指定するものであったが、大規模回路では、すべての分割点にダミーバッファなどを挿入することは、負担が大きく、分割すべきでない箇所に誤ってダミーバッファを挿入するようなことも起こり得る。したがって、本実施形態では、どうしても分割したい点、信号のモニタのために端子を取り出したい点、あるいは自動分割では誤りやすい点などにのみダミーバッファを挿入して、残りは自動分割ツールに任せる。このようにすると、すべて人間の手で指示するよりも、高速かつ誤りの少ない分割が可能である。
【図面の簡単な説明】
【００３７】
【図１】回路を分割するために、ダミーバッファを挿入する本発明の一実施形態を示す図である。
【図２】図１の回路を分割した後、Ｉ／Ｏバッファを挿入する本発明の一実施形態を示す図である。
【図３】（１）〜（３）は、システムを分割する本発明の他の実施形態を示す図である。
【図１】
2006236263.tif 000003
【図２】
2006236263.tif 000004
【図３】
2006236263.tif 000005