説明

シミュレーション装置、シミュレーション方法

【課題】シミュレータ間のデータ伝送遅延等が生じないこと
【解決手段】シミュレータ1(100)は、動作サイクルと関連付けられたシミュレーション履歴情報を記憶するデータ保持用メモリ120を有し、シミュレータ1(100)及び他シミュレータのシミュレーション実行結果をデータ保持用メモリ120に格納する。シミュレータ2(300)は、動作サイクルと関連付けられたシミュレーション履歴情報をデータ保持用メモリ320に格納する。シミュレータ1(100)がシミュレータ2(300)のシミュレーション結果を必要とするタイミングに、シミュレータ1(100)はデータ保持用メモリ120に所望のデータがある場合には当該データを用いる。データ保持用メモリ120に所望のデータがない場合、シミュレータ1(100)はデータ保持用メモリ320に格納されたシミュレーション履歴情報を取得する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はシミュレーション装置及びシミュレーション方法に関し、特に協調シミュレーションにかかるシミュレーション装置及びシミュレーション方法に関する。
【背景技術】
【0002】
LSI(Large Scale Integration)設計では、TAT(Turn Around Time)を短縮させるために既存のIP(Intellectual Property)コアを再利用した設計手法、抽象度の高いレベルでの動作検証、ソフトウェア開発の前倒し等の開発手法が必要となる。これらの開発手法において、協調シミュレーション環境が必要となる場合がある。
【0003】
例えば、抽象度が低い既存のIPモデルと抽象度の高い新規のモデルとの協調検証を行う場合、または開発モデルを詳細化していく際に上位レベルのモデルをテストベンチ環境として利用する場合、協調シミュレーション環境の構築が必要となる。また、仮想環境上においてソフトウェア開発を行う場合、ソフトウェアを実行するために用いられるISS(Instruction Set Simulator)とハードウェアモデルとの協調動作検証に協調シミュレーション環境が必要となる。
【0004】
協調シミュレーションの実行の際には、シミュレータ間の同期通信が必要となる。シミュレータ間の同期通信の時間は、シミュレータ切り替えのオーバーヘッドの時間とデータ転送時間との合計により表わされる。シミュレータ切り替えのオーバーヘッドの時間はデータ転送時間よりもはるかに大きい。このため、シミュレータ切り替えのオーバーヘッドの時間を小さくすることにより、シミュレーション時間の高速化が実現できる。
【0005】
一般に協調シミュレーション実行時には、1サイクル毎に同期通信を行う。特許文献1には、この1サイクル毎のシミュレータの同期通信回数を減らして処理の高速化を図るシミュレーションシステムに関する技術が開示されている。図8は、当該シミュレーションシステムの構成を示すブロック図である。
【0006】
当該シミュレーションシステムは、動作サイクル数を指定可能であるシミュレータ1(400)と、動作サイクル数を指定可能であるシミュレータ2(600)と、協調動作制御ツール500と、を備える。協調動作制御ツール500は、データ転送用メモリ510と、協調動作制御部520と、を備える。
【0007】
データ転送用メモリ510は、シミュレータ間のデータ転送時に転送用データを一次保存するための記憶部である。協調動作制御部520は、シミュレータ1(400)及びシミュレータ2(600)の動作制御と、データ転送と、同期条件判定と、を行う。協調動作制御部520は、同期条件の判定結果に基づいてシミュレータ1(400)及びシミュレータ2(600)の動作サイクル数を設定する。
【0008】
シミュレータ1(400)は、動作制御部410と、被検証モジュール440と、を備える。動作制御部410は、データ転送用メモリ420と、同期制御部430と、を備える。同期制御部430は、シミュレーションの開始及び停止の制御、指定されたサイクル数の処理実行等を行う処理部である。また同期制御部430は、入出力データの転送処理も行う。データ転送用メモリ420は、シミュレータ間のデータの転送を行う場合に、転送データを一次格納する記憶部である。被検証モジュール440は、検証対象の周辺回路、CPU(Central Processing Unit)等のモジュールである。
【0009】
シミュレータ2(600)は、動作制御部610と、被検証モジュール640と、を備える。動作制御部610は、データ転送用メモリ620と、同期制御部630と、を備える。同期制御部630は、シミュレーションの開始及び停止の制御、指定されたサイクル数の処理実行等を行う処理部である。また同期制御部630は、入出力データの転送処理も行う。データ転送用メモリ620は、シミュレータ間のデータの転送を行う場合に、転送データを一次格納する記憶部である。被検証モジュール640は、検証対象の周辺回路、CPU(Central Processing Unit)等のモジュールである。
【0010】
図9は、特許文献1にかかる協調シミュレーションシステムの処理手順を示すフローチャートである。はじめに、協調動作制御部520は、シミュレータ1(400)、被検証モジュール440、シミュレータ2(600)、及び被検証モジュール640を初期化する(S41)。また、協調動作制御部520はシミュレータ1(400)が同期処理を行うまでの動作サイクルであるn1を1に設定する(S41、42)。同様に協調動作制御部520はシミュレータ2(600)が同期処理を行うまでの動作サイクルであるn2を1に設定する(S41、42)。
【0011】
シミュレータ1(400)及びシミュレータ2(600)は指定サイクルの処理を実行する(S43)。その後、シミュレータ1(400)及びシミュレータ2(600)は、同期通信を行う(S44)。同期通信終了後に、協調動作制御部520は協調シミュレーションの終了条件が成立しているか否かを判定する(S45)。終了条件が成立している場合(S45:Yes)、全ての処理を終了する。
【0012】
協調シミュレーションの終了条件が成立していない場合(S45:No)、協調動作制御部520は、同期条件が成立しているか否かを判定する(S46)。同期条件が成立している場合(S46:Yes)、協調動作制御部520は動作サイクル数n1及びn2を1に設定する(S47)。同期条件が成立していない場合(S46:No)、協調動作制御部520は動作サイクル数n1及びn2を5(1よりも大きい値)に設定する(S48)。すなわち、同期条件が成立していない場合(信号のやりとりが生じない場合)には、協調動作制御部520は同期通信を行わないように制御する。同期通信を省略することにより、特許文献1に記載のシミュレーションシステムは処理の高速化を図っている。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2008−065640号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
しかしながら、特許文献1に記載のシミュレーション装置ではシミュレータ間のデータ伝送遅延、データ欠落が生じるという問題がある。当該問題の詳細について以下に説明する。
【0015】
図10は、特許文献1に記載のシミュレーション装置の動作を示すタイミングチャートである。本例では、同期条件が成立した場合に実行処理を1サイクル進め、同期条件が不成立の場合に実行処理を5サイクル進める設定である。
【0016】
信号A1及びB1はシミュレータ1側の出力端子からの出力信号である。また、信号A2及びB2はシミュレータ2側の入力端子である。信号A1に対応する出力端子と信号A2に対応する入力端子は接続されている。同様に信号B1に対応する出力端子と信号B2に対応する入力端子は接続されている。
【0017】
本例では、時刻t3において同期条件が不成立となる。この場合、次に同期条件を判定するタイミングは時刻t3の5サイクル後である時刻t6に設定される。ここで、時刻t4(時刻t3の1サイクル後)にシミュレータ1からA1=1を出力した場合であっても、時刻t4において信号A2の値は変更されない。同期タイミングである時刻t6に信号A1の変更が信号A2に反映される。すなわち、信号伝搬の遅延が生じてしまう。
【0018】
また、時刻t4において信号B1の値が変更され、時刻t5(時刻t3の2サイクル後)において信号B1の値が再度変更されている。時刻t4及び時刻t5においては、シミュレータ間の同期処理が省略されている。そのため、信号B2には当該信号変化が伝搬しない。すなわち、信号情報の欠落が生じてしまう。
【0019】
上述のように特許文献1に記載のシミュレーション装置では、同期条件が成立していない場合に同期通信を省略することにより処理の高速化を図っている。しかし特許文献1に記載のシミュレーション装置では、同期通信を省略している間に信号伝搬の遅延及び信号情報の欠落が生じてしまう。また特許文献1では、信号伝搬の遅延及び信号情報の欠落を防止するための同期タイミングの制御については検討が無い。信号伝搬の遅延及び信号情報の欠落が生じた場合、動作検証が正しく行われない恐れがある。
【課題を解決するための手段】
【0020】
本発明にかかるシミュレーション装置の一態様は、動作サイクルと関連付けられたシミュレーション履歴情報を記憶する第1記憶部を有し、シミュレーションの実行結果及び他のシミュレータによるシミュレーションの実行結果を前記第1記憶部に格納する第1シミュレータと、動作サイクルと関連付けられたシミュレーション履歴情報を記憶する第2記憶部を有し、シミュレーションの実行結果及び他のシミュレータによるシミュレーションの実行結果を前記第2記憶部に格納する第2シミュレータと、を備え、前記第1シミュレータが前記第2シミュレータのシミュレーションの実行結果データを必要とするタイミングを含む第1タイミングにおいて、前記第1シミュレータは前記第1記憶部に所望のデータが格納されている場合には当該データを用いてシミュレーションし、前記第1記憶部に所望のデータが格納されてない場合には前記第2記憶部に格納された前記シミュレーション履歴情報を取得して前記第1記憶部に格納するとともに当該取得データを用いてシミュレーションを実行し、前記第2シミュレータが前記第1シミュレータのシミュレーションの実行結果データを必要とするタイミングを含む第2タイミングにおいて、前記第2シミュレータは前記第2記憶部に所望のデータが格納されている場合には当該データを用いてシミュレーションし、前記第2記憶部に所望のデータが格納されていない場合には前記第1記憶部に格納された前記シミュレーション履歴情報を取得して前記第2記憶部に格納するとともに当該取得データを用いてシミュレーションを実行するものである。
【0021】
本発明においては、第1シミュレータは、動作サイクルとシミュレーション履歴を関連付けて第1記憶部に格納する。前記第1記憶部には、前記第1シミュレータ及び他のシミュレータのシミュレーション履歴情報が格納される。また、前記第1シミュレータは前記第2シミュレータの出力データを必要とするタイミング等において前記第1記憶部から所望のデータを読み出す。所望のデータが前記第1記憶部にない場合、前記第1シミュレータは第2記憶部に格納されていたデータを取得し、前記第1記憶部に格納する。これにより、前記第1シミュレータは第2シミュレータの出力を必要とするタイミングに前記第1記憶部から前記第2シミュレータの出力データを取得してシミュレーションを行うことができる。前記第1シミュレータは第2シミュレータの出力を必要とするタイミングに適切なデータを参照できるため、信号伝搬の遅延及び信号情報の欠落の問題が生じない。前記第2シミュレータも前記第1シミュレータと略同一の動作が可能である。
【発明の効果】
【0022】
本発明によれば、シミュレータ間のデータ伝送遅延、データ欠落が生じないシミュレーション装置を提供することができる。
【図面の簡単な説明】
【0023】
【図1】実施の形態1にかかるシミュレーション装置の構成を示すブロック図である。
【図2】実施の形態1にかかるデータ転送用メモリ120の構成を示す図である。
【図3】実施の形態1にかかる協調動作制御ツールの動作を示すフローチャートである。
【図4】実施の形態1にかかるシミュレータの動作を示すフローチャートである。
【図5】実施の形態1にかかるシミュレーション装置の動作を示すタイミングチャートである。
【図6】特許文献1にかかるシミュレーション装置の動作を示すタイミングチャートである。
【図7】実施の形態1にかかるシミュレーション装置の動作を示すタイミングチャートである。
【図8】特許文献1にかかるシミュレーション装置の構成を示すブロック図である。
【図9】特許文献1にかかるシミュレーション装置の動作を示すフローチャートである。
【図10】特許文献1にかかるシミュレーション装置の動作を示すタイミングチャートである。
【発明を実施するための形態】
【0024】
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。シミュレーション装置10は、シミュレータ1(100)と、協調動作制御ツール200と、シミュレータ2(300)と、を備える。
【0025】
協調動作制御ツール200は、データ転送用メモリ210と、協調動作制御部220と、を備える。データ転送用メモリ210はシミュレータ間のデータ転送時に転送用データを一次保存するための記憶部である。協調動作制御部220は、シミュレーション装置10のシミュレーション全体の同期管理と、各シミュレータの出力データ転送管理を行う処理部である。同期管理とは、シミュレータ1(100)及びシミュレータ2(300)に対して動作制御命令(動作開始、動作停止、動作一時停止等)を供給すること等である。
【0026】
シミュレータ1(100)は、動作制御部110と、アクセス制御部140と、被検証モジュール150と、を備える。動作制御部110は、データ転送用メモリ120と、同期制御部130と、を備える。シミュレータ1(100)は、必要に応じてシミュレータ2(300)の出力データを用いてシミュレーションを行う。
【0027】
被検証モジュール150は、検証対象となる周辺回路、CPU等を含むモジュールを指す。被検証モジュール150は、シミュレーション実行時にアクセス制御部140を介してデータを入出力する。
【0028】
同期制御部130は、協調動作制御ツール200から送信される動作制御命令(動作開始、動作停止等)に応じてシミュレータ1(100)の動作を制御する。また、同期制御部130は、アクセス制御部140から同期通信要求が入力された場合、またはシミュレーションの動作サイクル数が最大同期回数を超えた場合、シミュレーションの実行時間が最大同期時間を超えた場合、等にシミュレータ1(100)の動作を一時停止する。
【0029】
最大同期回数とは、シミュレータ2(300)との同期通信を行わずにシミュレーションを実行できる最大のサイクル数であり、予め定められている。例えば、最大同期回数は、シミュレータ間の同期処理が不要な場合であっても1000回の動作サイクルを実行した時点に同期通信を行うための設定値である。最大同期時間とはシミュレータ2(300)との同期通信を行わずにシミュレーションを実行できる最大の時間であり、予め定められている。これは、一方のシミュレータが他方のシミュレータの出力データを用いない場合に、当該一方のシミュレータが長時間実行されることを防止するための設定値である。最大同期時間に到達したシミュレータは、他方のシミュレータが同数の動作サイクルを実行するまで処理を中断する。
【0030】
協調動作制御部220からのシミュレーション再開命令を受信した場合、同期制御部130は、協調動作制御部220とデータの転送処理等を行う。同期制御部130は、協調動作制御部220から受信したシミュレータ2(300)の出力データをデータ保持用メモリ120に格納する。データ転送処理等の詳細は後述する。
【0031】
アクセス制御部140は、被検証モジュール150からのREADアクセスが生じた場合に、データ保持用メモリ120内に当該アクセスに対応するデータが格納されているか否かを判定する。対応データがある場合には、アクセス制御部140は当該データをデータ保持用メモリ120から読み出して被検証モジュール150に供給する。一方対応するデータが無い場合には、アクセス制御部140は、同期制御部130に対して同期通信要求を供給する。同期通信要求は、協調動作制御ツール200に対してシミュレータ2(300)から出力されたデータを転送するように要求する信号である。協調動作制御ツール200から転送されたデータは、データ保持用メモリ120に格納される。
【0032】
またアクセス制御部140は、被検証モジュール150からのWRITEアクセスが生じた場合にデータ保持用メモリ120に対して出力用データを書き込む。ここで所定数のデータがデータ保持用メモリ120に格納された場合、アクセス制御部140は同期制御部130に対してデータ転送命令を供給する。当該データ転送命令は、シミュレータ1(100)の出力用データを協調動作制御ツール200に対して転送することを指示する命令信号である。
【0033】
なお、アクセス制御部140は、データ転送終了後に、転送したデータをデータ保持用メモリ120から削除してもよい。
【0034】
データ保持用メモリ120には、シミュレータ1(100)の出力用データと、シミュレータ2(300)から出力されたデータとが格納される。言い換えると、データ保持用メモリ120には、動作サイクルと対応づけられたシミュレーションの実行結果が履歴として格納される。図2を用いてデータ保持用メモリ120のデータ格納方法の詳細を説明する。
【0035】
図2は、データ保持用メモリ120におけるシミュレータ1(100)の出力用データの格納方法を示す。本例では、シミュレータ1(100)は5つの出力端子(a〜e)を備える。図中の(2−1)は、各動作サイクルにおける各出力端子の出力データを示す。図中の(2−2)に示すように、データ保持用メモリ120は動作サイクル毎に全ての出力端子の出力データを格納する。図示したように、データ保持用メモリ120は、動作サイクル毎に動作サイクルと全ての出力端子のデータの対を格納する。
【0036】
また、図中の(2−3)に示すように、データ保持用メモリ120はデータの変更があった場合にのみ動作サイクルと全ての出力端子の出力データを保持してもよい。この方式において、格納を行わなかった動作サイクルの出力データを参照する場合、当該動作サイクル以前に格納され、かつ一番新しい履歴を示すデータを参照すればよい。例えば、(2−3)においては、動作サイクルt3の出力データを参照したい場合、動作サイクルt2の出力データを参照することにより所望のデータを参照できる。
【0037】
また、図中の(2−4)に示すように、データ保持用メモリ120は、動作サイクルと各出力端子の出力データを対にした形式でデータを保持してもよい。この場合においても、データの変更があった場合にのみ動作サイクルと各出力端子の出力データを保持する。
【0038】
上述の(2−3)、(2−4)に示した方式により、データ保持用メモリ120に格納するデータ量を削減することができる。なお、シミュレータ間のデータ転送とデータ保持用メモリ120内のデータ遷移と、の関係は図5を用いて後述する。図2ではシミュレータ1(100)の出力用データの格納方法を示したが、シミュレータ2(300)から出力されたデータの格納方法も略同一の方法である。
【0039】
シミュレータ2(300)は、動作制御部310と、アクセス制御部340と、被検証モジュール350と、を備える。動作制御部310は、データ転送用メモリ320と、同期制御部330と、を備える。動作制御部310は動作制御部110と対応する。アクセス制御部340はアクセス制御部140と対応する。データ転送用メモリ320はデータ転送用メモリ120と対応する。同期制御部330は同期制御部130と対応する。シミュレータ2(300)の各処理部は、シミュレータ1(100)の対応する処理部と同一の機能を有していればよい。
【0040】
次に、協調動作制御ツール200の処理を図3のフローチャートを用いて説明する。はじめに協調動作制御部220は、シミュレータ1(100)及びシミュレータ2(300)に対してシミュレーションの開始を指示する(S11)。各シミュレータがシミュレーションを実行して同期通信が行われている際に、同期動作制御部220はシミュレーション終了条件が成立しているか否かを判定する(S12)。終了条件が成立している場合(S12:Yes)、協調動作制御部220はシミュレーションを停止(各シミュレータの停止)する制御を行う。
【0041】
終了条件が成立していない場合(S12:No)、同期動作制御部220はシミュレータ1(100)の実行済みの動作サイクルと、シミュレータ2(300)の実行済みの動作サイクルの大小を比較する(S13、S14)。
【0042】
実行済みの動作サイクルが等しい場合(S13:Yes)、各シミュレータのシミュレーションを再開させる(S11)。シミュレータ1(100)の実行済みの動作サイクルがシミュレータ2(300)の実行済みの動作サイクルよりも小さい場合(S13:No、S14:Yes)、協調動作制御部220はシミュレータ1(100)のシミュレーションを再開させる。シミュレータ1(100)の実行済みの動作サイクルがシミュレータ2(300)の実行済みの動作サイクルよりも大きい場合(S13:No、S14:No)、協調動作制御部220はシミュレータ2(300)のシミュレーションを再開させる。
【0043】
次に、シミュレータ1(100)またはシミュレータ2(300)の処理を図4のフローチャートを用いて説明する。以下の説明では、シミュレータ1(100)の動作を説明する。
【0044】
シミュレータ1(100)は協調動作制御部220の動作開始通知に応じて初期化を行う(S21)。初期化の後に、シミュレータ1(100)は1動作サイクルのシミュレーションの実行を開始する(S22)。同期制御部130はシミュレーションの実行時に連続動作サイクル数が所定の最大同期回数に到達しているか否か、及び連続動作時間が所定の最大同期時間に到達しているか否かを判定する(S23)。
【0045】
S23の条件を満たさない場合(S23:No)、アクセス制御部130は実行対象の動作サイクルにおいてシミュレータ2(300)の出力データを必要とするか否かを判定する(S24)。
【0046】
シミュレータ2(300)の出力データを必要とする場合(S24:No)、アクセス制御部130は当該データがデータ保持用メモリ120内にあるか否かを判定する(S25)。データ保持用メモリ120内に当該データがある場合(S25:Yes)、アクセス制御部130は当該データをデータ保持用メモリ120から読み出す(S26)。
【0047】
データ保持用メモリ120内に当該データがない場合(S25:No)、またはS23の条件を満たす場合(S23:Yes)、同期制御部130は協調動作制御ツール200にシミュレータ1(100)の出力データを転送する(S27)。また、同期制御部130は協調動作制御ツール200に対してシミュレーションの中断を通知し、シミュレーションを中断する(S27)。同期制御部130は連続動作サイクル数及び連続動作時間のリセット処理も行う(S27)。
【0048】
シミュレーションの中断を行った場合(S27)、同期制御部130は協調動作制御部220からの再開指示を受信するまで処理を中断する(S28)。協調動作制御部220からの再開指示を受信した場合(S28:Yes)、同期制御部130はデータ保持用メモリ120からシミュレータ2(200)が出力したデータを取得する(S29)。その後に、シミュレータ1(100)は1動作サイクルのシミュレーション処理を実行する(S30)。
【0049】
シミュレータ2(300)の出力データを必要としない場合(S24:No)、シミュレータ1(100)は1動作サイクルのシミュレーション処理を実行する(S30)。
【0050】
シミュレータ1(100)はシミュレーション処理を実行した後に、シミュレータ2(300)に転送するデータをデータ保持用メモリ120内に格納する(S31)。また、同期制御部130は連続動作サイクル数をインクリメントする(S31)。
【0051】
同期制御部130はシミュレーションの終了条件(協調動作制御部220からの停止命令受信時、所定の終了時刻となった場合等)を満たしているか否かを判定する(S32)。終了条件を満たしている場合(S32:Yes)、シミュレータ1(100)は処理を終了する。終了条件を満たしていない場合(S32:No)、次の動作サイクルのシミュレーションを行う(S22)。
【0052】
続いて、本実施の形態にかかるシミュレーション装置の動作の具体例を図5のタイミングチャートを用いて説明する。本例では、シミュレータ1(100)がシミュレータ2(300)の出力データを必要とするタイミングまたは最大同期時間、最大同期回数に到達したタイミング(第1タイミング)を図中のAとする。また、シミュレータ2(300)がシミュレータ1(100)の出力データを必要とするタイミングまたは最大同期時間、最大同期回数に到達したタイミング(第2タイミング)を図中のB、Cとする。
【0053】
シミュレータ1(100)は、動作サイクルt8(A)までシミュレーションを実行する。この際、シミュレータ1(100)は動作サイクル毎の出力データ(D1_1〜D1_8)をデータ保持用メモリ120内に格納する。動作サイクルt8(A)において、シミュレータ1(100)は出力データ(D1_1〜D1_8)を協調動作制御ツール200に転送する。シミュレータ1(100)は、その後に一時停止状態になる。
【0054】
シミュレータ1(100)は、図示したように動作サイクルt8(A)においてデータを転送した後にデータ保持用メモリ120から転送したデータ(D1_1〜D1_8)を削除してもよい。すなわち、シミュレータ1(100)はその後に参照されることがないデータをデータ保持用メモリ120から削除する。これにより、データ保持用メモリ120の格納データを削減できるため、メモリ量の減少が図れる。シミュレータ2(300)も同様の削除処理を行ってもよい。
【0055】
シミュレータ2(300)は、動作サイクルt4(B)までシミュレーションを実行する。この際、シミュレータ2(300)は動作サイクル毎の出力データ(D2_1〜D2_4)をデータ保持用メモリ320内に格納する。動作サイクルt4(B)において、シミュレータ2(300)は出力データ(D2_1〜D2_4)を協調動作制御ツール200に転送する。シミュレータ2(300)は、その後に一時停止状態になる。上述のようにシミュレータ1(100)及びシミュレータ2(300)は、データ出力の際には同期通信を行わず、出力データを内部のメモリ(データ保持用メモリ120、320)に格納する。
【0056】
協調動作制御ツール200は、動作サイクルt8(A)が動作サイクルt4(B)よりも進んでいることを判定する。そして、協調動作制御ツール200は実行済みの動作サイクルが少ないシミュレータ2(300)の動作を開始させる。
【0057】
シミュレータ2(300)はシミュレーションの実行時に、協調動作制御ツール200内のデータ転送用メモリ210にアクセスして動作サイクルt8(A)〜t4(B)までのシミュレータ1(100)の出力データ(D1_4〜D1_8)を取得する。シミュレータ2(300)は取得したデータをデータ保持用メモリ320に格納する。シミュレータ2(300)がt8(A)までのデータをデータ保持用メモリ320に格納することにより、シミュレータ2(300)は動作サイクルt8(A)まで同期通信を行う必要が無くなる。
【0058】
シミュレータ2(300)は、シミュレータ1(100)がシミュレーション実行済みの動作サイクルt4(B)〜t8(A)までは出力用データをデータ保持用メモリ320に格納しない。これは、以後のシミュレーション実行において参照されることが無いためである。当該データを格納しないことにより不要なデータを格納することが無くなり、メモリ使用量の削減が図れる。シミュレータ2(300)は、動作サイクルt8(A)以降の出力用データをデータ保持用メモリ320に格納する。
【0059】
シミュレータ2(300)は、動作サイクルt11(C)までシミュレーションを実行する。動作サイクルt11(C)において、シミュレータ2(300)は出力データ(D2_8〜D2_11)を協調動作制御ツール200に転送する。シミュレータ2(300)は、その後に一時停止状態になる。
【0060】
協調動作制御ツール200は、動作サイクルt11(C)が動作サイクルt8(A)よりも進んでいることを判定する。そして、協調動作制御ツール200は実行済みの動作サイクルが少ないシミュレータ1(100)の動作を開始させる。
【0061】
シミュレータ1(100)はシミュレーションの実行時に、協調動作制御ツール200内のデータ転送用メモリ210にアクセスして動作サイクルt11(C)〜t8(A)までのシミュレータ2(300)の出力データ(D2_8〜D2_11)を取得する。シミュレータ1(300)は取得したデータをデータ保持用メモリ120に格納する。
【0062】
シミュレータ1(100)は、シミュレータ2(300)がシミュレーション実行済みの動作サイクルt8(A)〜t11(C)までは出力用データをデータ保持用メモリ120に格納しない。シミュレータ1(100)は、動作サイクルt11(C)以降の出力用データをデータ保持用メモリ120に格納する。
【0063】
シミュレータ1(100)及びシミュレータ2(300)は、上記の処理を繰り返すことによりシミュレーション処理を行う。
【0064】
続いて、特許文献1に記載のシミュレーション装置(図8)と本実施の形態にかかるシミュレーション装置の比較を図6及び図7のタイミングチャートを用いて説明する。図6は特許文献1に記載のシミュレーション装置の動作例を示すタイミングチャートである。図6の例では、3動作サイクル毎に同期通信が行われる。また本例では、シミュレータ2(600)は動作サイクルt3(A)、t4(B)、t5(C)、t6(D)にシミュレータ1(400)の出力データを使用する。また、シミュレータ1(400)は動作サイクルt3(A)にシミュレータ2(600)の出力データを使用する。
【0065】
シミュレータ2(600)はt3(A)において同期通信を行うため、t3(A)の時点ではシミュレータ1(400)の出力データD1_3を保持する。シミュレータ2(600)は、動作サイクルt4(B)及びt5(C)の時点では同期通信を行わない。そのため、シミュレータ2(600)は動作サイクルt4(B)及びt5(C)の時点においてシミュレータ1(400)の出力データD1_4、D1_5を取得できない。
【0066】
シミュレータ2(600)はt6(D)において同期通信を行う。これにより、シミュレータ2(600)はt6(D)の時点ではシミュレータ1(400)の出力データD1_6を保持する。ここで、t4(B)の時点においてシミュレータ1(400)のデータが変化し、t6(D)の時点までデータの変更がなかった場合、信号伝搬の遅延が生じる。また、t4(B)の時点においてシミュレータ1(400)のデータが変化し、t5(C)またはt6(D)の時点においてデータの変更が生じた場合、信号情報の欠損が生じる。
【0067】
図7は本実施の形態にかかるシミュレーション装置の動作例を示すタイミングチャートである。本例においても、シミュレータ2(300)が動作サイクルt3(A)、t4(B)、t5(C)、t6(D)にシミュレータ1(100)の出力データを使用する。また本例では、シミュレータ1(100)が動作サイクルt3(A)、t6(D)にシミュレータ2(300)の出力データを使用する。
【0068】
シミュレータ1(100)はt3(A)までシミュレーションの実行し、一時停止状態となる。シミュレータ2(300)はt3(A)までシミュレーションの実行し、一時停止状態となる。シミュレータ1(100)はD2_3を取得し、シミュレーション処理を再開する。同様にシミュレータ2(300)はD1_3を取得し、シミュレーション処理を再開する。シミュレータ2(300)はt6(D)までシミュレーションを実行し、協調動作制御ツール200にD1_4〜D1_6を転送する。
【0069】
シミュレータ2(300)は、t4(B)までシミュレーションの実行し、データ保持用メモリ320内にD1_4があるか否かを確認する。この場合、D_1はデータ保持用メモリ320内に存在しないため、シミュレータ2(300)は一時停止状態となる。
【0070】
協調動作制御ツール200はシミュレータ2(300)の再開を指示する。シミュレータ2(300)はt4(B)の時点においてD1_4〜D1_6を協調動作制御ツール200から取得し、データ保持用メモリ320に格納する。シミュレータ2(300)は、t4(B)の時点においてD1_4を用いてシミュレーションを実行する。同様にシミュレータ2(300)は、t5(C)の時点においてD1_5を用いてシミュレーションを実行する。このように、本実施の形態によれば信号伝搬の遅延及び信号情報の欠損が生じない。
【0071】
続いて、本実施の形態にかかるシミュレーション装置の効果について説明する。シミュレータ1(100)は、動作サイクルとシミュレーション履歴を関連付けてデータ保持用メモリ120に格納する。データ保持用メモリ120には、シミュレータ1(100)及びシミュレータ2(300)のシミュレーション履歴が格納される。また、シミュレータ1(100)はシミュレータ2(300)の出力データを必要とするタイミング等において所望のデータをデータ保持用メモリ120から取得する。所望のデータがデータ保持メモリ120内にない場合には、シミュレータ1(100)は当該データを協調動作制御ツール200を介してシミュレータ2(300)から取得してデータ保持用メモリ120に格納する。これにより、シミュレータ1(100)はシミュレーション実行の各動作サイクルにおいてデータ保持用メモリ120からシミュレータ2(300)の出力データを取得してシミュレーションを行うことができる。
【0072】
また、シミュレータ1(100)は、シミュレータ2(300)が出力したデータを必要とするタイミング、連続動作サイクル数が所定の最大同期回数に到達したタイミング、連続動作時間が所定の最大同期時間に到達したタイミング等のタイミング(第1のタイミング)にのみ同期通信を行う。これにより、同期通信の回数を少なくすることができる。
【0073】
図2に示したように、データ保持用メモリ120は、出力用のデータに変更があった場合にのみ動作サイクルと出力端子の出力データを格納してもよい。これにより、重複するデータを格納することが無くなり、データ量を削減できる。
【0074】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。たとえば、上述の説明では、シミュレータ1(100)は、シミュレータ2(300)が出力したデータを必要とするタイミング、連続動作サイクル数が所定の最大同期回数に到達したタイミング、連続動作時間が所定の最大同期時間に到達したタイミング等のタイミング(第1のタイミング)にのみ同期通信を行ったが必ずしもこれに限られない。例えば、シミュレータ1(100)は、シミュレータ2(300)が出力したデータを必要とするタイミングにのみ通信処理を行ってもよい。
【0075】
また、シミュレータ2(300)がシミュレータ1(100)のシミュレーション結果を一切使用しない場合、シミュレータ1(100)からのデータ転送処理を省略してもよい。同様に、シミュレータ1(100)がシミュレータ2(300)のシミュレーション結果を一切使用しない場合、シミュレータ2(300)からのデータ転送処理を省略してもよい。
【0076】
さらにまた、協調動作制御ツール200は、シミュレーション装置10のシミュレーション全体の同期管理(シミュレータ1(100)及びシミュレータ2(300)に対して動作制御命令(動作開始、動作停止、動作一時停止等)を供給)のみを行ってもよい。この場合、シミュレータ1(100)及びシミュレータ2(300)が直接データの転送処理を行う。
【符号の説明】
【0077】
10 シミュレーション装置
100 シミュレータ1
110 動作制御部
120 データ保持用メモリ
130 同期制御部
140 アクセス制御部
150 被検証モジュール
200 協調動作制御ツール
210 データ転送用メモリ
220 協調動作制御部
300 シミュレータ2
310 動作制御部
320 データ保持用メモリ
330 同期制御部
340 アクセス制御部
350 被検証モジュール

【特許請求の範囲】
【請求項1】
動作サイクルと関連付けられたシミュレーション履歴情報を記憶する第1記憶部を有し、シミュレーションの実行結果及び他のシミュレータによるシミュレーションの実行結果を前記第1記憶部に格納する第1シミュレータと、
動作サイクルと関連付けられたシミュレーション履歴情報を記憶する第2記憶部を有し、シミュレーションの実行結果及び他のシミュレータによるシミュレーションの実行結果を前記第2記憶部に格納する第2シミュレータと、を備え、
前記第1シミュレータが前記第2シミュレータのシミュレーションの実行結果データを必要とするタイミングを含む第1タイミングにおいて、前記第1シミュレータは前記第1記憶部に所望のデータが格納されている場合には当該データを用いてシミュレーションし、前記第1記憶部に所望のデータが格納されてない場合には前記第2記憶部に格納された前記シミュレーション履歴情報を取得して前記第1記憶部に格納するとともに当該取得データを用いてシミュレーションを実行し、
前記第2シミュレータが前記第1シミュレータのシミュレーションの実行結果データを必要とするタイミングを含む第2タイミングにおいて、前記第2シミュレータは前記第2記憶部に所望のデータが格納されている場合には当該データを用いてシミュレーションし、前記第2記憶部に所望のデータが格納されていない場合には前記第1記憶部に格納された前記シミュレーション履歴情報を取得して前記第2記憶部に格納するとともに当該取得データを用いてシミュレーションを実行するシミュレーション装置。
【請求項2】
前記第1シミュレータは、前記第1タイミングと、前記第2シミュレータが実行を終了している前記動作サイクルと、の間の期間に対応する前記シミュレーション履歴情報を取得し、
前記第2シミュレータは、前記第2タイミングと、前記第1シミュレータが実行を終了している前記動作サイクルと、の間の期間に対応する前記シミュレーション履歴情報を取得することを特徴とする請求項1に記載のシミュレーション装置。
【請求項3】
前記第1シミュレータは、前記第2タイミングと、前記第1シミュレータが実行を終了している前記動作サイクルと、の間の期間はシミュレーションの実行結果を前記シミュレーション履歴情報として前記第1記憶部に格納する処理を省略し、
前記第2シミュレータは、前記第1タイミングと、前記第2シミュレータが実行を終了している前記動作サイクルと、の間の期間はシミュレーションの実行結果を前記シミュレーション履歴情報として前記第2記憶部に格納する処理を省略することを特徴とする請求項1または請求項2に記載のシミュレーション装置。
【請求項4】
前記第1シミュレータは、前記第2シミュレータが取得済みの前記シミュレーション履歴情報を前記第1記憶部から削除し、
前記第2シミュレータは、前記第1シミュレータが取得済みの前記シミュレーション履歴情報を前記第2記憶部から削除することを特徴とする請求項1乃至請求項3のいずれか1項に記載のシミュレーション装置。
【請求項5】
前記第1記憶部及び前記第2記憶部には、前記シミュレーション履歴情報として前記動作サイクル毎の各出力端子の出力データが格納されることを特徴とする請求項1乃至請求項4のいずれか1項に記載のシミュレーション装置。
【請求項6】
前記第1記憶部及び前記第2記憶部には、各出力端子の出力データが変更される毎に前記シミュレーション履歴情報として各出力端子の出力データが格納されることを特徴とする請求項1乃至請求項4のいずれか1項に記載のシミュレーション装置。
【請求項7】
前記第1シミュレータと前記第2シミュレータのデータ転送を中継する協調動作制御ツールを備えることを特徴とする請求項1乃至請求項6のいずれか1項に記載のシミュレーション装置。
【請求項8】
動作サイクルと関連付けられたシミュレーション履歴情報を記憶する第1記憶部を有し、シミュレーションの実行結果及び他のシミュレータによるシミュレーションの実行結果を前記第1記憶部に格納する第1シミュレータと、
動作サイクルと関連付けられたシミュレーション履歴情報を記憶する第2記憶部を有し、シミュレーションの実行結果及び他のシミュレータによるシミュレーションの実行結果を前記第2記憶部に格納する第2シミュレータと、を備えるシミュレーション装置におけるシミュレーション方法であって、
前記第1シミュレータが前記第2シミュレータのシミュレーションの実行結果データを必要とするタイミングを含む第1タイミングにおいて、前記第1シミュレータは前記第1記憶部に所望のデータがある場合には当該データを用いてシミュレーションし、前記第1記憶部に所望のデータがない場合には前記第2記憶部に格納された前記シミュレーション履歴情報を取得してシミュレーションを実行し、
前記第2シミュレータが前記第1シミュレータのシミュレーションの実行結果データを必要とするタイミングを含む第2タイミングにおいて、前記第2シミュレータは前記第2記憶部に所望のデータがある場合には当該データを用いてシミュレーションし、前記第2記憶部に所望のデータがない場合には前記第1記憶部に格納された前記シミュレーション履歴情報を取得してシミュレーションを実行するシミュレーション方法。
【請求項9】
前記第1シミュレータは、前記第1タイミングと、前記第2シミュレータが実行を終了している前記動作サイクルと、の間の期間に対応する前記シミュレーション履歴情報を取得し、
前記第2シミュレータは、前記第2タイミングと、前記第1シミュレータが実行を終了している前記動作サイクルと、の間の期間に対応する前記シミュレーション履歴情報を取得することを特徴とする請求項8に記載のシミュレーション方法。
【請求項10】
前記第1シミュレータは、前記第2タイミングと、前記第1シミュレータが実行を終了している前記動作サイクルと、の間の期間はシミュレーションの実行結果を前記シミュレーション履歴情報として前記第1記憶部に格納する処理を省略し、
前記第2シミュレータは、前記第1タイミングと、前記第2シミュレータが実行を終了している前記動作サイクルと、の間の期間はシミュレーションの実行結果を前記シミュレーション履歴情報として前記第2記憶部に格納する処理を省略することを特徴とする請求項8または請求項9に記載のシミュレーション方法。
【請求項11】
前記第1シミュレータは、前記第2シミュレータが取得済みの前記シミュレーション履歴情報を前記第1記憶部から削除し、
前記第2シミュレータは、前記第1シミュレータが取得済みの前記シミュレーション履歴情報を前記第2記憶部から削除することを特徴とする請求項8乃至請求項10のいずれか1項に記載のシミュレーション方法。
【請求項12】
前記第1記憶部及び前記第2記憶部には、前記シミュレーション履歴情報として前記動作サイクル毎の各出力端子の出力データが格納されることを特徴とする請求項8乃至請求項11のいずれか1項に記載のシミュレーション方法。
【請求項13】
前記第1記憶部及び前記第2記憶部には、各出力端子の出力データが変更される毎に前記シミュレーション履歴情報として各出力端子の出力データが格納されることを特徴とする請求項8乃至請求項11のいずれか1項に記載のシミュレーション方法。
【請求項14】
動作サイクルと関連付けられたシミュレーション履歴情報を記憶する第1記憶部を有し、シミュレーションの実行結果及び他のシミュレータによるシミュレーションの実行結果を前記第1記憶部に格納する第1シミュレータと、
動作サイクルと関連付けられたシミュレーション履歴情報を記憶する第2記憶部を有し、シミュレーションの実行結果を前記第2記憶部に格納する第2シミュレータと、を備え、
前記第1シミュレータが前記第2シミュレータのシミュレーションの実行結果データを必要とするタイミングを含む第1タイミングにおいて、前記第1シミュレータは前記第1記憶部に所望のデータが格納されている場合には当該データを用いてシミュレーションし、前記第1記憶部に所望のデータが格納されてない場合には前記第2記憶部に格納された前記シミュレーション履歴情報を取得して前記第1記憶部に格納するとともに当該取得データを用いてシミュレーションを実行するシミュレーション装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−3336(P2012−3336A)
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願番号】特願2010−135360(P2010−135360)
【出願日】平成22年6月14日(2010.6.14)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】