JP2003114914A - ソフトウェア/ハードウェア協調設計方法 - Google Patents

ソフトウェア/ハードウェア協調設計方法

Info

Publication number
JP2003114914A
JP2003114914A JP2001308561A JP2001308561A JP2003114914A JP 2003114914 A JP2003114914 A JP 2003114914A JP 2001308561 A JP2001308561 A JP 2001308561A JP 2001308561 A JP2001308561 A JP 2001308561A JP 2003114914 A JP2003114914 A JP 2003114914A
Authority
JP
Japan
Prior art keywords
hardware
program
procedure
executed
software
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
JP2001308561A
Other languages
English (en)
Inventor
Kazuhisa Okada
和久 岡田
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Priority to JP2001308561A priority Critical patent/JP2003114914A/ja
Publication of JP2003114914A publication Critical patent/JP2003114914A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 ハードウェアで実行される部分とソフトウェ
アで実行される部分を含むシステム全体の処理手順を、
一般に用いられるプログラム言語を用いて記述して、ハ
ードウェア化したい部分を実行するハードウェアと、ソ
フトウェア化したい部分を実行する計算機プログラムを
得る。 【手段】 計算機プログラム言語で記述されたシステム
全体の処理手順から、ハードウェアで実行される部分手
順を取り出し、それを実行するハードウェアを合成す
る。また、計算機プログラム言語を用いて、ハードウェ
ア動作制御記述を生成し、計算機プログラム言語で記述
されたシステム全体の処理手順のうち、ハードウェアで
実行される部分手順を、ハードウェア動作制御記述に置
き換える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ソフトウェアによ
ってシステム機能が実現される部分とハードウェアによ
ってシステム機能が実現される部分とを含むように情報
処理システムの設計を行う、ソフトウェア/ハードウェ
ア協調設計方法に関する。
【0002】
【従来の技術】画像処理および音声処理等のように、特
定の計算処理を大量に行う必要がある情報処理システム
を設計する場合には、一般に、プログラム中の計算量が
多い部分は特定の計算処理を行う専用のハードウェアに
よって高速に処理が行われ、それ以外の計算量が少ない
部分は計算機を用いてソフトウェアによって処理が行わ
れるように、情報処理システムが構成される。このよう
に、全体処理の一部分がハードウェアによって実行さ
れ、残りの部分がソフトウェアによって実行されるよう
なシステムにおいて、ソフトウェア部とハードウェア部
とを同時に設計することを、ソフトウェア/ハードウェ
ア協調設計、ソフトウェア/ハードウェア同時設計、ま
たはソフトウェア/ハードウェアコデザイン等と称す
る。
【0003】従来のソフトウェア/ハードウェア協調設
計方法としては、例えば特開平9−81607号公報に
開示されているような方法が挙げられる。この方法で
は、まず、ソフトウェアによる処理とハードウェアによ
る処理とを含むシステム全体の処理が、独自の言語であ
る「個人の言語」によって設計される。その「個人の言
語」によるシステム全体の記述から、ハードウェアによ
って処理が行われる部分の記述と、ソフトウェアによっ
て処理が行われる部分の記述とが取り出されて、前者は
ハードウェア設計に用いられる、ハードウェアを論理合
成可能なハードウェア記述言語に変換され、後者は計算
機で実行可能なプログラム言語に変換される。
【0004】一方、計算機を用いてソフトウェアによっ
て実行可能なプログラム全体を、ハードウェアによって
実行する技術としては、例えば特開平11−25011
2号公報、および”A C−based Synthes
is System, Bach, and its Ap
plication,” Proc. of Asiaa
nd South Pacific Design Aut
omation Conf.2001,pp.151−
155,2001. (IEEE Catalog Nu
mber: 01EX455)等に開示されているよう
な技術が挙げられる。
【0005】図1は、これらの方法を説明するためのフ
ローチャートである。ステップ1において、C言語を拡
張したプログラム言語を用いたアルゴリズム記述が与え
られると、ステップ2において、プログラムを実行する
ための制御の流れとデータの流れとが解析されて、コン
トロールデータフローグラフ(CDFG)と称されるモ
デルに変換される。このCDFGはプログラムのフロー
チャートに類似したグラフであり、演算、外部入出力お
よびメモリアクセス実行順序の依存関係が表現されてい
る。
【0006】次に、ステップ3では、高位合成技術を用
いて、CDFGからハードウェア記述言語の1つである
VHDL言語による記述が生成される。この高位合成術
については、例えば”High Level Synth
sis,” Kluwer Academic Publ
ishers等の文献にその詳細が記載されている。
【0007】次に、ステップ4において、VHDL言語
による記述からハードウェアが生成される。VHDL言
語等のハードウェア記述言語による記述は、論理合成に
よって容易にハードウェア化することができる。また、
論理合成技術はハードウェア設計においては一般的な既
知の技術である。
【0008】
【発明が解決しようとする課題】一般に、ある情報処理
システムを設計する場合には、まず、システム全体のア
ルゴリズムを決定するためのアルゴリズム設計が行われ
る。アルゴリズム設計は、シミュレーションの容易性お
よび処理の高速性という観点から、C言語等のように、
ソフトウェアを記述するために用いられる計算機で実行
可能なプログラム言語(計算機プログラム言語)を用い
て行われることが多い。
【0009】しかしながら、上述した特開平9−816
07号公報に開示されているソフトウェア/ハードウェ
ア協調設計方法では、システム全体のアルゴリズム設計
において、一般にソフトウェアの設計に用いられる計算
機プログラム言語ではなく、ハードウェアを記述する言
語であるハードウェア記述言語でもない、独自の言語で
ある「個人の言語」が用いられている。この「個人の言
語」による記述自体は、計算機によって実行することが
できず、「個人の言語」によって記述されたシステム全
体のアルゴリズムを検証するためには、一旦、計算機プ
ログラム言語による記述に変換し、その記述を実行して
確認する必要があり、アルゴリズムの検証作業に手間が
かかる。また、「個人の言語」による記述と、計算機プ
ログラム言語による記述とは異なるため、アルゴリズム
記述から生成された、計算機プログラム言語による記述
に問題が見つかったとしても、元の「個人の言語」によ
る記述の誤っている箇所がどこであるかをすぐに見つけ
ることはできない。
【0010】また、アルゴリズム設計者は、一般に用い
られる計算機プログラム言語およびハードウェア記述言
語ではない、独自の言語である「個人の言語」を新たに
学習する必要があり、また、不慣れな言語を使用するこ
とにより設計の効率が低下するというおそれがある。さ
らに、「個人の言語」によって記述されたシステム全体
のアルゴリズム記述のうち、ハードウェアによって実行
される部分はハードウェア記述言語に変換され、ソフト
ウェアによって実行される部分はC言語等のプログラム
言語に変換されるため、異なる言語に変換することによ
って変換処理に手間がかかる。
【0011】一方、特開平11−250112号公報、
および”A C−based Synthesis Sy
stem, Bach, and its Applica
tion,” Proc. of Asia and So
uth Pacific Design Automat
ion Conf.2001,pp.151−155,
2001. (IEEE Catalog Numbe
r: 01EX455)等に開示されている方法では、
計算機で実行可能なプログラム言語、それを拡張した言
語等により、システム全体のアルゴリズム設計を行うこ
とができる。しかしながら、この方法では、システム全
体をハードウェア化することはできるが、一部分の手順
がハードウェアによって実行され、残りの部分の手順が
ソフトウェアによって実行されるような情報処理システ
ムを得ることはできない。
【0012】本発明は、このような従来技術の課題を解
決するためになされたものであり、ハードウェアによっ
て実行される部分とソフトウェアによって実行される部
分とを含む情報処理システム全体のアルゴリズムを、一
般にソフトウェアを記述するために用いられるプログラ
ム言語、またはそれを拡張した言語等、計算機によって
実行可能なプログラム言語を用いて記述して、そのアル
ゴリズム記述中のハードウェア化したい部分を実行する
ハードウェアと、そのハードウェアを制御すると共にソ
フトウェア化したい部分を実行する計算機プログラムと
を得ることができるソフトウェア/ハードウェア協調設
計方法を提供することを目的とする。
【0013】
【課題を解決するための手段】本発明のソフトウェア/
ハードウェア協調設計方法は、一連の情報処理手順のう
ち、一部分の手順をハードウェアによって実行し、残り
の部分の手順を計算機を用いてソフトウェアによって実
行する情報処理システムを設計する、ソフトウェア/ハ
ードウェア協調設計方法であって、計算機で実行可能な
プログラム言語により記述された一連の情報処理手順か
ら、ハードウェアによって実行される部分手順を取り出
して、該部分手順を実行するハードウェアの記述を作成
するステップと、該計算機で実行可能なプログラム言語
を用いて、該ハードウェアの動作を制御する記述を生成
するステップと、該計算機で実行可能なプログラム言語
により記述された一連の情報処理手順のうち、ハードウ
ェアによって実行される部分手順を、該ハードウェアの
動作を制御する記述に置き換えるステップとを含み、そ
のことにより上記目的が達成される。
【0014】上記方法によれば、C言語、またはそれを
拡張した言語等、計算機で実行可能なプログラム言語を
用いてシステム全体を記述することができる。よって、
システム全体の記述を計算機を用いて実行して、特別な
変換作業等を行うことなく、システム全体の検証を行う
ことができる。また、システム全体の記述を直接実行し
て検証を行うことができるため、問題が見つかった場合
にも修正が容易である。
【0015】また、システム全体の情報処理手順のう
ち、一部分をハードウェアによって実行し、残りの部分
をソフトウェアによって実行する場合においても、ハー
ドウェアによって実行される部分の記述がハードウェア
を制御する記述に変更されるだけである。よって、特別
な変換作業を行うことなく、ソフトウェアによって実行
される部分の計算機プログラムを容易に得ることができ
る。また、得られるソフトウェア化部分を実行するため
の計算機プログラムは、元の記述に近いため、設計者が
容易に理解することができ、問題が見つかった場合に
も、容易に修正を行うことができる。
【0016】また、ソフトウェアおよびハードウェアの
振り分けは、設計者が予め定めておくことにより、C言
語、またはそれを拡張した言語によって記述されたシス
テム全体の記述から、ハードウェア化したい部分の記述
を取り出して高位合成を行うことにより、ハードウェア
記述言語によるハードウェア記述を作成し、論理合成を
行うことにより、容易にハードウェアを作成することが
できる。
【0017】さらに、システム全体の記述と、ソフトウ
ェア化部分を実行するための計算機プログラムと、ハー
ドウェア化部分を生成するための記述の全てを、同一の
計算機で実行可能なプログラム言語のみを用いて記述す
ることができる。よって、設計者は1種類の計算機で実
行可能なプログラム言語のみを習得すればよく、使い慣
れた言語を用いて設計を行うことができるため、設計効
率が向上する。
【0018】前記ハードウェアの記述を作成するステッ
プにおいて、前記計算機で実行可能なプログラム言語に
より記述された一連の情報処理手順のうち、ハードウェ
アによって実行される部分手順に対して、該部分手順で
使用されるデータを外部から読み込む手順と、該部分手
順を実行した結果を外部に書き込む手順とを付加して、
それらの手順が付加された部分手順を実行するハードウ
ェアの記述を作成することができる。
【0019】上記方法によれば、ハードウェアによって
実行される記述部分にインターフェイス記述を付け加え
ることによって、ハードウェア化したい部分手順を実行
するハードウェアと、ソフトウェア化したい部分手順を
実行する計算機との間で、データの受け渡しを行うこと
ができる。
【0020】前記ハードウェアの動作を制御する記述を
作成するステップにおいて、該ハードウェアによって実
行される部分手順で使用されるデータを該ハードウェア
に書き込む手順と、該ハードウェアに処理を開始する信
号を送る手順と、該ハードウェアの処理が終了するまで
待つ手順と、該ハードウェアによって該部分手順を実行
した結果を読み込む手順と、のうち、少なくとも1つの
手順を含むハードウェアの動作制御記述を作成すること
ができる。
【0021】上記方法によれば、ソフトウェア化したい
部分手順を実行する計算機と、ハードウェア化したい部
分手順を実行するハードウェアとの間で、データの受け
渡しを行うことができる。また、ハードウェアの動作制
御記述を、元のプログラム記述のハードウェア化したい
部分の記述と入れ換えることにより、計算機でプログラ
ムを実行するだけで、自動的にハードウェア化したい部
分の記述の処理をハードウェアによって高速に実行する
ことができる。
【0022】
【発明の実施の形態】以下に、本発明の実施の形態につ
いて、図面に基づいて説明する。
【0023】図2は、本発明の一実施形態であるソフト
ウェア/ハードウェア協調設計方法について説明するた
めのフローチャートである。本明細書では、実行しよう
とする処理の全体が記述されたプログラムを全体プログ
ラム、全体プログラム中のハードウェア化したい部分の
プログラムをハードウェア化プログラム、残りの部分を
ソフトウェア化プログラムと称する。
【0024】本実施形態のソフトウェア/ハードウェア
協調設計方法では、まず、ステップ21において、記述
の一部がハードウェアによって実行され、残りの部分が
計算機を用いてソフトウェアによって実行される全体プ
ログラムが、C言語もしくはFORTRAN等のプログ
ラム言語、またはそれらの言語を拡張した言語であるB
ach C言語、System C言語、Spec C言
語等のように、計算機で実行可能な同一のプログラム言
語によって記述される。システム全体が計算機によって
実行可能なプログラム言語を用いて記述されるため、通
常のソフトウェアを計算機上で実行する場合と同様に、
システム全体を容易に検証することができる。
【0025】図3に、C言語で記述された全体プログラ
ムの一例を示す。この図3では、図を見易くするため
に、一部の処理の記述を省略して、(処理A)等として
表記されている。この全体プログラムは、main関数
135内の処理が上から順に実行され、途中の133に
おいて関数func1 131が呼び出され、134に
おいて関数func2 132が呼び出される構造とな
っている。
【0026】次に、図2に示すステップ22では、全体
プログラムからハードウェア化プログラムが取り出さ
れ、ステップ23において、ハードウェア化プログラム
の処理がハードウェア記述言語に変換されて、ハードウ
ェア記述が生成される。
【0027】このステップ22およびステップ23の処
理の手順について、図4を用いて説明する。C言語もし
くはFORTRAN等のプログラム言語、またはそれら
の言語を拡張した言語によって記述された全体プログラ
ム111には、ハードウェア化プログラムA 112お
よびハードウェア化プログラムB 113が含まれてい
る。
【0028】全体プログラム111中、ハードウェア化
プログラムおよびソフトウェア化プログラムの振り分け
は、設計者によって予め設定される。本発明は、LSI
等の設計に利用され、後述するプログラムの実行段階で
は、これらの部分プログラム112および113の処理
は、ハードウェアによって実行される。よって、設計者
は、設計されたシステムの高速化、小型化、低消費電力
化(省エネルギー化)等を考慮しながら、ソフトウェア
部分およびハードウェア部分の振り分けを決定する。一
般に、ソフトウェア部分をハードウェア部分に置き換え
ると高速化を図ることができるが、サイズおよび消費電
力は大きくなる。従って、設計者は、処理速度と消費電
力等の兼ね合いを考慮して、最適な振り分けを行う必要
がある。効率的にハードウェア化するためには、記述量
は少ないが、大量の演算を必要とするルーチン、例えば
多数回実行されるループを含むようなプログラムをハー
ドウェア化プログラムとするのが好ましい。
【0029】例えば、図3に示す全体プログラム中、関
数func1 131の呼び出し部133をハードウェ
ア化プログラムとしてもよく、この場合には、関数fu
nc1 131もハードウェア化プログラムの一部とな
る。また、関数func2 132の呼び出し部134
をハードウェア化プログラムとしてもよく、この場合に
は、関数func2 132もハードウェア化プログラ
ムの一部となる。
【0030】なお、ソフトウェア/ハードウェアの振り
分け方法の一例としては、特開平9−81604号公報
に開示されているようなものがある。但し、この公報に
開示されている技術は、ソフトウェア/ハードウェアの
振り分けを見積もるためのものであり、本発明と直接関
連するものではない。
【0031】図4に示す全体プログラム111からハー
ドウェア化プログラムA 112およびハードウェア化
プログラムB 113を取り出して、それぞれのプログ
ラムから独立して動作するハードウェアA 117およ
びハードウェアB 118を作成するためには、全体プ
ログラム111との間でデータを受け渡しするためのイ
ンターフェイスルーチン114および115をハードウ
ェア化プログラムA 117およびハードウェア化プロ
グラムB 118にそれぞれ付加して、独立したプログ
ラムとする必要がある。よって、取り出されたハードウ
ェア化プログラム112および113にインターフェイ
スルーチン114および115がそれぞれ付加されて独
立したプログラムが作成され、合成ツール116を用い
て、例えばVHDL等のハードウェア記述言語によるハ
ードウェア記述として、ハードウェアA 117および
ハードウェアB 118が、それぞれ作成される。
【0032】例えば、図3に示す全体プログラムから取
り出されたハードウェア化プログラム133および13
1からは、図5に示すような独立したプログラムが作成
される。ここでは、ハードウェア化プログラム133お
よび131の他に、インターフェイスルーチン142が
付加され、また、main関数141内にインターフェ
イスルーチン143および144が付加されている。
【0033】以下に、インターフェイスルーチン142
〜144の動作を説明する。インターフェイスルーチン
142は、データ受け渡し用のワークRAMを設定す
る。ハードウェア化プログラム133および131は、
変数iおよびjの値を処理して変数kに代入する構成と
なっており、インターフェイスルーチン143は、RA
Mのアドレス0および1からデータを読み込んで、変数
iおよびjにそれぞれ設定する。インターフェイスルー
チン144は、部分プログラム133および131の実
行結果kの値をRAMのアドレス2に格納する。これら
のインターフェイスルーチンを付加することによって、
部分プログラム133および131を単独で動作させる
ことができる。
【0034】なお、上記例では、ハードウェア化プログ
ラムと全体プログラムのデータの受け渡しをRAMを用
いて行ったが、フリップフロップを用いてもよく、ハン
ドシェイクによる通信を用いることもできる。
【0035】図5に示すインターフェイスルーチンを付
加した部分プログラムは、それ自体で1つの独立したプ
ログラムである。よって、例えば特開平11−2501
12号公報、および”A C−based Synthe
sis System, Bach, and its A
pplication,” Proc. of Asia
and South Pacific Design Au
tomation Conf.2001,pp.151
−155,2001. (IEEE Catalog N
umber: 01EX455)等に開示されているよ
うに、C言語のようなプログラム言語によるソフトウェ
ア記述から、例えばBachシステム等のようなハード
ウェアコンパイラを合成ツール116として用いてハー
ドウェア記述を作成し、論理合成を行うことによって、
図5に示すプログラムの処理と同じ処理を行う、図6に
示すようなハードウェアA 117を得ることができ
る。
【0036】ハードウェアA 117は、ハードウェア
化プログラムAの処理を行うハードウェアであり、開始
信号174が入力されると、バス175に接続されたR
AMから処理に必要なデータを読み込んで処理を行う。
また、処理が完了すると、バス175に接続されたRA
Mに処理結果を書き込んで、終了信号173を出力す
る。
【0037】図3に示す他のハードウェア化プログラム
134および132についても同様に、図7に示すよう
なインターフェイスルーチンを含む独立したプログラム
を作成して、その処理を行うハードウェアを作成するこ
とができる。
【0038】次に、図2に示すステップ24では、ステ
ップ23において生成されたハードウェア記述から論理
合成により得られるハードウェアを制御するプログラム
が作成され、ステップ25において、全体プログラム中
のハードウェア化プログラムと入れ換えられる。これに
よって、ハードウェア化プログラムの処理がハードウェ
アによって実行される全体プログラムが得られる。
【0039】このステップ24およびステップ25の処
理の手順について、図8を用いて説明する。ハードウェ
アAを実行するルーチン120は、ハードウェア化プロ
グラムAの処理を行うハードウェアAにて処理を実行す
るためのハードウェア動作制御プログラムであり、ハー
ドウェア化プログラムAが参照する変数の値をワークR
AMに書き込み、ハードウェアAによる処理を実行し、
処理結果をワークRAMから読み込んで全体プログラム
中の変数に格納するルーチンである。同様に、ハードウ
ェアBを実行するルーチン121は、ハードウェア化プ
ログラムBの処理を行うハードウェアBにて処理を実行
するためのハードウェア動作制御プログラムであり、ハ
ードウェア化プログラムBが参照する変数の値をワーク
RAMに書き込み、ハードウェアBによる処理を実行
し、処理結果をワークRAMから読み込んで全体プログ
ラム中の変数に格納するルーチンである。
【0040】図4に示す全体プログラム111からハー
ドウェア化プログラムA 112およびハードウェア化
プログラムB 113を取り出した箇所122および1
23に、ハードウェア化プログラムAおよびBの処理を
ハードウェアによって実行するルーチン120および1
21がそれぞれ挿入される。これによって、ハードウェ
ア化プログラムAおよびBの処理がハードウェアによっ
て実行され、それ以外の処理がソフトウェアによって実
行される、新たな全体プログラム124が得られる。
【0041】図8に、全体プログラム124の一部をハ
ードウェアによって実行し、残りの部分をソフトウェア
によって実行するシステム125全体の構成を示す。こ
のシステム125は、全体プログラム124を実行する
ための計算機1251を有している。計算機1251
は、全体プログラム124に従って通常のソフトウェア
処理を行う他に、ワークRAM1252に対してバス1
255を介してデータを書き込み、ワークRAM125
2からバス1255を介してデータを読み込む。また、
計算機1251は、開始信号1258および1260に
よってハードウェアA 1253およびハードウェアB
1254のそれぞれに処理の開始を指示し、ハードウェ
アA 1253およびハードウェアB 1254のそれぞ
れからの終了信号1259および1261を待つ。
【0042】ワークRAM1252は、計算機1251
からバス1255を介してデータが読み書きされ、ハー
ドウェアA 1253およびハードウェアB 1254か
らそれぞれバス1256および1257を介してデータ
が読み書きされる。
【0043】ハードウェアA 1253は、図4に示す
ハードウェア化プログラムA 112の処理を行うハー
ドウェアであり、計算機1251からの開始信号125
8に従って処理を開始する。このとき、ハードウェアA
1253は、ワークRAM1252からバス1256
を介してデータを読み込んで処理を行い、ワークRAM
1252にバス1256を介して処理結果を書き込む。
処理の終了時には、ハードウェアA 1253は、計算
機1251に対して処理の終了信号1259を送る。
【0044】ハードウェアB 1254は、図4に示す
ハードウェア化プログラムB 112の処理を行うハー
ドウェアであり、計算機1251からの開始信号126
0に従って処理を開始する。このとき、ハードウェアB
1254は、ワークRAM1252からバス1257
を介してデータを読み込んで処理を行い、ワークRAM
1252にバス1257を介して処理結果を書き込む。
処理の終了時には、ハードウェアB 1254は、計算
機1251に対して処理の終了信号1261を送る。ハ
ードウェア化プログラムが3個以上ある場合にも同様
に、ハードウェア化プログラムの個数分のハードウェア
を用いて処理が行われる。
【0045】以下に、図8に示すシステム125の動作
の一例について、図9を用いて説明する。図9は、ハー
ドウェア化プログラムの処理をハードウェアによって実
行するルーチンを内蔵した全体プログラムの一例を示す
図である。この全体プログラムは、図3に示す全体プロ
グラム中に含まれるハードウェア化プログラムA 13
3および131を、ハードウェア化プログラムAの処理
をハードウェアによって実行するルーチン161および
163と置き換え、図3に示す全体プログラム中に含ま
れるハードウェア化プログラムB 134および132
を、ハードウェア化プログラムBの処理をハードウェア
によって実行するルーチン162および164と置き換
えたものである。
【0046】図9に示す全体プログラムは、図8に示す
計算機1251によって実行される。最初に、main
関数中の処理Cが実行され、次に、161においてha
rd_func1 163が呼び出される。hard_
func1 163は、図3に示すハードウェア化プロ
グラム133および131の処理を、図8に示すハード
ウェアA 1253によって実行するためのルーチンで
あり、図8に示すハードウェアAを実行するルーチン1
20に対応する。
【0047】関数hard_func1 163内で
は、まず、165においてハードウェア化プログラムA
の処理に必要な変数の値がワークRAMに書き込まれ
る。ram_write関数はRAMの指定されたアド
レスにデータを書き込むプログラムである。ram_w
riteは2つの引数を取り、第一引数はRAMのアド
レスを示し、第二引数はRAMに書き込むデータを示
す。
【0048】次に、166においてハードウェアAに処
理を開始させる。run関数は、ハードウェアA 12
53またはハードウェアB 1254が処理を開始する
ように、開始信号1258または1260に指示を出す
プログラムである。run関数は、引数が0のときには
ハードウェアA用の開始信号1258に、引数が1のと
きにはハードウェアB用の開始信号1260に指示を出
す。finish関数は、ハードウェアA 1253ま
たはハードウェアB 1264が処理を終了して終了信
号1259または1261に終了信号を送ったか否かを
検出するプログラムである。finish関数は、引数
が0のときにはハードウェアA用の終了信号1259を
検出し、引数が1のときにはハードウェアB用の終了信
号1261を検出する。while(finish
(0)==0){}という記述は、ハードウェアA用の
終了信号1259が0の間、次に進むのを待つプログラ
ムである。終了信号が0のときにはハードウェアの処理
が終了していないことを表し、1のときには処理が終了
していることを表す。
【0049】次に、167において、ハードウェアの処
理結果を格納したワークRAMの内容を変数に読み込
む。ram_read関すはRAMの指定されたアドレ
スのデータを読み込むプログラムであり、その引数はR
AMのアドレスを示す。以上により、図3に示す全体プ
ログラム中のハードウェア化プログラム133および1
31の処理を、図8に示すハードウェアA 1253を
用いて実行することができる。
【0050】なお、ram_write関数、ram_
read関数、run関数、finish関数は、図8
に示す全体システム125において、計算機1251、
ワークRAM1252、開始信号1258および126
0、終了信号1259および1261がどのように構成
されるかに応じて作成することができる。例えば、ワー
クRAM、開始信号、終了信号等が計算機の通常のアド
レス空間に配置される場合には、そのアドレスに対して
データを読み書きするようにプログラムを作成する。ま
た、ワークRAM、開始信号、終了信号が計算機のI/
O空間に配置される場合には、I/O空間に対してデー
タを読み書きするようにプログラムを作成する。これら
のプログラムは、ワークRAM、開始信号および終了信
号の構成のみを考慮すればよく、ハードウェア化プログ
ラムがどのようなものであっても、同じプログラムを用
いることができる。
【0051】なお、Bach Cのような言語では、開
始信号、終了信号等のようなハードウェアを制御する信
号を生成することができるように拡張されているので、
開始信号、終了信号等が計算機のアドレス空間、I/O
空間等に配置されていない構成も可能である。
【0052】例えば、Bach Cではハードウェアが
外部との間でデータ転送を行うために、チャネルと称さ
れる機構が用意されており、チャネルを用いてハードウ
ェアにデータを入力することにより、ハードウェアはデ
ータが入力されてから次の処理を行うことが可能である
ため、run関数は、不要になる。また、ハードウェア
による処理結果を、チャネルを用いて外部に出力する場
合には、finish関数は不要になる。これに対し
て、RAMを用いてハードウェアと外部とのデータ転送
を行う場合には、データが転送されたか否かを判定する
ことができないため、run関数、finish関数等
が必要になる。
【0053】また、一般的には、データがハードウェア
に入力されて処理が行われ、処理結果がハードウェアか
ら出力されるが、ハードウェアがセンサーを有する場合
には、ハードウェアによって実行される部分手順で使用
されるデータをハードウェアに書き込むためのram_
write関数は不要になる。例えば、ハードウェアが
撮像素子を有しており、その撮像素子によって撮像され
た画像に対して処理を行う場合等には、外部からハード
ウェアデータにデータを入力する必要はない。また、画
像表示を行うことが可能なハードウェア、プリンターを
制御することが可能なハードウェアにおいては、外部か
らデータが入力されて処理が行われた後に、ハードウェ
アから外部に処理結果が出力されない場合もある。
【0054】さらに、ハードウェアが極めて高速に動作
する場合には、ハードウェアの処理が終了するまで待つ
ためのfinish関数は不要になる。
【0055】以上のようにして、図9に示すmain関
数中の161の処理が終了した後、処理Dが実行され、
次に、162においてhard_func2 164が
呼び出されて実行される。hard_func2 16
4は、図3に示すハードウェア化プログラム134およ
び132の処理を、図8に示すハードウェアB 125
4によって実行するためのルーチンであり、図8に示す
ハードウェアBを実行するルーチン121に対応する。
164によってハードウェア化プログラムBの処理が終
了した後、処理Eが実行され、図8に示す全体プログラ
ム124の処理が完了する。
【0056】このようにして、本実施形態によれば、C
言語もしくはFORTRAN等のプログラム言語、また
はそれらを拡張した言語によって記述されたプログラム
の一部をハードウェアによって実行し、残りの部分をソ
フトウェアによって実行するシステムを設計することが
できる。プログラムの全処理を計算機を用いてソフトウ
ェアによって実行する方法に比べて、一部の処理をハー
ドウェアによって実行する方法は、高速に処理を行うこ
とができ、処理を短時間で終了させることができる。な
お、同じ処理をソフトウェアによる処理からハードウェ
アによる処理に変換すると、高速化を達成することがで
きるが、専用の回路が多くなり、チップサイズの縮小、
低消費電力化という要求に答えることが困難になるた
め、これらの兼ね合いを考慮して、ソフトウェア/ハー
ドウェアの振り分けを行うのが好ましい。
【0057】
【発明の効果】以上詳述したように、本発明によれば、
C言語、またはそれを拡張した言語等、計算機で実行可
能なプログラム言語を用いてシステム全体が記述される
ので、特別な変換作業等を行うことなく、システム全体
の検証を行うことができ、問題が見つかった場合にも修
正が容易である。
【0058】また、システム全体の情報処理手順のう
ち、ハードウェアによって実行される部分の記述が変更
されるだけであり、ソフトウェアによって実行される部
分の計算機プログラムを容易に得ることができる。ま
た、得られるソフトウェア化部分を実行するための計算
機プログラムは、設計者が容易に理解することができ、
問題が見つかった場合にも容易に修正を行うことができ
る。また、ソフトウェアおよびハードウェアの振り分け
は、設計者が予め定めておくことにより、容易にハード
ウェアを作成することができる。
【0059】さらに、システム全体の記述と、ソフトウ
ェア化部分を実行するための計算機プログラムと、ハー
ドウェア化部分を生成するための記述の全てを、同一の
計算機で実行可能なプログラム言語のみを用いて記述す
ることができるので、設計者は1種類の計算機で実行可
能なプログラム言語のみを習得すればよく、使い慣れた
言語を用いて設計を行うことができるため、設計効率が
向上する。
【0060】また、システム全体の情報処理手順のう
ち、ハードウェアによって実行される部分手順にインタ
ーフェイス記述を付け加えることによって、ハードウェ
ア化したい部分手順を実行するハードウェアと、ソフト
ウェア化したい部分手順を実行する計算機との間で、デ
ータの受け渡しを行うことができる。
【0061】さらに、ハードウェアの動作制御記述に、
ハードウェアによって実行される部分手順で使用される
データをハードウェアに書き込む手順と、ハードウェア
に処理開始信号を送る手順と、ハードウェアの処理終了
まで待つ手順と、ハードウェアによって部分手順を実行
した結果を読み込む手順と、のうち、少なくとも1つの
手順を含めることにより、ソフトウェア化したい部分手
順を実行する計算機と、ハードウェア化したい部分手順
を実行するハードウェアとの間で、データの受け渡しを
行うことができる。また、ハードウェアの動作制御記述
を、元のプログラム記述のハードウェア化したい部分の
記述と入れ換えることにより、計算機でプログラムを実
行するだけで、自動的にハードウェア化したい部分の記
述の処理をハードウェアによって高速に実行することが
できる。
【図面の簡単な説明】
【図1】プログラム言語を用いたアルゴリズム記述から
ハードウェアを設計するハードウェア設計方法について
説明するためのフローチャートである。
【図2】本発明の一実施形態であるソフトウェア/ハー
ドウェア協調設計方法について説明するためのフローチ
ャートである。
【図3】全体プログラムの一例である。
【図4】ハードウェア化プログラムの処理を実行するハ
ードウェアの作成方法について説明するための模式図で
ある。
【図5】単独で動作させるためにインターフェイスルー
チンを付加したハードウェア化プログラムの一例であ
る。
【図6】図5に示すハードウェア化プログラムと同一の
処理を行うハードウェアの構成例を示す図である。
【図7】単独で動作させるためにインターフェイスルー
チンを付加したハードウェア化プログラムの他の例であ
る。
【図8】全体プログラムの一部をハードウェアによって
実行し、残りの部分をソフトウェアによって実行するシ
ステムの構成および作成方法について説明するための模
式図である。
【図9】全体プログラムの一部をハードウェアによって
実行するためのハードウェア制御プログラムを付加した
全体プログラムの一例である。
【符号の説明】
111 全体プログラム 112 ハードウェア化プログラムA 113 ハードウェア化プログラムB 114、115 インターフェイスルーチン 116 合成ツール 117 ハードウェアA 118 ハードウェアB 120 ハードウェアAを実行するルーチン 121 ハードウェアBを実行するルーチン 122 ハードウェア化プログラムAを取り出した箇所 123 ハードウェア化プログラムBを取り出した箇所 124 新たな全体プログラム 125 一部の処理をハードウェアによって実行し、残
りの処理をソフトウェアによって実行するシステム 171 ハードウェアA 173 終了信号 174 開始信号 1251 計算機 1252 ワークRAM 1253 ハードウェアA 1254 ハードウェアB 1255、1256、1257 バス 1258、1260 開始信号 1259、1261 終了信号

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 一連の情報処理手順のうち、一部分の手
    順をハードウェアによって実行し、残りの部分の手順を
    計算機を用いてソフトウェアによって実行する情報処理
    システムを設計する、ソフトウェア/ハードウェア協調
    設計方法であって、 計算機で実行可能なプログラム言語により記述された一
    連の情報処理手順から、ハードウェアによって実行され
    る部分手順を取り出して、該部分手順を実行するハード
    ウェアの記述を作成するステップと、 該計算機で実行可能なプログラム言語を用いて、該ハー
    ドウェアの動作を制御する記述を生成するステップと、 該計算機で実行可能なプログラム言語により記述された
    一連の情報処理手順のうち、ハードウェアによって実行
    される部分手順を、該ハードウェアの動作を制御する記
    述に置き換えるステップとを含むソフトウェア/ハード
    ウェア協調設計方法。
  2. 【請求項2】 前記ハードウェアの記述を作成するステ
    ップにおいて、 前記計算機で実行可能なプログラム言語により記述され
    た一連の情報処理手順のうち、ハードウェアによって実
    行される部分手順に対して、該部分手順で使用されるデ
    ータを外部から読み込む手順と、該部分手順を実行した
    結果を外部に書き込む手順とを付加して、それらの手順
    が付加された部分手順を実行するハードウェアの記述を
    作成する請求項1に記載のソフトウェア/ハードウェア
    協調設計方法。
  3. 【請求項3】 前記ハードウェアの動作を制御する記述
    を作成するステップにおいて、 該ハードウェアによって実行される部分手順で使用され
    るデータを該ハードウェアに書き込む手順と、該ハード
    ウェアに処理を開始する信号を送る手順と、該ハードウ
    ェアの処理が終了するまで待つ手順と、該ハードウェア
    によって該部分手順を実行した結果を読み込む手順と、
    のうち、少なくとも1つの手順を含むハードウェアの動
    作制御記述を作成する請求項1に記載のソフトウェア/
    ハードウェア協調設計方法。
