JPH11259553A - ハードウエアとソフトウエアの混在するシステムの設計支援方法 - Google Patents

ハードウエアとソフトウエアの混在するシステムの設計支援方法

Info

Publication number
JPH11259553A
JPH11259553A JP10062555A JP6255598A JPH11259553A JP H11259553 A JPH11259553 A JP H11259553A JP 10062555 A JP10062555 A JP 10062555A JP 6255598 A JP6255598 A JP 6255598A JP H11259553 A JPH11259553 A JP H11259553A
Authority
JP
Japan
Prior art keywords
hardware
software
candidate
execution
implementation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP10062555A
Other languages
English (en)
Inventor
Shoichi Kataoka
庄一 片岡
Toshiaki Furuwatari
俊明 古渡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inabata and Co Ltd
Omron Corp
Original Assignee
Inabata and Co Ltd
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inabata and Co Ltd, Omron Corp, Omron Tateisi Electronics Co filed Critical Inabata and Co Ltd
Priority to JP10062555A priority Critical patent/JPH11259553A/ja
Publication of JPH11259553A publication Critical patent/JPH11259553A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】システム仕様記述から自動的に仮のソフトウエ
ア部分をハードウエア部分を決め、その後シミュレート
による評価により、双方の分割点を自動的に最適化して
いく。 【解決手段】システムの仕様を実行単位のプロセスの集
まりで記述したシステム仕様記述を作成し、このシステ
ム仕様記述に基づいて、全プロセスを仮のハードウエア
実現候補P4〜P7と、仮のソフトウエア実現候補P1
〜P3とに初期分割する。このとき、処理の実行に優先
度の伴うものについては優先度を示す情報が付されてお
り、初期分割に際しては、この優先度を示す情報の付さ
れたものをソフトウエア実現候補とし、それ以外をハー
ドウエア実現候補とする。次に、これらの候補をシミュ
レーションして実行状況をプロファイリング情報として
記憶し、これに基づいてそれぞれの候補からの変更候補
を選択して、さらに、チップ面積や実効速度の改善率を
評価することにより、分割点を自動的に最適なものに修
正する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ハードウエアとソ
フトウエアの混在するシステムの設計支援方法に関し、
特に、システム仕様からハードウエアとソフトウエアの
分割を自動化、且つ最適化出来る支援方法に関する。
【0002】
【従来の技術】今日、ASICの高集積化は数千万トラ
ンジスタの1チップ化を可能にしており、CPU、ファ
ームウエア、ドライバなどに加えて、通信回路、入出力
バス・インターフェイス回路などの周辺回路なども全て
一つのASIC上に納まることを可能にしている。
【0003】このようなASICは、いわゆるシステム
ASICと称される。
【0004】ところでシステムASICには、プロセッ
サとペリフェラルとメモリが実装され、プロセッサとメ
モリを利用して従来のソフトウエアが実装される形にな
る。ここで一つの機能をハードウエアで実現するかソフ
トウエアで実現するかにおいて、速度とチップ面積のト
レードオフが内在している。つまり、ハードウエアはソ
フトウエアに対して相対的に速度を上げるがチップ面積
も押し上げる。また、ソフトウエアはその反対の特性を
持つ。
【0005】設計に際して、重要なことは、そのトレー
ドオフの関係を考慮し、与えられたチップ面積上で最大
の速度を上げ得る双方の混在化、すなわち、ハードウエ
アとソフトウエアの分割点の最適化を図ることである。
【0006】従来、この要求に対しては、熟練した人間
の経験及び勘を頼りに、ある機能を実現するために、ま
ず、ハードウエア部分とソフトウエア部分を決め、それ
ぞれが独立して設計された後に協調動作シミュレーショ
ンなどを行って、不都合な部分を抽出し、さらに、再設
計、シミュレーションを繰り返していく手法がとられて
いる。
【0007】また、特開平9ー160949号では、ま
ず、ハードウエア部分とソフトウエア部分を決めた後
に、ソフトウエア部分のハードウエア化可能部分を探索
し、可能な部分があれば、ソフトウエアを行うという手
法が提案されている。
【0008】
【発明が解決しようとする課題】しかしながら、上記い
ずれの手法も、最初に、ハードウエア部分とソフトウエ
ア部分を人間が決めているため最終結果は必ずしも、速
度とチップ面積の観点で最適なものとはならなかった
り、また、ハードウエア部分とソフトウエア部分そのも
のを分割すること自体、極めて困難であった。また、通
常、ハードウエア部分はHDL言語(ハードウエア回路
用言語)で書かれてこれをロジックで表現する一方、ソ
フトウエア部分はC言語などで書かれるため、従来の手
法では両者は別扱いする必要があり、これらを協調的に
同時並行開発することが基本的に無理であった。すなわ
ち、双方の部分の交換を同時並行的に行ったり、その交
換直後に結果をシミュレートする等、協調と同時並行開
発を行うことは出来なかった。本発明の目的は、システ
ム仕様記述から自動的に仮のソフトウエア部分をハード
ウエア部分を決め、その後シミュレートによる評価によ
り、双方の分割点を自動的に最適化していくことの出来
る、ハードウエアとソフトウエアの混在するシステムの
設計支援方法を提供することにある。
【0009】
【課題を解決するための手段】本出願の請求項1に係る
発明は、システムの仕様を実行単位のプロセスの集まり
で記述したシステム仕様記述を作成し、このシステム仕
様記述に基づいて、全プロセスを仮のハードウエア実現
候補と仮のソフトウエア実現候補に初期分割し、次い
で、これらの候補をシミュレーションして実行状況をプ
ロファイリング情報として収集し、このプロファイリン
グ情報に基づいて、仮のハードウエア実現候補からソフ
トウエア実装への変更候補、または、仮のソフトウエア
実現候補からハードウエア実装への変更候補を選択し、
これらの変更候補によるチップ面積と実行速度の改善率
を評価して、上記各候補の分割点を修正することを特徴
とする。
【0010】本発明では、システム仕様を、実行単位の
プロセスの集合として記述することを出発点とする。こ
の実行単位のプロセスとは、CPUで実行される並列処
理単位で、且つハードウエアでもソフトウエアでも実現
可能なものを言う。つまり、システム仕様記述上は、各
プロセスは見かけ上、ハードウエアでもソフトウエアで
も実現可能なようになっている。
【0011】次に、システム仕様記述から、ハードウエ
ア部分とソフトウエア部分の実現候補を自動的に決めて
分割する。プロセスには種々の理由からハードウエアで
実現する方が望ましいものとソフトウエアで実現する方
が望ましいものが存在するから、これを自動判断し、且
つそれに基づきハードウエア部分とソフトウエア部分と
を仮に決め、残りの部分については、ランダムに決める
ことが出来る。
【0012】次に、これらの仮の候補に対してシミュレ
ーションを行い、実行状況をプロファイリング情報とし
て収集する。シミュレーションに際しては、ハードウエ
ア部分及びソフトウエア部分の各プロセスの実行時間、
より詳細にはプロセスに含まれる実行ブロックの実行時
間をクロックで計測することが出来る。これにより、実
行状況としてハードウエア部分及びソフトウエア部分の
各プロセスの実行速度を計測し、これをプロファイリン
グ情報として収集することが出来る。
【0013】上記プロファイリング情報によれば、各プ
ロセスの実行速度がわかるから、実効速度の遅いソフト
ウエア部分のプロセスに対してはハードウエアに変更す
ることが考えられる。この場合、ハードウエアへの変更
により速度は上がるがチップ面積が増加することが実際
に変更するか否かの評価対象となる。また、実行速度の
遅いハードウエア部分のプロセスに対してはソフトウエ
アに変更することが考えられる。この場合、ソフトウエ
アへの変更によりチップ面積は減少するが速度が低下す
ることが実際に変更するか否かの評価対象となる。
【0014】このようにして、変更候補によるチップ面
積と実行速度の改善率を評価して、各候補の分割点を修
正する。
【0015】なお、分割点の修正後、再びその分割によ
るハードウエア部分とソフトウエア部分でシミュレーシ
ョンを行い、上記と同様な評価を繰り返すことも出来
る。
【0016】本出願の請求項2に係る発明は、プロセス
は、実行のための優先度の情報を含み、初期分割は、こ
の優先度の含むプロセスをソフトウエア実現候補、含ま
ないプロセスをハードウエア実現候補として自動的に行
うようにしたものである。
【0017】プロセスは相互に通信を行いながら並行動
作することが基本であるため(リアルタイム処理)、ソ
フトウエア部分のプロセスについては、CPUの実行権
を得るための指標が予めプロセス中に含まれているのが
望ましい。この請求項2に係る発明では、その指標とし
て処理の優先度の情報を与えるものである。したがっ
て、初期分割を行うときに、優先度の情報があるプロセ
スをソフトウエア実現候補として、それ以外をハードウ
エア実現候補として分割する。
【0018】本出願の請求項3に係る発明は、前記変更
候補の最小単位は、プロセス内の実行ブロックであるこ
とを特徴とする。
【0019】1つのプロセス内には1つ以上の実行ブロ
ックが含まれているが、その中には処理速度の高速性が
要求されるものと要求されないものが混在することがあ
る。したがって、プロセス単位を入れ替えとするよりも
実行ブロック単位を入れ替え対象とする方が最適化を図
る上で好ましいと言える。この場合、実行ブロック単位
が最小単位であり、これ以上のかたまりを単位として扱
うことも可能である。本出願の請求項4に係る発明は、
プロファイリング情報は、ソフトウエア実現候補の各プ
ロセス毎の実行ブロックに属する変数へのアクセス回数
を含み、アクセス回数が一定以上の変数を含むプロセス
をハードウエア実装への変更候補とするものである。ま
た、請求項5に係る発明は、プロファイリング情報は、
ハードウエア実現候補の各プロセス毎の実行ブロックに
属する変数へのアクセス回数を含み、アクセス回数が一
定以下の変数が属する実行ブロックをソフトウエア実装
への変更候補とするものである。
【0020】システム仕様を表すプロセスはそれ自体シ
ミュレータで実行可能な形式でないから、これを翻訳し
てシミュレーションコード(プログラム)を起こしてシ
ミュレータにかけるが、このとき、シミュレータにおい
て、各プロセスに含まれる実行ブロックに属する変数へ
のアクセス回数をプロファイリング情報として集める。
そして、ソフトウエア実現候補のうちアクセス回数の多
いブロックはハードウエア実装への変更候補とし、ハー
ドウエア実現候補のうちアクセス回数の少ないブロック
はソフトウエア実装への変更候補とする。すなわち、ソ
フトウエア部分で頻繁にアクセスするものはシステムの
スループットを悪くすると推定でき、一方、ハードウエ
ア部分であまりアクセスしないものはチップ面積の無駄
遣いと推定されるから、このような部分については変更
の候補とする。
【0021】本出願の請求項6に係る発明は、各候補の
分割点を修正するとき、速度改善値のより高いハードウ
エア実装変更候補と、その候補と実装面積の均衡をとり
得るソフトウエア実装変更候補の組とを選び、これらの
候補をそれぞれハードウエア実装分、ソフトウエア実装
分に変更することで分割点修正を行うようにしたもので
ある。 このように実装面積の均衡がとれるように、速
度改善値のより高いハードウエア実装変更候補とソフト
ウエア実装変更候補を選択することで、面積を一定に保
ちながら実行速度の点で有利な分割点を自動的に得るこ
とが出来る。
【0022】本出願の請求項7に係る発明は、各候補の
分割点を修正するとき、面積改善値のより高いソフトウ
エア実装変更候補と、その候補と実行時間の均衡をとり
得るハードウエア実装変更候補の組とを選び、これらの
候補をそれぞれソフトウエア実装分、ハードウエア実装
分に変更することで分割点修正を行うようにしたもので
ある。
【0023】このように実行時間の均衡がとれるよう
に、面積改善値のより高いソフトウエア実装変更候補と
ハードウエア実装変更候補を選択することで、実行時間
を一定に保ちながら実装面積の点で有利な分割点を自動
的に得ることが出来る。
【0024】
【発明の実施の形態】図1は、本発明の実施形態であ
る、ハードウエアとソフトウエアの混在するシステムの
設計支援装置の構成図である。
【0025】この支援装置は、システム仕様記述1で書
かれたプロセスに基づいて協調合成システム2におい
て、ハードウエア部分とソフトウエア部分とに分割し、
ハードウエア部分については動作合成システム3、論理
合成システム4でHDL言語に変換しつつハードウエア
ロジック回路を自動作成する。また、ソフトウエア合成
システム5は、ソフトウエア部分からC言語などによる
プログラムコードを自動作成する。スタティックタイミ
ング検証システム6は、このプログラムコードやハード
ウエアロジック回路の静的動作(スタティック動作)の
検証を行い。合成結果表示システムは、上記一連の手順
に伴う結果を適宜表示する。
【0026】システム仕様記述のプロセスの1例を図2
に示す。
【0027】ここでは、プロセス名を「sample」として
いる。
【0028】第2行は、整数(int )入力データ端子と
して、iData を定義する。第3行は、整数出力端子とし
て、oDATA を定義し且つ初期値が0であることを示す。
第4行、第5行は、制御入力端子Strtと制御出力端子ac
kStrt を定義し、制御出力端子ackStrt の初期値がFALS
E であることを示す。第6行以下はプロセス実行部分で
ある。要約すれば、制御入力端子StrtがTRUEのときに、
制御出力端子ackStrtをTRUEにセットし、変数counter
のインクリメント値が入力データ端子iData の値よりも
大きければ変数counter をリセットし、大きくなければ
出力データ端子0Data の値を、iData 値にcounter 値を
加えた値とする。
【0029】このようなプロセスは、基本的にソフトウ
エアでもハードウエアでも実現が可能である。
【0030】図1の協調合成システム2は、上記プロセ
スを読み込んで、全プロセスをハードウエア部分(ハー
ドウエア実現候補)とソフトウエア部分(ソフトウエア
実現候補)とに初期分割し、これをシミュレーションし
て相互の各プロセス部分のソフトウエア化またはハード
ウエア化が適正か否かを評価し、評価結果にしたがっ
て、1部の入れ替えを行い、さらに、必要に応じてその
入れ替えた結果で再度シミュレーションを行う動作を繰
り返す。
【0031】システム仕様記述1に書かれる各プロセス
は、本実施形態では初期分割しやすいように、ソフトウ
エア部分の候補となるプロセスに処理の優先度を表す情
報がつけ加えられる。図3にその状態を示す。なお、ソ
フトウエアのプロセス群は1つのCPUで処理が実行さ
れる限り、各プロセス間で通信をするときに処理の優先
度が必要となることがある。優先度を表す情報はこのた
めのものである。ハードウエアのプロセス群はCPUに
より処理されるものではないから、通常は処理に優先度
を必要としない。もちろん、この情報が付加されていて
もこれをハードウエア部分で構成することは可能であ
る。
【0032】図3において、PROCA 0 、PROCB 1 は、前
者のプロセス優先度が「0」、後者のそれが「1」であ
ることを示している。優先順位は前者の方が一つ高い。
【0033】協調合成システム2は、上記の優先度を表
す情報が付加されているプロセスを仮のソフトウエア実
現候補とする。また、その他のプロセスを仮のハードウ
エア実現候補とする。初期分割はこのようにして行われ
る。図4に初期分割した状態を示している。P1〜P3
は優先度を表す情報を持つプロセスであるため、ソフト
ウエア実現候補とされる。P4〜P7は優先度を表す情
報を持たないプロセスであるため、ハードウエア実現候
補とされる。
【0034】なお、この段階で、図4のように分類され
た仮のソフトウエア実現候補と仮のハードウエア実現候
補に対して、面積(ソフトウエア部分についてはプログ
ラムステップ数)と、実行時間が初期見積もりデータと
して保存される。これらの値は、図1のソフトウエア合
成システム5と動作合成システム3により求められる。
すなわち、プログラムステップ数及び面積は、ソフトウ
エア部分のプログラムステップ数及びハードウエア部分
のHDL言語から分析した回路により、また、実行時間
は、予め設定されているクロック時間と上記プログラム
ステップ数及び回路の遅延時間とにより求められる。
【0035】次に、上記の仮のハードウエア実現候補と
仮のソフトウエア実現候補をシミュレータにかけて、実
行状況のプロファイリング情報を収集する。
【0036】図5は、プロセスの一般構造を示してい
る。システム仕様記述の中のプロセスの定義には、図5
に示すように、さらに小さな機能の定義や、場合分け等
のプログラム記述がある。これらの定義やプログラム記
述の中で、分岐やブロック化によってまとめられる実行
の単位を、ここでは実行ブロックと呼ぶ。一つのプロセ
ス中、処理の高速化を要求される実行ブロックがあれ
ば、その反対に要求されない実行ブロックもある。シミ
ュレータは、各実行ブロックについて、処理の高速化が
要求されるかどうかを判断するためのプロファイリング
情報を作成するためのものである。プロファイリング情
報は、各実行ブロックに含まれる変数へのアクセス回数
を含んでいる。すなわち、アクセス回数が一定以上であ
れば、その変数が属する実行ブロックについては処理の
高速化が必要であると推定する。反対に、アクセス回数
が一定以下であれば、その変数が属する実行ブロックに
ついては処理の高速化は必要でないと推定する。このよ
うに、各ブロックに属する変数へのアクセス回数をプロ
ファイリング情報として収集することにより、各ブロッ
クに対し、処理の高速化が必要か否かを知ることが出来
るようになる。そして、仮のソフトウエア実現候補内の
実行ブロックに処理の高速化が必要なものがあると判断
すれば、その実行ブロックをハードウエア実装への変更
候補に設定する。また、仮のハードウエア実現候補内の
実行ブロックに処理の高速化が必要でないものがあると
判断すれば、その実行プロセスをソフトウエア実装への
変更候補に設定する。
【0037】図1の協調合成システム2に含まれるシミ
ュレータは、システム仕様記述からシミュレーションコ
ードを作成してシミュレーションを実行出来るように
し、また、そのときに各変数がどの実行ブロックに属す
るかを示すスコープ情報を作成し、これを各実行ブロッ
クの従属関係を示す木(ツリー)構造で管理する。木構
造の各実行ブロックには変数のアクセス回数をカウント
するカウンタが埋め込まれ、シミュレーションコードの
実行に従って、このカウンタを加算していく。これによ
り、実行ブロック毎の変数のアクセス回数をカウントす
ることが出来るから、この結果をプロファイリング情報
として出力する。図6にシミュレーションを行うときの
状態を示す。
【0038】次に、上記のようにして得られたプロファ
イリング情報から、ソフトウエア実現候補の中のプロセ
スのうち所定の実行ブロックをハードウエア実装への変
更候補に選び、また、ハードウエア実現候補の中のプロ
セスのうち所定の実行ブロックをソフトウエア実装への
変更候補に選ぶ。以下、この選択手法について説明す
る。
【0039】(1)ソフトウエアからハードウエアへの
入れ替え候補の選択 ソフトウエア実現候補のプロセスに含まれる実行ブロッ
クのうち、シミュレーション実行後のアクセス回数の多
い実行ブロックのランク付けを行い、高いランク(高ア
クセス回数)を持つ実行ブロックのそれぞれについて、
ハードウエアとして切り出した場合のオーバーヘッドを
加算したハードウエア増加面積を算出する。オーバーヘ
ッドとは、ハードウエアとして切り出した場合に、余分
に必要となるハードウエア部分(例えば、アドレス設定
レジスタなど)をいう。この演算は、最高アクセス回数
を持つ実行ブロックから最高アクセス回数の2分の1の
回数を持つ実行ブロックまでを対象とする。
【0040】(2)ハードウエアからソフトウエアへの
入れ替え候補の選択 ハードウエア実現候補のプロセスに含まれる実行ブロッ
クのうち、シミュレーション実行後のアクセス回数の少
ない実行ブロックのランク付けを行い、高いランク(低
アクセス回数)を持つ実行ブロックのそれぞれについ
て、ソフトウエアとして切り出した場合のオーバーヘッ
ドを減算したハードウエア減少面積を算出する。この演
算は、最低アクセス回数を持つ実行ブロックから最高ア
クセス回数の2分の1の回数を持つ実行ブロックまでを
対象とする。
【0041】上記(1)(2)で選択した入れ替え候補
について、以下のアルゴリズムにより入れ替えを確定す
る。
【0042】(A)上記(2)の入れ替え候補の実行ブ
ロック(以下、ソフトウエア実装変更候補モジュールと
呼ぶ)を、ソフトウエア合成システム5(図1参照)を
用いて処理し、ソフトウエア見積もりデータを取得す
る。ソフトウエア見積もりデータには、プログラムステ
ップ数と実行時間が含まれる。
【0043】(B)上記(1)の入れ替え候補の実行ブ
ロック(以下、ハードウエア実装変更候補モジュールと
呼ぶ)を、動作合成システム3(図1参照)を用いて処
理し、ハードウエア見積もりデータを取得する。ハード
ウエア見積もりデータには、実装の面積と実行時間が含
まれる。
【0044】(C)保持していた初期分割におけるソフ
トウエア見積もりデータ(初期見積もりデータ)とソフ
トウエア実装変更候補モジュールのソフトウエア見積も
りデータとを比較する。比較により、面積改善率と速度
改悪率を求める。前者の面積改善率は、ソフトウエア実
装変更候補モジュールの実現により減少する面積の改善
率であり、速度改悪率は、ソフトウエア実装変更候補モ
ジュールの実現により遅くなる速度の改悪率である。そ
の結果、面積改善率/速度改悪率が1.0以下のモジュ
ールを非効率実装モジュールとし、これをソフトウエア
実装変更候補モジュールから除去する。
【0045】(D)保持していた初期分割におけるハー
ドウエア見積もりデータ(初期見積もりデータ)とハー
ドウエア実装変更候補モジュールのハードウエア見積も
りデータとを比較する。比較により、速度改善率と面積
改悪率を求める。前者の速度改善率は、ハードウエア実
装変更候補モジュールの実現により速くなる速度の改善
率であり、面積改悪率は、ハードウエア実装変更候補モ
ジュールの実現により増大する面積の改悪率である。そ
の結果、速度改善率/面積改悪率が1.0以下のモジュ
ールを非効率実装モジュールとし、これをハードウエア
実装変更候補モジュールから除去する。
【0046】(E)ソフトウエア実装変更候補モジュー
ルにおいて、面積改善率の大きなものから実装変更優先
度を付与する。
【0047】(F)ハードウエア実装変更候補モジュー
ルにおいて、速度改善率の大きなものから実装変更優先
度を付与する。
【0048】(G)ハードウエア実装変更候補モジュー
ルの実装変更優先度の高いものから順に参照し、その面
積増加分を補うソフトウエア実装変更候補モジュールの
組み合わせを探索する。つまり、面積が増えないように
全体として処理速度が改善される組み合わせを探索す
る。この探索により、可能な限り実装変更優先度の高い
ものを組み合わせ、同一実装面積でさらに処理速度が改
善される組み合わせを探る。
【0049】上記(G)の処理は、一定の面積内で速度
が最小となる方向を目指す。この具体的な内容について
図7〜図9を参照して説明する。
【0050】図7は、(E)の処理を終えたときのソフ
トウエア実装変更候補モジュールのソート結果を示して
いる。また、図8は、(F)の処理を終えたときのハー
ドウエア実装変更候補モジュールのソート結果を示して
いる。図7において、1列目の「H1」・・・はソフト
ウエア実装変更候補モジュールの識別番号、2列目の
「面積」と「実行時間」は、初期見積もりデータとして
得られた当初のハードウエア部分での面積とその部分で
の実行時間、3列目の「ステップ数」と「実行時間」
は、ソフトウエア実装変更候補モジュールについて
(A)の処理により得られたステップ数と実行時間、4
列目の「減少面積」はソフトウエアからハードウエアへ
変換した場合の減少面積、すなわち、2列目の面積から
3列目のステップ数面積換算値を引いた値、5列目の
「既変」は候補から実際に変換されたことを示すフラ
グ、6列目の「今回」は変更候補となったことを示すフ
ラグである。また、図8において、1列目の「S1」・
・・はハードウエア実装変更候補モジュールの識別番
号、2列目の「ステップ数」と「実行時間」は、初期見
積もりデータとして得られた当初のソフトウエア部分で
のステップ数と実行時間、3列目の「面積」と「実行時
間」は、ハードウエア実装変更候補モジュールについて
(B)の処理により得られた面積と実行時間、4列目の
「増加面積」はハードウエアへと変換した場合の増加面
積すなわち、3列目の面積から2列目のステップ数面積
換算値を引いた値、5列目の「既変」は候補から実際に
変換されたことを示すフラグ、6列目の「今回」は変更
候補となったことを示すフラグである。
【0051】図9は、図7及び図8のソート結果を使っ
て上記(G)の処理を実際に行うフローチャートであ
る。
【0052】変数(カウンタ)nは図8に示すハードウ
エア実装変更候補モジュールのポインタを示し、変数
(カウンタ)mは図9に示すソフトウエア実装変更候補
モジュールのポインタを示す。
【0053】ST1では、ハードウエア実装変更候補モ
ジュールの中で最も速度改善値の高いものを指定する。
ST2において、そのモジュールの増加面積を読む。S
T3では、ソフトウエア実装変更候補モジュールの中で
最も面積改善値の高いものを指定し、ST5でそのモジ
ュールの減少面積を読み込む。
【0054】変数「比較ゲート数」は、ソフトウエア実
装変更候補モジュールの減少面積の足し込んだ値を示
す。ST5において読み込んだソフトウエア実装変更候
補モジュールの減少面積がST7において比較ゲート数
に加算されていく。その加算値がST2で読み込んだハ
ードウエア実装変更候補モジュールの増加面積に等しく
なるまで、ST9を経由してソフトウエア実装変更候補
モジュールの減少面積が比較ゲート数に加算されてい
く。ST8においてこれらの値が等しくなると、ST1
0において、該当のソフトウエア実装変更候補モジュー
ルの「既変」フラグをオンにし、実際のソフトウエア実
装分として確定する。また、ST11において、nで指
定しているハードウエア実装変更候補モジュールの「既
変」フラグをオンにして、実際のハードウエア実装分と
して確定する。なお、実装面積の均衡をとる場合に、ハ
ードウエア実装変更候補モジュールの実装採用による速
度改善は、速度改善率の高いものから実装採用となるた
め、その組み合わせとなるソフトウエア実装変更候補モ
ジュールの実装採用による速度改悪を十分にカバーす
る。
【0055】以上のn2〜n11までの動作をnが所定
値になるまで連続して処理することにより、チップ面積
を増加させずに可能な限り処理速度の向上を図ることが
出来る。
【0056】なお、ST2において1つのハードウエア
実装変更候補モジュールの増加面積を読み出すようにし
ているが、このステップで上位から複数のハードウエア
実装変更候補モジュールの面積加算値を読み出し、これ
に対応する面積減少値を持つソフトウエア実装変更候補
モジュールを選ぶようにすることも出来る。また、反対
に、最初にソフトウエア実装変更候補モジュールの面積
減少値を読み出し、これに対応する面積増加値を持つハ
ードウエア実装変更候補モジュールを選ぶようすること
も出来る。
【0057】また、上記の処理を一通り行った後、再
度、最初から同じ動作を繰り返すことも可能である。何
度も繰り返すことにより、さらに、速度向上を図ること
が出来るようになる。さらに、チップ面積を増やすこと
が可能な場合には、その面積に対応する増加面積を有す
るハードウエア実装変更候補モジュールをハードウエア
実装分にすることが出来る。
【0058】以上の処理により、仮のソフトウエア実装
変更候補と仮のハードウエア実現候補とに初期分割した
プロセスにおいて、チップ面積を大きくすることなく、
速度改善出来るように自動的に各プロセス内の実行ブロ
ックに対して、ソフトウエア実装への変更またはソフト
ウエア実装への変更を行うことが出来る。
【0059】図10〜図12は、本発明の他の実施形態
の動作を示している。図7〜図9は、一定の面積内で実
行速度が最小となる方向に各モジュールを変更する場合
の操作内容を示しているが、一定の速度内で面積が最小
となる方向に各モジュールを変更することも可能であ
る。図10〜図12はこの場合の動作を示す。
【0060】すなわち、図10に示すように、面積改善
値でソートした各ソフトウエア実装変更候補モジュール
に、ハードウエアからソフトウエアへ変換するときの増
加時間、すなわち、2列目の実行時間から3列目の実行
時間を引いた値を付加し、図11に示すように、速度改
善値でソートした各ハードウエア実装変更候補モジュー
ルに、ソフトウエアからハードウエアへ変換するときの
減少時間、すなわち、3列目の実行時間から2列目の実
行時間を引いた値を付加した状態で、図12のフローチ
ャートを実行する。
【0061】図12では、変数(カウンタ)nで図10
のソフトウエア実装変更候補モジュールを先頭から順に
ポインティングし、変数(カウンタ)mで図11のハー
ドウエア実装変更候補モジュールを先頭から順にポイン
ティングする。ST21でnで示されるソフトウエア実
装変更候補モジュールの増加時間に均衡がとれる減少時
間を持つハードウエア実装変更候補モジュールを図11
から探し、それらをそれぞれソフトウエア実装分とハー
ドウエア実装分とする。あとの処理は図9と同様であ
る。
【0062】このように、上の2つの実施形態では、そ
れぞれ、実装面積や実行時間の均衡をとりながらモジュ
ールを交換して、一定の面積で最も速度が最小となる分
割点や一定の速度で最も面積が最小となる分割点を自動
的に求めることが出来る。
【0063】
【発明の効果】本発明によれば、最初に、システム仕様
記述である実行単位のプロセスの全部を仮のハードウエ
ア実現候補と仮のソフトウエア実現候補に自動分割して
いるため、分割に人間の経験や勘を必要せず、熟練技術
者でなくとも分割が可能である。また、仮の分割点か
ら、それぞれへの変更候補を選択して、チップ面積と実
行速度の改善率を評価し、上記分割点の修正を行うよう
にしているため、システムの最適分割点を自動的に短時
間で求めることが出来る。このため、システムの同時並
行的開発が可能となる。
【0064】また、上記仮の候補への自動分割を優先度
情報の有無により行うことにより、大きく誤った仮分割
となることがなく、分割そのものも非常に簡単となり短
時間で出来る。
【0065】また、1つのプロセスには複数の実行ブロ
ックがあり、各ブロックによりソフトウエアが適切なも
のやハードウエアが適切なものがあるため、変更候補の
最小単位をプロセス全体ではなくプロセス内の実行ブロ
ックとすることで、より適切な分割が可能になる。
【0066】また、変数へのアクセスが多いときはハー
ドウエア化がより適切なものと考えられ、反対に変数へ
のアクセスが少ないときはソフトウエア化が適切と考え
られるから、プロファイリング情報として、各プロセス
に含まれる実行ブロック内の変数へのアクセス回数を含
ませれば、変更候補の選択がより正しい方向のものとな
る。また、速度改善値の高いハードウエア実装変更候補
とそれに実装面積の均衡をとり得るソフトウエア実装変
更候補の組を選び、これらをそれぞれハードウエア実装
分とソフトウエア実装分に変換する分割点修正を行うこ
とで、一定の面積で速度が最小となる分割点を自動的に
見いだすことが出来る。
【0067】また、面積改善値の高いソフトウエア実装
変更候補とそれに実行時間の均衡をとり得るハードウエ
ア実装変更候補の組を選び、これらをそれぞれソフトウ
エア実装分とハードウエア実装分に変換する分割点修正
を行うことで、一定の時間で面積が最小となる分割点を
自動的に見いだすことが出来る。
【図面の簡単な説明】
【図1】本発明の実施形態である、ハードウエアとソフ
トウエアの混在するシステムの設計支援装置の構成図。
【図2】プロセスの集まりで書かれるシステム仕様記述
の一例を示す図。
【図3】システム仕様記述におけるプロセスの優先度指
定を示す図。
【図4】プロセスの初期分割例を示す図。
【図5】プロセス内の実行ブロックを示す図。
【図6】シミュレータによるシミュレーション動作を説
明する図。
【図7】ソフトウエア実装変更候補モジュールのソート
結果を示す図。
【図8】ハードウエア実装変更候補モジュールのソート
結果を示す図。
【図9】速度が最小となる方向でモジュール変換を行う
手順を示すフローチャート。
【図10】ソフトウエア実装変更候補モジュールのソー
ト結果を示す図。
【図11】ハードウエア実装変更候補モジュールのソー
ト結果を示す図。
【図12】面積が最小となる方向でモジュール変換を行
う手順を示すフローチャート。

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 システムの仕様を実行単位のプロセスの
    集まりで記述したシステム仕様記述を作成し、このシス
    テム仕様記述に基づいて、全プロセスを仮のハードウエ
    ア実現候補と仮のソフトウエア実現候補に初期分割し、
    次いで、これらの候補をシミュレーションして実行状況
    をプロファイリング情報として収集し、このプロファイ
    リング情報に基づいて、仮のハードウエア実現候補から
    ソフトウエア実装への変更候補、または、仮のソフトウ
    エア実現候補からハードウエア実装への変更候補を選択
    し、これらの変更候補によるチップ面積と実行速度の改
    善率を評価して、上記各候補の分割点を修正することを
    特徴とする、ハードウエアとソフトウエアの混在するシ
    ステムの設計支援方法。
  2. 【請求項2】 プロセスは、実行のための優先度の情報
    を含み、初期分割は、この優先度の含むプロセスをソフ
    トウエア実現候補、含まないプロセスをハードウエア実
    現候補として自動的に行うようにした、請求項1記載
    の、ハードウエアとソフトウエアの混在するシステムの
    設計支援方法。
  3. 【請求項3】 前記変更候補の最小単位は、プロセス内
    の実行ブロックである、請求項1または2記載の、ハー
    ドウエアとソフトウエアの混在するシステムの設計支援
    方法。
  4. 【請求項4】 プロファイリング情報は、ソフトウエア
    実現候補の各プロセス毎の実行ブロックに属する変数へ
    のアクセス回数を含み、アクセス回数が一定以上の変数
    が属する実行ブロックをハードウエア実装への変更候補
    とする、請求項1〜3のいずれかに記載の、ハードウエ
    アとソフトウエアの混在するシステムの設計支援方法。
  5. 【請求項5】 プロファイリング情報は、ハードウエア
    実現候補の各プロセス毎の実行ブロックに属する変数へ
    のアクセス回数を含み、アクセス回数が一定以下の変数
    が属する実行ブロックをソフトウエア実装への変更候補
    とする、請求項1〜3のいずれかに記載の、ハードウエ
    アとソフトウエアの混在するシステムの設計支援方法。
  6. 【請求項6】 各候補の分割点を修正するとき、速度改
    善値のより高いハードウエア実装変更候補と、その候補
    と実装面積の均衡をとり得るソフトウエア実装変更候補
    の組とを選び、これらの候補をそれぞれハードウエア実
    装分、ソフトウエア実装分に変更することで分割点修正
    を行うようにした、請求項1〜5のいずれかに記載の、
    ハードウエアとソフトウエアの混在するシステムの設計
    支援方法。
  7. 【請求項7】 各候補の分割点を修正するとき、面積改
    善値のより高いソフトウエア実装変更候補と、その候補
    と実行時間の均衡をとり得るハードウエア実装変更候補
    の組とを選び、これらの候補をそれぞれソフトウエア実
    装分、ハードウエア実装分に変更することで分割点修正
    を行うようにした、請求項1〜5のいずれかに記載の、
    ハードウエアとソフトウエアの混在するシステムの設計
    支援方法。
