JP6600011B2 - エミュレーションのための効率的波形生成 - Google Patents

エミュレーションのための効率的波形生成 Download PDF

Info

Publication number
JP6600011B2
JP6600011B2 JP2017555800A JP2017555800A JP6600011B2 JP 6600011 B2 JP6600011 B2 JP 6600011B2 JP 2017555800 A JP2017555800 A JP 2017555800A JP 2017555800 A JP2017555800 A JP 2017555800A JP 6600011 B2 JP6600011 B2 JP 6600011B2
Authority
JP
Japan
Prior art keywords
signal
section
dut
emulator
host system
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.)
Active
Application number
JP2017555800A
Other languages
English (en)
Other versions
JP2018524652A (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.)
Synopsys Inc
Original Assignee
Synopsys 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
Priority claimed from US14/703,718 external-priority patent/US9286424B1/en
Application filed by Synopsys Inc filed Critical Synopsys Inc
Publication of JP2018524652A publication Critical patent/JP2018524652A/ja
Application granted granted Critical
Publication of JP6600011B2 publication Critical patent/JP6600011B2/ja
Active 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
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • 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/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • 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

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)
  • Software Systems (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Description

本開示は、回路のエミレーション全般に関し、特に、エミュレーション結果の取得に関する。
エミュレータは、回路設計者が高度に複雑な集積回路の設計及びデバグを行うのをアシストするために開発されてきた。エミュレータは、DUT(Design Under Test)の動作をともに模倣することのできる、FPGA(Field Programmable Gate Arrays)等、マルチプルに再構成可能な構成要素を含む。設計者は、DUTの動作を模倣するエミュレータを使用することにより、製造に先立って、DUTが種々の設計要件に対応していることを検証することができる。
エミュレーションの一態様は、DUTのエミュレーションを行うことと、エミュレータからエミュレーション結果を読み出すこととを含む。エミュレーション結果は、例えば、DUTのタイミング関係とデジタルロジック動作とを検証するために解析することができる。1つのアプローチによると、エミュレーション結果は、解析を実施するための他のシステムに転送される。例えば、エミュレーション結果の波形は、DUTのタイミング関係とデジタルロジック動作とをグラフィック表示するために、他のシステムで生成される。高度なプロセス(例えば、22nm以下)において、DUTは、数十億のロジック回路と信号を含むことがある。このような複雑なDUTのエミュレーションを行うことには、エミュレータから他のシステムに、マルチサイクルに対する数十億の信号の状態又は値を含む膨大な量のデータを転送することが含まれる。従って、従来のエミュレーション環境は、エミュレータシステムを減速させずにデータ転送を行うために採用されるハードウェアリソース及び通信リソースの点で不十分である。
開示の実施形態は、詳細な説明、添付のクレーム、添付の図(又は図面)からさらに容易に明らかとなる他の効果及び特徴を有する。図面の簡単な紹介については、以下の通りである。
一実施形態に係るエミュレーション環境のブロック図である。 一実施形態に係るDUTの一例としての回路を備えたエミュレーション環境の一例を示す図である。 一実施形態に係るホストシステムのブロック図である。 一実施形態に係るDUTのエミュレーションのために準備するホストシステムを示すフローチャートである。 一実施形態に係る、ホストシステム、及び、DUTの信号をトレースするエミュレータを構成するフローチャートである。 機械可読媒体から命令を読み出し、それらをプロセッサ(又はコントローラ)で実行することができる一例としての機械の構成要素の一実施形態を示す図である。
図面(図)及び以下の説明は、単なる例示としての好適な実施形態に関連する。以下の検討から、本明細書に開示の構造及び方法の代替実施形態が、クレームの原則から逸脱することなく採用されてもよい実行可能な代替として、容易に認識されるであろうことに留意しなければならない。
以下、添付の図面に例を示したいくつかの実施形態について、詳細に参照する。図面は、例示のみを目的として本開示のシステム(又は方法)の実施形態を示すものである。以下の説明より、本明細書に記載の原則から逸脱することなく、本明細書に示す構造及び方法の代替実施形態が採用されてもよいことを認識しなければならない。
図面では、同様の要素を特定するために同様の参照符号を使用している。「230A」等、参照符号に続く文字は、本文がその特定の参照符号を有する要素を具体的に参照していることを示している。「230」等、本文中、後続の文字を伴わない参照符号は、その参照符号を持つ図中の要素のいずれか又は全部を参照している。
概要
本開示のエミュレーション環境は、DUT(Design Under Test)の帯域幅及びリソース効率のよい解析を実施する。エミュレーション環境の一実施形態には、ホストシステムと、エミュレータとが含まれる。ホストシステムは、DUTのエミュレーションを行うようにエミュレータを構成し、エミュレータは、これに応じて、DUTのエミュレーションを行う。エミュレーション中、エミュレータは、DUTの限定的信号をトレースし、トレースされた信号の値(例えば、状態)を記憶する。一実施形態において、このトレース信号は、DUTのマルチサイクルを備える。DUTの特定の信号の値がDUTの解析又は検証に必要とされるものの、それらの信号がエミュレータによってトレースされなかった時、ホストシステムは、信号をトレースさせるDUTの1つ以上のセクションを決定し、未トレース信号(例えば、1つ以上のサイクルを備える)を生成するために、これらのセクションのシミュレーションを行う。エミュレータによってトレースされた(すなわち、エミュレーションされた)信号は、1つ以上のセクションのシミュレーションを行うのに使用される。従って、ホストシステムがDUTのセクションのシミュレーションを行えることにより、ホストシステムは、追加のDUT信号の値を取得することができ、エミュレータがトレースする信号数は、より少なくて済む。さらに、エミュレータによってトレースされる信号の数が、より少なくて済むため、エミュレータとホストシステムとの間で交換される信号の数が、より少なくて済み、これにより、通信帯域幅の削減を達成できる。さらに、このソリューションは、非常に拡張性がある。要求された信号がシミュレーション演算と均衡可能であるため、このソリューションは、DUTがより大きく複雑になっても影響を受けない。例えば、トレースされる信号は、より少なくでき、より多くの信号をシミュレーションによって演算することができる。
本明細書中のエミュレーションとは、構成可能なハードウェア構成要素により、電子設計の挙動を模倣することをいう。
本明細書中のシミュレーションとは、ソフトウェアモデルにより、電子設計の挙動を模倣することをいう。
本明細書中の信号とは、搬送、モニタリング、又はトレースされる値を有するデザインのネット、ワイヤ、変数、ポート、又は要素をいうが、これに限定されるものでない。
本明細書中の信号をトレースする/生成するということは、電子設計のエミュレーション又はシミュレーションに基づき、信号の値を取得することをいう。さらに、本明細書中、信号について言及する時、これは、電子設計中の信号又はその信号の値をいう。
エミュレーション環境
図1は、一実施形態に係るエミュレーション環境100を示すブロック図である。エミュレーション環境100は、エミュレータ110と、ホストシステム120とを含む。エミュレータ110及びホストシステム120は、インタフェース115を介して通信する。
インタフェース115は、ホストシステム120とエミュレータ110との間の通信を可能にする通信媒体である。一実施形態において、インタフェース115は、電気的接続を備えた1つ以上のケーブルである。例えば、インタフェース115は、1つ以上のRS232ケーブル、USBケーブル、LANケーブル、光学ケーブル、IEEE1394(FireWire)ケーブル、又は特注ケーブルである。他の実施形態において、インタフェース115は、無線通信媒体又は1つ以上のアクセスポイントを備えたネットワークである。他の例として、インタフェース115は、Bluetооth(登録商標)又はIEEE802.11プロトコルを採用した無線通信媒体であってもよい。一実施形態において、インタフェース115は、ホストシステム120及びエミュレータ110の動作中に有効化される。一実施形態において、インタフェース115は、ホストシステム120及びエミュレータ110が互いに情報交換を必要とする時に限り、有効化される。
エミュレータ110は、DUT(Design Under Test)のエミュレーションを行うハードウェアシステムである。DUTは、1つ以上の回路デザインを含む。エミュレーションされるDUTは、組み合わせ型、シーケンス型、又は双方の組み合わせのいずれかとすることができる。エミュレータ110は、DUTのエミュレーションを行うように構成可能なマルチプルFPGA(Field-Programmable gate arrays)220を含む。各FPGA220は、エミュレーション中にFPGA220によってトレースされる信号の値(例えば、エミュレーション中のDUT信号の状態)を記憶するトレースメモリ290(例えば、トレースバッファ)を含む。他の実施形態において、エミュレータ110は、FPGA220の代わりに構成可能な他の種類のロジック回路を含む。他の実施形態において、エミュレータ110は、FPGA220とは別に1つ以上のトレースメモリ290を含み、この場合、1つ以上のトレースメモリ290は、マルチプルFPGA220がデータを記憶するのに使用可能である。他の実施形態において、エミュレータ110は、最適なトレースシステムを達成するために、FPGA220、又はその他の構成可能な回路の混合構造と、構成要素内又はそれらから離隔して配置されたメモリの混合構造とを含む。他の実施形態において、エミュレータ110は、トレースに特化されたメモリを含まず、デザインのモデル化するのに、又はトレースされたデータをインタフェース115上で直接ストリーミングするのに使用可能なメモリを使用する。エミュレータ110は、エミュレーションが終了した後、又はエミュレーション中に、1つ以上のトレースメモリ290に記憶されているトレース信号の値を、ホストシステム120に送信してもよい。エミュレータ110は、ホストシステム120からのリクエストの受信に反応して、又は、ホストシステム120からリクエストの受信に先立って、1つ以上のトレースメモリに記憶されているトレース信号の値も送信してよい。エミュレータ110によってホストシステム120に送信されるトレース信号の値は、マルチプルDUTサイクルに及びうる。
エミュレーションされるべきDUTについて、エミュレータ110は、ホストシステム120からインタフェース115を介して、DUTの記述(例えば、DUTのゲートレベル又はHDL(Hardware Description Language)レベル記述のマッピング)を含む1つ以上のバイナリファイルを受信する。このバイナリファイルは、ホストシステム120によって生成されたDUTのパーティションとFPGA220に対応付けられる各パーティションのマッピングとを記述する。エミュレータ110は、バイナリファイルに基づき、FPGA220にマッピング(割り当て)されたDUTのパーティションをエミュレーションし、その各パーティションにおいて特定の信号をトレースするように、各FPGA220を構成する。複数のFPGA220は、共同でDUTのエミュレーションを行う。エミュレーション中にFPGA220によってトレースされた信号の値は、インタフェース115を介してホストシステム120に転送される前に、FPGA220によってFPGA220のトレースメモリ290に一時的に記憶される。これらの信号は、後述の通り、追加情報の生成及び/又はDUTのエミュレーション結果の処理のために使用される。
ホストシステム120は、DUT(Design Under Test)のエミュレーションを行うようにエミュレータ110を構成する。ホストシステム120は、単一のコンピュータであってもよく、マルチプルコンピュータの集合体であってもよい。ホストシステム120がマルチプルコンピュータからなる実施形態において、ホストシステム120によって実施されるものとして本明細書に記載の機能は、マルチプルコンピュータ間で分担されてもよい。ホストシステム120は、他のデバイス、他のコンピュータ、又は他のネットワークを介してエミュレータ110に間接的に接続されてもよい。
ホストシステム120は、ユーザから、エミュレータ110によってエミュレーションされるべきDUTの記述を受信する。一実施形態において、DUTの記述は、RTL(Resister Transfer Language)等、HDLの類いである。ホストシステム120は、DUTのHDL記述に基づき、ゲートレベルネットリストを生成する。ホストシステム120は、DUTをマルチプルパーティションに分けるのに、HDL又はゲートレベルネットリストを使用する。ホストシステム120は、エミュレータ110に含まれる1つ以上のFPGA220に各パーティションをマッピング(割り当て)する。複数のFPGA220は共に、DUTのエミュレーションを行い、DUTの特定の信号をトレースするであろう。
ホストシステム120は、FPGA220をDUT及びマッピングに基づいて構成するための情報を含むバイナリファイルを生成する。バイナリファイルには、例えば、1つ以上のパーティションのデザイン記述(例えば、ゲートレベル記述又はHDL記述)、マッピング情報(例えば、パーティションのマッピング)、接続情報(例えば、DUTの構成要素間の接続及び/又はFPGA間の接続)、及びDUTに対する設計上の制約が含まれてもよい。
また、ホストシステム120は、ホストシステム120によるシミュレーションのために利用可能なDUTのセクションを特定する。DUTのセクションは、パーティションの一部であってもよく、又はパーティション全体を包含してもよい。一実施形態において、セクションの集合は、DUT全体を包含する。或いは、セクションの集合は、DUTの一部分を包含してもよい。他の実施形態において、DUTのセクションは、シミュレーションのために利用可能なマルチプルパーティションの一部であってもよい。一実施形態において、セクションの少なくとも1つのエッジ(例えば、回路又は信号)は、パーティションのエッジ(例えば、回路又は信号)に対応する。他の実施形態において、セクションのどのエッジ(例えば、回路又は信号)も、パーティションのエッジ(例えば、回路又は信号)に対応しなくてもよい。
必要な時にホストシステム120がセクションのシミュレーションを行い、DUTのエミュレーション中、エミュレータ110によってトレースされないDUTセクションの特定の信号の値を取得することができるように、DUTのセクションは特定される。従って、DUTのセクションは、DUTのエミュレーション時にエミュレータ110によるエミュレーションが行われるが、ホストシステム120は、そのセクションのシミュレーションも行って、エミュレータ110によってトレースされなかった追加の信号を生成してもよい。一例として、DUTの解析を実施するために、特定の信号の値が望まれるものの、この信号は、DUTのエミュレーション中、エミュレータ110によってトレースされていないと仮定する。ホストシステム120は、この信号を含むDUTのセクションのシミュレーションを行い、この所望の信号の値を得る(すなわち、信号を生成する)ことができる。一実施形態において、ホストシステム120は、生成(すなわち、シミュレーション)の必要がある各追加の信号について、セクションの特定及びシミュレーションを行う。他の実施形態において、ホストシステム120は、エミュレータ110によってトレースされなかったDUT信号のサブセット又はDUT信号全部について、そのセクションの特定及びシミュレーションを行う。
ホストシステム120は、特定された各セクションの回路を記述する1つ以上のセクションファイルを生成する。一実施形態において、セクションファイルは、特定されたセクション毎に生成される。例えば、セクションファイルは、信号のサブセットからデザインの部分的挙動のシミュレーションを可能にするオリジナルHDL、オリジナルHDLから得られた修正HDL、ゲートレベルネットリストから推定されたHDL、ゲートレベルネットリスト、システムCモデル、C/C++モデル、バイナリ表現、又はデザインの任意の表現とすることができる。ホストシステム120は、ホストシステム120によるシミュレーション時に、DUTの特定されたセクション毎に生成された信号と、エミュレータ110によるエミュレーション時に、パーティション毎にトレースされた信号と、を記述する信号情報も生成する。セクションについては、信号情報は、いずれの信号(又は信号の値)がセクションのシミュレーションを行うために必要とされるかも記述する。必要とされる信号は、エミュレーション中に、エミュレータ110によってトレースされる信号であってもよい。一実施形態において、エミュレーション中、エミュレータ110によってトレースされる信号は、特定されたセクションの入力である。必要とされる信号は、1つ以上の他のセクションのシミュレーションから得られた信号であってもよい。ホストシステム120は、このセクション及びバイナリファイルとともに、生成された信号情報を記憶する。
各々にマッピングされた各パーティションのエミュレーションを行うようにFPGA220を、エミュレータ110が構成できるように、ホストシステム120は、バイナリファイルをエミュレータ110に送信する。ホストシステム120は、エミュレータ110にDUTのエミュレーションを行うように命令する。各FPGA220は、各々のパーティションのエミュレーションを行い、エミュレーション中にトレースした信号の値を各々のトレースメモリ290に記憶する。一実施形態において、トレースメモリ290の内容は、FPGA220がDUTのエミュレーション中でない時、エミュレータ110により、インタフェース115を介してホストシステム120に送信される。他の実施形態において、エミュレータ110は、FPGA220によるDUTのエミュレーション中に、インタフェース115を介してホストシステム120に、トレースメモリ290の内容を送信することにより、DUTのエミュレーションと並行して、インタフェース115上でトレースされた情報のストリームの生成及び送信を行う。
さらに、ホストシステム120は、DUTの解析又は検証を実施するために必要なDUTの信号の値を示す検証設定を受信する。検証設定は、例えば、DUTのデバグ又はテストのためにDUTの特定の信号をトレースすることを求めるユーザからのリクエストであってもよい。検証設定は、DUTの性能を解析するために使用される状態機械も含んでもよい。検証設定は、デザインエミュレーション結果を解析するシステムCモデル、C/C++モデル、プログラム、又はスクリプトを含んでもよい。
ホストシステム120は、受信した検証設定に基づき、DUTの解析を実施するために得られる必要があるDUTの信号の値を特定する。ホストシステム120は、記憶された信号情報に基づき、1つ以上の特定された信号の値をシミュレーション時に提供するDUTのセクションを特定する。さらに、ホストシステム120は、エミュレータのFPGA220によってトレースされた信号のうちのいずれが、特定されたセクションをシミュレーションするのに必要かを判定する。
ホストシステム120は、特定されたセクションのデザインを記述した記憶されている1つ以上のセクションファイルを読み出し、エミュレータ110から受信したトレース信号の値を使用して、特定されたセクションのシミュレーションを行う。特定されたセクションのシミュレーションにより、結果として、ホストシステム120がDUTの解析を実施するために必要な特定された信号(例えば、マルチサイクルを備える)を生成する。一実施形態において、ホストシステム120は、波形として表示される、一つ以上の特定された信号を含むユーザインタフェースを生成する。一実施形態において、特定されたセクションのシミュレーションを行うのに必要な特定の信号がエミュレータ110によってトレースされなかった場合、ホストシステム120は、1つ以上の他のセクションのシミュレーションを行い、それらの信号を生成する。
ホストシステム120においてDUTのセクションのシミュレーションを行うことにより、ホストシステム120は、これらの信号をトレースすべきエミュレータ110の代わりに、DUTの特定の信号を生成することができ、これによってエミュレータ110によってトレースされる信号の量を限定することができる。さらに、エミュレータ110によってトレースされる信号の数が、より少なくて済むため、ホストシステム120とエミュレータ110との間で交換される信号値の量を削減し、これにより、エミュレータ110とホストシステム120との間で同一量の広域情報を搬送するのに使用される帯域幅を削減できる。さらに、トレース又はホストシステム120に送信するために、デザイン内又は設計プロセス中に潜在的に加えられるロジックの量が削減される。
図2は、一実施形態に係るDUTの一例としての回路を備えるエミュレーション環境100の一例を示している。本例において、エミュレータ110は、2つのFPGA220A及び220Bを含む。FPGA220Aは、トレースメモリ290Aを含み、FPGA220Bは、トレースメモリ290Bを含む。FPGA220Aは、ホストシステム120から受信したバイナリファイルに基づき、セクション285A及び285Bを含むDUTパーティション270Aのエミュレーションを行うように構成される。さらに、FPGA220Bは、セクション285C及び285Dを含むDUTパーティション270Bのエミュレーションを行うように構成される。各FPGA220は、その各々のパーティション270のエミュレーションを行い、エミュレーション中にトレースされた信号の値がFPGA220により、トレースメモリ290に記憶される。本例において、FPGA220Aがパーティション270Aのエミュレーションを行う時、セクション285Aの信号232、234、及び236は、トレースされて、トレースメモリ290Aに記憶される(追加の信号が、セクション285Bについてトレースされてもよい)。本例において、各セクション285は、その対応するパーティション270において実現される。或いは、セクション285は、そのセクション285の一部分が一つのFPGA220において実現され、且つ、同じセクション285の複数の部分が一つ又は多数の他のFPGA220において実現されるように、多数のFPGA220にわたって実現されてもよい。
ホストシステム120は、セクション285Aを記述するセクションファイル280Aと、セクション285Bを記述するセクションファイル280Bと、セクション285Cを記述するセクションファイル280Cと、セクション285Dを記述するセクションファイル280Dとを含む。本例において、セクション285Aの信号233、235、237及び/又は238の値がDUTの解析に必要である(例えば、ホストシステム120のユーザによってトレースがリクエストされる)と仮定する。ホストシステム120は、トレース信号232、234、及び236の値をトレースメモリ290Aから読み出し、セクションファイル280Aと信号232、234、及び236の読み出された値とを入力として使用して、セクション285Aのシミュレーションを行うことができる。セクション285Aのシミュレーションを行うことにより、ホストシステム120は、信号233、235、237、及び238を生成することができる。従って、セクション285AがFPGA220Aによって既にエミュレーションされていても、ホストシステム120は、信号233、235、237、及び238の値を取得するためにセクション285Aのシミュレーションを行える。
他の例において、信号237の値のみがDUTの解析に必要だとしても、ホストシステム120は、トレース信号232、234、及び236の値をトレースメモリ290Aからさらに読み出して、セクション285Aをシミュレーションする。ホストシステム120は、セクション285Aのシミュレーションを行うことにより、信号237を生成する。さらに、ホストシステム120は、たとえ信号233及び235がリクエストされていなくても、これらの信号233及び235を生成することができる。
セクション285Aのシミュレーションにより、ホストシステム120がこれらの信号233、235、237、及び238の値を取得することができるため、エミュレータ110は、これらの信号233、235、237、及び238のトレースを行うように構成される必要がない。数百万の信号がトレースされる環境において、DUTのセクションのシミュレーションを行うことができるホストシステム120を有することにより、FPGA220によってトレースされなければならない信号の量と、エミュレータ110とホストシステム120との間で交換される信号の値の量とを劇的に削減でき、ひいては、エミュレーションリソース、通信帯域幅を節約し、エミュレーション速度を向上しうる。
さらに、ホストシステム120は、必要とされる信号を取得するのに必要なこれらのセクション285のシミュレーションのみを行う。本例において、セクション285Aからの信号の値のみが必要であるため、ホストシステム120は、セクション285Aのシミュレーションのみを行い、セクション285B、285C、及び285Dのシミュレーションを行わないことにより、ホストシステム120のリソースを節約する。しかしながら、セクション285B、285C及び/又は285Dからの信号の値が必要であった場合には、これらのセクションを、セクション285Aと同時に、又は順次、ホストシステム120によってシミュレーションすることができる。
一実施形態において、ホストシステム120は、セクション285の一部又はサブセクションのみのシミュレーションを行い、解析を実施するために必要な信号を取得する。例えば、他の信号234、235、236、237、及び238を用いずに、他のセクション285の解析又はシミュレーションを実施するために、セクション285Aの信号233が必要とされてもよい。この場合、入力として信号232を用いてセクション285Aのサブセクションのみがシミュレーションされて、セクション285A全体のシミュレーションを行うことなく、信号233を生成することができる。結果として、シミュレーションを実施するためのハードウェアリソースを削減することができ、より高速に結果に達することができる。
図3は、一実施形態に係るホストシステム120をより詳細に示したブロック図である。ホストシステム120は、デザインコンパイラ310、マッピングモジュール320、ランタイムモジュール330、シミュレーションモジュール340、セクションモジュール350、結果モジュール360、及びストレージ370を含む。これらの構成要素は各々、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせとして実装されてもよい。
デザインコンパイラ310は、DUTのHDLをゲートレベルロジックに変換する。エミュレーションされるべきDUTについて、デザインコンパイラ310は、HDLにおけるそのDUTの記述(例えば、RTL又はその他の抽象レベル)を受信する。デザインコンパイラ310は、そのDUTのHDLを合成して、ゲートレベルロジックに関してそのDUTの記述を備えたゲートレベルネットリストを生成する。
一実施形態において、デザインコンパイラ310は、DUTのエミュレーション中、エミュレータ110によってトレースされるDUTの信号を特定する。一実施形態において、特定された信号は、DUTのすべての信号又はDUTのすべての状態を含むわけではない。一実施形態において、情報は、ユーザから、又はトレースされるべきDUTの信号を示す他のシステムから、受信される。デザインコンパイラ310は、信号トレースロジックをDUTに組み込み、特定された各信号のトレースを可能にする。一実施形態において、デザインコンパイラ310は、HDLの合成に先立って、信号トレースロジックを組み込み、ネットリストを作成する。本実施形態において、合成に先立ち、デザインコンパイラ310は、ストレージ370から信号トレースロジックのHDLを読み出し、DUTのHDLを編集して信号トレースロジックの読み出されたHDLを含ませる。
他の実施形態において、デザインコンパイラ310は、DUTのためのネットリスト作成後に、信号トレースロジックを組み込む。本実施形態において、デザインコンパイラ310は、ストレージ370から信号トレースロジックのゲートレベル記述を読み出し、ゲートレベルネットリストを編集して信号トレースロジック路のゲートレベル記述を含ませる。
他の実施形態において、デザインコンパイラ310で受信したDUTの記述は、信号トレースロジックを既に含んでいる。従って、本実施形態において、デザインコンパイラ310は、特定された信号のトレースを行うために信号トレース論理を追加する必要がない。
マッピングモジュール320は、DUTをエミュレータ110のFPGA220にマッピングする。デザインコンパイラ310が信号トレースロジックをDUTに組み込んでゲートレベルネットリストを作成した後、マッピングモジュール320は、このネットリストを使用して、そのゲートレベルでDUTを多数のパーティションに分ける。一実施形態において、マッピングモジュール320は、そのDUTの解析を実施するのに必要である利用可能なセクション及び/又は信号に基づいてエミュレーションされるべきそのDUTの1つ以上のパーティションを特定することにより、そのDUTを分割する。マッピングモジュール320は、エミュレータ110によって最小数の信号しかトレースされないかもしれない方法で、1つ以上のパーティションを特定してもよい。一実施形態において、マッピングモジュール320は、インタフェースの利用可能な帯域幅に基づき、1つ以上のパーティションを特定する。或いは、マッピングモジュール320は、最小数のセクションしかホストシステム120によってシミュレーションされないかもしれない方法で、1つ以上のパーティションを特定してもよい。マッピングモジュール320は、各パーティションをエミュレータ110の対応する一つのFPGA220にマッピングする。1つのアプローチによると、マッピングモジュール320は、以下のうちの1つ以上を使用して、パーティショニング及びマッピングを実施する。すなわち、設計ルール、設計上の制約(例えば、タイミング又は論理上の制約)、FPGA220における利用可能なリソース、トレースメモリ290上の制限、HDLの結果としてのゲート、HDLソースコード、ユーザ入力、及びエミュレータ110についての情報である。
マッピングモジュール320は、1つ以上のバイナリファイルを生成して、FPGA220の各パーティションのエミュレーションを行うようにそれらのFPGA220を構成する。一実施形態において、マッピングモジュール320は、FPGA220の各々に対してバイナリファイルを生成する。マッピングモジュール320は、バイナリファイルをストレージ370に記憶する。マッピングモジュール320は、マッピングに基づき、いずれの信号が各FPGA220によりトレースされたかを示す信号情報もストレージ370に記憶する。
セクションモジュール350は、ホストシステム120のシミュレーションモジュール340によるシミュレーションのために利用可能となるDUTのセクションを特定する。例えば、セクションモジュール350は、DUTを多数のセクションに分ける。マッピングモジュール320と同様に、セクションモジュール350は、以下のうちの1つ以上を使用してシミュレーションモジュール340によるシミュレーションを行うべきDUTの複数のセクションを特定してもよい。すなわち、シミュレーション速度、HDLラインの数、HDLの結果としてのゲートの数、要求される入力信号の数、シミュレーション上の制約、設計ルール、設計上の制約、ユーザ入力、及びエミュレータ情報である。セクションモジュール350は、複数のセクションを生成して、設計自体を考慮して、ハードウェア容量を考慮せずに、シミュレーションの実施又はDUT解析の実施を早めてもよい。例えば、セクションモジュール350は、セクションの作成時、インタフェースのサイズ、信号の数、及び/又はセクションの信号のクロック周波数を考慮してもよい。また、セクションモジュール350は、セクションの作成時、あるセクションのシミュレーションを行うために1つ以上のプロセッサによって実行されるプロセスの時間又は数を考慮してもよい。セクションモジュール350は、DUTのセクションを特定した後、DUTの特定された各セクションのデザイン(例えば、回路)を記述するセクションファイルを生成する。一実施形態において、セクションモジュール350は、特定された各セクションについて一セクションファイルを生成する。セクションモジュール350は、そのセクションファイルをストレージ370に記憶する。セクションモジュール350は、特定された各セクションについて、そのセクションのシミュレーション時にトレースされたDUT信号と、そのセクションのシミュレーションに必要なDUTの信号(例えば、入力信号)とを記述する信号情報もストレージ370に記憶する。
特定されたセクションは、パーティションの一部又はパーティション全体を含んでもよい。一実施形態において、特定されたセクションの集合は、そのDUT全体をモデル化する。しかしながら、後述の通り、このセクションのすべてが同時に、シミュレーションモジュール340によってシミュレーションされる必要はない。他の実施形態において、特定されたセクションの集合は、そのDUTの一部分のみをモデル化する。さらに他の実施形態において、DUTの一部を多数のセクションに含ませることができる。
ランタイムモジュール330は、DUTのエミュレーションを実施するためのエミュレータ110を構成する。ランタイムモジュール330は、インタフェース115を介してエミュレータ110に、そのDUTのためにストレージ370に記憶されたバイナルファイルを送信して、そのDUTのエミュレーションを行うようにエミュレータ110のFPGA220を構成する。ランタイムモジュール330は、そのDUTのエミュレーションを行うようにエミュレータ110に命令する。一実施形態において、ランタイムモジュール330は、エミュレーションの開始に先立ち、又はDUTのエミュレーション中、入力パラメータ及び/又は状態機械をエミュレータ110に送信して、そのDUTのエミュレーションを構成及び制御する。
シミュレーションモジュール340は、DUTのセクションをシミュレーションする。シミュレーションモジュール340は、任意の種類のセクションをシミュレーションできる。シミュレーションモジュール340によってシミュレーションされるセクションは、組み合わせ型回路、シーケンス型回路、又は双方の種類の回路の組み合わせを含む。一実施形態において、シミュレーションモジュール340は、回路の非合成可能な部分をシミュレーションできる。他の実施形態において、シミュレーションモジュール340は、信号以外のものの演算を行うことができないソフトウェアであり、さらに、他の実施形態において、シミュレーションモジュール340は、エミュレータにコンパイルされる回路に限定されず、任意の種類の回路の演算に使用できる。
シミュレーションモジュール340は、DUTの解析または検証を実施するのに必要なそのDUTの信号を示す検証設定を受信する。検証設定は、そのDUTの解析のために使用される特定の信号又は状態機械をトレースすることを求めるリクエストを含んでもよい。検証設定は、ユーザから、又は他のシステムから受信されてもよく、あるいは、エミュレータ110又はDUTの一部であってもよい。
シミュレーションモジュール340は、検証設定に基づき、得られる必要のあるDUTの信号の値を特定する。シミュレーションモジュール340は、ストレージ370に記憶された信号情報から、DUTのいずれのセクションが、シミュレーション時、特定された信号のうちの1つ以上を生成するかを特定する。シミュレーションモジュール340は、さらに、特定されたセクションのシミュレーションを行うためにいずれの信号が必要とされるかを判定する。シミュレーションモジュール340は、エミュレータ110によってトレースされた必要とされる信号を特定する。必要とされる信号がエミュレータ110から依然として得られていない場合、シミュレーションモジュール340は、エミュレータ110からの信号を要求及び受信する。一実施形態において、特定されたセクションのシミュレーションを行うのに必要な信号がエミュレータ110によってトレースされない場合、シミュレーションモジュール340は、1つ以上のセクションのシミュレーションを行い、必要とされる信号を取得する。
シミュレーションモジュール340は、取得可能な信号の値と、各セクションのために必要とされる入力と、の間の対応関係に基づき、シミュレーションを行う複数のセクションを決定する。一実施形態において、シミュレーションモジュール340は、所望の信号を生成するのに、最小数のセクション又は最小数の入力信号を必要とするような方法で、シミュレーションされるべきセクション部分を特定する。或いは、シミュレーションモジュール340は、インタフェース115の利用可能な帯域幅に基づき、シミュレーションされるべきセクションを特定する。
一実施形態において、1つ以上のセクションについて、セクション全体のシミュレーションを行うと決定する代わりに、シミュレーションモジュール340は、特定された信号のうちの1つ以上を生成するために、DUTのセクションの一部分又はサブセクションのシミュレーションのみを行うと決定してもよい。セクション又はセクションのサブセクションは、最小数の信号がトレースされるか、最小数のセクションがシミュレーションされるように特定されてもよい。
シミュレーションモジュール340は、(例えば、エミュレータ110から、又は他のセクションのシミュレーションにより)得られた信号の値を使用して、特定されたセクションの各々のシミュレーションを行う。シミュレーションモジュール340は、(例えば、ユーザから)提供された入力パラメータを使用して、セクションをシミュレーションしてもよい。シミュレーションモジュール340は、このセクションのシミュレーション中にトレースされた信号の値をストレージ370に記憶する。一実施形態において、シミュレーションモジュール340は、DUTのエミュレーション時、エミュレータ110が既にトレースした検証設定で特定された信号の値もエミュレータ110から読み出す。シミュレーションモジュール340は、エミュレータ110から読み出されたトレース信号の値をストレージ370に記憶する。
例として、図2に戻り、検証設定に基づいて、セクション285Aにおける信号237がトレースされる必要があるものの、信号237がエミュレータ110によってトレースされていないと仮定する。この場合、シミュレーションモジュール340は、信号237を得るために、セクション285Aのシミュレーションを行う。
上述の通り、追加のセクションがシミュレーションされて、セクションのシミュレーションに必要とされる入力信号を生成してもよい。例えば、セクション285Dのシミュレーションを行い、セクション285Dから特定の信号値を取得するとの決定がなされると仮定する。さらに、セクション285Aからの信号233は、セクション285Dの入力であると仮定する。セクション285Dのシミュレーションを可能にするには、セクション285Aをまずシミュレーションして信号233を生成する。一旦信号233が得られると、セクション285Dをシミュレーションすることができる。
シミュレーションモジュール340が呼び出され、インタフェース115の状態に応じてトレース信号を読み出す。一実施形態において、エミュレータ110とホストシステム120との間のインタフェース115は、DUTのエミュレーション中、使用可能である。シミュレーションモジュール340は、エミュレータ110によって実施されるDUTのエミュレーション中、エミュレータ110によってトレースされた信号の値を読み出す。シミュレーションモジュール340は、DUTのエミュレーション中、特定されたセクションのシミュレーションも行う。
一実施形態において、エミュレータ110は、インタフェース115が使用可能な間、トレースされた値の全部又は一部をストレージ370に記憶する。シミュレーションモジュール340は、DUTのエミュレーション中であるか否かを問わず、未だ記憶されていない信号値を提供するために、エミュレータ110によってストレージ370に記憶された信号の値を読み出し、DUTのいくつかのセクションのシミュレーションを行うことができる。シミュレーションモジュール340は、その後、シミュレーションした信号値をストレージ370に記憶するか、若しくはこれらの値のいずれかをリクエストしたであろう、GUIインタフェース上に、又はホストシステム120上で動作中のスクリプト又はソフトウェアプログラムに、これらの値を提供することができる。
一実施形態において、ホストシステム120とエミュレータ110との間のインタフェース115は、エミュレーション中に使用禁止となり、エミュレーションの完了後に使用可能になる。シミュレーションは、ホストシステム120がDUT又はそのDUTの一部分のエミュレーションを完了した後に実施される。シミュレーションモジュール340は、エミュレーションの完了時、インタフェース115を介してエミュレーション中にトレースされた信号を読み出し、特定されたセクションのシミュレーションを行う。
一実施形態において、シミュレーションモジュール340は、呼び出されて、トレース信号を双方向モードで読み出す。双方向モードにおいて、シミュレーションモジュール340は、信号又は信号のセットを少し、その時点でモニタリングしているユーザから呼び出される。ユーザは、典型的にはシノプシス社のVerdi波形ビューア等のようなGUIインタフェースにおいて、所望の信号をリクエスト又は選択する。シミュレーションモジュール340は、モニタリングされた信号に基づくシミュレーションを通じて、追加の信号値を取得する。シミュレーションは、Verdiの稼働に使用されるシステム(例えば、ホストシステム)上で局所的に実施されてもよい。
一実施形態において、シミュレーションモジュール340は、呼び出されて、トレース信号を非双方向モードで読み出す。シミュレーションモジュール340は、ユーザリクエストを伴うことなく動作してもよいが、代わりに、エミュレーションに先立って提供されるスクリプトに基づいて動作してもよい。非双方向モードは、信号のセットが多い場合に、デザイン全体にまで及んで採用されてもよい。
結果モジュール360は、DUTのエミュレーションとそのDUTのセクションのシミュレーションとから得られた結果を提供する。結果モジュール360は、DUTセクションのシミュレーションによって生成されるトレース信号の値と、エミュレータ110から読み出されるトレース信号の値とを処理する。一実施形態において、結果モジュール360は、ストレージ370からトレース信号の値を読み出し、トレース信号の値の表現を含むユーザインタフェースをユーザへの表示のために生成する。一実施形態において、結果モジュール360は、表示のためにトレース信号の波形を生成する波形ビューアである。一実施形態において、結果モジュール360は、ユーザに表示するためにトレース信号の視覚的波形を生成するAPIを含む。トレース信号の処理には、結果モジュール360により、トレース信号に基づくイベントを計数することも含まれてよい。他の実施形態において、結果モジュール360は、信号値を処理して、その信号値に基づく情報又はその情報の表示を生成する(システムCモデル、C/C++モデル、又はその他任意のソフトウェア言語から得られた)バイナリプログラム又はスクリプトを含む。
一実施形態において、ホストシステム120の1つ以上の機能は、他のコンピュータ(例えば、所望のコンピュータ又は機械の集合体)で実現されてもよい。例えば、デザインコンパイラ310及びマッピングモジュール320は、DUTのコンパイル及びパーティショニングのための他のコンピュータに含まれてもよい。
図4は、一実施形態に係る、ホストシステム120が行う、DUTのエミュレーションの準備を示すフローチャートである。他の実施形態では、図4のステップを他の順序で実行することができる。さらに、他の実施形態では、本明細書に記載のステップとは異なるステップ及び/又は追加ステップを含むことができる。
ホストシステム120は、HDLにおけるDUTの記述をユーザから取得する(410)。ホストシステム120は、そのDUTの記述に基づき、エミュレータ110におけるそのDUTのエミュレーションのために、及びホストシステム120におけるセクションのシミュレーションのために、コンフィギュレーションファイルを生成する。ホストシステム120は、エミュレータ110のFPGA220にロードされるバイナリファイルと、1つ以上のセクションをシミュレーションするのに必要とされる時、ホストシステム120によって使用されるべきセクションファイルを生成することが好ましい。一実施形態において、ホストシステム120は、バイナリファイル及びセクションファイルを並行して生成する。
ホストシステム120は、バイナリファイルを生成するために、DUTのHDL記述を合成して、ゲートレベルネットリストを生成する(420)。一実施形態において、ホストシステム120は、エミュレーション中にトレース可能であるべきDUTの信号の所定リストも取得する。ホストシステム120は、各信号をトレースできるように、信号トレースロジックをDUTに組み込む。一実施形態において、ホストシステム120は、HDL記述の合成に先立って、DUTのHDL記述を編集することにより、信号トレースロジックを組み込む。他の実施形態において、信号トレースロジックは、ネットリストの編集によってHDL記述を合成した後に組み込まれる。他の実施形態において、ホストシステム120によって取得されたDUTの記述は、信号トレースロジックを含む。
ホストシステム120は、ゲートレベルネットリストを使用して、ゲートレベルでDUTを多数のパーティションに分ける(430)。一実施形態において、ホストシステム120は、DUTの解析を実施するのに必要とされる利用可能なセクション及び/又は信号に基づいてエミュレーションされるべきDUTの1つ以上のパーティションを特定することにより、DUTを分ける。ホストシステム120は、最小数の信号しかトレースされないかもしれない方法で、1つ以上のパーティションを特定してもよい。或いは、ホストシステム120は、最小数のセクションしかホストシステム120によってシミュレーションされる必要がないであろう方法で、1つ以上のパーティションを特定してもよい。ホストシステム120は、各パーティションをエミュレータ110のFPGA220にマッピングする(440)。ホストシステム120は、FPGA220を構成して、それらのDUTのマッピングされたパーティション各々をエミュレーションするための情報を含むバイナリファイルを生成する(450)。
ホストシステム120は、セクションファイルを生成するために、シミュレーションに利用可能となるべきDUTのセクションを特定する(460)(例えば、DUTを多数のセクションに分ける)。ホストシステム120は、DUTのセクションを特定した後、そのセクションのデザインを記述するセクション毎にセクションファイルを生成する(470)。ホストシステム120は、セクションファイルを記憶する。DUTのセクションを特定することは、各々のステップ420、430、及び440におけるDUTの合成、パーティショニング、及びマッピングのうちの少なくともいずれか1つに基づいてもよい。DUTの特定されたセクションにおける信号のリストは、各々のステップ420、430、440、及び450におけるDUTの合成、パーティショニング、マッピング、及びバイナリファイルの生成のうちの少なくともいずれか1つのために使用されてもよい。
FPGA220のためのバイナリファイルとシミュレーションモジュール340のためのセクションファイルの双方を生成した後、ホストシステム120は、パーティションのエミュレーション時に、いずれの信号がトレースされるかを示すパーティション毎の信号情報を記憶する(480)。ホストシステム120は、セクションのシミュレーション時、いずれの信号がトレースされるかを示すセクション毎の信号情報と、いずれの入力信号がセクションのシミュレーションのために必要とされるかを示す情報も記憶する。この記憶すること(480)は、1つ又は多数のデータベース、ファイル、ハードディスク、メモリ、又は外部記憶装置において行われてもよい。
図5は、一実施形態に係るDUTの特定の信号をトレースするためにホストシステム120及びエミュレータ110を構成するフローチャートである。他の実施形態では、図5のステップを異なる順に実施することができる。さらに、他の実施形態では、本明細書に記載のステップとは異なるステップ及び/又は追加ステップを含むことができる。
ホストシステム120は、バイナリファイルをエミュレータに送信して(510)、にエミュレータ110のFPGA220を構成してDUTをエミュレーションする。ホストシステムは、エミュレータ110にDUTのエミュレーションを行うように命令を送信する(520)。
ホストシステム120は、DUTの解析に(例えばユーザ又はシステムによって)必要とされるDUTの信号を特定する(530)。ホストシステム120は、特定された信号に基づき、その特定された信号を得ることのできるセクションのプールから、いずれのセクションをシミュレーションするかを決定する(540)。ホストシステム120は、最小数のセクション又は最小数の入力信号(又はトレース信号)が所望の信号の生成に必要とされるような方法で、シミュレーションされるべきセクションを決定する。ホストシステム120は、シミュレーションを行うため、シミュレーション時、特定された信号のうちの1つ以上を生成するセクションを決定する。ホストシステム120は、セクション全体でなく、セクションのサブセクションのシミュレーションを行うことを決定してもよい。ホストシステム120は、エミュレータ110によってトレースされた信号も確定し、確定されたセクションをシミュレーションのために読み出す(550)。
ホストシステム120は、確定されたトレース信号をエミュレータ110から取得する(560)。DUTの解析に必要な信号がエミュレータ110によって既にトレースされている場合、ホストシステム120は、エミュレータ110から、その信号も取得する。ホストシステム120は、エミュレータ110から取得したトレース信号と、セクションのデザインを記述するセクションファイルとを使用して、DUTの決定されたセクションをシミュレーションする(570)。これらのセクションのシミュレーションに基づき、必要とされるDUTの信号が取得/トレースされる。
演算機械アーキテクチャ
図6を参照すると、機械可読媒体から命令を読み取り、1つ以上のプロセッサ(又は、コントローラ)においてそれらを実行することのできる一例としての機械の構成要素を示すブロック図である。具体的には、図6は、機械に図1〜図5を用いて説明した方法論のうちのいずれか1つ以上を実施(実行)させる命令624(例えば、ソフトウェア又はプログラムコード)を備えたコンピュータシステム600の一例としての形態における機械の図式的表示を示している。また、コンピュータシステム600は、図1のエミュレーション環境100に示される実体のうちの1つ以上(例えば、ホストシステム120、エミュレータ110)に使用されてもよい。
この例のコンピュータシステム600は、バス608を介して互いに通信するように構成された、プロセッサ602(例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)、1つ以上のASIC(Application Specific Integrated Circuits)、1つ以上のRFIC(Radio-Frequency Integrated Circuits)、又はこれらのうちのいずれかの組み合わせ)と、メインメモリ604と、スタティックメモリ606とを含む。コンピュータシステム600は、さらに、グラフィクス表示部610(例えば、PDP(Plasma Display Panel)、LCD(Liquid Crystal Display)、プロジェクタ、CRT(Cathode Ray Tube))を備えてもよい。コンピュータシステム600は、バス608を介して通信するように構成される、英数字入力装置612(例えば、キーボード)と、カーソル制御装置614(例えば、マウス、トラックボール、ジョイスティック、動きセンサ、又はその他のポインティング機器)と、記憶部616と、信号生成装置618(例えば、スピーカ)と、ネットワークインタフェース装置620とを含んでもよい。さらに、コンピュータシステム600は、タッチセンサ式ディスプレイであってもよい。
記憶部616は、本明細書に記載の方法論又は機能のうちのいずれか1つ以上を具体化する命令624(例えば、ソフトウェア)を記憶した機械可読媒体622を含む。命令624(例えば、ソフトウェア)は、コンピュータシステム600による実行中、メインメモリ604内、又はプロセッサ602内(例えば、プロセッサのキャッシュメモリ内)に全部又は少なくとも部分的に設けられてもよく、メインメモリ604及びプロセッサ602は、機械可読媒体も構成する。命令624(例えば、ソフトウェア)は、ネットワークインタフェース装置620を介してネットワーク626上で送受信されてもよい。
機械可読媒体622は単一媒体として例としての実施形態に示されているが、「機械可読媒体」という用語は、命令(例えば、命令624)を記憶することのできる単一媒体又はマルチプル媒体(例えば、中央データベース又は分散データベース、若しくは関連するキャッシュとサーバ)を含むものとして理解されなければならない。「機械可読媒体」という用語は、機械によって実行される命令(例えば、命令624)を記憶することができ、機械に、本明細書に開示の方法論のうちのいずれか1つ以上を実施させる、いずれかの媒体を含むものとしても理解されなければならない。「機械可読媒体」という用語は、固体メモリ、光学媒体、及び磁気媒体の形態のデータレポジトリを含むが、これに限定されない。
当分野で既知の通り、コンピュータシステム600は、図6に示されるものとは異なる構成要素及び/又は他の構成要素を有することができる。また、コンピュータシステム600から、図示の特定の構成要素を省くことができる。例えば、エミュレータ110として動作するコンピュータシステム600は、他の構成要素の中でも、1つ以上のハードウェアプロセッサ602、マルチプル記憶部616、ネットワークインタフェース装置620、及びマルチプルに構成可能なロジック回路(図1を参照して上述した)を含んでもよく、英数字入力装置612及びカーソル制御装置614を省いてもよい。他の例として、ホストシステム120として動作するコンピュータシステム600は、1つ以上のハードウェアプロセッサ602を含んでもよい。マルチプルプロセッサ602を備えたホストシステム120は、マルチプルなシミュレーションをマルチプルなスレッド、プロセス、及び/又は機械上で並行して実施してもよい。セクションのサブセットは、ユーザにより、又は自動的にソフトウェアプログラムによって分担されて、並行に実施されるシミュレーションを通じて、信号の入力セットに基づき、信号のセットを生成してもよい。
追加構成についての考慮
有利なことに、開示のシステム及び方法は、エミュレーション及びシミュレーションのリソースを削減することができる。エミュレータから僅かな信号(例えば、セクションの境界)をトレースすることにより、エミュレータは、すべての信号をトレースする必要がない。このように、より少ない信号の値がエミュレータとホストシステムとの間で交換されるので、通信帯域幅又はスループットを節約することができる。僅かなトレース信号を使用することは、エミュレーション及び検証されるDUTのサイズを拡張させる。また、解析を実施するために所望の信号を生成すべく、最小数のセクション又は最小数の入力信号を有するセクションを選択することにより、エミュレーション及びシミュレーションのリソースを削減することができ、所望の信号の値を得る速度を改善できる。
デジタル回路及びシステムのエミュレーションのためのエミュレーション環境という観点から主題について記載したが、記載した原則は、任意にデジタル電子装置の分析に適用されてもよいことに留意する。さらに、本明細書に記載の例は、FPGAを含むエミュレーション環境という状況におけるものであったが、本明細書に記載の原則は、その他、任意のデジタルロジック回路のハードウェア実装又はEDA等のソフトウェアシミュレーションの解析に適用することができる。
本明細書を通じて、単一の場合として説明した構成要素、動作、構造を複数で実装してもよい。1つ以上の方法の個々の動作について、別個の動作として図示及び説明したが、個々の動作の1つ以上は、同時に実施されてもよく、動作が図示の順通りに実施される必要はない。例としての構成において別個の構成要素として表された構造及び機能は、組み合わせの構造又は構成要素として実施されてもよい。同様に、単一の構成要素として表された構造及び機能が、別個の構成要素として実施されてもよい。これらの変動、修正、追加、及び改良並びにその他の変動、修正、追加、及び改良は、本明細書に記載の主題に範囲内である。
本明細書では、例えば、図1〜図5に示される通り、ロジック、あるいは、多数の構成要素、モジュール(本明細書中、「ツール」と称することもある)、又は機構を含むものとして、特定の実施形態について説明している。モジュールは、ソフトウェアモジュール(例えば、機械可読媒体上、又は送信信号内に実装されたコード)又はハードウェアモジュールのいずれかからなってもよい。ハードウェアモジュールは、特定の動作を実施することができる有形ユニットであり、特定の方法で構成または配置されてもよい。例としての実施形態において、1つ以上のコンピュータシステム(例えば、スタンドアロンコンピュータシステム、クライアントコンピュータシステム、又はサーバコンピュータシステム)又はコンピュータシステムの1つ以上のハードウェアモジュール(例えば、プロセッサ、又はプロセッサ群)は、本明細書に記載の通り、特定の動作を実施するように動作するハードウェアモジュールとして、ソフトウェア(例えば、アプリケーション又はアプリケーション部分)によって構成されてもよい。
いくつかの実施形態において、ハードウェアモジュールは、電子的に実施されてもよい。例えば、ハードウェアモジュールは、特定の動作を実施するように、(例えば、FPGA(Field Programmable Gate Array)又はASIC(Application-Specific Integrated Circuit)など、特殊目的用プロセッサとして)永続的に構成された専用回路又はロジックを備えてもよい。ハードウェアモジュールは、特定の動作を実施するように、ソフトウェアによって一時的に構成された(例えば、汎用プロセッサ又はその他のプログラマブルプロセッサ内に含まれるものとして)プログラマブルロジック又は回路を備えてもよい。本明細書において実施されるハードウェアモジュールは、専用の永続的に構成された回路で実施されてもよく、又は一時的に構成された(例えば、ソフトウェアによって構成された)回路で実施されてもよい。
本明細書に記載の例としての方法の種々の動作は、少なくとも部分的に、関連動作を実施するように一時的に(例えば、ソフトウェアによって)構成されるか、又は永続的に構成された、例えば、プロセッサ602等の1つ以上のプロセッサによって実施されてもよい。一時的に構成されるか、又は永続的に構成されるかを問わず、このようなプロセッサは、1つ以上の動作又は機能を実施するように動作するプロセッサ実施モジュールを構成してもよい。本明細書において参照したモジュールは、いくつかの例としての実施形態において、プロセッサ実施モジュールからなってもよい。
1つ以上のプロセッサは、「クラウドコンピューティング」環境において、又は「SaaS(Software As A Service)」として関連動作の実施をサポートするよう動作してもよい。例えば、少なくともいくつかの動作は、コンピュータ群(プロセッサを含む機械の例として)によって実施されてもよく、これらの動作は、ネットワーク(例えば、インターネット)を介して、且つ、1つ以上の適切なインタフェース(例えば、アプリケーションプログラムインタフェース(APIs(Application Program Interfaces))を介してアクセス可能である。
特定の動作の実施は、単一の機械内に設けられるものだけでなく、多数の機械に亘って展開される1つ以上のプロセッサで分担されてもよい。いくつかの例としての実施形態において、1つ以上のプロセッサ又はプロセッサ実施モジュールは、単一の地理的位置(例えば、住宅環境、オフィス環境、又はサーバファーム内等)に配置されてもよい。他の例としての実施形態において、1つ以上のプロセッサ又はプロセッサ実施モジュールは、多数の地理的位置にわたって分散されてもよい。
本明細書の一部分は、機械メモリ(例えば、コンピュータメモリ)内にビット又はバイナリデジタル信号として記憶されるデータ上の動作を表すアルゴリズム又はシンボル表現で表される。これらのアルゴリズムまたはシンボル表現は、データ処理分野の当業者が、自らの作業の内容を当分野の他の者に伝える際に使用される手法の例である。本明細書で使用される「アルゴリズム」は、自己一致型の動作手順、又は所望の結果に導く同様な処理である。これに関連して、アルゴリズム及び動作は、物理量の物理的操作を含む。通常、このような量は、機械による記憶、アクセス、転送、結合、比較、又はその他の操作が可能な、電気信号、磁気信号、又は光学信号の形態をとってもよい。時として、主として一般的使用という理由により、このような信号を「データ」、「内容」、「ビット」、「値」、「要素」、「符号」、「文字」、「用語」、「数」、「数値」等の単語を使用して参照するのが便利である。しかしながら、このような単語は、単に便利なラベルであり、適切な物理量と関連付けられるべきものである。
特段の指摘のない限り、「処理すること」、「演算すること」、「計算すること」、「判定すること」、「提示すること」、「表示すること」等の用語を使用した本明細書中の議論は、1つ以上のメモリ(例えば、揮発性メモリ、不揮発性メモリ、又はそれらの組み合わせ)、レジスタ、又は情報を受信、記憶、送信、又は表示する他の機械構成要素内で、物理的(例えば、電子、磁気、又は光学)量として表現されるデータを操作又は変換する機械(例えば、コンピュータ)の動作又はプロセスをいうものであってもよい。
本明細書で使用している「一実施形態」又は「1つの実施形態」という任意の参照は、その実施形態と関係して説明される特定の要素、特徴、構造、又は特性が、少なくとも1つの実施形態に含まれることを意味する。明細書の様々な箇所で現れる「一実施形態において」というフレーズは、必ずしもすべてが同一の実施形態について言及しているものでない。
いくつかの実施形態は、「連結された」又は「接続された」という表現をそれらの派生語とともに使用して説明されているかもしれない。例えば、いくつか実施形態は、2つ以上の要素が物理的又は電気的に直接接触をしていることを示すために、「連結された」という用語を使用して説明されているかもしれない。しかしながら「連結された」という用語は、2つ以上の要素が互いに直接接触しておらず、しかしながら依然として互いに協働するか又は相互作用することを意味することもある。実施形態は、この文脈において限定されるものでない。
本明細書において使用される「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、又はそれらの他の任意の活用語は、非排他的包含をカバーすることが意図されている。例えば、列挙される要素を備えたプロセス、方法、項目、又は装置は、これらの要素のみに必ずしも限定されるものでなく、明示的に列挙されないか、又は、そのようなプロセス、方法、項目、又は装置に本来含まれている、他の要素を含んでもよい。さらに、反対の旨の明示的な指摘のない限り、「又は」は、排他的な「又は」でなく、包含的な「又は」をいう。例えば、条件A又は条件Bは、以下のうちのいずれか1つによって満たされる。つまり、Aが真(又は存在)でBが偽(又は不存在)、Aが偽(又は不存在)でBが真(又は存在)、及びAとBの双方が真(又は存在)である。
また、不定冠詞の使用は、本明細書における実施形態の要素及び構成要素を説明するために採用されている。これは、単に簡便さのために使用したものであり、発明に一般的な意味を与えるためである。この記載は、1つ又は少なくとも1つを含むものとして読まれなければならず、単数は、単数である旨の明示のない限り、複数も含む。
本開示を熟読することにより、当業者は、本明細書に記載の原則を実施するための追加且つ代替の構造的設計及び機能的設計を想到するであろう。そこで、特定の実施形態及び適用例について図示及び説明したが、本開示の実施形態は、本開示の精密な構築物及び構成要素に限定されるものでないことを理解しなければならない。添付のクレームに規定の主旨及び範囲から逸脱することなく、当業者にとって明らかとなる種々の修正、変更、及び変動が本明細書に開示の配置、動作、並びに方法及び装置の詳細においてなされてもよい。

Claims (20)

  1. ホストシステムとエミュレータの間の帯域幅を削減するためにホストシステム上で実行するコンピュータ実施プロセスであって、
    複数のセクションを備えたIC(Integrated Circuit)の設計に対応するDUT(Design Under Test)のエミュレーションに基づき、ミュレータによってトレースされた第1信号を前記エミュレータから受信し、
    前記エミュレータによってトレースされなかった前記DUTの第2信号を求めるリクエストを受信し、
    記第1信号と組み合わせシミュレーションされた前記第2信号を生成する前記DUTの少なくとも1つのセクションを前記複数のセクションから特定し、
    前記少なくとも1つの特定されたセクションを記述する複数のセクションファイルのうちの少なくとも1つを読み出し、前記エミュレータから受信した前記第1信号を少なくとも部分的に使用して、前記少なくとも1つの特定されたセクションをシミュレーションし、
    前記第2信号を生成する、ことを備えるプロセス。
  2. 請求項1に記載のプロセスにおいて、
    リクエストされていない前記DUTの機能を評価するための第3信号を、前記シミュレーションに基づき、生成することをさらに備えるプロセス。
  3. 請求項1に記載のプロセスにおいて、
    前記第1信号は、前記DUTの前記エミュレーションの完了後、前記エミュレータから追加の信号とともに受信される、プロセス。
  4. 請求項1に記載のプロセスにおいて、
    前記少なくとも1つの特定されたセクションは、他のセクションの一部である、プロセス。
  5. 請求項1に記載のプロセスにおいて、
    前記少なくとも1つの特定されたセクションは、第1セクションと第2セクションとを含み、前記第1セクションは、前記第1信号に基づき、第3信号を生成し、前記第2セクションは、前記第3信号に基づき、前記第2信号を生成する、プロセス。
  6. 請求項1に記載のプロセスにおいて、
    複数の信号は、前記エミュレータから受信され、前記複数の信号は、前記第1信号を含み、前記プロセスは、さらに、
    前記少なくとも1つの特定されたセクションに基づき、前記シミュレーションのための前記複数の信号から前記第1信号を選択することを備えるプロセス。
  7. 請求項1に記載のプロセスにおいて、
    多数の信号、又は、前記ホストシステムによって実行される多数のプロセスに基づき、前記複数のセクションを生成し、各セクションをシミュレーションすることをさらに備えるプロセス。
  8. 命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、ホストシステムによって実行される時、前記ホストシステムに、
    IC(Integrated Circuit)のデザインに対応するDUT(Design Under Test)のエミュレーションに基づき、エミュレータによってトレースされた第1信号を前記エミュレータから受信させ、
    前記エミュレータによってトレースされなかった前記DUTの機能を評価するための第2信号を求めるリクエストを受信させ、
    前記DUTの複数のセクションから、前記第2信号の生成をシミュレーションするための前記DUTのセクションのサブセットを判定させ、
    前記第1信号に基づき、前記セクションのサブセットをシミュレーションさせ、
    前記セクションのサブセットの前記シミュレーションに基づき、前記第2信号を生成させる、非一時的コンピュータ可読媒体。
  9. 請求項8に記載の非一時的コンピュータ可読媒体において、
    前記命令は、さらに、前記ホストシステムに、シミュレーションに基づいて、リクエストされていない前記DUTの機能を評価するための第3信号を生成させる、非一時的コンピュータ可読媒体。
  10. 請求項8に記載の非一時的コンピュータ可読媒体において、
    前記第1信号は、前記セクションのサブセットに含まれるセクションの入力である非一時的コンピュータ可読媒体。
  11. 請求項8に記載の非一時的コンピュータ可読媒体において、
    前記第1信号は、前記DUTの前記エミュレーションの完了後、前記エミュレータから追加の信号とともに受信される非一時的コンピュータ可読媒体。
  12. 請求項8に記載の非一時的コンピュータ可読媒体において、
    前記セクションは、他のセクションの一部である非一時的コンピュータ可読媒体。
  13. 請求項8に記載の非一時的コンピュータ可読媒体において、
    前記セクションのサブセットは、第1セクションと第2セクションとを含み、前記第1セクションは、前記第1信号に基づいて第3信号を生成し、前記第2セクションは、前記第3信号に基づいて前記第2信号を生成する非一時的コンピュータ可読媒体。
  14. 請求項8に記載の非一時的コンピュータ可読媒体において、
    複数の信号は、前記エミュレータから受信され、前記複数の信号は、前記第1信号を含み、前記命令は、さらに、前記ホストシステムに、
    前記判定されたセクションのサブセットに基づき、前記シミュレーションを行うための前記複数の信号から前記第1信号を選択させる、非一時的コンピュータ可読媒体。
  15. 請求項8に記載の非一時的コンピュータ可読媒体において、
    前記命令は、さらに、前記ホストシステムに、
    多数の信号、又は前記ホストシステムによって実行される多数のプロセスに基づき、前記複数のセクションを生成させ、各セクションをシミュレーションさせる、非一時的コンピュータ可読媒体。
  16. エミュレーションを行うDUT(Design Under Test)の受信に際して呼び出された時、ホストシステム上で実行するコンピュータ実施プロセスであって、
    テストされるべきIC(Integrated Circuit)のデザインに対応する前記DUTのエミュレーションに基づき、エミュレータによってトレースされた第1信号を前記エミュレータから受信し、
    前記エミュレータによってトレースされなかった前記DUTの機能を評価するための第2信号を求めるリクエストを受信し、
    前記DUTの複数のセクションから、前記第2信号の生成をシミュレーションするための前記DUTのセクションのサブセットを判定し、
    前記第1信号に基づき、前記セクションのサブセットをシミュレーションし、
    前記セクションのサブセットの前記シミュレーションに基づき、前記第2信号を生成する、ことを備えるプロセス。
  17. 請求項16に記載のプロセスにおいて、
    前記シミュレーションに基づき、リクエストされていない前記DUTの機能を評価するための第3信号を生成することをさらに備えるプロセス。
  18. 請求項16に記載のプロセスにおいて、
    前記セクションのサブセットは、第1セクションと第2セクションとを含み、前記第1セクションは、前記第1信号に基づいて第3信号を生成し、前記第2セクションは、前記第3信号に基づいて前記第2信号を生成するプロセス。
  19. 請求項16に記載のプロセスにおいて、
    複数の信号は、前記エミュレータから受信され、前記複数の信号は、前記第1信号を含み、前記プロセスは、さらに、
    前記判定されたセクションのサブセットに基づき、前記シミュレーションのための前記複数の信号から前記第1信号を選択することを備えるプロセス。
  20. 請求項16に記載のプロセスにおいて、
    多数の信号、又は、前記ホストシステムによって実行される多数のプロセスに基づき、前記複数のセクションを生成し、各セクションをシミュレーションすることをさらに備えるプロセス。
JP2017555800A 2015-05-04 2016-02-04 エミュレーションのための効率的波形生成 Active JP6600011B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/703,718 US9286424B1 (en) 2015-05-04 2015-05-04 Efficient waveform generation for emulation
US14/703,718 2015-05-04
US15/007,040 2016-01-26
US15/007,040 US9852244B2 (en) 2015-05-04 2016-01-26 Efficient waveform generation for emulation
PCT/US2016/016660 WO2016178724A2 (en) 2015-05-04 2016-02-04 Efficient waveform generation for emulation

Publications (2)

Publication Number Publication Date
JP2018524652A JP2018524652A (ja) 2018-08-30
JP6600011B2 true JP6600011B2 (ja) 2019-10-30

Family

ID=57218276

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017555800A Active JP6600011B2 (ja) 2015-05-04 2016-02-04 エミュレーションのための効率的波形生成

Country Status (5)

Country Link
US (1) US9852244B2 (ja)
EP (1) EP3292467A4 (ja)
JP (1) JP6600011B2 (ja)
CN (2) CN107533473B (ja)
WO (1) WO2016178724A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11169895B2 (en) 2020-01-27 2021-11-09 International Business Machines Corporation Emulation latch to capture state
US11244096B2 (en) 2020-04-29 2022-02-08 International Business Machines Corporation Simulating operation of an electronic device tracing using port mirroring

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10120965B2 (en) * 2015-09-30 2018-11-06 Synopsys, Inc. Waveform based reconstruction for emulation
WO2018089842A1 (en) * 2016-11-11 2018-05-17 Synopsys, Inc. Waveform based reconstruction for emulation
US11023635B1 (en) * 2020-07-27 2021-06-01 Synopsys, Inc. Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames
CN111931445B (zh) * 2020-10-09 2020-12-29 芯华章科技股份有限公司 用于调试逻辑***设计的方法、仿真器及存储介质

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680583A (en) 1994-02-16 1997-10-21 Arkos Design, Inc. Method and apparatus for a trace buffer in an emulation system
US5790832A (en) 1996-04-23 1998-08-04 Mentor Graphics Corporation Method and apparatus for tracing any node of an emulation
US6009256A (en) 1997-05-02 1999-12-28 Axis Systems, Inc. Simulation/emulation system and method
US6134516A (en) 1997-05-02 2000-10-17 Axis Systems, Inc. Simulation server system and method
US6061511A (en) 1998-06-12 2000-05-09 Ikos Systems, Inc. Reconstruction engine for a hardware circuit emulator
US7379860B1 (en) 2002-03-29 2008-05-27 Cypress Semiconductor Corporation Method for integrating event-related information and trace information
US7089135B2 (en) * 2002-05-20 2006-08-08 Advantest Corp. Event based IC test system
US7440884B2 (en) 2003-01-23 2008-10-21 Quickturn Design Systems, Inc. Memory rewind and reconstruction for hardware emulator
US7379861B2 (en) * 2004-05-28 2008-05-27 Quickturn Design Systems, Inc. Dynamic programming of trigger conditions in hardware emulation systems
US7571086B2 (en) 2005-11-04 2009-08-04 Springsoft Usa, Inc. Incremental circuit re-simulation system
JP4589255B2 (ja) * 2006-03-13 2010-12-01 富士通株式会社 ハードウェア/ソフトウェア協調検証装置
JP2008226083A (ja) 2007-03-15 2008-09-25 Nec Electronics Corp オンチップ・デバッグ・エミュレータおよびデバッグ方法並びにマイクロコンピュータ
US20090248390A1 (en) * 2008-03-31 2009-10-01 Eric Durand Trace debugging in a hardware emulation environment
US8706467B2 (en) 2008-04-02 2014-04-22 Synopsys, Inc. Compact circuit-simulation output
US20090259457A1 (en) 2008-04-14 2009-10-15 Mentor Graphics Corporaton Trace Routing Network
US8121825B2 (en) * 2008-04-30 2012-02-21 Synopsys, Inc. Method and apparatus for executing a hardware simulation and verification solution
US8504344B2 (en) * 2008-09-30 2013-08-06 Cadence Design Systems, Inc. Interface between a verification environment and a hardware acceleration engine
US10423740B2 (en) 2009-04-29 2019-09-24 Synopsys, Inc. Logic simulation and/or emulation which follows hardware semantics
US9015026B2 (en) 2009-06-12 2015-04-21 Cadence Design Systems, Inc. System and method incorporating an arithmetic logic unit for emulation
CN101996262B (zh) * 2009-08-12 2012-07-25 上海华虹集成电路有限责任公司 非接触式智能卡通用数字验证平台
US8738350B2 (en) * 2010-03-04 2014-05-27 Synopsys, Inc. Mixed concurrent and serial logic simulation of hardware designs
US8751998B2 (en) * 2011-07-01 2014-06-10 Altera Corporation Method and system for partial reconfiguration simulation
CN102521473B (zh) * 2012-01-06 2014-04-16 江苏省电力公司电力科学研究院 基于DIgSILENT的并网型光伏仿真发电***
US8982936B2 (en) * 2012-04-10 2015-03-17 Insight Scientific International (Shanghai) Ltd. Method and apparatus for simultaneous RF testing of multiple devices in specific frequency bands
US8739091B1 (en) 2012-11-19 2014-05-27 International Business Machines Corporation Techniques for segmenting of hardware trace and verification of individual trace segments
CN103927219A (zh) * 2014-05-04 2014-07-16 南京大学 可重构专用处理器核的周期精确的仿真模型及其硬件架构
US9959375B2 (en) * 2014-10-06 2018-05-01 Synopsys, Inc. Efficient emulation and logic analysis

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11169895B2 (en) 2020-01-27 2021-11-09 International Business Machines Corporation Emulation latch to capture state
US11244096B2 (en) 2020-04-29 2022-02-08 International Business Machines Corporation Simulating operation of an electronic device tracing using port mirroring

Also Published As

Publication number Publication date
CN107533473B (zh) 2021-03-02
US9852244B2 (en) 2017-12-26
CN107533473A (zh) 2018-01-02
WO2016178724A2 (en) 2016-11-10
EP3292467A2 (en) 2018-03-14
EP3292467A4 (en) 2018-12-26
WO2016178724A3 (en) 2016-12-15
JP2018524652A (ja) 2018-08-30
US20160328499A1 (en) 2016-11-10
CN112905298A (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
JP6600011B2 (ja) エミュレーションのための効率的波形生成
US9959376B2 (en) Isolated debugging in an FPGA based emulation environment
US9286424B1 (en) Efficient waveform generation for emulation
JP6527226B2 (ja) 効率的な電力解析
US10180850B1 (en) Emulating applications that use hardware acceleration
US9959375B2 (en) Efficient emulation and logic analysis
US20110271244A1 (en) Enhanced Analysis of Array-Based Netlists via Reparameterization
US9910944B2 (en) X-propagation in emulation using efficient memory
US10331825B2 (en) Waveform based reconstruction for emulation
US9959381B2 (en) Placing and routing debugging logic
US9659118B2 (en) X-propagation in emulation
US9684755B2 (en) Isolation of IP units during emulation of a system on a chip
El-Moursy et al. Efficient embedded SoC hardware/software codesign using virtual platform
US11501046B2 (en) Pre-silicon chip model of extracted workload inner loop instruction traces
US10606971B2 (en) Testing netlists based on singular independent signals
US9608871B1 (en) Intellectual property cores with traffic scenario data
Wicaksana et al. A scalable and configurable Multiprocessor System-on-Chip (MPSoC) virtual platform for hardware and software co-design and co-verification
US20230267253A1 (en) Automated synthesis of virtual system-on-chip environments
TWI595417B (zh) 仿真中之x傳播
Wicaksana Lotus-G: The PVT TLM Virtual Platform for Early RUMPS401 Software Development
Kumar et al. ADEPT: A Unified Environment for End-to-End System Design

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171025

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190816

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191003

R150 Certificate of patent or registration of utility model

Ref document number: 6600011

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250