JP2001308561A 2001-10-04 2001-10-04 ソフトウェア/ハードウェア協調設計方法 Pending JP2003114914A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001308561A JP2003114914A (ja) 2001-10-04 2001-10-04 ソフトウェア/ハードウェア協調設計方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001308561A JP2003114914A (ja) 2001-10-04 2001-10-04 ソフトウェア/ハードウェア協調設計方法

Publications (1)

Publication Number Publication Date
JP2003114914A true JP2003114914A (ja) 2003-04-18

Family

ID=19127851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001308561A Pending JP2003114914A (ja) 2001-10-04 2001-10-04 ソフトウェア/ハードウェア協調設計方法

Country Status (1)

Country Link
JP (1) JP2003114914A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007310449A (ja) * 2006-05-16 2007-11-29 Fujitsu Ltd ソフトウェア/ハードウェア協調設計のためのモデル生成プログラム、およびモデル生成方法
JP2008204341A (ja) * 2007-02-22 2008-09-04 Nec Corp インタフェース合成装置
JP2009524138A (ja) * 2006-01-20 2009-06-25 メンター グラフィックス コーポレイション モデル化およびシミュレーション方法
JP2012509537A (ja) * 2008-11-21 2012-04-19 コリア ユニバーシティ インダストリアル アンド アカデミック コラボレイション ファウンデーション 高水準言語コードをhdlコードに変換する方法及びシステム
WO2017056427A1 (ja) * 2015-09-30 2017-04-06 日本電気株式会社 プログラム書換装置、方法および記憶媒体
JP7465895B2 (ja) 2019-05-23 2024-04-11 ザイリンクス インコーポレイテッド ヘテロジニアスプログラマブルデバイスのための高位合成を有するハードウェアソフトウェア設計フロー

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009524138A (ja) * 2006-01-20 2009-06-25 メンター グラフィックス コーポレイション モデル化およびシミュレーション方法
CN102156774A (zh) * 2006-01-20 2011-08-17 明导公司 建模和仿真方法
JP2007310449A (ja) * 2006-05-16 2007-11-29 Fujitsu Ltd ソフトウェア/ハードウェア協調設計のためのモデル生成プログラム、およびモデル生成方法
JP2008204341A (ja) * 2007-02-22 2008-09-04 Nec Corp インタフェース合成装置
JP2012509537A (ja) * 2008-11-21 2012-04-19 コリア ユニバーシティ インダストリアル アンド アカデミック コラボレイション ファウンデーション 高水準言語コードをhdlコードに変換する方法及びシステム
WO2017056427A1 (ja) * 2015-09-30 2017-04-06 日本電気株式会社 プログラム書換装置、方法および記憶媒体
JP7465895B2 (ja) 2019-05-23 2024-04-11 ザイリンクス インコーポレイテッド ヘテロジニアスプログラマブルデバイスのための高位合成を有するハードウェアソフトウェア設計フロー

