JP2004227571A - ハードウェアエミュレータのためのメモリリワインド及び再構築 - Google Patents

ハードウェアエミュレータのためのメモリリワインド及び再構築 Download PDF

Info

Publication number
JP2004227571A
JP2004227571A JP2004006505A JP2004006505A JP2004227571A JP 2004227571 A JP2004227571 A JP 2004227571A JP 2004006505 A JP2004006505 A JP 2004006505A JP 2004006505 A JP2004006505 A JP 2004006505A JP 2004227571 A JP2004227571 A JP 2004227571A
Authority
JP
Japan
Prior art keywords
data
address
verification system
ram
input
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
JP2004006505A
Other languages
English (en)
Other versions
JP4439926B2 (ja
Inventor
Platon Beletsky
ベレツキー,プラトン
Alon Kfir
クフィル,アロン
Tsair-Chin Lin
リン,ツァーチン
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.)
Quickturn Design Systems Inc
Original Assignee
Quickturn Design Systems 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 Quickturn Design Systems Inc filed Critical Quickturn Design Systems Inc
Publication of JP2004227571A publication Critical patent/JP2004227571A/ja
Application granted granted Critical
Publication of JP4439926B2 publication Critical patent/JP4439926B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】 ランダムアクセスメモリを有する回路設計をデバッグするための方法及び装置を提供する。
【解決手段】 回路設計は、ハードウェア論理エミュレータによりエミュレートされる。エミュレータによってエミュレートされるRAMは、以前の状態にリワインドされ、その後、再生される。また、エミュレータによってエミュレートされるRAMは、RAMがトレースウィンドウ中のいくつかのポイントにおいて保持されている状態に再構築される。
【選択図】 図1

Description

本発明の分野は、一般的には、集積回路及び電気システムの設計の検証に用いられるハードウェア論理エミュレーションシステムに関し、より詳しくは、任意のチェックポイントから過去の時点までのデジタル回路設計部分を形成する記憶回路に蓄積されているデータを再積するための方法及び装置に関する。
関連する出願
2003年1月23日に出願された米国仮出願第60/442176号の内容は、その全てが参照として本明細書に組み込まれる。
ハードウェア論理エミュレーションシステムは、ユーザ設計を多くのプログラマブル集積回路内に配設する周知の装置である。このような論理エミュレーションシステムは、ケイデンス・デザイン・システムズ・インコーポレイテッド(アメリカ合衆国、カリフォルニア州、サンノゼ)等の多くの販売会社から販売されている。
典型的なエミュレーションシステムは、プログラム可能に相互接続されるプログラマブル論理チップあるいはプロセッサチップを用いている。プログラマブル論理チップ(例えば、フィールドプログラマブルゲートアレイ(field programmable gate array)、すなわちFPGA)ベースのエミュレーションシステム(FPGA based emulation system)では、ユーザ設計(以下では、“検証対象である設計(design under verification)”、すなわち“DUV”という)に含まれている論理は、DUV内に設けられた論理がプログラマブル論理装置内で実際に作動するように、論理チップ内にプログラムされる。プロセッサベースのエミュレーションシステム(processor-based emulation system)では、ユーザ設計は、設計の出力を計算することによって、ユーザ設計の機能がプロセッサ内に生成されて見えるように処理される。論理自身は、プロセッサベースのエミュレーションシステム内に配設されない。すなわち、DUVは、プロセッサ内で実際に動作する形式をとらない。
プログラマブル論理装置を用いるハードウェア論理エミュレーションシステムは、米国特許第5109353号、第5036473号、第5475830号及び第5960191号等に示されている。米国特許第5109353号、第5036473号、第5475830号及び第5960191号は、参照として本明細書に組み込まれる。プロセッサチップを用いるハードウェア論理エミュレーションシステムは、米国特許第5551013号、第6035117号及び第6051030号等に示されている。米国特許第5551013号、第6035117号及び第6051030号は、参照として本明細書に組み込まれる。
DUVは、通常、設計のネットリスト記述(netlist description)の形式で提供される。ネットリストは、ハードウェア記述言語を含む多くのソースから得られる。ネットリスト記述(当業者は、“ネットリスト”と呼んでいる)は、回路の構成要素及び構成要素間の電気的相互接続の記述である。構成要素は、結合論理(例えば、ゲート)やシーケンシャル論理(例えば、フリップフロップやラッチ)等の、論理回路を実装するのに必要な全ての回路要素を含む。
ケイデンス・デザイン・システムズ・インコーポレイテッドによって製造、販売されている従来のエミュレーションシステムでは、ネットリストは、エミュレーションシステムによって使用可能な形式にコンパイルされる。FPGAベースのエミュレータでは、DUVは、論理ゲート(シーケンシャル及び結合の両方)がFPGAに実装可能な形式にコンパイルされる。プロセッサベースのエミュレーションシステムでは、DUVは、プロセッサチップ上のプロセッサによって実行される一連のステートメント(statement)にコンパイルされる。論理は、プロセッサ内に実装されない。
ハードウェア論理エミュレーションシステムの主な使用の1つは、実際にシリコン内に組み付けられたユーザ設計が機能エラーを含まないように、DUVをデバッグすることである。回路設計者は、代わりとなるシミュレーションがエミュレーションに比べて非常に遅いため、これまで、このようなデバッグを実行するためにエミュレータを用いてきた。
シミュレーションは、ソフトウェアベースの接近法である。シミュレーションでは、設計及びテストベンチ(testbench)が、マシン実行可能モデルにコンパイルされ、ワークステーションあるいはパソコン内で実行される。エミュレータ内のテストベンチは、しばしば、DUVと直接に相互作用するターゲットボード(target board)として表される。
DUVをデバッグするために、設計者は、数時間に渡って設計信号の活動を調査する必要がある。その理由は、デジタル回路は、1あるいは複数のクロックによって駆動され、また、エラーは、設計、すなわち、DUVを駆動するクロックの種々の移行時に発生するからである。
設計者は、数時間にわたって設計信号を評価する時、少なくとも2つの問題点に遭遇する。1つの問題点は、どの信号を観察するか(すなわち、DUV内のどのモードを観察するか)である。第2の問題点は、何時(すなわち、トリガと呼ばれる、どのクロックの移動時及び/またはどのイベント合流時)信号を観察するかである。これらの2つの問題点は、シミュレーション及びエミュレーション手段に対する重大な要求を強いる。第1は、回路設計が、典型的には非常に大きい(例えば、数百万個のゲート)ことである。第2は、設計者が観察する信号の数が、比例して大きいことである。第3は、設計信号を観察する必要があるタイムウィンドウ(時間窓)(time window)(以下では、“トレースウィンドウ(trace window)“と呼ぶ)は、シミュレーションあるいはエミュレーションの前に予言困難であるため、設計をデバッグする設計者は、できるだけ大きいトレースウィンドウを選ぶことである。
これらの問題点を扱うために、回路設計者は、種々の接近法を用いてきた。
1つの接近法は、DUVロックステップ(lockstep)をシミュレータ内で実行させることである。この接近法では、シミュレーションの実行は、相互作用動作で設計者によって制御される。設計者は、シミュレーションの実行、停止及び信号の観察、続行及び処理の繰り返しを行うことができる。シミュレーションが停止すると、設計者は、設計内の任意の信号のステート(state)を検査することができる。
第2の接近法は、信号ダンプとともにシミュレーションを自由に実行させることである。この“フリーランニング”接近法では、シミュレーションは、ユーザの介在なしに自由に実行され、シミュレーション中に観察される信号は、シミュレーション中にダンプ(damp)される。ダンプされる信号は、シミュレーションの開始前に特定されなければならないということを知ることが重要である。これらのシミュレーション接近法は、有効ではあるが、非常に遅い。
第3の接近法は、トレースウィンドウの固定サイズに対して十分に視認可能であるエミュレータを用いて、DUVをエミュレートすることである。この接近法では、エミュレータは、自由に実行し、全視野に対して視認可能であるエミュレータ内のDUVによって生成された信号は、任意の期間蓄積される。
最後の接近法は、制限された視認性を有するエミュレータを用いてDUVをエミュレートし、再生することである。この接近法では、制限された情報が、エミュレーション中に蓄積される。設計者は、分析のための十分な情報を入手するために、エミュレーションを数回実行させる必要がある。
設計検証産業は、DUV内に視認性を提供するために、数年に渡って努力をしてきた。従来のエミュレーションシステムは、この分野にいくつかの機能性を提供する。最も近い従来のエミュレータは、DUV内の種々のノードにおいて信号が観察できるように、種々のノードを“調査”するための種々の異なる方法を提供する。例えば、Liuらによる米国特許第5425036号には、多くのEPGA内の“リードバック(readback)”機能を用いて信号を調査可能であることが開示されている。Barbierらによる米国特許5777489号では、FPGAは、全てのステートエレメント(state element)をFPGAにトレース(trace)することを可能とする、FPGAに組み付けられたスキャンチェーン(scan chain)を有している。また、ステートエレメントの選択されたサブセットのトレースを可能とするように、スキャンチェーンをFPGA内にプログラムする他の方法が、米国特許第5943490号に開示されている。Wangらによる米国特許第6446249号では、各論理要素(DUV内に論理を実装する)は、その内容が調査ストリーム(probe stream)で読み出される調査シーケンスメモリ(probe sequence memory)によってランダムにアクセス可能である、対応する調査フリップフロップ(probe flip-flop)を有している。
従来のシステムの方法は、DUVによって生成される種々の信号の値を捕獲するために用いられているが、メモリを含むDUVの部分に対するデバッグ設備を提供する従来のシステムは存在しない。事実、この問題を考慮している従来のエミュレータは、このようなメモリを“ブラックボックス”として扱っている。このことは、従来のエミュレータは、DUV内のメモリを単純に無視し、また、ブラックボックスの出力信号の捕獲を単に許容していることを意味している。例えば、Marantzらによる米国特許第6061511号(特に、6欄、21−30行)を参照。
米国特許第5425036号 米国特許第5777489号 米国特許第5943490号 米国特許第6446249号 米国特許第6061511号
メモリは、DUVの重要な部分であるため、エミュレータが、DUV内の任意のメモリ位置に蓄積されているデータの全てを再蓄積することを可能とするデバッグ方法が必要である。
また、期間的なスナップショット(snapshot)を蓄積するために検証処理を中断させあるいはスローダウンさせる必要がないデバッグ環境が必要である。
本発明は、エミュレートされる回路設計内のメモリを再蓄積することによって、メモリに蓄積されているデータを視認可能とする、新規な方法を提供する。
発明の要約
本発明の種々の実施の形態は、エミュレートされる回路設計内のメモリを再蓄積し、それによって、メモリ内に蓄積されているデータを視認可能とする、新規な方法を提供する。
これらの実施の形態は、メモリが、予め設定されている時間間隔内の過去の任意のチェックポイント(すなわち、トリガが発生するポイント)に対して再蓄積されることを許容する。従来技術と異なり、各設計メモリに対する全ての書込動作が捕獲されるので、種々の実施の形態がこれを実行可能である。好ましい実施の形態では、書込動作は、循環バッファ(circular buffer)内で捕獲される。設計内のチェックポイントが発生する時、メモリの再生は、捕獲された(すなわち、蓄積された)書込動作をDUVに対して逆の順序で(必要であれば、クロックサイクル内で)適用することによって、実行される。全ての書込動作が再生された後、各設計メモリの内容は、書込動作を捕獲した循環バッファのボトム(bottom)(あるいは、第1エントリー)に対応する時点に蓄積していたものを保持するために再蓄積される。メモリを再蓄積するための時間間隔の長さは、前記循環バッファのデプス(深さ)(depth)によって決定される。
従来技術と比較すると、本発明の種々の実施の形態は、フリップフロップや結合信号等内の視認性を許容する。DUVの全てのメモリは、トレースウィンドウの全期間にわたって見ることができる。また、回路設計者が望むポイントにおいて再生を開始することもできる。
1つのアスペクトでは、回路設計が所望の機能を実行することを検証するための方法が開示されている。回路設計は、ランダムアクセスメモリ(RAM)により構成されている。RAMは、少なくとも1つの書込ポートとデータを蓄積する複数のメモリ位置を有している。複数のメモリ位置のそれぞれは、アドレスを有している。
本方法は、ハードウェア論理エミュレーションシステム内の回路設計をエミュレーションする。本方法は、RAM内の複数のメモリ位置の中の選択された1つにデータを書き込む直前に、RAM内の複数のメモリ位置の中の選択された1つに蓄積されているデータを読み出す。また、本方法は、RAM内の複数のメモリ位置の中の選択された1つから読み出されたデータを、バッファ内の選択されたメモリ位置に蓄積する。本方法は、チェックポイントの後で、バッファ内の選択されたメモリ位置に蓄積されているデータを、RAM内の複数のメモリ位置の中の選択された1つに移動させる。また、本方法は、移動ステップの後で、RAM内の複数のメモリ位置の中の選択された1つに蓄積されているデータを観察する。
他のアスペクトでは、RAM内の複数のメモリ位置の中の選択された1つに蓄積されているデータを読み出すステップで、RAM内の少なくとも1つの書込ポートのそれぞれに対して、対応するシャドウ読出ポート(shadow read port)を回路設計に挿入し、また、RAM内の複数のメモリ位置の中の選択された1つに蓄積されているデータが、対応するシャドウ読出ポートによって読み出されるように、対応するシャドウ読出ポートによって読出動作を実行する。
他のアスペクトでは、蓄積ステップで、更に、バッファに蓄積されているデータがラストイン−ファーストアウト(last in first out)方法で出力されるように、バッファ内の選択されたメモリ位置を配列する。
また、他のアスペクトでは、移動ステップで、更に、バッファ内の選択されたメモリ位置のそれぞれがラストイン−ファーストアウト方法で読み出されるように、バッファに対するアドレス入力をデクリメントする。また、本方法は、バッファ内の選択されたメモリ位置のそれぞれからのデータを、RAMの少なくとも1つの書込ポートの1つに配置する。また、本方法は、RAMの少なくとも1つの書込ポートの1つに配置されている、バッファ内の選択されたメモリ位置のそれぞれからのデータを、RAM内の複数のメモリ位置の中の選択された1つに書き込む。
他のアスペクトでは、観察ステップで、書込ステップの後で、RAM内のメモリ位置のそれぞれを観察する。
他のアスペクトでは、蓄積ステップで、バッファに蓄積されているデータがファーストイン−ファーストアウト方法で蓄積されるように、バッファ内の選択されたメモリ位置を配列する。
更に他のアスペクトでは、移動ステップで、更に、バッファ内の選択されたメモリ位置のそれぞれがファーストイン−ファーストアウト(first in first out)方法で読み出されるように、バッファに対するアドレス入力をインクリメントする。また、本方法は、バッファ内の選択されたメモリ位置のそれぞれからのデータを、RAMの少なくとも1つの書込ポートの1つに配置する。また、本方法は、RAMの少なくとも1つの書込ポートの1つに配置されている、バッファ内の選択されたメモリ位置のそれぞれからのデータを、RAM内の複数のメモリ位置の中の選択された1つに書き込むことによって、RAM内の各メモリ位置を、予め定められている時間に各メモリ位置に蓄積されているステートに再蓄積する。
他のアスペクトでは、回路設計が所望の機能を実行することを検証するための装置が開示されている。回路設計は、ランダムアクセスメモリ(RAM)により構成されている。RAMは、データ入力とアドレス入力を有する書込ポート、読出ポート及びデータを蓄積する複数のメモリ位置を有している。複数のメモリ位置のそれぞれは、アドレスを有している。書込ポートは、データ入力及びアドレス入力を有している。
本装置は、書込ポートに対応するシャドウ読出ポートを有している。シャドウ読出ポートは、書込ポートのアドレス入力からのアドレスを受信するアドレス入力と、データ出力を有している。また、本装置は、バッファを備えている。バッファは、RAMのアドレス入力に接続されている。また、バッファは、シャドウ読出ポートのデータ出力に接続されている。バッファは、アドレス出力とデータ出力を有している。また、本装置は、アドレス入力を書込ポートに送る第1マルチプレクサを備えている。第1マルチプレクサは、バッファのアドレス出力に接続されている第1入力を有している。第1マルチプレクサは、RAMのアドレス入力に接続されている第2入力を有している。本装置は、データ入力を書込ポートに送る第2マルチプレクサを備えている。第2マルチプレクサは、バッファのデータ出力に接続されている第1入力を有している。第2マルチプレクサは、RAMのデータ入力に接続されている第2入力を有している。第1マルチプレクサ及び第2マルチプレクサは、それぞれ、第1モードと第2モードの間を切り替える選択入力を有している。
他のアスペクトでは、バッファは、ステートマシン(state machine)に接続されている。
他のアスペクトでは、第1モードは、第1マルチプレクサによって、RAMのアドレス入力からの信号を書込ポートのアドレス入力に送ることを可能とし、第2マルチプレクサによって、RAMのデータ入力からの信号を書込ポートのデータ入力に送ることを可能とする。
他のアスペクトでは、第2モードは、第1マルチプレクサによって、バッファのアドレス出力からの信号を書込ポートのアドレス入力に送ることを可能とし、第2マルチプレクサによって、バッファのデータ出力からの信号を書込ポートのデータ入力に送ることを可能とする。
他のアスペクトでは、装置は、バッファに接続されているステートマシンを備えている。
他のアスペクトでは、ステートマシンは、装置が第2モードにある時に、バッファに蓄積されているデータ及びアドレスの、バッファのアドレス出力及びデータ出力からの読み出しを制御する。
他のアスペクトでは、回路設計が所望の機能を実行することを検証する装置が開示されている。回路設計は、第1書込ポートと第2書込ポートを有するRAMにより構成されている。第1書込ポートは、第1データ入力と第1アドレス入力を有している。第2書込ポートは、第2データ入力と第2アドレス入力を有している。また、RAMは、第1設計データ入力、第1設計アドレス入力、第2設計データ入力、第2設計アドレス入力、データを蓄積する複数のメモリ位置を有している。複数のメモリ位置のそれぞれは、アドレスを有している。
本装置は、第1書込ポートに対応する第1シャドウ読出ポートを有している。第1シャドウ読出ポートは、第1設計アドレス入力からのアドレスを受信するアドレス入力を有している。第1シャドウ読出ポートは、更に、データ出力を有している。また、本装置は、第2書込ポートに対応する第2シャドウ読出ポートを有している。第2シャドウ読出ポートは、第2設計アドレス入力からのアドレスを受信するアドレス入力を有している。第2シャドウ読出ポートは、更に、データ出力を有している。
また、第1設計アドレス入力と第1シャドウ読出ポートのデータ出力に接続されている第1バッファが設けられている。第1バッファは、アドレス出力とデータ出力を有している。本装置は、更に、第2バッファを備えている。第2バッファは、第2設計アドレス入力に接続されている。また、第2バッファは、第2シャドウ読出ポートのデータ出力に接続されている。第2バッファは、アドレス出力とデータ出力を有している。
第1マルチプレクサは、第1アドレス入力を第1書込ポートに送る。第1マルチプレクサは、第2バッファのアドレス出力に接続されている第1入力を有している。第1マルチプレクサは、第1設計アドレス入力に接続されている第2入力を有している。第2マルチプレクサは、第1データ入力を第1書込ポートに送る。第2マルチプレクサは、第2バッファのデータ出力に接続されている第1入力を有している。第2マルチプレクサは、第1設計データ入力に接続されている第2入力を有している。第3マルチプレクサは、第1アドレス入力を第2書込ポートに送る。第3マルチプレクサは、第1バッファのアドレス出力に接続されている第1入力を有している。第3マルチプレクサは、第2設計アドレス入力に接続されている第2入力を有している。第4マルチプレクサは、第1データ入力を第2書込ポートに送る。第4マルチプレクサは、第1バッファのデータ出力に接続されている第1入力を有している。第4マルチプレクサは、第2設計データ入力に接続されている第2入力を有している。第1マルチプレクサ、第2マルチプレクサ、第3マルチプレクサ及び第4マルチプレクサは、それぞれ、第1モードと第2モードの間を切り替える選択入力を有している。
他のアスペクトでは、回路設計がデバッグ可能となるように、RAMにより構成される回路設計を処理するための方法が開示されている。RAMは、1つの書込ポートとデータを蓄積する複数のメモリ位置を有している。複数のメモリ位置のそれぞれは、アドレスを有している。
本方法は、シャドウ読出ポートを、書込ポートに対応する回路設計に挿入する。シャドウ読出ポートは、集積回路設計からのアドレスを受信するアドレス入力を有している。シャドウ読出ポートは、更に、データ出力を有している。また、本方法は、データを、選択されたメモリアドレスに書込ポートによって書き込む前に、選択されたメモリアドレスに蓄積されているデータをシャドウ読出ポートが読み出すように計画する。また、本方法は、シャドウ読出ポートのデータ出力をバッファに相互接続する。バッファは、計画ステップで読み出されたデータを、選択されたメモリ位置に蓄積する。バッファは、データ出力とアドレス出力を有している。
また、本方法は、第1マルチプレクサがアドレス入力を書込ポートに送るように、第1マルチプレクサを回路設計に挿入する。第1マルチプレクサは、回路設計からのアドレス入力に接続されている第1入力を有している。また、本方法は、第2マルチプレクサがデータ入力を書込ポートに送るように、第2マルチプレクサを回路設計に挿入する。第2マルチプレクサは、回路設計からのデータ入力に接続されている第1入力を有している。また、本方法は、バッファのアドレス出力を第1マルチプレクサの第2入力に相互接続する。本方法は、チェックポイントの後で、バッファ内の選択されたメモリ位置に蓄積されているデータを、RAM内の複数のメモリ位置の中の選択された1つに移動させる。そして、本発明は、移動ステップの後で、RAM内の複数のメモリ位置の中の選択された1つに蓄積されているデータを観察する。
他のアスペクトでは、移動ステップで、更に、RAM内の複数のメモリ位置の中の選択された1つのそれぞれが、チェックポイントの前に保持されているステートにリワインド(rewind)されるように、バッファ内の選択されたメモリ位置に蓄積されているデータをラストイン−ファーストアウトの順序で送る。
他のアスペクトでは、観察ステップで、更に、RAM内の複数のメモリ位置の中の選択された1つのそれぞれが、チェックポイントの前に保持されているステートに再蓄積されるように、バッファ内の選択されたメモリ位置に蓄積されているデータをファーストイン−ラストアウト(first in last out)の順序で送る。
更に他のアスペクトでは、ランダムアクセスメモリ(RAM)により構成されている回路設計が所望の機能を実行することを、機能検証システムを用いることによって検証するための方法が開示されている。RAMは、少なくとも1つの書込ポートと複数のメモリ位置を有している。
本方法は、回路設計を機能検証システム内で実行させる。データをRAM内に書き込む前に、データを読み出す。また、本方法は、データをバッファに蓄積する。チェックポイントでは、バッファに蓄積されているデータは、データがバッファに書き込まれた順序と逆の順序で読み出される。データがバッファから読み出されると、データは、RAMに書き込まれる。
他のアスペクトでは、機能検証システムは、ハードウェア論理検証システムにより構成されている。
更に他のアスペクトでは、ハードウェア論理検証システムは、プロセッサベースのエミュレーションシステムにより構成されている。また、ハードウェア論理検証システムは、フィールドプログラマブルゲートアレイ(FPGA)により構成されている。
更に他のアスペクトでは、機能検証システムは、ソフトウェアエミュレータにより構成されている。
更に他のアスペクトでは、回路設計が所望の機能を実行することを検証するための方法が開示されている。回路設計は、ランダムアクセスメモリ(RAM)により構成されている。RAMは、少なくとも1つの書込ポートと複数のメモリ位置を有している。
本方法は、回路設計を第1機能検証システム内で実行させる。データをRAM内に書き込む前に、このデータは読み出される。データは、第1機能検証システムから外部のシステムに送られる。チェックポイントでは、外部システム内のデータは、あらかじめ定められた時点におけるRAMの複数のメモリ位置に対応する、再構築(reconstruct)されたメモリを生成するために再構築される。再構築ステップでは、以前に蓄積されたデータをラストイン−ファーストアウトの順序で読み出し、以前に蓄積されたデータを外部のシステム内のメモリに書き込むことによって、再構築されたメモリを生成する。
さらに他のアスペクトでは、データを再構築した後、再構築されたメモリは、第1機能検証システムに送られる。再構築されたメモリは、RAMに書き込まれる。
他のアスペクトでは、データを再構築した後、再構築されたメモリは、第2機能検証システムに送られる。第1機能検証システムは、ハードウェア論理検証システムにより構成可能であり、第2機能検証システムは、ソフトウェアシミュレータにより構成可能である。
他のアスペクトでは、回路設計が所望の機能を実行することを、機能検証システムを用いることによって検証するための方法が開示されている。回路設計は、少なくとも1つの書込ポートと複数のメモリ位置を有するランダムアクセスメモリ(RAM)により構成されている。
本方法は、回路設計を機能検証システム内で実行させ、全ての書込動作をバッファ内に蓄える。書込動作のそれぞれは、アドレスと当該アドレスに蓄積されるデータを有している。アドレスと当該アドレスに蓄積されるデータは、書込動作が実行された順序に対応する時間的な順序で蓄積される。書込動作中にデータが変化したアドレスを少なくとも有する、RAMのイメージ(image)が、バッファに蓄積される書込動作のそれぞれを再生することによって再構築される。
他のアスペクトでは、機能検証システムは、ハードウェア論理検証システムにより構成可能である。ハードウェア論理検証システムは、プロセッサベースのエミュレーションシステムであってもよい。また、ハードウェア論理検証システムは、フィールドプログラマブルゲートアレイ(FPGA)ベースのエミュレーションシステムであってもよい。また、機能検証システムは、ソフトウェアシミュレータにより構成可能である。
他のアスペクトでは、回路設計が所望の機能を実行することを、第1機能検証システムを用いることによって検証するための方法が開示されている。回路設計は、少なくとも1つの書込ポートと複数のメモリ位置を有するランダムアクセスメモリ(RAM)によって構成されている。
本方法は、回路設計を第1機能検証システム内で実行させ、全ての書込動作をバッファに蓄える。書込動作のそれぞれは、アドレスと当該アドレスに蓄積されるデータを有している。アドレスと当該アドレスに蓄積されるデータは、前記書込動作が実行された順序に対応する時間的な順序で蓄積される。書込動作中にデータが変化したアドレスを少なくとも有する、RAMのイメージが、バッファ内に蓄積される書込動作のそれぞれを再生することによって再構築される。イメージは、第2機能検証システムに書き込まれる。
さらに他のアスペクトでは、第1機能検証システムは、ハードウェア論理検証システムにより構成可能である。ハードウェア論理検証システムは、プロセッサベースのエミュレーションシステムであってもよい。ハードウェア論理検証システムは、フィールドプログラマブルゲートアレイ(FPGA)ベースのエミュレーションシステムであってもよい。また、第1機能検証システムは、ソフトウェアシミュレータにより構成可能である。
他のアスペクトでは、第2機能検証システムは、ソフトウェアシミュレータにより構成可能である。また、第2機能検証システムは、ハードウェア論理検証システムにより構成可能である。
要素の配設及び結合の種々の新規な詳細を含む、本発明の前記の特徴及び他の好ましい特徴は、添付の図面を参照してより詳しく説明され、また、請求項に記載されている。本発明を実施する特別の方法及び回路は、本発明を説明するためにのみ示されており、本発明を限定するために示されているものでないことが理解できる。当業者であれば、本発明の原理及び特徴が、本発明の範囲から離脱することなく、種々の及び多くの実施の形態で実現可能であることを理解することができる。
本発明の、現時点で好ましい装置及び方法を、以下に説明する。
1つの実施の形態は、3つの主要な構成要素を有している。これらの構成要素は、“捕獲(capture)”、“リワインド(rewind)”または“再構築(reconstruction)”、“再生(replay)”である。
捕獲は、DUVがエミュレータ内で実行されている間に実行され、本発明の種々の実施の形態では、メモリ書込動作の捕獲として参照されている。以下に示されているように、メモリ書込動作データは、循環バッファ内に捕獲される。この循環バッファのデプスは、リワインドあるいは再構築の時間間隔の長さ、すなわち、トレースウィンドウを決定する。
先ず、種々の実施の形態に関する以下の説明の大部分は、論理ゲートと関連付けてなされていることに注意する。
プロセッサベースのエミュレーションシステムでは、本方法は、プロセッサによって実行される、論理のブーラン表現へのコンパイルによって、実施される。エミュレーションシステムのユーザにとって、プロセッサベースのエミュレータの出力は、FPGAベースのエミュレータの出力と同じである。しかしながら、エミュレータの出力が生成される方法は、異なっている。FPGAベースのエミュレーションシステムでは、以下で言及する論理は、論理要素(構成可能な論理ブロック(configurable logic block)、すなわちCLBと呼ばれることもある)によって実行される。以下に開示されている種々の実施の形態は、両タイプのエミュレータに適用可能である。
メモリ書込動作が捕獲される方法を、図1を参照して説明する。
前述したように、今日では、ほとんど全てのDUVは、メモリ回路20を含んでいる。典型的なメモリ回路20は、複数のメモリ位置(図示していない)を有するように配列される。各メモリ位置は、所定数のビットを蓄積可能なアドレスを有している。
メモリ回路は、典型的には、メモリ回路が有しているメモリ位置の数(メモリ回路の“デプス”と呼ばれる)と、各位置に蓄積可能なビットの数(メモリ回路の“幅(width)”と呼ばれる)によって区分けされる。したがって、各位置が8ビットである32000位置を有するメモリ回路は、“32000×8”(すなわち、32K×8)メモリ回路と呼ばれる。メモリ回路が複数のポートを有している場合には、メモリ回路は、更に、書込ポートの数と読出ポートの数によって定義される。DUV内に設けられる典型的なマルチポートメモリでは、データは、複数の書込ポートを介してメモリ位置に書き込まれ、また、複数の読出ポートを介してメモリ位置から読み出される。
メモリ書込動作を捕獲するために、DUVのネットリストが修正される。DUV内の各メモリ内の全ての書込ポート20に対して、シャドウ読出ポート30が生成され、DUV内に挿入される。シャドウ読出ポート30の生成及びDUV内への挿入は、他の時間に実行可能であるが、コンパイル中に実行するのが好ましい。シャドウ読出ポート30は、アドレス入力32とデータ出力38を有している。
書込ポート20は、DUVのメモリに書き込まれるデータを受信するデータ入力24と、データが書き込まれる特別のメモリ位置を指示するアドレス入力22を備えている。アドレスデータは、アドレスネット34によってアドレスポート22に供給される。書込データは、ネット36によってデータ入力24に供給される。
さらに、循環バッファ40が用いられる。オンチップメモリ(on-chip memory)を有するプロセッサモジュールあるいはFPGAは、その上に循環バッファを含むように設計可能であるが、循環バッファ40は、ダイナミックランダムアクセスメモリ(DRAM)のような、別々のメモリチップであるのが好ましい。
プロセッサベースのエミュレータでは、DUV内の各メモリ書込動作は、シャドウ読出ポート30を介する実行サイクル内の全てのステップにおいて捕獲される。実行サイクルは、現時点で好ましいプロセッサベースのエミュレータ内では、以下のように発生する。
エミュレーション中、プロセッサを含む各モジュール(例えば、集積回路)上のシーケンサは、エミュレーショサポート設備によって停止されるまで、プログラムされたステップ数だけインクリメントし、そして繰り返す。シーケンサの1回転は、エミュレートされる設計の1クロックサイクルに対応する。シーケンサは、エミュレートされるパスクロックサイクル(path clock cycle)を、各ステップが、エミュレートされる設計の1つの論理ゲートの評価に対応する複数(例えば、256)のステップに効果的に分割する。
FPGAベースのエミュレータ内では、何も実行されない。
プロセッサベースのシステムと比べると、FPGAベースのシステムは、実行サイクルを定めるために用いられる1つの中心クロックを用いていない。FPGAシステムは、通常、非同期であるクロックのセットを受け取る。このことは、各クロックは、通常、他のクロックから生成されないことを意味する。いくつかのFPGAシステムでは、どの信号がクロック信号であるかを知ることさえ困難である。いずれかの入力信号が、クロックとして動作する。
また、図1に示すように、DUVは、DUV内のメモリのアドレスポート22に通常接続されるDUV内のアドレスネット34が、シャドウ読出ポート30のアドレスポート32と循環バッファ40のデータ入力42に接続されるように修正される。同様に、シャドウ読出ポート30のデータピン38は、メモリから読み出されたデータを、データネット35に出力する。このデータは、循環バッファ40に入力される。後述するように、循環バッファ40は、メモリリワインドのために用いられる。
これらの修正は、アドレスネット34及びデータネット35が、ブロートオフチップ(brought off chip)であり、別々のメモリチップであることが好ましい循環バッファ40に接続されるようなものである。
DUV内のメモリアクセスは決定論的であることが好ましいことに注意する。これにより、エミュレータがDUVを実行させている間、各シャドウ読出ポート30の読出動作は、対応する書込ポート24を介するメモリの書込動作より前に実行されるように計画される。この理由は、DUVがデータをメモリ20内のアドレスに書き込んでいる時、メモリ20の読出ポートは、書き込みが発生する前に、そのアドレスを“読み出す”ためにセットされるからである。
このシャドウ読出動作の結果は、循環バッファ40に蓄積される(そのアドレスに蓄積されているデータとアドレス自身の両方が蓄積される)。読出動作の結果は、循環バッファ40に蓄積される。
これにより、循環バッファ40は、ユーザ設計内のメモリの内容(各メモリ位置に対して、アドレスと一緒に蓄積されるデータ)を保持する。書込アドレスネット34とシャドウ読出ポート30の出力ピン38が、同期してこの情報を循環バッファ40に書き込むため、これが適切に機能していることに注意する。
図1に示されているように、循環バッファ40は、アドレスピンを有している。以下に説明する概念がプロセッサベースのエミュレーションシステムに設けられる時、循環バッファ40のアドレスピンは、蓄積されるデータのアドレスを制御するステートマシン45に接続される。
このステートマシンは、各実行サイクル毎にアドレス(すなわち、各メモリ位置に対して、DUV内のメモリ20からのアドレスと一緒にデータが蓄積される位置)をインクリメントする。図1〜3を参照して以下に説明されているリワインドモードでは、ステートマシンは、各実行サイクル毎にアドレスをデクリメントする。
リワインドモードを、図2を参照して説明する。
リワインドは、最初の設計実行が、ユーザが定めたチェックポイントに到達した後に、実行される。リワインドは、トレースウィンドウ中に捕獲された全てのメモリ書込動作を再生する。勿論、いくつかの実施の形態では、書込動作の選択された数のみが再生される必要がある。リワインドを作動させるために、現時点で好ましい実施の形態では、付加的なリワインド論理がDUV内に存在する必要がある。シャドウ読出ポート30と同様に、現時点で好ましい実施の形態は、好ましくはコンパイル中に、このリワインド論理をDUV内に挿入する。
シャドウ読出ポート30をDUV内に挿入することに加えて、リワインド論理が、好ましくはコンパイル時に、DUV内に挿入される。
リワインド論理は、好ましくは、第1マルチプレクサ50と第2マルチプレクサ52により構成される。第1マルチプレクサ50は、循環バッファ40からのデータ出力である第1入力と、DUVからのアドレス信号である第2入力を有する2入力マルチプレクサであることが好ましい。第1マルチプレクサ50に対する選択入力54は、ノーマルエミュレーションモードあるいはリワインドモードのいずれかに対してセットされる信号である。また、第2マルチプレクサ52は、循環バッファからのデータ出力である第1入力と、DUVからのデータ信号である第2入力を有する2入力マルチプレクサであることが好ましい。選択入力54は、第1マルチプレクサ50と同じ、すなわち、ノーマルエミュレーションモードとリワインドモードの間を選択する信号である。
エミュレータがエミュレーションモードにある時には、第1マルチプレクサ50と第2マルチプレクサ52は、DUVからのアドレス信号と設計信号を選択する、選択入力上の信号を受信する。このことは、メモリ20が、図1に示されているように動作することを意味している。
一方、エミュレータがリワインドモードにある時には、第1マルチプレクサ50と第2マルチプレクサ52は、循環バッファ40からのアドレス信号と設計信号を選択する、選択入力上の信号を受信する。ほぼ同時に、このリワインド信号は、第1マルチプレクサ50と第2マルチプレクサ52の選択入力上に現われ、循環バッファ40を駆動するクロックは、循環バッファ40に蓄積されているデータ情報とアドレス情報が、それぞれ第1マルチプレクサ50の対応するデータ入力と第2マルチプレクサ52の対応するアドレス入力に出力されるように、デクリメントを開始する。
DUV内のメモリの動作を、図1及び図2を参照して説明する。
トレースウィンドウの間、DUVは、1あるいは複数のクロック信号の他、ターゲットシステム(target system)、テストベクタ(test vector)、シミュレーションスティムラス(simulation stimulus)からの信号等の外部信号によって作動する。エミュレートされる設計が、第1書込ポート20を介してメモリにデータを書き込む時には、データ(例えば、蓄積されるワード)は、データネット36のメモリに入力され、一方、当該ワードに対するアドレスは、アドレスネット34のメモリに入力される。データ信号は、データネット36を介してマルチプレクサ52の第2入力に入力され、アドレスは、アドレスネット34を介してマルチプレクサ50の第2入力に入力される。
トレースウィンドウの間、第1マルチプレクサ50及び第2マルチプレクサ52に対する選択入力54は、第1マルチプレクサ50及び第2マルチプレクサ52がユーザ設計からの入力を選択するようにセットされることに注意する。
メモリリワインドを可能とするために、シャドウ読出動作が各書込動作の前に計画される。シャドウ読出動作は、シャドウ読出ポート30を用い、書込ポート20を用いて書き込まれるアドレスと同じアドレスを含む。これにより、書込ポート20に送られるアドレスは、シャドウ読出ポート30にも入力される。このアドレスをシャドウ読出ポート30に送信することによって、当該アドレスに蓄積されるデータは、シャドウ読出ポートのデータ出力38を介して循環バッファ40に出力される。
メモリリワインドの実施の形態では、アドレス及びデータは、ラストイン−ファーストアウト(“LIFO”)配列で循環バッファ40に蓄積される。これにより、ユーザは、トレースウィンドウの開始位置に到達するまで、DUV内のメモリのステートをステップ順ベース(step by step basis)(1ステップは、実行サイクルの一部である)でデクリメントすることができる。前述したように、循環バッファ40のアドレスピンに接続されているステートマシン45がこれを制御する。
シャドウ読出動作が特別のメモリアドレスに対して実行された直後に、同じメモリアドレスに対する書込動作が実行される(書込動作の直前にシャドウ読出動作が実行される)。しかしながら、そのメモリアドレスに蓄積されていた以前の値は、循環バッファ40に蓄積されるため、後で再蓄積が可能である。
書込動作の間、アドレスネット34からのメモリアドレスは、マルチプレクサ50を介して、書込ポート20のアドレス入力に入力される。同様に、そのアドレスに書き込まれるデータは、ネット36を通り、マルチプレクサ52を介して、そのデータをメモリの選択されたアドレスに書き込む書込ポート20に入力される。
エミュレータは、通常、チェックポイントに達すると、リワインドモードに移行する。このようなチェックポイントは、トリガ、イベントの収集、ユーザが選択する特別の時間ポイントあるいは他の状態である。
リワインドモードに移行するために、第1マルチプレクサ50及び第2マルチプレクサ52の選択入力54が、メモリアドレスとそのアドレスに蓄積されるデータが、それぞれマルチプレクサ50及び52を介して書込ポート20に入力されるように、セットされる。選択信号が、リワインドに切り替えられると、エミュレータは、リワインドモードで動作する。
リワインドモードでは、循環バッファ40のアドレスピンに接続されているステートマシン45がデクリメントを開始する。これにより、蓄積されるDUV内のメモリの内容は、所望のポイントに到達するまで順次デクリメントされる。メモリの内容は、トレースウィンドウの開始時におけるステートまでしかリワインドできないことに注意する。これは、循環バッファが、トレースウィンドウの外部に蓄積されていたメモリ内容を蓄積しないからである。
選択入力54の値は、再生モード時に、循環バッファ40内のメモリアドレスとそのアドレスに蓄積されているデータが第1及び第2マルチプレクサ50及び52を通過するように、第1及び第2マルチプレクサ50及び52の選択入力54が設定される値であるため、書込ポート20は、循環バッファ40に蓄積されているデータを適切なアドレスに書き込む。循環バッファ40がLIFO配列を有しているため、ユーザは、実行サイクル内でステップ順に、メモリのステートをリワインド可能である。これにより、設計がトレースウィンドウを介して実行された順序と逆の順序で、設計のステートをデクリメントすることができる。
全ての設計内容(すなわち、メモリに蓄積されているデータ、ステート装置に蓄積されているデータ、DUVの主入力の値)が、ターゲット実行サイクルにおいて有していた値に再蓄積された後、エミュレータは再生モードに移行する。
ターゲット実行サイクルは、設計をデバッグするためにユーザがメモリステートの可視性を必要としている設計のエミュレーション内の時間ポイントである。例えば、特別の時間ポイントあるいはメモリの特別のステート等が可能である。
ステート装置の内容及び主入力の値を蓄積する方法は、本発明の範囲外である。
本明細書に開示されている概念を用いてマルチポートメモリを配列する方法を、図3を参照して説明する。
前述したように、本明細書に開示されている種々の実施の形態は、各書込ポートに対して、シャドウ読出ポートをDUV内に挿入することによってDUVを修正する。1以上の書込ポートを有するマルチポートメモリでは、1以上のシャドウ読出ポートが挿入される。言い換えれば、好ましい実施の形態では、ユーザ設計のメモリ内の各書込ポートに対して1つのシャドウ読出ポートが存在する。また、前述したように、種々の実施の形態は、リワインド論理を、アドレスとデータ入力を書込ポートに送るマルチプレクサにより構成されるのが好ましいDUV内に挿入する。
図3の論理図は、2つの書込ポートを有するDUVからのメモリ100の実施の形態を示す。図3の例は、単なる1例であり、本発明の種々の実施の形態は2つの書込ポートのみを有するメモリに限定されるものではない。
第1書込ポート120aは、アドレス入力とデータ入力を有している。第1書込ポート120aのアドレス入力は、マルチプレクサ150aの出力である。第1書込ポート120aのデータ入力は、マルチプレクサ152aの出力である。前述した実施の形態のように、マルチプレクサ150aは、第1入力がDUV内のメモリ内の第1書込ポートに対して書込アドレスを運ぶネットである、2つの入力を有するのが好ましい。マルチプレクサ150aへの第2入力は、第2循環バッファ140bに蓄積されるアドレスである。第2循環バッファ140bからのアドレス出力をマルチプレクサ152aの入力に配置する理由は、以下に説明する。
マルチプレクサ152aは、2つの入力を有するのが好ましい。マルチプレクサ152aへの第1入力は、DUVのメモリ内に蓄積されるデータを運ぶネットである。マルチプレクサ152aへの第2入力は、第2循環バッファ140bに蓄積されているデータである。第2循環バッファ140bからの出力であるデータをマルチプレクサ152aの入力に配置する理由は、以下に説明する。
マルチプレクサ150a及び152aは、ノーマルモードとリワインドモードの間を選択する“スイッチ(switch)”を選択入力として有している。マルチプレクサ150a及び152aは、コンパイル時に挿入されるのが好ましい。
同様に、第1シャドウ読出ポート130aは、コンパイル時にDUV内に挿入されるのが好ましい。第1シャドウ読出ポート130aへの入力は、DUVのメモリ内の第1書込ポート120aに対する書込アドレスを運ぶネット134bである。第1シャドウ読出ポート130aの出力は、第1循環バッファ140aのデータ入力に入力される。
第1循環バッファ140aは、第1ステートマシン145aからの出力を受信する入力を有している。前述したように、第1ステートマシン145aは、リワインド中、第1循環バッファ140a内のメモリ位置をアドレスする。前述したように、第1シャドウ読出ポート130aの出力は、メモリアドレスにメモリアドレスと共に蓄積されているデータである。
第2書込ポート120bのアドレス入力は、マルチプレクサ150bの出力である。第2書込ポート120bのデータ入力は、マルチプレクサ152bの出力である。前述した実施の形態におけるように、マルチプレクサ150bは、第1入力がDUV内のメモリ内の第2書込ポートに対する書込アドレスを運ぶネットである、2つの入力を有している。マルチプレクサ150bへの第2入力は、第1循環バッファ140aに蓄積されているアドレスである。第1循環バッファ140aからのアドレス出力をマルチプレクサ152bの入力に配置する理由は、以下に説明する。
マルチプレクサ152bも、2つの入力を有している。マルチプレクサ152bへの第1入力は、DUVのメモリ内に蓄積されるデータを運ぶネットである。マルチプレクサ152bへの第2入力は、第1循環バッファ140aに蓄積されているデータである。第1循環バッファ140aからの出力であるデータをマルチプレクサ152bの入力に配置する理由は、以下に説明する。
マルチプレクサ150b及び152bはノーマルモードとリワインドモードの間を選択する“スイッチ(switch)”を選択入力として有している。マルチプレクサ150b及び152bは、コンパイル時に挿入されるのが好ましい。
同様に、第2シャドウ読出ポート130bは、コンパイル時にDUV内に挿入されるのが好ましい。第2シャドウ読出ポート130bへの入力は、DUVのメモリ内の第1書込ポートに対する書込アドレスを運ぶネットである。第2シャドウ読出ポート130bの出力は、メモリアドレスにメモリアドレスと共に蓄積されているデータである。
図3に例示するような、複数の書込ポートを有するメモリに対しては、各書込ポート(例えば、書込ポート120a及び120b)は、ミラー書込ポート(mirror write port)と呼ばれる他の書込ポートに対応するシャドウ読出ポートからのデータが送られる。
図3に示す例では、第1循環バッファ140aは、DUV内のメモリの第1書込ポートに対してDUVに挿入される第1シャドウ読出ポート130aからのデータを捕獲する。同様に、第2循環バッファ140bは、DUV内のメモリの第2書込ポートに対してDUVに挿入される第2シャドウ読出ポート130bからのデータを捕獲する。
第2循環バッファ140bは、第2ステートマシン145bからの出力を受信する入力を有している。前述したように、第2ステートマシン145bは、リワインド中、第2循環バッファ140b内のメモリ位置をアドレスする。
メモリリワインド中、第1循環バッファ140aは、第2書込ポート120bを介して同じメモリインスタンス(memory instance)(例えば、メモリアドレスに蓄積されているデータと一緒にそのメモリアドレス)を送る。
これにより、本実施の形態では、リワインド中、第2書込ポート120bは、第1書込ポート120aに対するミラー書込ポートとして機能する。同様に、第1書込ポート120aは、第2書込ポート120bに対するミラー書込ポートとして機能する。
ミラー化された書込ポートを用いる理由を、以下に説明する。
トレースウィンドウの間、DUVは、ターゲットシステム、テストベクタ、シミュレーションスティムラスからの信号等の外部信号によって作動する。
エミュレートされる設計が、第1書込ポート120aを介してデータをメモリに書き込む時には、データ(例えば、蓄積されるワード)はデータネット136aのメモリに入力され、アドレスはアドレスネット134aのメモリに入力される。
トレースウィンドウの間、アドレスとそのアドレスに対するデータが、マルチプレクサ150a及び152aを介して第1書込ポート120aに入力されるように、マルチプレクサ150a及び152aの選択入力154が設定される。
メモリリワインドを可能とするために、シャドウ読出動作が全ての書込動作の前に計画される。シャドウ読出動作は、第1シャドウ読出ポート130aを用い、第1書込ポート120aを用いて書き込まれるアドレスと同じアドレスを含んでいる。
これにより、第1書込ポート120aに送られるアドレスも、第1シャドウ読出ポート130aに入力される。このアドレスを第1シャドウ読出ポート130aに送ることにより、DUV内のそのアドレスに蓄積されるデータは、第1シャドウ読出ポート130aのデータ出力138を介する第1循環バッファ140aへの出力である。
特別のメモリアドレスに対するシャドウ読出動作の実行直後に、同じメモリアドレスに対する書込動作が実行される。しかしながら、そのメモリアドレスに蓄積されていた以前の値は、第1循環バッファ140a内に蓄積されるため、後で再蓄積可能である。
書込動作の間、アドレスネット134aからのメモリアドレスは、マルチプレクサ150aを介して、第1書込ポート120aに対するアドレス入力に入力される。同様に、そのアドレスに書き込まれるデータは、ネット136aを通り、マルチプレクサ152aを介して、そのデータをメモリの選択されたアドレスに書き込む第1書込ポート120aに入力される。
前述したように、エミュレータがリワインドモードに移行する時、第1循環バッファ140aに蓄積されているメモリアドレスとそのアドレスに蓄積されているデータが、それぞれ、第1及び第2マルチプレクサ150b及び152bを介して第2書込ポート120bに入力されるように、第1マルチプレクサ150a及び第2マルチプレクサ152aの選択入力154が設定される。そして、第2書込ポート120bは、このデータを適切なアドレスに書き込む。言い換えれば、リワインド時には、第2書込ポート120bは、第1書込ポート120aに対するミラー書込ポートとして機能する。
ミラー書込ポートを用いる理由は、以下の通りである。エミュレータがトレースウィンドウを介して実行するとき、データはメモリ内の位置に書き込まれる。各書込動作中、これらの位置に蓄積されるデータは、シャドウ読出ポートによってDUV内のメモリから読み出され、循環バッファ140a、140b内に、アドレスと同様に蓄積される。メモリがリワインドされる時、実行サイクルは後方に実行される。このことは、特別のアドレスに蓄積されるデータは、ミラー書込ポートを介して書き込まれることを意味している。
ミラー書込ポートが用いられない場合には、プロセッサベースのエミュレーションシステム内でのメモリ書込は、決定論的には正しくない。
例えば、2つの書込ポートメモリの双方が同じアドレスAに書き込む数サイクルを仮定する。更に、ポート1が、ポート2による書込データD2が続くデータD1を書き込む場合を想定する。また、これらの書込動作の前におけるアドレスAのデータがDであった場合を想定する。
シャドウ読出ポート1は、アドレスAに対するデータDを蓄積し、そして、シャドウ読出ポート2は、同じアドレスAに対するデータD1を蓄積する。リワインドの間、書込ポートがミラー化されていない場合には、ポート1は、ポート2による書込データD1が続くデータDを書き込む。これらの2つの書込動作の後、アドレスAは、正しい初期値Dの代わりに、正しくない値D1を蓄積する。一方、ポートがミラー化されている場合には、リワインドの間、ポート1は、シャドウ読出ポート2を介して捕獲され、シャドウ読出ポート1を介して捕獲された書込データ、すなわちデータDがポート2によって後続する、データD1を書き込む。この場合、両書き込みの後のアドレスAには、正しい初期値Dが蓄積される。
書込ポートのミラー化は、1実行サイクル内のスケジューリングに対応する設計コンパイルの間設定されることに注意する。実行サイクルの開始から前方にカウントして、N番目のステップで書き込みを行うように計画されている書込ポートに対しては、実行サイクルの終わりから後方にカウントして、N番目のステップで書き込みを行うように計画されているポートがそのミラー書込ポートである。
図3に示されているマルチポートメモリは単なる例示であることに注意する。奇数のポートを含む多くのポートを用いることができる。例えば、ポート1、ポート2、ポート3、ポート4及びポート5の5つのポートを有するマルチポートメモリでは、ポート5がポート1に対するミラー書込ポートとして機能し(逆も可)、ポート4がポート2に対するミラー書込ポートとして機能し(逆も可)、ポート3がそれ自身に対するミラー書込ポートとして機能する。
DUV内のメモリの内容を再蓄積する方法を、図4を参照して説明する。
この実施の形態では、各書込ポートに対するデータ及びアドレス値は、捕獲ステージ中に、エミュレーション時間あるいはシミュレーション時間の開始(時間「0」)から直接に記録される。データは、記録されるデータの量を減少させるために、各主クロックサイクルあるいはメモリへの書込要求があった時にのみ捕獲してもよい。書込要求があった時にのみデータを捕獲する場合には、各ブロックの開始時間のみを再蓄積ステージで知る必要があるように、データをブロック内で編成可能である。
この特別の実施の形態では、シャドウ読出ポートは用いられない。しかしながら、DUVは、追加の論理の挿入によって修正される。この実施の形態では、DUVは、第1マルチプレクサ62及び第2マルチプレクサ64の挿入によって修正される。
第1マルチプレクサ62は、その出力がアドレス入力を書込ポート20に送る、2入力マルチプレクサであることが好ましい。第2マルチプレクサ64は、その出力がデータ入力を書込ポート20に送る、2入力マルチプレクサであることが好ましい。第1マルチプレクサ62への第1入力は、DUV(すなわち、ユーザ設計)からのアドレスネット34である。第2マルチプレクサ64への第1入力は、DUVからのデータネット36である。
この実施の形態では、エミュレータは、線形バッファ(linear buffer)60として機能するメモリ回路(例えば、メモリチップ)を設ける。線形バッファ60は、アドレスネット34からのアドレスデータと、データネット36からの、そのアドレスに蓄積されるデータを受信する。線形バッファ60は、メモリアドレスを第1マルチプレクサ62の第2入力に送る第1出力を有している。また、線形バッファは、特別なメモリアドレスに対するデータを第2マルチプレクサ64の第2入力に出力する第2出力を有している。第1マルチプレクサ62及び第2マルチプレクサ64は、共に、ノーマルモードと再構築モードの間を切り替える選択入力を有している。
再蓄積ステージに移行するために、第1マルチプレクサ62及び第2マルチプレクサ64への選択入力54が再構築モードに切り替えられる。これにより、第1マルチプレクサ62及び第2マルチプレクサ64は、線形バッファ60から入力されたデータを出力する。
線形バッファ60は、FIFO配列で配列されるのが好ましい。このことは、書込動作が、トレースウィンドウの時間「0」から、ユーザが再蓄積を望む時間ポイントまで実行されることを意味する。これにより、前述した循環バッファ40と異なり、線形バッファ60を駆動するステートマシン65はデクリメントする必要がない。ステートマシン65は、線形バッファ60がDUV内のメモリ20内の書込動作に同期して自身のメモリ位置をインクリメントするように、DUVを駆動するクロックと同期化されるのが好ましい。
メモリチップ(あるいは、この配列が用いられる場合にはオンチップメモリ)は、トレースウィンドウの時間「0」からメモリによって発生される全てのデータを捕獲するのに十分な大きさを有している必要があることに注意する。
この方法は大量のメモリを必要とするため、線形バッファ60の部分は、エミュレータ内に配設され、線形バッファ60の他の部分は、エミュレータを制御するワークステーション内に配設可能である。
図4を参照して説明した実施の形態の変更例は、DUV内の全てのメモリの内容を期間的に蓄積する(メモリの全ての内容の“スナップショット”をとることと類似である)。このスナップショットをとるための期間は、非常に長い期間(例えば、数10万サイクルあるいは数百万サイクル)であるのが好ましい。
この実施の形態では、再蓄積プロセスは、まず、最も遅く蓄えられたスナップショットからのメモリ内容をDUVのメモリに再蓄積する。再蓄積されるスナップショットは、ユーザが再蓄積を望む時間ポイントの直前にとられたスナップショットであるのが好ましい。スナップショットを有するメモリ内容を再蓄積した後に、DUVは、前述した方法を用いて、スナップショット時間から書き込み動作を再生する。
この実施の形態の利点は、トレースウィンドウの時間「0」からの書込動作の全ての履歴を蓄積するための線形バッファ60を必要としないことである。これにより、より小さい線形バッファ60を使用することができる。
前述した概念は、FPGAベースのエミュレーションシステムに対して本明細書に開示されている方法を実行するために適用可能である。
実行に際して、以下に説明するいくつかの相違点がある。実行の際における大部分の相違点は、FPGAベースのシステム内では、プロセッサベースのシステム内に存在するような基本サイクルを決定するために用いられる1つの中心クロックが存在しないことに起因する。FPGAシステムは、通常、非同期であるクロック(すなわち、他のクロックから生成されないクロック)のセットを受け入れる。一方、プロセッサベースのエミュレータは、非同期クロックを用いて設計をエミュレート可能であるが、内部では同期して動作する。実際に、いくつかのFPGAシステムでは、システムは、エミュレータに入力されるどの信号がクロック信号であるかを知ることさえできない。任意の入力信号がクロックとして作用する。
また、同時に発生する2つの書込ポート間の書込順序は2つの書込要求間の極小の時間差によって決定されるため、マルチポートメモリ内の書込動作がFPGAベースのシステム内で実行される順序が問題となる。書込要求が中心クロックによって時間制御されていないため、異なる書込ポート間の書込順序を扱うためには、より精巧なメカニズムを構築する必要がある。
本明細書で開示されている概念をFPGAベースのシステムに用いる方法としては、少なくとも2つの方法がある。
第1の方法は、図5〜7を参照して説明されており、“イベント駆動(event driven)”方法論に依存している。図5は、2つの書込ポートを有するマルチポートメモリを示している。書込ポート1は、アドレス入力A1とデータ入力D1を有している。書込ポート2は、アドレス入力A2とデータ入力D2を有している。FPGAベースのシステムでは、サイクルを決定する基準クロックが存在しない(すなわち、前述したように、実行サイクルが存在しない)。代わりに、DUV内のRAMに蓄積されているデータを除く、DUVの全てのステートの内容のスナップショットが、エミュレーション中の特別の設定ポイントにおいて循環バッファに蓄積される(図6)。これは、図7に、エミュレーションの開始、第1設定ポイント及び第2設定ポイントを有するタイム線で示されている。エミュレーションの間、各書込動作は、DUVのRAM及び循環バッファに同時に蓄積される。
いくつかの実施の形態では、書込動作からのデータは、DUVのステートの他の内容とは異なる循環バッファに蓄積されることに注意する。
プロセッサベースの装置と同様に、他の装置も可能であるが、シャドウ読出ポートが、この動作に対して使用可能である。循環バッファへの各書込の後、循環バッファアドレスは、「1」だけ加算される。各設定ポイントでは、循環バッファ内のその位置に蓄積されている書込動作が設定ポイントに対応していることを示すマーカーが、循環バッファに書き込まれる。これは、図6に示されている。設定ポイントは、検証システムのユーザによって設定されるのが好ましい。
データが、異なる書込ポートを介して同じメモリ位置に書き込まれる時、データは、メモリ位置に書き込まれている順序と同じ順序で循環バッファに順次蓄積される。言い換えれば、異なる書込ポートからのデータは、DUV内のRAMのメモリ位置に書き込まれた順序に従って循環バッファに順次書き込まれる。これにより、リワインド中、DUVに書き込まれたデータが、正しい順序で循環バッファに蓄積されるため、どの書込ポートがデータを特別のメモリ位置に書き込んだかを知る必要がない。このことは、リワインド段階では、エミュレートされるDUVのRAMにデータを書き込むために1つの書込ポートのみが必要であることを意味している。
この装置は、ミラー書込ポートの使用を必要としないことに注意する。この理由は、プロセッサベースのシステムと異なり、循環バッファから書き込まれたデータの正しい順序が、リワインド中、ポートを逆の順序で(すなわち、書込ポートのミラー化を介して)再接続することによって実行される必要がないからである。
この実施の形態では、循環バッファに蓄積される書込動作の時間的な順序が、正しい順序を実行するために当てにされる。このことは、DUV内のRAMが実際にどのくらいの書込ポートを有しているかに拘わらず、循環バッファに蓄積されているデータが、1つの書込ポートのみを介してRAMに書き込まれる場合に、特に正しい。
同様の構成がプロセッサベースのシステムに用いられる場合には、書込ポートのミラー化は、プロセッサベースのシステムには必要でないことに注意する。
また、この実施の形態は、プロセッサベースのシステムにも用いることができることに注意する。プロセッサシステムは、プロセッサベースの検証システムの使用時に、ミラー書込ポートの使用の必要性を除去する。
この方法では、循環バッファに書き込まれるアドレスの数は、書込動作の数(DUVが何を実行すかによって変化する)に依存する。この方法は、各メモリインスタンスがそれ自身の循環バッファを有することを必要とし、それにより、他のメモリインスタンスの循環バッファと独立して進行可能である。
代わりの実施の形態を説明する。
この実施の形態では、基準クロックは、システムによって内部で発生される。この基準クロックは、システム内の最も速いクロックを移送し損なうことなく、全てのネットを抽出するのに十分な速さ(例えば、十分に高い周波数)を有している必要がある。言い換えれば、この基準クロックの周波数は、DUV内の信号が基準クロックの1サイクルの間に1回以上変化しないように、十分高く設定される必要がある。検証システムのユーザはDUVを熟知しているので、ユーザが基準クロックの周波数を選択すべきである。基準クロックを“サイクル”を決定するために用いることにより、基準クロックの各サイクルを、プロセッサベースのシステムの実行サイクルに類似させることができる。
このような基準クロックの各サイクル中では、任意のメモリの各書込ポートに対して、1回の書込動作のみが実行される。これにより、書込動作は、プロセッサベースのシステムと同じ方法で蓄積される。
他は、多かれ少なかれ、プロセッサベースのシステムで実行されるのと同じである。
DUV内の各メモリがただ1つの書込ポートを有している限り、プロセッサベースのシステムに関して前述した方法が使用可能である。しかしながら、DUV内のメモリが複数の書込ポートを有する時は、異なる接近法が必要である。基準クロックの同じサイクル中にDUV内のメモリにデータを書き込むために2あるいはそれ以上の書込ポートが用いられる時に、問題が発生する。前述したように、種々の書込ポートを介する書込順序が維持されない場合には、メモリ再構築が正確に実行されない。
他の変更例は、書込動作をモニタし、異なる書込ポートからの実際の書込順序を決定し、そして、各サイクル内で再構築ステージが正確に逆順序でデータを再生可能な方法でデータを記録する特別の回路をメモリインスタンスの操舵論理(steering logic)に付加することである。この実施の形態は、正しい順序で異なる書込ポートに対してデータを書き込む際に所望の書込効果を達成するために、再構築ステージでの書込動作の時間的な順序に依存する。
図8は、システムが書込動作の時間的な順序の形跡を保持する方法の1例を示すテーブルである。これは、時間領域でデータを正しく配列させることによって順序が決定されるため、再構築ステージが、循環バッファからの全てのデータを1つの書込ポートを介してメモリインスタンスに実際に書き戻すことを意味する。再び、本方法は、ミラーポートの必要性を除去する。
図8は、2ポートメモリに対するメモリ書込動作を示している。第1の2列は、任意のサイクルに対する第1の書込動作を示し、第2の2列は、任意のサイクルに対する第2の書込動作を示している。図8に示す例に戻り、第1行である第1サイクルでは、ポート1はポート2より前に書き込まれる。第2のサイクルでは、ポート1のみが書込動作を有している。第3のサイクルでは、ポート1は、書込動作を受ける。第4のサイクルでは、ポート2は、ポート1より前の書込動作を有している。第5サイクルでは、ポート1及びポート2のいずれも、書込動作を受けない。最後のサイクルでは、ポート1のみが、書込動作を受ける。
多くの場合、エミュレーションシステムは、“ラッパー(wrapper)”方法を用いることによって、複数の書込ポートを有するメモリ(“論理メモリセル”と呼ぶ)を実装可能である。ラッパーは、少ない書込ポート(典型的にはただ1つの書込ポート)200を有する簡単なメモリ構造(“物理メモリセル”と呼ぶ)を用いる。時間領域多重化を用いて書込ポートを論理メモリセル200に多重化する論理回路が用いられる。これは、設計の1つのクロックサイクルの間に、論理メモリセル書込ポートがより高い周波数クロックを用いて多重化され、それにより、各書込ポートが異なる時間スロットを用いて物理メモリセルに書き込むことを意味する。このようなラッパー方法を用いる場合には、本明細書に開示されている、メモリ内容をリワインド及び再構築する任意の方法が、論理メモリセルの書込ポートあるいは物理メモリセルの書込ポートのいずれかに適用可能である。
ラッパー方法を、図9を参照して説明する。
メモリセル200は、アドレス入力A、データ入力D及び書込イネーブル入力WEを有する1ポートメモリである。このメモリセル200をデュアルポートメモリに変更するために、追加の回路が付加されている。マルチプレクサ205は、アドレス入力をメモリ200に送る。マルチプレクサ210は、データ入力をメモリセル200に送る。マルチプレクサ205は、ポート1のアドレス入力A1からの第1入力と、ポート2のアドレス入力A2からの第2入力を有している。マルチプレクサ210は、ポート1のデータ入力D1からの第1入力と、ポート2のデータ入力D2からの第2入力を有している。
ステートマシン215は、ポート1の書込イネーブルWE1からの第1入力と、ポート2の書込イネーブルWE2からの第2入力を有している。ステートマシン215は、エミュレータが実行される周波数よりはるかに速い周波数を有するのが好ましい高速クロック信号を受信するクロック入力を有している。ステートマシン215は、マルチプレクサ205及び210の選択入力を駆動する第1出力を有している。ステートマシン215は、マルチプレクサ220の選択入力を駆動する第2出力を有している。ポート1からの書込イネーブルWE1は、マルチプレクサ220の第1入力を駆動し、ポート2からの書込イネーブルWE2は、マルチプレクサ220の第2入力を駆動する。
本明細書に開示されている種々の実施の形態は、メモリ再蓄積を実行するためにエミュレータのハードウェアを使用する観点で説明されている。しかしながら、本明細書に開示されている種々の実施の形態は、エミュレータハードウェア内ではなくワークステーション上のソフトウェアによっても実行可能である。メモリ再蓄積を実行するためにソフトウェアを使用する方法は、以下の通りである。
再構築されるメモリが、DUVが本来実行されるエミュレータではなく、検証システムに書き込まれる時、捕獲ステージ中に書込動作から記録されたデータと共にDUV内のメモリの内容が、エミュレータを制御するワークステーションに移送される。そして、ソフトウェアプログラムは、前述した方法を用いてメモリの内容を再構築し、再構築されたメモリの内容を、代わりの検証システムに移送する。
ソフトウェアシミュレータのような代替の論理検証システムは、DUVのメモリ動作をシミュレータを用いて解析可能とする。再構築されたメモリが、本来DUVを実行させる同じエミュレータに書き戻される時、RAMの内容はワークステーション内に読み出される必要はない。
バッファ(トレースあるいは線形)の内容は、メモリが再構築されるワークステーションに移送される。再構築の後、ワークステーションは、変化したアドレスのみをエミュレータに戻す。
この方法を用いる場合には、書き込まれたアドレスが分かるようにアドレスを追跡し、データが間違っているアドレスに書き込まれるのを防止する必要があることに注意する。再構築されたメモリが他のエミュレータやソフトウェアエミュレータ等のエミュレータあるいは他の検証システムに移送されるか否かに拘わらず、この再構築処理は、メモリの全ての内容あるいは捕獲ステージ(すなわち、トレースウィンドウ)中に書込動作によって影響を受けるメモリの部分のいずれかで実行可能である。トレースウィンドウ中に書込動作によって影響を受ける、DUV内のメモリの部分でのみ再構築を選択的に実行することによって、エミュレータとワークステーションとの間で前方あるいは後方に移送される必要があるデータ量が著しく減少する。更に、例えば、マルチプレクサ(例えば、マルチプレクサ50、52)が書込ポートへの入力において必要とされないため、必要なネットリストの取り扱いが少なくなる。
また、本明細書で開示されている方法は、特別のハードウェアあるいはソフトウェアシミュレータ用いるシミュレーション加速エンジンのような、設計をシミュレートするための他のシステムにおいても使用可能であることに注意する。しかしながら、いくつかの修正は必要である。例えば、ソフトウェアシミュレータでは、本来の設計書込動作と再蓄積書込動作(すなわち、循環あるいは線形バッファからのデータの書き込み)との間の選択のためのマルチプレクサは不要である。更に、ソフトウェアシミュレータ内のメモリの内容を再蓄積する時、メモリ再蓄積方法は、シミュレータの部分ではない別のプログラムによって実行される。
これにより、本明細書に開示されている種々の実施の形態は、デジタル設計のシミュレートあるいはエミュレートのいずれに対しても使用可能である。更に、本明細書に開示されている種々の実施の形態は、テストベクタを用いて設計をエミュレートする時あるいはエミュレータがターゲットシステムと共に動作する時(すなわち、回路エミュレーション中)に有益である。
本明細書に開示されている種々の実施の形態は、一連の指示からなるコンピュータプログラムの形式をとってもよい。これらの指示は、コンピュータが使用可能な媒体に供給される。コンピュータ使用可能媒体の一般的な形態は、例えば、フロッピーディスク(登録商標)、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、CD−ROM、他の光学媒体、パンチカード、紙テープ、ホールパターンを有する他の物理媒体、RAM、ROM、PROM(すなわち、プログラマブル読出専用メモリ)、FLASH−EPROMを含むEPROM(すなわち、消去可能なプログラマブル読出専用メモリ)、他のメモリメモリチップあるいはカートリッジ、搬送波(carrier wave)、他の媒体が含まれる。
以上のように、本発明の種々の実施の形態は、特別の実施の形態を参照して説明されている。しかしながら、本発明のより広い精神及び概念を超えない範囲で、各実施の形態に対して種々の修正及び変更を行うことができることは明らかである。例えば、読者は、本明細書に開示されている処理フロー図に示されている処理動作の特別な順序や組み合わせは単に説明のためのものであること、本発明は、異なるあるいは付加的な処理動作、処理動作の異なる組み合わせあるいは順序を用いて実行可能であることを理解できる。したがって、明細書及び図面は、限定的な意味ではなく説明のためのものであり、本発明は、特許請求の範囲及びそれらの法的な均等の範囲に従うことを除いては、限定あるいは制限されない。
シャドウ読出ポートが挿入された後のDUV内のメモリを示す論理図である。 リワインド論理が挿入されたDUV内のメモリを示す論理図である。 シャドウ読出ポートとリワインド論理が挿入されたDUV内のマルチポートメモリを示す論理図である。 DUV内に蓄積されているメモリの再構築を可能とする回路を示す論理図である。 マルチポートメモリを説明するブロック図である。 循環バッファに蓄積されたメモリがどのように体系付けられるかを示す図である。 メモリリワインドが時間期間に亘ってどのように実行されるかを説明するタイム線図である。 本明細書に開示されている実施の形態において、システムが時間的な順序の経過あるいは書込動作をどのように保持するかを説明する表である。 1ポートRAMを有するマルチポートメモリを実装するために用いられる回路の概略図である。
符号の説明
20、120a、120b 書込ポート
30、130a、130b シャドウ読出ポート
40、140a、140b 循環バッファ
45、65、145a、145b、215 ステートマシン
50、52、62、64、150a、150b、152a、152b、205、210、220 マルチプレクサ
60 線形バッファ

Claims (59)

  1. ランダムアクセスメモリ(RAM)により構成される回路設計が所望の機能を実行することを検証する方法であって、RAMは、少なくとも1つの書込ポート及びデータを蓄積する複数のメモリ位置を有し、複数のメモリ位置の各々はアドレスを有しており、
    回路設計をハードウェア論理エミュレーションシステム内にエミュレートし、
    RAM内の複数のメモリ位置の中の選択された1つにデータを書き込む前に、RAM内の複数のメモリ位置の中の当該選択された1つに蓄積されているデータを読み出し、
    RAM内の複数のメモリ位置の中の前記選択された1つから読み出されたデータを、バッファ内に蓄積されているデータがラストイン−ファーストアウトで出力されるようにそれぞれが配列されている、バッファ内の選択されたメモリ位置に蓄積し、
    チェックポイントの後で、前記バッファ内の前記選択されたメモリ位置に蓄積されているデータを、RAM内の複数のメモリ位置の中の前記選択された1つに移動させる。
  2. 請求項1の方法であって、前記移動ステップの後で、RAM内の複数のメモリ位置の中の前記選択された1つに蓄積されているデータを観察する。
  3. 請求項1の方法であって、
    RAM内の複数のメモリ位置の中の前記選択された1つに蓄積されているデータを読み出すステップでは、
    RAM内の少なくとも1つの書込ポートのそれぞれに対して、対応するシャドウ読出ポートを回路設計内に挿入し、
    RAM内の複数のメモリ位置の中の前記選択された1つに蓄積されているデータが前記対応するシャドウ読出ポートによって読み出されるように、前記対応するシャドウ読出ポートによって読出動作を実行する。
  4. 請求項1の方法であって、前記移動ステップでは、更に、
    前記バッファ内の前記選択されたメモリ位置のそれぞれがラストイン−ファーストアウト方法で読み出されるように、前記バッファへのアドレス入力をデクリメントし、
    前記バッファ内の前記選択されたメモリ位置のそれぞれからのデータを、RAMの少なくとも1つの書込ポートの中の1つに配置し、
    RAMの少なくとも1つの書込ポートの中の1つに配置されている、前記バッファ内の前記選択されたメモリ位置のそれぞれからのデータをRAM内の複数のメモリ位置の中の前記選択された1つに書き込む。
  5. 請求項4の方法であって、前記観察ステップでは、更に、
    前記書込ステップの後に、RAM内のメモリ位置の中の少なくともいくつかにおいて観察する。
  6. 回路設計が所望の機能を実行することを検証する装置であって、回路設計は、データ入力とアドレス入力を有する書込ポート、読出ポート及びデータを蓄積する複数のメモリ位置を有するRAMにより構成され、複数のメモリ位置のそれぞれはアドレスを有しており、
    書込ポートに対応し、アドレス入力からのアドレスを受信するアドレス入力及びデータ出力を有するシャドウ読出ポートと、
    RAMのアドレス入力及び前記シャドウ読出ポートの前記データ出力に接続され、アドレス出力及びデータ出力を有するバッファと、
    前記バッファの前記アドレス出力に接続されている第1入力及びRAMのアドレス入力に接続されている第2入力を有し、アドレス入力を書込ポートに送る第1マルチプレクサと、
    前記バッファの前記データ出力に接続されている第1入力及びRAMのデータ入力に接続されている第2入力を有し、データ入力を書込ポートに送る第2マルチプレクサを備え、
    前記第1マルチプレクサ及び第2マルチプレクサは、それぞれ第1モードと第2モードの間を切り替える選択入力を有している。
  7. 請求項6の装置であって、前記バッファは、ステートマシンに接続されている。
  8. 請求項6の装置であって、前記第1モードは、前記第1マルチプレクサによって、RAMのアドレス入力からの信号が書込ポートのアドレス入力に送られることを可能とするとともに、第2マルチプレクサによって、RAMのデータ入力からの信号が書込ポートのデータ入力に送られることを可能とする。
  9. 請求項8の装置であって、前記第2モードは、前記第1マルチプレクサによって、前記バッファの前記アドレス出力からの信号が書込ポートのアドレス入力に送られることを可能とするとともに、前記第2マルチプレクサによって、前記バッファのデータ出力からの信号が書込ポートのデータ入力に送られることを可能とする。
  10. 請求項9の装置であって、更に、前記バッファに接続されているステートマシンを備えている。
  11. 請求項10の装置であって、前記ステートマシンは、装置が前記第2モードにある時、前記バッファに蓄積されているデータ及びアドレスの、前記バッファの前記アドレス出力及び前記データ出力からの読み出しを制御する。
  12. 回路設計が所望の機能を実行することを検証する装置であって、回路設計は、第1データ入力及び第1アドレス入力を有する第1書込ポートと、第2データ入力及び第2アドレス入力を有する第2書込ポートと、第1設計データ入力と、第1設計アドレス入力と、第2設計データ入力と、第2設計アドレス入力と、データを蓄積する複数のメモリ位置を有するランダムアクセスメモリ(RAM)により構成され、複数のメモリ位置のそれぞれはアドレスを有しており、
    第1書込ポートに対応し、第1設計アドレス入力からのアドレスを受信するアドレス入力及びデータ出力を有する第1シャドウ読出ポートと、
    第2書込ポートに対応し、第2設計アドレス入力からのアドレスを受信するアドレス入力及びデータ出力を有する第2シャドウ読出ポートと、
    第1設計アドレス入力及び前記第1シャドウ読出ポートの前記データ出力に接続され、アドレス出力及びデータ出力を有する第1バッファと、
    第2設計アドレス入力及び前記第2シャドウ読出ポートの前記データ出力に接続され、アドレス出力及びデータ出力を有する第2バッファと、
    前記第2バッファの前記アドレス出力に接続されている第1入力及び第1設計アドレス入力に接続されている第2入力を有し、第1アドレス入力を第1書込ポートに送る第1マルチプレクサと、
    前記第2バッファの前記データ出力に接続されている第1入力及び第1設計データ入力に接続されている第2入力を有し、第1データ入力を第1書込ポートに送る第2マルチプレクサと、
    前記第1バッファの前記アドレス出力に接続されている第1入力及び第2設計アドレス入力に接続されている第2入力を有し、第2アドレス入力を第2書込ポートに送る第3マルチプレクサと、
    前記第1バッファの前記データ出力に接続されている第1入力及び第2設計データ入力に接続されている第2入力を有し、第2データ入力を第2書込ポートに送る第4マルチプレクサを備え、
    前記第1マルチプレクサ、前記第2マルチプレクサ、前記第3マルチプレクサ及び前記第4マルチプレクサは、それぞれ第1モードと第2モードの間を切り替える選択入力を有している。
  13. ランダムアクセスメモリ(RAM)により構成される回路設計を、デバッグ可能に製造する方法であって、RAMは、書込ポート及びデータを蓄積する複数のメモリ位置を有し、複数のメモリ位置のそれぞれはアドレスを有しており、
    回路設計からのアドレスを受信するアドレス入力及びデータ出力を有するシャドウ読出ポートを、書込ポートに対応する回路設計に挿入し、
    データを選択されたメモリアドレスに書込ポートにより書き込む前に、前記選択されたメモリアドレスに蓄積されているデータを前記シャドウ読出ポートにより読み出すように計画し、
    前記シャドウ読出ポートの前記データ出力を、データ出力及びアドレス出力を有し、前記計画ステップにおいて読み出されたデータを選択されたメモリ位置に蓄積するバッファに相互接続し、
    回路設計からのアドレス入力に接続されている第1入力を有する第1マルチプレクサが、アドレス入力を書込ポートに送るように、第1マルチプレクサを回路設計に挿入し、
    回路設計からのデータ入力に接続されている第1入力を有する第2マルチプレクサが、データ入力を書込ポートに送るように、第2マルチプレクサを回路設計に挿入し、
    前記バッファの前記アドレス出力を前記第1マルチプレクサの第2入力に接続し、
    前記バッファの前記データ出力を前記第2マルチプレクサの第2入力に接続し、
    チェックポイントの後に、前記バッファ内の前記選択されたメモリ位置に蓄積されているデータを、RAM内の複数のメモリ位置の中の選択された1つに移動させる。
  14. 請求項13の方法であって、前記移動ステップでは、更に、
    RAM内の複数のメモリ位置の中の選択された1つのそれぞれが前記チェックポイントの前に保持されているステートにリワインドされるように、前記バッファ内の前記選択されたメモリ位置に蓄積されているデータをラストイン−ファーストアウトの順序で送る。
  15. 請求項13の方法であって、更に、前記移動ステップの後で、RAM内の複数のメモリ位置の中の選択された1つに蓄積されている、少なくともいくつかのデータを観察する。
  16. 回路設計が所望の機能を実行することを機能検証システムを用いることによって検証する方法であって、回路設計は、少なくとも1つの書込ポート及び複数のメモリ位置を有するランダムアクセスメモリ(RAM)によって構成されており、
    回路設計を機能検証システム内で実行させ、
    データをRAMに書き込む前にデータを読み出し、
    前記データをバッファに蓄積し、
    チェックポイントにおいて、前記バッファに蓄積されているデータを、前記データが前記バッファに書き込まれた順序と逆の順序で読み出し、
    前記データが前記バッファから読み出される時、前記データを前記RAMに書き込む。
  17. 請求項16の方法であって、機能検証システムは、ハードウェア論理検証システムにより構成されている。
  18. 請求項17の方法であって、前記ハードウェア論理検証システムは、プロセッサベースのエミュレーションシステムである。
  19. 請求項17の方法であって、前記ハードウェア論理検証システムは、フィールドプログラマブルゲートアレイ(FPGA)ベースのエミュレーションシステムである。
  20. 請求項16の方法であって、機能検証システムは、ソフトウェアシミュレータにより構成されている。
  21. 回路設計が所望の機能を実行することを検証する装置であって、回路設計は、少なくとも1つの書込ポート及び複数のメモリ位置を有するランダムアクセスメモリ(RAM)により構成されており、
    回路設計を機能検証システム内で実行させる手段と、
    データをRAM内に書き込む前にデータを読み出す手段と、
    前記データをバッファに蓄積する手段と、
    前記バッファに蓄積されているデータを、チェックポイントにおいて前記バッファに書き込まれたデータから逆の順序で読み出す手段と、
    前記データが前記バッファから読み出される時、前記データを前記RAMに書き込む手段を備えている。
  22. 請求項21の装置であって、前記機能検証システムは、ハードウェア論理検証システムにより構成されている。
  23. 請求項22の装置であって、前記ハードウェア論理検証システムは、プロセッサベースのエミュレーションシステムである。
  24. 請求項22の装置であって、前記ハードウェア論理検証システムは、フィールドプログラマブルゲートアレイ(FPGA)ベースのエミュレーションシステムである。
  25. 請求項21の装置であって、機能検証システムは、ソフトウェアシミュレータにより構成されている。
  26. 回路設計が所望の機能を実行することを検証する方法であって、回路設計は、少なくとも1つの書込ポート及び複数のメモリ位置を有するランダムアクセスメモリ(RAM)により構成されており、
    回路設計を第1機能検証システム内で実行させ、
    新しいデータをRAM内のアドレスに書き込む前に、前記RAM内の前記アドレスに以前に蓄積されたデータを読み出し、
    前記以前に蓄積されたデータを第1機能検証システムから外部システムに移動させ、
    チェックポイントにおいて、設定された時点におけるRAMの複数のメモリ位置に対応する、再構築されたメモリを生成するために、前記外部システム内の前記以前に蓄積されたデータを再構築し、
    前記再構築ステップは、
    前記以前に蓄積されたデータをラストイン−ファーストアウトの順序で読み出し、
    前記以前に蓄積されたデータを前記外部システム内のメモリに書き込むことによって前記再構築されたメモリを生成する。
  27. 請求項26の方法であって、更に、
    前記データを再構築した後に、前記再構築されたメモリを前記第1機能検証システムに移動させ、
    前記再構築されたメモリをRAMに書き込む。
  28. 請求項26の方法であって、更に、前記データを再構築した後に、前記再構築されたメモリを第2機能検証システムに移動させる。
  29. 請求項28の方法であって、前記第2機能検証システムは、ソフトウェアシミュレータにより構成されている。
  30. 請求項26の方法であって、前記第1機能検証システムは、ハードウェア論理検証システムにより構成されている。
  31. 回路設計が所望の機能を実行することを機能検証システムを用いて検証する方法であって、回路設計は、少なくとも1つの書込ポート及び複数のメモリ位置を有するランダムアクセスメモリ(RAM)により構成されており、
    回路設計を機能検証システム内で実行させ、
    書込動作が実行された順序に対応する時間的な順序で蓄積されたアドレス及び当該アドレスに蓄積されるデータにより構成される書込動作の全てをバッファに蓄積し、
    前記バッファに蓄積されている前記書込動作のそれぞれを再生することによってRAMのイメージを再構築し、
    前記イメージを前記機能検証システムに書き込む。
  32. 請求項31の方法であって、機能検証システムは、ハードウェア論理検証システムにより構成されている。
  33. 請求項32の方法であって、前記ハードウェア論理検証システムは、プロセッサベースのエミュレーションシステムである。
  34. 請求項32の方法であって、前記ハードウェア論理検証システムは、フィールドプログラマブルゲートアレイ(FPGA)ベースのエミュレーションシステムである。
  35. 請求項31の方法であって、機能検証システムは、ソフトウェアシミュレータにより構成されている。
  36. 回路設計が所望の機能を実行することを第1機能検証システムを用いて検証する方法であって、回路設計は、少なくとも1つの書込ポート及び複数のメモリ位置を有するランダムアクセスメモリ(RAM)により構成されており、
    回路設計を第1機能検証システム内で実行させ、
    書込動作が実行された順序に対応する時間的な順序で蓄積されたアドレス及び当該アドレスに蓄積されるデータにより構成される書込動作の全てをバッファに蓄積し、
    前記バッファに蓄積されている前記書込動作のそれぞれを再生することによって、前記各書込動作中に書き込まれた、少なくとも前記アドレスの前記データにより構成される、RAMのイメージを再構築し、
    前記イメージを第2機能検証システムに書き込む。
  37. 請求項36の方法であって、第1機能検証システムは、ハードウェア論理検証システムにより構成されている。
  38. 請求項37の方法であって、前記ハードウェア論理検証システムは、プロセッサベースのエミュレーションシステムである。
  39. 請求項37の方法であって、前記ハードウェア論理検証システムは、フィールドプログラマブルゲートアレイ(FPGA)ベースのエミュレーションシステムである。
  40. 請求項36の方法であって、第1機能検証システムは、ソフトウェアシミュレータにより構成されている。
  41. 請求項36の方法であって、第2機能検証システムは、ソフトウェアシミュレータにより構成されている。
  42. 請求項36の方法であって、第2機能意検証システムは、ハードウェア論理検証システムにより構成されている。
  43. 回路設計が所望の機能を実行することを機能検証システムを用いて検証する装置であって、回路設計は、少なくとも1つの書込ポート及び複数のメモリ位置を有するランダムアクセスメモリ(RAM)により構成されており、
    回路設計を機能検証システム内で実行させる手段と、
    書込動作が実行された順序に対応する時間的な順序で蓄積されたアドレス及び当該アドレスに蓄積されるデータにより構成される書込動作の全てをバッファに蓄積する手段と、
    前記バッファに蓄積されている前記書込動作のそれぞれを再生することによって、前記各書込動作中に書き込まれた、少なくとも前記アドレスの前記データにより構成される、RAMのイメージを再構築する手段と、
    前記イメージを前記機能検証システム内に書き込む手段とを備える。
  44. 請求項43の装置であって、機能検証システムは、ハードウェア論理検証システムにより構成されている。
  45. 請求項44の装置であって、前記ハードウェア論理検証システムは、プロセッサベースのエミュレーションシステムである。
  46. 請求項44の装置であって、前記ハードウェア論理検証システムは、フィールドプログラマブルゲートアレイ(FPGA)ベースのエミュレーションシステムである。
  47. 請求項43の装置であって、機能検証システムは、ソフトウェアシミュレータにより構成されている。
  48. 回路設計が所望の機能を実行することを第1機能検証システムを用いて検証する装置であって、回路設計は、少なくとも1つの書込ポート及び複数のメモリ位置を有するランダムアクセスメモリ(RAM)により構成されており、
    回路設計を第1機能検証システム内で実行させる手段と、
    書込動作が実行された順序に対応する時間的な順序で蓄積されたアドレス及び当該アドレスに蓄積されるデータにより構成される書込動作の全てをバッファに蓄積する手段と、
    前記バッファに蓄積されている前記書込動作のそれぞれを再生することによって、前記各書込動作中に書き込まれた、少なくとも前記アドレスの前記データにより構成される、RAMのイメージを再構築する手段と、
    前記イメージを第2機能検証システム内に書き込む手段とを備える。
  49. 請求項48の装置であって、第1機能検証システムは、ハードウェア論理検証システムにより構成されている。
  50. 請求項49に記載の装置であって、前記ハードウェア論理検証システムは、プロセッサベースのエミュレーションシステムである。
  51. 請求項49の装置であって、前記ハードウェア論理検証システムは、フィールドプログラマブルゲートアレイ(FPGA)ベースのエミュレーションシステムである。
  52. 請求項48の装置であって、第1機能検証システムは、ソフトウェアシミュレータにより構成されている。
  53. 請求項48の装置であって、第2機能検証システムは、ソフトウェアシミュレータにより構成されている。
  54. 請求項48の装置であって、第2機能検証システムは、ハードウェア論理検証システムにより構成されている。
  55. 回路設計が所望の機能を実行することを検証する装置であって、回路設計は、少なくとも1つの書込ポート及び複数のメモリ位置を有するランダムアクセスメモリ(RAM)により構成されており、
    回路設計を第1機能検証システム内で実行させる手段と、
    新しいデータをRAM内のアドレスに書き込む前に、RAM内の前記アドレスに以前に蓄積されたデータを読み出す手段と、
    前記以前に蓄積されたデータを第1機能検証システムから外部のシステムに移動させる手段と、
    設定時点におけるRAMの複数のメモリ位置に対応する、再構築されたメモリを生成するために、チェックポイントにおける前記外部システム内の前記以前に蓄積されたデータを再構築する手段を備え、
    前記再構築手段は、
    前記以前に蓄積されたデータをラストイン−ファーストアウトの順序で読み出す手段と、
    前記以前に蓄積されたデータを前記外部システム内のメモリに書き込むことによって、前記再構築されたメモリを生成する手段を有している。
  56. 請求項55の装置であって、更に、
    前記データを再構築した後に、前記再構築されたメモリを前記第1機能検証システムに移動させる手段と、
    前記再構築されたメモリをRAMに書き込む手段を備えている。
  57. 請求項55の装置であって、更に、前記データを再構築した後に、前記再構築されたメモリを第2機能検証システムに移動させる手段を備えている。
  58. 請求項57の装置であって、前記第2機能検証システムは、ソフトウェアシミュレータにより構成されている。
  59. 請求項55の装置であって、前記第1機能検証システムは、ハードウェア論理検証システムにより構成されている。
JP2004006505A 2003-01-23 2004-01-14 ハードウェアエミュレータのためのメモリリワインド及び再構築 Expired - Fee Related JP4439926B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US44217603P 2003-01-23 2003-01-23
US10/373,558 US7440884B2 (en) 2003-01-23 2003-02-24 Memory rewind and reconstruction for hardware emulator

Publications (2)

Publication Number Publication Date
JP2004227571A true JP2004227571A (ja) 2004-08-12
JP4439926B2 JP4439926B2 (ja) 2010-03-24

Family

ID=32599725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004006505A Expired - Fee Related JP4439926B2 (ja) 2003-01-23 2004-01-14 ハードウェアエミュレータのためのメモリリワインド及び再構築

Country Status (6)

Country Link
US (1) US7440884B2 (ja)
EP (1) EP1441296A2 (ja)
JP (1) JP4439926B2 (ja)
KR (1) KR101044169B1 (ja)
CN (1) CN100359473C (ja)
TW (1) TWI349231B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014002712A (ja) * 2012-05-25 2014-01-09 Fujitsu Ltd シミュレーション方法、およびシミュレーションプログラム

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6659504B2 (en) * 2001-05-18 2003-12-09 Delphi Technologies, Inc. Steering column for a vehicle
JP3766413B2 (ja) * 2003-09-10 2006-04-12 沖電気工業株式会社 データ並び替え方法
US7379861B2 (en) * 2004-05-28 2008-05-27 Quickturn Design Systems, Inc. Dynamic programming of trigger conditions in hardware emulation systems
US7353162B2 (en) * 2005-02-11 2008-04-01 S2C, Inc. Scalable reconfigurable prototyping system and method
US20070038431A1 (en) * 2005-08-12 2007-02-15 Arm Limited Data processing apparatus simulation
CN100383798C (zh) * 2005-09-07 2008-04-23 深圳市海思半导体有限公司 一种对随机存储器封装文件进行仿真的仿真平台及方法
US8108198B2 (en) * 2006-02-21 2012-01-31 Mentor Graphics Corporation Memory tracing in an emulation environment
WO2007098804A1 (en) 2006-02-28 2007-09-07 Mentor Graphics Corp. Memory-based trigger generation scheme in an emulation environment
US7555424B2 (en) * 2006-03-16 2009-06-30 Quickturn Design Systems, Inc. Method and apparatus for rewinding emulated memory circuits
JP4855177B2 (ja) * 2006-08-10 2012-01-18 住友大阪セメント株式会社 静電チャック装置
US8756557B2 (en) 2007-05-09 2014-06-17 Synopsys, Inc. Techniques for use with automated circuit design and simulations
US7984400B2 (en) 2007-05-09 2011-07-19 Synopsys, Inc. Techniques for use with automated circuit design and simulations
US7904859B2 (en) 2007-05-09 2011-03-08 Synopsys, Inc. Method and apparatus for determining a phase relationship between asynchronous clock signals
US7908574B2 (en) 2007-05-09 2011-03-15 Synopsys, Inc. Techniques for use with automated circuit design and simulations
DE102007044803A1 (de) * 2007-09-20 2009-04-09 Robert Bosch Gmbh Schaltungsanordnung zur Signalaufnahme und -erzeugung sowie Verfahren zum Betreiben dieser Schaltungsanordnung
US7930165B2 (en) * 2008-02-07 2011-04-19 Accemic Gmbh & Co. Kg Procedure and device for emulating a programmable unit providing system integrity control
US9069918B2 (en) * 2009-06-12 2015-06-30 Cadence Design Systems, Inc. System and method implementing full-rate writes for simulation acceleration
US9384107B2 (en) * 2010-11-08 2016-07-05 Mentor Graphics Corporation Improper voltage level detection in emulation systems
KR20160049200A (ko) * 2014-10-27 2016-05-09 삼성전자주식회사 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
CN104536807B (zh) * 2014-12-30 2018-05-18 武汉理工大学 基于fpga的dc/dc实时仿真器及方法
US9286424B1 (en) * 2015-05-04 2016-03-15 Synopsys, Inc. Efficient waveform generation for emulation
US9852244B2 (en) 2015-05-04 2017-12-26 Synopsys, Inc. Efficient waveform generation for emulation
US10210294B1 (en) * 2015-07-09 2019-02-19 Xilinx, Inc. System and methods for simulating a circuit design
US9684746B2 (en) * 2015-10-13 2017-06-20 Synopsys, Inc. Signal reconstruction in sequential logic circuitry
US11038768B1 (en) * 2016-09-15 2021-06-15 Xilinx, Inc. Method and system for correlation of a behavioral model to a circuit realization for a communications system

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0437491B1 (en) 1988-10-05 1995-12-13 Quickturn Systems Inc Method of using electronically reconfigurable gate array logic and apparatus formed thereby
US5109353A (en) 1988-12-02 1992-04-28 Quickturn Systems, Incorporated Apparatus for emulation of electronic hardware system
JPH05151305A (ja) * 1991-11-29 1993-06-18 Hokuriku Nippon Denki Software Kk 論理検証装置
US5475830A (en) 1992-01-31 1995-12-12 Quickturn Design Systems, Inc. Structure and method for providing a reconfigurable emulation circuit without hold time violations
US5398330A (en) * 1992-03-05 1995-03-14 Seiko Epson Corporation Register file backup queue
JPH05274384A (ja) * 1992-03-26 1993-10-22 Sharp Corp アナログ回路の設計方法
US5425036A (en) 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
IL109921A (en) * 1993-06-24 1997-09-30 Quickturn Design Systems Method and apparatus for configuring memory circuits
US5568380A (en) 1993-08-30 1996-10-22 International Business Machines Corporation Shadow register file for instruction rollback
US5455929A (en) * 1993-10-14 1995-10-03 Texas Instruments Incorporated Logic simulator employing hierarchical checkpointing
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5604889A (en) * 1994-06-15 1997-02-18 Texas Instruments Incorporated Memory management system for checkpointed logic simulator with increased locality of data
US5819065A (en) * 1995-06-28 1998-10-06 Quickturn Design Systems, Inc. System and method for emulating memory
US5777489A (en) 1995-10-13 1998-07-07 Mentor Graphics Corporation Field programmable gate array with integrated debugging facilities
US5822564A (en) * 1996-06-03 1998-10-13 Quickturn Design Systems, Inc. Checkpointing in an emulation system
JP2916420B2 (ja) * 1996-09-04 1999-07-05 株式会社東芝 チェックポイント処理加速装置およびデータ処理方法
TW379298B (en) * 1996-09-30 2000-01-11 Toshiba Corp Memory updating history saving device and memory updating history saving method
US5960191A (en) 1997-05-30 1999-09-28 Quickturn Design Systems, Inc. Emulation system with time-multiplexed interconnect
US5943490A (en) 1997-05-30 1999-08-24 Quickturn Design Systems, Inc. Distributed logic analyzer for use in a hardware logic emulation system
US6138266A (en) * 1997-06-16 2000-10-24 Tharas Systems Inc. Functional verification of integrated circuit designs
US6035117A (en) 1998-03-31 2000-03-07 International Business Machines Corporation Tightly coupled emulation processors
US6051030A (en) 1998-03-31 2000-04-18 International Business Machines Corporation Emulation module having planar array organization
US6061511A (en) 1998-06-12 2000-05-09 Ikos Systems, Inc. Reconstruction engine for a hardware circuit emulator
KR100337006B1 (ko) 1998-11-17 2002-05-17 김 만 복 전자회로 설계검증장치 및 방법
US6622263B1 (en) * 1999-06-30 2003-09-16 Jack Justin Stiffler Method and apparatus for achieving system-directed checkpointing without specialized hardware assistance
US6697957B1 (en) 2000-05-11 2004-02-24 Quickturn Design Systems, Inc. Emulation circuit with a hold time algorithm, logic analyzer and shadow memory
US6766428B2 (en) * 2001-04-06 2004-07-20 Sun Microsystems, Inc. Method and apparatus for storing prior versions of modified values to facilitate reliable execution
US6948112B2 (en) * 2001-05-10 2005-09-20 Hewlett-Packard Development Company, L.P. System and method for performing backward error recovery in a computer
US6941489B2 (en) * 2002-02-27 2005-09-06 Hewlett-Packard Development Company, L.P. Checkpointing of register file
US7058849B2 (en) * 2002-07-02 2006-06-06 Micron Technology, Inc. Use of non-volatile memory to perform rollback function

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014002712A (ja) * 2012-05-25 2014-01-09 Fujitsu Ltd シミュレーション方法、およびシミュレーションプログラム

Also Published As

Publication number Publication date
KR20040067996A (ko) 2004-07-30
JP4439926B2 (ja) 2010-03-24
EP1441296A2 (en) 2004-07-28
KR101044169B1 (ko) 2011-06-24
TWI349231B (en) 2011-09-21
CN100359473C (zh) 2008-01-02
US20040148153A1 (en) 2004-07-29
US7440884B2 (en) 2008-10-21
CN1573695A (zh) 2005-02-02
TW200424941A (en) 2004-11-16

Similar Documents

Publication Publication Date Title
JP4439926B2 (ja) ハードウェアエミュレータのためのメモリリワインド及び再構築
US7437692B2 (en) Memory debugger for system-on-a-chip designs
JP4989629B2 (ja) 複製ロジック及びトリガロジックを用いたデバッグのための方法及びシステム
US4769817A (en) Concurrent fault simulation for logic designs
Civera et al. Exploiting circuit emulation for fast hardness evaluation
EP3785124B1 (en) Memory validity states in time-travel debugging
US7404160B2 (en) Method and system for hardware based reporting of assertion information for emulation and hardware acceleration
US20110184713A1 (en) Dynamic-based verification apparatus for verification from electronic system level to gate level, and verification method using the same
US20060271345A1 (en) Debugging a circuit using a circuit simulation verifier
US6829751B1 (en) Diagnostic architecture using FPGA core in system on a chip design
US8259517B2 (en) Random access memory for use in an emulation environment
US7555424B2 (en) Method and apparatus for rewinding emulated memory circuits
EP1913410B1 (en) Method and system for debug and test using replicated logic
Attia et al. StateMover: Combining simulation and hardware execution for efficient FPGA debugging
EP1546947A2 (en) Method and system for debugging using replicated logic
Gong et al. Modeling dynamically reconfigurable systems for simulation-based functional verification
Attia et al. Stop and look: A novel checkpointing and debugging flow for FPGAs
EP1450278B1 (en) Methods and apparatus for verifying the operation of a circuit design
Gong et al. Functional verification of dynamically reconfigurable FPGA-based systems
US20090055155A1 (en) Simulating execution of software programs in electronic circuit designs
Chuang et al. A snapshot method to provide full visibility for functional debugging using FPGA
JP3838756B2 (ja) 回路設計支援装置
Attia Hardware Checkpointing and Productive Debugging Flows for FPGAs
de Andrés et al. Fast run-time reconfiguration for SEU injection
Ulrich et al. Fault Simulation of Diagnostic Programs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090528

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090827

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090901

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091027

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091127

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100106

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

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

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees