JP2008065640A - シミュレーション装置およびそのシミュレーション制御方法 - Google Patents

シミュレーション装置およびそのシミュレーション制御方法 Download PDF

Info

Publication number
JP2008065640A
JP2008065640A JP2006243413A JP2006243413A JP2008065640A JP 2008065640 A JP2008065640 A JP 2008065640A JP 2006243413 A JP2006243413 A JP 2006243413A JP 2006243413 A JP2006243413 A JP 2006243413A JP 2008065640 A JP2008065640 A JP 2008065640A
Authority
JP
Japan
Prior art keywords
simulation
synchronization
cooperative
simulator
control unit
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
JP2006243413A
Other languages
English (en)
Inventor
Takashi Akiba
剛史 秋葉
Takashi Miura
貴 三浦
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 JP2006243413A priority Critical patent/JP2008065640A/ja
Priority to US11/851,058 priority patent/US7673265B2/en
Publication of JP2008065640A publication Critical patent/JP2008065640A/ja
Pending 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

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)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 ソフトウェアシミュレーションとハードウェアシミュレーションの同期型シミ
ュレーション装置による協調シミュレーションの速度を向上する。
【解決手段】 協調動作制御部300は、ソフトウェアシミュレーション装置100およ
びハードウェアシミュレーション装置200のシミュレーション動作を制御し、同期情報
の通信を行うとともに同期情報の同期条件を判定する。その結果に基づき、ソフトウェア
シミュレーション装置100およびハードウェアシミュレーション装置200に動作サイ
クル数を設定する。同期条件が不成立の時に、2以上の動作サイクル数を設定してシミュ
レーション動作させ、通信回数を減らして、協調シミュレーションを高速化する。
【選択図】 図1

Description

