(57)【要約】【課題】ハードウェアとソフトウェアの分担を自在に切替えられるようにする。【解決手段】定常応答処理と事象駆動処理とが択一に選択されて動作する機能処理ブロックモデルに基づいて、定常応答処理の動作を記述した動作仕様を入力・編集し（ステップＳ１２）、事象駆動処理の動作仕様を入力・編集する（ステップＳ１３）。次に、動作仕様が作成された機能処理ブロックをハードウェアあるいはソフトウェアに割り当てるパーティショニングが入力される（ステップＳ１４）。続いて、パーティショニングされた機能処理ブロックを動作仕様に基づいて機能評価する（ステップＳ１５）。評価の結果、必要であれば、ステップＳ１４に戻ってパーティショニングを設定しなおし、再び評価を行なう。【選択図】　　　　図１
2004086786.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用いて、システムの処理機能を機能処理ブロックに分割し、この機能処理ブロックをハードウェアとソフトウェアに分担して前記システムの設計を行なうシステム設計支援方法において、
内部状態あるいは前記内部状態とその時点での入力値とによって定まる定常応答処理と、所定のイベントに応じて駆動される事象駆動処理とから成る機能処理ブロックモデルに基づいて、前記定常応答処理および前記事象駆動処理の動作を記述した動作仕様を入力・編集するステップと、
作成された前記動作仕様に基づいて前記機能処理ブロックがハードウェアとソフトウェアに分担されるステップと、
ハードウェアとソフトウェアに分担された前記機能処理ブロックの動作仕様についての評価を行なうステップと、
を有することを特徴とするシステム設計支援方法。
【請求項２】
前記定常応答処理は、有限状態機械を用いて記述されることを特徴とする請求項１記載のシステム設計支援方法。
【請求項３】
前記事象駆動処理は、事象それぞれに対応する副処理ブロックに分割され、前記副処理ブロックごとに動作が記述されることを特徴とする請求項１記載のシステム設計支援方法。
【請求項４】
前記機能処理ブロックモデルは、前記定常応答処理と前記事象駆動処理とが択一に選択される構造であり、前記評価を行なうステップは、前記動作仕様に基づいて前記定常応答処理と前記事象駆動処理とを択一的に選択して実行させることを特徴とする請求項１記載のシステム設計支援方法。
【請求項５】
システムの処理機能を機能処理ブロックに分割し、前記機能処理ブロックをハードウェアとソフトウェアに分担して行なう前記システムの設計を支援するシステム設計支援装置において、
内部状態あるいは前記内部状態とその時点での入力値とによって定まる定常応答処理と、所定のイベントに応じて駆動される事象駆動処理とから成る機能処理ブロックモデルに基づいて、前記定常応答処理および前記事象駆動処理の動作を記述した動作仕様の入力と編集を行なう動作仕様編集手段と、
前記動作仕様編集手段により作成された前記動作仕様を記録する設計情報記録手段と、
前記動作仕様が作成された前記機能処理ブロックをハードウェアとソフトウェアに分担する分担手段と、
ハードウェアとソフトウェアに分担された前記機能処理ブロックの動作仕様についての評価を行なう機能処理ブロック評価手段と、
を具備することを特徴とするシステム設計支援装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はシステム設計支援方法およびシステム設計支援装置に関し、特にシステムの処理機能を機能処理ブロックに分割し、この機能処理ブロックをハードウェアとソフトウェアに分担してシステムの設計を行なうシステム設計支援方法およびシステム設計支援装置に関する。
【０００２】
【従来の技術】
近年、ＳＯＣ（Ｓｙｓｔｅｍ　ｏｎ　ａ　Ｃｈｉｐ）　やＳＩＰ　（Ｓｙｓｔｅｍ　ｉｎ　ａ　Ｐａｃｋａｇｅ）　、ＳＯＰ（Ｓｙｓｔｅｍ　ｏｎ　ａ　Ｐａｃｋａｇｅ）　などと呼ばれる半導体チップあるいは半導体パッケージ内に、命令セットを持ち演算実行を行なうプロセッサ、メモリや独自の命令セットを持つかプロセッサによって制御されるコ・プロセッサおよびディジタル周辺回路等のディジタル回路、場合により変調回路、増幅回路等のアナログ回路から構成される複合演算処理システム開発の要求が高まっている。
【０００３】
このような半導体装置の開発においては、実現すべき機能をハードウェアとソフトウェアとの最適の組み合わせとして短時間に実現するため、ハード・ソフト協調設計環境の構築が重要な課題となっている。システム設計の処理手順について説明する。図１８は、システム設計の処理手順のフローチャートである。
【０００４】
システム設計では、まずシステム全体の処理動作の仕様を決定する（ステップＳ０１）。次に、ステップＳ０１で決定されたシステム全体の動作仕様を機能処理ブロックに分割し（ステップＳ０２）、機能処理ブロックごとに処理の動作仕様を決定し（ステップＳ０３）、機能処理ブロックをモデル化する（ステップＳ０４）。続いて、各々の機能処理ブロックをＡＳＩＣなどのハードウェア、あるいはプロセッサなどで実行されるソフトウェアに分割するパーティショニングを行なう（ステップＳ０５）。次に、パーティショニングされたシステム全体の性能、面積などのコストの見積もりを算出して検証を行ない（ステップＳ０６）、見積もりの結果、システム設計者によって与えられる制約を満たしているかどうかを判定する（ステップＳ０７）。満たしていない場合は、ステップＳ０５へ戻ってパーティショニングからの処理を繰り返す。一般に、１回のパーティショニングで求められる制約が満たされることは稀であり、通常はハードウェアとソフトウェアの分担箇所を繰り返し変更し、システム全体の性能、面積などを見積もりながら制約を満たすパーティショニングを決定する。続いて、決定されたパーティショニングに基づいて、ハードウェア、ソフトウェアの詳細設計が開始される（ステップＳ０８）。
【０００５】
このパーティショニング決定の工程は、半導体装置開発上、非常に重要であり、パーティショニングの際には、プロセッサ、メモリ、コ・プロセッサ、ディジタル周辺回路等のディジタル回路あるいは変調回路、増幅回路等のアナログ回路のすべてを含むシステム全体の性能、面積などのコストを見積もり、システム設計者によって与えられる制約を満たすハードウェアとソフトウェアの分担を決定しなければならない。パーティショニングに使用する機能処理ブロックのモデルの精度が低く、正確に見積もれなかった場合、ハードウェア、ソフトウェアの詳細設計において、制約が満たされなくなることがある。この結果、システム設計者の要求する制約を満たすために、初期システム検討からやり直すか、制約自体を緩和しなければならない等、設計の長期化あるいは製品性能の劣悪化を招くおそれがある。
【０００６】
このように、設計の効率化および製品性能を向上させるためには、正確な見積もりを行なう必要があり、正確な見積もりには、パーティショニングに使用する機能処理ブロックのモデルが一定の精度を持っていなければならない。例えば、初期システム検討の段階では、少なくとも処理シーケンスレベルの精度を持たねばならないし、使用半導体プロセスや使用プロセッサ等が決定した後期システム検討段階では、ハードウェア・ソフトウェアおよびそれぞれの間を結ぶインタフェース部分について、ディジタル回路ではサイクル精度、ディジタル−アナログ・ミックス回路ではさらに信号レベル精度を持たなければならない。このため、このモデリング手法について、様々な手法が提案されている。
【０００７】
例えば、ハードウェアブロックのモデリング手法として、特開平１１−３３６７号、あるいは特開２０００−１１３０２６号公報記載の発明では、拡張ライブラリを使用して機能合成を行なう手法が開示されている。
【０００８】
また、システムレベルの記述言語を用いたものとして、例えば特開２０００−５７１９９号公報、あるいは、Ｄａｎｉｅｌ　Ｄ．　Ｇａｊｓｋｉ他著「ＳｐｅｃＣ仕様記述言語と方法論」、ＣＱ出版社、ＩＳＢＮ４−７８９８−３３５３−４、に詳しくそのモデリング手法が述べられている。このようなシステムレベル記述言語を用いたモデリングでは、データフロー（ＤＦＧ：Ｄａｔａ　Ｆｌｏｗ　Ｇｒａｐｈ）や、コントロールフロー（ＦＳＭ：Ｆｉｎｉｔｅ　Ｓｔａｔｅ　Ｍａｃｈｉｎｅ）や、その組み合わせを使用してモデルが構築される。図１９は、データフローおよびコントロールフローによるモデル記述の一例である。（１）は、データフローでの記述、（２）はコントロールフローでの記述の一例である。（１）データフローでは、動作処理がデータの流れ図で示されている。また、（２）コントロールフローでは、動作処理が事象によって状態を遷移する有限状態機械によって示されている。
【０００９】
同様に、ハード・ソフト協調設計手法のモデルとして、Ｆｅｌｉｃｅ　Ｂａｌａｒｉｎ他著、「Ｈａｒｄｗａｒｅ−Ｓｏｆｔｗａｒｅ　Ｃｏ−ｄｅｓｉｇｎ　ｏｆ　ｅｍｂｅｄｄｅｄ　Ｓｙｓｔｅｍｓ，　Ｔｈｅ　ＰＯＬＩＳ　Ａｐｐｒｏａｃｈ」、Ｋｌｕｗｅｒ　Ａｃａｄｅｍｉｃ　Ｐｕｂｌｉｓｈｅｒｓ、ＩＳＢＮ　０−７９２３−９９３６−６、のＣＦＳＭ（Ｃｏｄｅｓｉｇｎ　ＦＳＭ：協調設計有限状態機械）モデルがある。
【００１０】
【発明が解決しようとする課題】
しかし、従来のモデリング手法を用いたシステム設計方法では、システム設計時に使用したモデルを終始一貫して使用することができないという問題がある。
【００１１】
一般に、パーティショニング段階におけるハード・ソフトの分担決定は、制約に応じて変更が繰り返される。例えば、ある機能はハードまたはソフトの何れでも作ることができるが、高速化などの点ではハードが有利であり、設計変更などに対する自由度が高いという点ではソフトが有利である場合、どちらが最適であるかは、使用半導体プロセスや使用プロセッサなどの使用半導体テクノロジーが決定していない初期システム検討の段階と、これらが決定した後期システム検討の段階では異なることもある。このため、機能処理ブロックモデルは、ハードウェアおよびソフトウェアのいずれにも対応できるものであることが望ましい。また、設計の効率を考えると、パーティショニングに使用する機能処理ブロックのモデルは、次段階のハードウェア、ソフトウェアの詳細設計においても使用できることが望ましい。
【００１２】
しかしながら、従来の拡張ライブラリを使用して機能合成を行なうハードウェアブロックのモデリング手法は、ハードウェアの機能合成を目的とするものであり、ソフトウェアを含むシステム全体のモデリングを目的としたものでない。このため、動的処理シーケンスに対応できてなく、ソフトウェア分担に割り当てを変更することができない。
【００１３】
また、システムレベル記述言語を用いてモデルを構築するモデリング手法では、特別な言語およびシミュレーション環境を用いて動的処理シーケンス、すなわち、機能処理ブロックの並行動作に対応している。しかしながら、動作分割後、ハードウェアあるいはソフトウェアの詳細設計を行なう際には、モデルを書き直す工程を必要とし、システム設計時に使用したモデルが終始一貫して使用することができないという問題がある。例えば、ハードウェアブロックの場合、システム記述言語で記述されたモデルを、ＨＤＬ（Ｈａｒｄｗａｒｅ　Ｄｅｓｃｒｉｐｔｉｏｎ　Ｌａｎｇｕａｇｅ：ハードウェア記述言語）に書き直さなければならない。
【００１４】
さらに、現在のＳＯＣ内の演算処理は非常に高度化、複雑化されている。設計システム検討段階で必要とされる処理シーケンスについてさえ、静的シーケンス、静的スケジューリングなどのみで目的の演算処理が行なわれることは極めてまれである。例えば、映像、画像、音声など、広く情報処理と呼ばれる大多数の演算処理が動的シーケンス、動的スケジューリングなどによって達成されており、その処理シーケンスを正確に見積もり、次段階のシステム設計に繋げることが必要となっている。
【００１５】
本発明はこのような点に鑑みてなされたものであり、ハードウェアとソフトウェアの分担を自在に切替えることができるとともに、システム設計時に使用したモデルを終始一貫して使用することが可能なシステム設計支援方法およびシステム設計支援装置を提供することを目的とする。
【００１６】
【課題を解決するための手段】
本発明では上記課題を解決するために、コンピュータを用いて、システムの処理機能を機能処理ブロックに分割し、この機能処理ブロックをハードウェアとソフトウェアに分担して前記システムの設計を行なうシステム設計支援方法において、内部状態あるいは前記内部状態とその時点での入力値とによって定まる定常応答処理と、所定のイベントに応じて駆動される事象駆動処理とから成る機能処理ブロックモデルに基づいて、前記定常応答処理および前記事象駆動処理の動作を記述した動作仕様を入力・編集するステップと、作成された前記動作仕様に基づいて前記機能処理ブロックがハードウェアとソフトウェアに分担されるステップと、ハードウェアとソフトウェアに分担された前記機能処理ブロックの動作仕様についての評価を行なうステップと、を有することを特徴とするシステム設計支援方法、が提供される。
【００１７】
このような手順のシステム設計支援方法では、コンピュータを用いて、定常応答処理と事象駆動処理とから構成される機能処理ブロックモデルに基づいて、定常応答処理と事象駆動処理の動作を記述した動作仕様を入力・編集する。次に、作成された動作仕様に基づいて設定される機能処理ブロックのハードウェアとソフトウェアの分担を入力する。次に、ハードウェアとソフトウェアに分担された機能処理ブロックの動作仕様についての評価を行なう。
【００１８】
また、上記課題を解決するために、システムの処理機能を機能処理ブロックに分割し、前記機能処理ブロックをハードウェアとソフトウェアに分担して行なう前記システムの設計を支援するシステム設計支援装置において、内部状態あるいは前記内部状態とその時点での入力値とによって定まる定常応答処理と、所定のイベントに応じて駆動される事象駆動処理とから成る機能処理ブロックモデルに基づいて、前記定常応答処理および前記事象駆動処理の動作を記述した動作仕様の入力と編集を行なう動作仕様編集手段と、前記動作仕様編集手段により作成された前記動作仕様を記録する設計情報記録手段と、前記動作仕様が作成された前記機能処理ブロックをハードウェアとソフトウェアに分担する分担手段と、ハードウェアとソフトウェアに分担された前記機能処理ブロックの動作仕様についての評価を行なう機能処理ブロック評価手段と、を具備することを特徴とするシステム設計支援装置、が提供される。
【００１９】
このような構成のシステム設計支援装置では、動作仕様編集手段は、定常応答処理と事象駆動処理とから構成される機能処理ブロックモデルに基づいて、定常応答処理と事象駆動処理の動作を記述した動作仕様を入力し、編集作業を支援する。さらに、作成された動作仕様を設計情報記録手段に記録する。分担手段は、動作仕様に基づいて作成された機能処理ブロックをハードウェアとソフトウェアに分担する設定の支援を行なう。機能処理ブロック評価手段は、ハードウェアとソフトウェアに分担が設定された機能処理ブロックの評価を行なう。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概念について説明する。図１は、本発明の実施の形態に適用される発明の概念図である。本発明のシステム設計支援方法では、コンピュータを用いて、以下の手順で実行されるシステム設計の支援を行なう。
【００２１】
本発明に係るシステム設計支援方法を用いたシステム設計では、システム全体の動作仕様が決定した後、機能処理ごとに分割される機能処理ブロックモデルとして、従来のモデリング手法に加え、システムの状態に着目し、定常応答処理と事象駆動処理とが択一に選択されて実行されるモデル構造を使用する。定常応答処理は、内部状態あるいは内部状態とその時点での入力値とによって決定される動作であり、有限状態機械の形で記述することができる。事象駆動処理は、所定のイベントが発生した場合、イベントに応じて駆動されて動作を行なう。
【００２２】
ここで、システム設計の支援を行なうコンピュータは、情報を表示するモニタ１１０と、動作記述や指令などを入力するキーボード１２０を初めとする入力装置、および生成された動作仕様情報の記録や、性能評価時の使用データあるいは動作記述の入力や編集を支援するための情報を含む、設計情報を記録した設計情報データベース１３０に接続する。
【００２３】
このようなコンピュータによるシステム設計支援装置を用いて、上記の説明の機能処理ブロックモデルに基づくシステム設計が行なわれる。以下、システム全体の仕様が決定され、システム全体の動作仕様が機能処理ブロックに分割された以降のシステム設計の手順を説明する。これは、図１８に図示したシステム設計手順のステップＳ０４以降のステップに相当する。
【００２４】
まず、所定の機能処理ブロックにおいて実行される処理動作を定常応答処理と事象駆動処理に分割する（ステップＳ１１）。
次に、分割された定常応答処理についての動作を記述した動作仕様をコンピュータに入力し、編集作業を行なう（ステップＳ１２）。図１の例では、コンピュータは、キーボード１２０より入力する動作記述を処理し、モニタ１１０に表示する。設計者は、モニタ１１０で動作記述を確認し、必要であれば編集作業を行なう。ここでは動作記述をキーボード１２０より入力するとしたが、予め設計情報データベース１３０に登録されている部品を呼び出して使うなどの手法で動作記述を行なうこともできる。作成された動作仕様は、設計情報データベース１３０に記録される。
【００２５】
次に、分割された事象駆動処理についての動作仕様をコンピュータに入力し、編集作業を行なう（ステップＳ１３）。ステップＳ１２と同様に動作記述の編集処理が行なわれ、設計情報データベース１３０に記録される。事象駆動処理の動作記述と定常応答処理の動作記述の順番は、どちらが先に行なわれてもよいし、機能処理に応じて交互に実行することもできる。
【００２６】
ここまでの手順で、機能処理ブロックの動作仕様が決定され、設計情報データベース１３０に保存される。この動作仕様は、システムの状態に着目して記述されており、ハードウェア、ソフトウェアのどちらにも適用することができる。
【００２７】
次に、この機能処理ブロックをハードウェアかソフトウェアに割り当てるパーティショニング設定が入力される（ステップＳ１４）。図１の例では、入力されたパーティショニング設定は、機能処理ブロックごとに設計情報データベース１３０に記録される。
【００２８】
次に、パーティショニングによりハードウェアあるいはソフトウェアが割り当てられた機能処理ブロックの動作仕様について評価が行なわれる（ステップＳ１５）。評価では、システム設計の段階に応じて必要な情報を設計情報データベース１３０より取得し、動作仕様に基づいて模擬動作させ、見積もりを算出して行なう。例えば、使用半導体プロセスや使用プロセッサなどの仕様半導体テクノロジーが決定していない初期システムの検討段階では、動作仕様に基づく処理シーケンスを再現させ、これが制約を満たすかどうかの評価を行なう。
【００２９】
評価の結果、制約を満たすためにハードウェアとソフトウェアの割り当てを変更する場合、ステップＳ１４のパーティショニング設定からの処理を繰り返す。ここで、本発明の機能処理ブロックモデルは、システム状態に着目したモデルであるため、ソフトウェアおよびハードウェアいずれにも適用することができる。すなわち、ソフトウェアとハードウェアの分担を自在に切替えることができる。
【００３０】
このように、ソフトウェアあるいはハードウェアといった区別なしにシステムが構築可能であり、自在に分担を切替えながらパーティショニングを検討することができることから、システムの性能見積もりを容易にすることができる。
【００３１】
ここで、本発明で使用する機能処理ブロックモデルについて説明する。図２は、本発明の実施の形態である機能処理ブロックモデルの概念図である。
本発明の実施の形態で用いる機能処理ブロックモデルは、従来のモデリング手法に加え、システムの状態に着目している。すなわち、本発明に係るモデルでは、定常状態で実行される定常応答処理２１０と、イベント発生時に駆動される事象駆動処理２２０とを境界２３０によって明確に分離する。ここで、境界２３０は、定常応答処理２１０と事象駆動処理２２０とを分離する仮想的な境界を示しており、特別な演算を示すものではない。ここでは、定常応答処理２１０と事象駆動処理２２０とが明確に分離されることを示すため、図示されている。
【００３２】
ここで定常応答処理２１０は、従来のモデリング手法におけるデータフローとコントロールフローの組み合わせで記述することができる。また、事象駆動処理２２０は、データフローとコントロールフローで記述されるが、好ましくはデータフローのみで記述される。
【００３３】
この機能処理ブロックモデルでは、定常応答処理２１０と事象駆動処理２２０が択一に選択され、同時に並行に動作する。
ところで、コンピュータにより構成されるシステム設計支援装置では、システム設計を支援するためのデータ処理機能を有している。図３は、システム設計支援装置のハードウェア構成を示す図である。システム設計支援装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）１０２、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ　Ｄｉｓｋ　Ｄｒｉｖｅ）１０３、グラフィック処理装置１０４、が接続されている。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。グラフィック処理装置１０４には、モニタ１１０が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１０の画面に表示させる。入力インタフェース１０５には、キーボード１２０やマウス１４０が接続されている。入力インタフェース１０５は、キーボード１２０やマウス１４０から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００３４】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
続いて、このようなシステム設計支援装置１００におけるシステム設計支援機能について説明する。図４は、システム設計支援装置の機能を示すブロック図である。図１と同じものには同じ番号を付し、説明は省略する。
【００３５】
本発明に係るシステム設計支援装置は、定常応答処理の動作仕様を入力・編集する定常応答処理動作仕様エディタ部１５１、事象駆動処理の動作仕様を入力・編集する事象駆動処理動作仕様エディタ部１５２、パーティショニングを設定するパーティショニング部１５３、機能処理ブロックの評価を行なう機能処理ブロック評価部１５４および設計情報データベース１３０から構成される。
【００３６】
設計情報データベース１３０は、定常応答処理動作仕様エディタ部１５１および事象駆動処理動作仕様エディタ部１５２から入力する動作仕様と、パーティショニング部１５３から入力するパーティショニングの設定を機能処理ブロックに対応させて記録して管理するとともに、機能処理ブロック評価部１５４による評価の際に必要な情報を記憶している。
【００３７】
定常応答処理動作仕様エディタ部１５１および事象駆動処理動作仕様エディタ部１５２は、それぞれの処理の動作を記述した動作仕様を作成するための入力・編集作業を支援する動作仕様編集手段である。キーボードやマウスを介して入力される動作の記述あるいは動作記述の編集指示を処理し、動作仕様として設計情報データベース１３０に記録する。
【００３８】
パーティショニング部１５３は、動作仕様が作成された機能処理ブロックのハードウェアとソフトウェアの分担を設定する分担手段である。設計情報データベース１３０に記録された機能処理ブロックの動作仕様をモニタ等に表示し、キーボードやマウス等を介して入力する設計者による分担の設定に基づいて、該当する機能処理ブロックのソフトウェアまたはハードウェアの設定を決定し、設計情報データベース１３０に登録する。
【００３９】
機能処理ブロック評価部１５４は、パーティショニングがされた機能処理ブロックを設計情報データベース１３０に記録された動作仕様に基づいて再現し、評価を行なう機能処理ブロック評価手段である。
【００４０】
以下、このようなシステム設計支援装置を用いたシステム設計支援方法について、具体例で説明する。
最初に、説明で用いる機能処理ブロックモデルを仮想的に具現化した表記について説明する。図５は、本発明の実施の形態である機能処理ブロックモデルの表記例である。この図は、発明モデルの便宜上の表記であり、本発明のモデル構造をわかりやすくするための図である。
【００４１】
図５に示した機能処理ブロック２０１は、ブロックが定常応答処理部２１１と事象駆動処理部２２１とから構成されることを示している。また、機能処理ブロック２０１で示される枠は、機能処理ブロックのパーティショニングが完了しているかどうかを表すこととする。ここでは、機能処理ブロック２０１の枠内が塗りつぶされていない場合、割当未完であるとする。一方、機能処理ブロック２０１の枠内が所定の色で塗りつぶされている場合、割当完了であるとする。すなわち、図５に示した機能処理ブロック２０１はパーティショニング前であり、割当未完である。
【００４２】
さらに、階調２４０で示される枠は、パーティショニングの結果、ソフトウェアあるいはハードウェアのいずれかが選択されたことを表すこととする。ここでは、階調２４０の枠内が塗りつぶされていない場合、ソフトウェアが割り当てられているとする。一方、階調２４０の枠内が所定の色で塗りつぶされている場合、ハードウェアが割り当てられているとする。階調２４０で示される枠による表記は、機能処理ブロック２０１の枠内が塗りつぶされている場合、すなわちパーティショニングが完了の場合のみ有効である。
【００４３】
続いて、パーティショニングによりソフトウェアが割り当てられた場合と、ハードウェアが割り当てられた場合の機能処理ブロックの表記の例について説明する。
【００４４】
まず、ソフトウェアが割り当てられた場合について説明する。図６は、ソフトウェアが割り当てられた機能処理ブロックの表記例である。図５と同じものには同じ番号を付し、説明は省略する。機能処理ブロック２０２は、定常応答処理部２１１と事象駆動処理部２２１とから構成されており、機能処理ブロック２０２の枠内は塗りつぶされて割当完了であることを表しており、階調２４１の枠内は塗りつぶされておらずソフトウェア割当であることを表している。
【００４５】
次に、ハードウェアが割り当てられた場合について説明する。図７は、ハードウェアが割り当てられた機能処理ブロックの表記例である。図５と同じものには同じ番号を付し、説明は省略する。機能処理ブロック２０３は、定常応答処理部２１１と事象駆動処理部２２１とから構成されており、機能処理ブロック２０３の枠内は塗りつぶされて割当完了であることを表しており、階調２４２の枠内は塗りつぶされてハードウェア割当であることを表している。
【００４６】
このように、システム仕様から機能処理を分割された機能処理ブロックモデルは、定常応答処理（データフローとコントロールフローの組み合わせで表現される）と、事象駆動処理（好ましくはデータフローのみで表現される）を択一に選択し、すべてのシミュレーション工程において同時かつ並行に動作される。定常応答処理と事象駆動処理の切り替えは、多くは、ブロック内部変数によって伝達される、このブロック内部のイベント、あるいは、このブロックが外部に公開しているブロック内部変数への書き込みによって伝達される該ブロックの外部イベントによって行なわれる。
【００４７】
次に、機能処理ブロックの動作仕様の記述例について説明する。まず、定常応答処理、続いて事象駆動処理の動作記述について説明する。
図８は、本発明の実施の形態である定常応答処理の動作記述例である。ここでは、プログラミング言語により記述されており、定常応答処理部８０１は、有限状態機械の形で記述されている。図８の例では、定常応答処理は、ブロック０の状態を示すＢＬＯＣＫ０＿ＳＴＡＴＥの値によって分岐処理を行なっており（８０２）、ＢＬＯＣＫ０＿ＳＴＡＴＥがＢＬＯＣＫ０＿ＳＴ＿ＩＮＴの場合（８０３）、ＢＬＯＣＫ０＿ＳＴ＿ＩＤＬＥの場合（８０４）およびＢＬＯＣＫ０＿ＳＴ＿ＲＵＮの場合（８０５）の各動作が記述されている。ここで、動作記述は、使用するプログラム言語に依存しておらず、分岐処理記述を持ったプログラミング言語であれば、同様の動作記述を行なうことができる。
【００４８】
図９は、本発明の実施の形態である事象駆動処理の動作記述例である。駆動応答処理部分は、データフローあるいはコントロールフローで記述することが可能であるが、好ましくは、データフローのみで記述する。図９の例では、発生する事象それぞれに対応する副処理ブロック９０１と９０２とに分割され、副処理ブロック９０１、９０２ごとに、その事象に応じて駆動される動作が記述される。
【００４９】
なお、本発明の機能処理ブロックモデルを使用したシステムの構築には、モデル記述内で使用される変数のいわゆるスコープを明確にしなければならない。このモデルは、定常応答処理部と事象駆動処理部から成り、モデル記述中に使用される変数はすべてこのモデル内にスコープを閉じることが要求される。すなわち、好ましくは、モデル記述内に使用される変数はすべてユニークな変数名であり、さらに、使用するプログラミング言語のスコープ指定により完全に他ブロックの影響を遮断することが望ましい。本発明のモデルの定常応答処理部と事象駆動処理部との関連処理は、このスコープを閉じた変数によって行なう。図８と図９の例では、ブロック０の状態変数（ＢＬＯＣＫ０＿ＳＴＡＴＥ）によって行なう。言い換えると、モデルで記述されるブロックとその外部ブロックとの通信は、呼び出される（いわゆるスレーブ側）ブロックモデルの事象駆動処理部に、呼び出す側（いわゆるマスター側）からイベント（事象）与えることによって行なわれる。
【００５０】
ここで、図８に示した定常応答処理部は、ソフトウェア割り当てではメインルーチンとなり、ハードウェア割り当てでは順序回路として機能することが自明である。また、図９に示した事象駆動処理部は、ソフトウェア割り当てでは割り込み処理部分となり、ハードウェア割り当てでは組み合わせ論理回路として機能することが自明である。また、事象駆動処理にコントロールフローでの記述が含まれている場合、順序論理回路が含まれる。図９の例では、事象駆動処理部（副処理ブロック９０１，９０２）はすべて、ブロック０がスレーブとしてイベントを受ける場合に起動され、かつその信号の方向（入力側なのか出力側なのか）にまったく無関係であることがわかる。
【００５１】
このように、本発明の機能処理ブロックモデルでは、ハードウェアとソフトウェアの入れ替えが容易であるばかりでなく、システム設計時のパーティショニングを決定する前に実際のインプリメントごとのソフトウェア、あるいはハードウェア形態を容易に予測することができる。
【００５２】
以上のように、本発明では、ハードウェアとソフトウェアを同一の機能処理ブロックモデルで表現することができることから、ハードウェアあるいはソフトウェア分担を相互に入れ替えながらシステム設計を行なうことが可能となる。さらに、性能、面積などコスト見積もり後にシステムアーキテクチャが決定した後、機能処理ブロックがハードウェア、ソフトウェアのどちらに割り当てられている場合であっても、モデルの抽象度を詳細化するのみであり、割り当てによりモデルを書き直す必要はまったく生じず、終始一貫したモデル構造の使用が可能となる。また、システム設計者の意図を示すモデル記述は、どの抽象レベルにいても完全に保持することができる。
【００５３】
次に、機能評価を行なう際のシミュレーション工程について説明する。図１０は、本発明の実施の形態であるシミュレーション工程を示すフローチャートの例である。図１０に示したシミュレーション工程では、動作仕様の記述が行なわれた機能処理ブロックをタスク（図ではタスク０からタスク３）に割り当て、シミュレーション処理を起動する。具体的には、シミュレーション処理が開始されると、まずブロック０に割り当てられたタスク０が起動され（Ｓ１５１）、続いて、ブロック１に割り当てられたタスク１が起動され（Ｓ１５２）、ブロック２に割り当てられたタスク２が起動され（Ｓ１５３）、ブロック３に割り当てられたタスク３が起動される（Ｓ１５４）。それぞれのタスク処理が起動されると、タスク０からタスク３まで順に、イベント発生の有無をチェックし、イベント発生が発生していれば、これに応じたシミュレーション処理が行なわれる。どのタスクについての処理も同じであるので、タスク０の場合で説明する。シミュレーション処理では、イベントが発生したかどうかの判定が行なわれ（Ｓ１５１１）、判定結果に応じて事象駆動処理（Ｓ５１１２）、または定常応答処理（Ｓ１５１３）が実行される。これらの処理は、あらかじめ設定された単位時間などに到達するまで繰り返される。
【００５４】
このように、すべての機能処理ブロックを同時並行に動作させることが可能であるため、実際の動作を再現することが可能であり、この結果検証が容易に行なえるようになる。
【００５５】
なお、図１０の例では、イベント処理部１００１は厳密なイベント発生順を再現できていない。すなわち、複数のイベントが同一ループ内で発生した場合のシーケンスは正しく再現せず、同一のループ内での唯一のイベントが発生した場合のみ正しく表現できる。これは、シミュレータのイベント処理部１００１は、シミュレータを実行するコンピュータ環境に依存しているためである。これについては、たとえば、オペーレーティングシステム（ＯＳ）のイベントキューを使用し、ファーストイン・ファーストアウトの概念でタスクスイッチを行なうなどの種々の変形例が考えられる。このように、イベント発生シーケンスに忠実であることが好ましい。シミュレータの定常応答処理部１００２も同様にシミュレータを実行するコンピュータ環境に依存し、機能処理ブロックがアイドル状態にあるときの空回りを抑制するシミュレーション機構を構築し、シミュレーション時間の短縮を図るなどの変形例が考えられる。
【００５６】
このように、動的処理シーケンスを正確にシミュレーションすることが可能であり、従って性能、面積などのコストを正確に見積もることが可能となる。また、システム検証時の不具合検出率の向上にも寄与することができる。
【００５７】
以下、本発明を適用した具体例として、一般的な１プロセッサシステムＬＳＩ、プロセッサを含まないＬＳＩ、マルチプロセッサシステム、マルチタスクシステムおよびシステム内システムに本発明を適用した場合について図を用いて順に説明する。以下の説明に用いる図は、図５、図６および図７で用いた機能処理ブロックモデルの表記例を用いている。
【００５８】
第１に、一般的な１プロセッサシステムＬＳＩの場合について説明する。図１１は、一般的な１プロセッサシステムＬＳＩに適用した場合のシステム構成図の例である。図１１の例では、所定の処理機能を実行する機能処理ブロック１１０１、１１０２、１１０３、１１０４、１１０５、１１０６、１１０７、１１０８が相互に接続するシステム構成であり、機能処理ブロック１１０１にはソフトウェアが割り当てられており、他の機能処理ブロック１１０２、１１０３、１１０４、１１０５、１１０６、１１０７、１１０８にはハードウェアが割り当てられている。ソフトウェアが割り当てられている機能処理ブロック１１０１は、プロセッサによりソフトウェア処理を実行するブロックであり、定常応答処理部１１２１と事象駆動処理部１１２２とから構成されている。同様に、ハードウェアが割り当てられている機能処理ブロック１１０２も、定常応答処理部１１２３と事象駆動処理部１１２４とから構成されている。明らかに、ソフトウェアあるいはハードウェア割り当てによってモデル構成が変化することなく、共通のモデルによって表現される。また、どちらに割り当てても、実際のインプリメント後のブロック構成の予測性を損なうことがない。
【００５９】
第２に、プロセッサを含まないＬＳＩ（いわゆるＡＳＩＣ）の場合について説明する。図１２は、プロセッサを含まないＬＳＩに適用した場合のシステム構成図の例である。図１２の例は、図１１と同様に、機能処理ブロック１２０１、１２０２、１２０３、１２０４、１２０５、１２０６、１２０７、１２０８が相互に接続するシステム構成であり、すべての機能処理ブロックにハードウェアが割り当てられている。このハードウェアが割り当てられた機能処理ブロックも、定常応答処理部１２２１と事象駆動処理部１２２２とから構成されている。このように、本発明では、プロセッサを含まず、すべてがハードウェア割り当て機能処理ブロックで構成されるシステムも、図１１に示したソフトウェア割り当て機能処理ブロックを含む場合と同様に動作を記述することができる。
【００６０】
第３に、マルチプロセッサシステム（いわゆる並列コンピューティング）の場合について説明する。図１３は、マルチプロセッサシステムに適用した場合のシステム構成図の例である。図１３の例は、図１２と同様に、機能処理ブロック１３０１、１３０２、１３０３、１３０４、１３０５、１３０６、１３０７、１３０８が相互に接続するシステム構成であるが、すべての機能処理ブロックにはソフトウェアが割り当てられている。このソフトウェアが割り当てられた機能処理ブロックも、定常応答処理部１３２１と事象駆動処理部１３２２とから構成されている。このように、本発明では、すべてがソフトウェア割り当て機能処理ブロックで構成されるシステムも、図１１に示したソフトウェア割り当て機能処理ブロックとハードウェア割り当て機能処理ブロックが混合された場合、あるいは、図１２に示したすべてがハードウェア割り当て機能処理ブロックで構成される場合と同様に動作を記述することができる。
【００６１】
第４に、マルチタスクシステムの場合について説明する。図１４は、マルチタスクシステムに適用した場合のシステム構成図の例である。図１４の例のマルチタスクシステムは、階層構造をとっており、すべての機能処理ブロック１４０１、１４０２、１４０３、１４０４にはソフトウェアが割り当てられている。プロセッサ上のカーネルプログラムに相当する機能処理ブロック１４０１が最上位階層となり、カーネルプログラム支配下の各タスクに相当する機能処理ブロック１４０２、１４０３、１４０４が下の階層になる。カーネルプログラムに相当する機能処理ブロック１４０１も、定常応答処理部１４２１と事象駆動処理部１４２２とから構成され、その支配下の各タスクも定常応答処理部と事象駆動処理部とから構成されている。カーネルプログラムは、いわゆるＯＳの使用が一般的である。その場合にも、カーネルプログラムと支配下の各タスクとの関係、および各タスクとの関係は保持されるため、モデル構成を変更する必要がない。
【００６２】
また、図１５は、マルチタスクシステムに適用した場合の動作仕様の記述例である。動作仕様は、最上位階層の機能処理ブロック１４０１のものであり、記述の最上位階層に相当する動作記述部１５０１は、カーネルプログラムを意味する。続く、動作記述部１５０２では、タスクの生成処理が記述され、次の動作記述部１５０３では、タスクを実行状態にする処理が記述されている。すなわち、各タスクに相当する機能処理ブロック１４０２、１４０３、１４０４は、動作記述部１５０２において生成され、動作記述部１５０３において実行状態となる。この動作記述部１５０１は、システム設計の後期にはＯＳに置き換えられ、タスク生成の動作記述部１５０２およびタスク実行の動作記述部１５０３は、一般にＯＳのサービスルーチンコールとして置き換えられる。置き換えの際には、モデルの抽象度を詳細化するのみであり、モデルを書き直す必要がまったく生じない。すなわち、終始一貫したモデル構造の使用が可能となる。
【００６３】
このように、階層化構造を有するシステムも、同様に動作記述することが可能であり、階層化構造に対するモデル構造のロバスト性が高い。
第５に、システム内システム（いわゆるＳＩＰ、ＳＯＰ）の場合について説明する。図１６は、システム内システムに適用した場合のシステム構成図の例である。図１６の例のシステム内システムは、階層構造をとっており、機能処理ブロック１６０１、１６０２、１６０３にはハードウェアが割り当てられ、機能処理ブロック１６０４、１６０５、１６０７、１６０８にはソフトウェアが割り当てられている。システム構成の最上位階層となる機能処理ブロック１６０１は、ハードウェアによるシステム全体の制御回路を想定しているが、単にサブシステムが合体した構成でもよい。この場合、機能処理ブロック１６０１は省略可能である。機能処理ブロック１６０２、１６０３は、サブシステムを示している。ここで、機能処理ブロック１６０１上のサブシステムは、すべてプロセッサを含んだＳＯＣを想定しているが、まったくプロセッサを含まなくとも、プロセッサを含むものと含まないものとの双方が混在していようとも、システム構築、シミュレーションによる検証ともに可能である。さらに、サブシステムがアナログ回路であってもモデル上何ら問題は生じず、単にアナログ−ディジタルレベルコンバータブロックモデルを、アナログ−ディジタル界面に挿入することのみで表現、実行可能となる。これは、発明モデルの抽象度（あるいは計算粒度）に制限がないことを証明しており、異なる抽象度のモデルを混在させて性能や面積などのコストを見積もることが可能であることを意味する。
【００６４】
また、図１７は、システム内システムに適用した場合の動作仕様の記述例である。動作記述部１７０１は、最上位階層を示している。動作記述部１７０２は、サブシステムの初期化処理を記述しており、動作記述部１７０３は、サブシステムの有効化処理を記述している。
【００６５】
なお、本発明は以上の適用例にのみ限定されるものではなく、例えば、第１の適用例と第４の適用例の組み合わせ、第３の適用例と第４の適用例の組み合わせというような種々の変形が考えられる。
【００６６】
以上の説明のように、本発明は、現在考慮されるあらゆるシステム構成に対応することが可能である。例えば、プロセッサ上のハードウェアシステムが、今後本格的な一般化が期待されるハードウェア部追加による拡張命令セットの使用が可能なプロセッサシステムのシステムモデルを意味するなど、現在一般化していない構成の検討および性能見積もりが可能となる。さらに、動作記述は一般的なプログラミング言語全般で行なうことができるため、特別なシミュレーション環境を必要としない。このように、一般的なプログラミング言語全般でのモデル構築が可能であることから、一旦構築したモデルあるいはシステムの再利用が容易にできる。
【００６７】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、システム設計支援装置が有すべき機能の処理内容を記述したプログラムが提供される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【００６８】
また、プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムを、自己の記憶装置に格納する。そして、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
【００６９】
【発明の効果】
以上説明したように本発明のシステム設計支援方法では、従来のモデリング手法に加え、システムの状態に着目し、定常応答処理と事象駆動処理の択一モデル構成に拡張した機能処理ブロックモデルを用いており、ハードウェアおよびソフトウェアの双方に適用することができる。このため、システム設計の際に必須となるパーティショニング検討時に、ハードウェアとソフトウェアの分担を自在に切替えながら検討できることとなり、システムの性能見積もりを容易にすることができる。また、詳細設計においては、機能処理ブロックモデルの抽象度を詳細化するのみでよく、ハードウェア、ソフトウェアのどちらに割り当てられても、終始一貫したモデルを使用することができる。
【００７０】
また、本発明のシステム設計支援装置では、従来のモデリング手法に加え、システムの状態に着目し、定常応答処理と事象駆動処理の択一モデル構成に拡張した機能処理ブロックモデルに従って、処理機能の動作を記述した動作仕様を入力し、パーティショニングの設定に応じて機能処理ブロックの評価を行なう。このとき、パーティショニングにおいて、ハードウェアとソフトウェアの分担を自在に切替え、評価を行なうことができるため、システムの性能見積もりを容易にすることができる。また、次段の詳細設計では、同一の機能処理ブロックモデルを用いて、モデルの抽象度を詳細化する動作記述を入力・編集することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に適用される発明の概念図である。
【図２】本発明の実施の形態である機能処理ブロックモデルの概念図である。
【図３】システム設計支援装置のハードウェア構成を示す図である。
【図４】システム設計支援装置の機能を示すブロック図である。
【図５】本発明の実施の形態である機能処理ブロックモデルの表記例である。
【図６】ソフトウェアが割り当てられた機能処理ブロックの表記例である。
【図７】ハードウェアが割り当てられた機能処理ブロックの表記例である。
【図８】本発明の実施の形態である定常応答処理の動作記述例である。
【図９】本発明の実施の形態である事象駆動処理の動作記述例である。
【図１０】本発明の実施の形態であるシミュレーション工程を示すフローチャートの例である。
【図１１】一般的な１プロセッサシステムＬＳＩに適用した場合のシステム構成図の例である。
【図１２】プロセッサを含まないＬＳＩに適用した場合のシステム構成図の例である。
【図１３】マルチプロセッサシステムに適用した場合のシステム構成図の例である。
【図１４】マルチタスクシステムに適用した場合のシステム構成図の例である。
【図１５】マルチタスクシステムに適用した場合の動作仕様の記述例である。
【図１６】システム内システムに適用した場合のシステム構成図の例である。
【図１７】システム内システムに適用した場合の動作仕様の記述例である。
【図１８】システム設計の処理手順のフローチャートである。
【図１９】データフローおよびコントロールフローによるモデル記述の一例である。
【符号の説明】
１１０・・・モニタ、１２０・・・キーボード、１３０・・・設計情報データベース、１５１・・・定常応答処理動作仕様エディタ部、１５２・・・事象駆動処理動作仕様エディタ部、１５３・・・パーティショニング部、１５４・・・機能処理ブロック評価部、２１０・・・定常応答処理、２２０・・・事象駆動処理、２３０・・・境界
【図１】
2004086786.tif 000003
【図２】
2004086786.tif 000004
【図３】
2004086786.tif 000005
【図４】
2004086786.tif 000006
【図５】
2004086786.tif 000007
【図６】
2004086786.tif 000008
【図７】
2004086786.tif 000009
【図８】
2004086786.tif 000010
【図９】
2004086786.tif 000011
【図１０】
2004086786.tif 000012
【図１１】
2004086786.tif 000013
【図１２】
2004086786.tif 000014
【図１３】
2004086786.tif 000015
【図１４】
2004086786.tif 000016
【図１５】
2004086786.tif 000017
【図１６】
2004086786.tif 000018
【図１７】
2004086786.tif 000019
【図１８】
2004086786.tif 000020
【図１９】
2004086786.tif 000021