(57)【要約】【課題】ハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法の提供。【解決手段】主にオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）をラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に転換するステップを含み、ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）はオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）に比べハードウエア回路ブロックの入力データと出力データを記録することができる。さらにハードウエアロジックシュミレーション発生に必要とするトップモジュールのステップは、オリジナルユニットテストを拡充ユニットテストに転換するステップ、拡充ユニットテストはラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に対してユニットテストを行い入力パターンファイルを発生するステップを含む。トップモジュールと入力パターンファイルに基づき、ハードウエア回路ブロックに対してハードウエアロジックシュミレーションを行う。【選択図】図１
2007183898.tif 000002
【特許請求の範囲】
【請求項１】
主に以下のステップを含み、
ステップ（Ａ）：オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）をラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に転換し、その内、オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）と比較し、該ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）は別にハードウエア回路ブロックの入力データと出力データを記録することができ、
ステップ（Ｂ）：ハードウエアロジックシュミレーションに必要なトップモジュールを発生し、
ステップ（Ｃ）：オリジナルユニットテストを拡充ユニットテストに転換し、
ステップ（Ｄ）：該拡充ユニットテストにより該ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に対してユニットテストを行い、入力パターンファイルを発生し、
ステップ（Ｅ）：該トップモジュールと該入力パターンファイルにより該ハードウエア回路ブロックに対して該ハードウエアロジックシュミレーションを行うことを特徴とするハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法。
【請求項２】
前記ステップ（Ａ）はさらに以下のステップを含み、
ステップ（Ａ１）：特定の信号プロトコルに基づき非公開データメンバーを設定し、
ステップ（Ａ２）：入力パラメーターを該非公開データメンバーに記録し、
ステップ（Ａ３）：回送値を該非公開データメンバーに記録し、
ステップ（Ａ４）：該特定信号プロトコルに基づき、該非公開データメンバーをリセットし、
ステップ（Ａ５）：ステップ（Ａ１）、ステップ（Ａ３）、ステップ（Ａ４）を順番に該ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）の待ち行列中に記録し、
ステップ（Ａ６）：該オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）が未定義の公用方法を定義することを特徴とする請求項１記載のハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法。
【請求項３】
主にハードウエア記述言語はＶＨＤＬ或いはＶｅｒｉｌｏｇであることを特徴とするハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法。
【請求項４】
主にハードウエア記述言語はＪａｖａ（登録商標）言語により記述を行うことを特徴とするハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法。
【請求項５】
主にハードウエア回路ブロックは非同期４フェーズ信号プロトコル（４−ｐｈａｓｅｄ  ｓｉｇｎａｌ  ｐｒｏｔｏｃｏｌ）を採用することを特徴とするハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一種のハードウエア回路ブロックをテストする方法に関する。特に一種のハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法に係る。
【背景技術】
【０００２】
現在、大型の回路設計は、効率性と利用性を持たせるため、ＶＨＤＬ或いはＶｅｒｉｌｏｇなどのハードウエア記述言語を採用し行われている。そのため、ハードウエア記述言語により記述されたプログラムコードは合成（ｓｙｎｔｈｅｓｉｓ）、設置、配線（ｐｌａｃｅ  ａｎｄ  ｒｏｕｔｅ）を経て、乱数発生器、タイマー、加法器、乗法器など１個のハードウエア回路ブロックに対応する。該ハードウエア回路ブロックはまたハードウエアIP（知的所有権、Ｉｎｔｅｌｌｉｇｅｎｔ  Ｐｒｏｐｅｒｔｙ）とも呼ばれる。よって、ハードウエア記述言語プログラムコードの執行結果はハードウエア回路ブロックの執行結果に等しく、さらに、繰返しハードウエア記述言語プログラムコードを呼び出すことにより、簡単にハードウエア回路ブロックを複製することができ、ハードウエアIPの重複利用性を達成する。
【０００３】
しかし、使用者がハードウエア記述言語プログラムコードの記述を完成後、該ハードウエア記述言語プログラムコードに誤りがないことを確保するために、使用者は該ハードウエア記述言語プログラムコードを１個のテスト待ちユニット（ｕｎｉｔ）と見なし、該テスト待ちユニット（ｕｎｉｔ）に対してテストパターン（ｔｅｓｔ  ｐａｔｔｅｒｎ）を記述しなければならない。該テストパターン（ｔｅｓｔ  ｐａｔｔｅｒｎ）は予期結果を含み、最後にシュミレーションシステムにより該テストパターン（ｔｅｓｔ  ｐａｔｔｅｒｎ）に基づき該テスト待ちユニット（ｕｎｉｔ）に対してテストを行い、テストの結果と予期結果が同一であるか否かを比較する。このステップをユニットテスト（ｕｎｉｔ ｔｅｓｔ）と呼ぶ。人手によるテストパターン（ｔｅｓｔ  ｐａｔｔｅｒｎ）の記述は人力と時間の浪費を招き、しかもテスト待ちユニット（ｕｎｉｔ）の運行はにエラーがある時、現在では効果的なエラー情報回送メカニズムがないため、使用者に適当な文字によりエラー削除情報を伝えることができず、エラーが発生する恐れを標示することもできない。これは使用者がユニットテスト（ｕｎｉｔ ｔｅｓｔ）を行うに当たっての困難を引起している。
【０００４】
よって、ハードウエア記述言語の領域において、使用者はテストパターン（ｔｅｓｔ  ｐａｔｔｅｒｎ）の自動発生に対して非常に強いニーズがあり、またエラー情報回送メカニズムに対しても強いニーズがある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の主な目的はハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法を提供し、これによりテストパターン（ｔｅｓｔ  ｐａｔｔｅｒｎ）及びエラー情報を発生させることができる。
【０００６】
それは主にハードウエア記述言語が記述したハードウエアをテストする回路ブロックの方法を提出し、それは以下のステップを含み、
ステップ（Ａ）：オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）をラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に転換し、その内、オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）と比較し、該ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）は別にハードウエア回路ブロックの入力データと出力データを記録することができ、
ステップ（Ｂ）：ハードウエアロジックシュミレーションに必要なトップモジュールを発生する。
ステップ（Ｃ）：オリジナルユニットテストを拡充ユニットテストに転換し、
ステップ（Ｄ）：該拡充ユニットテストにより該ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に対してユニットテストを行い、入力パターンファイルを発生する。
ステップ（Ｅ）：該トップモジュールと該入力パターンファイルにより該ハードウエア回路ブロックに対して該ハードウエアロジックシュミレーションを行うことを特徴とするハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法である。
【課題を解決するための手段】
【０００７】
請求項１の発明は、主に以下のステップを含み、
ステップ（Ａ）：オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）をラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に転換し、その内、オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）と比較し、該ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）は別にハードウエア回路ブロックの入力データと出力データを記録することができ、
ステップ（Ｂ）；ハードウエアロジックシュミレーションに必要なトップモジュールを発生し、
ステップ（Ｃ）：オリジナルユニットテストを拡充ユニットテストに転換し、
ステップ（Ｄ）：該拡充ユニットテストにより該ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に対してユニットテストを行い、入力パターンファイルを発生し、
ステップ（Ｅ）：該トップモジュールと該入力パターンファイルにより該ハードウエア回路ブロックに対して該ハードウエアロジックシュミレーションを行うことを特徴とするハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法としている。
請求項２の発明は、前記ステップ（Ａ）はさらに以下のステップを含み、
ステップ（Ａ１）：特定の信号プロトコルに基づき非公開データメンバーを設定し、
ステップ（Ａ２）：入力パラメーターを該非公開データメンバーに記録し、
ステップ（Ａ３）：回送値を該非公開データメンバーに記録し、
ステップ（Ａ４）：該特定信号プロトコルに基づき、該非公開データメンバーをリセットし、
ステップ（Ａ５）：ステップ（Ａ１）、ステップ（Ａ３）、ステップ（Ａ４）を順番に該ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）の待ち行列中に記録し、
ステップ（Ａ６）：該オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）が未定義の公用方法を定義することを特徴とする請求項１記載のハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法としている。
請求項３の発明は、主にハードウエア記述言語はＶＨＤＬ或いはＶｅｒｉｌｏｇであることを特徴とするハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法としている
請求項４の発明は、主にハードウエア記述言語はＪａｖａ（登録商標）言語により記述を行うことを特徴とするハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法としている。
請求項５の発明は、主にハードウエア回路ブロックは非同期４フェーズ信号プロトコル（４−ｐｈａｓｅｄ  ｓｉｇｎａｌ  ｐｒｏｔｏｃｏｌ）を採用することを特徴とするハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法としている。
【発明の効果】
【０００８】
本発明はハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法を提供し、これによりテストパターン（ｔｅｓｔ  ｐａｔｔｅｒｎ）及びエラー情報を発生させることができる。
【発明を実施するための最良の形態】
【０００９】
本発明中ではＪａｖａ（登録商標）言語をＨＤＬが必要とするソフトウエア言語とする。Ｊａｖａ（登録商標）言語により、対応する乱数発生器のソフトウエア函式を記述し、Jｕｎｉｔによりテストコードを記述しテストパターン（ｔｅｓｔ  ｐａｔｔｅｒｎ）を発生させる。またＭｅｎｔｏｒ  Ｇｒａｐｈｉｃ社のＭｏｄｅｌＳｉｍをハードウエア記述言語のシュミレーターとし、ＳＯＣＡＤシステムが使用する非同時４フェーズ信号プロトコル（４−ｐｈａｓｅｄ  ｓｉｇｎａｌ  ｐｒｏｔｏｃｏｌ）に対応するため、該非同時４フェーズ信号プロトコルを通信インターフェースとする。上記設定は本発明の説明を進める便のためであってこれに限定するものではない。以下に、ソフトウエア函式のモデルを示す、
ｐｕｂｌｉｃ ｃｌａｓｓ Ｒａｎｄｏｍ {
ｓｔａｔｉｃ ｉｎｔ ｖａ＝３；
ｓｔａｔｉｃ ｉｎｔ ｖｂ＝８；
ｓｔａｔｉｃ ｉｎｔ ｖｃａｒｒｙ＝０；
ｓｔａｔｉｃ ｉｎｔ Ｒａｎｄｏｍ＝０；
ｐｕｂｌｉｃ ｓｔａｔｉｃ ｖｏｉｄ ｓｅｔＡ（ｉｎｔ ａ） {ｖａ＝a；    }
ｐｕｂｌｉｃ ｓｔａｔｉｃ ｖｏｉｄ ｓｅｔＢ（ｉｎｔ ｂ） {ｖａ＝b；    }
ｐｕｂｌｉｃ ｓｔａｔｉｃ ｖｏｉｄ ｓｅｔＣａｒｒｙ（ｉｎｔ Ｃａｒｒｙ） {ｖｃａｒｒｙ＝ｃａｒｒｙ；    }
ｐｕｂｌｉｃ ｓｔａｔｉｃ ｉｎｔ ｓｉｍｐｌｅＲａｎｄｏｍ（ ） {ｒａｎｄｏｍ＝ｖａ+ｖｂ；ｉｆ （ｖｃａｒｒｙ ＝＝ １） { Ｒａｎｄｏｍ ＝ Ｒａｎｄｏｍ＋１； }ｖａ＝ｖｂ；ｉｆ （Ｒａｎｄｏｍ ＞＝ １０） { ｖｃａｒｒｙ ＝ １； Ｒａｎｄｏｍ ＝ Ｒａｎｄｏｍ −１０； } ｅｌｓｅ { ｖｃａｒｒｙ ＝ ０； }ｖｂ＝Ｒａｎｄｏｍ；ｒｅｔｕｒｎ ｒａｎｄｏｍ；}
ｐｕｂｌｉｃ ｓｔａｔｉｃ ｖｏｉｄ ｍａｉｎ（Ｓｔｒｏｎｇ[ ] ａｒｇｓ） {ｆｏｒ （ｉｎｔ ｉ＝０； ｉ＜１０００００； ｉ＋＋） {Ｒａｎｄｏｍ．ｓｅｔＡ（ｉ）；Ｒａｎｄｏｍ．ｓｅｔＢ（ｉ）；Ｒａｎｄｏｍ．ｓｅｔＣａｒｒｙ（ｉ）；}Ｒａｎｄｏｍ．ｓｅｔＡ（３）；Ｒａｎｄｏｍ．ｓｅｔＢ（８）；Ｒａｎｄｏｍ．ｓｅｔＣａｒｒｙ（０）；Ｓｙｓｔｅｍ．ｏｕｔ．ｐｒｉｎｔｌｎ（”ｉ＝”  ＋  ｉ＋  ”ＲＡＤ＝”  ＋ Ｒａｎｄｏｍ．ｓｉｍｐｌｅＲａｎｄｏｍ（ ） ）；
}Ｓｙｓｔｅｍ．ｏｕｔ．ｐｒｉｎｔｌｎ（”Ｅｎｄ  ｒａｍｄｏｍ”）；}
}
【００１０】
図１に示すように、本発明ハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法は以下のステップを含む。
【００１１】
ステップＳ１０：図２に示すように、オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）をラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に転換する。本発明中ではオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）はＪａｖａ（登録商標） ｃｌａｓｓであるため、ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）はＪａｖａ（登録商標） ｗｒａｐｐｅｒ  ｃｌａｓｓである。オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）とラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）は相似しており、両者の入力インターフェースと出力インターフェースは同一である。但し、ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）はオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）より、該ソフトウエア函式の入力データ及び出力データをより記憶可能である。ソフトウエア函式の執行動作をハードウエア回路が対応する動作に順調に転換するため、オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）に対して拡充を行い、ソフトウエア函式の記録を執行する時の特徴を達成し、ソフトウエアの方式によりこれを記録する。使用者はまたハードウエア回路の執行過程中においてハードウエア執行結果を記録する。ソフトウエア函式の執行結果は予期のハードウエアロジックシュミレーションの執行結果で、両者間に差異があるか否かを比較しハードウエア回路の正確性を確保する。その内、オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）とソフトウエア函式の種類はソフトウエア函式は乱数発生器により記述し、すなわちオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）は乱数発生器が飲用を必要とするクラスを記述するなど関係がある。
【００１２】
オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）中には公用方法（ｐｕｂｌｉｃ ｍｅｔｈｏｄ）、パラメーター（ｐａｒａｍｅｔｅｒ）、回送値（ｒｅｔｕｒｎ  ｖａｌｕｅ）を含むため、ステップＳ１０は別に公用方法（ｐｕｂｌｉｃ ｍｅｔｈｏｄ）、パラメーター（ｐａｒａｍｅｔｅｒ）、回送値（ｒｅｔｕｒｎ  ｖａｌｕｅ）をラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）の非公開データメンバー（ｐｒｉｖａｔｅ  ｄａｔａ  ｍｅｍｂｅｒ）として定義する。図２に示すように、それは以下のステップを含む。
【００１３】
ステップＳ１００：ＳＯＣＡＤシステムが使用する４フェーズ信号プロトコル（４−ｐｈａｓｅｄ  ｓｉｇｎａｌ  ｐｒｏｔｏｃｏｌ）に基づき、各パラメーター（ｐａｒａｍｅｔｅｒ）と回送値（ｒｅｔｕｒｎ  ｖａｌｕｅ）が対応する非公開データメンバー（ｐｒｉｖａｔｅ  ｄａｔａ  ｍｅｂｅｒ）を設定する。
【００１４】
ステップＳ１０２：入力したパラメーターを使用しオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）中の対応する公用方法（ｐｕｂｌｉｃ ｍｅｔｈｏｄ）を呼び出す。
【００１５】
ステップＳ１０４： 回送値（ｒｅｔｕｅｎ  ｖａｌｕｅ）を非公開データメンバー（ｐｒｉｖａｔｅ  ｄａｔａ  ｍｅｍｂｅｒ）に記録する。
【００１６】
ステップＳ１０６： ４フェーズ信号プロトコル（４−ｐｈａｓｅｄ  ｓｉｇｎａｌ  ｐｒｏｔｏｃｏｌ）に基づき、非公開データメンバー（ｐｒｉｖａｔｅ  ｄａｔａ  ｍｅｍｂｅｒ）をリセットする。
【００１７】
ステップＳ１０８： ステップＳ１００、ステップＳ１０４、ステップＳ１０６をそれぞれ順番にラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）の待ち行列（ｑｕｅｕｅ）に記録する。
【００１８】
ステップＳ１１０：ＳＯＣＡＤシステムの必要に基づき、オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）中において別にリセット、除去、初期化等の公用方法（ｐｕｂｌｉｃ ｍｅｔｈｏｄ）の定義を追加する。
【００１９】
ステップＳ１２：ハードウエアロジックシュミレーションに必要なトップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）を発生する。本発明中ではトップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）はＶＨＤＬトップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）である。各オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）の公用方法（ｐｕｂｌｉｃ ｍｅｔｈｏｄ）とそのパラメーター（ｐａｒａｍｅｔｅｒ）は異なるため、ステップＳ１０の結果に基づきオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）にハードウエアロジックシュミレーションに必要なトップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）を提供する。オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）がそれらの公用方法（ｐｕｂｌｉｃ ｍｅｔｈｏｄ）を擁することが分かるため、これら公用方法（ｐｕｂｌｉｃ ｍｅｔｈｏｄ）は外からのオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）に対する操作インターフェースをハードウエア回路の出入/力ポート（ｐｏｒｔ）に相当させる。よって、各公用方法（ｐｕｂｌｉｃ ｍｅｔｈｏｄ）が発生する対応するポートに基づき、トップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）はすべての入力ポートに対して入力パターン（ｉｎｐｕｔ  ｐａｔｔｅｒｎ）を発生し、出力ポート記録を通して結果を執行する。この他、トップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）はまたテストパターンファイルの文字エラー除去情報を読み取ることもでき、エラー発生時には適当な情報を提供し、使用者はエラーを除去することができる。以下にトップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）のモデル内容を示す、
ｗｈｉｌｅ （ｉｎｐｕｔ ｐａｔｔｅｒｎ ｆｉｌｅ！＝ＥＯＦ）
{
ｆｏｒ  ｅｖｅｒｙ  ｆｏｒ ｅｖｅｒｙ ｐｕｂｌｉｃ  ｍｅｔｈｏｄ {ｆｏｒ ｅｖｅｒｙ ｉｎｐｕｔ ｉｎｔｅｒｆａｃｅ {ｒｅａｄ  ｓｅｔ−ｄａｔａ  ｆｒｏｍ  ｉｎｐｕｔ  ｐａｔｔｅｒｎ ｆｉｌｅ；ｓｅｎｄ  ｔｈｅ  ｓｅｔ−ｄａｔａ  ｔｏ  ｔｈｅ  ｈａｒｄｗａｒｅ ｉｎｐｕｔ−ｉｎｔｅｒｆａｃｅ；}}
ｗａｉｔ  ｆｏｒ ｔｈｅ  ｍａｘｉｍｕｍ  ｄｅｌａｙ；
ｒｅａｄ  ｄａｔａ  ｆｒｏｍ  ｈａｒｄｗａｒｅ  ｏｕｔｐｕｔ  ｉｎｔｅｒｆａｃｅｓ；
ｒｅａｄ  ｔｈｅ  ｓｅｔ−ｒｅｃｏｒｄｓ  ｆｒｏｍ  ｉｎｐｕｔ ｐａｔｔｅｒｎ ｆｉｌｅ；
ｉｆ （ｒｅａｄ−ｄａｔａ！＝ｓｅｔ−ｒｅｃｏｒｄｓ）
{ｐａｓｓ  ｔｈｅ  ａｓｓｅｒｔ  ｍｅｓｓａｇｅ  ｆｒｏｍ  ｉｎｐｕｔ ｐａｔｔｅｒｎ ｆｉｌｅ  ｔｏ  ｓｔａｎｄ  ｏｕｔｐｕｔ；ｅｘｉｔ；}
ｆｏｒ ｅｖｅｒｙ ｐｕｂｌｉｃ ｍｅｔｈｏｄ {ｆｏｒ ｅｖｅｒｙ ｉｎｐｕｔ ｉｎｔｅｒｆａｃｅ {ｒｅａｄ  ｒｅｓｅｔ−ｄａｔａ  ｆｒｏｍ  ｉｎｐｕｔ ｐａｔｔｅｒｎ ｆｉｌｅ；ｓｅｎｄ  ｔｈｅ  ｒｅａｄ−ｄａｔａ  ｔｏ  ｈａｒｄｗａｒｅ  ｉｎｐｕｔ ｉｎｔｅｒｆａｃｅ；}}
ｗａｉｔ  ｆｏｒ ｔｈｅ  ｍａｘｉｍｕｍ  ｄｅｌａｙ；
ｒｅａｄ  ｄａｔａ  ｆｒｏｍ  ｈａｒｄｗａｒｅ  ｏｕｔｐｕｔ  ｉｎｔｅｒｆａｃｅ；
ｒｅａｄ  ｔｈｅ  ｒｅｓｅｔ−ｒｅｃｏｒｄｓ  ｆｒｏｍ  
ｔｈｅ  ｒｅｃｏｒｄｓ  ｆｒｏｍ  ｔｈｅ ｉｎｐｕｔ ｐａｔｔｅｒｎ ｆｉｌｅ；
ｉｆ  （ｒｅａｄ−ｄａｔａ！＝ｒｅｓｅｔ−ｒｅｃｏｒｄｓ）
{ｐａｓｓ  ｔｈｅ  ａｓｓｅｒｔ  ｍｅｓｓａｇｅ  ｆｒｏｍ ｉｎｐｕｔ ｐａｔｔｅｒｎ ｆｉｌｅ  ｔｏ  ｓｔａｎｄ  ｏｕｔｐｕｔ；ｅｘｉｔ；}
}
【００２０】
ステップＳ１４：オリジナルのユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）を拡充ユニットテストに転換する。ハードウエア行為をシュミレートする時に発生するエラーの位置とソフトウエアの記述に対応を発生させるため、ハードウエア行為を数個のブロックに分割し、各ブロックは一段の文字エラー除去情報に対応する。この目的を達成するために、説明ファンクション（ａｓｓｅｒｔ  ｆｕｎｃｔｉｏｎ）と最も近い説明ファンクション（ａｓｓｅｒｔ  ｆｕｎｃｔｉｏｎ）の呼び出し間において、その対応するハードウエア動作が執行されたかを記録する必要がある。こうして文字エラー除去情報をハードウエア行為に分割する目的を達成することができる。その内、ＳＯＣＡＤ＿Ａｓｓｅｒｔ  ｆｕｎｃｔｉｏｎの２個の主要な機能は、ステップＳ１０８の記録を文字の入力パターンに転換し、入力パターンファイルに保存し、及び収集された文字エラー除去情報を適当に修正し、入力パターンファイルと結合することである。このため、ＳＯＣＡＤ＿Ａｓｓｅｒｔ  ｆｕｎｃｔｉｏｎはラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）から収集したハードウエア執行行為を文字エラー除去情報と統合し、テストパターンファイル（ｔｅｓｔ  ｐａｔｔｅｒｎ ｆｉｌｅ）に出力する。ステップS１０８の待ち行列（ｑｕｅｕｅ）及びＳＯＣＡＤシステムの中で使用する４フェーズ信号プロトコル（４−ｐｈａｓｅｄ  ｓｉｇｎａｌ  ｐｒｏｔｏｃｏｌ）により、待ち行列（ｑｕｅｕｅ）の後から２個目の動作はＳＯＣＡＤ＿ＡＳＳＥＲＴ呼び出しの演算段階（ｃｏｍｐｕｔａｔｉｏｎ  ｐｈａｓｅ）を伴い、後から１個目の動作はこの演算段階（ｃｏｍｐｕｔａｔｉｏｎ  ｈａｓｅ）のリセット段階（ｒｅｓｅｔ  ｐｈａｓｅ）を伴うことが分かる。よって、使用者は以下の擬似コード（ｐｓｅｕｄｏ  ｃｏｄｅ）を経由しオリジナルの説明ファンクション（ａｓｓｅｒｔ＿ｆｕｎｃｉｔｏｎ）を拡充し、ユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）を実行する、
ＳＯＣＡＤ＿ＡＳＳＥＲＴ＿ＥＱＵＡＬ（Ｍｅｓｓａｇｅ，Ｃｏｎｄｉｔｉｏｎ） {
ｏｒｉｇｉｎａｌ＿ａｓｓｅｒｔ＿ｅｑｕａｌ（Ｍｅｓｓａｇｅ，Ｃｏｎｄｉｔｉｏｎ）；
ＭＳＧ＝”ＢＥＦＯＲＥ”＋Ｍｅｓｓａｇｅ；
ｆｏｒ （ｉ＝０； ｉ＜ｗｒａｐｐｅｒ＿ｃｌａｓｓ．ｑｕｅｕｅ．ｌｅｎｇｔｈ−２；ｉ＋＋）
{ｗｒｉｔｅ＿ｄａｔａ＿ｔｏ＿ｆｉｌｅ（ｗｒａｐｐｅｒ＿ｃｌａｓｓ．ｑｕｅｕｅ．ｇｅｔ（ｉ），ＭＳＧ）；}
ＭＳＧ ＝”Ｃｏｍｐｕｔａｔｉｏｎ”＋Ｍｅｓｓａｇｅ；
ｗｒｉｔｅ＿ｄａｔａ＿ｔｏ＿ｆｉｌｅ（ｗｒａｐｐｅｒ＿ｃｌａｓｓ．ｑｕｅｕｅ．ｇｅｔ（ｉ，ＭＳＧ））；
ｉ＝ｉ＋１；
ＭＳＧ＝"Ｒｅｓｅｔ"＋Ｍｅｓｓａｇｅ；
ｗｒｉｔｅ＿ｄａｔａ＿ｔｏ＿ｆｉｌｅ（ｗｒａｐｐｅｒ＿ｃｌａｓｓ．ｑｕｅｕｅ．ｇｅｔ（ｉ，ＭＳＧ））；
ｗｒａｐｐｅｒ＿ｃｌａｓｓ．ｑｕｅｕｅ．ｆｌｕｓｈ（ ）；
}
【００２１】
説明情報（ａｓｓｅｒｔ  ｍｅｓｓａｇｅ）のない動作は次の最も接近した説明情報（ａｓｓｅｒｔ  ｍｅｓｓａｇｅ）により"Ｂｅｆｏｒｅ"の文字が標示され、別の説明情報（ａｓｓｅｒｔ  ｍｅｓｓａｇｅ）を組成される。このように、文字エラー除去情報により区画し、すべてのハードウエアロジックシュミレーション上の行為は数個のブロックに区画される。
【００２２】
ステップＳ１６：ラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）執行ユニットに対して、ユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）を拡充し、入力パターンファイル（ｉｎｐｕｔ ｐａｔｔｅｒｎ  ｆｉｌｅ）を発生する。オリジナルユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）の行為はこの過程においてすべての行為の子集合である。なぜならラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）はオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）の記述を含む他、ハードウエア回路ブロックの対応動作を追加し、かつオリジナルユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）も拡充ユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）に変更される。このため、拡充ユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）はラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に対してユニットテストを執行し、入力パターンファイルを発生することができる。該入力パターンファイルはオリジナルユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）に対するハードウエア動作、オリジナルユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）が使用する文字エラー除去情報、及び区画後のハードウエアロジックシュミレーション動作ブロックを含む。
【００２３】
ステップＳ１８：トップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）及び入力パターンファイルに基づきハードウエア回路ブロックに対してハードウエアロジックシュミレーションを行う。ＳＯＣＡＤはソフトウエア函式をハードウエア回路ブロックに転換し、Ｍｏｄｅｌｓｉｍを通してトップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）及び入力パターンファイルに基づきハードウエアロジックシュミレーションを行う。もし比較結果が正常なら、後続の処置を継続し、比較結果が正常でないなら、トップモジュール（ｔｏｐ  ｍｏｄｕｌｅ）は入力パターンファイルに基づき適当な説明情報（ａｓｓｅｒｔ  ｍｅｓｓａｇｅ）を表示する。例えば、ハードウエアロジックシュミレーションの過程における説明情報（ａｓｓｅｒｔ  ｍｅｓｓａｇｅ）の内容は以下の通りである、
Ｅｒｒｏｒ
Ｉｎ  Ｆｕｎｃｔｉｏｎ  ｔｅｓｔＲａｎｄｏｍ：Ｉｎ  ８th ｉｎｔｅｒａｔｉｏｎ  Ｃｏｍｐｕｔｉｎｇ
Ｉｎｔｅｒｆａｃｅ：ｒｅｔｓｉｍｐｌｅＲａｎｄｏｍ １， ｅｘｐｅｃｔｅｄ＝００００００００１０， ｂｕｔ  ａｃｔｕａｌ＝０００００００００１
Ｔｉｍｅ：６８ｕｓ  Ｉｔｅｒａｔｉｏｎ：０  Ｉｎｓｔａｎｃｅ：／ｒａｎｄｏｍ＿ｔｅｓｔ＿ｔｏｐ
【００２４】
よって、使用者はオリジナルユニットテスト（ｕｎｉｔ ｔｅｓｔｉｎｇ）のモデル内容の"ｓｉｍｐｌｅＲａｎｄｏｍ（ｔｕｒｅ）"の呼び出しを参考にすることができる。その予測結果は２で、但しハードウエアロジックシュミレーションの回送値は１である。別に、説明情報（ａｓｓｅｒｔ  ｍｅｓｓａｇｅ）中から分かるように、エラーは９回目（０から８）の周回執行時に発生していることがわかる。仮設説明情報（ａｓｓｅｒｔ  ｍｅｓｓａｇｅ）の内容は以下の通りである。
Ｅｒｒｏｒ
Ｉｎ  Ｆｕｎｃｔｉｏｎ  ｔｅｓｔＲａｎｄｏｍ：ＢＥＦＯＲＥ  Ｉｎ  ０th  ｉｎｔｅｒａｔｉｏｎ  Ｃｏｍｐｕｔｉｎｇ
Ｉｎｔｅｒｆａｃｅ：ｂＡｃｋ４Ｐ，ｅｘｐｅｃｔｅｄ＝１，ｂｕｔａｃｔｕａｌ＝０
Ｔｉｍｅ：３４ｕｓ  Ｉｔｅｒａｔｉｏｎ：０  Ｉｎｓｔａｎｃｅ：／ｒａｎｄｏｍ＿ｔｅｓｔ＿ｔｏｐ
【００２５】
よって、使用者はエラーが周回執行の前に発生しており、かつエラー発生はインターフェースが"ｂＡｃｋ４Ｐ"である時であることが分かり、エラーが"ＴｈｉｓＲａｎｄｏｍ．ｓｅｔＢ（８，ｆａｌｓｅ）"プログラム上で発生していることを判断可能である。上記２例より明らかなように、使用者は説明情報（ａｓｓｅｒｔ  ｍｅｓｓａｇｅ）の内容に基づきエラーの所在を判断し、エラーの修正を行うことができる。
【図面の簡単な説明】
【００２６】
【図１】本発明のハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法のフローチャートである。
【図２】オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）をラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）に転換するステップの細部フローチャートである。
【図３】本発明のハードウエア記述言語が記述したハードウエア回路ブロックをテストする方法の表示図である。
【符号の説明】
【００２７】
Ｓ１０  オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ)をラッパークラス(ｗｒａｐｐｅｒ  ｃｌａｓｓ)に転換する
Ｓ１２  ハードウエアロジックシュミレーションに必要なトップモジュール（ｔｏｐ  ｍｏｕｄｌｅ）を発生する
Ｓ１４  オリジナルユニットテスト（ｕｎｉｔ  ｔｅｓｔｉｎｇ）を拡充ユニットテスト（ｕｎｉｔ  ｔｅｓｔｉｎｇ）に転換する
Ｓ１６  拡充ユニットテスト（ｕｎｉｔ  ｔｅｓｔｉｎｇ）によりラッパークラス(ｗｒａｐｐｅｒ  ｃｌａｓｓ)に対してユニットテストを行い入力パターンファイル（ｉｎｐｕｔ  ｐａｔｔｅｒｎ  ｆｉｌｅ）を発生する
Ｓ１８  トップモジュール（ｔｏｐ  ｍｏｕｄｌｅ）及び入力パターンファイル（ｉｎｐｕｔ  ｐａｔｔｅｒｎ  ｆｉｌｅ）に基づき、ハードウエア回路ブロックに対してハードウエアロジックシュミレーションを行う
Ｓ１００  ＳＯＣＡＤシステムが使用する４フェーズ信号プロトコル（４−ｐｈａｓｅｄ  ｓｉｇｎａｌ  ｐｒｏｔｏｃｏｌ）に基づき、各パラメーター（ｐａｒａｍｅｔｅｒ）と回送値（ｒｅｔｕｒｎ  ｖａｌｕｅ）を対応する非公開データメンバーに設定する
Ｓ１０２  入力したパラメーター（ｐａｒａｍｅｔｅｒ）を使用しオリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ)中の対応する公用方法（ｐｕｂｌｉｃ  ｍｅｔｈｏｄ）を呼び出す
Ｓ１０４  回送値（ｒｅｔｕｅｎ  ｖａｌｕｅ）を非公開データメンバー（ｐｒｉｖａｔｅ  ｄａｔａ  ｍｅｍｂｅｒ）に記録する
Ｓ１０６  ４フェーズ信号プロトコル（４−ｐｈａｓｅｄ  ｓｉｇｎａｌ  ｐｒｏｔｏｃｏｌ）に基づき、非公開データメンバー（ｐｒｉｖａｔｅ  ｄａｔａ  ｍｅｍｂｅｒ）をリセットする
Ｓ１０８  ステップＳ１００、ステップＳ１０４、ステップＳ１０６を２回に分けそれぞれ順番にラッパークラス（ｗｒａｐｐｅｒ  ｃｌａｓｓ）の待ち行列（ｑｕｅｕｅ）に記録する
Ｓ１１０  ＳＯＣＡＤシステムの必要に基づき、オリジナルクラス（ｏｒｉｇｉｎａｌ  ｃｌａｓｓ）中において別に公用方法（ｐｕｂｌｉｃ  ｍｅｔｈｏｄ）の定義を追加する
【図１】
2007183898.tif 000003
【図２】
2007183898.tif 000004
【図３】
2007183898.tif 000005