トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 回路設計システム、回路設計方法および回路設計プログラムを格納したコンピュータ読取り可能な記録媒体
【発明者】 【氏名】橘 昌良

【要約】 【課題】機能ブロックの実装方式を短時間且つ精度良く決定する。

【解決手段】各機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせおよび組み合わせの性能を評価した結果を格納したアルゴリズム・アーキテクチャデータベース132と、アルゴリズム・アーキテクチャデータベース132内に格納された情報を参照して、各機能モジュールを実現するアルゴリズムとアーキテクチャの可能な全ての組み合わせを生成する組み合わせ生成部113と、制約条件、評価関数および動作シナリオに基づいて、組み合わせ生成部113が生成した組み合わせの性能を評価する性能評価部115と、性能評価部115の評価結果を参照して、所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせを格納する候補データベース135とを具備する。
【特許請求の範囲】
【請求項1】 設計する回路における複数の機能ブロックの実装方式を決定する回路設計システムであって、各機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせおよび当該組み合わせの性能を評価した結果を格納したアルゴリズム・アーキテクチャデータベースと、前記アルゴリズム・アーキテクチャデータベース内に格納された情報を参照して、各機能モジュールを実現するアルゴリズムとアーキテクチャの可能な全ての組み合わせを生成する組み合わせ生成部と、制約条件、評価関数および動作シナリオに基づいて、前記組み合わせ生成部が生成した組み合わせの性能を評価する性能評価部と、前記性能評価部の評価結果を参照して、所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせを格納する候補データベースとを具備することを特徴とする回路設計システム。
【請求項2】 前記候補データベース内に格納されたアルゴリズムとアーキテクチャの組み合わせに関する機能モデルを格納した機能モデルデータベースと、機能レベルシミュレーションに使用するテストベクタを格納したテストベクタデータベースと、前記機能モデルデータベースおよびテストベクタデータベース内に格納された情報を参照して、前記候補データベース内に格納されたアルゴリズムとアーキテクチャの組み合わせについて機能レベルシミュレーションを実行する機能レベルシミュレーション部とを具備することを特徴とする請求項1に記載の回路設計システム。
【請求項3】 設計する回路における複数の機能ブロックの実装方式を決定する回路設計方法であって、各機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせおよび当該組み合わせの性能を評価した結果を利用して、各機能モジュールを実現するアルゴリズムとアーキテクチャの可能な全ての組み合わせを生成するステップと、制約条件、評価関数および動作シナリオに基づいて、生成された組み合わせの性能を評価するステップと、性能の評価結果を利用して、所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせを抽出するステップとを有することを特徴とする回路設計方法。
【請求項4】 アルゴリズムとアーキテクチャの組み合わせに関する機能モデルとテストベクタを利用して、前記所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせについて機能レベルシミュレーションを実行するステップとを有することを特徴とする請求項3に記載の回路設計方法。
【請求項5】 設計する回路における複数の機能ブロックの実装方式を決定する回路設計プログラムを格納したコンピュータ読取り可能な記録媒体であって、各機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせおよび当該組み合わせの性能を評価した結果を利用して、各機能モジュールを実現するアルゴリズムとアーキテクチャの可能な全ての組み合わせを生成する処理と、制約条件、評価関数および動作シナリオに基づいて、生成された組み合わせの性能を評価する処理と、性能の評価結果を利用して、所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせを抽出する処理とを含み、これらの処理をコンピュータに実行させることを特徴とする回路設計プログラムを格納したコンピュータ読取り可能な記録媒体。
【請求項6】 アルゴリズムとアーキテクチャの組み合わせに関する機能モデルとテストベクタを利用して、前記所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせについて機能レベルシミュレーションを実行する処理を含み、この処理をコンピュータに実行させることを特徴とする請求項5に記載の回路設計プログラムを格納したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、設計する回路内における複数の機能ブロックの実装方式を決定する回路設計システム、回路設計方法および回路設計プログラムを格納したコンピュータ読取り可能な記録媒体に関し、特に、機能ブロックの実装方式を短時間且つ精度良く決定することを可能にする技術に係わる。
【0002】
【従来の技術】従来、システムLSI等のデジタルシステムの回路設計処理においては、各機能ブロックの実装方式(仕様)は、各実装方式に対して機能レベルのシミュレーションを行い、そのシミュレーション結果に基づいて各実装方式の性能を見積もることにより決定されていた。
【0003】
【発明が解決しようとする課題】ところが、このような方法により実装方式を決定する場合、実装方式の候補の数が多くなった時には、機能レベルシミュレーションが完了するまでに膨大な時間が必要となる上に、実装方式の全ての組み合わせを検討することが非常に困難となるために、各機能ブロックの実装方式を精度良く決定することが難しくなってしまう。
【0004】本発明は、このような技術的課題を解決すべくなされたものであり、その目的は、機能ブロックの実装方式を短時間且つ精度良く決定することを可能にする技術を提供することにある。
【0005】
【課題を解決するための手段】本発明に係る回路設計システムの特徴は、設計する回路における複数の機能ブロックの実装方式を決定する回路設計システムであって、各機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせおよび組み合わせの性能を評価した結果を格納したアルゴリズム・アーキテクチャデータベースと、アルゴリズム・アーキテクチャデータベース内に格納された情報を参照して、各機能モジュールを実現するアルゴリズムとアーキテクチャの可能な全ての組み合わせを生成する組み合わせ生成部と、制約条件、評価関数および動作シナリオに基づいて、組み合わせ生成部が生成した組み合わせの性能を評価する性能評価部と、性能評価部の評価結果を参照して、所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせを格納する候補データベースとを具備することにある。
【0006】このシステムによれば、システムを実現するアルゴリズムとアーキテクチャの良い組み合わせを機能レベルのシミュレーションを行うことなく高速に選択することができる。
【0007】本発明に係る回路設計方法の特徴は、設計する回路における複数の機能ブロックの実装方式を決定する回路設計方法であって、各機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせおよび組み合わせの性能を評価した結果を利用して、各機能モジュールを実現するアルゴリズムとアーキテクチャの可能な全ての組み合わせを生成するステップと、制約条件、評価関数および動作シナリオに基づいて、生成された組み合わせの性能を評価するステップと、性能の評価結果を利用して、所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせを抽出するステップとを有することにある。
【0008】この方法によれば、システムを実現するアルゴリズムとアーキテクチャの良い組み合わせを機能レベルのシミュレーションを行うことなく高速に選択することができる。
【0009】本発明に係る回路設計プログラムを格納したコンピュータ読取可能な記録媒体の特徴は、設計する回路における複数の機能ブロックの実装方式を決定する回路設計プログラムを格納したコンピュータ読取り可能な記録媒体であって、各機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせおよび組み合わせの性能を評価した結果を利用して、各機能モジュールを実現するアルゴリズムとアーキテクチャの可能な全ての組み合わせを生成する処理と、制約条件、評価関数および動作シナリオに基づいて、生成された組み合わせの性能を評価する処理と、性能の評価結果を利用して、所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせを抽出する処理とを含み、これらの処理をコンピュータに実行させることにある。
【0010】この記録媒体によれば、システムを実現するアルゴリズムとアーキテクチャの良い組み合わせを機能レベルのシミュレーションを行うことなく高速に選択することができる。
【0011】ここで、アルゴリズムとアーキテクチャの組み合わせに関する機能モデルとテストベクタを利用して、所定の評価値以上のアルゴリズムとアーキテクチャの組み合わせについて機能レベルシミュレーションを実行することが望ましい。
【0012】これにより、候補データベース内に格納された複数の組み合わせから機能レベルのシミュレーションにより最良のものを精度良く選択できる。
【0013】また、動作シナリオに対して、機能モジュール間の資源の共有関係を実行の順序として有向枝をループが存在しないように追加して、機能モジュール間に資源の共有関係が存在しても動作順序を矛盾なく表現できるようにすることが望ましい。
【0014】これにより、システムの動作を表現する動作シナリオに機能モジュール間の資源の共有関係を反映させることができる。
【0015】また、動作シナリオの最短の実行時間は、動作シナリオに対して、機能モジュールを表現する節点にある組み合わせにおける実行時間を重みとして加え、処理の開始をあらわす節点から終了を表す節点までの経路のうち最長のものを動作シナリオの最短の実行時間として求めるようにすると良い。
【0016】これにより、動作シナリオにおいて機能モジュールの実行時間を節点の重みとして負荷し最長経路を求めることで処理の最短実行時間を求めることができる。
【0017】さらに、任意の並列度の実行順と実行時間は、動作シナリオを表現する半順序グラフをトポロジカルソートすることで機能モジュール間の実行順序を定め、あらかじめ定められた並列度で少なくとも一つのスレッドに機能モジュールを振り分けることで見積もると良い。
【0018】これにより、動作シナリオをトポロジカルソートし、各機能モジュールをスレッドに振り分けることで任意の並列度の実行順と実行時間を見積もることができる。
【0019】さらにまた、動作シナリオを実行中のシステムの消費電力の最大値、最小値、平均値は、機能モジュールの実行順序にしたがって、予め見積もられている各機能モジュールを実装するハードウェアの実行中の消費電力を積算し、ハードウェアが実行中でない場合にはあらかじめ見積もられているハードウェアの休止状態での消費電力を積算することで求めるようにすることが望ましい。
【0020】これにより、動作シナリオを実行中のシステムの消費電力の最大値、最小値、平均値を求めることができる。
【0021】また、動作シナリオを実行中のシステムのバスアクセスの最大値、最小値、平均値は、決定した機能モジュールの実行順序にしたがって、あらかじめ見積もられている各機能モジュールを実装するハードウェアの実行中のバスアクセスを積算することで求めるようにすると良い。
【0022】これにより、動作シナリオを実行中のシステムのバスアクセスの最大値、最小値、平均値を求めるバスアクセス頻度を見積もることができる。
【0023】さらに、システムの実現に必要なLSIの面積は、決定した機能モジュールの実行順序にしたがって、同時に必要とするハードウェア資源の最大値を見積もることにより求めるようにすると良い。
【0024】これにより、システムの実現に必要なLSIの面積を見積もることができる。
【0025】さらにまた、候補データベースに含まれる組み合わせについて可能なハードウェア構成であるすべてのシステムアーキテクチャを生成し、システムアーキテクチャデータベースに格納する手段と、切り分け候補データベースの組み合わせにしたがって動作シナリオを資源の共有関係を反映させる動作シナリオ更新手段を具備し、更新された動作シナリオをシステムアーキテクチャデータベースに含まれるすべてのシステムアーキテクチャについて評価するこようにしても良い。
【0026】これにより、システムを実現するアルゴリズムとアーキテクチャの組み合わせに対して可能なすべてのシステムアーキテクチャを生成することができ、それらについての性能を見積もることができる。
【0027】
【発明の実施の形態】以下、図1乃至図30を参照して、本発明の実施形態に係る回路設計システムの構成およびその動作について詳しく説明する。
【0028】《回路設計システム》始めに、図1を参照して、本発明の実施形態に係る回路設計システムの構成について説明する。
【0029】本発明の第1の実施形態に係る回路設計システムは、図1に示すように、回路設計装置110を備え、回路設計装置110は、入出力インタフェイス111、フレームワーク作成部112、組み合わせ生成部113、機能レベルシミュレーション部114、性能評価部115、制御部116を具備する。
【0030】入出力インタフェイス111は、ユーザとシステム間における情報の入出力処理を制御する役割を担い、具体的には例えば、グラフィカルユーザインタフェイス(Graphical User Interface:GUI)等を利用することにより、インタラクティブな回路設計処理が可能となる。
【0031】フレームワーク作成部112は、候補作成処理および切り分け決定処理のためのフレームワークを作成する。
【0032】組み合わせ生成部113は、各機能モジュールを実装するアルゴリズムとアーキテクチャの組み合わせを、アルゴリズム・アーキテクチャデータベース132内に格納された組み合わせの中から選択する。
【0033】機能レベルシミュレーション部114は、組み合わせ生成部113が選択した組み合わせについて機能レベルシミュレーションを行う。
【0034】性能評価部115は、制約関数/評価関数および動作シナリオを用いて、機能モジュールを実装するアルゴリズムとアーキテクチャの組み合わせおよび機能レベルシミュレーション結果の評価を行う。
【0035】制御部116は、性能評価処理および装置内の各構成要素の動作を制御する。
【0036】また、回路設計装置110は、入力部120、出力部121、機能ブロック図データベース130、機能モデルデータベース131、アルゴリズム・アーキテクチャデータベース132、動作シナリオデータベース133、制約条件/評価関数データベース134、候補データベース135、テストベクタデータベース136、評価結果データベース137およびハードウェア/ソフトウェア仕様データベース138と電気的に接続され、各データベース内に格納されたデータを読み書き可能な構成となっている。
【0037】入力部120は、回路設計処理に係る各種情報および制御パラメータを入力するための役割を担い、例えば、キーボード、マウス、ライトペン等がこれにあたる。
【0038】出力部121は、回路設計処理に係る各種情報およびエラー情報を出力するための役割を担い、例えば、プリンタやディスプレイ装置がこれにあたる。
【0039】機能ブロック図データベース130は、設計する回路に係わる複数の機能モジュール情報を格納する。
【0040】機能モデルデータベース131は、各機能モジュールに割り当てられたアルゴリズムとアーキテクチャに対応する機能モデルを格納する。
【0041】アルゴリズム・アーキテクチャデータベース132は、機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせを格納する。
【0042】動作シナリオデータベース133は、設計する回路および機能モジュールの動作シナリオを格納する。なお、ここでいう「動作シナリオ」とは、設計対象となる回路の動作を表現したものであり、機能モジュールを節点として、機能モジュール間のデータ/制御の受け渡しの関係を有向枝として記述した半順序グラフにより表される(詳しくは、後述)。
【0043】制約条件/評価関数データベース134は、性能評価処理に利用する制約条件/評価関数を格納する。
【0044】候補データベース135は、組み合わせ生成部113が生成した機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせの候補を格納する。
【0045】テストベクタデータベース136は、機能レベルシミュレーションの際に使用するテストベクタを格納する。
【0046】評価結果データベース137は、性能評価部115による性能評価処理結果を格納する。
【0047】ハードウェア/ソフトウェア仕様データベース138は、切り分け決定処理により決定された機能モジュールを実現するアルゴリズムとアーキテクチャの組み合わせを格納する。
【0048】なお、回路設計装置には、いわゆる汎用機、ワークステーション、PC、NC(Network Computer)等が含まれ、例えば、図7に示す構成のような概観を有し、フロッピー(登録商標)ディスクドライブ72および光ディスクドライブ74を備えている。そして、フロッピーディスクドライブ72に対してはフロッピーディスク73、光ディスクドライブ74に対しては光ディスク75を挿入し、所定の読み出し操作を行うことにより、これらの記録媒体に格納されたプログラムをコンピュータシステム内にインストールすることができる。また、所定のドライブ装置を接続することにより、例えば、メモリ装置の役割を担うROM77や、磁気テープ装置の役割を担うカートリッジ78を用いて、インストールやデータの読み書きを実行することもできる。
【0049】《回路設計システムの動作 〜回路設計方法〜》次に、図2乃至図6を参照して、本発明の実施形態に係る回路設計方法について説明する。
【0050】本発明の実施形態に係る回路設計方法は、図2に示すように、大きく分けて2つの処理により構成される。
【0051】1番目の処理である候補作成処理(S201)においては、組み合わせ生成部113が、機能ブロック図データベース130内に格納された各機能モジュールを実装するアルゴリズムとアーキテクチャの組み合わせを、アルゴリズム・アーキテクチャデータベース132内に格納された組み合わせの中から選択し、続いて、性能評価部115が、制約条件/評価関数データベース134内に格納された制約関数/評価関数と動作シナリオデータベース133内に格納された動作シナリオを用いて、選択された各組み合わせの評価を行う。なお、この組み合わせの生成と評価は、アルゴリズム・アーキテクチャデータベース132に予め記述されているスタティックなデータに基づいて行われるため、ダイナミックなビヘイビアに関しては誤差が含まれる可能性がある。そこで、本発明の実施形態に係る回路設計処理においては、この誤差を予め考慮して複数の解を求め、これら複数解を候補データベース135内に書き込むようにする。
【0052】2番目の処理である切り分け決定処理(S202)においては、機能レベルシミュレーション部114が、候補データベース135内に格納された全ての組み合わせについて機能レベルシミュレーションを実行し、候補作成処理の際に使用したのと同じ制約関数/評価関数を用いて機能レベルシミュレーション結果を評価する。そして、評価結果に基づいて、最良の組み合わせをハードウェア/ソフトウェア仕様として出力し、ハードウェア/ソフトウェア仕様データベース138内に格納する。なお、切り分け決定処理の際は、各機能モジュールに割り当てられたアルゴリズムとアーキテクチャに対応する機能モデルを機能モデルデータベース131から選択し、シミュレーションモデルを作成するものとする。また、シミュレーションの際に必要なテストベクタもテストベクトルデータベース136内に予め用意する。
【0053】以上の候補作成処理および切り分け決定処理が完了すると、これら処理によって決定されたハードウェア/ソフトウェア仕様を参照して、実際の回路を製造していくこととなる(S203)。以下では、上記候補作成処理、切り分け決定処理の各処理についてさらに詳しく説明する。
【0054】〈候補作成処理〉本発明の実施形態に係る候補作成処理は、図3に示すように、以下の処理ステップにより実行される。
【0055】(1)フレームワーク作成部112が、機能ブロック図データベース130とアルゴリズム・アーキテクチャデータベース132を参照して、機能モジュールへのアルゴリズムとアーキテクチャの割り当ての組み合わせを生成するためのフレームワークを作成する(S301)。
【0056】(2)組み合わせ生成部113が、フレームワーク作成部112が作成したフレームワークに基づいて、機能モジュールへのアルゴリズムとアーキテクチャの可能な全ての組み合わせを生成する(S302)。
【0057】(3)性能評価部115が、動作シナリオデータベース133内に格納された動作シナリオにしたがって、制約条件/評価関数データベース134内に格納された制約条件/評価関数を用いて組み合わせ生成部113が生成した組み合わせの性能評価をスタティックに行う(S303)。なお、性能評価方法の詳細については後述する。
【0058】(4)制御部115が、性能評価部115の評価結果と候補データベース135内に格納された組み合わせとを比較し、候補データベース135内に所定の最良値(評価値)から予め定められた数(例えば、10〜100)の良い組み合わせが保持されるように、候補データベース135内に格納された組み合わせ情報を更新する(S304)。
【0059】この(3)と(4)の処理を、組み合わせ生成部113が生成した全ての組み合わせについての評価が完了するまで繰り返すことにより、候補データベース135内には予め定められた数のスタティックな評価で良いと思われる組み合わせが常に保持されることになる。
【0060】〈切り分け決定処理〉本発明の実施形態に係る切り分け決定処理は、図4に示すように、以下の処理ステップにより実行される。
【0061】(1)フレームワーク作成部112が、機能ブロック図データベース130、機能モデルデータベース131およびアルゴリズム・アーキテクチャデータベース132内に格納された情報を参照して、機能モジュールへの機能モデルの割り当ての組み合わせを生成し、機能レベルのシミュレーションモデルのためのフレームワークを作成する(S401)。
【0062】(2)組み合わせ生成部113が、フレームワーク作成部112が作成したフレームワークに基づいて、候補データベース135に格納されている可能な全ての組み合わせを生成する(S402)。
【0063】(3)機能レベルシミュレーション部114が、組み合わせ生成部113が生成した機能モジュールと機能モデルの組み合わせについて機能レベルシミュレーションを実行する(S403)。なお、機能レベルミレーションはテストベクタデータベース136内に予め用意されたテストベクタを用いて行うものとする。
【0064】(4)性能評価部115が、機能レベルシミュレーション結果を制約条件/評価関数データベース134内に格納された制約条件/評価関数を用いて評価し、評価結果を評価結果データベース137内に格納する(S404)。
【0065】(5)この一連の処理を候補データベース135内に格納された全ての組み合わせが評価されるまでS403とS404を繰り返し、候補データベース135内に格納された全ての組み合わせに対して機能レベルシミュレーションを行った結果についての評価結果を評価結果データベース137内に格納する(S405)。
【0066】(6)最後に総合評価処理により評価結果データベース137内に格納された評価結果を比較することにより、最良の組み合わせを決定した後、最良の組み合わせをハードウェア/ソフトウェア仕様として出力し、ハードウェア/ソフトウェア仕様データベース138内に格納する(S406)。
【0067】『性能評価処理』以下、図5、6を参照して、動作シナリオに基づいた性能評価処理について説明する。
【0068】(1)制御部116が、候補データベース135内に格納された組み合わせにしたがって、資源の共有などについての動作シナリオを更新し、更新結果を動作シナリオデータベース132内に格納する(S501)。
【0069】(2)制御部116が、評価関数と制約条件に基づいて更新結果について評価を行い、評価結果を評価結果データベース137内に格納する(S502)。
【0070】そして、この(1)、(2)の処理を全ての動作シナリオについて行った後、評価結果データベース137を用いて総合評価を行う(S504)。これにより、すべての動作シナリオについてある切り分け候補での組み合わせが評価される。
【0071】ここで、図5に示す処理においては、複数の動作シナリオについて評価を行っているが、評価の対象になるシステムアーキテクチャは1つであった。これを複数のシステムアーキテクチャに拡張した場合には、図6に示すフローチャートにしたがって処理を行う。
【0072】図6に示す処理において、動作シナリオの更新処理(S601)、性能評価処理(S602)、判定処理(S604)および総合評価処理(S605)はそれぞれ、図5に示す処理(S501)、(S502)、(S503)、(S504)に対応するものである。ただし、性能評価処理(S602)は、図5における性能評価処理(S502)とは異なりシステムアーキテクチャデータベース(図示せず)を参照して処理を行うために、全てのシステムアーキテクチャを評価したことを判定する処理(S603)が追加されている。なお、ここでいうシステムアーキテクチャデータベースとは、候補データベース135内に格納された組み合わせを予め解析し、可能なシステムアーキテクチャ構造をデータベース化したものである。
【0073】以上説明したように、図5,6に示す、本発明の実施形態に係る性能評価処理によれば、動作シナリオに基づいたスタティックな性能評価と機能レベルのシミュレーションに基づいたダイナミックな性能評価を組み合わせて行うこととなるので、機能レベルシミュレーションに基づいたダイナミックな性能評価のみの性能評価の場合と比べて、広い解空間の探索を短時間で且つ同等の精度で行うことができる。
【0074】〜動作シナリオに基づいた性能評価手法〜次に、動作シナリオに基づいた具体的な性能評価手法について説明する。ここで、システムを実現するあるアルゴリズムとアーキテクチャの組み合わせについて、面積と処理に必要なエネルギーは組み合わせが決定すると自動的に決定される。このため、以下では、処理時間、消費電力の最大値およびバスアクセス頻度についての評価方法について説明する。
【0075】〜動作シナリオおよび処理時間について〜図8(a)は動作シナリオの一例を示し、動作シナリオは半順序グラフにより表現される。ここで、半順序グラフとは、接点と接点間を結ぶ有向枝で構成され、ループの存在しないものである。また、図8(a)中、SとEはそれぞれ、半順序グラフの始点と終点を表し、それぞれ処理の始めと終わりに対応する。さらに、グラフ中の接点はシステムの各機能を表現し、有向枝は機能間の因果関係を表す。例えば、グラフの接点3は4つの枝により4つの接点1,2,9,5と接続している。ここで、接点3には接点4と接点5から出る枝が接続している。これにより、接点1と接点2の処理が終了した後、接点3が表現する処理を実行できることを示している。また、接点3から出る枝が接続している接点9と接点5は接点3よりも後で実行されなければならない処理を表している。
【0076】ここで、接点Dと接点Bの表す処理がある資源を共有しているため、並行して実行することができない状況を考える。今、この2つの処理の間に直接の因果関係がないと仮定すると、動作シナリオを表すグラフにはこの2つの接点間に枝が存在しない。しかしながら、資源の共有関係があるため、2つの処理に順序をつける必要が生じる。そこで、このような状況の解決方法を図8(b)に示す。図8(b)に示す半順序グラフにおいては、接点Dと接点Bの間に枝を追加してある。この枝により2つの接点があらわす処理に順序をつけることができる。なお、この枝はループができないように付ける必要がある。
【0077】次に、図8(a),(b)の動作シナリオについて全ての処理を逐次実行した場合のシーケンス例を図9(a)に示す。動作シナリオからこのようなシーケンスを求めるためには、例えば、トポロカルソートを行えば良い。なお、このシーケンスは動作シナリオについて複数存在することがある。グラフにおいて直接の因果関係が存在しない接点が表す処理は図8(b)のように資源共有関係がない限り並行処理が可能である。ここで、簡単のために、全ての処理に必要な時間が等しいと仮定した場合の並行処理の例を図9(b)、図10に示す。
【0078】図9(b)は図8(a),(b)の動作シナリオを2スレッドの並行処理としたものである。図9(b)に示す動作シナリオ2においては資源共有を表す枝により接点Bの処理が接点Dの処理よりも後になっている。ある動作シナリオについて、最短の実行時間は、グラフの接点が処理時間を重みとして持っていると仮定した場合の最長経路長で求めることができる。このことはグラフの定義より明らかである。この時、得られる並列度が(意味のある)最大の並列度となる。全ての処理に必要な時間が等しいと仮定した場合、図8(a),(b)の動作シナリオでは3スレッドが最大の並列度であり、その場合のステップ数はそれぞれ6と7である。この様子を図10に示す。図10に示す動作シナリオ2においては処理Dと処理Bの資源共有により処理Bの実行位置が動作シナリオ1と比べて後ろにずれていることがわかる。
【0079】図9,10に示す例はほとんどの処理をハードウェアにかかわらず実行できるという過程に基づいたものであったが、現実にはハードウェア毎に実行できる処理が決まっている場合が多い。その場合の処理は図11(a)に示すような逐次実行になるか、図11(b)のようなパイプライン実行になる。図11(a)においては処理Aから処理Zまでの処理が逐次実行され、各処理の時間違いから処理時間合計は図11(a)に示す長さになる。図11(b)ではこれらの処理をパイプライン実行しているが、そのステージの時間間隔は処理の内最も時間を必要とするものとなる。
【0080】ここで、図8(b)と同様に資源を共有しているため並行実行できない処理の組み合わせがある場合には、図12に示すような実行方式となる。図12では処理Cと処理Eが資源を共有していると仮定している。これにより、各ステージの時間間隔は少なくとも処理Cと処理Eの処理時間の和よりも長い必要があることがわかる。
【0081】以上、図8から図12を参照して、動作シナリオとそれを利用した処理時間の予測方法について説明したが、これらの説明により個々のモジュールの処理時間が一定であると仮定できるならば、動作シナリオを利用することで、最大並列度、最小処理時間、パイプラインのステージの時間間隔や処理の順番等をモジュール間で資源の共有のある場合でも求められることは明らかであろう。
【0082】〜消費電力の最大値について〜次に、消費電力の平均値を求める方法を説明する。
【0083】各機能モジュールを実装するハードウェアとソフトウェアが決定すると、その消費電力も決定することができる。今、図8(a)の動作シナリオで実行される13個の機能モジュールの消費電力が図13のように表されるとする。図13において各機能モジュールの消費電力はY軸方向の長さで表され、処理時間はX軸方向の長さで表現されている。
【0084】ここで、図14(a)のような順序で処理が進行すると、消費電力は図14(b)のように変化することになる。図14(a)の処理順序において処理4,6,7,9,Cはその実行タイミングをずらすことが可能であり、その範囲はそれぞれ4,6,7,C,9で表せる。そこで、図14(a)の処理順序を変更して図15(a)のようにした場合の消費電力を図15(b)に表す。図15(a)では処理4,6,7,9の実行開始が遅らせられている。図15(b)に示す消費電力の最大値bは図14(b)に示す消費電力aよりも低い値になっている。
【0085】このように上記の方法によれば、各機能モジュールの実装であるハードウェア、ソフトウェアが決定し、その実行順序が動作シナリオにより求まれば、消費電力の最大値を見積もることができ、実行順序に自由度がある場合には消費電力の最大値を最小化することも可能である。
【0086】〜バスアクセス頻度について〜続いて、機能モジュールの実装およびバスの形式が決定した場合のバスアクセス頻度を見積もる方法を説明する。
【0087】今、システムアーキテクチャは図16(a),(b)のような形式となったとする。図16(a)は1つの大域バスにCPU、メモリ(Mem)、専用ハードウェア(HW)が接続する形式で、システムアーキテクチャとしては最もシンプルなものである。図16(b)は大域バスにCPUとメモリが接続し、これとは別に、ローカルバスに専用ハードウェアとメモリが接続している。また、この2つのバスはDMAコントローラ(DMAC)を介して接続されている。
【0088】図16(a)に示すシステムアーキテクチャについて、各機能モジュールのバスアクセス頻度が図17(a)のように表現されるとする。図17(a)では図8(a)の動作シナリオに基づいて13個の機能モジュールがY軸方向の長さに相当する頻度で大域バスにアクセスしていると仮定する。これを図14(a),図15(a)に示される実行順序に従って並べたものを図17(b),(c)に示す。この図によれば、図17(c)に示す実行順序の方が、バスアクセス頻度の最大値が低く、その分、バスのバンド幅が狭くともよいことになる。
【0089】一方、図16(b)のシステムアーキテクチャについて、各機能モジュールのバスアクセス頻度が図18(a)のように表現されるとする。図18(a)では図8(a)の動作シナリオに基づいて13個の機能モジュールがY軸方向の長さに相当する頻度でバスアクセスしていると仮定する。このバスアクセスの内、斜線部分がローカルバスについてのバスアクセスであり、上の空白部分が大域バスについてのバスアクセスであると仮定する。これを大域バスとローカルバスに分けて表したものをそれぞれ図18(b),(c)に示す。
【0090】この2つの図に示されたバスアクセスを図14(a)に示される実行順序に従って並べたものを図19に示す。また、図15(a)に従って並べたものを図20に示す。図19(a),図20(a)は大域バスのバスアクセスを表し、図19(b),図20(b)はローカルバスのバスアクセスを表現している。これらの図と図17(b),(c)とを比較すると、バスを分割して大域バスとローカルバスに分割したことによりバスアクセス頻度の最大値が低下し、さらに図15(a)の実行順序に従って並べた図20(a)、(b)での値は、図14(a)に従って並べた図19(a)、(b)よりも小さいことがわかる。
【0091】このように上記の方法によれば、各機能モジュールの実装であるハードウェア、ソフトウェアとシステムアーキテクチャが決定し、その実行順序が動作シナリオにより求まれば、バスアクセス頻度の最大値を見積もることができ、実行順序に自由度がある場合にはバスアクセス頻度の最大値を最小化することも可能である。
【0092】以上説明してきたように、本発明の実施形態に係る性能評価処理によれば、動作シナリオに基づいて処理時間、消費電力の最大値、バスアクセス頻度を容易に求めることができる。
【0093】《回路設計プログラムを格納したコンピュータ読取り可能な記録媒体》本発明の実施形態に係る回路設計方法は、プログラム化しコンピュータ読取り可能な記録媒体に保存しても良い。そして、回路設計処理を行う際は、この記録媒体をコンピュータシステムに読み込ませ、コンピュータシステム内のメモリ等の記憶部にプログラムを格納し、回路設計プログラムを演算装置で実行することにより、本発明の回路設計装置およびその方法を実現することができる。ここで、記録媒体とは、例えば、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのプログラムを記録することができるようなコンピュータ読取り可能な記録媒体等が含まれる。
【0094】《実験例》以下、本発明の実施形態に係わる回路設計方法、特に性能評価処理についてのさらなる理解のために、図2に示すMPEGエンコーダについて性能評価実験を行った結果について説明する。
【0095】性能評価の対象となるエンコーダは、図21に示すように、画像データを変換し、変換データをフレームバッファに保持する前処理モジュール211、現在処理しているフレームを保持するフレームバッファ212、現在処理しているフレームと1つ前のフレームの間で相関を取り、動きベクタを求める動き推定モジュール213、動きベクタにしたがって1つ前のフレームに対して動き補償を行う動き補償モジュール214、1つ前のフレームを保持するフレームバッファ215、現在のフレームと1つ前のフレームの差分を取るモジュール(−)、フレームの差分出力に対してDCT演算を行うDCT演算モジュール216、DCT演算結果に対して逆演算を行うIDCT演算モジュール217、IDCT演算結果と1つ前のフレームの和を取り、和をフレームバッファに格納するモジュール(+)、DCT演算結果をエントロピー符号化するエントロピー符号化モジュール218、動きベクタと符号化された画像情報を多重化する多重化モジュール219、多重化された情報をビット列に変換するビット列変換モジュール220、ビット列変換された情報を決められたタイミングで出力する出力バッファ221から構成される。
【0096】本実験では、図21に示すエンコーダは図22に示す動作シナリオにしたがって動作するものとする。なお、この動作シナリオにおいては、フレームの差分、和を取る演算はそれぞれ、DCT演算、IDCT演算に含まれるものとする。ここで、図22に示す動作シナリオの始点から終点までの経路の内、最長のものに基づいて各モジュールを並べたものを図23に示す。この図からわかるように、IDCT処理の実行タイミングには自由度があり、エントロピー符号化から多重化が行われるまでに実行されれば良い。そこで、以下では、図24に示すように、IDCT処理はDCT演算とエントロピー符号化の間で行うものとして性能評価を行うことにする。
【0097】それでは、始めに、性能評価を行うためのアルゴリズム・アーキテクチャデータベースについて説明する。なお、このデータベースで想定しているアーキテクチャは、図25(a)に示すような、1つのバスにCPU、メモリ、ハードウェアモジュールが接続したもの、若しくは、図25(b)に示すような、ローカルバスとグローバルバスにそれぞれCPUやハードウェアモジュールが接続したものである。以下の説明においては、図25(a)に示すアーキテクチャについて性能評価を行うこととするが、図25(b)に示すアーキテクチャについても同様の方法で性能評価を行うことができることは言うまでもない。また、以下の性能評価の説明では前処理を除く部分についての性能評価を行い、フレームバッファについては、どのような構成となっても同じ量のハードウェアが必要であると仮定して、評価対象から外していることに注意されたい。
【0098】図26,27はアルゴリズム・アーキテクチャデータベースの内容を示し、図26から図27(b)は、MPEGエンコーダの各モジュールについて、それを実現するハードウェア、ソフトウェア毎に必要とする面積、クロック数で表した処理時間、クロック当たりの消費電力、必要とするメモリ容量、バスアクセス回数をまとめたものであり、図27(c)はハードウェア毎に面積、最大クロック周波数、アイドル時のクロック当たりの消費電力、アクティブ時のクロック当たりの消費電力をまとめたものである。
【0099】図26(a)に示す動き推定モジュールについては、Me1、Me2、Me3の3つのハードウェアモジュールが使用でき、それらのモジュールについての評価値が表の各項目となっている。ここで、モジュールが必要とするメモリはROMとRAMに分けて値が求められていて、さらにROMについては命令部分とデータ部分に分けられ、RAMについては大域データとローカルデータに分けられている。また、バスアクセス回数に関しても大域アクセスが必要となる場合、ローカルアクセスで充分な場合に分けられている。
【0100】図26(b)に示す補償モジュールについては、Mc1、Mc2の2つのハードウェアモジュールとCPU1またはCPU2上で実行されるアルゴリズム、Mc3による実装が可能であることが示されている。ここで、CPU上で実行されるアルゴリズムの場合、面積にCPUの目積は含まないものとする。
【0101】図26(c)はDCTとIDCT処理を行うモジュールについての表を示す。3種類のハードウェアモジュールDCT1からDCT3または3種類のアルゴリズムをCPU1またはCPU2上で実行することで実装することができることがわかる。
【0102】図26(d)はエントロピー符号化処理を行うモジュールについての表を示す。2種類のハードウェアモジュールCode1、Code2またはアルゴリズムCode3をCPU1またはCPU2上で実行することで実装できることがわかる。
【0103】図27(a)は多重化処理を行うモジュールについての表を示す。2種類のハードウェアモジュールMux1、Mux2またはアルゴリズムMux3をCPU1またはCPU2上で実行することで実装できることがわかる。
【0104】図27(b)はビット列変換処理を行うモジュールについての表を示す。2種類のハードウェアモジュールBit1、Bit2またはアルゴリズムBit3をCPU1またはCPU2上で実行することで実装できることがわかる。
【0105】図27(c)は図26から図27(b)の表に現れたハードウェアメモリについての性能をまとめた表を示す。この表では図26から図27(b)に現れないCPUモジュールの面積や各ハードウェアのアイドル時の消費電力、メモリについての面積、消費電力がまとめてある。なお、メモリの面積は1バイト当たりの値であり、消費電力は、アイドル時は1バイト当たり、アクティブ時は1バイトを1回アクセスした場合の値である。また、図26,27においてはバス幅は16ビットであり2バイトを一度にアクセスすると仮定している。
【0106】図24に示す動作シナリオについて、図25(b)に示すアーキテクチャの場合の面積、処理クロック数、消費電力、バスアクセス回数を図26,27に示されるアルゴリズム、アーキテクチャデータベースに基づいて評価する手順を以下に示す。
【0107】まず、各モジュールを実装するアルゴリズム、アーキテクチャを決定する。本発明の実施形態に係る処理フローにおいては、モジュール、アルゴリズムおよびアーキテクチャの組み合わせは、組み合わせ生成処理で決められるが、その結果図28に示すような組み合わせが決まったと仮定する。図28には図26から図27(b)のデータの内、実装に用いると決定したものを集めたものである。
【0108】図28に示す表によれば、動き推定はMe3、動き補償はMc2、DCT処理とIDCT処理はDCT、エントロピー符号化はCode2、多重化はMux3をCPU1上で実行、Bビット列変換はBit3をCPU1で実行することがわかる。また、CPU上で実行するアルゴリズムの項目では含まれていないCPU1の面積などは全体のシーケンスをコントロールするプログラムの項目を設けて加えてある。この表は図24に示す動作シナリオにしたがったものであるため、DCT演算とIDCT演算はシーケンシャルに行うことができる。したがって、この2つのモジュールに関するスタティックな資源は共有可能であるので、面積およびバスアクセスに関してはIDCTについては0としている。
【0109】図28で使用されいるハードウェアについて図27(c)から抜き出したものを図29(a)に示す。ここで、RAMはmem2、ROMはrom2を使用すると仮定している。このMPEGエンコーダの最大クロック周波数は、DCT1により律速され90MHzであることがわかる。
【0110】図28における面積の合計にはメモリにかかわる分が含まれていないので、メモリに必要な面積を求めたものを図29(b)に示す。図29(a)ではまずROMとRAMの容量をそれぞれ820と256、5760と2312の和としてもとめ、図29(a)における1バイトあたりの面積を基にして総面積を求めている。
【0111】次に消費電力を求める方法を示す。
【0112】消費電力はモジュールがアイドル状態にある場合とアクティブ状態である場合とで異なる値となるため、それぞれに別々に求める。まず、メモリについて求めた例を図30(a)に示す。図30(a)は命令、データの各メモリについてその容量、アクセス回数をまとめ、アイドル時の消費電力とアクティブ時の消費電力を求めて和を取ったものである。ここで、メモリがアイドル状態であるのはアクセスが行われない時であり、1アクセス当たり1クロックが必要であると仮定すると、全実行クロック数からアクセス回数を引いた値に容量と1アクセス、1バイトあたりのアイドル時の消費電力を掛けたものがその消費電力となる。また、アクティブ時の消費電力はアクセス回数に容量と1アクセス、1バイトあたりのアクティブ時の消費電力を掛けたものとなる。図30(a)においてはROMとRAMのアイドル時とアクティブ時の消費電力の合計となっている。なお、図30(a)においてはROMとRAMについてのアクセス、データと命令のアクセスが区別されているが、命令アクセスについてはすべてROMについてのアクセス、データアクセスについては容量でROMとRAMに按分してある。
【0113】次に、メモリ以外のハードウェアについての消費電力を求める方法を図30(b)に示す。
【0114】メモリの場合と同様に各ハードウェアについてアクティブなクロック数を求め、全実行クロック数からその値を引いたものにアイドル時の1クロック当たりの消費電力を掛けたものがアイドル時の消費電力であり、アクティブなクロック数にアクティブ時の1クロック当たりの消費電力を掛けたものがアクティブ時の消費電力となる。この二つの合計が各ハードウェアモジュールについての消費電力であり、それらの合計がメモリ以外のハードウェアモジュールの消費電力となる。
【0115】図30(a)で求めたメモリの消費電力と図30(b)で求めたメモリ以外のハードウェアモジュールの消費電力の合計が総消費電力となる。
【0116】以上述べてきたように、図22から図30を用いた図21のMPEGエンコーダの性能評価処理によれば、対象とするシステム(図21)、動作シナリオ(図22)、システムアーキテクチャ(図25)アルゴリズム、アーキテクチャデータベース(図26,27)が異なっても同様な方法により、面積、処理時間、消費電力の最大値、バスアクセス頻度などのシステムの評価に必要な項目がしミレーションなしに求められる。
【0117】《本発明の実施形態に係る回路設計システムおよびその方法から得られる効果》本発明の実施形態に係る回路設計方法によれば、各機能モジュールとアルゴリズムアーキテクチャの組み合わせを予めスタティックな見積もりにより絞り込むので、機能レベルシミュレーションのみでは膨大の時間が必要となる機能モジュールへのアルゴリズムアーキテクチャ割り当てを高速に行うことが可能となる。
【0118】また、従来までは、機能ブロック図と機能モデルから全ての組み合わせを生成することによりシミュレーションモデルを作成し、シミュレーションを行っていたために、組み合わせの数が膨大なものとなり、実用的な時間内ですべての組み合わせについての評価を行うことは事実上不可能であったが、本発明の実施形態に係る回路設計方法によれば、始めに動作シナリオを用いたスタティックな評価により組み合わせの数を限定しているので、従来例よりも解の探索範囲が広くなり、組み合わせの決定には機能レベルのシミュレーションを行うので、従来例と同等の評価精度が得ることができる。
【0119】
【発明の効果】本発明の回路設計システム、回路設計方法および回路設計プログラムを格納したコンピュータ読取り可能な記録媒体によれば、機能ブロックの実装方式を短時間且つ精度良く決定することができる。
【出願人】 【識別番号】000003078
【氏名又は名称】株式会社東芝
【出願日】 平成12年9月26日(2000.9.26)
【代理人】 【識別番号】100083806
【弁理士】
【氏名又は名称】三好 秀和 (外7名)
【公開番号】 特開2002−108958(P2002−108958A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2000−292728(P2000−292728)