(57)【要約】【課題】ハイレベル言語のハードウェア記述言語への自動変換方法の提供。【解決手段】本発明のハイレベル言語のハードウェア記述言語への自動変換方法は、ハイレベル言語が記述する機能を三段階の変換方法によって、対応するハードウェア記述言語を発生させる。その内、第一段階においては、まずハイレベル言語のソースプログラムコードをエクステンドアクティビティダイアグラム（ＥＡＤ）に変換、続いて、第二段階において、アクティビティダイアグラムをハードウェアコンポーネントグラフ（ＨＣＧ）に変換し、最後の第三段階において、ハードウェアコンポーネントグラフ（ＨＣＧ）に基づくオンラインが、対応するＶＨＤＬコンポーネントの信号接続を引き起こし、また、文字列方式によってＶＨＤＬのエンティティ（ｅｎｔｉｔｙ）とアーキテクチャ（Ａｒｃｈｉｔｅｃｔｕｒｅ）を一ファイルに出力して、全変換が完了する。【選択図】図１
2007183900.tif 000002
【特許請求の範囲】
【請求項１】
ハイレベル言語のハードウェア記述言語への自動変換方法は、下記のステップ（Ａ）（Ｂ）（Ｃ）（Ｄ）（Ｅ）を含むことを特徴とし、
（Ａ）はイレベル言語のソースコードを読み取り、
（Ｂ）そのハイレベル言語のソースコードをエクステンドアクティビティダイアグラム（ＥＡＤ）に変換し、
（Ｃ）そのエクステンドアクティビティダイアグラム（ＥＡＤ）をハードウェアコンポーネントグラフ（ＨＣＧ）に変換し、
（Ｄ）そのハードウェアコンポーネントグラフ（ＨＣＧ）をハードウェア記述言語に変換し、
（Ｅ）そのハードウェア記述言語を出力する。
【請求項２】
前記ハイレベル言語はＪａｖａ（登録商標）、Ｃ、もしくはＣ＋＋プログラム言語とすることを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法。
【請求項３】
前記エクステンドアクティビティダイアグラム（ＥＡＤ）は一種のフロー制御図であることを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法。
【請求項４】
前記エクステンドアクティビティダイアグラム（ＥＡＤ）は、スタート（ｓｔａｒｔ）、終了（ｅｎｄ）、仲介点（ｃｕｒｖｅ  ｐｏｉｎｔ）、マイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ）、フォーク（ｆｏｒｋ）、ジョイン（ｊｏｉｎ）、選択（ｓｅｌｅｃｔ）、マージ（ｍｅｒｇｅ）の八種の節点（ｎｏｄｅ）を含むことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法。
【請求項５】
前記ハードウェアコンポーネントグラフ（ＨＣＧ）は、ハードウェアコンポーネントとハードウェアコンポーネント間の接続関係を示すことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法。
【請求項６】
前記ハードウェアコンポーネントグラフ（ＨＣＧ）は、スタート節点、終了節点及びコンポーネント節点の三種形態を含むことを特徴とする請求項５記載のハイレベル言語のハードウェア記述言語への自動変換方法。
【請求項７】
前記ハードウェア記述言語はＶＨＤＬもしくはＶｅｒｉｌｏｇであることを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法。
【請求項８】
前記ステップ（Ａ）は、更に下記ステップを含むことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法、
（Ａ１）はイレベル言語のソースコードを読み取り、
（Ａ２）前記読み取ったソースコードがステートメント命令（ｓｔａｔｅｍｅｎｔ  ｉｎｓｔｒｕｃｔｉｏｎ）でない場合、非ステートメント命令を対応するサブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換し、ステップ（Ａ１）を再実行し、
（Ａ３）前記読み取ったソースコードがステートメント命令である場合、且つ、そのステートメント命令の前方に記述式がある場合、その記述式をサブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換し、
（Ａ４）一つの選択節点（ｓｅｌｅｃｔ ｎｏｄｅ）が発生し、
（Ａ５）二つの仲介点（ｃｕｒｖｅ  ｐｏｉｎｔ）が発生し、その二つの仲介点は選択節点に接続し、
（Ａ６）記述式を対応するサブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換し、
（Ａ７）マージ節点（ｍｅｒｇｅ ｎｏｄｅ）が発生して、サブグラフを合併し、
（Ａ８）前記記述式を、変換後発生するサブグラフ（ｓｕｂ−ｇｒａｐｈ）を通して右仲介点に接続し、
（Ａ９）前記記述式を、変換後発生するサブグラフ（ｓｕｂ−ｇｒａｐｈ）を通してマージ節点に接続し、
（Ａ１０）サブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換していない命令があるかどうか確認し、もしまだあるなら、ステップ（Ａ１）を再実行、さもなければ、完全なサブグラフを出力する。
【請求項９】
前記ステップ（Ａ３）中のステートメント命令には、ｆｏｒ、ｗｈｉｌｅ、ｄｏ、ｉｆ、ｓｗｉｔｃｈ命令を含むことを特徴とする請求項８記載のハイレベル言語のハードウェア記述言語への自動変換方法。
【請求項１０】
前記ステップ（Ｂ）は、更に下記ステップ（Ｂ１）（Ｂ２）（Ｂ３）（Ｂ４）（Ｂ５）を含むことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法、
（Ｂ１）エクステンドアクティビティダイアグラム（ＥＡＤ）中の一サブグラフ（ｓｕｂ−ｇｒａｐｈ）を読み取り、且つ、そのエクステンドアクティビティダイアグラム（ＥＡＤ）のサブグラフ（ｓｕｂ−ｇｒａｐｈ）が全て読み取られた場合、ステップ（B５）を実行し、
（Ｂ２）前記読み取られたサブグラフ（ｓｕｂ−ｇｒａｐｈ）の属する形態がフォーク（ｆｏｒｋ）、ジョイン（ｊｏｉｎ）、マージ（ｍｅｒｇｅ）の内の一つである場合は、対応するハードウェアコンポーネントグラフ（ＨＣＧ）に直接変換、並びにステップ（ＡＥ）を実行し、
（Ｂ３）前記読み取られたサブグラフ（ｓｕｂ−ｇｒａｐｈ）がマイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ）形態であると判断された場合、そのマイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ） サブグラフ（ｓｕｂ−ｇｒａｐｈ）をグラマー分析変換し、並びに、マイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ） サブグラフ（ｓｕｂ−ｇｒａｐｈ）を対応するハードウェアコンポーネントグラフ（ＨＣＧ）に変換し、ステップ（Ｂ１）を再実行し、
（Ｂ４）前記読み取られたサブグラフ（ｓｕｂ−ｇｒａｐｈ）が選択（ｓｅｌｅｃｔ）形態である場合、それらハードウェアコンポーネントグラフ（ＨＣＧ）上の出力端上の表記を分析した後、再度グラマー分析変換をし、並びに、その選択サブグラフ（ｓｅｌｅｃｔ ｓｕｂ−ｇｒａｐｈ）をハードウェアコンポーネントグラフ（ＨＣＧ）に変換した後、ステップ（Ｂ１）を再実行し、
（Ｂ５）前記ハードウェアコンポーネントグラフ（ＨＣＧ）の入力端及び出力端に接続し、完全なハードウェアコンポーネントグラフ（ＨＣＧ）を出力する。
【請求項１１】
ステップ（Ｃ）は、更に下記ステップを含むことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法、
（Ｃ１）はドウェアコンポーネントグラフ（ＨＣＧ）を読み取り、そのハードウェアコンポーネントグラフ（ＨＣＧ）は複数のサブハードウェアコンポーネントグラフを含み、  （Ｃ２）前記ハードウェアコンポーネントグラフ（ＨＣＧ）の一スタート節点（ｓｔａｒｔ ｎｏｄｅ）を探し出して、対応するサブハードウェアコンポーネントグラフを得、  （Ｃ３）前記スタート節点（ｓｔａｒｔ ｎｏｄｅ）の情報を分析することより、入力及び出力のコンポーネントを加えると、ハードウェア記述言語のエンティティ（ｅｎｔｉｔｙ）が、全てのスタート節点（ｓｔａｒｔ ｎｏｄｅ）の分析が完了するまで発生し、  （Ｃ４）はドウェアコンポーネントグラフ（ＨＣＧ）中節点の形態別を判断すると、対応するハードウェア記述言語オブジェクトが発生し、並びに、相関情報をハードウェア記述言語のアーキテクチャ（Ａｒｃｈｉｔｅｃｔｕｒｅ） 内に書き入れ、
（Ｃ５）前記ハードウェアコンポーネントグラフ（ＨＣＧ）のオンラインにより、ハードウェア記述言語に対応する信号接続が起き、
（Ｃ６）文字列方式によりハードウェア記述言語のエンティティ（ｅｎｔｉｔｙ）とアーキテクチャ（Ａｒｃｈｉｔｅｃｔｕｒｅ）を一つのファイルに出力する。
【請求項１２】
ステップ（Ｃ４）内において、コンポーネントコール方式を用いると、対応するハードウェア記述言語オブジェクトが発生することを特徴とする請求項１１記載のハイレベル言語のハードウェア記述言語への自動変換方法。
【請求項１３】
ステップ（Ｃ１）は、前記ハードウェアコンポーネントグラフを修正ハードウェアコンポーネントグラフに変換して、ハードウェア記述言語変換をすることを特徴とする請求項１１記載のハイレベル言語のハードウェア記述言語への自動変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイレベル言語のハードウェア記述言語（ＶＨＤＬ）への自動変換方法に関するものであり、特に、ソースコード（ｓｏｕｒｃｅ  ｃｏｄｅ）をエクステンドアクティビティダイアグラム（Ｅｘｔｅｎｄｅｄ  Ａｃｔｉｖｉｔｙ  Ｄｉａｇｒａｍ：ＥＡＤ）に変換、エクステンドアクティビティダイアグラムをハードウェアコンポーネントグラフ（Ｈａｒｄｗａｒｅ Ｃｏｍｐｏｅｎｔ  Ｇｒａｐｈ： ＨＣＧ）に変換、並びにハードウェアコンポーネントグラフをハードウェア記述言語に変換する三段階変換方式によって、ハイレベル言語をハードウェア記述言語（ＶＨＤＬ）に変換する方法である。
【背景技術】
【０００２】
従来のハイレベル言語（例：Ｊａｖａ（登録商標）、C、C＋＋等）はソースコードが記述する機能を、対応するハードウェア記述言語（例：ＶＨＤＬ）に直接変換することができない。従来のハードウェア記述言語（例：ＶＨＤＬ）がハイレベル言語のプログラムロジックと実行フローの直接記述に適合しない故、ハイレベル言語の記述する機能を、対応するハードウェア記述言語に直接変換することができず、これが設計上の困難を生み出している。また、ハイレベル言語の種類は非常に多い為、設計プログラムの機能は同様であるが、プログラム言語の特性により完全な実行フローに統一することができないのが、ハードウェアコンポーネント設計上の困難点である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記課題を解決するために、本発明のハイレベル言語のハードウェア記述言語への自動変換方法は、下記ステップを含むことを特徴とする、
（Ａ）はイレベル言語のソースコードを読み取る。（Ｂ）はイレベル言語のソースコードをエクステンドアクティビティダイアグラムに変換する。（Ｃ）エクステンドアクティビティダイアグラムをハードウェアコンポーネントグラフに変換する。（Ｄ）はドウェアコンポーネントグラフをハードウェア記述言語に変換する。（Ｅ）そのハードウェア記述言語を出力する。
【０００４】
前記のハイレベル言語のハードウェア記述言語への自動変換方法において、ハイレベル言語は、いかなる従来のプログラム言語をも含めることが可能であり、実施例としてＪａｖａ（登録商標）、C、C＋＋プログラム言語を挙げる。
【０００５】
前記のハイレベル言語のハードウェア記述言語への自動変換方法において、ハードウェア記述言語はいかなる従来のプログラム言語を含めることが可能であり、実施例としてＶＨＤＬ[プログラム言語を挙げる。
【０００６】
前記のハイレベル言語のハードウェア記述言語への自動変換方法において、エクステンドアクティビティダイアグラムは一種のフロー制御図を示す。
【０００７】
前記のハイレベル言語のハードウェア記述言語への自動変換方法において、ハードウェアコンポーネントグラフはハードウェアコンポーネントとハードウェアコンポーネント間の接続関係を示す。
【課題を解決するための手段】
【０００８】
請求項１の発明は、ハイレベル言語のハードウェア記述言語への自動変換方法は、下記のステップ（Ａ）（Ｂ）（Ｃ）（Ｄ）（Ｅ）を含むことを特徴とする、
（Ａ）はイレベル言語のソースコードを読み取る、
（Ｂ）そのハイレベル言語のソースコードをエクステンドアクティビティダイアグラム（ＥＡＤ）に変換する、
（Ｃ）そのエクステンドアクティビティダイアグラム（ＥＡＤ）をハードウェアコンポーネントグラフ（ＨＣＧ）に変換する、
（Ｄ）そのハードウェアコンポーネントグラフ（ＨＣＧ）をハードウェア記述言語に変換する、
（Ｅ）そのハードウェア記述言語を出力する。
請求項２の発明は、前記ハイレベル言語はＪａｖａ（登録商標）、Ｃ、もしくはＣ＋＋プログラム言語とすることを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法としている。
請求項３の発明は、前記エクステンドアクティビティダイアグラム（ＥＡＤ）は一種のフロー制御図であることを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法としている
請求項４の発明は、前記エクステンドアクティビティダイアグラム（ＥＡＤ）は、スタート（ｓｔａｒｔ）、終了（ｅｎｄ）、仲介点（ｃｕｒｖｅ  ｐｏｉｎｔ）、マイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ）、フォーク（ｆｏｒｋ）、ジョイン（ｊｏｉｎ）、選択（ｓｅｌｅｃｔ）、マージ（ｍｅｒｇｅ）の八種の節点（ｎｏｄｅ）を含むことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法としている。
請求項５の発明は、前記ハードウェアコンポーネントグラフ（ＨＣＧ）は、ハードウェアコンポーネントとハードウェアコンポーネント間の接続関係を示すことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法としている。
請求項６の発明は、前記ハードウェアコンポーネントグラフ（ＨＣＧ）は、スタート節点、終了節点及びコンポーネント節点の三種形態を含むことを特徴とする請求項５記載のハイレベル言語のハードウェア記述言語への自動変換方法としている。
請求項７の発明は、前記ハードウェア記述言語はＶＨＤＬもしくはＶｅｒｉｌｏｇであることを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法としている。
請求項８の発明は、前記ステップ（Ａ）は、更に下記ステップを含むことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法、
（Ａ１）はイレベル言語のソースコードを読み取る、
（Ａ２）前記読み取ったソースコードがステートメント命令（ｓｔａｔｅｍｅｎｔ  ｉｎｓｔｒｕｃｔｉｏｎ）でない場合、非ステートメント命令を対応するサブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換し、ステップ（A１）を再実行する、
（Ａ３）前記読み取ったソースコードがステートメント命令である場合、且つ、そのステートメント命令の前方に記述式がある場合、その記述式をサブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換する、
（Ａ４）一つの選択節点（ｓｅｌｅｃｔ ｎｏｄｅ）が発生する、
（Ａ５）二つの仲介点（ｃｕｒｖｅ  ｐｏｉｎｔ）が発生し、その二つの仲介点は選択節点に接続する、
（Ａ６）記述式を対応するサブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換する、
（Ａ７）マージ節点（ｍｅｒｇｅ ｎｏｄｅ）が発生して、サブグラフを合併する、
（Ａ８）前記記述式を、変換後発生するサブグラフ（ｓｕｂ−ｇｒａｐｈ）を通して右仲介点に接続する、
（Ａ９）前記記述式を、変換後発生するサブグラフ（ｓｕｂ−ｇｒａｐｈ）を通してマージ節点に接続する、
（Ａ１０）サブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換していない命令があるかどうか確認し、もしまだあるなら、ステップ（Ａ１）を再実行、さもなくば、完全なサブグラフを出力する。
請求項９の発明は、前記ステップ（Ａ３）中のステートメント命令には、for、while、do、if、switch命令を含むことを特徴とする請求項８記載のハイレベル言語のハードウェア記述言語への自動変換方法としている。
請求項１０の発明は、前記ステップ（Ｂ）は、更に下記ステップ（Ｂ１）（Ｂ２）（Ｂ３）（Ｂ４）（Ｂ５）を含むことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法、
（Ｂ１）エクステンドアクティビティダイアグラム（ＥＡＤ）中の一サブグラフ（ｓｕｂ−ｇｒａｐｈ）を読み取り、且つ、そのエクステンドアクティビティダイアグラム（ＥＡＤ）のサブグラフ（ｓｕｂ−ｇｒａｐｈ）が全て読み取られた場合、ステップ（B５）を実行する、
（Ｂ２）前記読み取られたサブグラフ（ｓｕｂ−ｇｒａｐｈ）の属する形態がフォーク（ｆｏｒｋ）、ジョイン（ｊｏｉｎ）、マージ（ｍｅｒｇｅ）の内の一つである場合は、対応するハードウェアコンポーネントグラフ（ＨＣＧ）に直接変換、並びにステップ（A）を実行する、
（Ｂ３）前記読み取られたサブグラフ（ｓｕｂ−ｇｒａｐｈ）がマイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ）形態であると判断された場合、そのマイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ） サブグラフ（ｓｕｂ−ｇｒａｐｈ）をグラマー分析変換し、並びに、マイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ） サブグラフ（ｓｕｂ−ｇｒａｐｈ）を対応するハードウェアコンポーネントグラフ（ＨＣＧ）に変換し、ステップ（Ｂ１）を再実行する、
（Ｂ４）前記読み取られたサブグラフ（ｓｕｂ−ｇｒａｐｈ）が選択（ｓｅｌｅｃｔ）形態である場合、それらハードウェアコンポーネントグラフ（ＨＣＧ）上の出力端上の表記を分析した後、再度グラマー分析変換をし、並びに、その選択サブグラフ（ｓｅｌｅｃｔ ｓｕｂ−ｇｒａｐｈ）をハードウェアコンポーネントグラフ（ＨＣＧ）に変換した後、ステップ（Ｂ１）を再実行する、
（Ｂ５）前記ハードウェアコンポーネントグラフ（ＨＣＧ）の入力端及び出力端に接続し、完全なハードウェアコンポーネントグラフ（ＨＣＧ）を出力する。
請求項１１の発明は、ステップ（Ｃ）は、更に下記ステップを含むことを特徴とする請求項１記載のハイレベル言語のハードウェア記述言語への自動変換方法、
（Ｃ１）はドウェアコンポーネントグラフ（ＨＣＧ）を読み取り、そのハードウェアコンポーネントグラフ（ＨＣＧ）は複数のサブハードウェアコンポーネントグラフを含む、  （Ｃ２）前記ハードウェアコンポーネントグラフ（ＨＣＧ）の一スタート節点（ｓｔａｒｔ ｎｏｄｅ）を探し出して、対応するサブハードウェアコンポーネントグラフを得る、
（Ｃ３）前記スタート節点（ｓｔａｒｔ ｎｏｄｅ）の情報を分析することより、入力及び出力のコンポーネントを加えると、ハードウェア記述言語のエンティティ（ｅｎｔｉｔｙ）が、全てのスタート節点（ｓｔａｒｔ ｎｏｄｅ）の分析が完了するまで発生する、
（Ｃ４）はドウェアコンポーネントグラフ（ＨＣＧ）中節点の形態別を判断すると、対応するハードウェア記述言語オブジェクトが発生し、並びに、相関情報をハードウェア記述言語のアーキテクチャ（Ａｒｃｈｉｔｅｃｔｕｒｅ） 内に書き入れる、
（Ｃ５）前記ハードウェアコンポーネントグラフ（ＨＣＧ）のオンラインにより、ハードウェア記述言語に対応する信号接続が起きる、
（Ｃ６）文字列方式によりハードウェア記述言語のエンティティ（ｅｎｔｉｔｙ）とアーキテクチャ（Ａｒｃｈｉｔｅｃｔｕｒｅ）を一つのファイルに出力する。
請求項１２の発明は、ステップ（Ｃ４） 内において、コンポーネントコール方式を用いると、対応するハードウェア記述言語オブジェクトが発生することを特徴とする請求項１１記載のハイレベル言語のハードウェア記述言語への自動変換方法としている。
請求項１３の発明は、ステップ（Ｃ１）は、前記ハードウェアコンポーネントグラフを修正ハードウェアコンポーネントグラフに変換して、ハードウェア記述言語変換をすることを特徴とする請求項１１記載のハイレベル言語のハードウェア記述言語への自動変換方法としている。
【発明の効果】
【０００９】
以上説明したように、本発明のハイレベル言語（例：Ｊａｖａ（登録商標）、Ｃ、Ｃ＋＋）のハードウェア記述言語（ＶＨＤＬ）への自動変換方法は、３段階の変換メカニズムにより、ハイレベル言語の記述する機能を対応するハードウェア記述言語に直接変換することを特徴とする。それは、ハイレベル言語の種類に制限を受けず、且つ、完全な実行フローに統一でき、ハードウェアコンポーネント設計上の困難とならない効果をもつ。
【発明を実施するための最良の形態】
【００１０】
従来方法では、ハイレベル言語を直接ハードウェア記述言語に変換不可能である為、本発明では、一種の三段階変換方法を提案する。それは、図１に示すとおりであり、ハイレベル言語（例：Ｊａｖａ（登録商標）、Ｃ、Ｃ＋＋）が記述する機能をソースコードによってエクステンドアクティビティダイアグラムに変換（Ｓｏｕｒｃｅ  ｃｏｄｅ→ＥＡＤ）、エクステンドアクティビティダイアグラムをハードウェアコンポーネントグラフに変換（ＥＡＤ→ＨＣＧ）、並びにハードウェアコンポーネントグラフをハードウェア記述言語に変換（ＨＣＧ→ＶＨＤＬ）する三段階変換方法によって、ハイレベル言語をハードウェア記述言語に自動的に変換する。図１に示すとおり、第一段階（Ｓｏｕｒｃｅ  ｃｏｄｅ→ＥＡＤ）では、まずハイレベル言語のソースコードを読み取り（ステップＳ１０１）、そのハイレベル言語のソースコードをエクステンドアクティビティダイアグラムに変換（ステップＳ１０２）、続いて第二段階（ＥＡＤ→ＨＣＧ）では、エクステンドアクティビティダイアグラムをハードウェアコンポーネントグラフに変換（ステップＳ１０３）、最後に第三段階（ＨＣＧ→ＶＨＤＬ）ではハードウェアコンポーネントグラフの接続によって、対応するハードウェア記述言語（ＶＨＤＬの信号接続）が発生（ステップＳ１０４）、並びに、文字列によりＶＨＤＬのエンティティ（ｅｎｔｉｔｙ）とアーキテクチャ（Ａｒｃｈｉｔｅｃｔｕｒｅ）が一ファイルに出力されると、対応するハードウェア記述言語（例：ＶＨＤＬプログラムコード）が発生する（ステップＳ１０５）。
【００１１】
前述したとおり、第一段階においては、ハイレベル言語のソースコードを中間フォームであるアクティビティダイアグラム（Ａｃｔｉｖｉｔｙ  Ｄｉａｇｒａｍ：ＡＤ）に変換、そのアクティビティダイアグラムとは、一種のフロー記述図である。図２には、ユーエムエル（ＵＭＬ：Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）に定義するアクティビティダイアグラムを示す。それは、アクション状態（Ａｃｔｉｏｎ  ｓｔａｔｅ）、フォーク（ｆｏｒｋ）、ジョイン（ｊｏｉｎ）、選択（ｓｅｌｅｃｔ） 及びマージ（ｍｅｒｇｅ）の五種のコンポーネントグラフを含んでおり、本発明においては、あるプログラムに必要な情報を保留する為に、アクティビティダイアグラムのコンポーネントを一部修正する必要があり、使用するアクティビティダイアグラムをエクステンドアクティビティダイアグラム（Ｅｘｔｅｎｄｅｄ  ａｃｔｉｖｉｔｙ  ｄｉａｇｒａｍ：ＥＡＤ）と呼ぶ。図３を参照されたい。
【００１２】
図３のとおり、エクステンドアクティビティダイアグラム（ＥＡＤ）は、ハイレベル言語のソースコードを対応するフローに変換する制御図で、複数の節点（ｎｏｄｅ）により構成され、異なる節点を組み合わせてサブグラフ（ｓｕｂ−ｇｒａｐｈ）を構成、各サブグラフにはそれぞれ、スタート、実行、終了等三つの部分を含む。本発明実施例において、多種異なる節点を定義した。下記に各種異なる節点を一つ一つ説明する、
（１）スタート（ｓｔａｒｔ）節点：一つのサブグラフの始まりを示す、
（２）終了（ｅｎｄ）節点：一つのサブグラフの終わりを示す、
（３）仲介点（ｃｕｒｖｅ  ｐｏｉｎｔ）節点：二つの方向性のある接続線（edge）の接続を示し、実行に対しては実際影響はなく、通常、変換過程を便利にする為の臨時用途に用いる、
（４）マイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ）節点：一つの式文（ｅｘｐｒｅｓｓｉｏｎ  ｓｔａｔｅｍｅｎｔ） もしくは表現方法（ｅｘｐｒｅｓｓｉｏｎ）の処理を示す、
（５）フォーク（ｆｏｒｋ）節点：平行実行を示す、
（６）ジョイン（ｊｏｉｎ）節点：全マイクロ演算が到達した時のみにある出力信号発信を示す、
（７）選択（ｓｅｌｅｃｔ）節点：デコードした後、一つの適当な出力信号が選択発信することを示す、
（８）マージ（ｍｅｒｇｅ）節点：入力信号に合併を加えた後出力することを示す。
【００１３】
前記の各節点を一つのオブジェクトとする。そのオブジェクト中に二つのデータ形態を記録し、自らの節点（Ｉｎ−Ｎｏｄｅ）に接続したこと及び自らがその他相関節点（Ｏｕｔ−Ｎｏｄｅ）と接続したことを示し、その節点形態はグラマーに従い変化する。各グラマーを分析する場合、対応するサブグラフが必ず発生する。また、そのサブグラフのイン節点（Ｉｎ−Ｎｏｄｅ） 及びアウト節点（Ｏｕｔ−Ｎｏｄｅ）を記録して、その他サブグラフの接続に使用する。この接続方式に基づき、各グラマー中のサブグラフ発生にもまた、同様方式を使用する。各サブグラフに繋いだ後、プログラムソースコードは対応するアクティビティダイアグラムに変換され、ソースコードのプログラムロジックと実行フローが視覚化される。
【００１４】
図４にハイレベル言語のエクステンドアクティビティダイアグラムへの自動変換フローを示す。図４に示すとおり、ＪＡＶＥ（登録商標）プログラム言語を例に挙げて、ＪＡＶＥ（登録商標）プログラムをエクステンドアクティビティダイアグラムに実際に変換する。それは、Ｊａｖａ（登録商標）ＣＣ（Ｊａｖａ（登録商標） Ｃｏｍｐｉｌｅｒ Ｃｏｍｐｉｌｅｒ）の定義するＪａｖａ（登録商標）標準グラマー規格を基礎とし（ＪＤＫ： Ｊａｖａ（登録商標） Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ １．５を使用）、Ｊａｖａ（登録商標）ＣＣのグラマーファイル（ｇｒａｍｍａｒ  ｆｉｌｅ）内に一つのＪａｖａ（登録商標）プログラムを加えると、修正済みのＪａｖａ（登録商標）グラマーファイルが発生する。また、Ｊａｖａ（登録商標）ＣＣがこのＪａｖａ（登録商標）グラマーファイルに基づき、Ｊａｖａ（登録商標）解析器（Ｊａｖａ（登録商標） Ｐａｒｓｅｒ） 類別及びＪａｖａ（登録商標）解析器が使用を必要とするその他類別を発生させ、これにより起きたＪａｖａ（登録商標）解析器類別は、Ｊａｖａ（登録商標）ソースコードから対応するエクステンドアクティビティダイアグラム（ＥＡＤ）への変換機能を提供する。本発明の実施例において、Ｊａｖａ（登録商標）解析器類別をパソコン補助回路のソフト設計内に整合することにより、ソフトにＪａｖａ（登録商標）ソースコードをエクステンドアクティビティダイアグラム（ＥＡＤ）に変換する機能を持たせる。続いて、完全なＪａｖａ（登録商標）ソースコードをＪａｖａ（登録商標）解析器内に送信すると、Ｊａｖａ（登録商標）解析器は、プログラム内の異なるトークン（ｔｏｋｅｎ）に基づき、グラマーファイル内に対応して、エクステンドアクティビティダイアグラム（ＥＡＤ）の命令を新発生させる。
【００１５】
本発明は、完全な変換フローを提案する。まず、図５を参照されたい。ソースコードを対応するエクステンドアクティビティダイアグラムに自動変換する場合、まずは、ハイレベル言語（ｈｉｇｈ  ｌｅｖｅｌ  ｌａｎｇｕａｇｅ）のソースコードを読み取り（ステップＳ５０１）、続いて、ソースコードの形態が一つのステートメント命令（ｓｔａｔｅｍｅｎｔ  ｉｎｓｔｒｕｃｔｉｏｎ）であるかどうかを判断する（ステップＳ５０２）。本実施例において、ステートメント命令は、ｆｏｒ、ｗｈｉｌｅ、ｄｏ、ｉｆ、ｓｗｉｔｃｈ命令を含む。ソースコードの形態が前述ステートメント命令中の任意の一つでない場合、この非ステートメント命令は、対応するサブグラフに直接変換され（ステップＳ５０３）、新に次のハイレベル言語のソースコードを読み取る（ステップＳ５０１）。
【００１６】
ステップＳ５０２において、ソースコードが一ステートメント命令であると判断された場合、条件表現式の前方に一つのステートメント（ｓｔａｔｅｍｅｎｔ）があるかどうかを再度判断する必要があり（ステップＳ５０４）、もしステートメントが条件表現式前方にあったなら、まずステートメントを対応するサブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換する（ステップＳ５０５）。
【００１７】
もし、ステートメントが条件表現式の前方になければ、選択節点（ｓｅｌｅｃｔ ｎｏｄｅ）が直接発生する（ステップＳ５０６）。続いて、二つの仲介点（ｃｕｒｖｅ  ｐｏｉｎｔ）を発生させ（ステップＳ５０７）、その二つの仲介点は選択節点に接続する。その後、更にステートメントを対応するサブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換（ステップＳ５０８）した後、マージ節点（ｍｅｒｇｅ ｎｏｄｅ）が発生して、サブグラフを合併する（ステップＳ５０９）。更にそのステートメントを、変換後発生するサブグラフ（ｓｕｂ−ｇｒａｐｈ）を経由して右仲介点に接続（ステップＳ５１０）、そのステートメントを、変換後発生するサブグラフ（ｓｕｂ−ｇｒａｐｈ）を経由してマージ節点に接続（ステップＳ５１１）、最後に、サブグラフ（ｓｕｂ−ｇｒａｐｈ）にまだ変換していない命令があるかどうか再度判断し（ステップＳ５１２）、もしまだあるなら、ステップＳ５０１に戻り次のハイレベル言語のソースコードを再度読み取り、もし変換が必要な命令がもうない場合は、完全なエクステンドアクティビティダイアグラム（ＥＡＤ）を出力する（ステップＳ５１３）。
【００１８】
前述ステップにより、完全なＪａｖａ（登録商標）プログラム言語を対応するエクステンドアクティビティダイアグラム（ＥＡＤ）に変換、ソースコードのプログラムロジックと実行フローが視覚的に現れる。図６及び図７を参照されたい。図６は、イフステートメント（Ｉｆ  Ｓｔａｔｅｍｅｎｔ） 及びそれに記入されたプログラムを利用したもので、前述の変換フローと規則に基づき、対応するエクステンドアクティビティダイアグラム（ＥＡＤ）に変換することができる図は図７に示す。この他、同様のプログラムもまた、前述の転換フローと規則を用いて、対応するエクステンドアクティビティダイアグラム（ＥＡＤ）に変換可能である。Ｊａｖａ（登録商標）プログラムグラマーが異なる故、ここで発生するエクステンドアクティビティダイアグラムもまた異なるものとなる。
【００１９】
前述の変換後、第一段階の変換は完了、続いて、第二段階の変換では、エクステンドアクティビティダイアグラムをハードウェアコンポーネントグラフ（ＨＣＧ）に変換、ＨＣＧはハイレベル言語とハードウェア間の関係を表している。
【００２０】
図８〜１０に示すハードウェアコンポーネントグラフの図形規格図を参照すると、ハードウェアコンポーネントグラフ（ＨＣＧ）は三種形態に分けられている、
（１）スタート節点（ｓｔａｒｔ ｎｏｄｅ）：図８に示すとおり、スタート節点は、Ｊａｖａ（登録商標）プログラムのクラス名（ｃｌａｓｓ  ｎａｍｅ）、方法名（ｍｅｔｈｏｄ ｎａｍｅ）、パラメータ（ｐａｒａｍｅｔｅｒ）、ローカル変数（ｌｏｃａｌ ｖａｒｉａｂｌｅ）、グローバル変数（ｇｌｏｂａｌ ｖａｒｉａｂｌｅ）、リターンタイプ（ｒｅｔｕｒｎ  ｔｙｐｅ）を記録する。その定義は下記のとおりである、
ａ．方法（ｍｅｔｈｏｄ）の情報。方法の名称及びその修飾子（ｍｏｄｉｆｉｅｒ）を含む、
ｂ．リターンバリューの情報。その形態、ビットの大きさ及びリターンバリュー名称を含む、
ｃ．パラメータ（ｐａｒａｍｅｔｅｒ）の情報。その形態、ビットの大きさ及びパラメータ名称を含む、
ｄ．ローカル変数（local ｖａｒｉａｂｌｅ）の情報。形態、ビットの大きさ及びローカル変数名称を含む。
（２）終了節点（ｅｎｄ ｎｏｄｅ）：図９に示すとおり、終了節点は、方法（ｍｅｔｈｏｄ）が既に終了したことを示し、リターンしたい変数を表示する。その内、終了節点の内容はリターンしたい変数の名称であり、いかなる変数もリターンしない場合のキーワードは、ＶＯＩＤである、
（３）コンポーネント節点（ｃｏｍｐｏｎｅｎｔ ｎｏｄｅ）：図１０に示すとおり、コンポーネント節点は、レジスター（ｒｅｇｉｓｔｅｒ）、フォーク（ｆｏｒｋ）、アダー（adder）等ハードウェアコンポーネントを表示し、節点と節点間は一つの方向線により接続、並びにスタートオブジェクトの某アウトプットポート（Ｏｕｔput port） から目標オブジェクトの某インプットポート（input port）に接続することを表示する。
【００２１】
また、コンポーネント節点（ｃｏｍｐｏｎｅｎｔ ｎｏｄｅ）は、更に二つの主要部分に細分化できる、
（１）コントロールパスモジュール（Ｃｏｎｔｒｏｌ ｐａｔｈ  ｍｏｄｕｌｅ） 。図１１を参照すると、それは以下を含む、
（ａ）Ｑエレメント（Ｑ−ｅｌｅｍｅｎｔ）は、その対応するハードウェアが実行する場合、順序に基づいて実行することを示す、
（ｂ）フォークエレメント（Ｆｏｒｋ−ｅｌｅｍｅｎｔ）は、対応するハードウェアが実行する場合並行実行することを示す、
（ｃ）ジョインエレメント （ Ｊｏｉｎ−ｅｌｅｍｅｎｔ）は、対応するハードウェアの相関演算が全て到達した場合にのみ、出力信号の発信があることを示す、
（ｄ）でコーダエレメント（Ｄｅｃｏｄｅｒ−ｅｌｅｍｅｎｔ）は、対応するハードウェアのデコード後、一つの適当な出力信号を選択発信することを示す、
（ｅ）マージエレメント （Ｍｅｒｇｅ  ｅｌｅｍｅｎｔ）は、対応するハードウェアが入力信号を合併して出力することを示す、
（２）でタパスモジュール（Ｄａｔａ  ｐａｔｈ  ｍｏｄｕｌｅ）は図１２を参照し、それは下記を含む、
（ａ）演算装置（ＡＬＵ：Ａｒｉｔｈｍｅｔｉｃ ａｎｄ  ｌｏｇｉｃ  Ｕｎｉｔ） ：ＡＮＤ−ｅｌｅｍｅｎｔ、ＯＲ−ｅｌｅｍｅｎｔ、ＸＯＲ−ｅｌｅｍｅｎｔ、ＡＤＤ−ｅｌｅｍｅｎｔ 、ＳＵＢ−ｅｌｅｍｅｎｔ、ＭＵＬ−ｅｌｅｍｅｎｔ、ＤＩＶ−ｅｌｅｍｅｎｔ、
（ｂ）レジスターエレメント：ｒｅｇｉｓｔｅｒ−ｅｌｅｍｅｎｔ、
（ｃ）マルチプレクサ及びデマルチプレクサ：Ｒｍｕｘｄｅｍｕｘ−ｅｌｅｍｅｎｔ、Ｗｍｕｘｄｅｍｕｘ−ｅｌｅｍｅｎｔ、
（ｄ）常数（Ｃｏｎｓｔａｎｔｓ）：ｃｏｎｓｔａｎｔ−ｅｌｅｍｅｎｔ。
【００２２】
その内、コンポーネント節点の内容表現法は下記二つに分けられる、
（１）レジスターエレメント、常数等ラベル（ｌａｂｅｌ）によって区別が必要な表現法は、
コンポーネント名称＿変数名称（Ｃｏｍｐｏｎｅｎｔ ｎａｍｅ ＿ ｖａｒｉａｂｌｅ ｎａｍｅ）
、
（２）マイクロ演算（ＭｉｃｒｏＯＰ）、シーエムピー（ＣＭＰ）、マージ（Ｍｅｒｇｅ）等ラベルによる区別が不必要な表現法は、コンポーネント名称（Ｃｏｍｐｏｎｅｎｔ ｎａｍｅ）。
【００２３】
節点間オンラインの表現法は：スタート点の出力端→目標点の入力端。
【００２４】
前記のハードウェアコンポーネントグラフの図形規格図を用いて、エクステンドアクティビティダイアグラム（ＥＡＤ）をハードウェアコンポーネントと比較的関連性のあるハードウェアコンポーネントグラフに変換することができる。
【００２５】
図１３に、エクステンドアクティビティダイアグラム（ＥＡＤ）のハードウェアコンポーネントグラフ（ＨＣＧ）への変換のフローチャートを示す。まず、そのエクステンドアクティビティダイアグラム（ＥＡＤ）中の一サブグラフ（ｓｕｂ−ｇｒａｐｈ）を読み取り（ステップＳ８０１）、続いて、その読み取ったサブグラフ（ｓｕｂ−ｇｒａｐｈ）の属する形態を判断（ステップＳ８０２）、その読み取ったサブグラフ（ｓｕｂ−ｇｒａｐｈ）の形態がフォーク（ｆｏｒｋ）、ジョイン（ｊｏｉｎ）、マージ（ｍｅｒｇｅ）中の一つである場合は、対応するハードウェアコンポーネントグラフ（ＨＣＧ）に直接変換（ステップＳ８０３）、その後、再度そのエクステンドアクティビティダイアグラム（ＥＡＤ）中のサブグラフ（ｓｕｂ−ｇｒａｐｈ）は、全てのサブグラフ（ｓｕｂ−ｇｒａｐｈ）が読み取られて対応するハードウェアコンポーネントグラフ（ＨＣＧ）に変換されるまで読み取られる。
【００２６】
ステップＳ８０２において、その読み取られたサブグラフ（ｓｕｂ−ｇｒａｐｈ）がマイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ）形態であると判断した場合、マイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ） サブグラフ（ｓｕｂ−ｇｒａｐｈ）がグラマー分析変換をし（ステップＳ８０４）、更に選択サブグラフ（ｓｕｂ−ｇｒａｐｈ）を対応するハードウェアコンポーネントグラフ（ＨＣＧ）に変換した（ステップＳ８０６）後、再度そのアクティビティダイアグラム中の一サブグラフ（ｓｕｂ−ｇｒａｐｈ）は、全てのサブグラフ（ｓｕｂ−ｇｒａｐｈ）が読み取られて対応するハードウェアコンポーネントグラフ（ＨＣＧ）に変換されるまで読み取られる。
【００２７】
ステップＳ８０２において、その読み取られたサブグラフ（ｓｕｂ−ｇｒａｐｈ）が選択（ｓｅｌｅｃｔ）形態であると判断した場合は、まずそれらハードウェアコンポーネントグラフ（ＨＣＧ）上の出力端上の表記（ｌａｂｅｌ）を分析し（ステップＳ８０５）、その後、選択サブグラフ（ｓｕｂ−ｇｒａｐｈ）に対してグラマー分析変換を行い（ステップＳ８０４）、更に選択サブグラフ（ｓｕｂ−ｇｒａｐｈ）を対応するハードウェアコンポーネントグラフ（ＨＣＧ）に変換（ステップＳ８０６）、全てのサブグラフ（ｓｕｂ−ｇｒａｐｈ）が読み取られ対応するハードウェアコンポーネントグラフ（ＨＣＧ）に変換された後、接続線がそれらのハードウェアコンポーネントグラフ（ＨＣＧ）の入力端及び出力端に接続し（ステップＳ８０８）、最後に完全なハードウェアコンポーネントグラフ（ＨＣＧ）を出力する（ステップＳ８０９）。
【００２８】
前述のステップによる、一つの完全なエクステンドアクティビティダイアグラム（ＥＡＤ）の対応するハードウェアコンポーネントグラフ（ＨＣＧ）への変換は、図１４に示すとおりである。その内、最上面の節点はスタート節点（ｓｔａｒｔ ｎｏｄｅ）であり、スタート節点（ｓｔａｒｔ ｎｏｄｅ）は、それぞれＪａｖａ（登録商標）プログラム中の類別（ｃｌａｓｓ） 情報と方法（ｍｅｔｈｏｄ） 情報を記録する。図１４中最下方の節点は終了節点（ｅｎｄ ｎｏｄｅ）であり、終了節点（ｅｎｄ ｎｏｄｅ）は、この方法（ｍｅｔｈｏｄ）が既に終了しリターンバリューを要求することを示す。図１４に示すとおり、その他の節点は、レジスター（ｒｅｇｉｓｔｅｒ）、マイクロ演算（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ）、フォーク（ｆｏｒｋ） 及びアダー（ａｄｄｅｒ）等ハードウェアコンポーネントをそれぞれ表示し、また、節点と節点間は、方向性のある接続線によって表示され、スタートオブジェクトのアウトプットポート（ｏｕｔｐｕｔ  ｐｏｒｔ） から目標オブジェクトのインプットポート（ｉｎｐｕｔ  ｐｏｒｔ） まで接続される。
【００２９】
前述の変換後、第二段階の変換が完了する。続いて、第三段階の変換を行う。ハードウェアコンポーネントグラフ（ＨＣＧ）に基づくオンラインにより、対応するＶＨＤＬコンポーネントの信号接続が起き、並びに文字列方式でＶＨＤＬのエンティティ（ｅｎｔｉｔｙ）とアーキテクチャ（Ａｒｃｈｉｔｅｃｔｕｒｅ）を一ファイルに出力し、全変換が完了する。
【００３０】
図１５は、本発明のハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬハードウェア記述言語への変換フローチャートである。まず、ハードウェアコンポーネントグラフ（ＨＣＧ）を読み取り（ステップS１００１）、その内そのハードウェアコンポーネントグラフ（ＨＣＧ）は複数のサブハードウェアコンポーネントグラフを含む。続いて、ハードウェアコンポーネントグラフを修正し（ステップＳ１００３）はドウェアコンポーネントグラフ（ＨＣＧ）と実際のハードウェアコンポーネント間に全く関連性がない故、ハードウェアコンポーネントグラフ（ＨＣＧ）を直接ＶＨＤＬハードウェア記述言語に変換することができない。よって、ハードウェアコンポーネントグラフ（ＨＣＧ）をまず先に修正することが必要で、これにより、修正後のハードウェアコンポーネントグラフ（ＨＣＧ）中のコンポーネントをＶＨＤＬハードウェア記述言語のコンポーネントに対応させることができる。
【００３１】
本実施例を、図１６のＪａｖａ（登録商標）加算回路を例に説明する。図１７は、そのＪａｖａ（登録商標）加算回路に対応するハードウェアコンポーネントグラフ（ＨＣＧ）である。まず、類別情報（ｃｌａｓｓ  ｉｎｆｏ） 及びハードウェアコンポーネントグラフ（ＨＣＧ）を通して、ハードウェアコンポーネントグラフ（ＨＣＧ）中に対応するパブリックメソッド（ｐｕｂｌｉｃ ｍｅｔｈｏｄ）を探し出し、並びにパブリックメソッド（ｐｕｂｌｉｃ  ｍｅｔｈｏｄ） 部分をメソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ） より類別スタート節点（ｃｌａｓｓ ｓｔａｒｔ ｎｏｄｅ）にライン接続する。その接続ライン上の表示は、"ｍｅｔｈｏｄ＿ｎａｍｅ ｒｅｑ４ｐ"であり、これにより、このパブリックメソッド（ｐｕｂｌｉｃ  ｍｅｔｈｏｄ）は対応するハードウェアインターフェイス上の一つの名称：ｍｅｔｈｏｄ＿ｎａｍｅＲｅｑ４ｐの入力信号を持つことを示す。その入力信号は、メソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ）の一つの名称：ｒｅｑ４ｐ ポート（ｐｏｒｔ）に繋がる。並びに、類別スタート節点（ｃｌａｓｓ ｓｔａｒｔ ｎｏｄｅ） よりメソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ）にライン接続する。その接続ライン上の表示は"ａｃｋ４ｐ ｍｅｔｈｏｄ＿ｎａｍｅ"であり、最後にメソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ）のａｃｋ４ｐ ポート（ｐｏｒｔ） よりハードウェアインターフェイス上の一つの名称：ｍｅｔｈｏｄ＿ｎａｍｅＡｃｋ４ｐ の出力信号にライン接続する（図１８に示す）。
【００３２】
各リターン（ｒｅｔｕｒｎ）が一つのデータを送信し、並びに終了信号をスタート節点（ｓｔａｒｔ ｎｏｄｅ）にリターンする為、判断式にぶつかった場合、異なるリターンバリューとなる。この時、マージマルチプルリターン節点（ｍｅｒｇｅ  ｍｕｔｉｐｌｅ  ｒｅｔｕｒｎ ｎｏｄｅ）が必要となる。まず、全てのリターンバリュー（ｒｅｔｕｒｎ  ｖａｌｕｅ）をレジスター（ｒｅｇｉｓｔｅｒ）に入れる。このレジスター（ｒｅｇｉｓｔｅｒ）を"ｒｅｔＭｅｔｈｏｄ＿ｎａｍｅ"と命名する。更にマージエレメント（Ｍｅｒｇｅ ｅｌｅｍｅｎｔ）によって信号ラインを一つの終了節点（ｅｎｄ ｎｏｄｅ）に接続する。その表示名は、"ｒｅｔｕｒｎ ｒｅｔＭｅｔｈｏｄ＿ｎａｍｅ"である。終了節点（ｅｎｄ ｎｏｄｅ）はただ単にフロー上の終了を示しているだけなので、ハードウェア中にはいかなる意味も示していない。且つ、非同時システムにおいて終了実行することは、ＡＣＫ信号（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）がリターンされることを意味しており、よって、終了節点（ｅｎｄ ｎｏｄｅ）を削除しメソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ）に再接続する（図１９に示す）。
【００３３】
類別情報（ｃｌａｓｓ ｉｎｆｏ） 及びハードウェアコンポーネントグラフ（ＨＣＧ）を通して、ハードウェアコンポーネントグラフ（ＨＣＧ）に対応するどのパラメータ（ｐａｒａｍｅｔｅｒ）とリターンバリュー（ｒｅｔｕｒｎ  ｖａｌｕｅ）が公開（ｐｕｂｌｉｃ）であるかを知ることができる。公開のパラメータ（ｐａｒａｍｅｔｅｒ）とリターンバリュー（ｒｅｔｕｒｎ  ｖａｌｕｅ）を類別スタート節点（ｃｌａｓｓ ｓｔａｒｔ ｎｏｄｅ）に繋ぐことは、これらの節点が対応するハードウェアインターフェイスを持ち外部信号を出力入できることを示す。パラメータ の一部は、類別スタート節点（ｃｌａｓｓ ｓｔａｒｔ ｎｏｄｅ） からパラメータのレジスター節点（ｒｅｇｉｓｔｅｒ ｎｏｄｅ） までの入力信号を受信する。その表示は、"ｐａｒａｍｅｔｅｒ＿ｎａｍｅ"であり、データがハードウェアインターフェイスからレジスターに入力されたことを示す。また、パラメータのレジスター節点（ｒｅｇｉｓｔｅｒ ｎｏｄｅ） からハードウェアインターフェイスまで信号ラインを繋ぎ、その表示は、"ａｃｋ４ｐ ｐａｒａｍｅｔｅｒ＿ｎａｍｅ"とし、レジスター（ｒｅｇｉｓｔｅｒ） からハードウェアインターフェイスにＡＣＫ信号（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）をリターンすることを示す。また、リターンバリュー（ｒｅｔｕｒｎ vａｌｕe）は、メソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ） よりリターンバリュー（ｒｅｔｕｒｎ ｖａｌｕｅ）のレジスター節点（ｒｅｇｉｓｔｅｒ ｎｏｄｅ） まで一ラインを繋ぐ。しかし、その出力ポートと類別スタート節点（ｃｌａｓｓ ｓｔａｒｔ ｎｏｄｅ）を受けるポートが同じである為、並列節点（ｆｏｒｋ ｎｏｄｅ）を用いて類別スタート節点（ｃｌａｓｓ ｓｔａｒｔ ｎｏｄｅ）を受けるラインをリターンレジスター節点（ｒｅｔｕｒｎ ｒｅｇｉｓｔｅｒ ｎｏｄｅ）に分けなければならない。また、リターンレジスター節点（ｒｅｔｕｒｎ ｒｅｇｉｓｔｅｒ ｎｏｄｅ）を類別スタート節点（ｃｌａｓｓ ｓｔａｒｔ ｎｏｄｅ）に繋ぐのは、リターンバリュー（ｒｅｔｕｒｎ ｖａｌｕｅ）を出力することを示し、その表示は、"ｑ  ｒｅｔＭｅｔｈｏｄ＿ｎａｍｅ"（図２０参照）である。
【００３４】
類別情報（ｃｌａｓｓ ｉｎｆｏ） からそのメソッド情報（ｍｅｔｈｏｄ  ｉｎｆｏ）を収集し、並びに、ハードウェアコンポーネントグラフ（ＨＣＧ）中からその出入力接続ライン（ｉｎ／ｏｕｔ ｅｄｇｅｓ）を収集することにより、メソッドコール情報（ｍｅｔｈｏｄ call info）が発生する。メソッドコール情報（ｍｅｔｈｏｄ ｃａｌｌ  ｉｎｆｏ）を再利用して、ハードウェアコンポーネントグラフ（ＨＣＧ）中においてメソッドコール節点（ｍｅｔｈｏｄ ｃａｌｌ ｎｏｄｅ）に接続したラインをメソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ）に変更するのは、メソッドコール（ｍｅｔｈｏｄ ｃａｌｌ ）である。接続処理する場合は、マルチプレクサ及びデマルチプレクサを加えて出入力を制御しなければならない（図２１参照）はドウェアコンポーネントグラフ（ＨＣＧ）中において頻繁に多くのレジスター（ｒｅｇｉｓｔｅｒ）が出現する。しかし、同表示のレジスター（ｒｅｇｉｓｔｅｒ）は、実のところ同一レジスター（ｒｅｇｉｓｔｅｒ）を指している為、このような意味が同様なレジスター（ｒｅｇｉｓｔｅｒ）は合併される必要があり、よって、図２２に示すような修正ハードウェアコンポーネントグラフ（ｍｏｄｉｆｉｅｄ ＨＣＧ）となる。
【００３５】
図１０に示すとおり、ステップS１００１を経過した後、修正ハードウェアコンポーネントグラフを実行し（ステップＳ１００３）、そのハードウェアコンポーネントグラフの一スタート節点（ｓｔａｒｔ ｎｏｄｅ）を探し出す（ステップＳ１００５）ことにより、対応するサブハードウェアコンポーネントグラフを得ることができる。ステップＳ１００５中のスタート節点（ｓｔａｒｔ ｎｏｄｅ）は、メソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ）を指す。この時、修正ハードウェアコンポーネントグラフ（ｍｏｄｉｆｉｅｄ ＨＣＧ）は既にＶＨＤＬハードウェア記述言語オブジェクトと一つ一つ対応している故、メソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ） からＶＨＤＬハードウェア記述言語オブジェクトに変換し始める。
【００３６】
ステップS１００７は、そのメソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ）の情報を分析して、出入力のコンポーネントを加えると、ハードウェア記述言語のエンティティ（ｅｎｔｉｔｙ）が全てのスタート節点（ｓｔａｒｔ ｎｏｄｅ）が分析完了するまで発生する。
【００３７】
図２３〜３０を併せて参照されたい。図２３〜３０は、本実施例中図１４のハードウェアコンポーネントグラフ（ＨＣＧ）が変換するＶＨＤＬプログラムコードに基づく。図２３〜３０において、エンティティ（ｅｎｔｉｔｙ）の名称は、即ちメソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ）であり、並びに、メソッドスタート節点（ｍｅｔｈｏｄ ｓｔａｒｔ ｎｏｄｅ）中の接続ラインをエンティティ（ｅｎｔｉｔｙ）中の出入力ポートに変換する。
【００３８】
ステップＳ１００９は、ハードウェアコンポーネントグラフ中の節点（ｎｏｄｅ）の形態別を判断し、対応するハードウェア記述言語（ＶＨＤＬ）をオブジェクトを発生させ、且つ、相関情報をハードウェア記述言語のアーキテクチャ（Ａｒｃｈｉｔｅｃｔｕｒｅ）中に書き込む。その内、コンポーネントインスタンティエーション（ｃｏｍｐｏｎｅｎｔ ｉｎｓｔａｎｔｉａｔｉｏｎ） 方式を用いて、対応するハードウェア記述言語（ＶＨＤＬ）オブジェクトを発生させる。
【００３９】
ステップＳ１０１１は、修正ハードウェアコンポーネントグラフに基づくオンラインは、対応するハードウェア記述言語（ＶＨＤＬ）コンポーネントの信号接続を生む。ステップＳ１０１３において、文字列方式によってハードウェア記述言語（ＶＨＤＬ）のエンティティ（ｅｎｔｉｔｙ）とアーキテクチャ（Ａｒｃｈｉｔｅｃｔｕｒｅ）を図１８〜２５に示す一ファイルに出力する。その内、その修正ハードウェアコンポーネントグラフ（ＨＣＧ）は、ＶＨＤＬコンポーネントと一つ一つ対応し、このようにして、簡単にＶＨＤＬプログラムコードに変換でき、ハードウェアコンポーネントグラフ（ＨＣＧ）をＶＨＤＬプログラムコードに正確に変換できないという問題を回避する。
【００４０】
前述のステップに基づき、第三段階においては、完全なハードウェアコンポーネントグラフ（ＨＣＧ）を対応するハードウェア記述言語に変換できる。
【００４１】
以上説明したように、本発明のハイレベル言語（例：Ｊａｖａ（登録商標）、Ｃ、Ｃ＋＋）のハードウェア記述言語（ＶＨＤＬ）への自動変換方法は、３段階の変換メカニズムにより、ハイレベル言語の記述する機能を対応するハードウェア記述言語に直接変換することを特徴とする。それは、ハイレベル言語の種類に制限を受けず、且つ、完全な実行フローに統一でき、ハードウェアコンポーネント設計上の困難とならない効果をもつ。
【図面の簡単な説明】
【００４２】
【図１】本発明一実施例に関する、三段階変換フローである。
【図２】本発明一実施例に関する、ユーエムエル（ＵＭＬ）中に定義するアクティビティダイアグラムである。
【図３】本発明一実施例に関する、エクステンドアクティビティダイアグラム（ＥＡＤ）中に定義するアクティビティダイアグラムである。
【図４】本発明一実施例に関する、ソースコードのエクステンドアクティビティダイアグラム（ＥＡＤ）への変換フローである。
【図５】本発明一実施例に関する、ソースコードのエクステンドアクティビティダイアグラム（ＥＡＤ）への変換の完全な変換フローである。
【図６】本発明一実施例に関する、Ｊａｖａ（登録商標）プログラムである。
【図７】本発明一実施例に関する、Ｊａｖａ（登録商標）プログラム対応のエクステンドアクティビティダイアグラム（ＥＡＤ）である。
【図８】本発明一実施例に関する、スタート節点（ｓｔａｒｔ ｎｏｄｅ） 図である。
【図９】本発明一実施例に関する、終了節点（ｅｎｄ ｎｏｄｅ） 図である。
【図１０】本発明一実施例に関する、コンポーネント節点（ｃｏｍｐｏｎｅｎｔ ｎｏｄｅ） 図である。
【図１１】本発明一実施例に関する、コントロールパス節点（Ｃｏｎｔｒｏｌ path ｎｏｄｅ）である。
【図１２】本発明一実施例に関する、データパス節点（Ｄａｔａ  ｐａｔｈ  ｎｏｄｅ）である。
【図１３】本発明一実施例に関する、エクステンドアクティビティダイアグラム（ＥＡＤ）のハードウェアコンポーネントへの変換のフローチャートである。
【図１４】本発明一実施例に関する、エクステンドアクティビティダイアグラム（ＥＡＤ）が対応するハードウェアコンポーネントグラフ（ＨＣＧ） 図である。
【図１５】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬハードウェア記述言語への変換フローチャートである。
【図１６】本発明一実施例に関する、Ｊａｖａ（登録商標）加算回路の見取図である。
【図１７】本発明一実施例に関する、Ｊａｖａ（登録商標）加算回路が対応するハードウェアコンポーネントグラフ（ＨＣＧ）の見取図である。
【図１８】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）修正過程の見取図である。
【図１９】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）修正過程の見取図である。
【図２０】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）修正過程の見取図である。
【図２１】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）修正過程の見取図である。
【図２２】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）修正過程の見取図である。
【図２３】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬプログラムコードへの変換見取図である。
【図２４】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬプログラムコードへの変換見取図である。
【図２５】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬプログラムコードへの変換見取図である。
【図２６】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬプログラムコードへの変換見取図である。
【図２７】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬプログラムコードへの変換見取図である。
【図２８】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬプログラムコードへの変換見取図である。
【図２９】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬプログラムコードへの変換見取図である。
【図３０】本発明一実施例に関する、ハードウェアコンポーネントグラフ（ＨＣＧ）のＶＨＤＬプログラムコードへの変換見取図である。
【符号の説明】
【００４３】
Ｓ１０１  ハイレベル言語のソースコードの読み取り
Ｓ１０２  ハイレベル言語のソースコードのエクステンドアクティビティダイアグラムへの変換
Ｓ１０３  エクステンドアクティビティダイアグラムのハードウェアコンポーネントグラフへの変換
Ｓ１０４  ハードウェアコンポーネントグラフのハードウェア記述言語への変換
Ｓ１０５  ハードウェア記述言語の出力
Ｓ５０１  ハイレベル言語（ｈｉｇｈ  ｌｅｖｅｌ  ｌａｎｇｕａｇｅ）のソースコード読み取り
Ｓ５０２  ソースコードがステートメント命令（ｓｔａｔｅｍｅｎｔ  ｉｎｓｔｒｕｃｔｉｏｎ）であるかどうかの判断
Ｓ５０３  相対するサブグラフ（ｓｕｂ−ｇｒａｐｈ）への変換
Ｓ５０４  条件表現式の前方にステートメント（ｓｔａｔｅｍｅｎｔ）があるかどうかを判断
Ｓ５０５  ステートメントをサブグラフ（ｓｕｂ−ｇｒａｐｈ）に変換
Ｓ５０６  一選択節点（ｓｅｌｅｃｔ ｎｏｄｅ）の発生
Ｓ５０７  二仲介点（ｃｕｒｖｅ  ｐｏｉｎｔ）の発生
Ｓ５０８  ステートメントのサブグラフ（ｓｕｂ−ｇｒａｐｈ）への変換
Ｓ５０９  マージ節点（ｍｅｒｇｅ ｎｏｄｅ）の発生
Ｓ５１０  右仲介点とステートメント接続のサブグラフ（ｓｕｂ−ｇｒａｐｈ）
Ｓ５１１  マージ節点とステートメント接続のサブグラフ（ｓｕｂ−ｇｒａｐｈ） 
Ｓ５１２  変換が必要な命令があるかどうかの判断
Ｓ５１３  完全なエクステンドアクティビティダイアグラム（ＥＡＤ）の出力
Ｓ８０１  アクティビティダイアグラムの中の一サブグラフ（ｓｕｂ−ｇｒａｐｈ）の読み取り
Ｓ８０２  サブグラフ（ｓｕｂ−ｇｒａｐｈ）の形態を判断
Ｓ８０３  ハードウェアコンポーネントグラフ（ＨＣＧ）に変換
Ｓ８０４  グラマー分析変換
Ｓ８０５  表記分析
Ｓ８０６  ハードウェアコンポーネントグラフ（ＨＣＧ）への変換
Ｓ８０７  変換されていないエクステンドアクティビティダイアグラム（ＥＡＤ）がないか。
Ｓ８０８  接続線のハードウェアコンポーネントグラフ（ＨＣＧ）への接続
Ｓ８０９  完全なハードウェアコンポーネントグラフ（ＨＣＧ）の出力
Ｓ１００１  ハードウェアコンポーネントグラフ（ＨＣＧ）の読み取り
Ｓ１００３  ハードウェアコンポーネントグラフ（ＨＣＧ）の修正
Ｓ１００５  スタート節点（ｓｔａｒｔ ｎｏｄｅ）の検索
Ｓ１００７  スタート節点（ｓｔａｒｔ ｎｏｄｅ）の分析
Ｓ１００９  コンポーネント節点の分析、対応するＶＨＤＬオブジェクトの発生
Ｓ１０１１  ＶＨＤＬコンポーネントの信号接続の発生
Ｓ１０１３  文字列による一ファイルへのＶＨＤＬ出力
【図１】
2007183900.tif 000003
【図２】
2007183900.tif 000004
【図３】
2007183900.tif 000005
【図４】
2007183900.tif 000006
【図５】
2007183900.tif 000007
【図６】
2007183900.tif 000008
【図７】
2007183900.tif 000009
【図８】
2007183900.tif 000010
【図９】
2007183900.tif 000011
【図１０】
2007183900.tif 000012
【図１１】
2007183900.tif 000013
【図１２】
2007183900.tif 000014
【図１３】
2007183900.tif 000015
【図１４】
2007183900.tif 000016
【図１５】
2007183900.tif 000017
【図１６】
2007183900.tif 000018
【図１７】
2007183900.tif 000019
【図１８】
2007183900.tif 000020
【図１９】
2007183900.tif 000021
【図２０】
2007183900.tif 000022
【図２１】
2007183900.tif 000023
【図２２】
2007183900.tif 000024
【図２３】
2007183900.tif 000025
【図２４】
2007183900.tif 000026
【図２５】
2007183900.tif 000027
【図２６】
2007183900.tif 000028
【図２７】
2007183900.tif 000029
【図２８】
2007183900.tif 000030
【図２９】
2007183900.tif 000031
【図３０】
2007183900.tif 000032