(57)【要約】【課題】制約なしのソフトウェア言語による記述内容をそのままハードウェア設計言語の記述内容に自動的に変換する。【解決手段】ソフトウェア言語による記述内容の各処理ステップに対してその実行順に従って一連の処理番号を割り振り（Ｓ１１）、ソフトウェア言語による記述内容に含まれる各変数について、その変数が記憶領域を使用する期間を前記処理番号に対応して抽出し（Ｓ１２）、この抽出した結果に基づいて、使用期間が重複しない複数の変数を同じ記憶領域に割り当て（Ｓ１３）、この割り当ての結果に基づいて、各記憶領域をレジスタに対応づけて、１つのレジスタを複数の変数がシェアするハードウェア設計言語の記述内容を生成する（Ｓ１４）。変数のデータサイズが異なる場合、記憶領域のデータサイズに合わせて各変数のデータサイズが均一になるように変数の分割および／または結合を行うことが好ましい。【選択図】  図１
2004227370.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置においてソフトウェア言語による記述内容をハードウェア設計言語による記述内容に変換するソフトウェア・ハードウェア変換方法であって、ソフトウェア言語による記述内容の各処理ステップに対してその実行順に従って一連の処理番号を割り振るステップと、
前記ソフトウェア言語による記述内容に含まれる各変数について、その変数が記憶領域を使用する期間を前記処理番号に対応して抽出するステップと、
この抽出した結果に基づいて、使用期間が重複しない複数の変数を同じ記憶領域に割り当てるステップと、
この割り当ての結果に基づいて、各記憶領域をレジスタに対応づけて、１つのレジスタを複数の変数がシェアするハードウェア設計言語の記述内容を生成するステップと、
を備えたことを特徴とするソフトウェア・ハードウェア変換方法。
【請求項２】
前記変数が記憶領域を使用する期間は、その変数に値が代入されてから読み出されるまでの期間（但し、値の代入後、読み出しが複数回続く場合は最後に読み出しが行われるまでの期間）である請求項１記載のソフトウェア・ハードウェア変換方法。
【請求項３】
前記抽出するステップは、前記各変数のデータサイズが均一になるように変数の分割および／または結合を行うステップを含むことを特徴とする請求項１記載のソフトウェア・ハードウェア変換方法。
【請求項４】
前記抽出するステップは、処理番号に対応して各変数の使用期間を抽出したタイミング・マトリックスを生成するステップを含むことを特徴とする請求項１または３記載のソフトウェア・ハードウェア変換方法。
【請求項５】
データ処理装置においてソフトウェア言語による記述内容をハードウェア設計言語による記述内容に変換するソフトウェア・ハードウェア変換プログラムであって、
ソフトウェア言語による記述内容の各処理ステップに対してその実行順に従って一連の処理番号を割り振るステップと、
前記ソフトウェア言語による記述内容に含まれる各変数について、その変数が記憶領域を使用する期間を前記処理番号に対応して抽出するステップと、
この抽出した結果に基づいて、使用期間が重複しない複数の変数を同じ記憶領域に割り当てるステップと、
この割り当ての結果に基づいて、各記憶領域をレジスタに対応づけて、１つのレジスタを複数の変数がシェアするハードウェア設計言語の記述内容を生成するステップと、
を備えたことを特徴とするソフトウェア・ハードウェア変換プログラム。
【請求項６】
前記変数が記憶領域を使用する期間は、その変数に値が代入されてから読み出されるまでの期間（但し、値の代入後、読み出しが複数回続く場合は最後に読み出しが行われるまでの期間）である請求項５記載のソフトウェア・ハードウェア変換プログラム。
【請求項７】
前記抽出するステップは、前記各変数のデータサイズが均一になるように変数の分割および／または結合を行うステップを含むことを特徴とする請求項１記載のソフトウェア・ハードウェア変換プログラム。
【請求項８】
前記抽出するステップは、処理番号に対応して各変数の使用期間を抽出したタイミング・マトリックスを生成するステップを含むことを特徴とする請求項５または７記載のソフトウェア・ハードウェア変換プログラム。
【請求項９】
ソフトウェア言語による記述内容をハードウェア設計言語による記述内容に変換するソフトウェア・ハードウェア変換装置であって、
ソフトウェア言語による記述内容を入力する入力手段と、
このソフトウェア言語による記述内容の各処理ステップに対してその実行順に従って一連の処理番号を割り振り、前記ソフトウェア言語による記述内容に含まれる各変数について、その変数が記憶領域を使用する期間を前記処理番号に対応して抽出し、この抽出した結果に基づいて、使用期間が重複しない複数の変数を同じ記憶領域に割り当て、この割り当ての結果に基づいて、各記憶領域をレジスタに対応づけて、１つのレジスタを複数の変数がシェアするハードウェア設計言語の記述内容を生成する処理手段と、
このハードウェア設計言語の記述内容を出力する出力手段と、
を備えたことを特徴とするソフトウェア・ハードウェア変換装置。
【請求項１０】
前記処理手段は、処理番号に対応して各変数の使用期間を抽出したタイミング・マトリックスを生成し、このタイミング・マトリックスに基づいて前記記憶領域の割り当てを行うことを特徴とする請求項９記載のソフトウェア・ハードウェア変換装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｃ言語等のソフトウェア言語で設計された機能を自動的にハードウェアに変換する方法および装置に関し、特に小規模な回路で実現する為の変換方法および装置に関するものである。
【０００２】
【従来の技術】
電子回路や半導体集積回路等のシステムの設計において、一般に、ソフトウェアで実現される部分とハードウェアで実現される部分とが存在する（特許文献１参照）。
【０００３】
従来、システムを設計する際、システム全体をＣ言語等のソフトウェア言語で設計・検証し、ハードウェア化したい部分のソフトウェア言語ソースコードを見ながらハードウェア設計言語で再設計する手法が多くとられていた。ハードウェア設計言語は、その記述に基づいてハードウェア回路を構成することができる言語である。このようなハードウェア設計言語として、例えばｖｅｒｉｌｏｇ言語のような言語がある。
【０００４】
ソフトウェア言語による記述をハードウェア設計言語の記述に自動変換する手法としては、Ｃ言語で書かれた記述を、変換プログラムでハードウェア設計言語の記述に自動変換する手法が知られている。
【０００５】
【特許文献１】
特開２００２−１５７２９１号公報
【０００６】
【発明が解決しようとする課題】
しかし、従来の自動変換手法では、システムの記述を制約付きのＣ言語で行う必要があり、結局、設計者は設計時からハード・ソフトの違いを意識する必要があった。その為、これらの方法はＣ言語等によるシステム設計前後において、設計者に大きな負担をかけていた。
【０００７】
本発明はこのような背景においてなされたものであり、その目的は、制約なしのソフトウェア言語による記述内容をそのままハードウェア設計言語の記述内容に自動的に変換することを可能とするソフトウェア・ハードウェア変換方法および装置ならびにソフトウェア・ハードウェア変換プログラムを提供することにある。
【０００８】
本発明による他の目的は、変換後のハードウェア設計言語に対応するハードウェア回路を、ハードウェア設計者が通常の方法で設計するよりも小規模に実現できるソフトウェア・ハードウェア変換方法および装置ならびにソフトウェア・ハードウェア変換プログラムを提供することにある。
【０００９】
【課題を解決するための手段】
本発明によるソフトウェア・ハードウェア変換方法およびプログラムは、データ処理装置においてソフトウェア言語による記述内容をハードウェア設計言語による記述内容に変換するソフトウェア・ハードウェア変換方法およびプログラムであって、ソフトウェア言語による記述内容の各処理ステップに対してその実行順に従って一連の処理番号を割り振るステップと、前記ソフトウェア言語による記述内容に含まれる各変数について、その変数が記憶領域を使用する期間を前記処理番号に対応して抽出するステップと、この抽出した結果に基づいて、使用期間が重複しない複数の変数を同じ記憶領域に割り当てるステップと、この割り当ての結果に基づいて、各記憶領域をレジスタに対応づけて、１つのレジスタを複数の変数がシェアするハードウェア設計言語の記述内容を生成するステップとを備えたことを特徴とする。
【００１０】
本発明では、ソフトウェア言語による記述内容の各処理ステップに対して処理番号を割り振ることによって、実行される処理を時系列に把握する。すなわち、この時系列において各変数が記憶領域を使用する期間を前記処理番号に対応して抽出することができる。さらに、これによって複数の変数同士の間の使用期間が重複の有無をチェックすることができ、そのような重複のない複数の変数を見いだして同じ記憶領域に割り当てることができる。その結果、各記憶領域をレジスタに対応づけて、１つのレジスタを複数の変数がシェアするハードウェア設計言語の記述内容を生成することができる。
【００１１】
前記抽出するステップは、前記各変数のデータサイズが均一になるように変数の分割および／または結合を行うステップを含むことが望ましい。これにより、レジスタの長さを固定長としつつ、異なる変数のデータサイズに対応する。
【００１２】
前記抽出するステップは、処理番号に対応して各変数の使用期間を抽出したタイミング・マトリックスを生成するステップを含んでもよい。このタイミング・マトリックスの使用により、抽出処理を迅速かつ容易に行うことが可能となる。
【００１３】
本発明によるソフトウェア・ハードウェア変換装置は、ソフトウェア言語による記述内容をハードウェア設計言語による記述内容に変換するソフトウェア・ハードウェア変換装置であって、ソフトウェア言語による記述内容を入力する入力手段と、このソフトウェア言語による記述内容の各処理ステップに対してその実行順に従って一連の処理番号を割り振り、前記ソフトウェア言語による記述内容に含まれる各変数について、その変数が記憶領域を使用する期間を前記処理番号に対応して抽出し、この抽出した結果に基づいて、使用期間が重複しない複数の変数を同じ記憶領域に割り当て、この割り当ての結果に基づいて、各記憶領域をレジスタに対応づけて、１つのレジスタを複数の変数がシェアするハードウェア設計言語の記述内容を生成する処理手段と、このハードウェア設計言語の記述内容を出力する出力手段とを備えたことを特徴とする。
【００１４】
この装置において、入力手段は、ソフトウェア言語による記述内容を入力する。処理手段は、この入力されたソフトウェア言語による記述内容の各処理ステップに対してその実行順に従って一連の処理番号を割り振り、前記ソフトウェア言語による記述内容に含まれる各変数について、その変数が記憶領域を使用する期間を前記処理番号に対応して抽出し、この抽出した結果に基づいて、使用期間が重複しない複数の変数を同じ記憶領域に割り当て、この割り当ての結果に基づいて、各記憶領域をレジスタに対応づけて、１つのレジスタを複数の変数がシェアするハードウェア設計言語の記述内容を生成する。出力手段は、このハードウェア設計言語の記述内容を出力する。
【００１５】
前記処理手段は、好ましくは、処理番号に対応して各変数の使用期間を抽出したタイミング・マトリックスを生成し、このタイミング・マトリックスに基づいて前記記憶領域の割り当てを行う。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１７】
まず、図１により、本実施の形態における変換方法の概略の処理手順を説明する。
【００１８】
この変換方法は、後述するデータ処理装置により実行される処理であり、ハードウェア化するモジュールの各処理に処理番号を割り振るステップ（Ｓ１１）、ハードウェア化するモジュール内の全ての変数に対して値が書き込まれてから読み出されるまでのタイミング・マトリックスを生成するステップ（Ｓ１２）、このタイミング・マトリックスで使用されていない時間の記憶領域をシェア（分担使用）するように記憶領域の割り当ての最適化を行うステップ（Ｓ１３）、ならびに、前記タイミング・マトリックスおよびＣソースコードに基づいて、ハードウェア設計言語（ｖｅｒｉｌｏｇ言語）のソースコードを生成するステップ（Ｓ１４）からなる。
【００１９】
変換後のハードウェア回路は、処理の起因を全てステップＳ１１で作成した処理番号に従って行う。即ち、回路内部にカウンタを持ち、そのカウンタ値に従って全ての処理を実行する。これにより、ハードウェア特有のシグナルのやり取りがなくなり、ハードウェア化する際に新たな信号を追加する必要がなくなる。即ち、制約なしのＣ言語等のソフトウェア言語からハードウェア設計言語への自動変換を行うことが可能となる。
【００２０】
従来は１つの変数に対して１つの記憶領域（レジスタ）を割り当ててハードウェア設計を行っていたのに対して、本設計手法はステップＳ１３およびＳ１４で、１つの記憶領域（レジスタ）を複数の変数でシェアするように記憶領域の割り当ての最適化を行う為、通常のハードウェア設計手法による場合に比べて小規模な回路で実現できる。さらに回路の小規模化は低消費電力化に有効である。
【００２１】
図２は、本実施の形態における、データ処理装置により構成されるソフトウェア・ハードウェア変換装置の概略構成を示すブロック図である。
【００２２】
この装置は、装置全体を制御するプロセッサ（ＣＰＵ）１０、ＲＯＭ，ＲＡＭ等のメモリを含む内部記憶装置１２、有線または無線インタフェースを介して外部のネットワーク等と接続される通信部１４、キーボード等の入力装置１５、ディスプレイ装置等の表示装置１６、ハードディスク装置等の外部記憶装置１７、および、印刷装置１８を有する。メモリ１２内のＲＯＭまたは外部記憶装置１７には、本装置の制御プログラムが格納される。変換対象のソフトウェア言語ソースコード１２１は、例えば外部記憶装置１７に保存されており、変換処理時に、内部記憶装置１２に読み込まれてハードウェア設計言語ソースコード１２３に変換される。このハードウェア設計言語ソースコード１２３は外部記憶装置１７に保存される。ソフトウェア言語ソースコード１２１やハードウェア設計言語ソースコード１２３は、表示装置１６に表示したり、印刷装置１８によりプリントアウトしたり、さらには通信部１４を介して外部装置との間で送受信したりすることができる。本発明における処理手段はＣＰＵ１０および上記制御プログラムにより構成される。本発明における入力手段は、通信部１４、入力装置１５、外部記憶装置１７等により構成されうる。本発明による出力手段は、通信部１４、表示装置１６、印刷装置１８等により構成されうる。
【００２３】
以下に、ＫＡＳＵＭＩという暗号処理プログラムのＣソースコードを例にとり、本実施の形態の動作を説明する。ただし、説明の単純化の為、処理番号の割り当てに関しては処理番号１から処理番号５２まで、タイミング・マトリックスの生成およびハードウェア設計言語のソースコード生成に関しては処理番号１から処理番号２４までのみについて示すものとする。また、グローバル変数に関しては、ハードウェアから見えているものとする。
【００２４】
図３は、変換対象のプログラムである暗号処理プログラムの定義情報１０１を記述した部分を示し、図４〜図８はこのプログラムの本体部分２０１〜２０５を示している。本体部分２０１はメイン処理部分を示す。本体部分２０２および２０３は、メイン処理部分から呼び出される関数ＦＬおよびＦＯを示している。本体部分２０４，２０５は、本体部分２０３の関数ＦＯから呼び出される関数ＦＩを示している。本体部分２０１〜２０５の左端の欄は、処理番号を入力する番号欄である。後述するように、番号欄は、同一処理の繰り返しに対応して、複数欄設けられる場合（２０４，２０５参照）がありうる。この暗号処理プログラムは、基本的には暗号処理対象の入力データに対して、種々のデータ処理操作を行って暗号化されたデータを得るものである。このプログラムの個々の処理ステップの具体的な意味については、本発明に直接的に関係しないので、詳述はしない。以下、図示のプログラムサンプルを例にして、本実施の形態の各処理ステップを説明する。
【００２５】
（ａ）処理番号の割り当て（Ｓ１１）
システム設計されたＣソースコードの一部をハードウェア化する場合、まず、図４〜図８に示すように、ソースコードの各処理ステップに対して、一連の処理番号を割り振ってゆく。実行対象の関数が、処理の階層をまたがって移行する場合は、実際にソフトウェアが処理する時と同様の順番にて下階層の処理ステップに番号を割り振ってゆく。この際、各処理ステップの番号はその実行終了時点を基準にして割り当てられる。例えば、図４の本体部分２０１の処理番号４の処理ステップの後、関数ＦＬの呼び出しを行う処理ステップが存在するが、この処理ステップの処理番号は１２であり、下層の関数ＦＬを記述した本体部分２０２の処理（処理番号５〜１１）に続く番号となっている。
【００２６】
また、同じ関数が２回以上呼び出される場合は、同処理ステップに対して重複して番号を割り振る。例えば図８の本体部分２０５は、図６の本体部分２０３の異なる処理ステップ（処理番号２５，３７，４９）から繰り返して呼び出されているため、同じ処理ステップに対して、３つの異なる処理番号が割り振られている。
【００２７】
このような作業を、ハードウェア化する最上位階層の関数の最終処理ステップまで繰り返して実行する。
【００２８】
（ｂ）タイミング・マトリックスの生成（Ｓ１２）
ハードウェア化する関数について、図９に示すように、使用される全ての変数に対して、変数値が書き込まれる処理番号、および、変数値が読み出される処理番号を記録したタイミング・マトリックス３０１を生成する。図中、“Ｗ”はそのタイミングで当該変数に値の代入（ライト）を行っていることを示し、“Ｒ”はそのタイミングで当該変数から値の読み出し（リード）を行っていることを示す。この処理の際、各変数がデータを保持する期間、即ちその変数に値が代入されてから値が読み出されるまでの期間をタイミング・マトリックス３０１に記録する（図では便宜上ハッチングで示してある）。但し、代入後、複数回の読み出しが続く場合は、最後の読み出しまで、その代入されたデータを保持する必要がある。
【００２９】
（ｃ）記憶領域のシェア（Ｓ１３）
変数によってデータサイズ（ビット幅）が異なる為、図１０に示すように、使用する記憶領域（レジスタ）のサイズ（この例では１６ビット）に合わせて各変数のデータサイズが均一になるように変数の分割および／または結合を行うことにより、タイミング・マトリックス３０２を再生成する。図の例では、メイン処理部分（ＫＡＳＵＭＩ）２０１の６４ビットの変数ｄａｔａは４つの１６ビット変数ｄａｔａ１〜ｄａｔａ４に分割されている。同様に、３２ビット変数ｌｅｆｔ、ｒｉｇｈｔ、ｔｅｍｐはそれぞれ２つの１６ビット変数に分割されている。関数ＦＯ／ＦＩの８ビット変数ｎｉｎｅと６ビット変数ｓｅｖｅｎ（図９参照）とは、１６ビット変数ｎ／ｓに結合されている。
【００３０】
次に、図１０のタイミング・マトリックス３０２に基づいて、各々１６ビットの複数の記憶領域（ｓｈａｒｅ１〜ｓｈａｒｅ６）に対して、図１１のマッピングテーブル４０１に示すように、同じ処理番号に対して異なる変数が同時に割り当てられることのないように、かつ、できるだけ効率良く記憶領域をシェアできるように、各記憶領域を処理番号にマッピングする。図１１では、各記憶領域が処理ステップに割り当てられた部分をハッチングにより示している。
【００３１】
ここで、このようなマッピングを行う処理手順の一例を示す。
【００３２】
まず、図１０における複数の変数について、記憶領域を使用しているステップ数（処理番号の個数）が多い順に並べ替える（ソートする）。この例では、次のようになる。
１）ｒｉｇｈｔ１
２）ｒｉｇｈｔ２
３）ｎ
４）ＦＯ＿ｒｉｇｈｔ
５）ｎ／ｓ
６）ＦＬ＿ｌ
：
：
【００３３】
次に、この並べ替えた順番に（使用しているステップ数が多い順に）２つの変数がお互いに記憶領域をシェアできるかどうかをチェックする。これは、同一処理番号が使用されているか否かによって判断することができる。使用しているステップ数が少ない変数のチェックを後回しにするのは、使用しているステップ数が少ない変数の方が後の方で判断してもシェアできる可能性が高いという理由からである。具体的には次のとおりである。”←→”は対比処理を示している。←→の両側の数字は、上記並べ替え後の変数の順位を示している。
１←→２（シェア不能）
１←→３（シェア不能）
１←→４（シェア不能）
：
１←→１１（シェア可能：１番目の変数と１１番目の変数とで同じ記憶領域をシェア）
：
１←→２１（シェア不能）
２←→３（シェア不能）
２←→４（シェア不能）
：
２←→１０（シェア不能）（１１はシェア済みなので２←→１１は省略）
２←→１２（シェア不能）
：
３←→４（シェア不能）
：
【００３４】
このようなチェックが終了したら、シェアできる変数同士をまとめて、記憶領域（ｓｈａｒｅ１，２，３，…）を割り当てていく。この例では、次のとおりである。
ｓｈａｒｅ１：ｄａｔａ１、ｌｅｆｔ１、ＦＬ＿ｉｎ１、ｔｅｍｐ１、ＦＯ＿ｌｅｆｔ
ｓｈａｒｅ２：ｄａｔａ２、ｌｅｆｔ２、ＦＬ＿ｒ、ＦＬ＿ｉｎ２、ｔｅｍｐ２、ＦＯ＿ｒｉｇｈｔ
ｓｈａｒｅ３：ｒｉｇｈｔ１、ｄａｔａ３
ｓｈａｒｅ４：ｒｉｇｈｔ２、ｄａｔａ４
：
：
【００３５】
以上の処理手順により、自動的に、効率よく記憶領域をシェアすることができる。
【００３６】
（ｄ）ハードウェア設計言語のソースコード生成（Ｓ１４）
ｓｈａｒｅ１記憶領域をシェアする前の各変数に関する処理をハードウェア設計言語で表すと、それぞれ図１２、図１３、図１４、図１５、図１６、図１７のようになる。これらはいずれも、特定の条件（例えば、カウンタ値ｃｎｔが所定の１６進数の値に一致すること）が満たされたとき、レジスタ（Ｄフリップフロップ）の入力端子に印加されている入力データを出力端子に出力する、というハードウェア構成を示している。なお、本実施の形態におけるハードウェアは、各構成要素がクロックに同期して動作する（例えば、Ｄフリップフロップのクロック入力端子にクロックを入力する）完全同期設計を想定している。
【００３７】
図１２〜図１７に示したｓｈａｒｅ１記憶領域に関連するハードウェア設計言語による記述をまとめると、図１８に示すようになる。さらに、この図１８の記述に対して、図１１に示したマッピングテーブル４０１を参照して、ｓｈａｒｅ１記憶領域の記述に現れる変数を実際のレジスタ名（ｓｈａｒｅ１〜ｓｈａｒｅ６）に置き換えて表すと図１９のようになる。また更に、図１９の重複しているファンクションを纏めると図２０のようになる。このようにして、ハードウェア設計言語のソースコードを生成する。
【００３８】
参考のために、図２０のハードウェア設計言語による記述に対応する実際のハードウェア回路を図２１に示す。図中、セレクタ３１はｓｈａｒｅ５の値２５に応じてセレクタ３１の複数入力から１入力を選択して出力信号２６に出力する。この出力信号２６は排他的論理和ゲート３３の一方の入力端に入力される。排他的論理和ゲート３３の他方の入力端には後述するレジスタ出力４６の出力が入力される。もう一つの排他的論理和ゲート３４の一方の入力端にはｓｈａｒｅ６の所定のビット値２７が入力され、他方の入力端にはレジスタ出力４６が入力される。セレクタ３６は、カウンタ値ｃｎｔ２１に応じて、入力値ｉｎｐｕｔ２３、ゲート３３の出力、ゲート３４の出力、およびレジスタ出力４６のいずれかを選択出力する。このセレクタ３６の出力３７は、クロック２８に同期して、１６個のフリップフロップ４１〜４４に取り込まれ、レジスタ出力４６となる。他の記憶領域についても同様である。
【００３９】
記憶領域ｓｈａｒｅ１に対応するレジスタを構成するフリップフロップ４１〜４４は、種々の変数データが入力されるが、図１１に示したマッピングテーブル４０１から分かるように、それらの変数の利用期間が排他的に調整されているので、変数間の干渉は起こらない。
【００４０】
以上説明したような一義的な変換ルールによって、Ｃソースコードのソフトウェアの記述を、回路規模および消費電力の面において効率的なハードウェア設計言語の記述（ｖｅｒｉｌｏｇソースコード等）に変換することが可能となる。
【００４１】
以上、本発明の好適な実施の形態について説明したが、上記で言及した以外にも、種々の変形、変更が可能である。
【００４２】
【発明の効果】
本発明によれば、新たなシグナルを追加する必要なく、ソフトウェア言語で設計された機能を、そのままハードウェア設計言語の記述に変換することが可能となった。
【００４３】
また、同じレジスタをシェアすることにより、通常にハードウェアを設計する場合よりも、レジスタ数が大幅に減少する。その結果、ハードウェアの回路規模を低減することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態における変換方法の概略の処理手順を示すフローチャートである。
【図２】本発明の実施の形態における、データ処理装置により構成されるソフトウェア・ハードウェア変換装置の概略構成を示すブロック図である。
【図３】本発明の実施の形態における変換対象のサンプルプログラムの定義情報を記述した部分を示す図である。
【図４】図３のサンプルプログラムの第１の本体部分を示す図である。
【図５】図４に続くサンプルプログラムの本体部分を示す図である。
【図６】図５に続くサンプルプログラムの本体部分を示す図である。
【図７】図６に続くサンプルプログラムの本体部分を示す図である。
【図８】図７に続くサンプルプログラムの本体部分を示す図である。
【図９】本発明の実施の形態における、記憶領域を使用している期間を変数毎に示したタイミング・マトリックスを示す図である。
【図１０】図９のタイミング・マトリックスに関して、データサイズが均一になるように、各変数を分割および／または結合したタイミング・マトリックスを示す図である。
【図１１】図１０のタイミング・マトリックスに基づいて生成されたマッピングテーブルを示す図である。
【図１２】実施の形態のサンプルプログラムの第１の変数を通常にハードウェア変換した場合のハードウェア設計言語（ｖｅｒｉｌｏｇ言語）の記述例を示す図である。
【図１３】実施の形態のサンプルプログラムの第２の変数を通常にハードウェア変換した場合のハードウェア設計言語（ｖｅｒｉｌｏｇ言語）の記述例を示す図である。
【図１４】実施の形態のサンプルプログラムの第３の変数を通常にハードウェア変換した場合のハードウェア設計言語（ｖｅｒｉｌｏｇ言語）の記述例を示す図である。
【図１５】実施の形態のサンプルプログラムの第４の変数を通常にハードウェア変換した場合のハードウェア設計言語（ｖｅｒｉｌｏｇ言語）の記述例を示す図である。
【図１６】実施の形態のサンプルプログラムの第５の変数を通常にハードウェア変換した場合のハードウェア設計言語（ｖｅｒｉｌｏｇ言語）の記述例を示す図である。
【図１７】実施の形態のサンプルプログラムの第６の変数を通常にハードウェア変換した場合のハードウェア設計言語（ｖｅｒｉｌｏｇ言語）の記述例を示す図である。
【図１８】実施の形態におけるｓｈａｒｅ１記憶領域に関連するハードウェア設計言語による記述をまとめて示した図である。
【図１９】図１８の記述に対して、ｓｈａｒｅ１記憶領域の記述に現れる変数を実際のレジスタ名（ｓｈａｒｅ１〜ｓｈａｒｅ６）に置き換えて示した図である。
【図２０】図１９の重複しているファンクションを纏めたハードウェア設計言語による記述例を示す図である。
【図２１】図２０のハードウェア設計言語による記述に対応する実際のハードウェア回路を示す回路図である。
【符号の説明】
１０１…定義情報、１２１…ソフトウェア言語ソースコード、１２３…ハードウェア設計言語ソースコード、２０１〜２０５…本体部分、３０１，３０２…タイミング・マトリックス、４０１…マッピングテーブル
【図１】
2004227370.tif 000003
【図２】
2004227370.tif 000004
【図３】
2004227370.tif 000005
【図４】
2004227370.tif 000006
【図５】
2004227370.tif 000007
【図６】
2004227370.tif 000008
【図７】
2004227370.tif 000009
【図８】
2004227370.tif 000010
【図９】
2004227370.tif 000011
【図１０】
2004227370.tif 000012
【図１１】
2004227370.tif 000013
【図１２】
2004227370.tif 000014
【図１３】
2004227370.tif 000015
【図１４】
2004227370.tif 000016
【図１５】
2004227370.tif 000017
【図１６】
2004227370.tif 000018
【図１７】
2004227370.tif 000019
【図１８】
2004227370.tif 000020
【図１９】
2004227370.tif 000021
【図２０】
2004227370.tif 000022
【図２１】
2004227370.tif 000023