JP10062555A 1998-03-13 1998-03-13 ハードウエアとソフトウエアの混在するシステムの設計支援方法 Pending JPH11259553A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10062555A JPH11259553A (ja) 1998-03-13 1998-03-13 ハードウエアとソフトウエアの混在するシステムの設計支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10062555A JPH11259553A (ja) 1998-03-13 1998-03-13 ハードウエアとソフトウエアの混在するシステムの設計支援方法

Publications (1)

Publication Number Publication Date
JPH11259553A true JPH11259553A (ja) 1999-09-24

Family

ID=13203638

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10062555A Pending JPH11259553A (ja) 1998-03-13 1998-03-13 ハードウエアとソフトウエアの混在するシステムの設計支援方法

Country Status (1)

Country Link
JP (1) JPH11259553A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002099704A1 (en) * 2001-05-30 2002-12-12 Yozan Inc. System development supporting apparatus, system development supporting method, and computer-readable recorded medium
JP2006011840A (ja) * 2004-06-25 2006-01-12 Mitsubishi Electric Corp 組み込みシステム
JP2009251996A (ja) * 2008-04-08 2009-10-29 Nippon Telegr & Teleph Corp <Ntt> 処理装置、処理方法およびそのプログラム
JP2010181942A (ja) * 2009-02-03 2010-08-19 Renesas Electronics Corp Pld/cpldからマイコンへの置換え見積の情報提供システム及び方法
US8214189B2 (en) 2008-01-08 2012-07-03 Fujitsu Limited Performance evaluation simulation
US11657197B2 (en) 2019-11-19 2023-05-23 Mitsubishi Electric Corporation Support system and computer readable medium
CN110706147B (zh) * 2019-09-29 2023-08-11 阿波罗智联(北京)科技有限公司 图像处理的环境确定方法、装置、电子设备和存储介质

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002099704A1 (en) * 2001-05-30 2002-12-12 Yozan Inc. System development supporting apparatus, system development supporting method, and computer-readable recorded medium
JP2006011840A (ja) * 2004-06-25 2006-01-12 Mitsubishi Electric Corp 組み込みシステム
US8214189B2 (en) 2008-01-08 2012-07-03 Fujitsu Limited Performance evaluation simulation
JP2009251996A (ja) * 2008-04-08 2009-10-29 Nippon Telegr & Teleph Corp <Ntt> 処理装置、処理方法およびそのプログラム
JP2010181942A (ja) * 2009-02-03 2010-08-19 Renesas Electronics Corp Pld/cpldからマイコンへの置換え見積の情報提供システム及び方法
CN110706147B (zh) * 2019-09-29 2023-08-11 阿波罗智联(北京)科技有限公司 图像处理的环境确定方法、装置、电子设备和存储介质
US11657197B2 (en) 2019-11-19 2023-05-23 Mitsubishi Electric Corporation Support system and computer readable medium

Similar Documents

Publication Publication Date Title
US7370296B2 (en) Modeling language and method for address translation design mechanisms in test generation
WO2001075688A1 (en) Automated design of digital signal processing integrated circuit
US20080243462A1 (en) Instruction encoding in a hardware simulation accelerator
US5557797A (en) Scheduling method for automatically developing hardware patterns for integrated circuits
JP3150611B2 (ja) パターン発生装置
US20040098242A1 (en) Repartitioning performance estimation in a hardware-software system
JPH11259553A (ja) ハードウエアとソフトウエアの混在するシステムの設計支援方法
JPH07334395A (ja) データ処理速度の評価方法
US8532974B2 (en) Developing system and method for optimizing the energy consumption of an application program for a digital signal processor
CN112149370B (zh) 芯片老化的静态时序分析方法、装置和电子设备
JPH03116281A (ja) 論理合成装置
CN115146485B (zh) 基于gpu加速的射频链路仿真方法
US6412096B1 (en) Method and apparatus for a hedge analysis technique for performance improvements of large scale integrated circuit logic design
Nielsen Computer simulation of computer system performance
JP3171182B2 (ja) 機能合成方法,機能合成装置およびその記録媒体
CN110399354A (zh) 数据库的分区交换方法及装置
US6728936B1 (en) Datapath bitslice technology
CN118113660B (zh) Fpga延时优化方法、装置、设备、存储介质及程序产品
JPH1196203A (ja) 論理回路設計方法
US8140316B2 (en) Systems and methods for improving digital system simulation speed by clock phase gating
JPH0916642A (ja) データ処理装置のアーキテクチャ評価方法
KR100594593B1 (ko) 반도체 소자의 설계 검증을 위한 고속 병렬 시뮬레이션 방법
JP3246462B2 (ja) C言語回路モデルを用いた機能合成方法およびそのプログラムを記録した記録媒体
JPH06251103A (ja) 高位合成装置
JP2023149188A (ja) 修正支援方法、修正支援プログラムおよび情報処理装置