本発明は、LSI開発で検証に用いるシミュレーション装置およびそのシミュレーショ
ン制御方法に係り、特に同期型シミュレーションにおいて複数のシミュレーション装置を
協調動作させてシミュレーションを高速化する技術に関する。
近年、半導体技術の進展により集積度が向上し、1チップ上に搭載できるシステムLS
Iが大規模化している。このようなシステムLSIがチップ上に形成された後に、アーキ
テクチャレベルの不具合が発見されると、修正に多くの時間とコストが必要になる問題が
ある。
このため、このようなシステムLSI開発では、検証済みの既存設計のブロックやモジ
ュールなどを再利用したり、トップダウン設計手法により段階的に検証を行うようにして
、設計品質と開発効率を向上させることが行われている。このシステムレベルの検証では
、システム全体を対象とする検証技術が必要とされるが、シミュレーションによって検証
を行う検証対象システムの回路規模が大きいとシミュレーション時間が増加するため、シ
ミュレーションの高速化技術が求められている。
シミュレーションの高速化では、シミュレーション処理をサイクル精度などとするサイ
クルベースシミュレータや、プログラマブルデバイス(例えば、FPGA(Field Progra
mmable Gate Array))を用いてシミュレーションを行うハードウェアエミュレータ(例
えば、シミュレーションアクセラレータ)などが用いられている。
ハードウェアエミュレータは、ソフトウェアシミュレータに比べ、数桁高速に動作する
が、プログラマブルデバイスの素子数の規模やコストの点から、エミュレートできる回路
規模が限られる。このため、ハードウェアエミュレータとソフトウェアシミュレータとを
協調させてシミュレーションする「ハードウェア・ソフトウェア協調シミュレータ」が提
案されている。
ハードウェアエミュレータとソフトウェアシミュレータとを協調させてシミュレーショ
ンを行う場合でも、一般に、相互の通信速度がそれぞれのシミュレーション速度に比べて
遅いことから、その通信速度がボトルネックになってシミュレーション速度を低下させる
という問題がある。
そこで、ハードウェアエミュレータからソフトウェアシミュレータへ出力される信号の
うち、変化があった信号のみをソフトウェアシミュレータが取り込むことで、通信量を減
らしシミュレーション速度を向上させるという技術が知られている(たとえば、特許文献
1参照。)。
特開2005−332162号公報
しかしながら、前記特許文献1に開示される変化があった信号のみをソフトウェアシミ
ュレータが取り込むことで、通信量を減らして協調シミュレーションを高速化する方法で
は、ハードウェアエミュレータとソフトウェアシミュレータ間の同期をとる必要がある。
このために、ソフトウェアシミュレータからハードウェアエミュレータに対して同期信号
をサイクル毎に送出しなければならないため、その同期信号の通信が毎サイクル発生する
ことから協調シミュレーションの速度が低下する課題があった。
本発明は、上記課題を解決するためになされたもので、ハードウェアエミュレータとソ
フトウェアシミュレータとの間の信号のやりとりがある時は毎サイクル同期通信を行い、
信号のやりとりが無い時は複数サイクルの期間は同期通信を行わないようにして、シミュ
レーション開始から終了までの通信回数を減らすことができるシミュレーション装置およ
びシミュレーション制御方法を提供することを目的とする。
上記目的を達成するために、本発明の同期型協調シミュレーション装置は、動作サイク
ル数が指定可能な第1のシミュレーション手段と、動作サイクル数が指定可能な第2のシ
ミュレーション手段と、前記第1および第2のシミュレーション動作を制御する制御情報
と、前記第1および第2のシミュレーションの同期情報を互いに通信するように制御して
同期制御するシミュレーション制御手段とを備え、前記シミュレーション制御手段は、前
記同期情報の同期条件が成立する時は前記第1および第2のシミュレーション手段の動作
サイクル数を第1サイクル値に設定し、前記同期条件が成立しない時は前記第1および第
2のシミュレーション手段の動作サイクル数の少なくとも一方を前記第1サイクル値より
多い第2サイクル値に設定することを特徴とする。
また、本発明のシミュレーション制御方法は動作サイクル数が指定可能な第1および第
2のシミュレーション装置をシミュレーション制御装置の制御により協調動作させるシミ
ュレーション制御方法であって、前記シミュレーション制御装置は、第1および第2のシ
ミュレーション装置に、同期情報および制御情報を送信し、第1および第2のシミュレー
ション装置は、前記同期情報および制御情報の受信に応答し、前記同期情報に含まれるノ
ードデータを入力し、前記制御情報に含まれる指定された動作サイクル数のシミュレーシ
ョンを行い、シミュレーション動作後に前記同期情報に該当するノードデータをシミュレ
ーション制御装置に送信し、シミュレーション制御装置は、受信した前記同期情報の同期
条件が成立する時は、前記第1および第2のシミュレーション装置に設定する次の動作サ
イクル数を第1サイクル値とし、同期条件が成立しない時は、前記第1および第2のシミ
ュレーション装置に設定する次の動作サイクル数の少なくとも一方を前記第1サイクル値
より多い第2サイクル値とすることを特徴とする。
本発明によれば、ハードウェアエミュレータとソフトウェアシミュレータとの間の信号
のやりとりがある時は毎サイクル同期通信を行い、信号のやりとりが無い時は複数サイク
ルの期間は同期通信を行わないようにして、シミュレーション開始から終了までの通信回
数を減らすことができ、協調シミュレーションを高速化することができる。
以下、本発明の実施例を説明する。
本発明の実施例を、図1乃至図4を参照して説明する。
図1は、実施例に係るソフトウェアシミュレータとハードウェアエミュレータとが協調
してシミュレーション動作する協調シミュレーション装置(以下、協調シミュレータと称
する)の構成を示すブロック図である。図2は、図1の協調シミュレータの主要な構成を
示すブロック図である。図3は、協調シミュレータの主要な制御処理手順を示すフローチ
ャートである。図4は、協調シミュレータの協調動作の様子を示すタイミング図である。
図1に示す協調シミュレータ1は、開発システム全体の機能動作を検証するシミュレー
タで、ソフトウェアシミュレータ100と、ハードウェアエミュレータ200と、協調動
作制御部300から構成される。
ソフトウェアシミュレータ100は、シミュレータ動作制御部400の制御に従って被
検証モジュール500をサイクルベースのシミュレーションソフトウェア(プログラム)
でシミュレーション動作(模擬動作)する。このソフトウェアシミュレータ100は、図
示しないコンピュータの記憶装置にデータ構造やプログラムとして記憶され、コンピュー
タのCPUでプログラム実行することで実現される。
シミュレータ動作制御部400は、動作サイクル設定部410に設定されたサイクル数
の期間に、信号線420を介して入出力情報、クロック、状態情報、制御情報などを被検
証モジュール500との間で入出力して、シミュレーション動作を制御する。
被検証モジュール500は、検証対象の例えば周辺回路やCPUやそのCPUが実行す
るプログラムイメージを記憶したメモリなどの、機能記述や論理記述をソフトウェアでシ
ミュレーション動作可能なようにコンパイラなどで変換した動作モデルを格納している。
ハードウェアエミュレータ200は、エミュレータ動作制御部600の制御に従って被
検証モジュール700のハードウェア上に書き込まれた回路を動作させてシミュレーショ
ン動作する。
エミュレータ動作制御部600は、動作サイクル設定部610に設定されたサイクルの
期間に、信号線620を介して入出力情報、クロック、状態情報、制御情報などを被検証
モジュール700との間で入出力して、シミュレーション動作を制御する。このエミュレ
ータ動作制御部600は、図示しないコンピュータ上で動作する。
被検証モジュール700は、検証対象の例えば周辺回路やCPUやそのCPUが実行す
るプログラムイメージを記憶したメモリなどの、機能記述や論理記述で表される動作モデ
ルをコンパイラなどで論理回路などの接続記述に変換して、FPGAなどのプログラマブ
ル素子上に書き込まれたものである。なお、被検証モジュール700にはプログラマブル
素子以外にメモリ素子や、入手可能なハードウェアモジュールなどが組み込まれる。
協調動作制御部300は、図示しないコンピュータ上で動作するもので、信号線310
を介してハードウェアエミュレータ200のエミュレータ動作制御部600と接続される
。また、信号線320を介してソフトウェアシミュレータ100のシミュレータ動作制御
部400と接続される。
協調シミュレータ1のシミュレーション動作の操作指示が検証作業者によって行われる
と、協調動作制御部300は、シミュレータ動作制御部400とエミュレータ動作制御部
600との間でそれぞれ信号線320および信号線310を介して同期情報および制御情
報を入出力(通信)して、ソフトウェアシミュレータ100およびハードウェアエミュレ
ータ200のシミュレーション動作を制御する。この入出力される同期情報および制御情
報を用いて、被検証モジュール500および被検証モジュール700に実装された検証対
象システム全体のシミュレーション動作が行われる。
この同期情報は、それぞれの被検証モジュール500,700に含まれる同一信号を同
一の値とするための情報であって、被検証モジュール500と被検証モジュール700と
の間で互いに通信される入出力情報などの情報である。また、制御情報は、シミュレーシ
ョン動作を制御するための情報であって、シミュレーション動作の開始や停止を指示する
情報、動作状況を示す情報、シミュレーション動作期間を指示する動作サイクル数などの
情報である。
次に、図2を参照して協調シミュレータ1の更に詳細な構成を説明する。図2の協調シ
ミュレータ1の協調動作制御部300は、点線で囲んで示すようにソフトウェアシミュレ
ータ100と同じコンピュータ上で動作している。
ソフトウェアシミュレータ100は、協調動作制御部300と信号線320で接続され
たシミュレータ動作制御部400が、被検証モジュール500と信号線420で接続され
てシミュレーション動作を行う。
信号線320は、ソフトウェアシミュレータ100の動作状況などを示す信号321、
ソフトウェアシミュレータ100のシミュレーション動作開始や動作サイクル数などを指
定する信号322、同期対象ノードへの入出力信号323などから構成される。この入出
力信号323は、被検証モジュール500の入出力ノード(端子)の中で同じノード名を
持つ被検証モジュール700のノードと同じ値に設定して、同期を取得する信号である。
また信号線420は、シミュレータ動作制御部400が動作サイクル設定部410に設
定されたサイクル数に応じて生成出力するクロック信号や被検証モジュール500のシミ
ュレーション動作状態などを示す信号421、被検証モジュール500の同期対象の入出
力ノードの信号422などから構成される。この内、信号422は、信号入出力部430
を介して信号323として協調動作制御部300に入出力される。
ハードウェアエミュレータ200は、協調動作制御部300と信号線310で接続され
たシミュレータ動作制御部600が被検証モジュール700と信号線620で接続されて
シミュレーション動作を行う。
信号線310は、ハードウェアエミュレータ200の動作状況などを示す信号311、
ハードウェアエミュレータ200のシミュレーション動作開始や動作サイクル数などを指
定する信号312、同期対象ノードへの入出力信号313などから構成される。この入出
力信号313は、被検証モジュール700の入出力ノードの中で同じノード名を持つ被検
証モジュール500のノードと同じ値に設定して、同期を取得する信号である。
また信号線620は、エミュレータ動作制御部600が動作サイクル設定部610に設
定されたサイクル数に応じて生成出力するクロック信号や被検証モジュール700のシミ
ュレーション動作状態などを示す信号621、被検証モジュール700の同期対象の入出
力ノードの信号622などから構成される。この内、信号622は、信号入出力部630
を介して信号313として協調動作制御部300に入出力される。
協調動作制御部300は、信号線310,320を介してハードウェアエミュレータ2
00のエミュレータ動作制御部600とソフトウェアシミュレータ100のシミュレータ
動作制御部400にそれぞれ接続される。協調動作制御部300の同期判定部330は、
予め決められた信号毎に決められた同期条件の値を入力し、ソフトウェアシミュレータ1
00とハードウェアエミュレータ200から出力される指定されたサイクル数のシミュレ
ーション動作終了時の処理結果を比較して同期条件が成立しているかを判定する。協調動
作制御部300は、同期判定部330の判定結果に従って、信号322と信号312によ
ってシミュレータ動作制御部400とエミュレータ動作制御部600にシミュレーション
動作の制御情報を出力する。
なお、この協調動作制御部300は、図2において点線で囲んで示したようにソフトウ
ェアシミュレータ100と同じコンピュータ上で動作するため、コンピュータ上に用意さ
れた図示しないデータテーブルを互いに書込み/読出す方法などでソフトウェアシミュレ
ータ100のシミュレータ動作制御部400との間の入出力を実現する。
次に、図2乃至図4を参照しながら、協調シミュレータ1でソフトウェアシミュレータ
100とハードウェアエミュレータ200とが協調動作して協調シミュレーションする動
作の詳細を説明する。
図3は協調シミュレータ1の協調動作制御部300が行う主要な制御処理手順を示すフ
ローチャートである。図4は、協調シミュレーション実行時の、ソフトウェアシミュレー
タ100とハードウェアエミュレータ200の動作と同期通信の様子を示すタイミング図
である。
協調シミュレーションが開始されると、被検証モジュール500を含めたソフトウェア
シミュレータ100と、被検証モジュール700を含めたハードウェアエミュレータ20
0と、協調動作制御部300とが初期化される(ステップS100)。
この初期化とは、対象となるシステムやブロックを使用可能な状態にすることであって
、協調動作制御部300の初期化は、協調シミュレーション制御に必要なシミュレーショ
ンの時刻やデータテーブルやパラメータなどを初期設定値とすることである。また、ソフ
トウェアシミュレータ100のシミュレーション動作サイクル数を保持するパラメータN
Sとハードウェアエミュレータ200のシミュレーション動作サイクル数を保持するパラ
メータNEにそれぞれ「1」が設定される。
次に、協調動作制御部300は、パラメータNS,NEに設定された値「1」をそれぞ
れソフトウェアシミュレータ100の動作サイクル設定部410とハードウェアエミュレ
ータ200の動作サイクル設定部610に設定し、ソフトウェアシミュレータ100とハ
ードウェアエミュレータ200のシミュレーション動作を開始させる(ステップS110
)。
すなわち、協調動作制御部300は、信号線322を介してシミュレータ動作制御部4
00にパラメータNSの動作サイクル数の値とシミュレーション動作開始指示を送信し、
また、信号線312を介してエミュレータ動作制御部600にパラメータNEの動作サイ
クル数の値とシミュレーション動作開始指示を送信する。
そしてシミュレータ動作制御部400は、受信したパラメータNSの値「1」を動作サ
イクル設定部410に設定し、受信した開始指示に従ってシミュレーション動作を開始す
る。また、エミュレータ動作制御部600は、受信したパラメータNEの値「1」を動作
サイクル設定部610に設定し、受信した開始指示に従ってエミュレーション動作を開始
する。
次に、ソフトウェアシミュレータ100は動作サイクル設定部410に設定されたサイ
クル数分のシミュレーション動作を行い、ハードウェアエミュレータ200は動作サイク
ル設定部610に設定されたサイクル数分のシミュレーション動作を行う(ステップS1
20)。
すなわち、シミュレータ動作制御部400は、シミュレーション動作開始指示に従って
クロックを生成して信号線421を介して被検証モジュール500に入力してソフトウェ
アシミュレータ100のシミュレーション動作を開始する。また、シミュレーション動作
制御部400は、動作サイクル設定部410に設定されたサイクルが完了するまでクロッ
クを生成してシミュレーション動作を繰り返すように制御し、生成したクロックが設定さ
れた数に達するとシミュレーション動作を終了する。
また、エミュレータ動作制御部600は、シミュレーション動作開始指示に従ってクロ
ックを生成して信号線621を介して被検証モジュール700に入力してハードウェアエ
ミュレータ200のシミュレーション動作を開始する。また、エミュレーション動作制御
部600は、動作サイクル設定部610に設定されたサイクルが完了するまでクロックを
生成してシミュレーション動作を繰り返すように制御し、生成したクロックが設定された
数に達するとシミュレーション動作を終了する。
次に、ソフトウェアシミュレータ100とハードウェアエミュレータ200は、指定さ
れたサイクル数のシミュレーション動作を行うと、協調動作制御部300の制御に従って
同期動作を行う(ステップS130)。
すなわち、ステップS120のシミュレーション動作を行った後、ソフトウェアシミュ
レータ100とハードウェアエミュレータ200は、それぞれ協調動作制御部300にシ
ミュレーション動作終了を送信する。そして、協調動作制御部300は、両者のシミュレ
ーション動作終了状態を受信すると同期動作通信を開始する。この時、ソフトウェアシミ
ュレータ100とハードウェアエミュレータ200のシミュレーション動作が終了するの
に要する時間は、それぞれのシミュレーション動作対象の回路規模や動作サイクル数によ
り異なる。すなわち、ハードウェアエミュレータ200は、ソフトウェアシミュレータ1
00に比べてシミュレーション動作速度が100〜1000倍程度高速である。そこで、
ソフトウェアシミュレータ100とハードウェアエミュレータ200が協調動作する環境
では、協調動作制御部300は、ソフトウェアシミュレータ100のシミュレーション動
作終了時に、同期動作の通信を行うように制御する。
ここで言う同期動作とは、被検証モジュール500および被検証モジュール700の同
じノード名に設定されたものを同一の値とすることである。すなわち、同じノード名の信
号値を、信号線422と信号線323と信号線313および信号線622を経由して被検
証モジュール500と被検証モジュール700との間で交信し、同じ信号値であれば同期
状態が維持されていることが判定され、同期動作以前と異なれば、入力値を更新すること
により同期が継続されることになる。
また、同期動作の対象の信号の中であらかじめ定められた入出力信号は、同様にあらか
じめ定められた同期条件とともに同期判定部330に入力される。
次に、協調動作制御部300は、協調シミュレーションの終了条件が成立しているか判
定(ステップS140)し、終了条件が成立していない時は次のステップS150に進み
、終了条件が成立している時は、協調シミュレーションを終了する。
協調シミュレーションの終了条件が成立するとは、例えば、モジュールに含まれるCP
UでHALT命令を実行した時や、協調シミュレータのシステムサイクル数がシミュレー
ション開始時に指定したサイクル数に達した時や、図示しない入力装置よりシミュレーシ
ョン停止操作を行った時などを指し、協調動作制御部300は成立した終了条件に応じて
ソフトウェアシミュレータ100とハードウェアエミュレータ200のシミュレーション
動作を停止させて協調シミュレーション動作を終了させる。
協調シミュレーションの終了条件が成立しない時、協調動作制御部300は同期判定部
330の出力によって同期条件が成立しているか調べる(ステップS150)。そして、
同期条件が成立している時は、ステップS160に進み、同期条件が成立しない時は、ス
テップS170に進む。
同期判定部330には、協調シミュレーション開始前に検証作業者などによって、同期
信号の中からあらかじめ選ばれた信号と、その信号の同期成立時の信号レベルを示す信号
とが一対の組となって設定入力されている。そして同期判定部330は、それらの組の信
号が一組でも一致するとアクティブ(High)の信号を出力し、入力された全ての組で
信号が一致しなければ不成立となって否アクティブ(Low)の信号を出力する。
そして、協調動作制御部300は、同期条件が成立している場合、ソフトウェアシミュ
レータ100とハードウェアエミュレータ200の同期サイクルのパラメータNE,NS
に「1」を設定し(ステップS160)、ステップS110に戻る。
そしてまた、同期条件が不成立の時は、ソフトウェアシミュレータ100とハードウェ
アエミュレータ200とが、それぞれNサイクルとMサイクルの期間、互いに非同期にシ
ミュレーション動作させるため、「N」と「M」の値をそれぞれパラメータNSとNEに
設定し(ステップS170)、ステップS110に戻る。
非同期サイクル値「N」、「M」は、少なくとも一方が2以上の整数で、ソフトウェア
シミュレータ100とハードウェアエミュレータ200とが非同期にシミュレーション動
作を行うサイクル数であり、協調動作制御部300に図示しない入力装置から入力設定さ
れる。図4に示す協調シミュレーションの例ではそれぞれ、「N」と「M」に値「5」を
設定した場合を示している。
次に、図4のタイミング図を参照しながら、協調シミュレーション実行時の、ソフトウ
ェアシミュレータ100とハードウェアエミュレータ200の動作と同期通信の様子を説
明する。この図4の時刻t1乃至t9は、協調シミュレーションが実行される時の時系列
を示すもので、処理に要した時間を示すものではない。
協調シミュレータ1は、例えば時刻t1に協調動作制御部300の制御に従ってソフト
ウェアシミュレータ100とハードウェアエミュレータ200間の同期対象信号の同期動
作のための通信(以下同期通信と略す)を行う。この時、同期対象信号の同期条件が成立
していると仮定すると、協調動作制御部300は、同期動作を行うとともにシミュレータ
動作制御部400の動作サイクル設定部410にステップS160のNSの値「1」を設
定し、エミュレータ動作制御部600の動作サイクル設定部610に同じくNEの値「1
」を設定して、次のシミュレーション動作を開始させる。
次に、ソフトウェアシミュレータ100が1サイクル分のシミュレーション動作終了後
の時刻t2において、協調シミュレータ1は、協調動作制御部300の制御に従ってソフ
トウェアシミュレータ100とハードウェアエミュレータ200間の同期通信を行う。こ
の時刻t2においても、同期対象信号の同期条件が成立しているとすると、協調動作制御
部300は、同期動作を行うとともにシミュレータ動作制御部400の動作サイクル設定
部410にステップS160のNSの値「1」を設定し、エミュレータ動作制御部600
の動作サイクル設定部610に同じくNEの値「1」を設定して、次のシミュレーション
動作を開始させる。
次に、ソフトウェアシミュレータ100が1サイクル分のシミュレーション動作終了後
の時刻t3において、協調シミュレータ1は、協調動作制御部300の制御に従ってソフ
トウェアシミュレータ100とハードウェアエミュレータ200間の同期通信を行う。こ
の時刻t3では、全ての同期対象信号の同期条件が成立しないとすると、協調動作制御部
300は、同期動作を行うとともにシミュレータ動作制御部400の動作サイクル設定部
410にステップS170のNSの値N=「5」を設定し、エミュレータ動作制御部60
0の動作サイクル設定部610に同じくNEの値M=「5」を設定して、シミュレーショ
ン動作を開始させる。すると、ソフトウェアシミュレータ100とハードウェアエミュレ
ータ200とは、互いに独立してシミュレーション動作を実行する。
互いに独立してシミュレーション動作を行っている期間において、ソフトウェアシミュ
レータ100が2サイクル後の時刻t4において、被検証モジュール500の信号AがH
ighになったとする。この信号Aは、同期対象信号に指定された出力信号の一つであっ
て、同期条件はHighと設定されているとする。しかしながら、ソフトウェアシミュレ
ータ100のシミュレーション動作は5サイクル分に設定されるため、5サイクル後の時
刻t5まで、協調動作制御部300との間で同期通信は行われない。
そして、時刻t5になると、協調シミュレータ1は、協調動作制御部300の制御に従
ってソフトウェアシミュレータ100とハードウェアエミュレータ200間の同期通信を
行う。この時刻において、信号AがHighであることから設定された信号Aの同期条件
Highと一致して同期条件が成立する。これにより、協調動作制御部300は、ハード
ウェアエミュレータ200の被検証モジュール700の信号Aの入力値をHighとする
ように同期動作を行うとともに、シミュレータ動作制御部400の動作サイクル設定部4
10にステップS160のNSの値「1」を設定し、エミュレータ動作制御部600の動
作サイクル設定部610に同じくNEの値「1」を設定して、次のシミュレーション動作
を開始させる。
次に、ソフトウェアシミュレータ100が1サイクル分のシミュレーション動作終了後
の時刻t6において、協調シミュレータ1は、協調動作制御部300の制御に従ってソフ
トウェアシミュレータ100とハードウェアエミュレータ200間の同期通信を行う。こ
の時刻t6においても、信号Aの同期条件が成立しているとすると、協調動作制御部30
0は、同期動作を行うとともにシミュレータ動作制御部400の動作サイクル設定部41
0にステップS160のNSの値「1」を設定し、エミュレータ動作制御部600の動作
サイクル設定部610に同じくNEの値「1」を設定して、次のシミュレーション動作を
開始させる。この時ハードウェアエミュレータ200は、被検証モジュール700の信号
Aの入力がHighとなるため、1サイクル分のシミュレーション動作終了時にA信号に
対応する信号BがHighとなる。これは、モジュール700上に構築された回路が、シ
ステム間の同期システムで用いられる応答信号を生成する回路となっていて入力信号Aが
Highとなると1サイクル後に信号Bの出力をHighとするように構成されているか
らである。
次に、ソフトウェアシミュレータ100が1サイクル分のシミュレーション動作終了後
の時刻t7において、協調シミュレータ1は、協調動作制御部300の制御に従ってソフ
トウェアシミュレータ100とハードウェアエミュレータ200間の同期通信を行う。す
なわち、協調動作制御部300は、ハードウェアエミュレータ200の被検証モジュール
700の同期信号である信号Bの出力値がHighであると判定すると、ソフトウェアシ
ミュレータ100の被検証モジュール500の信号Bの入力値をHighに設定する。
この時刻t7においても、信号Aの同期条件が成立しているので、シミュレータ動作制
御部400の動作サイクル設定部410にステップS160のNSの値「1」を設定し、
エミュレータ動作制御部600の動作サイクル設定部610に同じくNEの値「1」を設
定して、次のシミュレーション動作を開始させる。
この時、ソフトウェアシミュレータ100は被検証モジュール500の信号Bの入力が
Highとなるため、1サイクル分のシミュレーション動作終了時に信号AをLowする
。これは、被検証モジュール500上に構築された回路がシステム間の同期システムで用
いられる回路でその回路動作モデルが、入力信号BがHighとなると1サイクル後に対
応する信号Aの出力をLowとするように構築されているからである。
またこの時、ハードウェアエミュレータ200は、1サイクル分のシミュレーション動
作終了時に被検証モジュール700の信号BをLowとする。これは、モジュール700
上に構築された回路が、信号Bは1サイクル期間のみHighを出力して再びLowとな
るように構成されているからである。
次に、ソフトウェアシミュレータ100が1サイクル分のシミュレーション動作終了後
の時刻t8において、協調シミュレータ1は、協調動作制御部300の制御に従ってソフ
トウェアシミュレータ100とハードウェアエミュレータ200間の同期通信を行う。こ
の時刻t8には、信号AがLowとなって全ての同期信号の同期条件が成立しないとする
と、協調動作制御部300は、同期動作を行うとともにシミュレータ動作制御部400の
動作サイクル設定部410にステップS170のNSの値N=「5」を設定し、エミュレ
ータ動作制御部600の動作サイクル設定部610に同じくNEの値M=「5」を設定し
て、シミュレーション動作を開始させる。すると、ソフトウェアシミュレータ100とハ
ードウェアエミュレータ200は、互いに独立してシミュレーション動作を実行する。
協調動作制御部300が、以上のようにソフトウェアシミュレータ100とハードウェ
アエミュレータ200の同期動作の同期通信を制御することで、同期条件が成立する時は
、サイクル毎に同期通信を行って協調シミュレーションの機能等価性の精度を保証しなが
らシミュレーションを行う。一方、同期条件が成立しない時は、サイクル毎の同期通信を
行わないようにして、互いに独立してシミュレーションを行い、所定のサイクル後に同期
通信を行うようにする。このため、同期通信に要する時間を削減できて、協調シミュレー
ション全体の速度を向上させることができる。
なお、上述の同期動作の説明において、同じノード名の信号値を、信号線422と信号
線323と信号線313および信号線622を経由して被検証モジュールと被検証モジュ
ール700との間で交信するとしたが、信号入出力部630と信号入出力部430に、同
じノード名で同期対象のノードの出力側の値が前回の同期動作以降に変化したことを検知
する回路(例えば、同期通信時の出力値を記憶する記憶回路と比較回路などによって構成
する回路)を設けて、変化したノード名と信号値のみを通信するようにしてもよい。この
ようにすれば一回の同期通信の通信量が削減され、同期通信に要する時間を更に削減でき
て、協調シミュレーション全体の速度を向上させることができる。
本発明は、上記実施例に限定されるものではなく、発明の要旨を逸脱しない範囲で、種
々、変形して実施できることは勿論である。
例えば、協調動作制御部300に、第2の非同期サイクル値「N2」、「M2」を設け
て、同期条件が不成立の時、ステップS170で「N」と「N2」の小さな方の値をパラ
メータNSに設定し、「M」と「M2」の小さな方の値をパラメータNEに設定するよう
に制御する。この「N2」は、ソフトウェアシミュレータ100でシミュレーション動作
されるCPUが実行するプログラムで値を設定でき、「M2」は、ハードウェアエミュレ
ータ200でシミュレーション動作されるCPUが実行するプログラムで値を設定できる
ように構成する。
例えばソフトウェアシミュレータ100でシミュレーション動作されるCPUが実行す
るプログラムがハードウェアエミュレータ200の被検証モジュール700からのデータ
の入力待ちのプログラムループとなった時、プログラムループを実行するサイクル数をN
2に設定する。
このようにするとハードウェアエミュレータ200はMサイクル、ソフトウェアシミュ
レータ100はプログラムループが実行される期間のN2サイクルの期間、非同期動作す
ることになる。システム構成や経験値などから決定するNサイクル毎ではなくプログラム
ループサイクル数N2毎に同期通信を行うので、ソフトウェアシミュレータ100の無駄
なサイクルのシミュレーション動作の終了を待つことなくハードウェアエミュレータ20
0の被検証モジュール700が出力するデータを入力するプログラムのシミュレーション
動作に進むことができて、協調シミュレーション全体の速度を向上させることができる。
本発明に係る協調シミュレータの実施例の構成を示すブロック図。 本実施例の協調シミュレータの主要な構成を示すブロック図。 本実施例の協調シミュレータの主要な制御処理手順を示すフローチャート。 本実施例の協調シミュレータの協調動作の様子を示すタイミング図。
符号の説明
1 協調シミュレータ
100 ソフトウェアシミュレータ
200 ハードウェアエミュレータ
300 協調動作制御部
310、320 信号線
330 同期判定部
400 シミュレータ動作制御部
410 動作サイクル設定部
420 信号線
500 被検証モジュール
600 エミュレータ動作制御部
610 動作サイクル設定部
620 信号線
700 被検証モジュール

