JP2009539186A - ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置 - Google Patents

ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置 Download PDF

Info

Publication number
JP2009539186A
JP2009539186A JP2009513276A JP2009513276A JP2009539186A JP 2009539186 A JP2009539186 A JP 2009539186A JP 2009513276 A JP2009513276 A JP 2009513276A JP 2009513276 A JP2009513276 A JP 2009513276A JP 2009539186 A JP2009539186 A JP 2009539186A
Authority
JP
Japan
Prior art keywords
submodel
processor
processors
conditional
signal
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.)
Granted
Application number
JP2009513276A
Other languages
English (en)
Other versions
JP5146451B2 (ja
Inventor
ミハイル ベルシュテイン
チャールズ バーグホーン
ミッチェル ジー ポプラック
Original Assignee
ケイデンス デザイン システムズ インコーポレイテッド
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 ケイデンス デザイン システムズ インコーポレイテッド filed Critical ケイデンス デザイン システムズ インコーポレイテッド
Publication of JP2009539186A publication Critical patent/JP2009539186A/ja
Application granted granted Critical
Publication of JP5146451B2 publication Critical patent/JP5146451B2/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • 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
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Multi Processors (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

プロセッサベースのハードウエアエミュレーションエンジン、特に、エミュレーションエンジン内でプロセッサを同期化する方法及び装置を提供する。同期したプロセッサを使用してハードウエアエミュレーションを実施する方法、装置、及びそのためのハードウエア設計をコンパイルする方法を説明する。装置は、ハードウエア設計に関するデータを評価するためのプロセッサ群を形成する複数のプロセッサと、ハードウエア設計の少なくとも一部分をエミュレートしている間にプロセッサ群の演算を同期させるためのシンクロナイザとを含む。方法は、ハードウエア設計に関するデータを評価するためのプロセッサ群を形成する複数のプロセッサに同期信号を供給する段階と、プロセッサ群から待機信号を受信する段階と、プロセッサ群に実行信号を供給する段階とを含み、実行信号により、プロセッサ群は、サブモデルを評価する。ハードウエア設計をコンパイルする方法は、少なくとも1つの高レベル構成概念を演算のシーケンスに変換する段階と、少なくとも1つの条件付きサブモデルを構成する演算のシーケンスを特定する段階とを含む。
【選択図】図1

Description

本発明の実施形態は、一般的に、プロセッサベースのハードウエアエミュレーションエンジンに関するものであり、より具体的には、エミュレーションエンジン内でプロセッサを同期化する方法及び装置に関する。
ハードウエアエミュレータは、ハードウエア設計の検証において使用するプログラマブルデバイスである。ハードウエア設計検証の一般的な方法は、プロセッサベースのハードウエアエミュレータを使用して設計をエミュレートすることである。これらのプロセッサベースのエミュレータは、順次、組合せ論理レベルを評価し、入力から始めて出力に進む。論理レベルの組全体を通る各通過は、サイクルとして公知であり、各個々の論理レベルの評価は、エミュレーション段階として公知である。
例示的なハードウエアエミュレータは、本明細書においてその全内容が引用により組み込まれている「エミュレーションエンジン内のクラスター化したプロセッサ」という名称の本出願人に譲渡された米国特許第6、618、698号に説明されている。ハードウエアエミュレータは、エンジニア及びハードウエア設計者が、最初にハードウエアを物理的に製造する必要なく、集積回路、集積回路の基板全体、又はシステム全体の演算を試験及び検証することを可能にする。
集積回路上に存在する論理ゲートの複雑性及び数は、ここ数年で大幅に増加した。ハードウエアエミュレータは、集積回路の複雑性の増大に遅れを取らないように効率を改善する必要がある。ハードウエアエミュレータが集積回路をエミュレートすることができる速度は、エミュレータの効率の最も重要な指標の1つであり、エミュレータ市場におけるエミュレータの最も重要な売り要素の1つでもある。
ハードウエアエミュレータは、複数のプロセッサで構成されている。各処理サイクル中、各プロセッサは、論理ゲートをエミュレートし、すなわち、集積回路内の論理ゲートの機能を模倣することができる。プロセッサは、集積回路に存在する論理ゲートがパラレルに多くの結果を計算するのと同じ方法で、パラレルに結果を計算するように配置される。それによって集積回路に発生するものと類似の論理の連鎖が作り出される。論理の連鎖においては、プロセッサ間の効率的な通信が極めて重要である。
ハードウエアエミュレータにおいてプロセッサによって実行されるプログラムは、演算のシーケンスを収容する命令から成る。演算のシーケンス全体は、モデルとして公知である。モデルは、更に、無条件モデル、すなわち、演算のあらゆる他のシーケンスの結果に依存しない演算のシーケンスと、1つ又はそれよりも多くの条件付きモデル、すなわち、その実行が演算の別のシーケンスの結果に依存する演算のシーケンスとで構成されている。条件付きモデル及び無条件モデルは、ハードウエアの全体的な「モデル」に対して、本明細書では「サブモデル」と呼ぶ。
ある一定の演算は、直接にデータに作用し、一方、他の演算は、データが作用を受けるのに必要な条件を説明する。例えば、以下の方程式1により説明される演算のシーケンスによって説明される条件付きサブモデルを考察する。
if(a!=0)
b=c+d (1)
演算「b=c+d」(bは、c+dに等しい)は、「c」及び「d」をオペランドとして使用してデータ要素「b」に作用する。演算「a!=0」(aは、ゼロに等しくない)は、データ要素「b」が作用を受けるのに必要な条件を説明する。
条件付きサブモデルは、以前はエミュレータを使用して評価されておらず、その理由は、条件付きサブモデルの評価は、プロセッサ間の通信の効率を低下すると考えられ、すなわち、非条件付きサブモデルを評価することに対して、条件付きサブモデルの評価には、付加的なエミュレーション段階が必要であるからである。説明したような条件付きサブモデルは、2つの可能な結果を有する。正しい結果の計算には余分のエミュレーション段階が必要であるために、プロセッサ間通信の効率は低下し、更に、この方程式の第1の部分の出力、すなわち、if(a!=0)が不確定であるために、プロセッサは、パラレルで結果を計算することができない。従って、コンパイラは、条件付きサブモデルを論理的に同等であるがより長い非条件付きサブモデルに変換する必要がある。例えば、a、b、c、及びdがブールオペランドである場合、演算の上述のシーケンスは、以下の方程式2のように書き直すことができる。
b=a&(c+d)|!a&b (2)
上述の方程式は、上述の条件付き方程式のより長い論理的非条件付き均等物である。ハードウエアエミュレータは、たとえそれが基本とする条件文の第1の部分がおそらく偽であり、すなわち、この方程式の第1の部分が真ではなく、方程式の残りを評価する必要がなくても、この長い非条件付き方程式を評価する必要がある。
米国特許第6、618、698号
すなわち、条件付きサブモデルを効率的に評価することができるプロセッサベースのハードウエアエミュレーションシステムに対する必要性が当業技術に存在する。ハードウエアエミュレーションシステムは、実行の条件が満たされないサブモデルを評価することを回避すべきである。
本発明は、一般的に、同期したプロセッサの群を含むプロセッサベースのハードウエアエミュレーションシステムに関する。装置は、ハードウエア設計に関するデータを評価するためのプロセッサ群を形成する複数のプロセッサと、ハードウエア設計の少なくとも一部分をエミュレートしている間にプロセッサ群の演算を同期させるためのシンクロナイザとを含む。方法は、ハードウエア設計に関するデータを評価するためのプロセッサ群を形成する複数のプロセッサに同期信号を供給する段階と、プロセッサ群から待機信号を受信する段階と、プロセッサ群に実行信号を供給する段階とを含み、実行信号により、プロセッサ群は、サブモデルを評価する。ハードウエア設計をコンパイルする方法は、少なくとも1つの高レベル構成概念を演算のシーケンスに変換する段階と、少なくとも1つの条件付きサブモデルを構成する演算のシーケンスを特定する段階とを含む。条件付きサブモデルを特定することにより、システムは、評価に向けて条件付きサブモデルを1つ又は複数の特定のプロセッサ群に割り当てることができる。
本発明の上述の特徴を詳細に理解することができるように、先に簡単に要約した本発明のより具体的な説明は、一部を添付図面に例示する実施形態を参照して得ることができる。しかし、本発明は、他の等しく有効な実施形態を受け入れることができるので、添付図面は、本発明の典型的な実施形態だけを例示し、従って、その範囲を制限すると考えないものとすることに注意されたい。
エミュレーションシステムの概略図である。 エミュレーションシステムの一部であるエミュレーションエンジンのブロック図である。 本発明の一実施形態による同期したプロセッサ群のブロック図である。 本発明の一実施形態によるプロセッサの群を同期させる方法の流れ図である。 本発明の一実施形態に従ってコンパイラによって利用される方法の流れ図である。 コンパイラのブロック図である。 本発明の一実施形態による無条件サブモデル及び条件付きサブモデルを評価する方法の流れ図を共に示す図の一方である。 本発明の一実施形態による無条件サブモデル及び条件付きサブモデルを評価する方法の流れ図を共に示す図の他方である。
本発明は、少なくとも1つの同期したプロセッサ群、並びにこのような同期したプロセッサ群による評価に向けて条件付きサブモデルを特定するコンパイラを含むプロセッサベースのハードウエアエミュレーションシステムである。
図1は、エミュレーションシステム100の概要を示している。システムは、コンピュータワークステーション105、エミュレーションボード120、及びターゲットシステム130を含む。コンピュータワークステーション105は、エミュレーションボード120に対してエミュレーションサポート機器を提供する。
コンピュータワークステーション105は、少なくとも1つの中央演算処理装置(CPU)106と、サポート回路108と、メモリ110とを含む。CPU106は、1つ又はそれよりも多くの従来的に利用可能なマイクロプロセッサ及び/又はマイクロコントローラを含むことができる。サポート回路108は、CPU106の演算をサポートするのに使用する公知の回路である。これらの回路は、電源、クロック、入出力インタフェース回路、及びキャッシュなどを含む。
メモリ110は、ランダムアクセスメモリ、読み出し専用メモリ、取外し可能ディスクメモリ、フラッシュメモリ、光記憶装置、及びこれらの形式のメモリの様々な組合せを含むことができる。メモリ110は、主記憶装置と呼ぶことがあり、キャッシュメモリ又はバッファメモリとしてある程度使用することができる。メモリ110は、オペレーティングシステム(OS)112及びコンパイラ114のような様々な形態のソフトウエア及びファイルを格納する。
コンパイラ114は、ハードウエア設計、例えば、VHDL又はVerilogで説明したハードウエアを、エミュレーションボード120によって評価することができる命令のシーケンスに変換する。
コンピュータワークステーション105は、ユーザがエミュレーションボード120とインタフェースで接続し、エミュレーション処理を制御し、かつ分析に向けてエミュレーション結果を収集することを可能にする。エミュレーションボード120は、個々のエミュレーション回路1221〜12264(集合的に122)で構成されている。一般的に、エミュレーション回路122は、集積回路(本明細書ではエミュレーションチップとも呼ぶ)である。コンピュータワークステーション105の制御下で、プログラミング情報及びデータは、エミュレーションボード120に取り込まれる。
エミュレーションサポート機器110から受信したプログラミングに応答して、エミュレーションボード120は、ターゲットシステム130の一部125をエミュレートする。ターゲットシステム130の一部125は、集積回路、メモリ、プロセッサ、又はプログラミング言語でエミュレートすることができるあらゆるオブジェクト又はデバイスとすることができる。一般的に普及しているエミュレーションプログラム言語には、Verilog及びVHDLが含まれる。
図2は、エミュレーションボード120によって利用されるエミュレーションチップ122の拡大図を示している。エミュレーションチップ122は、互いに及びシンクロナイザ201と通信することができるプロセッサ2021〜2026(集合的に202)の同期した群を含む。プロセッサ202の各同期した群は、少なくとも1つの入力206及び少なくとも1つの出力208を有する。入力206及び出力208は、プロセッサ202の各同期した群が、入力コネクタ212及び出力コネクタ214、外部ハードウエア216、及びシンクロナイザ201を通じて、プロセッサ202の他の同期した群、すなわち、他のエミュレーションチップと通信することを可能にする。外部ハードウエア216は、VLSI回路、デバッガ、メモリ、又はエミュレーションチップ122が恩典を得ることができるハードウエア及びソフトウエアのあらゆる組合せとすることができる。エミュレーションチップ122は、他のエミュレーションチップからデータを受信する入力コネクタ2121〜2124(集合的に212)と、他のエミュレーションチップにデータを供給し、チップパッドとして公知である出力コネクタ2141〜2144(集合的に214)とを有する。
図3は、プロセッサ202の同期した群(SPG)の拡大図を示している。SPG202は、命令メモリ3041〜304n(集合的に304)と、プロセッサ3101〜310n(集合的に310)と、データメモリ3121〜312n(集合的に312)と、サブモデル照合ブロック3141〜314n(集合的に314)とを含む。各SPG202は、少なくとも1つの入力206及び少なくとも1つの出力208を有する。簡潔さを期すために、SPG202は、入力2061〜2063及び出力2081〜2083を有するように示されている。共通シーケンサ302及び共通サブモデルレジスタ316は、プロセッサ202の同期した群によって共有される。プロセッサ202の同期した群は、シンクロナイザ201(図2に示す)によって同期される。
SPG202は、無条件サブモデル、すなわち、演算のあらゆる他のシーケンスの結果に依存しない演算の無条件シーケンス、及び少なくとも1つの条件付きサブモデル、すなわち、シーケンスの実行が演算の別のシーケンスの結果に依存する演算のシーケンスを評価する。無条件サブモデル及び条件付きサブモデルは、各々、サブモデル識別子によって特定される。
各プロセッサ310は、関連した命令メモリ304に連結されている。シーケンサ302は、命令メモリ304の各々に接続されている。各プロセッサ310は、関連したデータメモリ312にも連結されている。プロセッサ310の一部は、入力206及び出力208に連結されている。より具体的には、プロセッサ3101は、入力2061及び出力2081に連結されており、プロセッサ3103は、入力2062及び出力2082に連結されており、プロセッサ310n-1は、入力2063及び出力2083に連結されている。各データメモリ312は、関連したサブモデル照合ブロック314に連結されている。各サブモデル照合ブロック314は、関連した命令メモリ304に連結されている。各サブモデル照合ブロック314は、共通サブモデルレジスタ316に連結されている。
プロセッサ310は、エミュレーションエンジン120の基本構成要素である。プロセッサの主な機能は、N個の入力論理関数(ここでNは整数である)を実行して、関数ビット出力として公知である単一のビット結果を生成することである。各論理関数の入力は、前回の演算から又は別の1つ又はそれよりも多くのプロセッサから格納したビットを含むソースから選択することができる。得られた関数ビット出力は、エミュレートした設計の論理ゲート出力、エミュレートした設計のレジスタ出力、合成した中間論理状態、又はエミュレーション処理に向けて生成した制御ビットのうちの1つに対応することができる。本発明の一実施形態においては、プロセッサ(プロセッサ3101として図3に示す)のうちの1つは、同期プロセッサとして機能する。同期プロセッサ3101は、同期したプロセッサ群202を同期させるために入力2061及び出力2081を通じてシンクロナイザ201に連結されている。
命令メモリ304は、命令語の読取アドレスによって選択可能である個々の命令スロット306から成る。各命令スロット306は、0から、命令メモリ304の機能を反映する最大数まで連続して付番される。各命令スロット306は、プロセッサ310によって評価される命令語を含む。
命令語は、評価すべきサブモデル(条件付き又は無条件)のサブモデル識別子を含むフィールドを含む。フィールドは、サブモデル照合ブロック314によってサブモデルレジスタ316内の別のサブモデル識別子に適合される。2つのサブモデル識別子が適合した場合、評価した命令語の出力は、メモリ312に格納される。サブモデル識別子が適合しなかった場合、評価した命令語の出力は、メモリ312には格納されない。
シーケンサ302は、命令点レジスタとして機能し、命令メモリ304に読取アドレスを供給することにより、どの命令スロット306がプロセッサ310によってアクセスされるかを制御する。条件付き分岐以外の命令がプロセッサ310によって実行された時、命令点レジスタ302は、前値+1に等しい値を仮定する。条件付き分岐がプロセッサ310によって実行された時、シーケンサ302は、新しい値を仮定する、すなわち、シーケンサ302は、条件付き分岐の評価を開始するために、順序的には必ずしも次の命令スロット306でない命令スロット306を示している。シーケンサ302は、各データメモリ312及びサブモデルレジスタ316にも連結されている。シーケンサ302は、各データメモリ312の書込アドレス、及びサブモデルレジスタ316の読取アドレスを供給する。
データメモリ312は、一般的に、それぞれのプロセッサ310によって生成された出力を格納する。データメモリ312は、選択的書込メモリであり、すなわち、プロセッサ310からメモリ312に書き込む機能は、有効化又は無効化することができる。
サブモデル照合ブロック314は、関連したメモリ312の選択的書込機能を制御する。サブモデル照合ブロック314は、関連したメモリ312に連結され、関連した命令メモリ304に連結され、また、共通サブモデルレジスタ316に連結されている。サブモデル照合ブロック314は、命令語で説明したサブモデルをサブモデルレジスタ316内で説明したサブモデルに適合させる。2つのサブモデルの比較に基づいて、サブモデル照合ブロック314は、メモリ312の選択的書込機能を制御することができる。サブモデルが適合した場合、サブモデル照合ブロック314は、プロセッサに310が、評価済みのサブモデルの出力をメモリ312に書き込むことを可能にする。サブモデルが適合しなかった場合、サブモデル識別子314は、プロセッサ310が、評価済みのサブモデルの出力をメモリ312に書き込むことを可能にはしない。
サブモデルレジスタ316は、サブモデル識別子を格納する。サブモデルレジスタ316は、サブモデル識別子をシーケンサ302の制御下でサブモデル照合ブロック314に供給する。サブモデル識別子は、命令語308で存在するサブモデルを特定するために、サブモデル照合ブロック314によって使用される。
シンクロナイザ201(図2に示す)は、各同期したプロセッサ群(SPG)202を同期させる。プロセッサ310の1つは、SPG202を「待ち」状態にする特別な同期信号をSPG202に供給する。SPG202は、次に、「待機」信号を同期ブロック201に送る。シンクロナイザ201が同期したプロセッサ群202の全てから待機信号を受信すると、シンクロナイザ201は、SPG202に一斉にデータを評価するように指令する。同期が実行される方法は、図4において以下で詳細に説明する。
図4は、プロセッサ202の群を同期させるためにシンクロナイザ201を利用することができる方法400の流れ図である。方法400を用いると、特定のモデル、すなわち、無条件サブモデル又は条件付きサブモデルの評価中にプロセッサ202の群を同期させることができる。プロセッサ202の同期した群は特定のサブモデルを評価するが、非同期プロセッサ310、すなわち、サブモデルを評価するように割り当てられなかったプロセッサの群は、待ち状態になる。これらの群は、本質的に、サブモデルを評価し終わったプロセッサ202の同期した群と同じ状態になる。非同期したプロセッサは、シーケンサ302が次の命令へ進むことを可能にする前に、プロセッサ202の同期した群がサブモデルの評価を完了したことを示すシンクロナイザ201からの信号を待つ。
方法400は、ブロック402から始まってブロック図404に進む。ブロック404で、同期命令は、プロセッサ202の群の各々によって受信される。各群202内のプロセッサ310のうちの1つは、同期処理を制御するのに使用する特別なプロセッサである。これらの特別なプロセッサ310は、関連した命令メモリ304から同期命令を受信する。各群202内の1つのプロセッサ310(図3ではプロセッサ3101として示す)は、この同期機能に対しては物理的に全ての他のプロセッサ310に同一であるが、群202の同期を制御するように選択される。
ブロック406で、同期プロセッサ310は、関連した群202を待ち状態にする。待ち状態中、プロセッサ310は、いかなる付加的な命令を実行することもできず、シーケンサ302の値は、不変のままである。ブロック408で、各群202内の同期プロセッサ310は、群202が同期したサブモデルを実行する準備ができていることを示す「待機」信号をシンクロナイザ201に送る。
シンクロナイザ201は、SPG202における特別なプロセッサ310によってアドレス指定される。モデルダウンロードの一部として、ワークステーション105は、この特定のモデルの適正な実行に必要とされる同期した群202をシンクロナイザ201に知らせる。シンクロナイザ201は、各所要群202が「待機」信号を送信するまで待つ。方法400は、全ての「待機」信号がシンクロナイザ201によって受信されるまで、次の段階まで進まない。ブロック410で、シンクロナイザ201は、群202の各々から「待機」信号の全てを受信した後に全体的同期信号を生成する。同期信号は、シンクロナイザ201からシーケンサ302に供給される。ブロック412で、シンクロナイザ201から命令点レジスタ302に供給された同期信号により、命令メモリ304は、プロセッサ202の同期した群によって評価されるサブモデルの開始である命令スロット306にジャンプする。
ブロック414で、プロセッサ202の同期した群は、一斉に無条件のサブモデルを評価する。プロセッサ202の同期した群は、群202の1つが条件付きサブモデル命令に遭遇するまで一斉に無条件サブモデルを評価し続ける。方法400は、ブロック416で終了する。
図5及び6は、併せて、同期したプロセッサ群を使用してサブモデル評価を実行する命令を生成するのに使用するコンパイラ114の演算及び機能を示している。コンパイラ114は、VERILOG又はVHDLのようなプログラミング言語で書かれたハードウエア記述をエミュレーションシステム100が評価することができる命令のシーケンスに変換する処理500を利用する。
図6は、コンパイラ114の機能ブロック図である。コンパイラ114は、ハードウエア記述言語(HDL)合成ブロック504、インストルメンタ614、マッパー616、分割器618、及びスケジューラー620を含む。HDL合成ブロック504は、HDL命令を条件付きサブモデル607、条件付きサブモデル信号6061/608/6101/612、無条件サブモデル609、及び無条件サブモデル信号6062及び6102に変換して、設計データベース602を形成する。インストルメンタ614、マッパー616、分割器618、及びスケジューラー620は、更に、以下で説明するように設計データベース602を処理する。
条件付きサブモデル607は、入力信号6061及び起動信号608を受信する。条件付きサブモデルは、出力信号6101及び完了信号612を生成する。起動信号608は、条件付きサブモデル607の評価を開始するようにプロセッサ310に合図するものである。プロセッサ310は、入力信号6061を評価し、応答して出力信号6101を生成する。入力信号6061は、命令メモリ304によって供給された1つ又はそれよりも多くの命令語によってオペランドとして選択することができ、すなわち、入力信号6061は、1つ又はいくつかの信号とすることができる。また、出力信号6101は、1つ又はそれよりも多くの信号とすることができる。完了信号612は、条件付きサブモデル607が完全に評価されたことを示している。完了信号612を受信すると、プロセッサ202の同期した群は、無条件サブモデル609の評価を再開する。
無条件サブモデル609は、条件付きサブモデル607によって中断されるまで連続的に実行される。無条件サブモデル609には、起動信号又は完了信号は不要であり、その理由は、連続的に実行されるからである。無条件サブモデル609は、入力信号6061を受信して、出力信号6102を生成する。入力信号6062は、命令メモリ304によって供給された1つ又はそれよりも多くの命令語によってオペランドとして選択することができ、すなわち、入力信号6062は、1つ又はいくつかの信号とすることができる。また、出力信号6102は、1つ又はそれよりも多くの信号とすることができる。
図5は、本発明の一実施形態に従ってコンパイラ(図1では114として示す)によって利用される処理500の流れ図を示している。図6は、コンパイラ114のブロック図である。コンパイラ114は、命令メモリ304に格納してプロセッサ310が評価することができる命令に検証中の設計を変換する。
処理500は、ブロック502で開始して、ブロック504に進む。ブロック504で、コンパイラ114は、高精細度言語(HDL)、すなわち、VERILOG又はVHDで書かれたハードウエア設計をプロセッサ310が評価することができる1組の簡単な命令に変換する。ブロック506で、コンパイラ114は、同期して評価されることから恩典を受けることができる命令内に存在する条件付きサブモデルを特定する。
コンパイラ114は、その組の命令を検査し、プロセッサ202の同期した群によって評価されることから恩典を受けることができる条件付きサブモデル607を特定する。コンパイラ114は、大部分の条件付きサブモデル607を無条件サブモデル609に変換することができる。しかし、潜在的に長い条件付きサブモデル607、例えば、以下のような指令:
if(...)
while(...)
又は、
if(...)
for(...)
を含む条件付きサブモデルの方が、プロセッサ202の同期した群によって良好に評価される。
コンパイラ114は、ある一定の条件付きサブモデル607が本質的に長く、HDL分析を実行しなくてもプロセッサ202の同期した群によって評価されることから恩典を受けることができることも理解している。例えば、連想メモリ(CAM)又はマルチポートランダムアクセスメモリ(RAM))のような一部のメモリモデルには、クロック前進がなくても瞬間的に実行される多くのアクセスが必要である。一部の複雑な検証断定には、HDL合成よりも一層高いレベルの説明に基づいてコンパイラ114が発生させるべきである長い一連の計算が必要である。キャッシュに入れられたメモリも、本発明から恩典を受けることができる。キャッシュが欠けている場合、キャッシュライン更新の長い演算がそれに続くべきである。キャッシュを更新する演算の持続時間は長いが、キャッシュを実際に更新する必要がある確率は、かなり低いものである。完了するのに長い時間を消費するが、長い演算の発生をトリガする条件の確率が低いいかなる条件付き演算も、本発明から恩典を受けることができる。
簡潔さを期すために、1つの条件付きサブモデル607だけを図6に示している。条件付きサブモデルは、条件付きで実行されるだけである命令の組であり、すなわち、サブモデルは、ある一定の条件が発生した場合に限り実行される。ブロック508で、コンパイラ114は、各特定された条件付きサブモデル及びサブモデル信号(図6に示す)に対してサブモデル本体(607として図6に示す)を特定する。サブモデルは、状態をバイナリ状態要素、すなわち、ラッチ又はフリップフロップの組合せとして符号化した有限状態機械(FSM)によって表すことができる。サブモデルは、ゲートレベルのネットリスト又は状態遷移表によっても表すことができる。サブモデル信号としては、サブモデル入力信号、出力信号、起動信号、及び完了信号がある(それぞれ、6061/6101/608/612として図6に示す)。これらの信号を生成する表現は、サブモデル本体に組み込まれる。
ブロック510で、コンパイラ114は、無条件サブモデル(609として図6に示す)を特定する。メインモデルとしても公知である無条件サブモデル609は、条件付きサブモデルの全てが特定された後に排他演算によって特定される。無条件サブモデル609には、起動信号又は完了信号は必要ではない。無条件サブモデル609は、条件付きサブモデル607によって中断されるか、又は無条件サブモデル609の評価は完了であるまでSPG202によって連続的に実行される。
無条件サブモデル609の出力信号6102は、条件付きサブモデル607の入力信号6061及び起動信号608を供給する。条件付きサブモデル607の出力信号6101は、無条件サブモデル609の入力信号6062を供給する。完了信号612は、条件付きサブモデル607によってシンクロナイザ201に供給される(図2に示す)。
設計データベース602は、インストルメンタ614、マッパー616、分割器618、及びスケジューラー620によって順番に処理される。ブロック512で、インストルメンタ614は、論理を条件付きサブモデル607及び無条件サブモデル609に挿入する。論理は、信号の状態に可視性を供給する回路(プローブ回路)及びある一定の条件になるとモデルの演算を停止する回路(切断点回路)を含む。
ブロック514で、マッパー616は、条件付きサブモデル607及び無条件サブモデル609によって使用される表現及び記憶要素を実装する。表現及び記憶要素は、プロセッサ310によって評価することができる形式でなければならない。例えば、プロセッサ310が一度に4つの入力値しか評価することができない場合、4つを超える入力値を使用するあらゆる表現は、マッパー616により、いくつかの命令のシーケンス、すなわち、4つ又はそれ未満の入力値のいくつかシーケンスに分解すべきである。
ブロック516で、分割器618は、HDL合成ブロック504によって特定された各条件付きサブモデル607を考察し、各サブモデル607を同期したプロセッサ202の1つ又はそれよりも多くの群に割り当てる。分割器618は、各条件付きサブモデル607を処理するのに必要とされる同期したプロセッサ群202の最小数を判断する。本発明の一実施形態においては、高々1つの条件付きサブモデル607を各同期したプロセッサ群202に割り当てる。本発明の別の実施形態では、複数の条件付きサブモデル607を各同期したプロセッサ群202に割り当てることができる。
分割器618も、1つ又はそれよりも多くの同期したプロセッサ群202に無条件サブモデル609を割り当てる。分割器618は、条件付きサブモデル607を評価するように割り当てられなかった同期したプロセッサ群202に無条件サブモデル609を割り当てることができ、又は条件付きサブモデル607を評価するためにも割り当てられた同期したプロセッサ群202内の未使用エミュレーションリソースに無条件サブモデル609を割り当てることができる。
ブロック518で、スケジューラー620は、演算を実行するオペランド及びリソースの利用可能度に基づいて、各プロセッサ310によって実行される演算のシーケンスを判断する。スケジューラー620は、同期したプロセッサ202の2つの群が同じ条件付きサブモデル608又は無条件サブモデル609を実行した時に両方の群間で信号値を伝達できるだけであるという事実に対処する。本発明の一実施形態においては、スケジューラー620は、信号を条件付きサブモデル607と無条件サブモデル609の間で伝達することも可能にする。また、スケジューラー620は、2つの異なる条件付きサブモデル607間での信号の伝達を容易にする。スケジューラー620は、第1の条件付きサブモデル607から無条件サブモデル609に信号を供給することによって伝達を容易にし、無条件サブモデル609は、次に、信号を第2の条件付きサブモデル607に供給する。
スケジューラー620が第1の条件付きサブモデル607から無条件サブモデル609に信号を供給することによって伝達を容易にする機構を以下のように説明する。スケジューラー620は、条件付きサブモデル607を評価するために割り当てられた同期したプロセッサ群202内に信号のコピーを作成する。信号は、次に、無条件サブモデル609の実行中に、最初の位置から目標の同期したプロセッサ群202内の位置にコピーされる。同様に、条件付きサブモデル607の出力は、無条件サブモデル609の実行中にのみ、その仕向地に伝達される。
また、スケジューラー620は、1つのサブモデル(条件付き又は無条件)だけがいつでも同期したプロセッサ群202によって実行されるように、異なるサブモデルIDを各条件付きサブモデル607及び無条件サブモデル609に割り当てる。
また、スケジューラー620は、1つよりも多い同期したプロセッサ群202に割り当てられる条件付きサブモデル607の実行を調整することを担当する。スケジューラー620は、条件付きサブモデル607内での完全な同期が維持されるように、条件付きサブモデル607のあらゆる分岐命令、すなわち、条件付きサブモデルを特定のメモリ位置から読み込ませるジャンプ命令が、同じ方法で各同期したプロセッサ群202の命令メモリ位置に設けられ、すなわち、命令スロット306内に配置されることを確実にすべきである。
スケジューラー620は、真である完了信号602と同等の論理的条件で実行される各同期したプロセッサ群202に同期したジャンプ命令を供給する。このような同期したジャンプ命令は、条件付きサブモデル607が評価され、同時に同期したプロセッサ群202を待ち状態にすることをシンクロナイザ201に示すものである。同期ブロック201から全体的同期信号を受信すると、これらの命令は、無条件サブモデル609の先頭アドレスに対応する新しい値をシーケンサ302内に供給する。無条件サブモデル609は、次に、同期したプロセッサ群202によって一斉に実行される。本方法は、ブロック520で終了する。
図7は、本発明の一実施形態による条件付きサブモデル607及び無条件サブモデル609の実行を説明する方法700の流れ図である。同時に方法700を使用してパラレルにいくつかの異なる条件付きサブモデル607を評価することができる。
処理700は、ブロック702で開始してブロック708に進む。方法700は、コンパイラ114がHDL合成ブロック504(図5に示す)によって形成された演算の無条件シーケンスの各々を組み合わせて1つの無条件サブモデル609にしたと仮定する。無条件サブモデル609は、静的に決定可能な数の無条件命令段階で実行される。無条件サブモデル609を実行するのに必要な命令段階数により、1つのエミュレーションサイクルの長さが決まる。
ブロック708で、無条件サブモデル609を評価する。ブロック710で、無条件サブモデル609のサブモデル識別子は、無条件サブモデル609を評価するためのプロセッサ202の同期した群毎にシーケンサ302によってサブモデルレジスタ316に書き込まれる。
判断ブロック712で、サブモデル識別子をサブモデルレジスタ316がサブモデル照合ブロック314に供給する。無条件サブモデル609のサブモデル識別子に適合するフィールドを有する命令語だけが処理される。上述のように、サブモデル照合ブロック314は、メモリ312に書き込むプロセッサ310の機能を制御する。命令語が、評価中のサブモデルに適合するサブモデル識別子を有するフィールドを含まなかった場合、方法700は、ブロック716に進み、処理済み出力は、メモリ312には格納されない。命令語が、評価中のサブモデルに適合するサブモデル識別子を有するフィールドを確かに含んでいた場合、方法700は、ブロック714に進み、処理済み出力は、メモリ312に格納される。従って、無条件サブモデル609のみがメモリ312に影響を与える。
判断ブロック717で、無条件サブモデル609内の命令の全てが評価されたか否かに関して判断を行う。命令の全てが評価されていた場合、方法700は、ブロック740に進み、方法700は、終了する。命令の全てが評価されてはいなかった場合、本方法は、判断ブロック718に進む。
判断ブロック718で、エミュレーションシステム100は、条件付きサブモデル607を実行するか、又は無条件サブモデル609を実行し続けるかを判断する必要がある。エミュレーションサイクル、すなわち、無条件サブモデル609を評価するのに必要な段階数の終わりで、エミュレーションシステム100は、条件付きサブモデル607が実行すべきか否かを判断する。その判断は、サブモデル起動信号608の条件が真であるかを検査することによって行う。条件が真である場合、方法700は、ブロック720に進んで、条件付きサブモデル607の実行を開始する。条件が偽であった場合、方法700は、ブロック708へ戻って無条件サブモデル609を実行する。
ブロック720で、条件サブモデル607を実行する。ブロック722で、条件サブモデル607を評価するためのプロセッサ202の各同期した群のサブモデルレジスタ316に条件サブモデル607のサブモデル識別子を書き込む。
判断ブロック724で、サブモデル識別子をサブモデルレジスタ316がサブモデル照合ブロック314に供給する。無条件サブモデル609のサブモデル識別子に適合するフィールドを有する命令語だけが処理されることになる。サブモデル照合ブロック314は、メモリ312に書き込むプロセッサ310の機能を制御する。命令語が、評価中のサブモデルに適合するサブモデル識別子を有するフィールドを含まなかった場合、方法700は、ブロック726に進み、処理済み出力は、メモリ312には格納されない。命令語が、評価中のサブモデルに適合するサブモデル識別子を有するフィールドを確かに含んでいた場合、方法700は、ブロック728に進み、処理済み出力は、メモリ312に格納される。従って、条件サブモデル607のみがメモリ312に影響を与える。
判断ブロック730で、エミュレーションシステム100は、条件付きサブモデル607が完全に評価されたか否かを判断する。条件付きサブモデルは、拡張エミュレーションサイクルを有し、すなわち、条件付きサブモデル607を評価するには、無条件サブモデルよりも多いエミュレーション段階数を必要とする。判断がノーであった場合、方法700は、ブロック712へ戻り、条件サブモデルは、依然として評価される。判断がイエスである場合、本方法は、ブロック732に進み、完了信号が生成される。ブロック734で、完了信号612により、上述の同期したジャンプ命令がプロセッサ202の同期した群によって実行される。
ブロック736で、同期したジャンプ命令を実行する同期したプロセッサ群202は、「待ち状態」になる。判断ブロック738で、同期したプロセッサ群202は、他の同期したプロセッサ群202の全てが無条件サブモデル609の実行を開始するために利用可能であるか否かを判断する。判断がノーであった場合、方法700は、ブロック738に戻る。判断がイエスであった場合、方法700は、ブロック708へ戻る。ブロック708で、シンクロナイザ201は、無条件サブモデル609を実行するように同期したプロセッサ群202に合図する。
すなわち、本発明は、無条件サブモデル及び1つ又はそれよりも多くの条件付きサブモデルを効率的に評価する方法及び装置を提供する。装置は、評価中のサブモデルだけが処理され、出力が選択的書込メモリを利用してメモリに書き込まれることを保証する。コンパイラは、命令のシーケンスを無条件及び条件付きサブモデルに分離し、これらのサブモデルをプロセッサの同期した群に割り当てる。サブモデルの評価は、プロセッサの同期した群が一度に1つの特定のサブモデルだけを評価するので非常に効率的である。
上記は本発明の実施形態に関連するが、本発明の他の及び更に別の実施形態をその基本的な範囲から逸脱することなく考案することができ、その範囲は、以下の特許請求の範囲によって判断される。
100 エミュレーションシステム
105 コンピュータワークステーション
120 エミュレーションボード
130 ターゲットシステム

Claims (21)

  1. 同期したプロセッサを使用してハードウエアエミュレーションを実施するための装置であって、
    ハードウエア設計に関するデータを評価するためのプロセッサ群を形成する複数のプロセッサと、
    条件付きサブモデル及び無条件のサブモデルを効率的にエミュレートするために前記ハードウエア設計の少なくとも一部分をエミュレートしている間に前記プロセッサ群の演算を同期化するためのシンクロナイザと、
    を含むことを特徴とする装置。
  2. 待ち状態で演算する第2の複数のプロセッサを更に含むことを特徴とする請求項1に記載の装置。
  3. 前記プロセッサ群は、複数の命令メモリに連結された命令点レジスタを含み、
    前記複数の命令メモリにおける各命令メモリは、前記複数のプロセッサにおけるプロセッサに連結されている、
    ことを特徴とする請求項1に記載の装置。
  4. 前記複数のプロセッサにおける各プロセッサは、データメモリに連結されていることを特徴とする請求項3に記載の装置。
  5. 複数のサブモデル照合ブロックを更に含み、該複数のサブモデル照合ブロックにおける各サブモデル照合ブロックが、前記複数の命令メモリにおける命令メモリに連結され、かつ前記データメモリにも連結されていることを特徴とする請求項4に記載の装置。
  6. 前記複数のサブモデル照合ブロックにおける各サブモデル照合ブロックは、サブモデルレジスタに連結されていることを特徴とする請求項5に記載の装置。
  7. 複数のプロセッサ群と、
    前記プロセッサ群の各々のためのシンクロナイザと、
    を更に含むことを特徴とする請求項1に記載の装置。
  8. 各プロセッサ群が、異なるサブモデルを評価することを特徴とする請求項7に記載の装置。
  9. 同期したプロセッサを使用してハードウエアエミュレーションを実施する方法であって、
    ハードウエア設計に関するデータを評価するためのプロセッサ群を形成する複数のプロセッサに同期信号を供給する段階と、
    前記プロセッサ群から待機信号を受信する段階と、
    前記プロセッサ群に、該プロセッサ群にサブモデルを評価させる実行信号を供給する段階と、
    を含むことを特徴とする方法。
  10. 第2の複数のプロセッサに該第2の複数のプロセッサを待ち状態に入れる待ち命令を供給する段階を更に含むことを特徴とする請求項9に記載の方法。
  11. 前記プロセッサ群が前記サブモデルの評価を完了すると、前記第2の複数のプロセッサを前記待ち状態から解放する段階、
    を更に含むことを特徴とする請求項10に記載の方法。
  12. 前記同期信号は、前記プロセッサ群内の命令点レジスタに供給されることを特徴とする請求項9に記載の方法。
  13. 各プロセッサ群を待ち状態に入れる段階を更に含むことを特徴とする請求項12に記載の方法。
  14. 前記待機信号は、前記複数のプロセッサ群における各プロセッサ群内のプロセッサから同期ブロックに供給されることを特徴とする請求項13に記載の方法。
  15. サブモデルレジスタからサブモデル照合ブロックにサブモデル識別子を供給する段階と、
    前記サブモデル識別子を命令語内のフィールドと比較する段階と、
    前記サブモデル識別子と前記命令語内の前記フィールドの間の前記比較に基づいて選択的書込信号を生成する段階と、
    を更に含むことを特徴とする請求項14に記載の方法。
  16. 前記選択的書込信号をメモリに供給する段階と、
    前記サブモデルをプロセッサで評価して出力を生成する段階と、
    前記出力を前記メモリに供給する段階と、
    を更に含むことを特徴とする請求項15に記載の方法。
  17. 前記選択的書込信号は、書込許可信号であり、前記出力は、前記メモリに格納されることを特徴とする請求項16に記載の方法。
  18. 前記選択的書込信号は、書込禁止信号であり、前記出力は、前記メモリに格納されず、該メモリは、不変のままであることを特徴とする請求項16に記載の方法。
  19. 前記プロセッサ群は、複数のプロセッサ群の1つであり、該複数のプロセッサ群における各プロセッサ群が、異なるサブモデルを評価することを特徴とする請求項9に記載の方法。
  20. ハードウエア設計をコンパイルする方法であって、
    少なくとも1つの高レベル構成概念を演算のシーケンスに変換する段階と、
    少なくとも1つの条件付きサブモデルを構成する演算の別のシーケンスを特定する段階と、
    を含むことを特徴とする方法。
  21. 前記特定する段階は、
    前記少なくとも1つの条件付きサブモデルへの少なくとも1つの入力信号を特定する段階と、
    前記少なくとも1つの条件付きサブモデルからの少なくとも1つの出力信号を特定する段階と、
    前記少なくとも1つの条件付きサブモデルへの少なくとも1つの起動信号を特定する段階と、
    前記少なくとも1つの条件付きサブモデルからの少なくとも1つの完了信号を特定する段階と、
    を更に含む、
    ことを特徴とする請求項20に記載の方法。
JP2009513276A 2006-05-31 2007-05-30 ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置 Expired - Fee Related JP5146451B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/444,032 2006-05-31
US11/444,032 US8027828B2 (en) 2006-05-31 2006-05-31 Method and apparatus for synchronizing processors in a hardware emulation system
PCT/US2007/012846 WO2007143036A1 (en) 2006-05-31 2007-05-30 Method and apparatus for synchronizing processors in a hardware emulation system

Publications (2)

Publication Number Publication Date
JP2009539186A true JP2009539186A (ja) 2009-11-12
JP5146451B2 JP5146451B2 (ja) 2013-02-20

Family

ID=38791397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009513276A Expired - Fee Related JP5146451B2 (ja) 2006-05-31 2007-05-30 ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置

Country Status (4)

Country Link
US (1) US8027828B2 (ja)
EP (1) EP2033091A4 (ja)
JP (1) JP5146451B2 (ja)
WO (1) WO2007143036A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8359186B2 (en) * 2006-01-26 2013-01-22 Subbu Ganesan Method for delay immune and accelerated evaluation of digital circuits by compiling asynchronous completion handshaking means
US8788714B2 (en) * 2010-01-29 2014-07-22 Honeywell International Inc. Method for synchronizing execution of multiple processing devices and related system
US8959010B1 (en) 2011-12-08 2015-02-17 Cadence Design Systems, Inc. Emulation system with improved reliability of interconnect and a method for programming such interconnect
US8743735B1 (en) 2012-01-18 2014-06-03 Cadence Design Systems, Inc. Emulation system for verifying a network device
US9367656B1 (en) * 2012-12-17 2016-06-14 Cadence Design Systems, Inc. Method and apparatus for synchronizing circuits in an emulation system utilizing its serial interconnect network
US10133836B1 (en) 2016-09-21 2018-11-20 Cadence Design Systems, Inc. Systems and methods for on-the-fly temperature and leakage power estimation in electronic circuit designs
US10502819B2 (en) * 2017-12-21 2019-12-10 GM Global Technology Operations LLC Systems and methods for aligning an inertial measurement unit in a vehicle

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07334384A (ja) * 1994-06-03 1995-12-22 Internatl Business Mach Corp <Ibm> 多重プロセッサ・エミュレーション・システム
JP2000035899A (ja) * 1998-03-31 2000-02-02 Internatl Business Mach Corp <Ibm> エミュレ―ション・モジュ―ル
JP2001084158A (ja) * 1999-09-13 2001-03-30 Hitachi Ltd マイクロプロセッサ及びエミュレーションシステム
JP2001249824A (ja) * 2000-03-02 2001-09-14 Hitachi Ltd 論理エミュレーションプロセッサおよびそのモジュールユニット
US20030105620A1 (en) * 2001-01-29 2003-06-05 Matt Bowen System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architetures
US20040019827A1 (en) * 2002-07-24 2004-01-29 Infineon Technologies Ag Emulation interface system
US6832185B1 (en) * 2000-03-09 2004-12-14 Quickturn Design Systems, Inc. Non-synchronous hardware emulator
US6901359B1 (en) * 2000-09-06 2005-05-31 Quickturn Design Systems, Inc. High speed software driven emulator comprised of a plurality of emulation processors with a method to allow high speed bulk read/write operation synchronous DRAM while refreshing the memory
US20050198606A1 (en) * 2003-12-29 2005-09-08 Sanjay Gupta Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform
US20050267730A1 (en) * 2004-05-28 2005-12-01 Alon Kfir Dynamic programming of trigger conditions in hardware emulation systems

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US7260794B2 (en) * 2002-12-20 2007-08-21 Quickturn Design Systems, Inc. Logic multiprocessor for FPGA implementation

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07334384A (ja) * 1994-06-03 1995-12-22 Internatl Business Mach Corp <Ibm> 多重プロセッサ・エミュレーション・システム
JP2000035899A (ja) * 1998-03-31 2000-02-02 Internatl Business Mach Corp <Ibm> エミュレ―ション・モジュ―ル
JP2001084158A (ja) * 1999-09-13 2001-03-30 Hitachi Ltd マイクロプロセッサ及びエミュレーションシステム
JP2001249824A (ja) * 2000-03-02 2001-09-14 Hitachi Ltd 論理エミュレーションプロセッサおよびそのモジュールユニット
US6832185B1 (en) * 2000-03-09 2004-12-14 Quickturn Design Systems, Inc. Non-synchronous hardware emulator
US6901359B1 (en) * 2000-09-06 2005-05-31 Quickturn Design Systems, Inc. High speed software driven emulator comprised of a plurality of emulation processors with a method to allow high speed bulk read/write operation synchronous DRAM while refreshing the memory
US20030105620A1 (en) * 2001-01-29 2003-06-05 Matt Bowen System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architetures
US20040019827A1 (en) * 2002-07-24 2004-01-29 Infineon Technologies Ag Emulation interface system
US20050198606A1 (en) * 2003-12-29 2005-09-08 Sanjay Gupta Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform
US20050267730A1 (en) * 2004-05-28 2005-12-01 Alon Kfir Dynamic programming of trigger conditions in hardware emulation systems

Also Published As

Publication number Publication date
JP5146451B2 (ja) 2013-02-20
US20070282589A1 (en) 2007-12-06
US8027828B2 (en) 2011-09-27
EP2033091A1 (en) 2009-03-11
EP2033091A4 (en) 2010-08-04
WO2007143036A1 (en) 2007-12-13

Similar Documents

Publication Publication Date Title
EP1766544B1 (en) Execution of hardware description language (hdl) programs
Salefski et al. Re-configurable computing in wireless
US8527972B2 (en) Method for forming a parallel processing system
US5594741A (en) Method for control of random test vector generation
JP5146451B2 (ja) ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置
US20030033588A1 (en) System, method and article of manufacture for using a library map to create and maintain IP cores effectively
US20030046671A1 (en) System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures
US20100100704A1 (en) Integrated circuit incorporating an array of interconnected processors executing a cycle-based program
US20210232394A1 (en) Data flow processing method and related device
US7054802B2 (en) Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading
US7096322B1 (en) Instruction processor write buffer emulation using embedded emulation control instructions
US20220091907A1 (en) Processor based logic simulation acceleration and emulation system
US7437282B2 (en) Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator
EP1845462B1 (en) Hardware emulations system for integrated circuits having a heterogeneous cluster of processors
KR20140068863A (ko) 스케일링가능한 병렬 프로세서를 위한 시스템, 방법 및 장치
US7606698B1 (en) Method and apparatus for sharing data between discrete clusters of processors
JPH04233040A (ja) コンピュータプログラム実行シミュレーションシステム
US9898563B2 (en) Modeling memory in emulation based on cache
CN116802605A (zh) 用于根据触发条件执行指令的电路和方法
US10990394B2 (en) Systems and methods for mixed instruction multiple data (xIMD) computing
US20120296623A1 (en) Machine transport and execution of logic simulation
US7809861B1 (en) System memory map decoder logic
Rohde et al. Improving HLS generated accelerators through relaxed memory access scheduling
Appleton et al. Two-phase asynchronous pipeline control
Isshiki et al. Multiprocessor SoC design framework on Tightly-Coupled Thread model

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120705

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121005

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121112

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151207

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees