JP2010250365A - 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法 - Google Patents

協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法 Download PDF

Info

Publication number
JP2010250365A
JP2010250365A JP2009095972A JP2009095972A JP2010250365A JP 2010250365 A JP2010250365 A JP 2010250365A JP 2009095972 A JP2009095972 A JP 2009095972A JP 2009095972 A JP2009095972 A JP 2009095972A JP 2010250365 A JP2010250365 A JP 2010250365A
Authority
JP
Japan
Prior art keywords
clock
hardware
verification
software
circuit
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.)
Pending
Application number
JP2009095972A
Other languages
English (en)
Other versions
JP2010250365A5 (ja
Inventor
Tetsuya Hashimoto
哲也 橋本
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2009095972A priority Critical patent/JP2010250365A/ja
Publication of JP2010250365A publication Critical patent/JP2010250365A/ja
Publication of JP2010250365A5 publication Critical patent/JP2010250365A5/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】高速で動作する協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法を提供すること
【解決手段】本発明にかかる協調シミュレーションシステムは、検証対象回路210の検証をソフトウェアシミュレータ100とハードウェアエミュレータ200で協調して実行する協調シミュレーションシステムであって、検証対象回路210のに用いるクロックを、ソフトウェアクロックと、ハードウェアクロックのどちらか一方を選択するクロック制御回路203を備え、クロック制御回路203は、ソフトウェアシミュレータ100の保持するメモリモデルに従い検証対象回路210の検証を実施する場合は、ソフトウェアクロックを選択し、ハードウェアエミュレータ200の保持するメモリモデルに従い検証対象回路210の検証を実施する場合は、ハードウェアクロックを選択するものである。
【選択図】図1

Description

本発明は協調シミュレーションシステム、ハードウェアエミュレータ及び協調シミュレーション方法に関し、特にクロック制御を用いた協調シミュレーションに関する。
製品開発における動作検証シミュレーションの分野において、LSI(Large Scale Integration)等の大規模回路の論理シミュレーションを高速化するために、ハードウェアエミュレータを用いたシミュレーション技術が公開されている。しかし、近年のLSIの一層の大規模化や、ハードウェアエミュレーションに用いられるプログラマブル素子の規模制限などにより、LSIのすべての論理回路をハードウェアエミュレータ上に実現することは困難な状況となっている。そこで、LSIの一部の回路機能をソフトウェアによりシミュレーションするソフトウェアシミュレータとハードウェアエミュレータとを協調させて動作させることによってシミュレーションを行う協調シミュレーション方式が用いられるようになってきている。
さらに、協調シミュレーション方式を用いた場合においても、ハードウェアエミュレータに搭載された検証対象回路が必要とするメモリ容量が増大している。これに伴い、ハードウェアエミュレータに検証対象回路が必要とする全メモリを実装することが困難となっている。このため、ソフトウェアシミュレータにメモリモデルを搭載する協調シミュレーションシステムが必要となっている。
そこで、ソフトウェアシミュレータを用いた協調シミュレーションシステムにおいて、シミュレーション実施時の処理速度の低下を引き起こさないシステムが要求されている。
特許文献1は、ハードウェアエミュレータとソフトウェアシミュレータの間で行われる通信量を減少させることにより、協調シミュレーション装置の処理負荷を軽減する技術を開示している。以下に、図面を用いて詳細に説明する。
図8は、特許文献1にかかる発明のハードウェア/ソフトウェア協調シミュレーション方式の一実施形態を示すブロック図である。図8に示す実施の形態は、システムシミュレータ1とハードウェアエミュレータ2から構成されている。そして、シミュレーションによって検証したいLSIシステムのアーキテクチャは、ソフトウェアでシミュレートされる動作モデル6と、ハードウェアでエミュレートされるユーザロジック(論理回路)5とから構成される。
システムシミュレータ1は動作モデル6を実装しており、ハードウェアエミュレータ2はユーザロジック5を実装している。協調シミュレーションの実行時には、ハードウェアエミュレータ2にはシステムシミュレータ1からの入力信号3(複数ビット可)が入力され、また、ハードウェアエミュレータ2からは出力信号4(複数ビット可)がシステムシミュレータ1に送出される。入力信号3には、システムシミュレータ1からハードウェアエミュレータ2に供給される同期用クロック信号(以下、「クロック信号9」とする)が含まれている。また、システムシミュレータ1には、ハードウェアエミュレータ2から送出される出力信号4を、信号波形表示等により観測するためのデバッグ環境7が実装されている。
ハードウェアエミュレータ2には、出力信号4に変化があった時点で論理値「H(High)」の変化検出信号8を出力する変化検出回路20が実装されている。変化検出回路20は、DフリップフロップであるところのFF21と、排他的論理和演算を行う排他的論理和回路23とから構成されている。FF21は、データ入力端子に出力信号4が入力され、クロック入力端子には、入力信号3に含まれているクロック信号9が入力される。
そして、入力データである出力信号4を1クロック遅延させて出力端子に遅延信号22として出力する。排他的論理和回路23は、出力信号4と遅延信号22との排他的論理和演算を行い、出力信号4が遅延信号22と異なっていることを検出すると、変化検出信号8に論理値Hを出力する。
次に、動作モデル6とユーザロジック5について詳述する。図8に示した本実施形態によって検証したいLSIシステムのアーキテクチャは、複数の機能ブロックから構成されている。各機能ブロックの内の一部は、ハードウェアエミュレータ2でエミュレートされるようになっており、ハードウェアエミュレータ2内のFPGA(Field・Programmable Gate Array)などのプログラマブル素子上に、ユーザロジック5として構築されている。各機能ブロックの他の部分は、システムシミュレータ1でソフトウェアによりシミュレートされるようになっており、C言語等で記述される動作モデル6として構成されている。動作モデル6には、機能ブロックごとの機能・動作及び機能ブロック間の接続関係が記述されており、機能ブロックをシミュレーション動作させると、機能ブロック及びハードウェアエミュレータ2のユーザロジック5との間でデータ送受信がなされるようになっている。
次に、図9を参照して、図8に示した本実施形態の動作について説明する。図9は、図8の本実施形態の動作を説明するタイミングチャートである。図8に示したハードウェア/ソフトウェア協調シミュレーション方式により、協調シミュレーションが開始されると、システムシミュレータ1からは、クロック信号9を含む入力信号3がハードウェアエミュレータ2に送出されるようになる。また、ハードウェアエミュレータ2からは、出力信号4がシステムシミュレータ1に送出されるようになる。ハードウェアエミュレータ2の変化検出回路20は、出力信号4を常時監視しており、出力信号4が変化した時点で、変化検出信号8に論理値Hを出力する。システムシミュレータ1は、変化検出信号8を常時監視しており、変化検出信号8に論理値Hが出力された場合のみ、出力信号4の値を取り込んで動作モデル6に渡すようにする。変化検出信号8に論理値Hが出力されない間は、システムシミュレータ1はハードウェアエミュレータ2から送出される出力信号4を取り込む通信は行わない。
このことにより、ハードウェアエミュレータ2とシステムシミュレータ1間の通信量が減少することとなる。例えば、図9のt1時点における出力信号4の値は0x00(16進数の「00」、出力信号4が8ビットとした場合の例。)である。変化検出回路20のFF21は、この「0x00」の値が入力されると1クロック遅延させて、すなわちt2の時点で遅延信号22として、排他的論理和回路23に出力する。図9のt2時点の出力信号4の値は0xFFとなっており、t1時点の値とは異なるものとなっている。変化検出回路20の排他的論理和回路23は、t2時点の出力信号4の値0xFFとt2時点の遅延信号22の値0x00との排他的論理和演算を行い、出力信号4と遅延信号22とが異なっているため、t2時点で変化検出信号8に論理値Hを出力する。
システムシミュレータ1は、t2時点で変化検出信号8に論理値Hが出力されたので、t2時点で出力信号4の値を取り込み、これを動作モデル6に渡す。図9のt3からt6の間は、出力信号4の値は変化していないため、変化検出信号8に論理値Hは出力されていない。従ってこの間、システムシミュレータ1は出力信号4の値を取り込む通信を行わない。図9のt7の時点になると、出力信号4の値は0x01に変化しているため、変化検出信号8には論理値Hが出力される。そして、システムシミュレータ1は、t7時点の出力信号4「0x01」を取り込み、動作モデル6に渡す。
以上説明したように、特許文献1のハードウェア/ソフトウェア協調シミュレーション方式においては、ハードウェアエミュレータ2から送出される出力信号4に変化があった場合にだけ、システムシミュレータ1が出力信号4を取り込むようにしている。従って、ハードウェアエミュレータ2とシステムシミュレータ1間の通信量が減少し、通信のために必要とされていた処理を、本来のシミュレーションの処理に割り当てることができるようになる。
特開2005−332162号公報
しかし、特許文献1の協調シミュレーション方式においては、ハードウェアエミュレータ2に搭載している検証対象回路がシステムシミュレータ(ソフトウェアシミュレータ)1上の動作モデル6に搭載するメモリへのアクセスを可能としている。そのため、ソフトウェアシミュレータ1は、ハードウェアエミュレータ2内のユーザ回路5の出力変化を検出する変化検出信号8を毎クロック観測し、変換検出信号8から定まる動作を動作モデル6で再現する必要がある。
さらに、毎クロック変化検出信号8を観測する必要があることから、協調シミュレーション装置全体を低速なソフトウェアシミュレータ1から出力されるクロック9に同期させる必要があり、ハードウェアエミュレータ2上で発振する高速なハードウェアクロックを使用した協調シミュレーションができず、常時低速なソフトウェアシミュレータ1から出力されるクロック信号9で動作することになる。これにより、協調シミュレーション装置全体の速度が低下するという問題がある。
本発明の第1の態様にかかる協調シミュレーションシステムは、検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムであって、前記検証対象回路の検証実行時に用いるクロックを、前記ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるために用いられるソフトウェアクロックと、前記ハードウェアエミュレータ内において用いられるハードウェアクロックのどちらか一方を選択するクロック選択部を備え、前記クロック選択部は、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、前記ソフトウェアクロックを選択し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は前記ハードウェアクロックを選択するものである。
また、本発明の第2の態様にかかる協調シミュレーションシステムは、検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムであって、前記ソフトウェアシミュレータは、前記検証対象回路が必要とするデータを保持するメモリモデルと、当該ソフトウェアシミュレータと前記ハードウェアシミュレータの同期をとるソフトウェアクロックを供給するソフトウェアクロック供給部とを備え、前記ハードウェアエミュレータは、前記メモリモデルの一部のデータを保持するメモリと、前記ハードウェアエミュレータに用いられるハードウェアクロックを供給するハードウェアクロック供給部と、前記ソフトウェアクロック供給部から供給されるソフトウェアクロックと前記ハードウェアクロック供給部から供給されるハードウェアクロックの一方を選択するクロック制御部とを備え、前記クロック制御部は、前記メモリが保持するデータを用いて前記回路の検証を実行する場合は前記ハードウェアクロックを選択し、前記メモリモデルのデータを用いて前記検証回路の検証を実行する場合は前記ソフトウェアクロックを選択するものである。
また、本発明の第3の態様にかかるハードウェアエミュレータは、ソフトウェアシミュレータによって保持されているメモリモデルのデータの一部を保持するメモリと、ハードウェアエミュレータに用いられるハードウェアクロックを供給するハードウェアクロック供給部と、前記ソフトウェアシミュレータから供給される当該ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるソフトウェアクロックと前記ハードウェアクロック供給部から供給されるハードウェアクロックの一方を選択するクロック制御部とを備え、前記クロック制御部は、前記メモリが保持するデータを用いて検証対象回路の検証を実行する場合は前記ハードウェアクロックを選択し、前記ソフトウェアシミュレータが保持しているメモリモデルのデータを用いて前記検証対象回路の検証を行う場合は前記ソフトウェアクロックを選択するものである。
また、本発明の第4の態様にかかるシミュレーション実行回路は、検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムで用いられるシミュレーション実行回路であって、前記検証対象回路の検証実行時に用いるクロックを、前記ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるために用いられるソフトウェアクロックと、前記ハードウェアエミュレータ内において用いられるハードウェアクロックのどちらか一方を選択するクロック選択部を備え、前記クロック選択部は、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、前記ソフトウェアクロックを選択し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は、前記ハードウェアクロックを選択するものである。
また、本発明の第5の態様にかかる協調シミュレーション方法は、検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーション方法であって、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、ソフトウェアシミュレータにより供給されるソフトウェアクロックに基づいて検証を実施し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は、ハードウェアエミュレータにより供給されるハードウェアクロックに基づいて検証を実施することである。
これにより、ハードウェアエミュレータに搭載しているメモリを用いて検証を実行する場合には、高速なハードウェアクロックを用いることができるため、協調シミュレーションシステム全体の速度が高速化することになる。
本発明により、高速で動作する協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法を提供することができる。
実施の形態1にかかる協調シミュレーションシステムの構成図である。 実施の形態1にかかるアクセス監視回路の構成図である。 実施の形態1にかかるクロック制御回路の構成図である。 実施の形態1にかかる協調シミュレーションシステムのフローチャートである。 実施の形態1にかかるクロック切替のタイミングを示す図である。 実施の形態2にかかる協調シミュレーションシステムの構成図である。 実施の形態3にかかる協調シミュレーションシステムの構成図である。 従来の協調シミュレーションシステムの構成図である。 従来の協調シミュレーションシステムの動作波形である。
(実施の形態1)
以下、図面を参照して本発明の実施の形態について説明する。図1は、本発明の実施の形態1にかかる協調シミュレーションシステムの構成図である。協調シミュレーションシステムは、ソフトウェアシミュレータ100と、ハードウェアエミュレータ200を備えている。さらに、ソフトウェアシミュレータ100は、メモリモデル101と、デバック環境102と、ソフトウェアクロック生成モデル103を備えている。ハードウェアエミュレータ200は、ユーザ回路201と、ブレイク制御回路202と、クロック制御回路203を備えている。さらに、ユーザ回路201は、検証対象回路210と、アクセス監視回路220と、内蔵メモリ230を備えている。
ここで、クロック選択部はクロック制御回路203に対応し、監視部はアクセス監視回路220に対応し、メモリモデルはメモリモデル101に対応し、ソフトウェアクロック供給部はソフトウェアクロック生成モデル103に対応し、メモリは内蔵メモリ230に対応し、ハードウェアクロック供給部はハードウェアクロック生成回路204に対応する。また、クロック選択部はソフトウェアクロックとハードウェアクロックを選択する手段でもあり、監視部は検証対象回路210から内蔵メモリ230へのアクセスを監視する手段でもあり、ソフトウェアクロック供給部はソフトウェアクロックを供給する手段でもあり、ハードウェアクロック供給部はハードウェアクロックを供給する手段でもある。
メモリモデル101は、後に詳述するハードウェアエミュレータ200の検証対象回路210が必要とする全容量のメモリモデルのデータを有する。メモリモデル101の有するデータは、具体的には検証対象回路に含まれる機能ブロック毎の機能、動作及び機能ブロック間の接続関係が記述されている。このメモリモデルのデータを用いてシミュレーションを実行することにより、検証対象回路210の機能ブロック間でデータの送受信が行われるようになり、シミュレーション動作が実行される。メモリモデル101のデータは、ハードウェアエミュレータ200からの要求に応じて、内蔵メモリ230に入力される。
デバック環境102は、ハードウェアエミュレータ200から送信される信号の信号波形表示等を観測する。これにより、ハードウェアエミュレータ200からの信号フォーマット、設定パラメータ等を分析することができ、検証時の障害解析等を実行することができる。デバック環境102は、メモリモデル101を介して、ハードウェアエミュレータ200から出力された信号を取得する。
ソフトウェアクロック生成モデル103は、ハードウェアエミュレータ200に供給するソフトウェアクロックを生成する。ソフトウェアクロックとは、ハードウェアエミュレータとソフトウェアシミュレータが協調して動作するときに、用いられるクロックである。つまり、ハードウェアエミュレータとソフトウェアシミュレータが同期を維持して動作する必要がある場合に、ソフトウェアクロック生成モデル103が生成したソフトウェアクロックを用いることになる。ソフトウェアクロック生成モデル103が生成したソフトウェアクロックは、ハードウェアエミュレータ200のクロック制御回路203に入力される。
検証対象回路210は、論理回路であるユーザ回路201を構成するものである。検証対象回路210は、ハードウェアエミュレータ200でエミュレートされる大規模LSI等の回路機能の一部である。検証対象回路210は、アクセス監視回路220を介して、内蔵メモリ230にアクセスする。ここで、検証対象回路210は、内蔵メモリ230に保存されているデータを用いて検証を実行する。もしくは、内蔵メモリ230に保存されているデータを用いずに、ソフトウェアシミュレータ100のメモリモデル101のデータを用いて検証を実行してもよい。また、検証対象回路210は協調シミュレーションの終了判定等に用いられるブレイク要求信号をブレイク制御回路202に出力する機能を有し、協調シミュレーションの終了判定等に用いられる。ここで検証とは、具体的には、各機能ブロックの動作及び各機能ブロック間の動作等の正常性を確認することである。
アクセス監視回路220は、検証対象回路210から内蔵メモリ230へのアクセスを監視するものである。具体的には、検証対象回路210が内蔵メモリ230の保持するデータを用いて検証を実行する際に、内蔵メモリ230が、検証対象回路210により必要とされるデータを有しているか否かを確認するものである。ここで、アクセス監視回路220の詳細な構成について、図2を用いて説明する。
図2は、アクセス監視回路220の詳細な構成を示す図である。アクセス監視回路220は、アドレス比較回路221と、エリア設定回路222と、アクセス元選択回路223を備えている。
エリア設定回路222は、ソフトウェアシミュレータ100のメモリモデル101より内蔵メモリ230に入力されたデータから、内蔵メモリ230内にデータを格納しているアドレス値を保持する。つまり、エリア設定回路222は、内蔵メモリ230内のアドレス情報を設定する回路である。エリア設定回路222の保持するアドレス値は、メモリモデル101のデータを内蔵メモリ230に入力する度に更新されるものとする。
アドレス比較回路221は、エリア設定回路222に設定されている値と、検証対象回路210から内蔵メモリへのアクセス先であるアドレスの値を比較する。これにより、アドレス比較回路221は、内蔵メモリ230にデータ保持されているエリアへのアクセスか否かを判定する。アドレス比較回路221は、検証対象回路210から内蔵メモリ230へのアクセスが内蔵メモリ230にデータ保持されているエリアへのアクセスであると判断した場合、検証対象回路210から内蔵メモリ230へのアクセスを許容する。その際、検証対象回路210は、内蔵メモリ230からデータの読み出しを行う。
アドレス比較回路221は、検証対象回路210から内蔵メモリ230へのアクセスが内蔵メモリ230にデータ保持されているエリアへのアクセスではないと判断した場合、ブレイク制御回路202とクロック制御回路203に対して、ブレイク要求信号を出力する。
アクセス元選択回路223は、検証対象回路210が内蔵メモリ230にデータ保持されているエリアへのアクセスを行う場合には、内蔵メモリ230へのアクセス元を検証対象回路210と設定する。検証対象回路210が内蔵メモリ230にデータ保持されていないエリアへのアクセスを行う場合には、内蔵メモリ230へのアクセス元を、検証対象回路210からソフトウェアシミュレータ100に切り替える。これにより、ソフトウェアシミュレータ100は、内蔵メモリ230のデータの退避を行い、内蔵メモリ230に対して検証対象回路210が必要とするエリアへのメモリモデル101の一部のデータの書き込みを実行することにより、検証対象回路210の検証が実行される。
図1に戻り、ブレイク制御回路202は、アクセス監視回路220からブレイク要求信号を取得した場合、ソフトウェアシミュレータ100のメモリモデル101のデータから、新たにデータを取得するため、ブレイク信号をソフトウェアシミュレータ100に出力する。さらに、ブレイク制御回路202は、ブレイク要求信号を取得した場合に、クロック制御回路203にもブレイク信号を出力する。
クロック制御回路203は、ハードウェアクロック生成回路204から、ハードウェアクロックの供給を受けている。ここで、アクセス監視回路220からブレイク要求信号を取得し、ブレイク制御回路202からブレイク信号を取得した場合、検証対象回路210に供給しているハードウェアクロックを停止する。さらに、アクセス監視回路220及び内蔵メモリ230に対して、ソフトウェアクロックを供給する。ここで、クロック制御回路203は、アクセス監視回路220からブレイク要求信号を取得した場合又はブレイク制御回路202からブレイク信号を取得した場合のどちらか一方の場合において、検証対象回路210に供給しているハードウェアクロックを停止し、さらに、アクセス監視回路220及び内蔵メモリ230に対してソフトウェアクロックを供給してもよい。
ここで、ブレイク信号を取得したソフトウェアシミュレータ100は、内蔵メモリ230のデータの退避を行い、要求されているエリアのデータをメモリモデル101から内蔵メモリ230へ転送する。この時、具体的には、メモリモデル101のデータはアクセス監視回路220へ転送され、アクセス元設定回路223により、内蔵メモリ230への経路が設定される。アクセス監視回路220及び内蔵メモリ230はソフトウェアクロックで動作しているため、ソフトウェアシミュレータ100のメモリモデル101から転送されるデータを内蔵メモリ230へ書き込む際にも、ソフトウェアクロックにより動作することとなる。
ソフトウェアシミュレータ100によるメモリモデル101から内蔵メモリ230に対するデータの転送が完了後、ソフトウェアシミュレータ100は、エリア設定回路222に対して、内蔵メモリ230に転送したデータのエリア情報を入力する。これにより、アクセス監視回路220は、ブレイク要求信号を解除する。ブレイク要求信号の解除通知を取得したクロック制御回路203は、検証対象回路210にハードウェアクロックの供給を開始する。さらに、アクセス監視回路220及び内蔵メモリ230に対して、ソフトウェアクロックの供給を中止し、ハードウェアクロックの供給を開始する。
次に、図3を用いて、本発明の実施の形態1にかかるクロック制御回路203の構成について詳細に説明する。クロック制御回路203は、クロックマスク回路240と、クロックセレクタ回路250を備えている。クロックマスク回路240は、ブレイク制御回路202からブレイク信号を取得した場合、ハードウェアクロック生成回路204から供給されているハードウェアクロックの検証対象回路210への供給を停止する。さらに、クロックセレクタ回路250に対して、ソフトウェアクロックをアクセス監視回路220及び内蔵メモリ230に対して供給するよう制御する。クロックセレクタ回路250は、クロックマスク回路240から、アクセス監視回路220及び内蔵メモリ230に対してソフトウェアクロックを供給するよう通知を受けた時は、ソフトウェアクロックの供給を行う。
ソフトウェアシミュレータ100によって、アクセス監視回路220内のエリア設定回路222に内蔵メモリ230に保持しているエリアの設定値の書き換えが行われると、ブレイク要求信号は解除される。この場合、クロックマスク回路240は、検証対象回路210にハードウェアクロックの供給を再開し、クロックセレクタ回路250は、アクセス監視回路220及び内蔵メモリ230に対してソフトウェアクロックからハードウェアクロックに切り替えてクロックの供給を行う。
次に、図4を用いて、本発明の実施の形態1にかかる協調シミュレーションシステムの処理の流れにつき説明を行う。初めに、検証対象回路210から、内蔵メモリ230に対してアクセスが行われる(S11)。具体的には、内蔵メモリ230のあるアドレスに対してデータの書き込みもしくは読み出しを行うものである。
次に、アドレス比較回路221は、検証対象回路210から内蔵メモリ230に対してアクセスされたアドレスが、内蔵メモリ230によってデータが保持されているエリアか否かを判定する(S12)。具体的には、検証対象回路210が指定する内蔵メモリ230のアドレスが、エリア設定回路222に設定されているエリアに含まれているか否かを判定する。検証対象回路210によりアクセスされたアドレスが、内蔵メモリ230にデータを保持しているエリアである場合は、S11の処理を再度実施する。
次に、アドレス比較回路221は、検証対象回路210から内蔵メモリ230に対してアクセスされたアドレスが、内蔵メモリ230によってデータが保持されているエリアでないと判断した場合、ブレイク要求信号をブレイク制御回路202に出力するとともに、クロック制御回路203に出力する。ブレイク要求信号を取得したブレイク制御回路202は、ブレイク信号をソフトウェアシミュレータ100に出力する(S21)。
次に、クロック制御回路203は、アクセス監視回路220及び内蔵メモリ230に対して供給するクロックをソフトウェアクロックに切り替えるとともに(S22)、検証対象回路210に供給していたハードウェアクロックを停止する(S23)。
次に、ソフトウェアシミュレータ100がブレイク信号を取得した際に(S24)、ソフトウェアシミュレータ100は、内蔵メモリ230のデータの退避を行う(S25)。
次に、ソフトウェアシミュレータ100は、内蔵メモリ230に対して、メモリモデル101にある必要なデータの書き込みを行う(S26)。検証対象回路210が必要とするデータは、ブレイク信号によって通知されてもよい。
次に、ソフトウェアシミュレータ100は、エリア設定回路222に対して、内蔵メモリ230に書き込みを行ったデータのエリア情報を設定する(S27)。
次に、エリア情報が設定されたことにより、ブレイク制御回路202はブレイク信号の解除を行う(S28)。
次に、クロック制御回路205は、ブレイク信号の解除によりハードウェアクロック生成回路204に駆動を切り替えて内蔵メモリ230及びアクセス監視回路220に対して、ハードウェアクロックの供給を再開する(S29)とともに、クロック制御回路205は、ブレイク信号の解除によりハードウェアクロック生成回路204に駆動を切り替えて検証対象回路210に対してハードウェアクロックの供給を再開する(S30)
S29およびS30が行われた後、S11に戻りS11とS12を繰り返すことで、通常の内蔵メモリ230が保持しているデータを使用する場合の協調シミュレーションを実行する。
次に、図5を用いて、本発明の実施の形態1にかかるクロックの切り替えタイミングについて説明する。通常の協調シミュレーションの状態であるT1の期間において、検証対象回路210用のクロックとアクセス監視回路220及び内蔵メモリ230のクロックは、ハードウェアクロックで動作する。
T2の期間においては、内蔵メモリ230にデータ保持していないエリアへのアクセスが発生した際に、アクセス監視回路220からブレイク要求信号が出力される。それに伴い、ブレイク制御回路204からブレイク信号が出力される。ここで、ブレイク要求信号を取得したクロックセレクタ回路250は、アクセス監視回路220及び内蔵メモリ230に供給するクロックをソフトウェアクロックによる駆動に切り替える。また、ブレイク信号を取得したクロックマスク回路は、検証対象回路210に供給していたハードウェアクロックを停止する。さらに、ソフトウェアシミュレータ100は、内蔵メモリ230のデータの退避を行う。つまり、内蔵メモリ230が保持しているデータの読み出しを行い、ソフトウェアシミュレータ100内にデータを保存する。
T3の期間においては、ソフトウェアシミュレータ100は、内蔵メモリ230に対して、検証対象回路210が必要とするデータの書き込みを行う。この時、ソフトウェアクロックを用いてデータの書き込みを行う。
T4の期間においては、ソフトウェアシミュレータ100からエリア設定回路222に対して設定値の書き換えを行う。それに伴い、ブレイク要求信号及びブレイク信号が解除され、検証対象回路210、アクセス監視回路220及び内蔵メモリ230に供給されるクロックが、ハードウェアクロック生成回路204による駆動に切り替わる。
T5の期間においては、検証対象回路210、アクセス監視回路220及び内蔵メモリ230に、ハードウェアクロックが供給される。
以上説明したように、本発明の実施の形態1にかかる協調シミュレーションシステムを用いることにより、ハードウェアエミュレータに搭載する内蔵メモリを用いて検証対象回路の検証を実行する時は、高速なハードウェアクロックで動作することができる。さらに、検証対象回路の検証の実行に用いられるデータを内蔵メモリが保持していない場合は、ソフトウェアシミュレータが保持するメモリモデルのデータから、ソフトウェアクロックを用いて検証対象回路が必要とするデータを内蔵モデルに書き込みを行う。このように使用するクロックを検証実施中の動作に基づいて選択することにより、高速な協調シミュレーションを実行することが可能となる。
(実施の形態2)
図6を用いて本発明の実施の形態2にかかる協調シミュレーションシステムの構成について説明する。ハードウェアエミュレータ200は、複数のアクセス監視回路及び内蔵メモリを備える構成を示している。図6には、アクセス監視回路220、260と内蔵メモリ230、270と、それぞれ2つのアクセス監視回路及び内蔵メモリを示しているが、3つ以上備えてもよい。さらに、複数の内蔵メモリがアクセス監視回路を共有してもよい。アクセス監視回路及び内蔵メモリを複数有する構成以外は図1の構成と同様であるため、説明を省略する。
検証対象回路210が内蔵メモリ230もしくは270にアクセスした際に、一方の内蔵メモリにおいて、内蔵メモリが保持していないエリアへのアクセスであった場合、実施の形態1と同様の処理を行うことにより、ソフトウェアシミュレータ100は、内蔵メモリのデータ退避と必要なエリアのデータ書き込みを行う。
ここで、検証対象回路210が内蔵メモリ230及び270にアクセスした際に、内蔵メモリ230及び270が保持していないエリアへのアクセスであった場合、ソフトウェアシミュレータ100は、内蔵メモリ230及び270の両方に対してデータの退避及び必要なエリアのデータ書き込みを行う。さらに、アクセス監視回路220及び260に対して、書き込みを行ったデータのエリア情報を設定する。
この時、ソフトウェアシミュレータ100が、アクセス監視回路220及び260の両方に対してエリア情報を書き換えなければ、ハードウェアクロックでの高速な協調シミュレーションを再開しない。
また、検証対象回路210が内蔵メモリ230及び270にアクセスする際に、検証対象回路210がアクセスしようとするエリア情報と、アクセス監視回路220及び260が有するエリア設定情報を比較して、適切な内蔵メモリにアクセスを行うよう、制御する回路を設けてもよい。その際に、当該回路は、アクセス監視回路220もしくは260に設けてもよいし、アクセス監視回路220及び260とは別の回路としてもよい。
以上説明したように、本発明の実施の形態2にかかる協調シミュレーションシステムを用いることにより、ハードウェアエミュレータに搭載する内蔵メモリを増加させることができ、ソフトウェアシミュレータのメモリモデルとの通信機会が減少することにより、協調シミュレーションをより高速に動作させることが可能である。
(実施の形態3)
次に、図7を用いて本発明の実施の形態3にかかる協調シミュレーションシステムの構成について説明する。図7は、図6の協調シミュレーションシステムの構成に、アクセス監視回路の制御を伴わない内蔵メモリ280を追加したものである。その他の構成については、図6と同様であるため説明を省略する。
内蔵メモリ280は、検証対象回路210が、特定の検証動作について用いる全てのデータを保持する。つまり、内蔵メモリ280は、ソフトウェアシミュレータ100によってデータを更新されることはなく、検証対象回路210が実行する特定の検証動作時に用いられるものである。さらに、内蔵メモリ280のデータはソフトウェアシミュレータ100により保持されることはない。これにより、内蔵メモリ280はソフトウェアシミュレータ100により更新されることがないため、アクセス監視回路による制御を受ける必要はなく、常時ハードウェアクロックにより動作することが可能である。
以上説明したように、本発明の実施の形態3にかかる協調シミュレーションシステムを用いることにより、ソフトウェアシミュレータへのアクセスをさらに減少させることができる。これは、内蔵メモリの保持するデータを、特定の検証動作に特化したデータとすることで、内蔵メモリのデータ更新に伴うソフトウェアシミュレータへのアクセスを減少させることができるからである。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
100 ソフトウェアシミュレータ
101 メモリモデル
102 デバッグ環境
103 ソフトウェアクロック生成モデル
200 ハードウェアエミュレータ
201 ユーザ回路
202 ブレイク制御回路
203 クロック制御回路
204 ハードウェアクロック生成回路
210 検証対象回路
220、260 アクセス監視回路
221 アドレス比較回路
222 エリア設定回路
223 アクセス元選択回路
230、270、280 内蔵メモリ
240 クロックマスク回路
250 クロックセレクタ回路

Claims (12)

  1. 検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムであって、
    前記検証対象回路の検証実行時に用いるクロックを、前記ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるために用いられるソフトウェアクロックと、前記ハードウェアエミュレータ内において用いられるハードウェアクロックのどちらか一方を選択するクロック選択部を備え、
    前記クロック選択部は、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は前記ソフトウェアクロックを選択し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は前記ハードウェアクロックを選択する協調シミュレーションシステム。
  2. 前記ハードウェアエミュレータによる前記検証対象回路の検証に用いる前記メモリモデルの一部のデータを前記ハードウェアエミュレータが保持しているか否かを監視する監視部をさらに備えることを特徴とする請求項1記載の協調シミュレーションシステム。
  3. 前記監視部によって、前記ハードウェアエミュレータは当該ハードウェアエミュレータによる検証対象回路の検証に用いる前記メモリモデルの一部のデータを保持していない、と判断された場合、
    前記ソフトウェアシミュレータは、ソフトウェアクロックを用いて前記ハードウェアエミュレータに対して当該ソフトウェアシミュレータの保持している前記メモリモデルの一部のデータを入力することを特徴とする請求項2記載の協調シミュレーションシステム。
  4. 検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムであって、
    前記ソフトウェアシミュレータは、
    前記検証対象回路が必要とするデータを保持するメモリモデルと、
    当該ソフトウェアシミュレータと前記ハードウェアシミュレータの同期をとるソフトウェアクロックを供給するソフトウェアクロック供給部とを備え、
    前記ハードウェアエミュレータは、
    前記メモリモデルの一部のデータを保持するメモリと、
    前記ハードウェアエミュレータに用いられるハードウェアクロックを供給するハードウェアクロック供給部と、
    前記ソフトウェアクロック供給部から供給されるソフトウェアクロックと前記ハードウェアクロック供給部から供給されるハードウェアクロックの一方を選択するクロック制御部とを備え、
    前記クロック制御部は、前記メモリが保持するデータを用いて前記回路の検証を実行する場合は前記ハードウェアクロックを選択し、
    前記メモリモデルのデータを用いて前記検証回路の検証を実行する場合は前記ソフトウェアクロックを選択する協調シミュレーションシステム。
  5. 前記ハードウェアエミュレータは、
    当該ハードウェアエミュレータによる回路の検証に用いる前記メモリモデルの一部のデータを前記メモリが保持しているか否かを監視する監視部をさらに備えることを特徴とする請求項4記載の協調シミュレーションシステム。
  6. 前記監視部によって、前記メモリは前記ハードウェアエミュレータによる回路の検証に用いるデータを保持していない、と判断された場合、
    前記ソフトウェアシミュレータは、ソフトウェアクロックを用いて前記メモリに対して前記メモリモデルの一部のデータを入力することを特徴とする請求項5記載の協調シミュレーションシステム。
  7. ソフトウェアシミュレータによって保持されているメモリモデルのデータの一部を保持するメモリと、
    ハードウェアエミュレータに用いられるハードウェアクロックを供給するハードウェアクロック供給部と、
    前記ソフトウェアシミュレータから供給される当該ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるソフトウェアクロックと前記ハードウェアクロック供給部から供給されるハードウェアクロックの一方を選択するクロック制御部とを備え、
    前記クロック制御部は、前記メモリが保持するデータを用いて検証対象回路の検証を実行する場合は前記ハードウェアクロックを選択し、
    前記ソフトウェアシミュレータが保持しているメモリモデルのデータを用いて前記検証対象回路の検証を行う場合は前記ソフトウェアクロックを選択するハードウェアエミュレータ。
  8. 前記検証対象回路が検証に用いるデータをメモリが保持しているか否かを監視する監視部をさらに備えることを特徴とする請求項7記載のハードウェアエミュレータ。
  9. 前記監視部によって前記メモリは前記検証回路の検証に用いるデータを保持していないと判断された場合、
    前記メモリは、ソフトウェアクロックを用いて、前記ソフトウェアシミュレータの保持するメモリモデルのデータの一部を取得することを特徴とする請求項8記載のハードウェアエミュレータ。
  10. 前記検証対象回路が検証に用いる全てのデータを保持するメモリをさらに備えることを特徴とする請求項7乃至9のいずれか1項に記載のハードウェアエミュレータ。
  11. 検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムで用いられるシミュレーション実行回路であって、
    前記検証対象回路の検証実行時に用いるクロックを、前記ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるために用いられるソフトウェアクロックと、前記ハードウェアエミュレータ内において用いられるハードウェアクロックのどちらか一方を選択するクロック選択部を備え、
    前記クロック選択部は、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、前記ソフトウェアクロックを選択し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は、前記ハードウェアクロックを選択するシミュレーション実行回路。
  12. 検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーション方法であって、
    前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、ソフトウェアシミュレータにより供給されるソフトウェアクロックに基づいて検証を実施し、
    前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は、ハードウェアエミュレータにより供給されるハードウェアクロックに基づいて検証を実施する協調シミュレーション方法。
JP2009095972A 2009-04-10 2009-04-10 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法 Pending JP2010250365A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009095972A JP2010250365A (ja) 2009-04-10 2009-04-10 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009095972A JP2010250365A (ja) 2009-04-10 2009-04-10 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法

Publications (2)

Publication Number Publication Date
JP2010250365A true JP2010250365A (ja) 2010-11-04
JP2010250365A5 JP2010250365A5 (ja) 2012-04-05

Family

ID=43312659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009095972A Pending JP2010250365A (ja) 2009-04-10 2009-04-10 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法

Country Status (1)

Country Link
JP (1) JP2010250365A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011232914A (ja) * 2010-04-27 2011-11-17 Nippon Telegr & Teleph Corp <Ntt> シミュレーション装置、シミュレーション装置の制御方法およびプログラム
KR101629725B1 (ko) * 2015-01-05 2016-06-13 한국과학기술원 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법
KR20160083752A (ko) * 2015-01-02 2016-07-12 한국과학기술원 혼합회로 시뮬레이션 시스템 및 방법
US11080446B2 (en) * 2019-03-18 2021-08-03 Synopsys, Inc. Method to regulate clock frequencies of hybrid electronic systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007058813A (ja) * 2005-08-26 2007-03-08 Fujitsu Ltd 検証装置及び検証方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007058813A (ja) * 2005-08-26 2007-03-08 Fujitsu Ltd 検証装置及び検証方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011232914A (ja) * 2010-04-27 2011-11-17 Nippon Telegr & Teleph Corp <Ntt> シミュレーション装置、シミュレーション装置の制御方法およびプログラム
KR20160083752A (ko) * 2015-01-02 2016-07-12 한국과학기술원 혼합회로 시뮬레이션 시스템 및 방법
KR101683636B1 (ko) * 2015-01-02 2016-12-08 한국과학기술원 혼합회로 시뮬레이션 시스템 및 방법
KR101629725B1 (ko) * 2015-01-05 2016-06-13 한국과학기술원 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법
US11080446B2 (en) * 2019-03-18 2021-08-03 Synopsys, Inc. Method to regulate clock frequencies of hybrid electronic systems

Similar Documents

Publication Publication Date Title
US11093674B2 (en) Generating clock signals for a cycle accurate, cycle reproducible FPGA based hardware accelerator
JP6092649B2 (ja) 演算装置、アレイ型演算装置およびその制御方法、情報処理システム
KR20110121357A (ko) 디버깅 기능을 지원하는 타겟 장치 및 그것을 포함하는 테스트 시스템
JP2008065640A (ja) シミュレーション装置およびそのシミュレーション制御方法
JP2008310727A (ja) シミュレーション装置及びシミュレーション方法
JP2010250365A (ja) 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法
CN107315449B (zh) 计算机设备、读取时间的方法和写入时间的方法
KR101704751B1 (ko) 모듈 간의 타이밍 정보를 이용하는 멀티코어 시스템의 시뮬레이터, 및 그 시뮬레이션 방법
US7228513B2 (en) Circuit operation verification device and method
JP2002366602A (ja) ソフトウエア及びハードウエアのシミュレーション方法及びシステム並びにプログラム
JP2007058813A (ja) 検証装置及び検証方法
CN104583962A (zh) 用于弹性通信的技术
JP2009009318A (ja) 非同期回路検証用のプログラムデータ生成方法、非同期回路検証方法及び非同期回路検証装置
US20150379178A1 (en) Implementing a constant in fpga code
JP4470582B2 (ja) ハードウェア/ソフトウェア協調シミュレーション方式及びその方法
US20090132224A1 (en) Co-Simulation System Using a Slow Operation Mode that Allows Detailed Interaction with Hardware and a Fast Operation Mode
JP2005122375A (ja) 動作試験装置および動作試験方法
CN112534414A (zh) 软件跟踪消息接收器外围设备
WO2024066950A1 (zh) 一种信号处理方法、信号处理装置、芯片及电子设备
JP2011081560A (ja) システムレベルシミュレーション方法および装置
JP2009223762A (ja) 協調検証装置
JP2006331190A (ja) クロック制御回路
JP2005010958A (ja) 半導体装置
JP2024074460A (ja) 半導体チップ、デバッグシステム、および同期方法
JP2007109045A (ja) 信号処理回路のリセット制御装置及びリセット制御方法並びに信号処理回路のリセット制御回路挿入方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130312