Claims (5)

  1. 動作サイクル数が指定可能な第1のシミュレーション手段と、
    動作サイクル数が指定可能な第2のシミュレーション手段と、
    前記第1および第2のシミュレーション動作を制御する制御情報と、前記第1および第2
    のシミュレーションの同期情報を互いに通信するように制御して同期制御するシミュレー
    ション制御手段とを備え、
    前記シミュレーション制御手段は、前記同期情報の同期条件が成立する時は前記第1およ
    び第2のシミュレーション手段の動作サイクル数を第1サイクル値に設定し、前記同期条
    件が成立しない時は前記第1および第2のシミュレーション手段の動作サイクル数の少な
    くとも一方を前記第1サイクル値より多い第2サイクル値に設定することを特徴とするシ
    ミュレーション装置。
  2. 前記第1のシミュレーション手段がソフトウェアシミュレータであり、前記第2のシミ
    ュレーション手段がハードウェアエミュレータであることを特徴とする請求項1に記載の
    シミュレーション装置。
  3. 前記第2サイクル値を、前記第1および第2のシミュレーション手段に動作サイクル数
    を設定する毎に増加させることを特徴とする請求項1又は請求項2に記載のシミュレーシ
    ョン装置。
  4. 前記第1サイクル値又は前記第2サイクル値を前記ソフトウェアシミュレータ上で実行
    されるプログラムから設定できることを特徴とする請求項2に記載のシミュレーション装
    置。
  5. 動作サイクル数が指定可能な第1および第2のシミュレーション装置をシミュレーショ
    ン制御装置の制御により協調動作させるシミュレーション制御方法であって、
    前記シミュレーション制御装置は、第1および第2のシミュレーション装置に、同期情
    報および制御情報を送信し、
    第1および第2のシミュレーション装置は、前記同期情報および制御情報の受信に応答
    し、前記同期情報に含まれるノードデータを入力し、前記制御情報に含まれる指定された
    動作サイクル数のシミュレーションを行い、シミュレーション動作後に前記同期情報に該
    当するノードデータをシミュレーション制御装置に送信し、
    シミュレーション制御装置は、受信した前記同期情報の同期条件が成立する時は、前記
    第1および第2のシミュレーション装置に設定する次の動作サイクル数を第1サイクル値
    とし、同期条件が成立しない時は、前記第1および第2のシミュレーション装置に設定す
    る次の動作サイクル数の少なくとも一方を前記第1サイクル値より多い第2サイクル値と
    することを特徴とするシミュレーション制御方法。
JP2006243413A 2006-09-07 2006-09-07 シミュレーション装置およびそのシミュレーション制御方法 Pending JP2008065640A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006243413A JP2008065640A (ja) 2006-09-07 2006-09-07 シミュレーション装置およびそのシミュレーション制御方法
US11/851,058 US7673265B2 (en) 2006-09-07 2007-09-06 Simulation apparatus and control method of simulation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006243413A JP2008065640A (ja) 2006-09-07 2006-09-07 シミュレーション装置およびそのシミュレーション制御方法

Publications (1)

Publication Number Publication Date
JP2008065640A true JP2008065640A (ja) 2008-03-21

Family

ID=39288305

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006243413A Pending JP2008065640A (ja) 2006-09-07 2006-09-07 シミュレーション装置およびそのシミュレーション制御方法

Country Status (2)

Country Link
US (1) US7673265B2 (ja)
JP (1) JP2008065640A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010104135A1 (ja) * 2009-03-12 2010-09-16 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション方法、システム及びプログラム
WO2014038030A1 (ja) * 2012-09-06 2014-03-13 株式会社日立製作所 協調シミュレーション用計算機システム、組込みシステムの検証システム及び組込みシステムの検証方法
JP2017021743A (ja) * 2015-07-15 2017-01-26 三菱電機株式会社 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8265917B1 (en) * 2008-02-25 2012-09-11 Xilinx, Inc. Co-simulation synchronization interface for IC modeling
US8281280B2 (en) * 2010-02-12 2012-10-02 Springsoft, Inc. Method and apparatus for versatile controllability and observability in prototype system
US8732650B2 (en) 2010-02-12 2014-05-20 Synopsys Taiwan Co., LTD. Method and apparatus for versatile controllability and observability in prototype system
US9286423B2 (en) 2012-03-30 2016-03-15 International Business Machines Corporation Cycle accurate and cycle reproducible memory for an FPGA based hardware accelerator
US9230046B2 (en) 2012-03-30 2016-01-05 International Business Machines Corporation Generating clock signals for a cycle accurate, cycle reproducible FPGA based hardware accelerator
US10528685B2 (en) 2014-06-06 2020-01-07 Synopsys, Inc. Efficient mechanism in hardware and software co-simulation system
US10120965B2 (en) * 2015-09-30 2018-11-06 Synopsys, Inc. Waveform based reconstruction for emulation
EP3539027A4 (en) 2016-11-11 2020-09-02 Synopsys, Inc. WAVEFORM BASED RECONSTRUCTION FOR EMULATION
US11080446B2 (en) * 2019-03-18 2021-08-03 Synopsys, Inc. Method to regulate clock frequencies of hybrid electronic systems

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324495B1 (en) * 1992-01-21 2001-11-27 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Synchronous parallel system for emulation and discrete event simulation
US7480606B2 (en) * 1998-08-31 2009-01-20 Versity Design, Inc. VCD-on-demand system and method
US6272451B1 (en) * 1999-07-16 2001-08-07 Atmel Corporation Software tool to allow field programmable system level devices
US6470481B2 (en) 1999-07-29 2002-10-22 Michael C. Brouhard State management in a co-verification system
US20020133325A1 (en) * 2001-02-09 2002-09-19 Hoare Raymond R. Discrete event simulator
US20030093256A1 (en) * 2001-11-09 2003-05-15 Carl Cavanagh Verification simulator agnosticity
US7072825B2 (en) * 2003-06-16 2006-07-04 Fortelink, Inc. Hierarchical, network-based emulation system
US7366652B2 (en) * 2003-06-16 2008-04-29 Springsoft, Inc. Method of programming a co-verification system
US7191111B2 (en) * 2003-09-11 2007-03-13 International Business Machines Corporation Method, apparatus, and computer program product for implementing dynamic cosimulation
US7003746B2 (en) * 2003-10-14 2006-02-21 Hyduke Stanley M Method and apparatus for accelerating the verification of application specific integrated circuit designs
US7257802B2 (en) * 2003-12-29 2007-08-14 Mentor Graphics Corporation Method and system for hardware accelerated verification of digital circuit design and its testbench
JP4470582B2 (ja) 2004-05-19 2010-06-02 日本電気株式会社 ハードウェア/ソフトウェア協調シミュレーション方式及びその方法
US7424416B1 (en) * 2004-11-09 2008-09-09 Sun Microsystems, Inc. Interfacing hardware emulation to distributed simulation environments
US7480609B1 (en) * 2005-01-31 2009-01-20 Sun Microsystems, Inc. Applying distributed simulation techniques to hardware emulation

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010104135A1 (ja) * 2009-03-12 2010-09-16 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション方法、システム及びプログラム
EP2407886A1 (en) * 2009-03-12 2012-01-18 International Business Machines Corporation Simulation method, system, and program
CN102341787A (zh) * 2009-03-12 2012-02-01 国际商业机器公司 模拟方法、系统及程序
JP5295355B2 (ja) * 2009-03-12 2013-09-18 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション方法、システム及びプログラム
US8670967B2 (en) 2009-03-12 2014-03-11 International Business Machines Corporation Simulation method, system and article of manufacture
EP2407886A4 (en) * 2009-03-12 2014-04-02 Ibm SIMULATION PROCESS, SYSTEM AND PROGRAM
CN102341787B (zh) * 2009-03-12 2015-06-17 国际商业机器公司 模拟方法、系统
WO2014038030A1 (ja) * 2012-09-06 2014-03-13 株式会社日立製作所 協調シミュレーション用計算機システム、組込みシステムの検証システム及び組込みシステムの検証方法
JP5926807B2 (ja) * 2012-09-06 2016-05-25 株式会社日立製作所 協調シミュレーション用計算機システム、組込みシステムの検証システム及び組込みシステムの検証方法
JP2017021743A (ja) * 2015-07-15 2017-01-26 三菱電機株式会社 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム

Also Published As

Publication number Publication date
US20090083682A1 (en) 2009-03-26
US7673265B2 (en) 2010-03-02

Similar Documents

Publication Publication Date Title
JP2008065640A (ja) シミュレーション装置およびそのシミュレーション制御方法
US11093674B2 (en) Generating clock signals for a cycle accurate, cycle reproducible FPGA based hardware accelerator
CN111859832B (zh) 一种芯片仿真验证方法、装置及相关设备
JP2008310727A (ja) シミュレーション装置及びシミュレーション方法
CN110532182A (zh) 一种虚拟化平台的自动化测试方法及装置
US20080288233A1 (en) Simulator and simulation method
CN113779913A (zh) 一种面向ai多芯片系统的验证平台结构和测试方法
JPH10312315A (ja) ソフトウェア/ハードウェア協調シミュレーション方式
JP2010250365A (ja) 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法
CN111736654B (zh) 时钟模型实现方法、装置、计算机设备及存储介质
JP2009505302A (ja) マイクロコントローラによる波形発生方法及び装置
JP2000215226A (ja) 論理検証装置
US11301414B1 (en) Systems and methods for communicating with clients with non-deterministic response delay over a communication interface
CN116594830B (zh) 硬件仿真工具、调试方法和存储介质
CN114896919B (zh) 一种基于fpga的集成电路原型验证系统及方法
JP5228552B2 (ja) プロセス間通信機構
JP2000298596A (ja) プロセッサと再設定可能なチップとを用いたvlsiエミュレータ
CN105808402A (zh) 一种基于pli或vpi的仿真硬件加速器的soc芯片
JP2012003336A (ja) シミュレーション装置、シミュレーション方法
CN204423358U (zh) 一种基于pli或vpi的仿真硬件加速器的soc芯片
JP6664158B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
JP2000011016A (ja) 並列論理シミュレーション方式
CN117910399A (zh) 一种复位功能的验证方法和相关装置
CN117933155A (zh) 一种多进程联合仿真系统及方法、电子设备和存储介质
CN117492547A (zh) 一种芯片中模块复位状态确定方法、装置、系统和介质