JP3901530B2 - ソフトウェア・ハードウェア言語モデル変換装置及びプログラム - Google Patents
ソフトウェア・ハードウェア言語モデル変換装置及びプログラム Download PDFInfo
- Publication number
- JP3901530B2 JP3901530B2 JP2002024738A JP2002024738A JP3901530B2 JP 3901530 B2 JP3901530 B2 JP 3901530B2 JP 2002024738 A JP2002024738 A JP 2002024738A JP 2002024738 A JP2002024738 A JP 2002024738A JP 3901530 B2 JP3901530 B2 JP 3901530B2
- Authority
- JP
- Japan
- Prior art keywords
- signal
- code
- value
- software
- procedure
- 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.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、ソフトウェア記述をハードウェア動作記述に自動変換するソフトウェア・ハードウェア言語モデル変換方法及びプログラムに関する。
【0002】
【従来の技術】
昨今、CやC++さらには仕様記述言語SpecC(“SpecC:Specification Language and Methodology”,Daniel D.Gajski,Kluwer Academic Publishers,Dordrecht,ISBN0-7923-7822-9に詳しい)といったソフトウェア記述言語で、システム全体あるいはハードウェアを設計することが注目されている。すなわち、ソフトウェア記述言語により仕様を記述し、これを、ハードウェアの詳細設計に移行する際に下流の論理合成ツールなどに接続するため、VHDLやVerilog等のハードウェア記述言語による仕様記述に変換するものである。
【0003】
C言語からハードウェア言語モデルを生成するツールは、すでに製品化されているものもある。しかし、そのときに入力するコードはシーケンシャルな処理を記述したものに限られており、部分的な設計においては役に立つものの、より大規模な設計を行おうとすると、シーケンシャルな仕様では書ききれない部分があるので不都合がある。従って、並列プログラムをサポートできるソフトウェア・ハードウェア言語モデル変換が望まれている。
【0004】
【発明が解決しようとする課題】
ソフトウェア記述言語による記述で並列プログラムを含むとき、その記述を動作レベルのハードウェア記述言語に変換する場合、共有変数の取り扱いを素直に変換することができないという問題点があった。つまり、ソフトウェアでは代入が実行される順序に従って値が決まるが、ハードウェア記述においては各並列プログラムからの信号出力を単純に結線すると値が不定または代入順序とは関係なく決まる値となってしまう。そこで、システマティックに共有変数への代入処理をハードウェア記述へ変換を行う方法が望まれる。
【0005】
また、ソフトウェア記述言語による記述で並列に動作し得る手続きの呼び出しを含むとき、その記述を動作レベルのハードウェア記述言語に変換する場合、同一の手続きに対する呼び出しの取り扱いを素直に変換することができないという問題点があった。つまり、並列手続きをプロセスへ置きかえた場合、同時に同じ手続きが呼び出され得るが、素直にプロセス間の信号によるシェークハンドで表すと、排他的呼び出しにならないことになってしまう。そこで、システマティックに排他的呼び出しの機構をコード生成する方法が望まれる。
【0006】
本発明は、上記事情を考慮してなされたもので、並列プログラムとその間に共有する変数を含むソフトウェア記述を同様の動作をする動作レベルのハードウェア記述に変換することのできるソフトウェア・ハードウェア言語モデル変換方法及びプログラムを提供することを目的とする。
【0007】
また、本発明は、ソフトウェア言語による並列プログラムをハードウェア記述に変換する際、手続き呼び出しに相当する排他的なプロセス実行処理を実現することのできるソフトウェア・ハードウェア言語モデル変換方法及びプログラムを提供することを目的とする。
【0008】
【課題を解決するための手段】
本発明に係る第1のソフトウェア・ハードウェア言語モデル変換方法は、ソフトウェア記述言語で記述された第1のコードをハードウェア記述言語で記述された第2のコードに変換するソフトウェア・ハードウェア言語モデル変換方法において、前記第1のコードを前記第2のコードに変換するステップと、前記第1のコードに記述されたある共有変数に値を代入する複数の並列手続きに相当する複数のプロセスを前記第2のコードから検出するステップと、検出された前記複数のプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、前記代入タイミング信号が変化したいずれかの前記プロセスのデータ信号を前記共有変数の値を表す信号として出力する前記複数のプロセスについての値解決プロセスを生成するステップと、を具備するソフトウェア・ハードウェア言語モデル変換方法である。
【0009】
本発明に係る第2のソフトウェア・ハードウェア言語モデル変換方法は、ソフトウェア記述言語で記述された第1のコードをハードウェア記述言語で記述された第2のコードに変換するソフトウェア・ハードウェア言語モデル変換方法において、ある共有変数に値を代入する複数の並列手続きを、前記第1のコードから検出するステップと、前記第1のコードを前記第2のコードに変換するステップと、検出された前記複数の並列手続きに相当する複数のプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、該代入タイミング信号が変化したいずれかのプロセスのデータ信号を前記共有変数の値を表す信号として出力する値解決プロセスを生成するステップと、を具備するソフトウェア・ハードウェア言語モデル変換方法である。
【0010】
本発明に係る第3のソフトウェア・ハードウェア言語モデル変換方法は、ソフトウェア記述言語によって記述された第1のコードをハードウェア記述によって記述された第2のコードに変換する言語モデル変換方法において、前記第1のコードを前記第2のコードに変換するステップと、前記第1のコードに記述されたある並行手続きを呼び出す複数の手続きに相当する複数のプロセスを前記第2のコードから検出するステップと、検出された前記プロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された手続きからの終了信号及び戻り値信号を該プロセスへの出力とする、検出された前記プロセスによる前記並行手続きへの呼び出し動作を排他制御する手続き呼び出し解決プロセスを生成するステップと、を具備するソフトウェア・ハードウェア言語モデル変換方法である。
【0011】
本発明に係る第4のソフトウェア・ハードウェア言語モデル変換方法は、ソフトウェア記述言語によって記述された第1のコードをハードウェア記述によって記述された第2のコードに変換する言語モデル変換方法において、ある並行手続きを呼び出す複数の手続きを前記第1のコードから検出するステップと、前記第1のコードを前記第2のコードに変換するステップと、検出された前記複数の手続きに相当する複数のプロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された手続きからの終了信号及び戻り値信号を該プロセスへの出力とする、前記複数のプロセスの動作を排他制御する手続き呼び出し解決プロセスを生成するステップと、を具備するソフトウェア・ハードウェア言語モデル変換方法である。
【0012】
本発明に係る第5のソフトウェア・ハードウェア言語モデル変換方法は、ソフトウェア記述言語で記述された第1のコードをハードウェア記述言語で記述された第2のコードに変換するソフトウェア・ハードウェア言語モデル変換方法において、前記第1のコードを前記第2のコードに変換するステップと、前記第1のコードに記述されたある共有変数に値を代入する複数の並列手続きに相当する複数のプロセスを前記第2のコードから検出するステップと、検出された前記複数のプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、前記代入タイミング信号が変化したいずれかの前記プロセスのデータ信号を前記共有変数の値を表す信号として出力する、検出された前記複数の並列手続きに相当する複数のプロセスについて値解決プロセスを生成するステップと、生成された複数の前記値解決プロセスの各々について、該値解決プロセスが並列プロセス間の手続き呼び出しに関係するものであるか否かを判定するステップと、前記並列プロセス間の手続き呼び出しに関係するものと判定された値解決プロセスを、呼び出し側の前記並列プロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された側のプロセスからの終了信号及び戻り値信号を出力とする手続き呼び出し解決プロセスに変換するステップと、を具備するソフトウェア・ハードウェア言語モデル変換方法である。
【0013】
本発明に係る第6のソフトウェア・ハードウェア言語モデル変換方法は、ソフトウェア記述言語で記述された第1のコードをハードウェア記述言語で記述された第2のコードに変換するソフトウェア・ハードウェア言語モデル変換方法において、ある共有変数に値を代入する複数の並列手続きを、前記第1のコードから検出するステップと、前記第1のコードを前記第2のコードに変換するステップと、前記複数の並列手続きに相当する複数のプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、該代入タイミング信号が変化したいずれかのプロセスのデータ信号を前記共有変数の値を表す信号として出力する値解決プロセスを生成するステップと、生成された複数の前記値解決プロセスの各々について、該値解決プロセスが並列プロセス間の手続き呼び出しに関係するものであるか否かを判定するステップと、前記並列プロセス間の手続き呼び出しに関係するものと判定された値解決プロセスを、呼び出し側の前記並列プロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された側のプロセスからの終了信号及び戻り値信号を出力とする手続き呼び出し解決プロセスに変換するステップと、を具備するソフトウェア・ハードウェア言語モデル変換方法である。
【0014】
本発明の第1のソフトウェア・ハードウェア言語モデル変換プログラムは、ソフトウェア記述言語で記述された第1のコードをハードウェア記述言語で記述された第2のコードに変換するソフトウェア・ハードウェア言語モデル変換プログラムにおいて、コンピュータを、前記第1のコードを前記第2のコードに変換する手段、前記第1のコードに記述されたある共有変数に値を代入する複数の並列手続きに相当する複数のプロセスを前記第2のコードから検出する手段、検出された前記複数のプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、前記代入タイミング信号が変化したいずれかの前記プロセスのデータ信号を前記共有変数の値を表す信号として出力する前記複数のプロセスについての値解決プロセスを生成する手段、
として機能させるためのソフトウェア・ハードウェア言語モデル変換プログラムである。
【0015】
本発明の第2のソフトウェア・ハードウェア言語モデル変換プログラムは、ソフトウェア記述言語で記述された第1のコードをハードウェア記述言語で記述された第2のコードに変換するソフトウェア・ハードウェア言語モデル変換プログラムにおいて、コンピュータを、ある共有変数に値を代入する複数の並列手続きを、前記第1のコードから検出する手段、前記第1のコードを前記第2のコードに変換する手段、前記複数の並列手続きに相当する複数のプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、該代入タイミング信号が変化したいずれかのプロセスのデータ信号を前記共有変数の値を表す信号として出力する値解決プロセスを生成する手段、として機能させるためのソフトウェア・ハードウェア言語モデル変換プログラムである。
【0016】
本発明の第3のソフトウェア・ハードウェア言語モデル変換プログラムは、ソフトウェア記述言語によって記述された第1のコードをハードウェア記述によって記述された第2のコードに変換する言語モデル変換プログラムにおいて、コンピュータを、前記第1のコードを前記第2のコードに変換する手段、前記第1のコードに記述されたある並行手続きを呼び出す複数の手続きに相当する複数のプロセスを前記第2のコードから検出する手段、検出された前記プロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された手続きからの終了信号及び戻り値信号を該プロセスへの出力とする、検出された前記プロセスによる前記並行手続きへの呼び出し動作を排他制御する手続き呼び出し解決プロセスを生成する手段、として機能させるためのソフトウェア・ハードウェア言語モデル変換プログラムである。
【0017】
本発明の第4のソフトウェア・ハードウェア言語モデル変換プログラムは、ソフトウェア記述言語によって記述された第1のコードをハードウェア記述によって記述された第2のコードに変換する言語モデル変換プログラムにおいて、コンピュータを、ある並行手続きを呼び出す複数の手続きを前記第1のコードから検出する手段、前記第1のコードを前記第2のコードに変換する手段、検出された前記複数の手続きに相当する複数のプロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された手続きからの終了信号及び戻り値信号を該プロセスへの出力とする、前記複数のプロセスの動作を排他制御する手続き呼び出し解決プロセスを生成する手段、として機能させるためのソフトウェア・ハードウェア言語モデル変換プログラムである。
【0018】
本発明の第5のソフトウェア・ハードウェア言語モデル変換プログラムは、ソフトウェア記述言語で記述された第1のコードをハードウェア記述言語で記述された第2のコードに変換するソフトウェア・ハードウェア言語モデル変換プログラムにおいて、コンピュータを、前記第1のコードを前記第2のコードに変換する手段、前記第1のコードに記述されたある共有変数に値を代入する複数の並列手続きに相当する複数のプロセスを前記第2のコードから検出する手段、検出された前記複数のプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、前記代入タイミング信号が変化したいずれかの前記プロセスのデータ信号を前記共有変数の値を表す信号として出力する、検出された前記複数の並列手続きに相当する複数のプロセスについて値解決プロセスを生成する手段、生成された複数の前記値解決プロセスの各々について、該値解決プロセスが並列プロセス間の手続き呼び出しに関係するものであるか否かを判定する手段、前記並列プロセス間の手続き呼び出しに関係するものと判定された値解決プロセスを、呼び出し側の前記並列プロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された側のプロセスからの終了信号及び戻り値信号を出力とする手続き呼び出し解決プロセスに変換する手段、として機能させるためのソフトウェア・ハードウェア言語モデル変換プログラムである。
【0019】
本発明の第6のソフトウェア・ハードウェア言語モデル変換プログラムは、ソフトウェア記述言語で記述された第1のコードをハードウェア記述言語で記述された第2のコードに変換するソフトウェア・ハードウェア言語モデル変換プログラムにおいて、コンピュータを、ある共有変数に値を代入する複数の並列手続きを、前記第1のコードから検出する手段、前記第1のコードを前記第2のコードに変換する手段、前記複数の並列手続きに相当する複数のプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、該代入タイミング信号が変化したいずれかのプロセスのデータ信号を前記共有変数の値を表す信号として出力する値解決プロセスを生成する手段、生成された複数の前記値解決プロセスの各々について、該値解決プロセスが並列プロセス間の手続き呼び出しに関係するものであるか否かを判定するステップと、前記並列プロセス間の手続き呼び出しに関係するものと判定された値解決プロセスを、呼び出し側の前記並列プロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された側のプロセスからの終了信号及び戻り値信号を出力とする手続き呼び出し解決プロセスに変換する手段と、として機能させるためのソフトウェア・ハードウェア言語モデル変換プログラム。
【0020】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【0021】
図18に、本発明の実施の形態に係るシステム設計支援装置100の構成例を示す。図18に示されるように、システム設計支援装置100は、仕様モデル記述部101、アーキテクチャ探索部102、コミュニケーション合成部103、ハードウェア仕様生成部104、部品化・再利用部105、ソフトウェア仕様生成部106、システム仕様記録部107を備えている。システム設計支援装置100は、例えば、コンピュータを用いて構成可能であり、この場合、各処理部分はプログラムによって実施できる。
【0022】
システム仕様記録部107は、入力データや各処理部の処理結果の全部又は一部、例えば、計算機で実行されるソフトウェアの仕様や、半導体を組み合わせたハードウェアの仕様や、ソフトウェアとハードウェアを組み合わせた組み込みシステムの仕様や、ワークフロー等のビジネスプロセスの仕様に対しシステムレベルでの仕様等や、その他の必要なデータを記録するためのものである。
【0023】
仕様モデル記述部101は、設計者が予め定められた仕様記述形式に従って計算内容の仕様、通信内容の仕様を記述することを支援するためのものである。仕様モデル記述部101の支援の結果、仕様モデルが生成される。仕様記述形式には、例えば、構造化プログラミング言語に代表される構造化テキスト形式や、グラフを利用する構造図形式や、テーブルを利用する表形式が有る。
【0024】
アーキテクチャ探索部102は、与えられた仕様記述モデルと、アーキテクチャ(例えば、ハードウェア実行環境とソフトウェア実行環境の構成)に対し、仕様の内容を保存したまま仕様モデルの部分構造を分割しアーキテクチャ要素に分配する。すなわち、仕様モデル記述部101で設計された計算内容の仕様や通信内容の仕様を構成する部品をアーキテクチャ要素に割り当てる。
【0025】
コミュニケーション合成部103は、アーキテクチャ探索部102で分配された通信仕様要素間に対して通信手順(プロトコル)を挿入し、通信内容の仕様が挿入された通信手順と整合性を保つためのプロトコル変換(通信手順の組替え)を行う。
【0026】
なお、アーキテクチャ探索部102が処理対象とする仕様記述モデルは、仕様モデル記述部101を利用して記述されたものに限定されず、他のツール等で記述されたものでもよい。また、コミュニケーション合成部103が処理対象とする仕様記述モデルは、アーキテクチャ探索部102の出力結果(またはこの結果に修正を加えたもの)に限定されず、他のツール等で記述されたものでもよい。
【0027】
ハードウェア仕様生成部104は、システム仕様からハードウェア記述言語などによるハードウェア仕様を生成する。
【0028】
ソフトウェア仕様生成部106は、システム仕様からソフトウェア記述言語などによるソフトウェア仕様を生成する。
【0029】
ハードウェア仕様生成部104やソフトウェア仕様生成部106は、仕様モデル記述部101の出力結果(またはこの結果に修正を加えたもの)、アーキテクチャ探索部102の出力結果(またはこの結果に修正を加えたもの)、コミュニケーション合成部103の出力結果(またはこの結果に修正を加えたもの)、あるいは他のツール等で記述されたものなどを処理対象とすることができる。
【0030】
部品化・再利用部105は、仕様モデル記述部101、アーキテクチャ探索部102、コミュニケーション合成部103の全部または一部の設計段階において、仕様を部品化し、これを設計に再利用するためのものである。
【0031】
以下詳述するソフトウェア・ハードウェア言語モデル変換装置は、図18のシステム設計支援装置のハードウェア仕様生成部104に用いられるもので、システム仕様からHDL記述を生成することを可能にするものである。
【0032】
図1に、本発明の一実施形態に係るソフトウェア・ハードウェア言語モデル変換装置(以下、言語モデル変換装置と呼ぶ)の構成例を示す。
【0033】
図1に示されるように、本言語モデル変換装置は、骨格コード生成部1、コード置換部2、値解決プロセス生成部3を備えている。
【0034】
本言語モデル変換装置は、SpecC言語等のソフトウェア記述言語により記述されたモデルから、VHDL等のハードウェア記述言語により記述された(同様の動作をする)モデルを生成するものである。
【0035】
まず、図2(ソフトウェア記述言語モデルの説明図)および図3(ハードウェア記述言語の説明図)を参照して、本言語モデル変換装置の概要について説明する。なお、図2および図3において、1021は共有変数、1023は並列に動作し得る手続き、1022は手続きからの出力、1011は共有変数の値を保持する信号、1015は互いに並行に実行されるプロセス、1012は本言語モデル変換装置が生成する値解決プロセス(矢印が信号の入出力を表す)、1013はプロセスの代入データ信号、1014はプロセスの代入タイミング信号である。
【0036】
図2のようにソフトウェア記述言語において並列プログラム間の共有変数がある場合、本言語モデル変換装置は、図3のようにハードウェア記述言語において、各共有変数に対して、値保持信号(1011)とその共有変数に書き込みアクセスし得る各並列プログラム(1023)に対応するプロセス(1015)ごとに、代入データ信号(1013)と代入タイミング信号(1014)を生成し、代入タイミング信号(1014)の変化に従って、値保持信号(1011)への出力を、代入タイミング信号(1014)と組になるデータ信号(1013)に切り替える、値解決プロセス(1012)を生成する。値解決プロセス(1012)の生成は、入力コードにおけるその共有変数代入の処理に対応する部分にデータ信号(1013)への代入と代入タイミング信号(1014)の変化を与える処理(図8参照)を生成することによって行う。
【0037】
また、ここでは、図4のように入力されるソフトウェア記述言語モデルにおいて手続きが階層化されていて出力されるハードウェア記述言語モデルにおいて並列プロセスが階層化されている場合、図5のように値解決プロセスは階層ごとにあって信号がその階層に従って接続される。その場合、下位階層の値解決プロセスの出力には、代入タイミング信号が加わる。階層があるときは、値反映の待ちを挿入する。
【0038】
以下、本言語モデル変換装置の処理について説明する。
【0039】
図6に、本言語モデル変換装置の処理手順の一例を示す。図6に示されるように本手順は、骨格コード生成処理(処理1〜6)と、コード置換生成処理(処理7,8)と、値解決プロセス生成処理(処理9,10)とを行うものである。
【0040】
なお、後述する処理1〜10は、図7に示すような実行順序制約(矢印の終点側にある処理はその矢印の起点側にある全処理の終了後に実行する)を満たす限り、どのような順番で処理を行っても構わない。また、複数の処理を並列に行っても良い。
【0041】
ここでは、SpecC言語のソースコードを入力して、VHDLソースコードを生成する場合を例にとって説明する。また、出力するVHDLコードは、CLKという信号を各EntityでIN属性の入力ポート信号として持ち、その入力値は同期クロックであると仮定しているものとして説明する。
【0042】
<骨格コード生成処理(骨格コード生成部1)>
(処理1)SpecC言語の仕様は、C言語のグローバル関数・グローバル変数とclassと呼ばれる要素からなる。本言語モデル変換装置においては、classと呼ばれる要素のみを変換するものとする。classは、behaviorとchannelの2種類ある。本言語モデル変換装置では、classはいずれもVHDLのEntityとArchitectureの組に対応させる。
【0043】
(処理2)SpecC言語のclassは、port変数とローカル変数、そして、関数からなる。本言語モデル変換装置では、port変数は対応するArchitectureのport信号に、ローカル変数はArchitectureのローカル信号に、関数はArchitectureのprocessにそれぞれ対応させる。
【0044】
(処理3)SpecC言語のclassにおけるport変数には、入力属性(in)、出力属性(out)、入出力属性(inout)の3種類の方向属性がある。上記の処理2において、port変数のport信号への置き換えを、方向属性によって、次のように行う。
・入力属性(in)の場合、IN属性の信号(合計1つ)を対応させる。
・出力属性(out)の場合、OUT属性の信号(合計1つ)を対応させる。
・入出力属性(inout)の場合、IN属性の信号とOUT属性の信号(合計2つ)を対応させる。
【0045】
(処理4)SpecC言語のclass内の関数に対し、呼び出し用の信号として、実行トリガー信号(processにとっての入力信号)、実行状態信号(processにとっての出力信号)を定義する。classの外から呼ばれる関数に関してはEntityのport信号として定義する。関数に引数や戻り値があれば、それに対応する入出力信号を同様にportに定義する。
【0046】
(処理5)processの冒頭において、外部からの関数の呼び出しに対応するコードを次のように生成する。
(処理6)関数内のコードについて、関数内のローカル変数はVHDLのprocess変数に対応させる。変数の代入文は代入文に、waitはwait文に対応させる。if等の制御構文はVHDLのif等に対応させる。関数の呼び出しは、上記の処理4で生成した信号を用いて次のようなコードを対応させる。
<コード置換処理(コード置換部2)>
(処理7)VHDLのprocessブロック内部における信号代入は、その場で即座に信号値に反映されるわけではない。反映されるのは、wait文が処理されるときである。その効果を考慮して、次のように変換する。VHDLの信号に対して、一時process変数を対応して定義する。wait文の直後に、変数:=信号;の代入文を作り、wait文の直前に、信号<=変数;の代入文を作る。SpecC言語の関数外変数への代入文は一時変数への代入文とする。また、値の参照も一時変数の値の参照とする。
【0047】
一例として、aを関数外変数として、次のようなSpecC言語コードを考える。
waitfor 100;
a=1;
a=a+1;
waitfor 100;
これに対応するVHDLコードは次のようになる。aがSpecC変数aに対応する信号であり、tmp_aがその信号に対応する一時process変数である。
wait for 100 ns;
tmp_a:=a;
tmp_a:=1;
tmp_a:=tmp_a+1;
a<=tmp_a;
wait for 100 ns;
ただし、代入先がSpecC言語のport変数に対応する場合、代わりにOUT属性の信号に代入する。ローカル信号の場合は、特に変えなくて良い。
【0048】
SpecC言語の変数の型がeventであった場合、特に一時変数は作らない。
【0049】
イベントが起こったことを表す方法は、イベント信号が1クロック間‘1’の値をとることとする。イベント変数に関してはnotify e;が代入に相当する。
notify e;
waitfor 100;
は、次のようなコードに対応させる。
e<=‘1’;
wait until CLK=‘1’ and CLK’EVENT;
e<=‘0’;
wait for 100 ns;
イベントの参照は、wait e;で行われるが、このコードに対応するVHDLコードは、
wait until e=‘1’;
となる。
【0050】
(処理8)SpecC言語のclassは他のクラスをインスタンス化することができる。インスタンス化はVHDLのport_map宣言に対応させる。
ただし、portが上記の処理3で複数に分裂している場合があるので、ローカル変数に接続している場合は、同じ信号を、ポート変数を接続している場合は、同じ方向属性の信号を接続する。
【0051】
例えば、次のようなSpecC言語コードを考える。
これに対応するVHDLコードは次のようになる。
<値解決プロセス生成処理(値解決プロセス生成部3)>
(処理9)各Architecture内で、複数のprocessやport_mapからの代入が起こっている信号を検出する。
検出した信号sigに対して、(a)代入しようとするプロセスfに対してデータ信号sig_out_fと代入タイミング信号sig_otrig_fをArchitectureローカル信号として定義する。
(b)(a)で生成した信号を入力とし、信号sigを出力とする値解決プロセスを生成する。
プロセスを実装するアルゴリズムは、例えば図8のようなものである。
(c)各プロセスのsigへの代入文sig<=式;を次のように置き換える。
sig_out_f<=式;
sig_otrig<=‘1’;
wait until CLK=‘1’ and CLK’EVENT;
sig_otrig<=‘0’;
関数実行制御用の信号の値解決プロセスに関しては、実行トリガーと引数に関する処理をひとまとめで行う。実行トリガー信号は代入タイミング信号と同様な役目を負わせることができるからである。
【0052】
(処理10)上記の処理9で生成した値解決プロセスの出力先の信号がEntity Portの場合、処理9で、代入タイミング信号を生成している場合がある。その場合は、値解決プロセスの出力として、代入タイミング信号を追加し、値解決プロセスが処理して、出力先にデータを出力するタイミングで、代入タイミング信号の値を変化させるような処理を追加する。
【0053】
以上の手順によって、例えば図4のような構造のSpecC言語コードから図5のような構造のVHDLコードが生成される。
【0054】
以下、図19及び図20を参照して値解決プロセスを生成する実施形態の変形例を説明する。
【0055】
図20は本言語モデル変換装置の処理手順の一例を示す図である。同図に示されるように本手順は、共有変数検出処理(処理0)と、骨格コード生成処理(処理1〜6)と、コード置換生成処理(処理7’,8)と、値解決プロセス処理(処理9’,10)とを行うものである。なお、後述する処理1〜10は、図7に示すような実行順序制約(矢印の終点側にある処理はその矢印の起点側にある全処理の終了後に実行する)を満たす限り、どのような順番で処理を行っても構わない。また、複数の処理を並列に行っても良い。
【0056】
上述の実施形態と同様に、ここでもSpecC言語のソースコードを入力して、VHDLソースコードを生成する場合を例にとって説明する。また、出力するVHDLコードは、CLKという信号を各EntityでIN属性の入力ポート信号として持ち、その入力値は同期クロックであると仮定しているものとして説明する。
【0057】
<共有変数検出処理>
(処理0) class内の変数及びポート変数について、class内の関数又はインスタンス化が該変数の値を更新するコード記述、すなわち代入の記述を検出する。このような変数を共有変数と称する。共有変数に対しては、該共有変数を識別するための情報と該共有変数にどの関数又はインスタンス化から値が代入されているかという情報と、を関連付けて記憶しておく。
【0058】
<骨格コード生成処理(骨格コード生成部1)>
(処理1)SpecC言語の仕様は、C言語のグローバル関数・グローバル変数とclassと呼ばれる要素からなる。本言語モデル変換装置においては、classと呼ばれる要素のみを変換するものとする。classは、behaviorとchannelの2種類ある。本言語モデル変換装置では、classはいずれもVHDLのEntityとArchitectureの組に対応させる。
【0059】
(処理2)SpecC言語のclassは、port変数とローカル変数、そして、関数からなる。本言語モデル変換装置では、port変数は対応するArchitectureのport信号に、ローカル変数はArchitectureのローカル信号に、関数はArchitectureのprocessにそれぞれ対応させる。
【0060】
(処理3)SpecC言語のclassにおけるport変数には、入力属性(in)、出力属性(out)、入出力属性(inout)の3種類の方向属性がある。上記の処理2において、port変数のport信号への置き換えを、方向属性によって、次のように行う。
・入力属性(in)の場合、IN属性の信号(合計1つ)を対応させる。
・出力属性(out)の場合、OUT属性の信号(合計1つ)を対応させる。
・入出力属性(inout)の場合、IN属性の信号とOUT属性の信号(合計2つ)を対応させる。
【0061】
(処理4)SpecC言語のclass内の関数に対し、呼び出し用の信号として、実行トリガー信号(processにとっての入力信号)、実行状態信号(processにとっての出力信号)を定義する。classの外から呼ばれる関数に関してはEntityのport信号として定義する。関数に引数や戻り値があれば、それに対応する入出力信号を同様にportに定義する。
【0062】
(処理5)processの冒頭において、外部からの関数の呼び出しに対応するコードを次のように生成する。
(処理6)関数内のコードについて、関数内のローカル変数はVHDLのprocess変数に対応させる。変数の代入文は代入文に、waitはwait文に対応させる。if等の制御構文はVHDLのif等に対応させる。関数の呼び出しは、上記の処理4で生成した信号を用いて次のようなコードを対応させる。
<コード置換処理(コード置換部2)>
(処理7’)VHDLのprocessブロック内部における信号代入は、その場で即座に信号値に反映されるわけではない。反映されるのは、wait文が処理されるときである。その効果を考慮して、次のように変換する。VHDLの信号に対して、一時process変数を対応して定義する。wait文の直後に、変数:=信号;の代入文を作り、wait文の直前に、信号<=変数;の代入文を作る。SpecC言語の関数外変数への代入文は一時変数への代入文とする。また、値の参照も一時変数の値の参照とする。
【0063】
一例として、aを関数外変数として、次のようなSpecC言語コードを考える。
waitfor 100;
a=1;
a=a+1;
waitfor 100;
これに対応するVHDLコードは次のようになる。aがSpecC変数aに対応する信号であり、tmp_aがその信号に対応する一時process変数である。
wait for 100 ns;
tmp_a:=a;
tmp_a:=1;
tmp_a:=tmp_a+1;
a<=tmp_a;
wait for 100 ns;
ただし、代入先がSpecC言語のport変数に対応する場合、代わりにOUT属性の信号に代入する。
【0064】
さらに、処理0における記憶内容を参照することにより、変数aが共有変数に該当するかどうかを判断する。該当する場合は、例えば"a_out_f<=tmp_a;"という具合に、関数名(この例では関数名をfとしている)を基にしたデータ信号を生成し、その信号への代入とする。
【0065】
同時に、関数名を基にした代入タイミング信号 a_otrig_fを生成するとともに、上記"a_out_f<tmp_a;"の直後に、次のようなコードを挿入する。
【0066】
sig_otrig_f <= '1';
wait until CLK='1' and CLK'EVENT;
sig_otrig_f <='0';
SpecC言語の変数の型がeventであった場合、特に一時変数は作らない。
【0067】
イベントが起こったことは、イベント信号が1クロック間‘1’の値をとることにより判断するものとする。イベント変数に関してはnotify e;が代入に相当する。
notify e;
waitfor 100;
は、次のようなコードに対応させる。
e<=‘1’;
wait until CLK=‘1’ and CLK’EVENT;
e<=‘0’;
wait for 100 ns;
イベントの参照は、wait e;で行われるが、このコードに対応するVHDLコードは、
wait until e=‘1’;
となる。
【0068】
(処理8)SpecC言語のclassは他のクラスをインスタンス化することができる。インスタンス化はVHDLのport_map宣言に対応させる。ただし、portが上記の処理3で複数に分裂している場合があるので、ローカル変数に接続している場合は、同じ信号を、ポート変数を接続している場合は、同じ方向属性の信号を接続する。
【0069】
例えば、次のようなSpecC言語コードを考える。
これに対応するVHDLコードは次のようになる。
<値解決プロセス生成処理(値解決プロセス生成部3)>
(処理9’)処理0において予め共有変数として検出されている変数を置き換えたものである信号sigについて、値解決プロセスを生成する。値解決プロセスの入力信号は信号sigへの変換前の変数に関して(処理7’)において生成された信号の全てとする。また、出力は信号sigとする。関数実行制御に係る信号の値解決プロセスは、実行トリガー信号と引数に関する処理とをひとまとめにして処理する。実行トリガー信号は代入タイミング信号と同様な役目を負わせることができるからである。
【0070】
(処理10)上記の処理9’で生成した値解決プロセスの出力先の信号がEntity Portの場合、処理9’で、代入タイミング信号を生成している場合がある。その場合は、値解決プロセスの出力として、代入タイミング信号を追加し、値解決プロセスが処理して、出力先にデータを出力するタイミングで、代入タイミング信号の値を変化させるような処理を追加する。
【0071】
以上の手順によって、例えば図4のような構造のSpecC言語コードから図5のような構造のVHDLコードが生成される。
【0072】
次に、本言語モデル変換装置の他の処理例について説明する。
【0073】
図9に、本言語モデル変換装置の処理手順の他の例を示す。
【0074】
SpecC言語コードは一般にclassの間に木構造が形成されている。従って、SpecC言語コードを入力して、図6の手順を行って出力したVHDLコードのEntity−Architecture組間にも同様な木構造が形成される。すなわち、図6の手順の値解決プロセス生成処理(処理9、処理10)で生成した値解決プロセスについて、一般にその木構造に沿って値解決プロセスの木構造ができる。
【0075】
図9の手順では、まず図6と同様の手順を行い、その後に、値解決プロセス生成部3で後述する値解決プロセス除去処理(処理11,12)を行って、プログラムが階層化されている場合に値解決プロセスを1つにするものである。例えば、図6の手順で作られた値解決プロセス(図5参照)のうち最も上位にある値解決プロセスに、階層化されている値解決プロセスを統合する。この結果、例えば、図10のようになる。値解決プロセス除去処理では、階層の最も上に位置するものだけを残して後は除去するために、下位層に含まれる代入データ信号と代入タイミング信号を各コンポーネントのポート信号にして上位のコンポーネントに接続する。
【0076】
以下では、値解決プロセス除去処理について説明する。
【0077】
<値解決プロセス除去処理(値解決プロセス生成部3)>
(処理11)出力に代入タイミング信号がない値解決プロセスが、値解決プロセスの階層の頂上にある。それ以外を「除去可能な値解決プロセス」と呼ぶものとする。除去可能な値解決プロセスに関して、そのプロセスを除去する。
【0078】
(処理12)上記の処理11で除去されたプロセスの入力をEntityポートに展開する。除去されたプロセスの出力ポートは除去する。これを値解決プロセスの下の階層から順に行う。その中間階層の値解決プロセスを処理している場合、port_mapの入力信号ポート部が別のポート群に置き換わっているがその置き換わった信号群を入力信号としてみなして処理を行う。最終的に頂上の値解決プロセスの入力は、全ての階層のその信号への代入処理を持つプロセスからのデータ信号と代入タイミング信号になる。
【0079】
以上説明してきたように、本実施形態によれば、並列プログラムとその間に共有する変数を含むソフトウェア記述を同様の動作をする動作レベルのハードウェア記述に変換することができる。
【0080】
また、並列プロセスが階層化されている場合にも対応できる。なお、値解決プロセスを階層構造にする構成と、最上位の値解決プロセスのみ残す構成とのいずれかを選択できるようにしてもよい(前者の場合は、処理10まで行い、後者の場合は、処理12まで行えばよい)。選択の基準としては、例えば、ポート信号の数を減らしたいときは前者の構成を選択し、階層が深く余分な待ち処理を入れたくない場合は後者の構成を選択するようにする。
【0081】
図11に、本発明の一実施形態に係る言語モデル変換装置の他の構成例を示す。この言語モデル変換装置は、図1の構成に値解決プロセス変換部4を付加したものである。
【0082】
まず、図12(ハードウェア記述言語モデルの説明図)を参照して、値解決プロセス変換処理の概要について説明する。なお、図12において、2015は呼び出す側のプロセス、2016は呼び出される側のプロセス、2010は(呼び出される側の)プロセスへの実行起動トリガー信号、2011は(呼び出す側の)プロセスからの実行状態信号、2012はプロセスを呼び出すための手続き呼出切り替えプロセス(値解決プロセス変換処理により値解決プロセスが変換されたもの)、2013は(呼び出す側の)プロセスから他のプロセスを呼び出すための実行起動トリガー信号、2014は(呼び出す側の)プロセスから他のプロセスを呼び出すときの実行状態信号である。
【0083】
ソフトウェア記述言語モデルにおける並列プログラム間の手続き呼び出しを、ハードウェア記述言語モデルにおいて次のように表現する。
【0084】
並列プログラムから並列プロセスに変換される手続きを呼び出すコードに対して、次のようなコードを生成する。
・手続きを呼び出す際には、呼び出す側のプロセス2015が出力するトリガ信号2013(2011)と、呼び出される側のプロセス2016が出力する実行状態信号2011(2014)を使う。加えて、呼び出す側のプロセスが出力する引数信号と、呼び出される側のプロセスが出力する返り値信号を使うこともある。
(1)トリガは実際に呼び出される側のプロセスが実行されるまで立ち上げておくとする。
(2)呼び出される側のプロセスに対して、(出力)トリガ信号、引数、(入力)実行状態、返り値の信号の切替を行う手続き呼び出し切替プロセスを作る。
(3)呼び出される側のプロセス対する並列プロセスごとに(呼び出しプロセスに対して出力)トリガ信号、引数、(呼び出しプロセスに対して入力)実行状態、返り値の信号を別に用意する。
【0085】
手続き呼び出し切替プロセス2012は、次のような各入力トリガの立ち上がり条件で実行する処理を逐次に行う(図15参照)。
各入力トリガの立ち上がり条件で実行する処理:
(1)他の実行状態信号を下げる。
(2)出力トリガを立てる。同時に、(あれば)処理プロセスからの引数信号値を出力引数信号の値とする。
(3)入力実行状態信号が立ち上がったら、処理プロセスの実行状態信号を立ち上がらせる。
(4)入力実行状態信号が立ち下がると、処理プロセスの状態信号を立ち下がらせる。同時に、(あれば)入力返り値信号値を処理プロセスの返り値信号値にする。
【0086】
また、ここでは、図4のように入力されるソフトウェア記述言語モデルにおいて手続きが階層化されていて出力されるハードウェア記述言語モデルにおいて並列プロセスが階層化されている場合、図14のように各階層ごとに1のプロセスに手続き呼び出し切替プロセスを定義する。ただし、切替える必要のない場合は、手続き呼び出し切替プロセスを介さず結線する。
【0087】
図13に、本言語モデル変換装置の処理手順を示す。図13の手順では、まず図6と同様の手順を行う。ソフトウェア記述言語モデルにおける並列プログラム間の手続き呼び出しも、並列プログラム間の共有変数へのアクセスとして扱われるので、図6と同様の手順によって、並列プログラム間の手続き呼び出しについて、値解決プロセスが生成される。次いで、図13の手順では、値解決プロセス変換部4で後述する値解決プロセス変換処理(処理13)を行って、値解決プロセス(図3参照)のうち並列プログラム間の手続き呼び出しに該当するものを、手続き呼び出し切り替えプロセス(図12参照)に変換する(なお、並列プログラム間の手続き呼び出しに該当しないものは、値解決プロセスとして残る)。
【0088】
なお、以上説明した手続き呼び出し(切り替え)プロセスの生成は、先に述べた値解決プロセスの生成を経ずに行われてもよい。
【0089】
以下では、値解決プロセス変換処理について説明する。
【0090】
<値解決プロセス変換処理(値解決プロセス変換部4)>
(処理13)骨格コード生成処理の処理4で生成したprocessの制御用信号(実行トリガー信号、実行状態信号、加えて、引数、戻り値データ信号)の制御信号伝達のための値解決プロセスを、値解決プロセス生成処理の処理9で作成したものから取り替える。具体的には次のような置き換えを行う。
【0091】
(処理13−1)
まず、信号の定義の追加を行う。実行状態信号は、各呼び出し側のprocessに対して共通であったものを、呼び出しプロセスごとに用意する。同様に、返り値の信号も呼び出しprocess毎に追加定義する。
【0092】
(処理13−2)
次に、呼び出し側プロセスにおける信号の置き換えを行う。すなわち、wait untilの条件内の実行状態信号を、処理13−1で生成した信号に置き換える。戻り値信号参照部分に関しても同様に置き換える。
【0093】
(処理13−3)
次に、実行トリガー信号の値解決プロセスを、次のようなものに置き換える。
【0094】
processの入力は、各呼び出しprocessから実行トリガー信号と引数のデータ信号と、加えて、呼び出されるprocessから出力される実行状態信号及び返り値信号、出力は、各呼び出しprocess信号用の実行状態信号と返り値信号と、加えて、呼び出されるprocessへの実行トリガー信号及び引数データ信号である。
【0095】
さらに、このprocessは、図15に示すような動作またはこれと等価な動作を実装する。例えば、実装する動作は、次の通りである。
(1)実行トリガーを監視する無限ループがある。このループを抜ける条件は、入力の実行トリガー信号の少なくとも1つの値が立ち上がることである。
(2)ループを抜けた直後に、各実行トリガー信号が立ち上がっているという条件の条件分岐を用意する。ただし、この条件分岐は、次のように逐次直列に並んでいるものとする。
(3)各条件が成り立ったときの処理は、例えば次のようなものである。
(3−1)呼び出されるprocessへの実行トリガー信号値を立ち上げる。
(3−2)呼び出されるprocessからの実行状態信号が立ち上がるのを待つ。
(3−3)呼び出しprocessへの実行状態信号を立ち上げる。
(3−4)呼び出されるprocessからの実行状態信号が立ち下がるのを待つ。
(3−5)呼び出しprocessへのの実行状態信号が立ち下げ、呼び出されるprocessからの返り値信号値を呼び出しprocessの戻り値信号に伝達する。
【0096】
次に、本言語モデル変換装置の他の処理例について説明する。
【0097】
図16に、本言語モデル変換装置の処理手順の他の例を示す。
【0098】
この手順は、図13の骨格コード生成処理(処理1〜6)、コード置換生成処理(処理7,8)、値解決プロセス生成処理(処理9,10)を行い、そして、値解決プロセス除去処理(処理11,12)を行った後に、図13の値解決プロセス変換処理(処理13)を行うものである。
【0099】
すなわち、並列プロセスが階層化されている場合、階層的に生成される手続き呼び出し切替プロセスのうち最も上位に位置するものを残して他の手続き切替プロセスは生成しないようにする。下位のプロセスへの入力出力信号を残したプロセスの入力出力信号とする。そのために必要なポート信号を生成する。
【0100】
この結果、例えば、図14は図17のようになる。
【0101】
以上説明してきたように、本実施形態によれば、ソフトウェア言語による並列プログラムをハードウェア記述に変換する際、手続き呼び出しに相当する排他的なプロセス実行処理を実現した(排他的呼び出しを可能にした)ハードウェア動作記述に変換することができる。
【0102】
また、並列プロセスが階層化されている場合にも対応できる。なお、手続き呼び出し解決プロセスを階層構造にする構成と、最上位の手続き呼び出し解決プロセスのみ残す構成とのいずれかを選択できるようにしてもよい(前者の場合は、処理10までと処理13を行い、後者の場合は、処理13まで行えばよい)。選択の基準としては、例えば、ポート信号の数を減らしたいときは前者の構成を選択し、階層が深く余分な遅延を入れたくない場合は後者の構成を選択するようにする。
【0103】
なお、以上の各機能は、ソフトウェアとして実現可能である。
また、本実施形態は、コンピュータを所定の手段として機能させるためのプログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【0104】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ2以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【0105】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【0106】
【発明の効果】
本発明によれば、並列プログラムとその間に共有する変数を含むソフトウェア記述を同様の動作をする動作レベルのハードウェア記述に変換するができる。
【0107】
また、本発明によれば、ソフトウェア言語による並列プログラムをハードウェア記述に変換する際、手続き呼び出しに相当する排他的なプロセス実行処理を実現することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係るソフトウェア・ハードウェア言語モデル変換装置の構成例を示す図
【図2】変数を共有する並列ソフトウェアプログラムのソフトウェア記述の一例について説明するための図
【図3】変数を共有する並列ソフトウェアプログラムのソフトウェア記述を変換して得られる値解決プロセスを含むハードウェア記述の一例について説明するための図
【図4】変数を共有する階層化された並列ソフトウェアプログラムのソフトウェア記述の一例について説明するための図
【図5】変数を共有する階層化された並列ソフトウェアプログラムのソフトウェア記述を変換して得られる階層化された値解決プロセスを含むハードウェア記述の一例について説明するための図
【図6】同実施形態に係るソフトウェア・ハードウェア言語モデル変換装置の処理手順の一例を示すフローチャート
【図7】同実施形態に係るソフトウェア・ハードウェア言語モデル変換装置の処理手順の一例を示すフローチャート
【図8】値解決プロセスによる処理の一例を示すフローチャート
【図9】同実施形態に係るソフトウェア・ハードウェア言語モデル変換装置の処理手順の他の例を示すフローチャート
【図10】変数を共有する階層化された並列ソフトウェアプログラムのソフトウェア記述を変換して得られる最上位階層以外の値解決プロセスを削除したハードウェア記述の一例について説明するための図
【図11】同実施形態に係るソフトウェア・ハードウェア言語モデル変換装置の他の構成例を示す図
【図12】値解決プロセスを含むハードウェア記述を変換して得られる手続き呼び出し切り替えプロセスを含むハードウェア記述の一例について説明するための図
【図13】同実施形態に係るソフトウェア・ハードウェア言語モデル変換装置の処理手順のさらに他の例を示すフローチャート
【図14】階層化された値解決プロセスを含むハードウェア記述を変換して得られる階層化された手続き呼び出し切り替えプロセスを含むハードウェア記述の一例について説明するための図
【図15】手続き呼び出し切り替えプロセスによる処理の一例を示すフローチャート
【図16】同実施形態に係るソフトウェア・ハードウェア言語モデル変換装置の処理手順のさらに他の例を示すフローチャート
【図17】最上位階層以外の値解決プロセスを削除したハードウェア記述を変換して得られる最上位階層以外の手続き呼び出し切り替えプロセスを削除したハードウェア記述の一例について説明するための図
【図18】同実施形態に係るシステム設計支援装置の構成例を示す図
【図19】本発明の実施の形態に係るソフトウェア・ハードウェア言語モデル変換装置の他の構成例を示す図
【図20】上記他の構成例に係るソフトウェア・ハードウェア言語モデル変換装置の処理手順の一例を示すフローチャート
【符号の説明】
1…骨格コード生成部
2…コード置換部
3…値解決プロセス生成部
4…値解決プロセス変換部
100…システム設計支援装置
101…仕様モデル記述部
102…アーキテクチャ探索部
103…コミュニケーション合成部
104…ハードウェア仕様生成部
105…部品化・再利用部
106…ソフトウェア仕様生成部
107…システム仕様記録部
Claims (8)
- 仕様記述言語で記述された手続きが階層化されている第1のコードをハードウェア記述言語で記述された並列プロセスが階層化されている第2のコードに変換するソフトウェア・ハードウェア言語モデル変換装置において、
前記第1のコードを前記第2のコードに変換する手段と、
前記第1のコードに記述されたある共有変数に値を代入する複数の並列手続きに相当する複数のプロセスを前記第2のコードから検出する手段と、
検出された前記複数のプロセスのうち一つの階層に属するプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、前記代入タイミング信号が変化したいずれかの前記プロセスの前記共有変数の値を表すデータ信号及び該データ信号の値が更新されるときに変化する前記代入タイミング信号とを出力する下位階層の値解決プロセス及び前記下位階層の値解決プロセスから出力された前記データ信号及び前記代入タイミング信号の組と他の階層に属するプロセスからのデータ信号及び代入タイミング信号の組の入力とし、前記代入タイミング信号が変化したいずれかの前記共有変数の値を表すデータ信号及び該データ信号の値が更新されるときに変化する前記代入タイミング信号を出力とする上位階層の値解決プロセスとを生成する手段とを具備することを特徴とするソフトウェア・ハードウェア言語モデル変換装置。 - 前記一つの階層に属するプロセスから前記下位階層の値解決プロセスへの入力を前記上位階層の値解決プロセスへの入力に接続する手段と、前記下位階層の値解決プロセスを削除する手段と、をさらに具備する請求項1に記載のソフトウェア・ハードウェア言語モデル変換装置。
- 仕様記述言語で記述された手続きが階層化されている第1のコードのハードウェア記述言語で記述された並列プロセスが階層化されている第2のコードに変換するソフトウェア・ハードウェア言語モデル変換装置において、
ある共有変数に値を代入する複数の並列手続きを、前記第1のコードから検出する手段と、
前記第1のコードを前記第2のコードに変換する手段と、
検出された前記複数の並列手続きに相当する複数のプロセスのうち一つの階層に属するプロセスのそれぞれからのデータ信号及び代入タイミング信号の組を入力とし、前記代入タイミング信号が変化したいずれかの前記プロセスの前記共有変数の値を表すデータ信号及び該データ信号の値が更新されるときに変化する前記代入タイミング信号とを出力する下位階層の値解決プロセス及び前記下位階層の値解決プロセスから出力された前記データ信号及び前記代入タイミング信号の組と他の階層に属するプロセスからのデータ信号及び代入タイミング信号の組を入力とし、前記代入タイミング信号が変化したいずれかの前記共有変数の値を表すデータ信号及び該データ信号の値が更新されるときに変化する前記代入タイミング信号を出力とする上位階層の値解決プロセスとを生成する手段とを具備することを特徴とするソフトウェア・ハードウェア言語モデル変換装置。 - 前記一つの階層に属するプロセスから前記下位階層の値解決プロセスへの入力を前記上位階層の値解決プロセスへの入力に接続する手段と、前記下位階層の値解決プロセスを削除する手段と、をさらに具備する請求項1に記載のソフトウェア・ハードウェア言語モデル変換装置。
- 仕様記述言語で記述された手続きが階層化されている第1のコードをハードウェア記述言語で記述された並列プロセスが階層化されている第2のコードに変換するソフトウェア・ハードウェア言語モデル変換装置において、
前記第1のコードを前記第2のコードに変換する手段と、
前記第1のコードに記述されたある並行手続きを呼び出す複数の手続きに相当する複数のプロセスを前記第2のコードから検出する手段と、
検出された前記複数のプロセスのうち一つの階層に属するプロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された手続きからの終了信号及び戻り値信号を該プロセスへの出力とする、検出された前記プロセスによる前記並行手続きへの呼び出し動作を排他制御する下位階層の手続き呼び出し解決プロセス及び前記下位階層の手続き呼び出し解決プロセスからの呼び出しタイミング信号及び引数データ信号の組と他の階層に属するプロセスからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された手続きからの終了信号及び戻り値信号を該プロセスへの出力とする、検出された前記プロセスによる前記並行手続きへの呼び出し動作を排他制御する上位回想の手続き呼び出し解決プロセスを生成する手段とを具備することを特徴とするソフトウェア・ハードウェア言語モデル変換装置。 - 前記下位階層の手続き呼び出し解決プロセスへの入力を前記上位階層の手続き呼び出し解決プロセスへの入力に接続する手段と、前記下位階層の手続き呼び出し解決プロセスを削除する手段と、をさらに具備する請求項5記載のハードウェア・ソフトウェア言語モデル変換装置。
- 仕様記述言語で記述された手続きが階層化されている第1のコードをハードウェア記述言語で記述された並列プロセスが階層化されている第2のコードに変換するソフトウェア・ハードウェア言語モデル変換装置において、
ある並行手続きを呼び出す複数の手続きを前記第1のコードから検出する手段と、
前記第1のコードを前記第2のコードに変換する手段と、
検出された前記複数の手続きに相当する複数のプロセスのうち一つの階層に属するプロセスのそれぞれからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された手続きからの終了信号及び戻り値信号を該プロセスへの出力とする、前記複数のプロセスの動作を排他制御する下位階層の手続き呼び出し解決プロセス及び前記下位階層の手続き呼び出し解決プロセスからの呼び出しタイミング信号及び引数データ信号の組と他の階層に属するプロセスからの呼び出しタイミング信号及び引数データ信号の組を入力とし、呼び出された手続きからの終了信号及び戻り値信号を該プロセスへの出力とする、
前記複数のプロセスの動作を排他制御する上位階層の手続き呼び出し解決プロセスを生成する手段とを具備することを特徴とするソフトウェア・ハードウェア言語モデル変換装置。 - 前記下位階層の手続き呼び出し解決プロセスへの入力を前記上位階層の手続き呼び出し解決プロセスへの入力に接続する手段と、前記下位階層の手続き呼び出し解決プロセスを削除する手段と、をさらに具備する請求項7記載のソフトウェア・ハードウェア言語モデル変換装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002024738A JP3901530B2 (ja) | 2001-01-31 | 2002-01-31 | ソフトウェア・ハードウェア言語モデル変換装置及びプログラム |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001-24887 | 2001-01-31 | ||
JP2001024887 | 2001-01-31 | ||
JP2002024738A JP3901530B2 (ja) | 2001-01-31 | 2002-01-31 | ソフトウェア・ハードウェア言語モデル変換装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002304427A JP2002304427A (ja) | 2002-10-18 |
JP3901530B2 true JP3901530B2 (ja) | 2007-04-04 |
Family
ID=26608726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002024738A Expired - Fee Related JP3901530B2 (ja) | 2001-01-31 | 2002-01-31 | ソフトウェア・ハードウェア言語モデル変換装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3901530B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6950635B2 (ja) * | 2018-07-03 | 2021-10-13 | オムロン株式会社 | コンパイル装置およびコンパイル方法 |
-
2002
- 2002-01-31 JP JP2002024738A patent/JP3901530B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002304427A (ja) | 2002-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2791243B2 (ja) | 階層間同期化システムおよびこれを用いた大規模集積回路 | |
CN101051364A (zh) | 一种在办公自动化中基于规则约束的自适应流程方法 | |
JP5147240B2 (ja) | リバーシブルなデザイン・ツリーの変換のための方法とシステム | |
US20040015900A1 (en) | Method and computer program product for software/hardware language model conversion | |
US8527254B2 (en) | Simulator engine development system and simulator engine development method | |
US6360355B1 (en) | Hardware synthesis method, hardware synthesis device, and recording medium containing a hardware synthesis program recorded thereon | |
US8584080B2 (en) | Modeling and generating computer software product line variants | |
KR19980063723A (ko) | 아키텍쳐 시스템 디자인 방법 | |
US6980941B2 (en) | Method and computer program product for realizing a system specification which is described in a system description language | |
JP2006196002A (ja) | 非同期プログラムフローのモデリングを含むソフトウェアツール | |
JP3901530B2 (ja) | ソフトウェア・ハードウェア言語モデル変換装置及びプログラム | |
JP2010073136A (ja) | ホールドタイムエラーの収束方法、収束装置、及び収束プログラム | |
JP2004070810A (ja) | ビジュアルプログラミングシステム、ビジュアルプログラミング方法、ビジュアルプログラミング用プログラム及びそのプログラムを記録した記録媒体 | |
JP2007122187A (ja) | プログラム・コード生成装置 | |
JP2000215224A (ja) | 論理合成用制約生成処理装置及び論理合成用制約生成処理方法 | |
JP5025542B2 (ja) | プロパティ抽出装置及び方法 | |
JP4848772B2 (ja) | プログラム生成装置およびプログラム生成プログラム | |
JP2007287025A (ja) | 画面遷移プログラム生成方法及び装置 | |
US20020143511A1 (en) | Method and computer program product for system design support | |
JP2005084993A (ja) | 故障診断支援装置 | |
JP2005293349A (ja) | 回路設計支援システム、設計方法及びプログラム | |
JP3895934B2 (ja) | 仕様操作装置 | |
Santos et al. | Increasing Quality in Scenario Modelling with Model-Driven Development | |
JP2002229785A (ja) | Gui設計支援装置および方法およびプログラム | |
JP4199816B2 (ja) | 論理合成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060522 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060530 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060731 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060829 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061027 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20061205 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061222 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061226 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120112 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130112 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130112 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140112 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |