JP5562394B2 - Hdl環境のためのグローバルクロックハンドラーオブジェクト - Google Patents

Hdl環境のためのグローバルクロックハンドラーオブジェクト Download PDF

Info

Publication number
JP5562394B2
JP5562394B2 JP2012230294A JP2012230294A JP5562394B2 JP 5562394 B2 JP5562394 B2 JP 5562394B2 JP 2012230294 A JP2012230294 A JP 2012230294A JP 2012230294 A JP2012230294 A JP 2012230294A JP 5562394 B2 JP5562394 B2 JP 5562394B2
Authority
JP
Japan
Prior art keywords
clock
computer
hdl
simulated
module
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
Application number
JP2012230294A
Other languages
English (en)
Other versions
JP2013101604A (ja
Inventor
ダブリュー ヤン ウィリアム
アール フェルナンド シャメーラ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2013101604A publication Critical patent/JP2013101604A/ja
Application granted granted Critical
Publication of JP5562394B2 publication Critical patent/JP5562394B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)

Description

本発明は、ハードウェア記述言語(HDL)に関し、より特定すれば、HDL環境における模擬クロック信号の発生及びコントロールに関する。
一部分は近代的な製造技術で達成できる高度な集積のために、集積回路設計は、非常に複雑になりつつある。高度な集積をもつ複雑な集積回路は、回路レベルや論理ゲートレベルで設計することが不可能である。従って、複雑な集積回路設計を管理するため、種々のハードウェア記述言語(HDL)が開発されている。HDLは、集積回路の高レベル記述を許す。この記述は、集積回路設計を模擬するためにコンピュータシステムで実行できるソフトウェアコードの形態である。更に、HDLは、ハードウェアの特定の断片を記述する他のモジュールをテストするのに使用されるテストベンチとして知られたモジュールを書くのに使用することができる。
典型的な集積回路設計は、多数の異なるファンクションユニットを含む。例えば、システムオンチップ(SOC)設計は、複数のプロセッサコア、少なくとも1つのメモリ、グラフィック処理ユニット、スイッチングユニット、及び1つ以上のインターフェイス回路を含む。これらの異なるファンクションユニットの各々は、個別のHDLモジュールにより記述される。より詳細には、各HDLモジュールは、実際にはファンクションユニットの略記記述であるHDLコードの多数のステートメントにより記述される。これらステートメントは、内部オペレーションを記述する付加的なステートメントと共にファンクションブロックの入力及び出力を指定する。これらファンクションユニットの多くは、クロック信号を必要とする。従って、各々の対応するHDLモジュールは、クロック信号を指定する多数のステートメントを、周波数、開始時間、停止時間及び種々の統計学的監視状態のようなパラメータと共に含む。
ハードウェア記述言語(HDL)環境に使用するためのグローバルなクロックハンドラーオブジェクトが開示される。一実施形態において、HDLモジュールは、1つ以上のクロックステートメントを含む。コンピュータシステムがクロックステートメントを実行するときに、クロックハンドラーオブジェクトがコールされる。クロックハンドラーオブジェクトは、集積回路設計の1つ以上の模擬ファンクションブロックに対する模擬クロック信号を発生する。各模擬クロックは、個別の且つ独特のスレッドに指定される。クロックハンドラーオブジェクトは、集積回路設計に対する各模擬クロック信号を管理するように構成されたシングルトンオブジェクトである。
一実施形態において、テストベンチとして知られたHDLモジュールは、多数の異なるクロックステートメントを含む。テストベンチは、集積回路設計を実施する別のHDLモジュール(供試装置又は“DUT”)のテストを遂行するように構成される。クロックステートメントの実行に応答して、テストベンチは、クロックハンドラーオブジェクトを呼び出してそれに対応するクロック信号の模擬を発生し、そしてそれらをDUTの各ポートに指定する。各クロックハンドラーステートメントは、それに対応する模擬クロック信号のあるパラメータを指定する。そのようなパラメータは、周波数、開始時間、停止時間、別のクロック信号に対するオフセットを含む(が、それに限定されない)。クロックハンドラーオブジェクトは、種々の模擬クロック信号及びそれに対応するパラメータを追跡するためのダイナミックアレイを維持する。又、クロックハンドラーオブジェクトは、テストベンチのオペレーションに対する全ての模擬クロック信号を、テストベンチに基づくDUTの模擬中に発生しそしてコントロールすることができる。クロックハンドラーオブジェクトは、シングルトンオブジェクトであり、即ち集積回路設計の模擬中に一度インスタンス生成される。
以下、添付図面を参照して、本発明を詳細に説明する。
集積回路設計及びその設計に対応するハードウェア記述言語(HDL)モジュールの一実施形態の対応グループを示すブロック図である。 クロックハンドラーオブジェクトを含むHDLモジュール、及び集積回路設計をテストするためのテストベンチモジュールのグループの一実施形態の編成を示すブロック図である。 クロックハンドラーオブジェクトの一実施形態により維持されるダイナミックアレイを示す図である。 テストベンチを使用して集積回路設計のテストを開始するための方法の一実施形態を示すフローチャートである。 コンピュータ読み取り可能な媒体の一実施形態のブロック図である。
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。ここに使用する見出しは、編成上の目的に過ぎず、説明の範囲を限定するためのものではない。又、本出願全体にわたって使用される「〜してもよい(may)」という語は、許すという意味(即ち、〜の潜在性があるという意味)で使用されるもので、強制の意味(即ち、〜しなければならないという意味)ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に1つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット/回路/コンポーネントは、そのユニット/回路/コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路、及び/又は動作を実施するよう実行できるプログラムインストラクションを記憶するメモリを含む。メモリは、スタティック又はダイナミックランダムアクセスメモリのような揮発性メモリ、及び/又は光学又は磁気ディスク記憶装置、フラッシュメモリ、プログラム可能なリードオンリメモリ、等の不揮発性メモリを含む。同様に、種々のユニット/回路/コンポーネントは、説明の便宜上、1つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。1つ以上のタスクを遂行するように構成されたユニット/回路/コンポーネントを表現する場合に、そのユニット/回路/コンポーネントに関して35U.S.C.§112、第6節の解釈を引用しないことが明確に意図される。
図1は、集積回路設計及びその設計に対応するハードウェア記述言語(HDL)モジュールの対応グループの一実施形態を示すブロック図である。図示された実施形態における集積回路(IC)10は、複数のファンクションブロックを含む予備的なIC設計のブロック図である。ここに例示するIC10は、一例に過ぎず、これに限定されるものではないことに注意されたい。
ここに提案する設計では、IC10は、2つのコア、即ちコア12及びコア14を有するマルチコアプロセッサである。一実施形態において、コア12及び14は、互いに同一である。別の実施形態では、これらのコアが異なるものであり、例えば、一方のコアは、一般的な処理のために具現化され、他方のコアは、グラフィック処理専用とされる。IC10は、更に、両コアに結合されたメモリコントローラ15を備えている。最終的な具現化において、メモリコントローラ15は、システムメモリへのインターフェイスをなすように構成される。又、IC10は、両コア及びメモリコントローラ16に結合されたバスインターフェイス16も備えている。最終的な具現化におけるバスインターフェイス16は、IC10と1つ以上の周辺バスとの間のインターフェイスをなすように構成される。特に、バスインターフェイス16は、周辺バスに取り付けられた装置と、IC10の他のファンクションブロックとの間のトラフィック流を整合する。
図1に示した例では、IC10の設計は、ハードウェア記述言語(HDL)モジュール20によって表され、このモジュールは、次いで、付加的なHDLモジュールより成る。この例におけるHDLモジュール22は、コア12のHDL記述である。同様に、HDLモジュール24、25及び26は、各々、コア14、メモリコントローラ15、及びバスインターフェイス16のHDL記述を与える。HDLにおいて(即ち、コンパイルの前に)、各モジュールは、多数のステートメントを含む。HDLステートメントは、各モジュールへの入力、各モジュールからの出力、各モジュールにより遂行されるオペレーション、等を指定する。更に、図1に示すHDLモジュールの各々は、それ自体、付加的なHDLモジュールを含むことに注意されたい。例えば、図1に示した所与のHDLモジュールは、加算器、除算器、マルチプレクサ、メモリ、種々の形式の状態マシン、等の付加的なモジュールを含む。HDLモジュール20内のあるHDLモジュールは、事前に設計されたライブラリから得られ、他のHDLモジュールは、IC10の設計プロセス中に書かれる。
図2は、クロックハンドラーオブジェクトを含むHDLモジュール、及び集積回路設計をテストするためのテストベンチモジュールのグループの一実施形態の編成を示すブロック図である。この所与の例におけるテストベンチ32は、図1を参照して上述したHDLモジュール20及びその種々のモジュールに記述されたIC設計のテストを遂行するように構成されたHDLモジュールである。従って、ここに示す実施形態におけるテストベンチ32は、HDLモジュール20及びその種々のサブモジュールを包囲する。更に、テストベンチモジュール32は、実行されたときに、HDLモジュール20及びそのサブモジュールにテスト刺激を与える多数のHDLステートメントも含む。これらのステートメントは、あるケースでは、テスト刺激を与えることにより生じる結果をチェックするが、テストベンチ32には、より複雑で及び/又は完了により多くの時間を要するテストのために個別の検証ステートメントも含まれる。
ここに示す実施形態におけるテストベンチ32は、多数の規範的なクロックステートメントを含む。これらクロックステートメントは、実行時に、クロックハンドラーオブジェクト35をコールする。各クロックステートメントの実行に応答して、クロックハンドラーオブジェクト35は、HDLモジュール20のクロックポート(例えば、Clk_1、Clk_2)の1つに与えられる対応する模擬クロック信号を発生する。又、クロックハンドラーオブジェクト35は、クロックポートを通るのではなく、HDLモジュール20の部分に内部で与えられる模擬クロック信号も発生する。いずれの場合にも、クロックハンドラーオブジェクト35は、動作中に1つ以上のクロック信号を使用するファンクションブロックに対応するHDLモジュールの各々に模擬クロック信号を与える。一般的に、クロックハンドラーオブジェクト35は、HDLモジュール20及びその各々のサブモジュールの任意の部分に対して模擬クロック信号を発生する。
ここに示す実施形態におけるクロックハンドラーオブジェクト35は、シングルトンオブジェクトである。即ち、HDLモジュール20を経てテストベンチ32の実行中及び/又はIC設計の模擬中にアクティブであるのは、クロックハンドラーオブジェクト35の1つのインスタンスだけである。更に、ここに示す実施形態におけるクロックハンドラーオブジェクト35は、所与の模擬に対する全ての模擬クロック信号を発生及びコントロールするように構成され、従って、グローバルなクロックハンドラーとして働く。それとは対照的に、従来の実施形態は、クロックハンドラーオブジェクト35によって与えられる集中クロック信号を含まず、むしろ、HDLコードの個別区分において模擬クロック信号及び全ての各パラメータを発生する。
図2の例に示された各クロックステートメントは、クロックハンドラーオブジェクト(‘clk_hdlr’)、クロックハンドラーにより遂行されるファンクション(例えば、‘get_clk’)、クロック名(例えば、‘CLK_1’)、模擬クロックが指定されるクロックポート(例えば、‘Clk_1’)、及び1つ以上の引数を指定する。引数は、クロック信号周波数のようなクロック信号パラメータを指定するのに使用される。更に、クロックハンドラーオブジェクト35のアプリケーションプログラミングインターフェイス(API)は、模擬クロック信号に対する付加的なパラメータをセットするのに使用される。従って、クロックハンドラーオブジェクト35をコールするHDLモジュールは、模擬クロック信号を生成するクロックステートメントであって、他の考えられるパラメータの中で、開始時間、停止時間、実行するサイクル数、デューティサイクル、及びオフセット(別のクロック信号に対する)を指定するクロックステートメントも含む。これらファンクションをコールするクロックステートメントは、テストベンチモジュール32を含めて、HDLモジュール内のどこに配置されてもよい。
クロックハンドラーオブジェクト32のここに示す実施形態におけるクロックステートメント及びAPIのフォーマットは、単なる例示に過ぎないことに注意されたい。他のフォーマットも考えられ、意図される。
ここに示す実施形態におけるクロックハンドラーオブジェクト32は、スレッドごとに模擬クロック信号を発生及びコントロールするように構成される。即ち、ここに示す実施形態におけるクロックハンドラーオブジェクト35は、模擬クロック信号ごとに個別の実行スレッドを発生するように構成される。ここに示す例では、スレッド1は、CLK_1専用であり、スレッド2は、CLK_2専用であり、スレッド3は、CLK_3専用である。模擬クロック信号ごとに個別のスレッドを与えることは、同時にアクティブとなる複数の模擬クロック信号の管理及びコントロールを簡単にする。例えば、所与の模擬クロック信号のパラメータが変化すると、そのクロック信号専用のスレッドに影響するが、他の模擬クロック信号の対応スレッドには影響しない。
クロックハンドラーオブジェクト35は、複数の模擬クロック信号を管理するためにダイナミックアレイを発生し維持する。このアレイは、そのサイズを必要に応じて増加又は減少できるという点でダイナミックである。図3は、クロックハンドラーオブジェクトの一実施形態により維持されるダイナミックアレイを示す図である。ここに示す実施形態では、アレイ300は、行及び列に配列された多数のエレメントを含む。アレイ300の各エレメントは、クロックハンドラーオブジェクト35により発生される模擬クロック信号の1つに対応する。アレイ300にエレメントとして記憶される種々のパラメータは、上述したもの、例えば、クロック名、周期/周波数、開始時間、停止時間、等を含む。図3に明確に述べられず又は示されない付加的なパラメータも、ある実施形態には存在する。
上述したように、アレイ300は、ダイナミックアレイである。従って、例えば、クロックステートメントが模擬クロック信号を要求するためにクロックハンドラーオブジェクト35をコールするときに、エレメントの新たなセットがアレイ300に追加される。エレメントの新たなセットは、新たに要求された模擬クロック信号に対応する。更に、クロックハンドラーオブジェクト35は、それらエレメントがもはや必要ない場合にアレイ300から除去する。例えば、模擬クロック信号が、模擬/テストの初期部分に対してのみ動作すべき場合には、クロックハンドラーオブジェクト35は、模擬クロック信号がインアクティブになったときにアレイ300から各エレメントを除去する。又、クロックハンドラーオブジェクト35は、模擬/テスト中にアレイ300のあるエレメントの値を変更することもある。例えば、クロックステートメントが所与の模擬クロック信号に対するオフセット値の変更を指定する場合には、クロックハンドラーオブジェクト35は、必要な変更を行いながらアレイ300における対応エレメントを更新する。
図4は、テストベンチを使用してIC設計のテストを開始するための方法の一実施形態を示すフローチャートである。ここに示す実施形態では、方法400は、テストベンチモジュールを開始する1つ以上のインストラクションの実行で開始される(ブロック405)。一実施形態において、テストベンチモジュールを開始する1つ以上のインストラクション、及び方法400で実行される他のインストラクションは、HDLステートメントからコンパイルされたマシン言語インストラクションである。インタープリターを使用してHDLステートメントを実行する実施形態も考えられ、意図される。
テストベンチモジュールを開始した後、1つ以上のクロックステートメントに対応するインストラクションが実行され、それに応答してクロックハンドラーオブジェクトがコールされる(ブロック410)。クロックハンドラーオブジェクトは、次いで、指定のパラメータに基づいて対応する模擬クロック信号を発生する(ブロック415)。クロックハンドラーオブジェクトは、新たに発生されたクロック信号模擬の種々のパラメータに対応するエレメントをダイナミックアレイに追加する(ブロック420)。第1のクロックステートメントの実行は、ダイナミックアレイを発生する。新たな模擬クロック信号を要求する付加的なクロックステートメントの実行(ブロック425、イエス)は、対応するエレメントをダイナミックアレイに追加させる。以前に発生された模擬クロック信号に対するあるパラメータを指定する付加的なクロックステートメントは、ダイナミックアレイを更新させる。
IC設計の模擬及びそのテストを開始する前に付加的な模擬クロック信号が発生されない場合には(ブロック425、ノー)、IC設計に対応するHDLモジュールが開始される(ブロック430)。しかしながら、IC設計を記述するHDLモジュール及びそのファンクションブロックが模擬クロック信号の発生及び実行の前に開始される実施形態も考えられ、意図されることに注意されたい。
テストベンチ、望ましいクロック信号の模擬、及びIC設計に対応するHDLモジュールの全部が開始されると、テストベンチの実行及びIC設計のテストを開始することができる(ブロック435)。テストベンチの実行中に、テストベクトルがIC設計の種々の入力に与えられ、そしてテスト結果が種々の出力を通して捕獲される。テスト結果の捕獲を分析して、IC設計が仕様内で正しく機能するかどうか決定することができる。
方法400は、テストを開始する前にクロックステートメントの実行を経て1つ以上の模擬クロック信号を発生することを含むが、この方法の間にいつでも付加的なクロックステートメントを実行できることに注意されたい。例えば、テストの開始に続き、模擬クロック信号同士のオフセットを変更するクロックステートメントを実行してもよい。更に、テスト中に、模擬クロック信号を開始し及び/又は停止するステートメントも実行される。あるケースでは、テストシーケンスの残り部分に対して模擬クロック信号がインアクチベートされた場合には、クロックハンドラーオブジェクトは、それに対応するエレメントをダイナミックアレイから排除して、そのサイズ、ひいては、そのメモリフットプリントを減少する。一般的に、クロックステートメントは、テストベンチの動作及び/又はIC設計の模擬中にいつでも実行することができる。更に、本開示では、テストベンチ内から実行されるクロックステートメントの例が使用されるが、クロックハンドラーオブジェクトをコールするクロックステートメントが、IC設計のファンクションユニットを記述するものを含めて、HDLモジュールから実行されてもよいことに注意されたい。
図5は、コンピュータ読み取り可能な媒体の一実施形態のブロック図である。ここに示す実施形態では、コンピュータ読み取り可能な媒体50は、非一時的なコンピュータ読み取り可能な媒体である。非一時的なコンピュータ読み取り可能な媒体とは、例えば、フラッシュメモリ(例えば、フラッシュドライブの)、ハードディスク記憶装置、CD−ROM、DVD−ROM、等を含む。一般的に、コンピュータ読み取り可能な媒体50は、適切に装備されたコンピュータシステムが記憶情報にアクセスするところの任意の形式の非一時的なコンピュータ読み取り可能な媒体である。
この特定例において、コンピュータ読み取り可能な媒体50は、クロックハンドラーオブジェクト35、テストベンチモジュール32、HDLモジュール20、及びその種々のサブモジュール(HDLモジュール22、24、25及び26)の各々を作り上げる種々のデータ構造体を記憶する。ここで使用する「データ構造体」という語は、コンピュータ読み取り可能な媒体50に記憶されたクロックハンドラーオブジェクト35、テストベンチ32、及び種々のHDLモジュールのいずれかのインストラクション、データ又は他の情報を含む。
図5には、コンピュータシステム60も示されている。このコンピュータシステム60は、ここでは、詳細に示されていないが、実質的には、コンピュータ読み取り可能な媒体50から情報をアクセスすることのできるいかなる形式のコンピュータシステムでもよい。更に、コンピュータシステム60は、種々のHDLモジュールを使用して、ここに述べるIC設計の模擬及びテストを遂行するように構成されてもよい。コンピュータシステム60は、1つ以上のプロセッサ又はプロセッサコア、種々の形式のメモリ(例えば、ダイナミックランダムアクセスメモリ又はDRAM)及び記憶装置(例えば、ハードディスクドライブ)、並びにコンピュータ読み取り可能な媒体からのデータにアクセスするところの種々のポートを含む。又、コンピュータシステム60は、その各記憶装置にソフトウェアを含んでもよい。そのようなソフトウェアは、HDLモジュールにおけるHDLステートメントをマシン読み取り可能なフォーマット(例えば、プロセッサインストラクションセットのインストラクション)へ変換するためのコンパイラーを含む。
コンピュータ読み取り可能な媒体は、コンピュータシステム60によってアクセスすることができる。特に、コンピュータシステム60は、HDLモジュール20及びその各々のサブモジュールにより記述されたIC設計の模擬を遂行するためにコンピュータ読み取り可能な媒体50に記憶されたデータ構造体にアクセスする。又、コンピュータ読み取り可能な媒体50のデータ構造体は、テストベンチモジュール50により記述されたテストルーチン当たりのIC設計のテストを遂行するためにコンピュータシステム60によりアクセスすることもできる。テストは、コンピュータシステム60がテストベンチモジュール32並びにHDLモジュール20、22、24、25及び26の各々からのインストラクションを実行することにより達成される。模擬クロック信号を使用する模擬及びテストにおいて、クロックハンドラーオブジェクト35は、クロックステートメントに対応するインストラクションを実行することによりコールされる。クロックステートメントに対応するインストラクションの実行に応答して、クロックハンドラー35は、1つ以上の模擬クロック信号を発生し及びコントロールする。
ここで使用するHDLは、ICにおいて具現化されるハードウェアを記述するのに使用される言語を指す。工業的に知られているHDLに加えて、この開示に関するHDLは、SystemVerilog、C/C++、等の言語も含む。
以上の開示が完全に理解されれば、種々の修正や変更が当業者に明らかとなろう。そのような変更や修正は、全て、特許請求の範囲に包含されるものとする。
10:集積回路
12、14:コア
15:メモリコントローラ
16:バスインターフェイス
20:HDLモジュール
22:HDLモジュール
24:HDLモジュール
25:HDLモジュール
26:HDLモジュール
32:テストベンチモジュール
35:クロックハンドラーオブジェクト
50:コンピュータ読み取り可能な媒体
60:コンピュータシステム

Claims (20)

  1. コンピュータ
    第1のハードウェア記述言語(HDL)モジュールの記述に基づき設計対象である集積回路の動作を模擬するための模擬クロック信号の要求を発生させ
    クロックハンドラーオブジェクトの記述に基づき、その要求に応答して、模擬クロック信号を発生させる
    プログラムを記憶しているコンピュータ読み取り可能な記憶媒体。
  2. 前記クロックハンドラーオブジェクトは、シングルトンオブジェクトである、請求項1に記載のコンピュータ読み取り可能な媒体。
  3. 前記プログラムは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、前記第1のHDLモジュールに記述された複数の疑似クロック信号の発生要求である対応する複数のクロックハンドラーステートメントの実行に応答して、対応する独特のスレッド内で複数の模擬クロック信号の各々を発生させる、請求項1に記載のコンピュータ読み取り可能な媒体。
  4. 前記プログラムは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、前記模擬クロック信号に対して、別のクロック信号に対するオフセットをセットさせる、請求項1に記載のコンピュータ読み取り可能な媒体。
  5. 前記プログラムは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、ダイナミックアレイを維持させ、そのダイナミックアレイの各エレメントは、1つ以上の模擬クロック信号の1つに関する情報を含む、請求項1に記載のコンピュータ読み取り可能な媒体。
  6. 前記プログラムは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、複数のHDLモジュールの対応する1つにより記述される設計対象である集積回路の設計の複数のファンクションブロックの1つに各々対応する複数の模擬クロック信号を発生させる、請求項1に記載のコンピュータ読み取り可能な媒体。
  7. 前記第1のHDLモジュールは、コンピュータに、前記複数のHDLモジュールの少なくとも1つの他のモジュールをテストさせるように記述されたテストベンチモジュールであり、このテストベンチモジュールは、コンピュータに、前記クロックハンドラーオブジェクトの記述に基づき、複数の模擬クロック信号を発生させる複数のクロックステートメントを含む、請求項6に記載のコンピュータ読み取り可能な媒体。
  8. 前記複数のクロックステートメントの各々は、複数の模擬クロック信号のうちの対応する1つの信号の1つ以上のパラメータを指示するように構成され、その1つ以上のパラメータは、クロック周期を含む、請求項7に記載のコンピュータ読み取り可能な媒体。
  9. ハードウェア記述言語(HDL)モジュールの記述に基づき設計対象である集積回路の動作を模擬して、テストするための方法であって、コンピュータが
    集積回路の模擬中に前記HDLモジュールに含まれるクロックハンドラーステートメントを実行する段階と、
    クロックハンドラーオブジェクトが実行されて、前記クロックハンドラーステートメントの実行に応答して模擬クロック信号発生する段階と、
    を含む方法。
  10. ハードウェア記述言語(HDL)モジュールの模擬クロックポートに模擬クロック信号を指定する段階を更に含み、前記HDLモジュールは、集積回路のブロックに対応する、請求項9に記載の方法。
  11. コンピュータが、前記クロックハンドラーオブジェクトの記述に基づき、前記模擬クロック信号に対応するスレッドを発生する段階を更に含む、請求項9に記載の方法。
  12. コンピュータが、前記クロックハンドラーオブジェクトの記述に基づき、前記模擬クロック信号のパラメータをセットする段階を更に含み、前記パラメータは、クロック信号オフセットを含む、請求項9に記載の方法。
  13. コンピュータが、前記クロックハンドラーオブジェクトの記述に基づき、前記模擬クロック信号及び1つ以上の付加的な模擬クロック信号に対応する情報のダイナミックアレイを維持する段階を更に含み、そのダイナミックアレイの各エレメントは、前記模擬クロック信号又は1つ以上の付加的な模擬クロック信号の一方のパラメータに関する情報を含む、請求項12に記載の方法。
  14. 前記ダイナミックアレイの各エレメントは、それに対応する模擬クロック信号の周期を指示する値を含む、請求項13に記載の方法。
  15. コンピュータが、テストベンチモジュールの記述に基づきHDLモジュールのテストを遂行する段階を更に含み、そのテストベンチモジュールは、クロックハンドラーステートメントを含む、請求項10に記載の方法。
  16. コンピュータに、設計対象である集積回路を模擬させ、集積回路の設計は、ハードウェア記述言語(HDL)で記述され、集積回路の設計は、複数のHDLモジュールの対応する1つによって各々記述される1つ以上のファンクションブロックを含み、更に、その1つ以上のファンクションブロックの各々のために、1つ以上のクロック信号の1つ使用され
    前記複数のHDLモジュールに含まれるクロックステートメントの実行に応答して、クロックハンドラーオブジェクトの記述に基づいて対応するファンクションブロックのための対応する模擬クロック信号を発生させるために、コンピュータに、クロックハンドラーオブジェクトの記述に基づいて1つ以上の模擬クロック信号を発生させる
    プログラムを記憶するコンピュータ読み取り可能な記憶媒体。
  17. 前記プログラムは、コンピュータに、前記クロックハンドラーの記述に基づき複数のHDLモジュールの対応する1つにより記述される集積回路設計の複数のファンクションブロックの1つに各々対応する複数の模擬クロック信号を発生させ、請求項16に記載のコンピュータ読み取り可能な媒体。
  18. 前記プログラムは、コンピュータに、前記クロックハンドラーの記述に基づき複数の模擬クロック信号の各々を、複数のクロック信号の他の各々に対して独特のスレッドに指定させる、請求項17に記載のコンピュータ読み取り可能な媒体。
  19. 前記プログラムは、コンピュータに、前記クロックハンドラーの記述に基づきクロックステートメントに指定された1つ以上のパラメータに基づいて模擬クロック信号を与えさせる、請求項16に記載のコンピュータ読み取り可能な媒体。
  20. 前記複数のHDLモジュールは、テストベンチモジュールを含み、前記プログラムは、コンピュータに、そのテストベンチモジュールの記述に基づいて複数のHDLモジュールのうちの少なくとも1つの他のモジュールをテストさせ、更に、そのテストベンチモジュールは、クロックステートメントを含む、請求項16に記載のコンピュータ読み取り可能な媒体。
JP2012230294A 2011-10-14 2012-09-28 Hdl環境のためのグローバルクロックハンドラーオブジェクト Expired - Fee Related JP5562394B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/274,015 2011-10-14
US13/274,015 US20130097568A1 (en) 2011-10-14 2011-10-14 Global clock handler object for hdl environment

Publications (2)

Publication Number Publication Date
JP2013101604A JP2013101604A (ja) 2013-05-23
JP5562394B2 true JP5562394B2 (ja) 2014-07-30

Family

ID=47044791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012230294A Expired - Fee Related JP5562394B2 (ja) 2011-10-14 2012-09-28 Hdl環境のためのグローバルクロックハンドラーオブジェクト

Country Status (8)

Country Link
US (1) US20130097568A1 (ja)
EP (1) EP2581844A1 (ja)
JP (1) JP5562394B2 (ja)
KR (1) KR101418162B1 (ja)
CN (1) CN103049599A (ja)
AU (1) AU2012227208B2 (ja)
TW (1) TW201331775A (ja)
WO (1) WO2013055512A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103439648B (zh) * 2013-08-08 2016-05-04 北京华大信安科技有限公司 一种验证方法、装置及芯片
US9922150B1 (en) * 2014-11-11 2018-03-20 Altera Corporation Method and apparatus for satisfying operating conditions in a system design using an electronic design automation tool
CN106250280B (zh) * 2016-07-25 2021-03-19 北京联盛德微电子有限责任公司 一种时钟信号测试方法和装置
US10325046B2 (en) * 2016-09-20 2019-06-18 Synopsys, Inc. Formal method for clock tree analysis and optimization
WO2020068988A1 (en) * 2018-09-25 2020-04-02 Synopsys, Inc. Hardware simulation systems and methods for identifying state-holding loops and oscillating loops

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3505018B2 (ja) * 1994-11-22 2004-03-08 株式会社ルネサステクノロジ 半導体集積回路
JP2908337B2 (ja) * 1996-08-26 1999-06-21 静岡日本電気株式会社 マルチプロセス対応vhdlシミュレーション実行システム
US6785873B1 (en) * 1997-05-02 2004-08-31 Axis Systems, Inc. Emulation system with multiple asynchronous clocks
JPH11213021A (ja) * 1998-01-26 1999-08-06 Matsushita Electric Ind Co Ltd シミュレーションモデル生成方法及び装置
US6466898B1 (en) * 1999-01-12 2002-10-15 Terence Chan Multithreaded, mixed hardware description languages logic simulation on engineering workstations
US6571373B1 (en) * 2000-01-31 2003-05-27 International Business Machines Corporation Simulator-independent system-on-chip verification methodology
KR20030028541A (ko) * 2000-07-05 2003-04-08 스티븐 제이 마이어 혼합 신호 시뮬레이션
US6269043B1 (en) * 2000-07-31 2001-07-31 Cisco Technology, Inc. Power conservation system employing a snooze mode
JP4088439B2 (ja) * 2000-12-28 2008-05-21 富士通株式会社 論理装置の動作シミュレーション方法並びに論理装置の動作シミュレーションプログラム及び同プログラムを記録したコンピュータ読み取り可能な記録媒体
US20030018462A1 (en) * 2001-07-16 2003-01-23 Liang T. Chen Multi-clock system simulation
US7080365B2 (en) * 2001-08-17 2006-07-18 Sun Microsystems, Inc. Method and apparatus for simulation system compiler
JP2004013860A (ja) * 2002-06-12 2004-01-15 Fujitsu Ltd 論理シミュレーション方法及び装置
US20040093198A1 (en) 2002-11-08 2004-05-13 Carbon Design Systems Hardware simulation with access restrictions
US7366652B2 (en) * 2003-06-16 2008-04-29 Springsoft, Inc. Method of programming a co-verification system
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7260798B2 (en) * 2003-12-29 2007-08-21 Mentor Graphics Corporation Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform
KR100536293B1 (ko) * 2004-02-17 2005-12-12 박현주 칩 설계 검증 장치 및 방법
US7433813B1 (en) * 2004-05-20 2008-10-07 Xilinx, Inc. Embedding a co-simulated hardware object in an event-driven simulator
US7225416B1 (en) * 2004-06-15 2007-05-29 Altera Corporation Methods and apparatus for automatic test component generation and inclusion into simulation testbench
JP4631493B2 (ja) * 2005-03-25 2011-02-16 ヤマハ株式会社 シミュレーション装置
US7890901B2 (en) * 2006-03-24 2011-02-15 International Business Machines Corporation Method and system for verifying the equivalence of digital circuits
US10423740B2 (en) * 2009-04-29 2019-09-24 Synopsys, Inc. Logic simulation and/or emulation which follows hardware semantics
JP2011070343A (ja) 2009-09-25 2011-04-07 Hitachi Information & Communication Engineering Ltd 論理エミュレーション方法及び論理エミュレーションプログラム
CN102054109B (zh) * 2010-12-31 2014-03-19 北京大学深圳研究生院 集成电路下层硬件映射方法、数据控制流生成方法及装置

Also Published As

Publication number Publication date
US20130097568A1 (en) 2013-04-18
EP2581844A1 (en) 2013-04-17
KR101418162B1 (ko) 2014-07-09
AU2012227208A1 (en) 2013-05-02
CN103049599A (zh) 2013-04-17
TW201331775A (zh) 2013-08-01
WO2013055512A1 (en) 2013-04-18
AU2012227208B2 (en) 2013-11-21
KR20130040701A (ko) 2013-04-24
JP2013101604A (ja) 2013-05-23

Similar Documents

Publication Publication Date Title
US7945888B2 (en) Model-based hardware exerciser, device, system and method thereof
JP5562394B2 (ja) Hdl環境のためのグローバルクロックハンドラーオブジェクト
US8543953B2 (en) Automated stimulus steering during simulation of an integrated circuit design
US20130054161A1 (en) Cell-Aware Fault Model Generation For Delay Faults
US11520968B2 (en) Verification platform for system on chip and verification method thereof
US20150234965A1 (en) Method and an apparatus for automatic processor design and verification
US20130024178A1 (en) Playback methodology for verification components
US9235670B2 (en) Method and an apparatus for automatic generation of verification environment for processor design and verification
KR102205899B1 (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
JP2008186252A (ja) テストベンチ生成機能を有する動作合成装置と方法及びプログラム
US7895027B2 (en) HDL re-simulation from checkpoints
TWI818068B (zh) 用於分段記憶體實體之方法及裝置
US9218273B2 (en) Automatic generation of a resource reconfiguring test
US9946823B2 (en) Dynamic control of design clock generation in emulation
US10295596B1 (en) Method and system for generating validation tests
US8429581B2 (en) Method for verifying functional equivalence between a reference IC design and a modified version of the reference IC design
US20080262821A1 (en) Method, apparatus, and computer program product for dynamically managing simulated addresses
US11836431B2 (en) Integrated circuit composite test generation
US11719749B1 (en) Method and system for saving and restoring of initialization actions on dut and corresponding test environment
US9823305B1 (en) Method and system for generating post-silicon validation tests
US20130054218A1 (en) Method and Software Tool for Automatically Testing a Circuit Design
CN107247577B (zh) 一种配置soc ip核的方法、装置及系统
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
US10387599B1 (en) Systems, methods, and computer-readable media utilizing improved data structures and design flow for programmable memory built-in self-test (PMBIST)
Putrya Method of free C++ code migration between SoC level tests and standalone IP-Core UVM environments

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131217

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: 20140519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140610

R150 Certificate of patent or registration of utility model

Ref document number: 5562394

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees