JP5935319B2 - 回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラム - Google Patents

回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラム Download PDF

Info

Publication number
JP5935319B2
JP5935319B2 JP2011284409A JP2011284409A JP5935319B2 JP 5935319 B2 JP5935319 B2 JP 5935319B2 JP 2011284409 A JP2011284409 A JP 2011284409A JP 2011284409 A JP2011284409 A JP 2011284409A JP 5935319 B2 JP5935319 B2 JP 5935319B2
Authority
JP
Japan
Prior art keywords
circuit
data
memory
bits
emulator
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
JP2011284409A
Other languages
English (en)
Other versions
JP2013134617A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011284409A priority Critical patent/JP5935319B2/ja
Priority to US13/669,572 priority patent/US20130166273A1/en
Publication of JP2013134617A publication Critical patent/JP2013134617A/ja
Application granted granted Critical
Publication of JP5935319B2 publication Critical patent/JP5935319B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

Description

本願開示は、回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラムに関する。
LSI回路(Large Scale Integrated circuit:大規模集積回路)のハードウェア開発のためには、設計した回路が正しく動作するか否かを検証するために、論理シミュレーションを行う。論理シミュレーションでは、例えばVerilog等のハードウェア記述言語により検証対象の回路を記述し、その回路記述をコンパイルしてエミュレータ用の構成データを生成する。この生成した構成データをエミュレータにダウンロードして、検証対象の回路をエミュレータにマッピングすることにより、検証対象の回路をエミュレータ上に実現する。このエミュレータ上の回路を動作させることにより、回路が正しく動作するか否かを検証することができる。
一般に、CPU(Central Processing Unit)等からメモリにデータを読み書きする場合、ECC(エラー訂正コード)の計算により生成したECCビット(冗長ビット)を用いて、データのエラー検出及び訂正を行う。具体的には、データ書き込み動作時にデータをECCビットと共にメモリに書き込み、データ読み出し動作時にメモリから読み出したデータとECCビットとに基づいてデータに対するエラー検出及び訂正を行う。キャッシュメモリを有するプロセッサの場合には、キャッシュライン毎にメモリコントローラがECCビットを生成し、このECCビットとキャッシュラインのデータとをDIMM(Dual Inline Memory Module)等のメモリに書き込む。データ読み出し動作時には、メモリから読み出したデータとECCビットとに基づいてメモリコントローラがECC計算を実行することにより、データに対するエラー検出及び訂正を行う。なおエラー検出や訂正の為の冗長ビットは、ECCビットである必要はなく、例えばパリティー検査用のビットやCRC(巡回冗長符号)検査用のビット等であってよい。
論理シミュレーションの場合、検証対象の回路がアクセスするエミュレータのメモリ(物理的なメモリ)中のビットは、初期デフォールト状態において全てゼロになっている。即ち初期デフォールト状態においては、データビットが全てゼロであると共に、対応する冗長ビット(例えばECCビット)も全てゼロになっている。このとき、全ビットがゼロのデータに対する正しい冗長ビットが例えば“ff”であるとすると、冗長ビットの初期設定動作を実行しておくことが一般的には必要になる。即ち、エミュレータによる検査対象の回路の動作を開始する前に、これら全ビットがゼロである全てのメモリ領域に対して、冗長ビットを“ff”に初期設定しておく。何故なら、冗長ビットが“00”のままでは、これら全ビットがゼロであるメモリ領域からデータを読み出す際に、エラーが検出されてしまうからである。
検証対象のCPUが実行するテストプログラムが格納されているメモリ領域以外のメモリ領域は、殆どが初期デフォールト状態においてゼロになっている。メモリ容量が増大すると、これらのゼロのメモリ領域の量も増大し、上記のように冗長ビットに正しい初期設定値(例えば“ff”)を書き込む動作に長い時間がかかってしまう、という問題がある。またエミュレータの動作においては、所定の復元ポイントから動作を再開するために、メモリのデータ内容を全て記録しておき、必要に応じて記録しておいたデータ内容をメモリに復元する処理が行われる。この際、全てのビットがゼロであるメモリ領域については、エミュレータによるデータ記録及び復元を省略することが可能である。しかしながら、上述のように冗長ビットに“ff”が書き込まれていると、エミュレータによるデータ記録及び復元を省略することができなくなり、データ記録及び復元に長い時間がかかってしまう、という問題がある。
特開2009−64238号公報
1つの側面では、本発明は、冗長ビットを備えたメモリに対して全ビットがゼロのデータの効率的な取り扱いを可能にする回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラムが望まれる。
回路エミュレーション装置は、回路の動作を模擬するエミュレータ部と、模擬対象の前記回路が物理的なメモリから読み出したデータの情報ビット及び冗長ビットの全てがゼロの場合に、前記冗長ビットを所定のビットパターンで置き換える置換部と、前記情報ビットと置き換えた前記所定のビットパターンとを前記読み出したデータとして前記回路に供給する供給部を有することを特徴とする。
回路エミュレーション方法は、回路エミュレータが、回路の動作を模擬し、模擬対象の前記回路が物理的なメモリから読み出したデータの情報ビット及び冗長ビットの全てがゼロの場合に、前記冗長ビットを所定のビットパターンで置き換え、前記情報ビットと置き換えた前記所定のビットパターンとを前記読み出したデータとして前記回路に供給することを特徴とする。
回路エミュレーションプログラムは、回路エミュレーションプログラムにおいて、回路エミュレータに、回路の動作を模擬させ、模擬対象の前記回路が物理的なメモリから読み出したデータの情報ビット及び冗長ビットの全てがゼロの場合に、前記冗長ビットを所定のビットパターンで置き換えさせ、前記情報ビットと置き換えた前記所定のビットパターンとを前記読み出したデータとして前記回路に供給させることを特徴とする。
本願開示の1つの実施例によれば、冗長ビットを備えたメモリに対して全ビットがゼロのデータの効率的な取り扱いを可能にすることができる。
図1は、ホストマシンとエミュレータとの関係を示す図である。 エミュレータ上の検証対象の回路の構成の一例をメモリと共に示す図である。 メモリ中のECCビットの設定について説明する図である。 初期デフォールト値のゼロであるデータを読み出す際のECCエラーを回避する構成の一例を示す図である。 ECC補間回路の構成の一例を示す図である。 エミュレーション動作に伴うメモリ内のデータ内容の変化を模式的に示す図である。 ホストマシンが実行する処理の流れを示すフローチャートである。 エミュレータが実行する処理の流れを示すフローチャートである。 ホストマシンの構成の一例を示す図である。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、ホストマシンとエミュレータとの関係を示す図である。図1に示すように、ホストマシン10がエミュレータ11に接続されている。ホストマシン10は、データとしてエミュレータデザイン12及びテストプログラム13を有する。ホストマシン10はまた、エミュレータ11の状態を示すデータ等を格納するための記憶装置14を含む。論理シミュレーションでは、例えばVerilog等のハードウェア記述言語により検証対象の回路を記述し、その回路記述をホストマシン10によりコンパイルしてエミュレータ用の構成データを生成する。この生成した構成データがエミュレータデザイン(エミュレーションプログラム)12である。ホストマシン10は、エミュレータデザイン12をエミュレータ11にダウンロードし、エミュレータ11上に検証対象の回路をマッピングする。即ち、エミュレータ11のハードウェアリソースを用いて、エミュレータ11上に検証対象の回路を構成する。図1では、エミュレータ11上に構成された検証対象の回路がエミュレータデザイン15として示されている。
エミュレータデザイン15である検証対象の回路が例えばCPUである場合には、ホストマシン10が、エミュレータ11のメモリ16にテストプログラム13を書き込む。エミュレータ11上に構成された検証対象の回路は、メモリ16に格納されたテストプログラム13の各命令を随時フェッチして実行することにより、所定の動作を実行する。このようにして検証対象の回路の動作をエミュレータ11により模擬し、その回路動作が正常に完了したか否かを、ホストマシン10を介してチェックする。このホストマシン10によるチェックにより、検証対象の回路の論理設計に問題があるか否かを確認することができる。なおメモリ16は、エミュレーションにより実現される模擬回路ではなく、エミュレータ11上の物理的なメモリである。このメモリ16は、テストプログラム13の格納領域として用いられると共に、検証対象の回路がその動作のために使用するワーク領域として用いられる。
図2は、エミュレータ11上の検証対象の回路の構成の一例をメモリ16と共に示す図である。図2において、図1と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。図2に示すCPU20が検証対象の回路である。CPU20は、2つのコア回路21及び22、キャッシュメモリ23、及びメモリコントローラ24を含む。CPU20は、メモリ16に対するデータ読み出し動作及びデータ書き込み動作を実行する。図2において、CPU20はエミュレータ11により実現された検証対象の回路であり、物理的に固定のハードウェアとして製造された回路ではなく、エミュレータ11のハードウェアにマッピングされ論理合成された回路である。エミュレータ11は、FPGA(Field Programmable Gate Array)ベースのエミュレータであってもよいし、或いはプロセッサベースのエミュレータであってもよい。ここでプロセッサベースのエミュレータは、複数の演算器をネットワーク回路で接続したダイナミックリコンフィギャラブル回路であってよい。そのようなダイナミックリコンフィギャラブル回路では、ネットワーク回路による演算器間の接続と演算命令とを、コンフィギュレーションデータに基づいて再構成可能に設定することができる。また図2において、メモリ16は、エミュレータ11のメモリであり、物理的に固定のハードウェアとして製造された半導体集積回路による記憶装置である。
図2に示すCPU20の構成例は一例であり、この構成に限定されるものではない。この構成例では、2つのコア回路21及び22が設けられており、これらコア回路21及び22が1つのキャッシュメモリ23を共有している。コア回路21及び22は、フェッチした命令をデコードし、デコード結果に応じて各種の算術論理演算を実行するプロセッサ部分である。キャッシュメモリ23は高速なデータ読み書きが可能なメモリであり、主記憶であるメモリ16に記憶される情報の一部をキャッシュメモリ23にコピーしておくことで、この情報に対する高速なアクセスを可能にする。キャシュは複数のキャッシュラインを含み、主記憶からキャシュへの情報のコピーはキャシュライン単位で実行される。主記憶のメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュの容量は主記憶の容量よりも小さいので、主記憶のメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。
コア回路21又は22により、メモリ空間上のあるアドレスに最初のアクセスが実行されると、そのアドレスを含むキャッシュラインのデータをメモリ16からキャッシュメモリ23内の対応するキャッシュラインにコピーする。このようなコピー動作により既にアクセス対象のデータがキャッシュメモリ23中に存在する場合には、アクセス動作は、キャッシュメモリ23中の対応キャッシュデータ(1キャッシュライン分の所定ビット数のデータ)に対して実行される。アクセス対象のデータがキャッシュメモリ23中に存在しない場合にはキャッシュミスとなる。キャッシュミスの場合には、必要に応じて置き換え対象のキャッシュデータをメモリ16に書き込んだ後に、キャッシュデータ(1キャッシュライン分の所定ビット数のデータ)をメモリ16からキャッシュメモリ23にコピーする。
メモリコントローラ24は、1キャッシュライン分のデータをメモリ16に書き込む場合には、そのデータに対するECC演算等により冗長ビットを生成し、データと共に冗長ビットをメモリ16に格納する。メモリコントローラ24は、1キャッシュライン分のデータをメモリ16から読み出す場合には、対応する冗長ビットもメモリ16から読み出し、データビット(情報ビット)と冗長ビットに対するECC演算等を実行することにより、エラー検出や訂正を行う。以下においては、一例として、冗長ビットがECCビットであるものとして説明をするが、エラー検出や訂正の為の冗長ビットはECCビットに限定されるものではない。冗長ビットは、例えばパリティー検査用のビットやCRC(巡回冗長符号)検査用のビット等であってもよい。
図3は、メモリ16中のECCビットの設定について説明する図である。図3(a)は、従来のメモリ中のECCビットの設定を示す図である。図3(b)は、本実施例のメモリ16中のECCビットの設定を示す図である。図3(a)及び図3(b)において、各行はアドレスADRSとそれに対応するデータDATAが示される。データDATAの幅は14バイトであり、1つのキャッシュラインのデータ幅に相当する。アドレスADRSは、順番に並ぶ1キャッシュライン分の所定ビット幅のデータ毎(即ち各行毎)に1つずつアドレスが増加する設定となっている。14バイトのデータのうち、先頭の1バイトがECCビットであり、残りの13バイトがデータビット(情報ビット)である。なお図3(a)及び図3(b)において、各桁の数値は16進数(0〜f)であり、各桁が4ビットに相当する。またメモリにおいては、初期デフォールト状態では全てのデータ(全てのビット)がゼロになっている。
図3(a)に示されるように、従来のECCビットの設定では、ECCビット31が全てのデータ(全ての1キャッシュライン分の所定ビット幅のデータ)に対して、適切なビット値に設定されている。即ち、13バイトのデータビットに対してECC演算を施して求められたECCビットの値が、ECCビット31に設定されている。アドレス“00000000”や“00000fff”等のデータのように、初期デフォールト値“0”ではない書き込まれたデータに対しては、ECCビット31のビット値の設定は、前述のように、メモリコントローラ24が実行するECC演算により計算される。この計算されたECCビットが、書き込み対象のデータビットとともに、メモリ16に書き込まれている。またアドレス“00000002”や“00010000”等のデータのように、初期デフォールト値“0”のままであるデータに対しては、全てゼロのデータビットに対応するECCビット“ff”が、初期設定処理によりメモリ16に書き込まれている。
図3(b)に示されるように、本実施例によるECCビットの設定では、ECCビット32は、ゼロでない全てのデータ(1キャッシュライン分の所定ビット幅のデータのうちゼロでない全てのデータ)に対して、適切なビット値に設定されている。即ち、アドレス“00000000”や“00000fff”等のデータのように、初期デフォールト値“0”ではない書き込まれたデータに対しては、ECCビット32のビット値の設定は、メモリコントローラ24が実行するECC演算により計算される。この計算されたECCビットが、書き込み対象のデータビットとともに、メモリ16に書き込まれている。それに対し、アドレス“00000002”や“00010000”等のデータのように、初期デフォールト値“0”のままであるデータに対しては、ECCビット32のビット値も初期デフォールト値“00”のままである。
本実施例では、図3(b)に示すように、ECCビット32のビット値を初期デフォールト値“00”のままにしておく。つまり、図3(a)に示す従来技術の場合のように、ECCビットに対する初期設定動作を実行しない。これにより、エミュレータ11のエミュレーション開始時に、種々の初期設定動作にかかる時間を短縮することができる。
図4は、初期デフォールト値のゼロであるデータを読み出す際のECCエラーを回避する構成の一例を示す図である。図4において、図1と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。図4に示されるように、メモリコントローラ24とメモリ16との間には、メモリ16からのデータ読み出し経路にECC補間回路41が設けられている。このECC補間回路41は、検証対象の回路即ちCPU20に含まれる回路ではないが、物理的に固定のハードウェアとして製造された回路ではなく、エミュレータ11のハードウェアにマッピングされ論理合成された回路であってよい。即ち、図1に示すシステムにおいて、エミュレータデザイン12に付加回路としてECC補間回路41のデザインを含めておき、このECC補間回路41をCPU20と共にエミュレータ11にマッピングして、論理合成してよい。或いは、エミュレータ11が、物理的に固定のハードウェアとして、ECC補間回路41に相当する組み込み機能を有していてもよい。
ECC補間回路41は、CPU20のメモリコントローラ24がメモリ16から読み出したデータのデータビット(情報ビット)及び冗長ビットの全ビットがゼロの場合に、冗長ビットを所定のビットパターンで置き換える。この置き換え処理により、ECC補間回路41は、データビット(情報ビット)と所定のビットパターンとを、読み出したデータとしてCPU20のメモリコントローラ24に供給する。またECC補間回路41は、メモリコントローラ24がメモリ16から読み出したデータのデータビット及び冗長ビットのうち少なくとも1ビットがゼロでない場合に、当該データビットと冗長ビットとを、読み出したデータとしてメモリコントローラ24に供給する。これらのECC補間回路41による処理は、エミュレーション動作の一部として、エミュレータ11によるCPU20のエミュレーション動作において読み出し動作が発生したときに実行される。
図5は、ECC補間回路41の構成の一例を示す図である。図5に示すECC補間回路41は、ゼロ検出器51、ECC発生回路52、一方の入力が正論理で他方の入力が負論理のAND回路53、両方の入力が正論理のAND回路54、及びOR回路55を含む。ゼロ検出器51は、メモリ16から読み出されたデータのデータビット(図5に示す読み出しデータ)とECCビット(図5に示すECC)との両方共に全ビットが0であるときに、出力を1にする。上記データビットとECCビットとのうち少なくとも1つのビットが1であるときに、ゼロ検出器51の出力は0となる。ゼロ検出器51の出力は、そのままの正論理の値がAND回路54の一方の入力に印加されると共に、その負論理の値がAND回路53の一方の入力に印加される。AND回路54の他方の入力は、ECC発生回路52からの出力を受け取り、AND回路53の他方の入力は、メモリ16から読み出されたECCビットを受け取る。AND回路54の出力とAND回路53の出力とは、OR回路55に入力される。このOR回路55の出力が、ECCビットとしてメモリコントローラ24に供給される。またメモリ16から読み出された読み出しデータは、そのままメモリコントローラ24に読み出しデータとして供給される。なおECCのビット数をnとすると、AND回路53はn個のANDゲートを含み、その出力はnビットである。同様に、AND回路54もn個のANDゲートを含み、その出力はnビットである。OR回路55はn個のORゲートを含み、その出力はnビットである。
データビットとECCビットとの全ビットが0であれば、ECC発生回路52の出力が、ECCビットとしてメモリコントローラ24に供給される。またデータビットとECCビットとのうち少なくとも1つのビットが1であれば、メモリ16から読み出されたECCビットが、ECCビットとしてメモリコントローラ24に供給される。ここでECC発生回路52の出力は、データビット(情報ビット)が全てゼロであるデータに対する正しい冗長ビットのビットパターンである。即ち図3(b)の例の場合、ECC発生回路52の出力は“ff”となる。
このように、データビットとECCビットとの全ビットが0である場合、即ち初期デフォールト値のままのデータをメモリ16から読み出した場合には、エラーが検出されないような正しい冗長ビットにより読み出した冗長ビットを置き換える。このようにして置き換えられた正しい冗長ビットと読み出したデータビットとを、メモリコントローラ24に読み出しデータとして供給する。従って、図3(b)に示すようにECCビット32のビット値を初期デフォールト値“00”のままにしておいても、データを読み出した時にメモリコントローラ24によりECCエラーが検出されることがない。
図6は、エミュレーション動作に伴うメモリ内のデータ内容の変化を模式的に示す図である。図6(a)は、従来のエミュレーション動作に伴うメモリ内のデータの変化を示す図である。図6(b)は、本実施例のエミュレーション動作に伴うメモリ内のデータの変化を示す図である。時間T1は、エミュレーション開始時におけるメモリ空間の状態を示す。
図6(a)に示す従来のエミュレーション動作では、時間T1において、メモリ内の全てのメモリ領域は、全ビットにゼロが格納された初期デフォールト値領域61となっている。時間T2において、テストプログラム62が書き込まれる。このとき、テストプログラム62が書き込まれていないメモリ領域は、初期デフォールト値領域61のままである。時間T3において、初期設定動作により初期デフォールト値領域61にECCビットを書き込むことにより、テストプログラム62以外のメモリ領域は、ECCビット“ff”が格納された初期設定完了領域63となる。時間T4で、テストプログラムがCPU20(図2参照)により実行され、このテストプログラム実行の結果としてメモリ領域内に種々の実行結果データ64が書き込まれる。
時間T5で、メモリのデータ内容を全て記録する動作が実行される。メモリのデータ内容を全て記録した先のメモリ状態が、図6(a)の時間T5に示されている。前述のように、エミュレータの動作においては、所定の復元ポイントから動作を再開するために、メモリのデータ内容を全て記録しておき、必要に応じて記録しておいたデータ内容をメモリに復元する処理が行われる。例えば図1のシステムの場合、メモリ16の内容を全て記憶装置14にコピーすることにより、メモリ16のデータ内容を記録する。図6(a)の時間T5に示すのは、メモリ16のデータ内容を記録した記憶装置14内のメモリ領域の格納データである。メモリ16の全てのデータ(テストプログラム62、初期設定完了領域63、実行結果データ64)が記憶装置14に格納されている。これは、メモリ16の全てのアドレスにゼロでない何らかの値が書き込まれているために、全てのアドレスのデータが記録対象として、記憶装置14にコピーされるからである。このような記録動作は、例えば所定の時間間隔(クロック間隔)で実行されてよい。
時間T6で、記録しておいたデータ内容をメモリに復元する動作が実行される。データが復元されたメモリ16のメモリ状態が、図6(a)の時間T6に示されている。時間T5でデータ内容の記録動作が実行された後に、テストプログラム62が引き続き実行され、メモリ16のデータ内容は変更される。その後例えばエラーが発生すると、前回データ記録を行った時間に遡ってその時間からプログラム実行を再開するために、上記のデータ復元動作が実行される。この復元動作により、時間T6に示されるメモリ16のメモリ状態は、時間T4におけるメモリ状態に等しい状態に戻されることになる。この復元動作においても、全てのデータ(テストプログラム62、初期設定完了領域63、実行結果データ64)が記憶装置14からメモリ16に転送されることになる。
図6(b)に示す本実施例のエミュレーション動作では、時間T1において、メモリ内の全てのメモリ領域は、全ビットにゼロが格納された初期デフォールト値領域71となっている。時間T2において、テストプログラム72が書き込まれる。このとき、テストプログラム72が書き込まれていないメモリ領域は、初期デフォールト値領域71のままである。本実施例のエミュレーション動作では、時間T3の初期設定動作は実行されない。時間T4で、テストプログラムがCPU20(図2参照)により実行され、このテストプログラム実行の結果としてメモリ領域内に種々の実行結果データ74が書き込まれる。
時間T5で、メモリのデータ内容を記録する動作が実行される。メモリのデータ内容を記録した先のメモリ状態が、図6(b)の時間T5に示されている。図1のシステムの場合、メモリ16の内容を記憶装置14にコピーすることにより、メモリ16のデータ内容を記録する。図6(b)の時間T5に示すのは、メモリ16のデータ内容を記録した記憶装置14内のメモリ領域の格納データである。メモリ16に格納されるテストプログラム72、初期設定完了領域73、及び実行結果データ74のうち、テストプログラム72及び実行結果データ74のみがメモリ16から記憶装置14にコピーされている。即ち、初期デフォールト値領域71のデータは全ビットがゼロであるので、そのように全ビットがゼロである格納データのアドレスを除いて、残りのアドレスのデータをメモリ16から記憶装置14にコピーする。このような選択的なコピー動作は、エミュレータ11に設けられているデータ記録機能により実行される。
時間T6で、記録しておいたデータ内容をメモリに復元する動作が実行される。データが復元されたメモリ16のメモリ状態が図6(b)の時間T6に示されている。エラー発生後にこの復元動作を実行する際には、エミュレーション動作の再開に伴い、メモリ16の内容が初期デフォールト状態に戻される。従って、復元動作においてテストプログラム72及び実行結果データ74のみを記憶装置14からメモリ16に転送することにより、時間T6に示されるメモリ16のメモリ状態は、時間T4におけるメモリ状態に等しい状態に戻されることになる。このように、本実施例のエミュレーション動作においては、初期デフォールト状態のデータを格納するアドレスについて、データ記録動作及びデータ復元動作での記録及び復元の対象としない、即ちデータのコピー及び転送を行わない。
このように、メモリ16の内容を記憶装置14に記録し且つ記憶装置14からメモリ16の内容をメモリ16に復元する記録復元動作において、メモリ16に格納されるデータのうち全ビットがゼロであるデータを除いた全てのデータを記憶装置14に記録する。これにより、データ記録動作及びデータ復元動作でのコピー及び転送するデータ量を削減し、効率的なエミュレーション動作が可能となる。
図7は、ホストマシンが実行する処理の流れを示すフローチャートである。シミュレーションが開始されると、ステップS1で、ホストマシン10がエミュレータデザイン12をエミュレータ11にダウンロードする。これにより、エミュレータ11上に検証対象の回路をマッピングする。即ち、エミュレータ11のハードウェアリソースを用いて、エミュレータ11上に検証対象の回路を構成する。例えばリコンフィギュラブル回路ベースのエミュレータの場合、エミュレータ11は、リコンフィギュラブル演算器アレイ、シーケンサ、及びコンフィギュレーションメモリを含む。リコンフィギュラブル演算器アレイは、複数の演算器とこれら演算器間を再構成可能に接続するネットワーク回路とを含む。複数の演算器の各々が実行する演算はコンフィギュレーションデータ(エミュレータデザイン12)中の演算命令により指定され、複数の演算器間の接続形態はコンフィギュレーションデータ中の接続データにより指定される。これらのコンフィギュレーションデータは、エミュレータ11にダウンロードされ、エミュレータ11のコンフィギュレーションメモリに格納される。シーケンサは、コンフィギュレーションメモリに格納される複数のコンフィギュレーションデータの内で、リコンフィギュラブル演算器アレイの現在の実行形態を指定するコンフィギュレーションデータを選択する。シーケンサにより指定されたコンフィギュレーションデータがリコンフィギュラブル演算器アレイに供給され、そのコンフィギュレーションデータに従った演算実行形態でリコンフィギュラブル演算器アレイが動作する。このようにして、再構成可能な回路を実現する。また例えばFPGAベースのエミュレータの場合であれば、上記の複数の演算器とネットワーク回路との代りに、複数の論理ゲートとこれら演算器間を再構成可能に接続するネットワーク回路とにより、再構成可能な回路を実現する。
ステップS2で、ホストマシン10は、メモリ16のデータ内容を復元するか否かを判定する。復元する場合(ステップS2でYESの場合)には、ホストマシン10が記憶装置14に格納されているデータをエミュレータ11のメモリ16に復元してから、処理はステップS5に進む。復元しない場合(ステップS2でNOの場合)には、ステップS3で、ホストマシン10がエミュレータ11に指示することにより、エミュレータ11にエミュレータデザインをリセット処理させるとともに、必要な初期設定動作を実行させる。これにより、CPU20がテストプログラム13を実行するためのプログラムカウンタのスタート番地の設定等が行われる。更にステップS4で、ホストマシン10が、テストプログラム13をエミュレータ11のメモリ16に書き込む。
ステップS5で、ホストマシン10は、エミュレータ11に対してクロック数を1000に設定し、エミュレータ11によるCPU20の動作の実行を開始させる。ステップS6で、ホストマシン10は、エミュレータ11によるCPU20の動作実行によりエラー発生したか、実行が終了したか、或いは1000クロック分の動作を実行したか否かを監視する。ステップS6の監視において、1000クロック分の動作の実行を検出した場合、ステップS7で、ホストマシン10は、エミュレータ11に指示することにより、エミュレータ11の状態を記録させる。これにより、例えば、エミュレータ11の状態(CPU20の回路の状態)を示す種々のデータと共に、エミュレータ11のメモリ16のメモリ内容がホストマシン10の記憶装置14に記録される。その後、ステップS5に戻り、以降の処理を繰り返す。またステップS6の監視において、エラー発生が検出された場合、ステップS8において、ホストマシン10はエミュレータ11の状態を示す種々のデータを収集する。またステップS6の監視において、CPU20の動作の終了を検出した場合、処理は終了する。
図8は、エミュレータが実行する処理の流れを示すフローチャートである。
ステップS11において、メモリ16のデータ内容を復元するか否かに応じて処理が異なる。復元する場合には、ステップS12において、ホストマシン10からの指示に応じて、エミュレータ11が、ホストマシン10の記憶装置14からメモリ16のデータ内容をエミュレータ11のメモリ16に復元する。また更に、エミュレータ11上のCPU20の回路の状態を、記録ファイルに基づいて復元する。復元しない場合には、ステップS13において、エミュレータ11はクロック数を1000に設定し、エミュレータ11によるCPU20の動作の実行を開始する。ステップS14で、エミュレータ11は、CPU20の動作実行によりエラーが発生したこと、実行が終了したこと、或いは1000クロック分の動作を実行したことを検出すると、処理を中断又は終了する。ステップS15において1000クロック分の動作の実行を検出した場合、ステップS16で、ホストマシン10からの指示に基づき、エミュレータ11は回路の状態を記録する。例えば、エミュレータ11の状態(CPU20の回路の状態)を示す種々のデータと共に、エミュレータ11のメモリ16のメモリ内容をホストマシン10に送信し、ホストマシン10は送信されたデータを記憶装置14に記録する。またステップS15において、CPU20の動作の終了を検出した場合、処理は終了する。
図9は、ホストマシンの構成の一例を示す図である。図9に示されるように、ホストマシンは、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図9の装置は、コンピュータ510と、コンピュータ510に接続されるディスプレイ装置520、通信装置523、及び入力装置よりなる。入力装置は、例えばキーボード521及びマウス522を含む。コンピュータ510は、CPU511、RAM512、ROM513、ハードディスク等の二次記憶装置514、可換媒体記憶装置515、及びインターフェース516を含む。
キーボード521及びマウス522は、ユーザとのインターフェースを提供するものであり、コンピュータ510を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置520は、コンピュータ510で処理された結果等を表示すると共に、コンピュータ510を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置523は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
上記の実施例で説明したホストマシン10の処理を実行する為のプログラムは、コンピュータ510が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置515に装着可能な記憶媒体Mに記憶されており、記憶媒体Mから可換媒体記憶装置515を介して、RAM512或いは二次記憶装置514にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体(図示せず)に記憶されており、この記憶媒体から通信装置523及びインターフェース516を介して、RAM512或いは二次記憶装置514にロードされる。
キーボード521及び/又はマウス522を介してユーザからプログラム実行指示があると、CPU511は、記憶媒体M、遠隔地記憶媒体、或いは二次記憶装置514からプログラムをRAM512にロードする。CPU511は、RAM512の空き記憶空間をワークエリアとして使用して、RAM512にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおROM513は、コンピュータ510の基本動作を制御するための制御プログラムが格納されている。
上記コンピュータプログラムを実行することにより、コンピュータ510が、ホストマシン10として、上記実施例で説明された動作を実行する。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
10 ホストマシン
11 エミュレータ
12 エミュレータデザイン
13 テストプログラム
14 記憶装置
15 エミュレータデザイン
16 メモリ
510 コンピュータ
511 CPU
512 RAM
513 ROM
514 二次記憶装置
515 可換媒体記憶装置
516 インターフェース
520 ディスプレイ装置
521 キーボード
522 マウス
523 通信装置

Claims (12)

  1. 回路の動作を模擬するエミュレータ部と、
    模擬対象の前記回路が物理的なメモリから読み出したデータの情報ビット及び冗長ビットの全てがゼロの場合に、前記冗長ビットを所定のビットパターンで置き換える置換部と、
    前記情報ビットと置き換えた前記所定のビットパターンとを前記読み出したデータとして前記回路に供給する供給部を有することを特徴とする回路エミュレーション装置。
  2. 前記所定のビットパターンは、情報ビットが全てゼロであるデータに対する冗長ビットのビットパターンであることを特徴とする請求項1記載の回路エミュレーション装置。
  3. 前記回路エミュレーション装置はさらに、
    前記回路が前記メモリから読み出した前記データの前記情報ビット及び前記冗長ビットのうち少なくとも1ビットがゼロでない場合、前記情報ビットと前記冗長ビットとを前記読み出したデータとして前記回路に供給する供給部を有することを特徴とする請求項1又は2記載の回路エミュレーション装置。
  4. 前記回路エミュレーション装置はさらに、
    前記メモリの内容を前記回路エミュレーション装置に接続される記憶装置に記録し且つ前記記憶装置から前記メモリの内容を前記メモリに復元する場合、前記メモリに格納されるデータのうち全ビットがゼロであるデータを除いた全てのデータを前記記憶装置に記録する復元部を有することを特徴とする請求項1乃至3何れか一項記載の回路エミュレーション装置。
  5. 回路エミュレータが、
    回路の動作を模擬し、
    模擬対象の前記回路が物理的なメモリから読み出したデータの情報ビット及び冗長ビットの全てがゼロの場合に、前記冗長ビットを所定のビットパターンで置き換え、
    前記情報ビットと置き換えた前記所定のビットパターンとを前記読み出したデータとして前記回路に供給することを特徴とする回路エミュレーション方法。
  6. 前記所定のビットパターンは、情報ビットが全てゼロであるデータに対する冗長ビットのビットパターンであることを特徴とする請求項5記載の回路エミュレーション方法。
  7. 前記回路エミュレーション方法はさらに、
    前記回路エミュレータが、
    前記回路が前記メモリから読み出した前記データの前記情報ビット及び前記冗長ビットのうち少なくとも1ビットがゼロでない場合、前記情報ビットと前記冗長ビットとを前記読み出したデータとして前記回路に供給することを特徴とする請求項5又は6記載の回路エミュレーション方法。
  8. 前記回路エミュレーション方法はさらに、
    前記回路エミュレータが、
    前記メモリの内容を前記回路エミュレータに接続される記憶装置に記録し且つ前記記憶装置から前記メモリの内容を前記メモリに復元する場合、前記メモリに格納されるデータのうち全ビットがゼロであるデータを除いた全てのデータを前記記憶装置に記憶することを特徴とする請求項5乃至7何れか一項記載の回路エミュレーション方法。
  9. 回路エミュレーションプログラムにおいて、
    回路エミュレータに、
    回路の動作を模擬させ、
    模擬対象の前記回路が物理的なメモリから読み出したデータの情報ビット及び冗長ビットの全てがゼロの場合に、前記冗長ビットを所定のビットパターンで置き換えさせ、
    前記情報ビットと置き換えた前記所定のビットパターンとを前記読み出したデータとして前記回路に供給させることを特徴とする回路エミュレーションプログラム。
  10. 前記所定のビットパターンは、情報ビットが全てゼロであるデータに対する冗長ビットのビットパターンであることを特徴とする請求項9記載の回路エミュレーションプログラム。
  11. 前記回路エミュレーションプログラムはさらに、
    前記回路エミュレータに、
    前記回路が前記メモリから読み出した前記データの前記情報ビット及び前記冗長ビットのうち少なくとも1ビットがゼロでない場合、前記情報ビットと前記冗長ビットとを前記読み出したデータとして前記回路に供給させることを特徴とする請求項9又は10記載の回路エミュレーションプログラム。
  12. 前記回路エミュレーションプログラムはさらに、
    前記回路エミュレータに、
    前記メモリの内容を前記回路エミュレータに接続される記憶装置に記録し且つ前記記憶装置から前記メモリの内容を前記メモリに復元する場合、前記メモリに格納されるデータのうち全ビットがゼロであるデータを除いた全てのデータを前記記憶装置に記憶させることを特徴とする請求項9乃至11何れか一項記載の回路エミュレーションプログラム。
JP2011284409A 2011-12-26 2011-12-26 回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラム Active JP5935319B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011284409A JP5935319B2 (ja) 2011-12-26 2011-12-26 回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラム
US13/669,572 US20130166273A1 (en) 2011-12-26 2012-11-06 Circuit emulation apparatus and circuit emulation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011284409A JP5935319B2 (ja) 2011-12-26 2011-12-26 回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラム

Publications (2)

Publication Number Publication Date
JP2013134617A JP2013134617A (ja) 2013-07-08
JP5935319B2 true JP5935319B2 (ja) 2016-06-15

Family

ID=48655405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011284409A Active JP5935319B2 (ja) 2011-12-26 2011-12-26 回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラム

Country Status (2)

Country Link
US (1) US20130166273A1 (ja)
JP (1) JP5935319B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015101388A1 (de) 2015-01-30 2016-08-04 Deutsche Telekom Ag Prüfsystem zur Prüfung eines Computers eines Computersystems in einem Prüfnetzwerk

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61259352A (ja) * 1985-05-13 1986-11-17 Nec Corp メモリコピ−方式
JPH0685280B2 (ja) * 1985-09-12 1994-10-26 株式会社東芝 オンチップメモリ検査回路
US5067110A (en) * 1989-10-10 1991-11-19 Advanced Micro Devices, Inc. Global reset and zero detection for a memory system
US5673419A (en) * 1995-05-19 1997-09-30 Simple Technology, Incorporated Parity bit emulator with write parity bit checking
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US20060064508A1 (en) * 2004-09-17 2006-03-23 Ramesh Panwar Method and system to store and retrieve message packet data in a communications network
US7562271B2 (en) * 2005-09-26 2009-07-14 Rambus Inc. Memory system topologies including a buffer device and an integrated circuit memory device
JP2009064238A (ja) * 2007-09-06 2009-03-26 Hitachi Ulsi Systems Co Ltd メモリシステム
US7991605B1 (en) * 2008-06-06 2011-08-02 Cadence Design Systems, Inc. Method and apparatus for translating a verification process having recursion for implementation in a logic emulator
US8001432B2 (en) * 2008-11-20 2011-08-16 Lsi Corporation Uninitialized memory detection using error correction codes and built-in self test
US8176294B2 (en) * 2009-04-06 2012-05-08 Red Hat Israel, Ltd. Reducing storage expansion of a virtual machine operating system
JP5413654B2 (ja) * 2009-06-29 2014-02-12 日本電気株式会社 回線エミュレーション方法および装置
US8452926B2 (en) * 2009-09-02 2013-05-28 Texas Instruments Incorporated Memory sharing arrangement

Also Published As

Publication number Publication date
JP2013134617A (ja) 2013-07-08
US20130166273A1 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
US7376887B2 (en) Method for fast ECC memory testing by software including ECC check byte
TWI488110B (zh) 狀態機引擎及其方法
TWI380178B (en) System and method for managing memory errors in an information handling system
CN101449244B (zh) 使用冗余虚拟机的错误检测
CN103930878A (zh) 用于存储器验证的方法、装置及系统
KR20170059219A (ko) 메모리 장치, 메모리 시스템 및 메모리 장치의 복구 검증 방법
TWI703499B (zh) 資料儲存裝置及其共享控制器中記憶體的方法
TWI456389B (zh) 儲存虛擬化系統中更新實體儲存裝置控制程式之方法及用此方法之儲存虛擬化控制器與系統
CN102436407A (zh) 模拟错误产生设备
US8626965B2 (en) Using a DMA engine to automatically validate DMA data paths
JP2002312340A (ja) L2訂正可能エラーのための複数のプロセッサ・コアの割振り解除方法
JP2008282308A (ja) 協調検証装置、協調検証方法、協調検証プログラム
JP5935319B2 (ja) 回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラム
JP2013238926A (ja) 信号処理回路およびそれを用いた試験装置
US9043655B2 (en) Apparatus and control method
US11687251B2 (en) Dynamic repartition of memory physical address mapping
JP2009020695A (ja) 情報処理装置及びシステム
JP7379932B2 (ja) 制御装置、ユーザプログラムの実行制御方法、およびシステムプログラム
US20210240646A1 (en) Master and slave processors to configure subsystems
JP2548475B2 (ja) アレイディスク装置のデータ復元量制御方法
JP2549222B2 (ja) アレイディスク装置のバックグラウンド処理実行方法
TWI678622B (zh) 資料儲存裝置的開發系統以及產品化方法
JP6123931B1 (ja) 情報処理装置、情報処理方法、およびプログラム
JP4324149B2 (ja) エミュレータ及びそれを用いた開発支援システム
JP5842655B2 (ja) 情報処理装置、プログラムおよびエラー処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151106

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160425

R150 Certificate of patent or registration of utility model

Ref document number: 5935319

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150