(57)【特許請求の範囲】
【請求項１】
コンピュータに、
第１のハードウェア記述言語（ＨＤＬ）モジュールの記述に基づき設計対象である集積回路の動作を模擬するための模擬クロック信号の要求を発生させ、
クロックハンドラーオブジェクトの記述に基づき、その要求に応答して、模擬クロック信号を発生させる、
プログラムを記憶しているコンピュータ読み取り可能な記憶媒体。
【請求項２】
前記クロックハンドラーオブジェクトは、シングルトンオブジェクトである、請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項３】
前記プログラムは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、前記第１のＨＤＬモジュールに記述された複数の疑似クロック信号の発生要求である対応する複数のクロックハンドラーステートメントの実行に応答して、対応する独特のスレッド内で複数の模擬クロック信号の各々を発生させる、請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項４】
前記プログラムは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、前記模擬クロック信号に対して、別のクロック信号に対するオフセットをセットさせる、請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項５】
前記プログラムは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、ダイナミックアレイを維持させ、そのダイナミックアレイの各エレメントは、１つ以上の模擬クロック信号の１つに関する情報を含む、請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項６】
前記プログラムは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、複数のＨＤＬモジュールの対応する１つにより記述される設計対象である集積回路の設計の複数のファンクションブロックの１つに各々対応する複数の模擬クロック信号を発生させる、請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項７】
前記第１のＨＤＬモジュールは、コンピュータに、前記複数のＨＤＬモジュールの少なくとも１つの他のモジュールをテストさせるように記述されたテストベンチモジュールであり、このテストベンチモジュールは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、複数の模擬クロック信号を発生させる複数のクロックステートメントを含む、請求項６に記載のコンピュータ読み取り可能な媒体。
【請求項８】
前記複数のクロックステートメントの各々は、複数の模擬クロック信号のうちの対応する１つの信号の１つ以上のパラメータを指示するように構成され、その１つ以上のパラメータは、クロック周期を含む、請求項７に記載のコンピュータ読み取り可能な媒体。
【請求項９】
ハードウェア記述言語（ＨＤＬ）モジュールの記述に基づき設計対象である集積回路の動作を模擬して、テストするための方法であって、コンピュータが、
集積回路の模擬中に前記ＨＤＬモジュールに含まれるクロックハンドラーステートメントを実行する段階と、
クロックハンドラーオブジェクトが実行されて、前記クロックハンドラーステートメントの実行に応答して模擬クロック信号発生する段階と、
を含む方法。
【請求項１０】
ハードウェア記述言語（ＨＤＬ）モジュールの模擬クロックポートに模擬クロック信号を指定する段階を更に含み、前記ＨＤＬモジュールは、集積回路のブロックに対応する、請求項９に記載の方法。
【請求項１１】
コンピュータが、前記クロックハンドラーオブジェクトの記述に基づき、前記模擬クロック信号に対応するスレッドを発生する段階を更に含む、請求項９に記載の方法。
【請求項１２】
コンピュータが、前記クロックハンドラーオブジェクトの記述に基づき、前記模擬クロック信号のパラメータをセットする段階を更に含み、前記パラメータは、クロック信号オフセットを含む、請求項９に記載の方法。
【請求項１３】
コンピュータが、前記クロックハンドラーオブジェクトの記述に基づき、前記模擬クロック信号及び１つ以上の付加的な模擬クロック信号に対応する情報のダイナミックアレイを維持する段階を更に含み、そのダイナミックアレイの各エレメントは、前記模擬クロック信号又は１つ以上の付加的な模擬クロック信号の一方のパラメータに関する情報を含む、請求項１２に記載の方法。
【請求項１４】
前記ダイナミックアレイの各エレメントは、それに対応する模擬クロック信号の周期を指示する値を含む、請求項１３に記載の方法。
【請求項１５】
コンピュータが、テストベンチモジュールの記述に基づきＨＤＬモジュールのテストを遂行する段階を更に含み、そのテストベンチモジュールは、クロックハンドラーステートメントを含む、請求項１０に記載の方法。
【請求項１６】
コンピュータに、設計対象である集積回路を模擬させ、集積回路の設計は、ハードウェア記述言語（ＨＤＬ）で記述され、集積回路の設計は、複数のＨＤＬモジュールの対応する１つによって各々記述される１つ以上のファンクションブロックを含み、更に、その１つ以上のファンクションブロックの各々のために、１つ以上のクロック信号の１つが使用され、
前記複数のＨＤＬモジュールに含まれるクロックステートメントの実行に応答して、クロックハンドラーオブジェクトの記述に基づいて対応するファンクションブロックのための対応する模擬クロック信号を発生させるために、コンピュータに、クロックハンドラーオブジェクトの記述に基づいて１つ以上の模擬クロック信号を発生させる、
プログラムを記憶するコンピュータ読み取り可能な記憶媒体。
【請求項１７】
前記プログラムは、コンピュータに、前記クロックハンドラーの記述に基づき複数のＨＤＬモジュールの対応する１つにより記述される集積回路設計の複数のファンクションブロックの１つに各々対応する複数の模擬クロック信号を発生させ、請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項１８】
前記プログラムは、コンピュータに、前記クロックハンドラーの記述に基づき複数の模擬クロック信号の各々を、複数のクロック信号の他の各々に対して独特のスレッドに指定させる、請求項１７に記載のコンピュータ読み取り可能な媒体。
【請求項１９】
前記プログラムは、コンピュータに、前記クロックハンドラーの記述に基づきクロックステートメントに指定された１つ以上のパラメータに基づいて模擬クロック信号を与えさせる、請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項２０】
前記複数のＨＤＬモジュールは、テストベンチモジュールを含み、前記プログラムは、コンピュータに、そのテストベンチモジュールの記述に基づいて複数のＨＤＬモジュールのうちの少なくとも１つの他のモジュールをテストさせ、更に、そのテストベンチモジュールは、クロックステートメントを含む、請求項１６に記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア記述言語（ＨＤＬ）に関し、より特定すれば、ＨＤＬ環境における模擬クロック信号の発生及びコントロールに関する。
【背景技術】
【０００２】
一部分は近代的な製造技術で達成できる高度な集積のために、集積回路設計は、非常に複雑になりつつある。高度な集積をもつ複雑な集積回路は、回路レベルや論理ゲートレベルで設計することが不可能である。従って、複雑な集積回路設計を管理するため、種々のハードウェア記述言語（ＨＤＬ）が開発されている。ＨＤＬは、集積回路の高レベル記述を許す。この記述は、集積回路設計を模擬するためにコンピュータシステムで実行できるソフトウェアコードの形態である。更に、ＨＤＬは、ハードウェアの特定の断片を記述する他のモジュールをテストするのに使用されるテストベンチとして知られたモジュールを書くのに使用することができる。
【０００３】
典型的な集積回路設計は、多数の異なるファンクションユニットを含む。例えば、システムオンチップ（ＳＯＣ）設計は、複数のプロセッサコア、少なくとも１つのメモリ、グラフィック処理ユニット、スイッチングユニット、及び１つ以上のインターフェイス回路を含む。これらの異なるファンクションユニットの各々は、個別のＨＤＬモジュールにより記述される。より詳細には、各ＨＤＬモジュールは、実際にはファンクションユニットの略記記述であるＨＤＬコードの多数のステートメントにより記述される。これらステートメントは、内部オペレーションを記述する付加的なステートメントと共にファンクションブロックの入力及び出力を指定する。これらファンクションユニットの多くは、クロック信号を必要とする。従って、各々の対応するＨＤＬモジュールは、クロック信号を指定する多数のステートメントを、周波数、開始時間、停止時間及び種々の統計学的監視状態のようなパラメータと共に含む。
【発明の概要】
【０００４】
ハードウェア記述言語（ＨＤＬ）環境に使用するためのグローバルなクロックハンドラーオブジェクトが開示される。一実施形態において、ＨＤＬモジュールは、１つ以上のクロックステートメントを含む。コンピュータシステムがクロックステートメントを実行するときに、クロックハンドラーオブジェクトがコールされる。クロックハンドラーオブジェクトは、集積回路設計の１つ以上の模擬ファンクションブロックに対する模擬クロック信号を発生する。各模擬クロックは、個別の且つ独特のスレッドに指定される。クロックハンドラーオブジェクトは、集積回路設計に対する各模擬クロック信号を管理するように構成されたシングルトンオブジェクトである。
【０００５】
一実施形態において、テストベンチとして知られたＨＤＬモジュールは、多数の異なるクロックステートメントを含む。テストベンチは、集積回路設計を実施する別のＨＤＬモジュール（供試装置又は“ＤＵＴ”）のテストを遂行するように構成される。クロックステートメントの実行に応答して、テストベンチは、クロックハンドラーオブジェクトを呼び出してそれに対応するクロック信号の模擬を発生し、そしてそれらをＤＵＴの各ポートに指定する。各クロックハンドラーステートメントは、それに対応する模擬クロック信号のあるパラメータを指定する。そのようなパラメータは、周波数、開始時間、停止時間、別のクロック信号に対するオフセットを含む（が、それに限定されない）。クロックハンドラーオブジェクトは、種々の模擬クロック信号及びそれに対応するパラメータを追跡するためのダイナミックアレイを維持する。又、クロックハンドラーオブジェクトは、テストベンチのオペレーションに対する全ての模擬クロック信号を、テストベンチに基づくＤＵＴの模擬中に発生しそしてコントロールすることができる。クロックハンドラーオブジェクトは、シングルトンオブジェクトであり、即ち集積回路設計の模擬中に一度インスタンス生成される。
【０００６】
以下、添付図面を参照して、本発明を詳細に説明する。
【図面の簡単な説明】
【０００７】
【図１】集積回路設計及びその設計に対応するハードウェア記述言語（ＨＤＬ）モジュールの一実施形態の対応グループを示すブロック図である。
【図２】クロックハンドラーオブジェクトを含むＨＤＬモジュール、及び集積回路設計をテストするためのテストベンチモジュールのグループの一実施形態の編成を示すブロック図である。
【図３】クロックハンドラーオブジェクトの一実施形態により維持されるダイナミックアレイを示す図である。
【図４】テストベンチを使用して集積回路設計のテストを開始するための方法の一実施形態を示すフローチャートである。
【図５】コンピュータ読み取り可能な媒体の一実施形態のブロック図である。
【発明を実施するための形態】
【０００８】
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。ここに使用する見出しは、編成上の目的に過ぎず、説明の範囲を限定するためのものではない。又、本出願全体にわたって使用される「〜してもよい(may)」という語は、許すという意味（即ち、〜の潜在性があるという意味）で使用されるもので、強制の意味（即ち、〜しなければならないという意味）ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【０００９】
種々のユニット、回路又は他のコンポーネントは、１つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に１つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット／回路／コンポーネントは、そのユニット／回路／コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路、及び／又は動作を実施するよう実行できるプログラムインストラクションを記憶するメモリを含む。メモリは、スタティック又はダイナミックランダムアクセスメモリのような揮発性メモリ、及び／又は光学又は磁気ディスク記憶装置、フラッシュメモリ、プログラム可能なリードオンリメモリ、等の不揮発性メモリを含む。同様に、種々のユニット／回路／コンポーネントは、説明の便宜上、１つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。１つ以上のタスクを遂行するように構成されたユニット／回路／コンポーネントを表現する場合に、そのユニット／回路／コンポーネントに関して３５Ｕ.Ｓ.Ｃ.§１１２、第６節の解釈を引用しないことが明確に意図される。
【００１０】
図１は、集積回路設計及びその設計に対応するハードウェア記述言語（ＨＤＬ）モジュールの対応グループの一実施形態を示すブロック図である。図示された実施形態における集積回路（ＩＣ）１０は、複数のファンクションブロックを含む予備的なＩＣ設計のブロック図である。ここに例示するＩＣ１０は、一例に過ぎず、これに限定されるものではないことに注意されたい。
【００１１】
ここに提案する設計では、ＩＣ１０は、２つのコア、即ちコア１２及びコア１４を有するマルチコアプロセッサである。一実施形態において、コア１２及び１４は、互いに同一である。別の実施形態では、これらのコアが異なるものであり、例えば、一方のコアは、一般的な処理のために具現化され、他方のコアは、グラフィック処理専用とされる。ＩＣ１０は、更に、両コアに結合されたメモリコントローラ１５を備えている。最終的な具現化において、メモリコントローラ１５は、システムメモリへのインターフェイスをなすように構成される。又、ＩＣ１０は、両コア及びメモリコントローラ１６に結合されたバスインターフェイス１６も備えている。最終的な具現化におけるバスインターフェイス１６は、ＩＣ１０と１つ以上の周辺バスとの間のインターフェイスをなすように構成される。特に、バスインターフェイス１６は、周辺バスに取り付けられた装置と、ＩＣ１０の他のファンクションブロックとの間のトラフィック流を整合する。
【００１２】
図１に示した例では、ＩＣ１０の設計は、ハードウェア記述言語（ＨＤＬ）モジュール２０によって表され、このモジュールは、次いで、付加的なＨＤＬモジュールより成る。この例におけるＨＤＬモジュール２２は、コア１２のＨＤＬ記述である。同様に、ＨＤＬモジュール２４、２５及び２６は、各々、コア１４、メモリコントローラ１５、及びバスインターフェイス１６のＨＤＬ記述を与える。ＨＤＬにおいて（即ち、コンパイルの前に）、各モジュールは、多数のステートメントを含む。ＨＤＬステートメントは、各モジュールへの入力、各モジュールからの出力、各モジュールにより遂行されるオペレーション、等を指定する。更に、図１に示すＨＤＬモジュールの各々は、それ自体、付加的なＨＤＬモジュールを含むことに注意されたい。例えば、図１に示した所与のＨＤＬモジュールは、加算器、除算器、マルチプレクサ、メモリ、種々の形式の状態マシン、等の付加的なモジュールを含む。ＨＤＬモジュール２０内のあるＨＤＬモジュールは、事前に設計されたライブラリから得られ、他のＨＤＬモジュールは、ＩＣ１０の設計プロセス中に書かれる。
【００１３】
図２は、クロックハンドラーオブジェクトを含むＨＤＬモジュール、及び集積回路設計をテストするためのテストベンチモジュールのグループの一実施形態の編成を示すブロック図である。この所与の例におけるテストベンチ３２は、図１を参照して上述したＨＤＬモジュール２０及びその種々のモジュールに記述されたＩＣ設計のテストを遂行するように構成されたＨＤＬモジュールである。従って、ここに示す実施形態におけるテストベンチ３２は、ＨＤＬモジュール２０及びその種々のサブモジュールを包囲する。更に、テストベンチモジュール３２は、実行されたときに、ＨＤＬモジュール２０及びそのサブモジュールにテスト刺激を与える多数のＨＤＬステートメントも含む。これらのステートメントは、あるケースでは、テスト刺激を与えることにより生じる結果をチェックするが、テストベンチ３２には、より複雑で及び／又は完了により多くの時間を要するテストのために個別の検証ステートメントも含まれる。
【００１４】
ここに示す実施形態におけるテストベンチ３２は、多数の規範的なクロックステートメントを含む。これらクロックステートメントは、実行時に、クロックハンドラーオブジェクト３５をコールする。各クロックステートメントの実行に応答して、クロックハンドラーオブジェクト３５は、ＨＤＬモジュール２０のクロックポート（例えば、Ｃｌｋ＿１、Ｃｌｋ＿２）の１つに与えられる対応する模擬クロック信号を発生する。又、クロックハンドラーオブジェクト３５は、クロックポートを通るのではなく、ＨＤＬモジュール２０の部分に内部で与えられる模擬クロック信号も発生する。いずれの場合にも、クロックハンドラーオブジェクト３５は、動作中に１つ以上のクロック信号を使用するファンクションブロックに対応するＨＤＬモジュールの各々に模擬クロック信号を与える。一般的に、クロックハンドラーオブジェクト３５は、ＨＤＬモジュール２０及びその各々のサブモジュールの任意の部分に対して模擬クロック信号を発生する。
【００１５】
ここに示す実施形態におけるクロックハンドラーオブジェクト３５は、シングルトンオブジェクトである。即ち、ＨＤＬモジュール２０を経てテストベンチ３２の実行中及び／又はＩＣ設計の模擬中にアクティブであるのは、クロックハンドラーオブジェクト３５の１つのインスタンスだけである。更に、ここに示す実施形態におけるクロックハンドラーオブジェクト３５は、所与の模擬に対する全ての模擬クロック信号を発生及びコントロールするように構成され、従って、グローバルなクロックハンドラーとして働く。それとは対照的に、従来の実施形態は、クロックハンドラーオブジェクト３５によって与えられる集中クロック信号を含まず、むしろ、ＨＤＬコードの個別区分において模擬クロック信号及び全ての各パラメータを発生する。
【００１６】
図２の例に示された各クロックステートメントは、クロックハンドラーオブジェクト（‘ｃｌｋ＿ｈｄｌｒ’）、クロックハンドラーにより遂行されるファンクション（例えば、‘ｇｅｔ＿ｃｌｋ’）、クロック名（例えば、‘ＣＬＫ＿１’）、模擬クロックが指定されるクロックポート（例えば、‘Ｃｌｋ＿１’）、及び１つ以上の引数を指定する。引数は、クロック信号周波数のようなクロック信号パラメータを指定するのに使用される。更に、クロックハンドラーオブジェクト３５のアプリケーションプログラミングインターフェイス（ＡＰＩ）は、模擬クロック信号に対する付加的なパラメータをセットするのに使用される。従って、クロックハンドラーオブジェクト３５をコールするＨＤＬモジュールは、模擬クロック信号を生成するクロックステートメントであって、他の考えられるパラメータの中で、開始時間、停止時間、実行するサイクル数、デューティサイクル、及びオフセット（別のクロック信号に対する）を指定するクロックステートメントも含む。これらファンクションをコールするクロックステートメントは、テストベンチモジュール３２を含めて、ＨＤＬモジュール内のどこに配置されてもよい。
【００１７】
クロックハンドラーオブジェクト３２のここに示す実施形態におけるクロックステートメント及びＡＰＩのフォーマットは、単なる例示に過ぎないことに注意されたい。他のフォーマットも考えられ、意図される。
【００１８】
ここに示す実施形態におけるクロックハンドラーオブジェクト３２は、スレッドごとに模擬クロック信号を発生及びコントロールするように構成される。即ち、ここに示す実施形態におけるクロックハンドラーオブジェクト３５は、模擬クロック信号ごとに個別の実行スレッドを発生するように構成される。ここに示す例では、スレッド１は、ＣＬＫ＿１専用であり、スレッド２は、ＣＬＫ＿２専用であり、スレッド３は、ＣＬＫ＿３専用である。模擬クロック信号ごとに個別のスレッドを与えることは、同時にアクティブとなる複数の模擬クロック信号の管理及びコントロールを簡単にする。例えば、所与の模擬クロック信号のパラメータが変化すると、そのクロック信号専用のスレッドに影響するが、他の模擬クロック信号の対応スレッドには影響しない。
【００１９】
クロックハンドラーオブジェクト３５は、複数の模擬クロック信号を管理するためにダイナミックアレイを発生し維持する。このアレイは、そのサイズを必要に応じて増加又は減少できるという点でダイナミックである。図３は、クロックハンドラーオブジェクトの一実施形態により維持されるダイナミックアレイを示す図である。ここに示す実施形態では、アレイ３００は、行及び列に配列された多数のエレメントを含む。アレイ３００の各エレメントは、クロックハンドラーオブジェクト３５により発生される模擬クロック信号の１つに対応する。アレイ３００にエレメントとして記憶される種々のパラメータは、上述したもの、例えば、クロック名、周期／周波数、開始時間、停止時間、等を含む。図３に明確に述べられず又は示されない付加的なパラメータも、ある実施形態には存在する。
【００２０】
上述したように、アレイ３００は、ダイナミックアレイである。従って、例えば、クロックステートメントが模擬クロック信号を要求するためにクロックハンドラーオブジェクト３５をコールするときに、エレメントの新たなセットがアレイ３００に追加される。エレメントの新たなセットは、新たに要求された模擬クロック信号に対応する。更に、クロックハンドラーオブジェクト３５は、それらエレメントがもはや必要ない場合にアレイ３００から除去する。例えば、模擬クロック信号が、模擬／テストの初期部分に対してのみ動作すべき場合には、クロックハンドラーオブジェクト３５は、模擬クロック信号がインアクティブになったときにアレイ３００から各エレメントを除去する。又、クロックハンドラーオブジェクト３５は、模擬／テスト中にアレイ３００のあるエレメントの値を変更することもある。例えば、クロックステートメントが所与の模擬クロック信号に対するオフセット値の変更を指定する場合には、クロックハンドラーオブジェクト３５は、必要な変更を行いながらアレイ３００における対応エレメントを更新する。
【００２１】
図４は、テストベンチを使用してＩＣ設計のテストを開始するための方法の一実施形態を示すフローチャートである。ここに示す実施形態では、方法４００は、テストベンチモジュールを開始する１つ以上のインストラクションの実行で開始される（ブロック４０５）。一実施形態において、テストベンチモジュールを開始する１つ以上のインストラクション、及び方法４００で実行される他のインストラクションは、ＨＤＬステートメントからコンパイルされたマシン言語インストラクションである。インタープリターを使用してＨＤＬステートメントを実行する実施形態も考えられ、意図される。
【００２２】
テストベンチモジュールを開始した後、１つ以上のクロックステートメントに対応するインストラクションが実行され、それに応答してクロックハンドラーオブジェクトがコールされる（ブロック４１０）。クロックハンドラーオブジェクトは、次いで、指定のパラメータに基づいて対応する模擬クロック信号を発生する（ブロック４１５）。クロックハンドラーオブジェクトは、新たに発生されたクロック信号模擬の種々のパラメータに対応するエレメントをダイナミックアレイに追加する（ブロック４２０）。第１のクロックステートメントの実行は、ダイナミックアレイを発生する。新たな模擬クロック信号を要求する付加的なクロックステートメントの実行（ブロック４２５、イエス）は、対応するエレメントをダイナミックアレイに追加させる。以前に発生された模擬クロック信号に対するあるパラメータを指定する付加的なクロックステートメントは、ダイナミックアレイを更新させる。
【００２３】
ＩＣ設計の模擬及びそのテストを開始する前に付加的な模擬クロック信号が発生されない場合には（ブロック４２５、ノー）、ＩＣ設計に対応するＨＤＬモジュールが開始される（ブロック４３０）。しかしながら、ＩＣ設計を記述するＨＤＬモジュール及びそのファンクションブロックが模擬クロック信号の発生及び実行の前に開始される実施形態も考えられ、意図されることに注意されたい。
【００２４】
テストベンチ、望ましいクロック信号の模擬、及びＩＣ設計に対応するＨＤＬモジュールの全部が開始されると、テストベンチの実行及びＩＣ設計のテストを開始することができる（ブロック４３５）。テストベンチの実行中に、テストベクトルがＩＣ設計の種々の入力に与えられ、そしてテスト結果が種々の出力を通して捕獲される。テスト結果の捕獲を分析して、ＩＣ設計が仕様内で正しく機能するかどうか決定することができる。
【００２５】
方法４００は、テストを開始する前にクロックステートメントの実行を経て１つ以上の模擬クロック信号を発生することを含むが、この方法の間にいつでも付加的なクロックステートメントを実行できることに注意されたい。例えば、テストの開始に続き、模擬クロック信号同士のオフセットを変更するクロックステートメントを実行してもよい。更に、テスト中に、模擬クロック信号を開始し及び／又は停止するステートメントも実行される。あるケースでは、テストシーケンスの残り部分に対して模擬クロック信号がインアクチベートされた場合には、クロックハンドラーオブジェクトは、それに対応するエレメントをダイナミックアレイから排除して、そのサイズ、ひいては、そのメモリフットプリントを減少する。一般的に、クロックステートメントは、テストベンチの動作及び／又はＩＣ設計の模擬中にいつでも実行することができる。更に、本開示では、テストベンチ内から実行されるクロックステートメントの例が使用されるが、クロックハンドラーオブジェクトをコールするクロックステートメントが、ＩＣ設計のファンクションユニットを記述するものを含めて、ＨＤＬモジュールから実行されてもよいことに注意されたい。
【００２６】
図５は、コンピュータ読み取り可能な媒体の一実施形態のブロック図である。ここに示す実施形態では、コンピュータ読み取り可能な媒体５０は、非一時的なコンピュータ読み取り可能な媒体である。非一時的なコンピュータ読み取り可能な媒体とは、例えば、フラッシュメモリ（例えば、フラッシュドライブの）、ハードディスク記憶装置、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、等を含む。一般的に、コンピュータ読み取り可能な媒体５０は、適切に装備されたコンピュータシステムが記憶情報にアクセスするところの任意の形式の非一時的なコンピュータ読み取り可能な媒体である。
【００２７】
この特定例において、コンピュータ読み取り可能な媒体５０は、クロックハンドラーオブジェクト３５、テストベンチモジュール３２、ＨＤＬモジュール２０、及びその種々のサブモジュール（ＨＤＬモジュール２２、２４、２５及び２６）の各々を作り上げる種々のデータ構造体を記憶する。ここで使用する「データ構造体」という語は、コンピュータ読み取り可能な媒体５０に記憶されたクロックハンドラーオブジェクト３５、テストベンチ３２、及び種々のＨＤＬモジュールのいずれかのインストラクション、データ又は他の情報を含む。
【００２８】
図５には、コンピュータシステム６０も示されている。このコンピュータシステム６０は、ここでは、詳細に示されていないが、実質的には、コンピュータ読み取り可能な媒体５０から情報をアクセスすることのできるいかなる形式のコンピュータシステムでもよい。更に、コンピュータシステム６０は、種々のＨＤＬモジュールを使用して、ここに述べるＩＣ設計の模擬及びテストを遂行するように構成されてもよい。コンピュータシステム６０は、１つ以上のプロセッサ又はプロセッサコア、種々の形式のメモリ（例えば、ダイナミックランダムアクセスメモリ又はＤＲＡＭ）及び記憶装置（例えば、ハードディスクドライブ）、並びにコンピュータ読み取り可能な媒体からのデータにアクセスするところの種々のポートを含む。又、コンピュータシステム６０は、その各記憶装置にソフトウェアを含んでもよい。そのようなソフトウェアは、ＨＤＬモジュールにおけるＨＤＬステートメントをマシン読み取り可能なフォーマット（例えば、プロセッサインストラクションセットのインストラクション）へ変換するためのコンパイラーを含む。
【００２９】
コンピュータ読み取り可能な媒体は、コンピュータシステム６０によってアクセスすることができる。特に、コンピュータシステム６０は、ＨＤＬモジュール２０及びその各々のサブモジュールにより記述されたＩＣ設計の模擬を遂行するためにコンピュータ読み取り可能な媒体５０に記憶されたデータ構造体にアクセスする。又、コンピュータ読み取り可能な媒体５０のデータ構造体は、テストベンチモジュール５０により記述されたテストルーチン当たりのＩＣ設計のテストを遂行するためにコンピュータシステム６０によりアクセスすることもできる。テストは、コンピュータシステム６０がテストベンチモジュール３２並びにＨＤＬモジュール２０、２２、２４、２５及び２６の各々からのインストラクションを実行することにより達成される。模擬クロック信号を使用する模擬及びテストにおいて、クロックハンドラーオブジェクト３５は、クロックステートメントに対応するインストラクションを実行することによりコールされる。クロックステートメントに対応するインストラクションの実行に応答して、クロックハンドラー３５は、１つ以上の模擬クロック信号を発生し及びコントロールする。
【００３０】
ここで使用するＨＤＬは、ＩＣにおいて具現化されるハードウェアを記述するのに使用される言語を指す。工業的に知られているＨＤＬに加えて、この開示に関するＨＤＬは、ＳｙｓｔｅｍＶｅｒｉｌｏｇ、Ｃ／Ｃ＋＋、等の言語も含む。
【００３１】
以上の開示が完全に理解されれば、種々の修正や変更が当業者に明らかとなろう。そのような変更や修正は、全て、特許請求の範囲に包含されるものとする。
【符号の説明】
【００３２】
１０：集積回路
１２、１４：コア
１５：メモリコントローラ
１６：バスインターフェイス
２０：ＨＤＬモジュール
２２：ＨＤＬモジュール
２４：ＨＤＬモジュール
２５：ＨＤＬモジュール
２６：ＨＤＬモジュール
３２：テストベンチモジュール
３５：クロックハンドラーオブジェクト
５０：コンピュータ読み取り可能な媒体
６０：コンピュータシステム
【図１】
0005562394.tif 000002
【図２】
0005562394.tif 000003
【図３】
0005562394.tif 000004
【図４】
0005562394.tif 000005
【図５】
0005562394.tif 000006