Similar Documents

Publication Publication Date Title
US6021266A (en) Method of designing an integrated circuit using scheduling and allocation with parallelism and handshaking communication, and an integrated circuit designed by such method
JP4492803B2 (ja) 動作合成装置及びプログラム
JPH11513512A (ja) ディジタル信号プロセッサの製造方法
JP3852741B2 (ja) 高位合成方法および高位合成装置
US20020188923A1 (en) High-level synthesis apparatus, high-level synthesis method, method for producing logic circuit using the high-level synthesis method, and recording medium
GB2385691A (en) Designing a System LSI
US20070271080A1 (en) Model generation method for software/hardware collaboration design
JP2003114914A (ja) ソフトウェア/ハードウェア協調設計方法
JP2004259143A (ja) プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
US9454627B1 (en) Systems and methods for optimizing executable models for hardware synthesis
US7200703B2 (en) Configurable components for embedded system design
JP2001060210A (ja) Lsi検証方法、lsi検証装置および記録媒体
JP2008204341A (ja) インタフェース合成装置
US7113901B1 (en) Reuse of hardware components
JP2001109784A (ja) 配置配線最適化方法、および装置、ならびに配置配線の最適化に関するプログラムを記録した記録媒体
Avnit et al. Provably correct on-chip communication: A formal approach to automatic protocol converter synthesis
Koch et al. Modeling and synthesis of hardware-software morphing
JP2001043251A (ja) 高位合成装置および高位合成方法並びにそれに用いられる記録媒体
JP5229716B2 (ja) 動作合成システム、動作合成方法および動作合成用プログラム
JP2006155533A (ja) 回路情報生成装置および回路情報生成方法
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
JP3825328B2 (ja) プロセッサ合成装置、システムlsi合成装置、プロセッサ合成方法、システムlsi合成方法、及び記録媒体
JP2551935B2 (ja) 図的言語処理方式
JP2019016168A (ja) シミュレーションプログラム、方法、及び装置
JPH11102381A (ja) アーキテクチャ動作合成装置、アーキテクチャ動作合成方法、プロセッサの設計方法およびプロセッサのアーキテクチャ動作記述方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070502

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071001