JP4468410B2 - ソフトウェア実行装置および協調動作方法 - Google Patents

ソフトウェア実行装置および協調動作方法 Download PDF

Info

Publication number
JP4468410B2
JP4468410B2 JP2007163652A JP2007163652A JP4468410B2 JP 4468410 B2 JP4468410 B2 JP 4468410B2 JP 2007163652 A JP2007163652 A JP 2007163652A JP 2007163652 A JP2007163652 A JP 2007163652A JP 4468410 B2 JP4468410 B2 JP 4468410B2
Authority
JP
Japan
Prior art keywords
software
synchronization
hardware
execution
simulation
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.)
Expired - Fee Related
Application number
JP2007163652A
Other languages
English (en)
Other versions
JP2009003683A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007163652A priority Critical patent/JP4468410B2/ja
Priority to US12/142,998 priority patent/US8036874B2/en
Publication of JP2009003683A publication Critical patent/JP2009003683A/ja
Application granted granted Critical
Publication of JP4468410B2 publication Critical patent/JP4468410B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

本発明は、ソフトウェア実行装置および協調動作方法に関し、たとえばハードウェア/ソフトウェア協調シミュレーション環境に利用されるものである。
ハードウェア/ソフトウェア協調シミュレーション(HW(Hardware)/SW(Software)協調シミュレーション)は、HWシミュレーションを利用してSoC(System On Chip:システムオンチップ)完成以前にソフトウェア/ファームウェア(SW(Software)/FW(Firmware))の検証を開始することでSoCのTTM(Time To Market)短縮を図る、あるいは、検証対象となるHW記述に対するテスト入力をSWシミュレーション環境のCPU(Central Processing Unit)モデルから与えることで、検証用テストベクタの作成工数の削減を図る、といった用途に用いられている。
SoC完成以前にソフトウェアの検証を開始するためには、ソフトウェアのシミュレーションを行う環境(以下、SWシミュレータと記述)以外に、ハードウェアの動作を模擬する必要がある。この模擬的な動作は大別して、既存HW記述そのものをシミュレーションする方法、または、より高速に動作するシミュレーション用HWモデルを作成する方法が用いられている。さらに、近年はFGPAボードなどに既存のHW記述を書き込み、これをシミュレータと協調させる方式が用いられ始めている(例えば、EVE社のZeBuシリーズのFPGAボード(http://www.eve-team.com/、日本法人:http://www.eve-japan.co.jp/)など)。
FGPAボードとSWシミュレータの協調シミュレーションを行うことで、HW記述を高速に動作させることが可能になり、また、既存のHW資産やIP(Intellectual Property)をそのまま利用できるメリットがある。
また新たにシミュレーション用HWモデルなどを作成する必要がなくなるため、ソフトウェア検証のためのTAT(Turn Around Time)短縮、コスト低減が期待できるのと同時に、シミュレーション用HWモデルの正確性の問題もクリアできるなどのメリットが考えられている。
一方、SWシミュレータとFGPAボードの協調シミュレーションにおいては、一方は汎用コンピュータ上で動作するソフトウェアであり、他方は専用のボードなどに実装され汎用コンピュータに接続されるハードウェアであるため、双方の間で動作をどのように同期させるかが重要となる。
従来において、SWシミュレータとFPGAボード間の同期については、たとえば毎サイクル同期方式、バストランザクタ利用方式、SWシミュレータ側同期間隔制御方式、割込み可能性有無判定方式などが知られている。
毎サイクル同期方式は、SWシミュレータ側からクロック信号を発生させ、このクロック信号をベースにFGPAボードを動作させる方式である。この方式は、精度の高いシミュレーションを行うためには、同期間隔を細かくする必要があり、これによりシミュレーション速度の低下を招く問題がある。
バストランザクタ利用方式は、SWシミュレータ側からFPGAボードへのアクセスはすべてバストランザクション(READ、WRITEなどのバスコマンドレベルの粒度)でアクセスし、FPGAボード上のバストランザクタにてバストランザクションをサイクルレベルの信号に変換し、FPGAボード上に書き込まれたHW記述を動作させる方式である。そして、バストランザクション発生中以外にもSWシミュレータ側から同期コマンド(例えば、「100クロック分進め」など)を発行することで、FPGAボード側の動作を制御する方式が上記SWシミュレータ側同期間隔制御方式である。これらの方式はいずれも、ソフトウェア側で同期の区間および間隔を制御する方式であり、ハードウェア側から発するイベント(割込み要求など)の発生時刻に対する正確な取り扱いが難しいことなどから、シミュレーション精度の低下の問題がある。
割込み可能性有無判定方式は、特開2001-290860公報に記載された方式であり、SWシミュレータ側で予めHWシミュレータ側からの割込み発生の可能性の有無を判定し、割込みの可能性の無いハードウェア部分とは同期を行わないことで、シミュレーションの処理速度を向上させるものである。この方式では、割込み発生の有無は、SWシミュレーション上でのHWシミュレータからの割込みの有無の判定に、シミュレーション実行時に「CPUシミュレーション手段」で動作する「組込みソフトウェア」が、割込みコントローラのレジスタにマップされているアドレスへどのような書き込みを行うかを監視し、「組込みソフトウェア」が個々の「周辺回路」の割込みをどのように設定したかを記録する。この方式では、個々のSoC毎に異なる「割込みコントローラ」の仕様(レジスタアドレス、個々の周辺回路の割込みの制御方法)をCPUシミュレーション部が内蔵するものとしており、SoC毎にCPUシミュレーション部を構築する、あるいは、SoC毎に異なる「割込みコントローラ」の仕様を模擬するような設定を行う必要があり、シミュレータとしての汎用性が低い。また、SoC毎に異なる「割込みコントローラ」の仕様を模擬する機構とは即ちシミュレーション用の割込みコントローラモデルを作成することに他ならず、前述のシミュレーション用HWモデル作成の問題と同等の問題を内包している。
特開2001-290860公報
本発明は、高速かつ精度の高いハードウェア/ソフトウェア協調シミュレーションを実現可能としたソフトウェア実行装置および協調動作方法を提供する。
本発明のソフトウェア実行装置は、
ハードウェアとソフトウェアとの両方で構成される機器に対して、前記ハードウェアの動作を検証するハードウェア回路またはハードウェアシミュレータと、前記ソフトウェアの動作を検証するソフトウェア実行装置との協調シミュレーションにおける前記ソフトウェア実行装置であって、
検証対象となるソフトウェアを実行するソフトウェア実行手段と、
前記ソフトウェアの実行を監視し、前記ソフトウェアの実行状態を表す情報を取得する実行監視手段と、
前記ソフトウェアの実行状態に基づき、前記ソフトウェア実行手段と、前記ハードウェア回路または前記ハードウェアシミュレータとを同期させるか否かを判定する判定手段と、
前記判定手段により同期させることが決定されたとき、前記ソフトウェア実行手段の内部時間の1サイクルと、前記ハードウェア回路または前記ハードウェアシミュレータのクロック信号の発生とを同期させる、同期制御手段と、
を備える。
本発明の協調動作方法は、
ハードウェアとソフトウェアとの両方で構成される機器に対して、前記ハードウェアの動作を検証するハードウェア回路またはハードウェアシミュレータと、前記ソフトウェアの動作を検証するソフトウェア実行装置との協調シミュレーションにおける協調動作方法であって、
検証対象となるソフトウェアを前記ソフトウェア実行装置で実行し、
前記ソフトウェアの実行状態を監視し、
前記ソフトウェアの実行状態を表す情報を取得し、
前記ソフトウェアの実行状態に基づき、前記ソフトウェア実行装置と、前記ハードウェア回路または前記ハードウェアシミュレータとを同期させるか否かを判定し、
前記同期させることが決定されたとき、前記ソフトウェア実行装置の内部時間の1サイクルと、前記ハードウェア回路または前記ハードウェアシミュレータのクロック信号の発生とを同期させる、
ことを特徴とする。
本発明により、高速かつ精度の高いハードウェア/ソフトウェア協調シミュレーションが可能となる。
まず、本発明者が本発明をなすに至った経緯について説明する。
ハードウェア/ソフトウェア(Hardware/Software)協調シミュレーションにおいて、SWシミュレータ(ソフトウェアのシミュレーションを行う環境)上で動作するソフトウェアの検証に主眼を置いた場合、ソフトウェア側から見たハードウェア側の動作への要求は、
(1)レジスタへの読み出し/書き込み(Read/Write)動作により、正しいデータがハードウェアとやり取り可能なこと
(2)レジスタへのRead/Write動作に起因するハードウェア側の動作が正しく実行され、正しい結果が得られること
(3)ハードウェア側動作の結果が正しい時刻に終了すること
の三点に集約できる。
(1)、(2)については、背景技術で説明したバストランザクタ利用方式でも十分実現可能であるが、(3)はバストランザクタ利用方式だけでは、SWシミュレータ側でハードウェア側動作の終了時刻を正確に検知することはできない。また、毎サイクル同期方式では、上記の(1)、(2)、(3)はすべて実現可能であるが、背景技術で述べた通り、シミュレーション速度の低下を招く問題がある。
ただし、(3)で問題となるハードウェア側動作の結果は、ほとんどの場合、(2)でのソフトウェア側からのハードウェア側への働きかけの結果である(そうでない場合も考えられるが、この場合はソフトウェア側動作と全く因果関係がなく外部からのイベントが発生する場合であり、ソフトウェア検証においてこのイベント発生の時刻は重要ではない)。
つまり、ハードウェア動作の論理的な正しさ以外にソフトウェア検証において重要なのは、(2)のソフトウェア側からの働きかけに対応して、(3)の正しい時刻が得られるかであり、言い換えれば、ソフトウェア側からのハードウェア動作の起動に対してハードウェア側の動作が終了するまでの区間のみ、毎サイクル同期を取り、ハードウェア側の正しい動作時間を得ることができれば、他の時間帯はソフトウェア側とハードウェア側の動作は同期を取る必要は無い。
また、ソフトウェア検証において、前述の同期が必要な区間はソフトウェアの検証項目によって異なり、かつ、検証に必要ないハードウェアの動作については、同期を取る必要が無い場合も多い。
本発明者は、以上の観点から、ソフトウェアの検証項目に応じて、ソフトウェアがあるハードウェア動作を起動する時点からその動作が終了する時点までを同期区間として設定し、同期区間のみ同期をとり他の区間は同期を取らないようにすることで、シミュレーション速度の大幅な向上できることを知得した。以下、このような知得に基づきなされた本発明の実施の形態について詳細に説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態としてのソフトウェアシミュレータ(SWシミュレータ)11を備えたハードウェア/ソフトウェア(HW/SW)協調シミュレータの全体構成を示すブロック図である。図示のSWシミュレータ11は、本発明を実現するシミュレーションプログラムを汎用のコンピュータで実行させることにより得られる各機能をブロックによって表したものである。上記シミュレーションプログラムを搭載した装置は、本発明に係わるソフトウェア実行装置の1つの実施の形態に相当する。
このHW/SW協調シミュレータは、SWシミュレータ11とFPGAボード(ハードウェア回路)12とによる協調シミュレーションにより、SWシミュレータ11におけるCPUシミュレーション手段21上で実行されるソフトウェアの検証を行うものである。
図1に示す同期区間情報指定手段13は、テキストエディタあるいは専用のGUI(Graphical User Interface)を持つプログラムであり、ユーザがSWシミュレータ11とFPGAボード12とを、「毎サイクル同期」させる区間の開始条件と終了条件を指定する。同期区間情報指定手段13により指定された開始条件および終了条件は同期区間情報としてファイルなどに格納される。同期区間情報の例を図2に示す。
図2に示されるように、毎サイクル同期の開始条件(アクション“開始”をもつ条件)および終了条件(アクション“終了”をもつ条件)として、
・ PC(Program Counter:プログラムカウンタ)がある値と一致する(PC比較条件)
・ あるアドレスへのアクセスが発生する(アドレス比較条件)
・ あるアドレスのメモリ/レジスタの値もしくはその一部のビットがある値と一致する(メモリ/レジスタ値比較条件)、
・ PCがある区間に入る(PC区間条件)
などの条件が指定できる。また、ソフトウェアの実行状態以外に、毎サイクル同期されている期間(サイクル数)を監視し、この期間の上限を終了条件として指定することも可能とする(サイクル数比較条件)。ただし、本例では、サイクル数比較は終了の条件として、同期区間情報中に一箇所のみ(1つのみ)記載できるものとする。
ここで開始条件および終了条件は一対一の対応がなくても構わない。たとえば図2の同期区間情報の1行目の開始条件「PCが0x00000180と一致」に対する終了条件は、2行目の「PCが0xbfc00380と一致」であっても5行目の「アドレス0x80001000の第3ビットが1と一致」であってもよい。
図3は、SWシミュレータ11の詳細構成を示すブロック図である。
CPUシミュレーション手段21は、検証対象となるソフトウェア(インストラクションセット)の実行をシミュレーションする手段(ISS:Instruction Set Simulator)31を備える。ISS31には、上記検証対象となるソフトウェア(図示せず)と、実行すべきインストラクションのアドレスを示すプログラムカウンタ(PC:Program Counter)32とが含まれる。
また、CPUシミュレーション手段21はバスアクセスを模擬するバスアクセスシミュレーション手段33を備える。バスアクセスシミュレーション手段33は、バスアクセスを行う際のアクセス先となるアドレスを格納するアドレス格納手段34と、アクセスにより読み出された読み出しデータおよびアクセスの際に書き込む書き込みデータを格納するデータ格納手段35とを持つ。CPUシミュレーション手段21は、内部のパイプライン状態のシミュレーションを行う手段、または内部のキャッシュメモリのシミュレーションを行う手段を備えたものでも良い。
バスアクセスシミュレーション手段33は、メモリの動作をシミュレーションするメモリシミュレーション手段24、周辺回路の動作をシミュレーションする周辺回路シミュレーション手段25、さらにはFPGAボード12と接続され、これらとの間で通信を行う。通常、周辺回路の動作はFPGAボード12上に書き込んだRTLでのエミュレーションとなるが、本例のように、一部の周辺回路が周辺回路シミュレーション手段として、SWシミュレータ11内部で動作させられる形態でもかまわない。
SW実行監視手段22は、CPUシミュレーション手段21での検証対象のソフトウェアの実行を同期区間情報に基づき監視する。SW実行監視手段22は、毎サイクル同期の開始条件が満たされたらシミュレーション制御手段26に対し毎サイクル同期の開始を指示し、毎サイクル同期の終了条件が満たされたらシミュレーション制御手段26に対し毎サイクル同期の終了を指示する。
SW実行監視手段22は、プログラムカウンタ32を監視するPC監視手段36、バスアクセス時のアドレスをアドレス格納手段34に基づいて監視するアドレス監視手段37、バスアクセス時のメモリ・レジスタへの読み出し/書き込みデータをデータ格納手段35に基づき監視するメモリ・レジスタ値監視手段38を持つ。さらに、SW実行監視手段22は、同期区間情報に記載された毎サイクル同期の開始条件・終了条件と、各監視手段36〜38から得られたCPUシミュレーション手段21の内部情報(ソフトウェアの実行状態)とを比較し、条件成立の真偽を判定する条件判定手段39を持つ。この条件判定手段39は、同期区間の終了条件として同期区間の長さ(クロックサイクル数)を指定されているとき、シミュレーション制御手段26のシミュレータ内時間管理手段(時刻カウンタ)40から1サイクル毎にその時点のサイクル数を取得し、終了条件に指定されているサイクル数に到達したか否か(すなわち同期区間に入ってから所定時間が経過したか否か)を検査することも行う。
図4は、条件判定手段39の全体の処理フローを示すフローチャートである。
条件判定手段39は、同期区間情報指定手段13により指定される同期区間情報があるかどうかを検査し(S11)、同期区間情報あるときは該同期区間情報を読み込む(S12)。同期区間情報を読み込んだら、シミュレーションが終了したかどうかを検査し(S13)、シミュレーションが終了した場合は(S13のYES)本処理を終了する。シミュレーションが終了していない場合は(S13のNO)、同期区間情報を読み込んだかどうかを検査し(S14)、読み込んでいない場合は(S14のNO)あらかじめ指定した従来方式のシミュレーションを行う。一方、同期区間情報を読み込んだ場合は(S14のYES)、各監視手段36〜38およびシミュレータ内時間管理手段40からのイベントを待つ(S15)。イベントが発生したらイベントの種類の検査し(S17)、イベントの種類がプログラムカウンタの変化であるときは図5のフローチャートに示す処理フロー(PC比較条件/PC区間条件に対する処理フロー)に進み、バスアクセスの発生であるときは図6のフローチャートに示す処理フロー(アドレス比較条件およびメモリ/レジスタ値比較条件に対する処理フロー)に進み、サイクル数の変化であるときは図7のフローチャートに示す処理フロー(サイクル数比較条件に対する処理フロー)に進む。各監視手段36〜38およびシミュレータ内時間管理手段40から同時に複数のイベントが発生した場合は、発生したすべてのイベントについて各イベントに応じた処理をそれぞれ行う(S16、S17)。
図5に示すように、PC比較条件/PC区間条件に対する処理フローでは、条件判定手段39がPC監視手段36から現在のプログラムカウンタ値(PC値)を取得し(S21)、取得したプログラムカウンタ値を同期区間情報中のPC比較条件に記載されているプログラムカウンタ値と比較する(S22)。また、取得したプログラムカウンタ値が同期区間情報中のPC区間条件に記載されている区間に入るかどうかを検査する(S22)。
比較結果が不一致を示すときまたは取得したプログラムカウンタ値が上記区間に入らないときは(S23のNO)、すべてのPC比較条件/PC区間条件を調べたかどうかを検査し(S27)、まだのときは(S27のNO)、まだ調べていないPC比較条件/PC区間条件を調べる(S22)。すべてのPC比較条件/PC区間条件を調べたときは(S27のYES)図4のS13に戻る。
一方、比較結果が一致を示すときまたは上記取得したプログラムカウンタ値が上記区間に入るときは(S23のYES)、PC比較条件/PC区間条件に付帯されているアクションを調べ(S24)、アクションが開始を示すときはシミュレーション制御手段26に毎サイクル同期の開始を指示する(S25)。アクションが終了を示すときは、シミュレーション制御手段26に毎サイクル同期の終了を指示する(S26)。S25またはS26の後、図4のS13に戻る。なお、プログラムカウンタ値に対して、同期区間情報に記載されているPC比較条件およびPC区間条件が重複して満たされることはないものとする。
図6に示すように、アドレス比較条件およびメモリ/レジスタ値比較条件に対する処理フローでは、条件判定手段39が、アドレス監視手段37から、バスアクセスされたアドレスを取得し(S31)、取得したアドレスを、同期区間情報内のアドレス比較条件もしくはメモリ・レジスタ値比較条件に記載されているアドレスと比較する(S32)。
両者が一致しないときは(S33のNO)、すべてのアドレス比較条件もしくはメモリ・レジスタ値比較条件を調べたかどうかを検査し(S40)、まだのときは(S40のNO)、まだ調べていない条件を調べる(S32)。すべての条件を調べたときは(S40のYES)図4のS13に戻る。
両者が一致するときは(S33のYES)、当該条件がメモリ/レジスタ値比較条件であるかアドレス比較条件であるかを調べ(S34)、メモリ/レジスタ値比較条件であるときは(S34のYES)、取得したアドレスに格納された値または取得したアドレスに書き込んだ値を、メモリ/レジスタ値比較条件に記載されている値と比較する(S35)。比較結果が一致を示すとき(S36のYES)、または上記条件がアドレス比較条件であるときは(S34のNO)、当該条件に付帯されているアクションを調べ(S37)、アクションが開始を示すときはシミュレーション制御手段26に毎サイクル同期の開始を指示する(S38)。アクションが終了を示すときは、シミュレーション制御手段26に毎サイクル同期の終了を指示する(S39)。S38またはS39の後、図4のS13に戻る。S36において比較結果が不一致を示すときは(S36のNO)、S40に進み、すべてのアドレス比較条件もしくはメモリ・レジスタ値比較条件を調べたかどうかを検査する。まだのときは(S40のNO)まだ調べていない条件を調べ(S32)、すべての条件を調べたときは(S40のYES)図4のS13に戻る。
図7に示すように、サイクル数比較条件に対する処理フローでは、条件判定手段39は、シミュレーション制御手段26におけるシミュレーション内時間管理手段40から現在の時刻(サイクルカウント数)を取得したら(S41)、同期区間情報中にサイクル数比較条件が記載されているか否かを調べ(S42)、記載されていないときは(S42のNO)図4のS13に戻る。記載されているときは(S42のYES)、取得したサイクルカウント数が、サイクル数比較条件に記載されたサイクル数と一致するかどうかを検査する(S43)。検査結果が不一致を示すときは(S43のNO)図4のS13に戻り、一致するときは(S43のYES)、当該条件に付帯されているアクションを調べる(S44)。アクションが開始を示すときはエラー処理を行い(S45)、アクションが終了を示すときは、シミュレーション制御手段26に毎サイクル同期の終了を指示する(S46)。S45またはS46の後、図4のS13に戻る。
図8は、シミュレーション制御手段26の処理フローを説明するフローチャートである。
本処理フローには、現在、毎サイクル同期区間の区間内および区間外のいずれであるのかを判定する処理と、毎サイクル同期区間内で行う処理とが記述されている。SWシミュレータ全体の制御、内部の時間管理(サイクル数の管理)に関しては、既知の技術を用いるものとし、その処理の記述は省略する。なお、時間管理に関しては、たとえばクロック発生を記述した命令を実行して発生させたクロックを用いて時刻のカウント(サイクル数のカウント)を行ってもよいし、またはコンピュータ内部に搭載されたクロック発生機構から発生させられるクロックを用いて時刻のカウント(サイクル数のカウント)を行ってもよい。
図8において、シミュレーション制御手段26は、シミュレーションが終了したかどうかを検査し(S51)、終了した場合は(S51のYES)本処理を終了する。シミュレーションが終了していない場合は(S51のNO)、現在、毎サイクル同期中であるか(毎サイクル同期区間内であるか)どうかを、条件判定手段39から毎サイクル同期の開始指示が与えられたか否かに基づき検査し(S52)、YESである場合は、同期制御手段23に毎サイクル同期区間内であることを通知する(S53)。そして、シミュレータ内時間管理手段40により管理されているシミュレータ内時間が1サイクル進むごとにその旨を表すイベントを同期制御手段23に通知する(S54)。また、シミュレータ内時間が1サイクル進むごとに条件判定手段39に現在のサイクル数を通知する(S55)。この後、S51に戻る。
一方、S52において現在、毎サイクル同期中でない(毎サイクル同期区間外である)と判定された場合は(S52のNO)、シミュレーション制御手段26は同期制御手段23に毎サイクル同期区間外であることを通知し(S56)、シミュレータ時間管理手段40内の時間を通常通りに進める。そして、S51に戻る。
図9は、同期制御手段23の処理フローを示すフローチャートである。
同期制御手段23はシミュレーションが終了したかどうかを検査し(S61)、シミュレーションが終了した場合は(S61のYES)本処理を終了する。シミュレーションがまだ終了していない場合は(S61のNO)、現在、毎サイクル同期中であるか(毎サイクル同期区間内であるか)どうかを、シミュレーション制御手段26からの通知に基づき検査し(S62)、YESである場合は、FPGAボード12におけるクロック発生手段27に対して毎サイクル同期イネーブル(Enable)信号をアサートする(S63)。そして同期制御手段23は、シミュレータ制御手段26からの1サイクル進むことを示すイベントを待ち(S64)、イベントがきたらクロック信号を1サイクル分発生させる(S65)。この後、S61に戻る。
一方、S62において、毎サイクル同期中でない(毎サイクル同期区間外である)と判定された場合は(S62のNO)、同期制御手段23は、FPGAボード12におけるクロック発生手段27に対して毎サイクル同期イネーブル(Enable)信号をデアサートする(S66)。そして、S61に戻る。
図10はFPGAボード12上のクロック発生手段27の構成例を示す。
クロック発生手段27は、クロックを生成するクロック生成回路41と、セレクタ42とを持つ。クロック生成回路41で生成されるクロック周波数は、SWシミュレータ11で使用されるクロック周波数よりも高いものとする。セレクタ42は、同期制御手段23から入力される毎サイクル同期イネーブル信号がアサートされているときは(ハイのときは)同期制御手段23から入力されるクロック信号を選択して出力し、毎サイクル同期イネーブル信号がデアサートされているときは(ローのときは)クロック生成手段41により生成されるクロック信号を選択して出力する。セレクタ42から出力されるクロック信号は、FPGA回路28の動作クロックとして用いられる。
図11は、SWシミュレータ11側の同期制御手段23とFPGAボード12側のクロック発生手段27との相互作用を表すタイミングチャートである。毎サイクル同期区間外ではFPGAボードはクロック発生手段27により生成されるクロックに基づき動作するが、毎サイクル同期区間内では、SWシミュレータ11と同一のクロック周波数で動作することが理解される。
ここでFPGAボード側の処理として、SWシミュレータからFPGAボード上へのデバイスにアクセスが行われた際の動作として、バストランザクタを利用してバスアクセスの高速化を図るような技術を、本実施の形態と組み合わせることも可能である。この場合、例えば、SWシミュレータ側からバストランザクションが発生した際は、バストランザクタを介して(両者の同期をとって)FPGAボード上の回路にアクセスし、トランザクション処理が終了した時点で再び非同期動作に戻るといった処理がなされることになる。このような処理は本発明中で記載される技術と矛盾無く組み合わせ可能であるが、バストランザクタを利用した方式については既に公知のものであるので、説明を詳細な説明を省略する。
また、本実施の形態では、FPGAボードによるエミュレーションでハードウェア側動作を代替する例を記述しているが、ハードウェア側はクロック発生手段を実装することが可能であれば、ASICなどの実ハードウェアを搭載したボードなどを用いて協調シミュレーションを実行することも可能である。
また、本実施の形態では、PC監視手段、アドレス監視手段、メモリ・レジスタ値監視手段をすべてSW監視手段22の内部に配置しているが、たとえば、PCの監視を行う機能はCPUシミュレーション手段21の内部に持たせる、あるいは周辺回路のレジスタに割り振られたアドレスへのアクセスを監視する機能については周辺回路シミュレーション手段25の内部に持たせる、あるいはメモリに割り当てられたアドレスへのアクセスを監視する機能については、メモリシミュレーション手段24の内部に持たせるといったように、SW監視手段22が備える監視機能の一部をCPUシミュレーション手段21、周辺回路シミュレーション手段25、およびメモリシミュレーション手段24の少なくとも1つに含めることも可能である。
以上のように、本実施の形態によれば、ソフトウェアの実行状態が同期開始条件を満たしてから同期終了条件を満たすまでの間の同期区間のみSWシミュレータとFPGAボードとの同期を取るようにしたため、FPGAボードの高速性を損なわずに、かつ、SWシミュレータおよびFPGAボード間の同期のオーバーヘッドを抑えつつ、高精度かつ高速なシミュレーションが可能となる。たとえばソフトウェアがあるハードウェア動作を起動してからのソフトウェアの時間制約に対してFPGAボードからの割り込みが「間に合う」「間に合わない」の検証が、高速かつ使い易い環境で実現できる。
(第2の実施の形態)
第1の実施の形態では、SWシミュレータとFPGAボードとでの協調シミュレーションを行う場合の例を記述したが、本発明の根本をなす技術は第1の実施の形態で記述したこのような組み合わせに限られない。第2の実施の形態では、SWシミュレータとHWシミュレータとの組み合わせた協調シミュレーションの例を示す。
図12は、本発明の第2の実施の形態に係わるHW/SW協調シミュレータの全体構成を示すブロック図である。図1と同一名称の要素には同一の符号を付し、その動作は図1の対応する要素と同一であるためその説明を省略する。具体的に、SWシミュレータ11側の動作は第1の実施の形態と同等である。
HWシミュレータ51は、ハードウェア記述(対象となるハードウェアのRTL記述など)52とシミュレーション用のテストベンチ記述53とを用いてハードウェアのシミュレーションを行う。HWシミュレータ制御手段54はシミュレーション全体を制御する。クロック発生用の記述55がテストベンチ記述53に含まれている。すなわち、テストベンチ記述53にクロック発生手段55を加えている。通常、HWシミュレータ上で動作するハードウェア記述は、シミュレーション用のテストベンチと合わせてシミュレーションされ、本実施の形態では、このテストベンチ中にクロック発生用の記述を含めているため、HWシミュレータ本体は既存のものをそのまま利用することができる。
図13は、HWシミュレータ51側のクロック発生手段55の処理フローを示すフローチャートである。
クロック発生手段55は、シミュレーションが終了したかどうかを検査し(S71)、終了した場合は(S71のYES)本処理を終了する。シミュレーションが終了していない場合は(S71のNO)、SWシミュレータ11における同期制御手段23からの毎サイクル同期イネーブル信号がアサートされているかどうかを検査し(S72)、アサートされているときは(S72のYES)、同期制御手段23からのクロック信号を待つ(S73)。クロック信号がきたらクロック信号を1サイクル分発生させ(S74)、S71に戻る。一方、毎サイクル同期イネーブル信号がアサートされていないときは(S72のNO)、テストベンチ記述53中のクロック発生記述を利用してクロックを発生させる(S75)。この後、S71に戻る。
図13の処理フローの説明では同期区間外においてテストベンチ記述に記載されたクロック発生手段55によりクロック信号を発生させたが、SWシミュレータ11側のバスアクセス時以外はクロック発生を完全に止めてしまってもよい。HWシミュレーションの動作を停止することで全体のシミュレーション負荷を低減し、シミュレーション速度の向上を図ることも可能である。
(第3の実施の形態)
図14は、本発明の第3の実施の形態として、ソフトウェア側の動作に実CPUが搭載された評価ボード61と、ICE(In Circuit Emulator:インサーキットエミュレータ)62とを利用した例である。評価ボードとICE62との組はソフトウェア実行装置に相当する。図1と同一の名称の要素には同一の符号を付して重複する説明を省略する。ICE62における実行制御手段63は図1のシミュレーション制御手段26と同等の機能を有している。ICEなどを用いることで、実CPU上で動作するソフトウェアの動作状況(プログラムカウンタの値、バスアクセスのアドレス、メモリ/レジスタの値)の情報を参照することが可能である。ここでは、ICE62に搭載したSW実行監視手段22に含まれるPC監視手段、アドレス監視手段、メモリ/レジスタ値監視手段によって上記ソフトウェアの動作状況の情報を取得することができる。これにより、第1の実施の形態と同等の協調シミュレーションが可能となる。
図14の構成の場合、評価ボード+ICEの系がFPGAボードより高速に動作するような場合も考えられる。このような場合は、評価ボード+ICEの系内全体の動作周波数をFPGAボードの動作周波数まで落とすように制御すればよい。ソフトウェアの実行速度は低下することになるが、毎サイクル同期に指定した区間でのソフトウェアの実行ステップ数とハードウェア側のスループットとが実時間の動作(1つのLSI上に実装されたときの動作)と等しくすることができるので、ある時間要件を満たすか否かという検証項目を正しく評価することが可能になるというメリットは残る。
本発明の第1の実施の形態に係わるハードウェア/ソフトウェア協調シミュレータの全体構成図。 同期区間情報の例を示す図。 SWシミュレータの詳細構成図。 条件判定手段の処理フローを説明するフローチャート。 図4に続く、条件判定手段の処理フローを説明するフローチャート。 図4に続く、条件判定手段の処理フローを説明するフローチャート。 図4に続く、条件判定手段の処理フローを説明するフローチャート。 シミュレーション制御手段の処理フローを説明するフローチャート。 同期制御手段の処理フローを説明するフローチャート。 FPGAボード上のクロック発生手段の構成を示す図。 同期制御手段とクロック発生手段との間の動作イメージを示す図。 本発明の第2の実施の形態に係わるハードウェア/ソフトウェア協調シミュレータの全体構成図。 図12におけるHWシミュレータ側のクロック発生手段の動作を説明するフローチャート。 本発明の第3の実施の形態に係わるハードウェア/ソフトウェア協調シミュレータの全体構成図。
符号の説明
11:SWシミュレータ
12:FPGAボード
13:同期区間情報指定手段
21:CPUシミュレーション手段
22:SW実行監視手段
23:同期制御手段
24:メモリシミュレーション手段
25:周辺回路シミュレーション手段
26:シミュレーション制御手段
27:クロック発生手段
28:FPGA回路
31:ISS
32:プログラムカウンタ(PC)
33:バスアクセスシミュレーション手段
34:アドレス格納手段
35:データ格納手段
36:PC監視手段
37:アドレス監視手段
38:メモリ・レジスタ値監視手段
39:条件判定手段
40:シミュレータ内時間管理手段
41:クロック生成回路
42:セレクタ
51:HWシミュレータ
52:RTL記述
53:テストベンチ記述
54:HWシミュレータ制御手段
55:クロック発生手段
61:評価ボード
62:ICE(In Circuit Emulator)
63:実行制御手段

Claims (5)

  1. ハードウェアとソフトウェアとの両方で構成される機器に対して、前記ハードウェアの動作を検証するハードウェア回路またはハードウェアシミュレータと、前記ソフトウェアの動作を検証するソフトウェア実行装置との協調シミュレーションにおける前記ソフトウェア実行装置であって、
    検証対象となるソフトウェアを実行するソフトウェア実行手段と、
    前記ソフトウェアの実行を監視し、前記ソフトウェアの実行状態を表す情報を取得する実行監視手段と、
    前記ソフトウェアの実行状態に基づき、前記ソフトウェア実行手段と、前記ハードウェア回路または前記ハードウェアシミュレータとを同期させるか否かを判定する判定手段と、
    前記判定手段により同期させることが決定されたとき、前記ソフトウェア実行手段の内部時間の1サイクルと、前記ハードウェア回路または前記ハードウェアシミュレータのクロック信号の発生とを同期させる、同期制御手段と、
    を備えたソフトウェア実行装置。
  2. 前記判定手段は、同期を開始する開始条件、同期を終了する終了条件を前記ソフトウェアの実行状態に基づき記述した同期区間情報を用いて、前記同期の開始および終了を判定し、
    前記同期制御手段は、前記同期の開始が判定されてから終了が判定されるまでの間、前記同期を実行する
    ことを特徴とする請求項1に記載のソフトウェア実行装置。
  3. 時刻をカウントする時刻カウンタをさらに備え、
    前記同期区間情報には、さらに前記時刻を用いた終了条件が記述されており、
    前記判定手段は、前記同期区間情報と前記時刻カウンタとを用いて前記同期の終了を判定する、
    ことを特徴とする請求項2に記載のソフトウェア実行装置。
  4. 前記実行監視手段は、前記ソフトウェアの実行状態を表す情報として、プログラムカウンタ値、前記ソフトウェア実行手段によりアクセスされるアドレス、前記アクセスされるアドレスから読み出されるまたは前記アドレスに書き込まれるデータを取得する、
    ことを特徴とする請求項1〜3のいずれか一項に記載のソフトウェア実行装置。
  5. ハードウェアとソフトウェアとの両方で構成される機器に対して、前記ハードウェアの動作を検証するハードウェア回路またはハードウェアシミュレータと、前記ソフトウェアの動作を検証するソフトウェア実行装置との協調シミュレーションにおける協調動作方法であって、
    検証対象となるソフトウェアを前記ソフトウェア実行装置で実行し、
    前記ソフトウェアの実行状態を監視し、
    前記ソフトウェアの実行状態を表す情報を取得し、
    前記ソフトウェアの実行状態に基づき、前記ソフトウェア実行装置と、前記ハードウェア回路または前記ハードウェアシミュレータとを同期させるか否かを判定し、
    前記同期させることが決定されたとき、前記ソフトウェア実行装置の内部時間の1サイクルと、前記ハードウェア回路または前記ハードウェアシミュレータのクロック信号の発生とを同期させる、
    ことを特徴とする協調動作方法。
JP2007163652A 2007-06-21 2007-06-21 ソフトウェア実行装置および協調動作方法 Expired - Fee Related JP4468410B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007163652A JP4468410B2 (ja) 2007-06-21 2007-06-21 ソフトウェア実行装置および協調動作方法
US12/142,998 US8036874B2 (en) 2007-06-21 2008-06-20 Software executing device and co-operation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007163652A JP4468410B2 (ja) 2007-06-21 2007-06-21 ソフトウェア実行装置および協調動作方法

Publications (2)

Publication Number Publication Date
JP2009003683A JP2009003683A (ja) 2009-01-08
JP4468410B2 true JP4468410B2 (ja) 2010-05-26

Family

ID=40161614

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007163652A Expired - Fee Related JP4468410B2 (ja) 2007-06-21 2007-06-21 ソフトウェア実行装置および協調動作方法

Country Status (2)

Country Link
US (1) US8036874B2 (ja)
JP (1) JP4468410B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5065344B2 (ja) 2009-07-14 2012-10-31 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション方法、システム及びプログラム
DE102009050161A1 (de) * 2009-10-21 2011-04-28 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten
JP5625714B2 (ja) 2010-10-07 2014-11-19 富士通セミコンダクター株式会社 シミュレーション装置、プログラム、記憶媒体、及び方法
JP5528294B2 (ja) * 2010-10-20 2014-06-25 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション制御方法、システム及びプログラム
US9135586B2 (en) * 2010-10-28 2015-09-15 Sap Se System for dynamic parallel looping of repetitive tasks during execution of process-flows in process runtime
US20120143583A1 (en) * 2010-12-05 2012-06-07 Cheng-Yen Huang System-level emulation/verification system and system-level emulation/verification method
US8903696B2 (en) * 2011-07-15 2014-12-02 Cadence Design Systems, Inc. System and method for controlling granularity of transaction recording in discrete event simulation
JP6184217B2 (ja) * 2013-07-19 2017-08-23 サイプレス セミコンダクター コーポレーション シミュレーション制御方法、シミュレーション制御プログラム、およびシミュレーション制御装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4862347A (en) * 1986-04-22 1989-08-29 International Business Machine Corporation System for simulating memory arrays in a logic simulation machine
US5327361A (en) * 1990-03-30 1994-07-05 International Business Machines Corporation Events trace gatherer for a logic simulation machine
JPH05205005A (ja) * 1990-03-30 1993-08-13 Internatl Business Mach Corp <Ibm> ロジック・シミュレーション・マシン用ホスト・インタフェース
JPH05241891A (ja) 1992-02-26 1993-09-21 Nec Corp トレーサ回路
JP2737645B2 (ja) 1994-03-30 1998-04-08 日本電気株式会社 プログラム・デバッグ装置
JPH09231255A (ja) 1996-02-27 1997-09-05 Hitachi Ltd ハードウエア/ソフトウエア協調検証方式
US6785873B1 (en) * 1997-05-02 2004-08-31 Axis Systems, Inc. Emulation system with multiple asynchronous clocks
US6356862B2 (en) * 1998-09-24 2002-03-12 Brian Bailey Hardware and software co-verification employing deferred synchronization
JP2001290860A (ja) 2000-04-10 2001-10-19 Matsushita Electric Ind Co Ltd ハードウエア/ソフトウエア協調シミュレータ
US6754763B2 (en) * 2001-07-30 2004-06-22 Axis Systems, Inc. Multi-board connection system for use in electronic design automation
US7080365B2 (en) * 2001-08-17 2006-07-18 Sun Microsystems, Inc. Method and apparatus for simulation system compiler
GB0212176D0 (en) * 2002-05-27 2002-07-03 Radioscape Ltd Stochasitc scheduling in CVM
US20060058976A1 (en) * 2002-05-27 2006-03-16 Ferris Gavin R Method of testing components designed to perform real-time, high resource functions
JP2007058813A (ja) 2005-08-26 2007-03-08 Fujitsu Ltd 検証装置及び検証方法
US7702055B2 (en) * 2006-09-29 2010-04-20 Mips Technologies, Inc. Apparatus and method for tracing processor state from multiple clock domains

Also Published As

Publication number Publication date
JP2009003683A (ja) 2009-01-08
US8036874B2 (en) 2011-10-11
US20090006068A1 (en) 2009-01-01

Similar Documents

Publication Publication Date Title
JP4468410B2 (ja) ソフトウェア実行装置および協調動作方法
TW201229700A (en) Hybrid simulation system and method
CN103116069B (zh) 芯片频率的测试方法、装置及系统
JP4842783B2 (ja) 情報処理装置及び情報処理方法及びプログラム
JP5029096B2 (ja) 電源ノイズモデル生成方法及び電源ノイズモデル生成装置
US7888971B2 (en) Verification support system and method
JP5785725B2 (ja) 電力見積装置、電力見積方法及びプログラム
US20200327027A1 (en) Automated Self-Check of a Closed Loop Emulation Replay
JP2019091144A (ja) シミュレーション装置、シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム
US20140325468A1 (en) Storage medium, and generation apparatus for generating transactions for performance evaluation
JP2006185055A (ja) 計算機システムの設計支援システムおよび設計支援プログラム
JP5454349B2 (ja) 性能推定装置
US8468409B2 (en) Speed-path debug using at-speed scan test patterns
RU2729210C1 (ru) Комплекс тестирования программного обеспечения электронных устройств
JP2015011363A (ja) 協調検証装置及び協調検証方法
US8793548B2 (en) Integrated circuit, simulation apparatus and simulation method
JP5994661B2 (ja) 検証プログラム、検証方法及び検証装置
JP5146369B2 (ja) 回路設計プログラム、回路設計方法および回路設計装置
JP5515815B2 (ja) 検証装置及び検証プログラム
WO2017149737A1 (ja) 高位合成装置、高位合成方法及び高位合成プログラム
JP5077219B2 (ja) シミュレーション方法、シミュレーション装置およびシミュレーションプログラム
JP2000057188A (ja) ハードウェア・ソフトウェア協調評価装置
JPH10221410A (ja) Lsiの自動論理検証方式
JP6949440B2 (ja) ベクタ生成装置及びベクタ生成用プログラム
JP2005165825A (ja) トレース情報記録装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090714

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090909

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

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

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

Free format text: PAYMENT UNTIL: 20130305

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130305

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140305

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees