JP5077219B2 - シミュレーション方法、シミュレーション装置およびシミュレーションプログラム - Google Patents

シミュレーション方法、シミュレーション装置およびシミュレーションプログラム Download PDF

Info

Publication number
JP5077219B2
JP5077219B2 JP2008321307A JP2008321307A JP5077219B2 JP 5077219 B2 JP5077219 B2 JP 5077219B2 JP 2008321307 A JP2008321307 A JP 2008321307A JP 2008321307 A JP2008321307 A JP 2008321307A JP 5077219 B2 JP5077219 B2 JP 5077219B2
Authority
JP
Japan
Prior art keywords
packet data
packet
data
data processing
processing
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
JP2008321307A
Other languages
English (en)
Other versions
JP2010146194A (ja
Inventor
覚 平本
直樹 湯沢
裕之 稗田
伸和 小泉
典保 中山
知己 加藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008321307A priority Critical patent/JP5077219B2/ja
Publication of JP2010146194A publication Critical patent/JP2010146194A/ja
Application granted granted Critical
Publication of JP5077219B2 publication Critical patent/JP5077219B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、半導体装置のアーキテクチャの設計段階で、開発中の半導体装置についての性能の評価を行うためのシミュレーション方法、シミュレーション装置およびシミュレーションプログラムに関する。
従来より、半導体装置の開発における手戻りの発生を防止することを目的として、半導体装置のアーキテクチャの設計段階で、開発中の半導体装置についての性能の評価を行うための技術がある。例えば、特許文献1では、バスの構成をフレキシブルに変更して半導体装置についての性能の評価するためのシミュレーションを行う技術が開示されている。
特開2003−15968号公報
ところで、従来の半導体装置の性能評価を行う技術は、そもそも、メモリに格納されたデータを読み出してからデータ処理後のデータをメモリに格納するまでの時間であるレイテンシを精度良く算出したいという要望に対して応えられるものではなかった。
そこで、開示のシミュレーション方法、シミュレーション装置およびシミュレーションプログラムは、上述した従来技術の課題を解決するためになされたものであり、レイテンシを精度良く算出することが可能なシミュレーション方法、シミュレーション装置およびシミュレーションプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示のシミュレーション方法は、モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理ステップと、前記データ処理ステップによるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出ステップと、前記通過遅延算出ステップにより算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込みステップと、前記データ処理ステップによってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出ステップとを含むことを要件とする。
また、開示のシミュレーション装置は、モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理手段と、前記データ処理手段によるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出手段と、前記通過遅延算出手段により算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込み手段と、前記データ処理手段によってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出手段とを有することを要件とする。
また、開示のシミュレーションプログラムは、モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理手順と、前記データ処理手順によるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出手順と、前記通過遅延算出手順により算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込み手順と、前記データ処理手順によってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出手順とをコンピュータに実行させることを要件する。
開示のシミュレーション方法、シミュレーション装置およびシミュレーションプログラムによれば、レイテンシを精度良く算出することが可能である。
以下に添付図面を参照して、シミュレーション方法、シミュレーション装置およびシミュレーションプログラムの一実施の形態を詳細に説明する。なお、以下では、シミュレーション装置について説明する。
[シミュレーション装置の概要(実施例1)]
図1は、実施例1に係るシミュレーション装置の概要を説明するための図である。実施例1に係るシミュレーション装置は、メモリから読み出したパケットデータをデータ処理した後、バスを経由させてメモリにデータ処理後のパケットデータを書き込むまでの一連の処理過程をモデル上でシミュレートすることを概要とする。そして、実施例1に係るシミュレーション装置は、メモリからパケットデータが読み出されてからデータ処理後のパケットデータがメモリに書き込まれるまでの時間であるレイテンシを精度良く算出する。
すなわち、実施例1に係るシミュレーション装置は、図1に示すように、モデル上のメモリブロックからパケットデータを読み出し、データ処理を実行する。ここで、実施例1に係るシミュレーション装置は、実際にパケットデータをデータ処理するため、正確な処理時間を算出できる。
続いて、実施例1に係るシミュレーション装置は、メモリブロックのアクセス先アドレスおよびメモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延(遅延時間)を算出する。
ここで、実行ログとは、半導体装置が実際のデータ処理中に行ったデータアクセスの履歴である。この実行ログを用いて、実際のデータ処理中に行われたデータアクセスをモデル上で再現するため、実施例1に係るシミュレーション装置は、通過遅延を精度良く算出できる。
続いて、実施例1に係るシミュレーション装置は、データ処理が完了したときから、遅延時間が経過した後に、バスを経由させずにメモリブロックにデータ処理後のパケットデータを書き込む。そして、実施例1に係るシミュレーション装置は、パケットデータが読み出されてから、データ処理後のパケットデータが書き込まれるまでの時間を算出する。
このようなことから、実施例1に係るシミュレーション装置は、正確な処理時間を算出し、精度良くデータの通過遅延を算出するので、処理時間と、通過遅延とを足し合わせた時間であるレイテンシを精度良く算出することが可能である。
[シミュレーション装置の構成(実施例1)]
図2は、シミュレーション装置の構成を示すブロック図である。図2に示すように、シミュレーション装置1は、入力部10と、出力部20と、記憶部30と、シミュレーション実行部40とを有する。
入力部10は、各種の情報の入力を受け付ける。具体的には、入力部10は、キーボードやマウスなどを備えて構成され、例えば、この入力部10を介して、半導体モデルや実行ログの入力を受け付ける。
出力部20は、各種の情報を出力する。具体的には、出力部20は、モニタやディスプレイなどを備えて構成され、この出力部20を介して、例えば、遅延時間情報を出力する。
記憶部30は、シミュレーション実行部40による各種処理に必要なデータおよびプログラムを記憶する。特に、記憶部30は、実行ログ記憶部31と、処理選択テーブル記憶部32と、パラメータ記憶部33と、モデルデータ記憶部34とを有する。
実行ログ記憶部31は、バスに応じたデータの遅延時間を算出するための実行ログを記憶する。既存の半導体装置におけるプロセッサによりデータ処理が実際に実行されたときに、データ処理に伴って生成された実行ログを記憶する。ここで実行ログとは、プロセッサが実行したアクセスの種別(例えば、命令(I)、データ読み込み(D MR)、データ書き込み(D MW))を識別するための情報と、アクセス先のアドレスとからなる項目を列挙した情報である。
図3は、処理選択テーブル記憶部に記憶される情報の一例を示した図である。処理選択テーブル記憶部32は、図3に示すように、パケットデータに含まれる各パケットの長さを示すパケット長およびパケットの種別にそれぞれ対応付けて実行ログの組合せを示す組合せ情報を記憶した処理選択テーブルを記憶する。ここで、例えば、パケット長が「M」に対応し、かつパケット種別が「A」に対応する組合せ情報である「S´×3」は、短いパケット用の実行ログを3つ組み合わせることを意味する。なお、処理選択テーブル記憶部32は、各データ処理に対応する処理選択テーブルをそれぞれ記憶する。また、組合せ情報は、半導体装置の仕様に応じてユーザによって変更される情報である。
パラメータ記憶部33は、アーキテクチャの改変に応じて設定されるパラメータを記憶する。例えば、パラメータ記憶部33は、バスを経由して1回データアクセスが行われる際に要する時間を算出するためのパラメータ(10,SC_NS(10ナノ秒に相当))を記憶する。
モデルデータ記憶部34は、半導体装置をモデル化した半導体モデルを生成するためのモデルデータを記憶する。例えば、モデルデータ記憶部34は、プロセッサをモデル化したプロセッサモデルを生成するためのモデルデータを記憶する。ここで、モデルデータとは、SystemC言語などの言語で記載された構成や、RTL(Register Transfer Level)やTLM(Transaction Level Model)で記載されたモデルの機能を含む情報である。なお、各モデルは、モデル間で制御情報やデータをやり取りするためのインターフェイスを有する。
シミュレーション実行部40は、モデル生成部41と、モデル制御部42と、時間算出部43とを有する。なお、シミュレーション実行部40による処理については、後に詳細に説明する。
図4は、半導体モデルの一例を示した図である。モデル生成部41は、モデルデータをモデルデータ記憶部34から読み出し、読み出したモデルデータを展開して、半導体モデルを生成する。例えば、モデル生成部41は、図4に示すような、半導体モデルを生成する。
モデル制御部42は、半導体モデルにおける各モデルの動作を制御する。例えば、モデル制御部42は、プロセッサモデルがメモリモデルからパケットデータを読み出す場合のプロセッサモデルの動作を制御する。
時間算出部43は、半導体モデルにおける各モデルの動作を監視して、シミュレーション上の各種時間を算出する。例えば、時間算出部43は、プロセッサモデルがメモリモデルからパケットデータを読み出してから、データ処理後のパケットデータをメモリモデルに書き込むまでの時間であるプロセッサのレイテンシを算出する。
[シミュレーション装置による処理(実施例1)]
図5は、シミュレーション装置による処理の流れを示すフローチャート図である。図3に示すように、モデル生成部41は、ユーザからシミュレーション開始指示を受け付けると(ステップS101肯定)、モデルデータを展開して、半導体モデルを生成する(ステップS102)。
続いて、モデル制御部42は、各モデルの動作を制御して、半導体モデルにおいてデータ処理が実行される場合の半導体モデルの動作をシミュレートする(ステップS103)。そして、時間算出部43は、プロセッサモデルがメモリモデルからパケットデータを読み出してから、データ処理後のパケットデータをメモリモデルに書き込むまでの時間であるプロセッサのレイテンシを算出する(ステップS104)。
[シミュレーション実行部による処理]
機能ブロック#1、2は、実行ログ記憶部31から実行ログを読み出し、実行ログの中に列挙されたメモリモデル上のアドレスに対してデータを読み書きする。また、機能ブロック#1は、パケットデータをメモリモデルから読み出すと、スクランブル処理を実行する。また、機能ブロック#2は、パケットデータをメモリモデルから読み出すと、暗号化処理を実行する。バスモデルは、バスの動作を抽象化したモデルであり、プロセッサモデル、データ送信モデルおよびデータ受信モデルからメモリモデルへのデータアクセスを制御する。メモリモデルは、RAM(Random Access Memory)などの記憶デバイスを抽象化したモデルであり、メモリモデルが有する記憶領域にはアドレスが割り振られ、各アドレスに対応付けてデータを記憶する。
図6は、シミュレーション時間と、各モデルによる処理の関係を示した図である。以下では、図6を参照しつつ、シミュレーションが開始した時点からカウントが開始されているシミュレーション上の時間を示すシミュレーション時間の経過とともに、半導体モデルにおいて実行される処理を説明する。
(1)パケット書き込み
データ送信モデルは、シミュレーションが開始すると、予め設定されている一定のシミュレーション時間が経過するごとに(例えば、周期Xごとに)、パケットをメモリモデルに書き込む。そして、データ送信モデルは、パケットの書き込みが完了すると、データ送信が完了したことを示す制御情報をスケジュラーに対して送信する。
図7は、パケットのフォーマットを示す図である。パケットは、例えば、図7に示すように、パケットの先頭を示す識別子(先頭識別子)、各パケットに対してユニークに付与される番号(ID)、パケットの種類を示す識別子(種別)、パケットに含まれるデータの領域を示す数値(データ)、パケットの終端を示す識別子(終端識別子)を含んで構成される。
(2)処理開始指示
スケジュラーは、データ送信モデルから制御情報を受信すると、スクランブル処理を開始させるための制御信号(処理開始指示ともいう)を機能ブロック#1に対して送信する。
(3)パケットデータ読み出し
図8は、パケットデータ読み出し処理を説明するための図である。機能ブロック#1は、スケジュラーから処理開始指示を受信すると、1周期で処理できるパケットデータ量をメモリモデルから読み出してデータ処理を行う。メモリモデルにパケットID0〜2が記憶されているものと仮定した場合の機能ブロック#1による処理について説明すると、図8に示すように、機能ブロック#1は、1周期で処理できるパケットデータとして、各パケットデータ#1〜#3を順次読み出してデータ処理を行う。ここで、図8に示すように、パケットデータ#1は、パケットID0およびパケットID1を含んでおり、パケットデータ#2は、パケットID1の一部を含んでおり、パケットデータ#3は、パケットID1およびパケットID2を含んでいる。
図9は、機能ブロックにおける処理の流れを示した図である。メモリモデルからパケットデータを読み出すと、機能ブロック#1は、図9に示すように、パケット先頭検出処理を実行する。具体的には、機能ブロック#1は、パケットデータの中から先頭識別子を検索して、検出したパケットのパケットIDを取得する。そして、機能ブロック#1は、機能ブロック#1が有するIDリストキューに取得したパケットIDをプッシュする。
図10は、パケットデータ読み出し処理を説明するための図である。図11は、IDリストキューを示した図である。例えば、機能ブロック#1は、図10の(A)に示すように、パケットデータ#1の中からパケットID0、1の先頭識別子を検出し、パケットID0、1を取得する。そして、機能ブロック#1は、図11の(A)に示すように、IDリストキューにパケットID0、1をプッシュする。
続いて、機能ブロック#1は、パケットデータ#1の中から検出したパケットID0、1と、メモリモデルからパケットデータを読み出したときのシミュレーション時間を示す処理開始時間情報(t1)とを対応付けて遅延時間表示部に送信する。なお、このパケットIDおよび処理開始時間情報を送信する処理は、各機能ブロックの中で、最初にデータ処理を実行する機能ブロックだけが実行する。
図12は、全体遅延入力側キューを示した図である。ここで、遅延時間表示部は、図12の(A)に示すように、全体遅延入力側キューに受信したパケットID0、1と、処理開始時間情報(t1)とを対応付けてプッシュする。
パケット先頭検出処理を実行した後、機能ブロック#1は、図9に示すように、シミュレーション時間取得処理を実行する。具体的には、機能ブロック#1は、メモリモデルからパケットデータを読み出したときのシミュレーション時間を示す処理開始時間情報を取得する。続いて、機能ブロック#1は、IDリストキューに格納されているパケットIDを確認する。
そして、機能ブロック#1は、機能ブロック#1が有するID別タイムスタンプリストに、IDリストキューに格納されているパケットIDと、処理開始時間情報とを対応付けてプッシュする。なお、ID別タイムスタンプリストは、全てのパケットIDに対応付けて処理開始時間情報を格納できるように予め配列構成されたものである。
図13は、ID別タイムスタンプリストを示した図である。例えば、機能ブロック#1は、図13の(A)に示すように、ID別タイムスタンプリストのパケットID0、1と、処理開始時間情報(t1)とを対応付けて格納する。
(4)パケットデータ処理
シミュレーション時間取得処理を実行した後、機能ブロック#1は、図9に示すように、パケットデータ処理を実行する。具体的には、機能ブロック#1は、パケットデータをスクランブル処理し、実行ログを選択する。
実行ログを選択する処理について説明すると、機能ブロック#1は、パケットデータに含まれる各パケットの長さをそれぞれ測定する。続いて、機能ブロック#1は、各パケットの長さと、パケットの種別とを用いて、処理選択テーブル記憶部32から実行ログの組合せを示す組合せ情報をパケットごとに読み出す。例えば、機能ブロック#1は、パケットID0に対応するパケットのパケット長が「M」であって、パケットID0に対応するパケットの種別が「A」である場合には、処理選択テーブル記憶部32から「S´×3」を示す組合せ情報を読み出す(図3参照)。
(5)実行ログによるアクセス
図14は、負荷発生処理を説明するための図である。パケットデータ処理を実行した後、機能ブロック#1は、図9に示すように、負荷発生処理を実行する。具体的には、機能ブロック#1は、処理選択テーブル記憶部32から読み出した組合せ情報に対応する実行ログを実行ログ記憶部31から読み出す。例えば、機能ブロック#1は、「S´×3」を示す組合せ情報を処理選択テーブル記憶部32から読み出した場合には、実行ログS´を実行ログ記憶部31から3回読み出す。
続いて、機能ブロック#1は、実行ログに列挙されている各構文それぞれについて遅延時間を算出する。例えば、機能ブロック#1は、図14に示すように、命令(E050D6E4)が実行された場合の遅延時間として、バスモデルで発生する「10,SC_NS」および「10,SC_NS」を算出し、さらに、機能ブロック#1は、メモリモデルで発生する「30,SC_NS」を算出する。なお、この命令のアドレス(E050D6E4)がキャッシュモデルにてキャッシュヒットした場合は、バスモデルおよびメモリモデルにアクセスを行わないため、遅延時間は算出されない。アドレス20003018へのデータの書き込み処理が実行された場合の遅延時間として、バスモデルで発生する「10,SC_NS」および「10,SC_NS」を算出し、さらに、機能ブロック#1は、メモリモデルで発生する「20,SC_NS」を算出する。
そして、機能ブロック#1は、算出した遅延時間を合計して、合計の遅延時間に一致するシミュレーション時間を経過させる。
(6)パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック#1は、図9に示すように、遅延時間算出処理を実行する。具体的には、機能ブロック#1は、メモリモデルにスクランブル処理後のパケットデータを格納したときのシミュレーション時刻を示す処理完了時間情報を取得する。
例えば、機能ブロック#1は、パケットデータ#1を格納したときのシミュレーション時刻を示す処理完了時間情報(t2)を取得する。続いて、機能ブロック#1は、ID別スタンプリストを確認し、パケットID0、1にそれぞれ対応する処理開始時間情報(t1)を取得する。次に、機能ブロック#1は、処理開始時間情報(t1)から処理完了時間情報(t2)に至るまでのシミュレーション上の時間間隔である差分値(t2−t1)を算出する。さらに、機能ブロック#1は、IDリストキューを参照し、IDリストキューに格納されているパケットID0、1を取得する。
図15は、ID別個別遅延リストを示した図である。続いて、機能ブロック#1は、機能ブロック#1が有するID別個別遅延リストにおいて、取得したパケットIDに対応付けて格納されている遅延量に算出した差分値を足し合わせる。例えば、機能ブロック#1は、図15の(A)に示すように、パケットID0、1に対応付けて格納されている遅延量(初期値(0))に算出した差分値(t2−t1)を足し合わせる。
図16は、パケット終端検出処理を説明するための図である。遅延時間算出処理を実行した後、機能ブロック#1は、図9に示すように、パケット終端検出処理を実行する。具体的には、機能ブロック#1は、パケットデータの中から終端識別子を検索して、検出したパケットのパケットIDを取得する。パケット終端検出処理の結果、機能ブロック#1は、例えば、図16の(A)に示すように、パケットデータ#1の中からパケットID0の終端識別子を検出し、パケットID0を取得する。
続いて、機能ブロック#1は、ID別個別遅延リスト参照し、パケットID0に対応する遅延量(a)を読み出し、パケットID0と、遅延量(a)とを対応付けて遅延時間表示部に対して送信する。さらに、機能ブロック#1は、図11の(B)に示すように、IDリストキューからパケットID0をポップする。
パケット終端検出処理を実行した後、機能ブロック#1は、バスモデルを経由させずにスクランブル処理後のパケットデータ#1をメモリモデルに格納する。
(7)処理開始指示
スケジュラーは、前回機能ブロック#2に対して暗号化処理を開始させるための制御信号(処理開始指示ともいう)を送信してから予め設定されている一定のシミュレーション時間が経過するごとに(周期Yごとに)、機能ブロック#2に対して処理開始指示を送信する。
(8)パケットデータ読み出し
機能ブロック#2は、スケジュラーから処理開始指示を受信すると、メモリモデルからスクランブル処理後のパケットデータ#1を読み出す。メモリモデルからパケットデータ#1を読み出すと、機能ブロック#2は、機能ブロック#1と同様に、パケット先頭検出処理およびシミュレーション時間取得処理を実行する。なお、機能ブロック#2は、ID別タイムスタンプリストのパケットID0、1に、処理開始時間情報(t1´)を対応付けて格納する。
(9)パケットデータ処理
シミュレーション時間取得処理を実行した後、機能ブロック#2は、パケットデータ処理を実行する。機能ブロック#2は、機能ブロック#1と同様に、パケットデータ処理を実行する。具体的には、機能ブロック#2は、パケットデータを暗号化処理し、実行ログを選択する。機能ブロック#2は、機能ブロック#2用の処理選択テーブルの中から組合せ情報を読み出す。
(10)実行ログによるアクセス
パケット処理を実行した後、機能ブロック#2は、負荷発生処理を実行する。ここで、機能ブロック#2は、機能ブロック#2用の実行ログを実行ログ記憶部31から読み出す他は、機能ブロック#1と同様に負荷発生処理を実行する。
(11)パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック#2は、遅延時間算出処理を実行する。ここで、遅延時間算出処理は、処理完了時間情報(t2´)を取得し、パケットID0と、処理完了時間情報(t2´)とを対応付けて遅延時間表示部に対して送信する。なお、このパケットIDおよび処理完了時間情報を送信する処理は、各機能ブロックの中で、最後にデータ処理を実行する機能ブロックだけが実行する。
図17は、全体遅延測定用出力側キューを示した図である。ここで、遅延時間表示部は、図17の(A)に示すように、遅延時間表示部が有する全体遅延測定用出力側キューに、パケットID0と、処理完了時間情報(t2´)とを対応付けて格納する。続いて、遅延時間表示部は、全体遅延測定用入力側キューおよび全体遅延測定用出力側キューを参照し、全体遅延測定用入力側キューにパケットID0が格納されており、かつ、全体遅延測定用出力側キューにパケットID0が格納されていることを検出する(図12の(A)および図17の(A)参照)。
図18は、遅延時間算出処理を説明するための図である。続いて、遅延時間表示部は、図18の(A)に示すように、全体遅延測定用入力側キューのパケットID0に対応する処理開始時間情報(t1)から、全体遅延測定用出力側キューのパケットID0に対応する処理完了時間情報(t2´)に至るまでのシミュレーション上の時間間隔である全体遅延量(α)を算出する。
図19は、遅延時間表示部による処理を説明するための図である。そして、遅延時間表示部は、図19に示すように、パケットID0と、機能ブロック#1から受信した遅延量(機能ブロック#1個別遅延(a))と、機能ブロック#2から受信した遅延量(機能ブロック#2個別遅延(a´))と、全体遅延量(α)とを対応付けて出力する。なお、遅延量(a)は、図6の「1」に相当し、遅延量(a´)は、図6の「2」に相当し、なお、遅延量(α)は、図6の「3」に相当する。
(12)パケットデータ読み出し
データ受信モデルは、シミュレーションが実行されると、予め設定されている一定のシミュレーション時間が経過するごとに、暗号化処理後のデータをメモリモデルから読み出す。
以後、半導体モデルにおいて、パケットデータ#2、#3を読み出されたときに半導体モデルにおいて実行される処理を簡単に説明する。
(パケットデータ#2)
(3)パケットデータ読み出し
メモリモデルからパケットデータ#2を読み出すと、機能ブロック#1は、パケット先頭検出処理を実行する。ここでは、機能ブロック#1は、図10の(B)に示すように、先頭識別子を検出しない。次に、機能ブロック#1は、シミュレーション時間取得処理を実行する。ここでは、機能ブロック#1は、図13の(B)に示すように、ID別タイムスタンプリストのパケットID1と、処理開始時間情報(t3)とを対応付けて格納する。
(4)パケットデータ処理
シミュレーション時間取得処理を実行した後、機能ブロック#1は、パケットデータ処理を実行する。ここでは、機能ブロック#1は、パケットデータ#1を読み出したときと同様の処理を行う。
(5)実行ログによるアクセス
パケットデータ処理を実行した後、機能ブロック#1は、負荷発生処理を実行する。ここでは、機能ブロック#1は、パケットデータ#1を読み出したときと同様の処理を行う。
(6)パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック#1は、遅延時間算出処理を実行する。ここでは、機能ブロック#1は、処理完了時間情報(t4)を取得する。続いて、機能ブロック#1は、ID別スタンプリストを確認し、パケットID1に対応する処理開始時間情報(t3)を取得する。次に、機能ブロック#1は、処理開始時間情報(t3)から処理完了時間情報(t4)に至るまでのシミュレーション上の時間間隔である差分値(t4−t3)を算出する。さらに、機能ブロック#1は、IDリストキューを参照し、IDリストキューに格納されているパケットID1を取得する。
続いて、機能ブロック#1は、機能ブロック#1が有するID別個別遅延リストにおいて、取得したパケットIDに対応付けて格納されている遅延量に算出した差分値を足し合わせる。例えば、機能ブロック#1は、図15の(B)に示すように、パケットID1に対応付けて格納されている遅延量(a)に算出した差分値(t4−t3)を足し合わせる。
遅延時間算出処理を実行した後、機能ブロック#1は、パケット終端検出処理を実行する。ここでは、機能ブロック#1は、図16の(B)に示すように、終端識別子を検出しない。パケット終端検出処理を実行した後、機能ブロック#1は、バスモデルを経由させずにスクランブル処理後のパケットデータ#2をメモリモデルに格納する。
(パケットデータ#3)
(3)パケットデータ読み出し
メモリモデルからパケットデータ#3を読み出すと、機能ブロック#1は、パケット先頭検出処理を実行する。ここでは、機能ブロック#1は、図10の(C)に示すように、パケットデータ#3の中からパケットID2の先頭識別子を検出し、パケットID2を取得する。そして、機能ブロック#1は、図11の(C)に示すように、IDリストキューにパケットID2をプッシュする。
続いて、機能ブロック#1は、パケットデータ#3の中から検出したパケットID2と、メモリモデルからパケットデータを読み出したときのシミュレーション時間を示す処理開始時間情報(t5)とを対応付けて遅延時間表示部に送信する。
ここで、遅延時間表示部は、図12の(C)に示すように、全体遅延入力側キューに受信したパケットID2と、処理開始時間情報(t5)とを対応付けてプッシュする。
パケット先頭検出処理を実行した後、機能ブロック#1は、シミュレーション時間取得処理を実行する。ここでは、機能ブロック#1は、図13の(C)に示すように、ID別タイムスタンプリストのパケットID1、2と、処理開始時間情報(t5)とを対応付けて格納する。
(4)パケットデータ処理
シミュレーション時間取得処理を実行した後、機能ブロック#1は、パケットデータ処理を実行する。ここでは、機能ブロック#1は、パケットデータ#1を読み出したときと同様の処理を行う。
(5)実行ログによるアクセス
パケットデータ処理を実行した後、機能ブロック#1は、負荷発生処理を実行する。ここでは、機能ブロック#1は、パケットデータ#1を読み出したときと同様の処理を行う。
(6)パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック#1は、遅延時間算出処理を実行する。ここでは、機能ブロック#1は、処理完了時間情報(t6)を取得する。続いて、機能ブロック#1は、ID別スタンプリストを確認し、パケットID1、2に対応する処理開始時間情報(t5)を取得する。次に、機能ブロック#1は、処理開始時間情報(t5)から処理完了時間情報(t6)に至るまでのシミュレーション上の時間間隔である差分値(t6−t5)を算出する。さらに、機能ブロック#1は、IDリストキューを参照し、IDリストキューに格納されているパケットID1、2を取得する。
続いて、機能ブロック#1は、機能ブロック#1が有するID別個別遅延リストにおいて、取得したパケットIDに対応付けて格納されている遅延量に算出した差分値を足し合わせる。例えば、機能ブロック#1は、図15の(C)に示すように、パケットID1に対応付けて格納されている遅延量(b)に算出した差分値(t6−t5)を足し合わせる。また、機能ブロック#1は、図15の(C)に示すように、パケットID2に対応付けて格納されている遅延量(0)に算出した差分値(t6−t5)を足し合わせる。
遅延時間算出処理を実行した後、機能ブロック#1は、パケット終端検出処理を実行する。ここでは、機能ブロック#1は、図16の(C)に示すように、パケットデータ#3の中からパケットID1、2の終端識別子を検出し、パケットID1、2を取得する。
続いて、機能ブロック#1は、ID別個別遅延リスト参照し、パケットID1、2に対応する遅延量(b、c)を読み出し、パケットID1、2と、遅延量(b、c)とを対応付けて遅延時間表示部に対して送信する。さらに、機能ブロック#1は、図11の(D)に示すように、IDリストキューからパケットID1、2をポップする。
(11)パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック#2は、遅延時間算出処理を実行する。ここで、遅延時間算出処理は、処理完了時間情報(t6´)を取得し、パケットID1、2と、処理完了時間情報(t6´)とを対応付けて遅延時間表示部に対して送信する。
ここで、遅延時間表示部は、図17の(C)に示すように、遅延時間表示部が有する全体遅延測定用出力側キューに、パケットID1、2と、処理完了時間情報(t6´)とを対応付けて格納する。続いて、遅延時間表示部は、全体遅延測定用入力側キューおよび全体遅延測定用出力側キューを参照し、全体遅延測定用入力側キューにパケットID0が格納されており、かつ、全体遅延測定用出力側キューにパケットID1、2が格納されていることを検出する(図12の(C)および図17の(C)参照)。
続いて、遅延時間表示部は、図18の(B)に示すように、全体遅延測定用入力側キューのパケットID0に対応する処理開始時間情報(t1)から、全体遅延測定用出力側キューのパケットID0に対応する処理完了時間情報(t6´)に至るまでのシミュレーション上の時間間隔である全体遅延量(β)を算出する。また、遅延時間表示部は、図18の(B)に示すように、全体遅延測定用入力側キューのパケットID0に対応する処理開始時間情報(t5)から、全体遅延測定用出力側キューのパケットID0に対応する処理完了時間情報(t6´)に至るまでのシミュレーション上の時間間隔である全体遅延量(γ)を算出する。
そして、遅延時間表示部は、図19に示すように、パケットID1と、機能ブロック#1から受信した遅延量(機能ブロック#1個別遅延(c))と、機能ブロック#2から受信した遅延量(機能ブロック#2個別遅延(c´))と、全体遅延量(β)とを対応付けて出力する。また、遅延時間表示部は、パケットID2と、機能ブロック#1から受信した遅延量(機能ブロック#1個別遅延(d))と、機能ブロック#2から受信した遅延量(機能ブロック#2個別遅延(d´))と、全体遅延量(γ)とを対応付けて出力する。
[実施例1の効果]
上記したように、実施例1によれば、精度の良いレイテンシが算出できるので、開発中の半導体装置について精度良く性能を評価することが可能である。
例えば、実施例1によれば、機能ブロックによってパケットデータが読み出されてから、その機能ブロックによってデータ処理後のパケットデータが書き込まれるまでの時間である機能ブロックごとのレイテンシ(機能ブロック個別遅延)を精度良く算出することが可能である。
また、実施例1によれば、最初のデータ処理を実行する機能ブロックによってパケットデータが読み出されてから、最後のデータ処理を実行する機能ブロックによってデータ処理後のパケットデータが書き込まれるまでの時間であるプロセッサのレイテンシ(全体遅延)を精度良く算出することが可能である。言い換えると、所定の機能ブロックによってデータ処理されたパケットデータがメモリに格納されてから、次のデータ処理を実行する機能ブロックによって読み出されるまでの間の時間であるメモリ滞在時間を含む、レイテンシを精度良く算出することが可能である。
また、実施例1によれば、各パケットについてのレイテンシ(例えば、パケットID0に対応する機能ブロック個別遅延および全体遅延)を精度良く算出することが可能である。
また、実施例1によれば、複数回に分けてデータ処理されたパケットのレイテンシ(例えば、パケットID1に対応する機能ブロック個別遅延および全体遅延)を精度良く算出することが可能である。
以下、他の実施形態について説明する。
(1)装置構成等
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報(例えば、図14などに示したパラメータ)については、特記する場合を除いて任意に変更することができる。
また、図2に示した、シミュレーション装置1の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、シミュレーション装置1の分散・統合の具体的形態は図2に示すものに限られず、モデル生成部41と、モデル制御部42とを統合するなど、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成できる。
さらに、シミュレーション装置1にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(2)シミュレーションプログラム
また、上記の実施例1で説明したシミュレーション装置1の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。
そこで、以下では、図20を用いて、上記の実施例1で説明したシミュレーション装置1と同様の機能を有するシミュレーションプログラムを実行するコンピュータの一例を説明する。図20は、シミュレーションプログラムを実行するコンピュータを示す図である。
図20に示すように、コンピュータ110は、入力部120、出力部170、HDD150、ROM130、RAM160およびCPU140をバス180で接続して構成される。なお、図示は省略するが、他の装置とのやり取りされる情報に関する通信を制御する通信制御部なども有する。
ここで、入力部120は、ユーザから各種データの入力を受け付ける。出力部170は、各種情報を表示する。HDD150は、CPU140による各種処理の実行に必要な情報を記憶する。ROM130は、各種情報を長期的に記憶する。RAM160は、各種情報を一時的に記憶する。CPU140は、各種処理を実行する。
そして、ROM130には、図20に示すように、上記の実施例1に示したシミュレーション装置1の各処理部と同様の機能を発揮するモデル生成プログラム131と、モデル制御プログラム132と、時間算出プログラム133とがあらかじめ記憶されている。なお、プログラム131〜133を適宜分散させて、ネットワークを介して通信可能に接続された他のコンピュータの記憶部に記憶させておくこともできる。
そして、CPU140が、プログラム131〜133をHDD150から読み出してRAM160に展開することにより、図20に示すように、プログラム131〜133はモデル生成プロセス141と、モデル制御プロセス142と、時間算出プロセス143として機能するようになる。
そして、プロセス141〜143は、実行ログデータテーブル151等をHDD150から読み出して、RAM160において自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種処理を実行する。
なお、プロセス141〜143は、図2に示したシミュレーション装置1のモデル生成部41、モデル制御部42および時間算出部43において実行される処理にそれぞれ対応する。
なお、上記した各プログラム131〜プログラム133については、必ずしも最初からROM130に記憶させておく必要はなく、例えば、コンピュータ110に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、またはコンピュータ110の内外に備えられるHDDなどの「固定用の物理媒体」、さらには公衆回線、インターネット、LAN、WANなどを介してコンピュータ110に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておき、コンピュータ110がこれから各プログラムを読み出して実行するようにしてもよい。
実施例1に係るシミュレーション装置の概要を説明するための図である。 シミュレーション装置の構成を示すブロック図である。 処理選択テーブル記憶部に記憶される情報の一例を示した図である。 半導体モデルの一例を示した図である。 シミュレーション装置による処理の流れを示すフローチャート図である。 シミュレーション時間と、各モデルによる処理の関係を示した図である。 パケットのフォーマットを示す図である。 パケットデータ読み出し処理を説明するための図である。 機能ブロックにおける処理の流れを示した図である。 パケットデータ読み出し処理を説明するための図である。 IDリストキューを示した図である。 全体遅延入力側キューを示した図である。 ID別タイムスタンプリストを示した図である。 負荷発生処理を説明するための図である。 ID別個別遅延リストを示した図である。 パケット終端検出処理を説明するための図である。 全体遅延測定用出力側キューを示した図である。 遅延時間算出処理を説明するための図である。 遅延時間表示部による処理を説明するための図である。 シミュレーションプログラムを実行するコンピュータを示す図である。
符号の説明
1 シミュレーション装置
10 入力部
20 出力部
30 記憶部
31 実行ログ記憶部
32 処理選択テーブル記憶部
33 パラメータ記憶部
34 モデルデータ記憶部
40 シミュレーション実行部
41 モデル生成部
42 モデル制御部
43 時間算出部
110 コンピュータ
120 入力部
130 ROM(Read Only Memory)
131 モデル生成プログラム
132 モデル制御プログラム
133 時間算出プログラム
140 CPU(Central Processing Unit)
141 モデル生成プロセス
142 モデル制御プロセス
143 時間算出プロセス
150 HDD(Hard Disk Drive)
151 実行ログデータテーブル
152 処理選択テーブル
153 パラメータデータテーブル
154 モデルデータテーブル
160 RAM(Random Access Memory)
161 実行ログデータ
162 処理選択データ
163 パラメータデータ
164 モデルデータ
170 出力部
180 バス

Claims (5)

  1. モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理ステップと、
    前記データ処理ステップによるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出ステップと、
    前記通過遅延算出ステップにより算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込みステップと、
    前記データ処理ステップによってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出ステップと
    を含むシミュレーション方法。
  2. 前記データ処理ステップによって読み出されたパケットデータを監視して、当該パケットデータの長さを示すパケットデータ長を測定するパケットデータ長測定ステップをさらに含み、
    前記通過遅延算出ステップは、前記パケットデータ長測定ステップによって測定されたパケットデータ長に応じた実行ログを用いて、通過遅延を算出する請求項1に記載のシミュレーション方法。
  3. 前記データ処理ステップは、一定の周期ごとに、一周期で処理できる量のパケットデータを読み出して、データ処理し、
    前記時間算出ステップは、前記データ処理ステップによって最初のパケットデータが読み出されてから、前記パケットデータ書き込みステップによって最後のパケットデータが書き込まれるまでの時間を算出する請求項1または2に記載のシミュレーション方法。
  4. モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理手段と、
    前記データ処理手段によるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出手段と、
    前記通過遅延算出手段により算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込み手段と、
    前記データ処理手段によってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出手段と
    を有するシミュレーション装置。
  5. モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理手順と、
    前記データ処理手順によるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出手順と、
    前記通過遅延算出手順により算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込み手順と、
    前記データ処理手順によってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出手順と
    をコンピュータに実行させるシミュレーションプログラム。
JP2008321307A 2008-12-17 2008-12-17 シミュレーション方法、シミュレーション装置およびシミュレーションプログラム Expired - Fee Related JP5077219B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008321307A JP5077219B2 (ja) 2008-12-17 2008-12-17 シミュレーション方法、シミュレーション装置およびシミュレーションプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008321307A JP5077219B2 (ja) 2008-12-17 2008-12-17 シミュレーション方法、シミュレーション装置およびシミュレーションプログラム

Publications (2)

Publication Number Publication Date
JP2010146194A JP2010146194A (ja) 2010-07-01
JP5077219B2 true JP5077219B2 (ja) 2012-11-21

Family

ID=42566592

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008321307A Expired - Fee Related JP5077219B2 (ja) 2008-12-17 2008-12-17 シミュレーション方法、シミュレーション装置およびシミュレーションプログラム

Country Status (1)

Country Link
JP (1) JP5077219B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11314648B2 (en) * 2017-02-08 2022-04-26 Arm Limited Data processing

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2663893B2 (ja) * 1994-12-27 1997-10-15 日本電気株式会社 アーキテクチャ・シミュレータ
JP2003223475A (ja) * 2002-01-30 2003-08-08 Fujitsu Ltd 性能評価装置
JP2004334374A (ja) * 2003-05-01 2004-11-25 Sony Corp メモリアクセス検証システム及び方法、メモリアクセス検証用プログラム
JP2006107309A (ja) * 2004-10-08 2006-04-20 Seiko Epson Corp バスインターフェース設計支援装置、バスインターフェース設計支援システム、バスインターフェース設計支援プログラムおよびバスインターフェース設計支援方法

Also Published As

Publication number Publication date
JP2010146194A (ja) 2010-07-01

Similar Documents

Publication Publication Date Title
US8428927B2 (en) Simulation method and simulation apparatus
CN109032879B (zh) 多核处理器访存数据检测验证系统及方法
US20050102640A1 (en) Verification apparatus, verification method, and program
CN104615477A (zh) 运行中的fpga 系统的周期精确级重放和调试
JP4468410B2 (ja) ソフトウェア実行装置および協調動作方法
CN114168200B (zh) 多核处理器访存一致性的验证系统及方法
US8700380B2 (en) Method for generating performance evaluation model
JP4187470B2 (ja) 半導体装置の開発支援連携装置及び開発支援方法
JP2006139729A (ja) ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体
JP5040625B2 (ja) Lsiの電力見積方法及びその装置
JP5077219B2 (ja) シミュレーション方法、シミュレーション装置およびシミュレーションプログラム
US7865345B2 (en) Simulation apparatus and method
US20140325468A1 (en) Storage medium, and generation apparatus for generating transactions for performance evaluation
US20100161305A1 (en) Performance evaluation device, performance evaluation method and simulation program
TW201708836A (zh) 基於協定之自動化測試器刺激產生器
JP5454349B2 (ja) 性能推定装置
US9547568B2 (en) Method and apparatus for verifying circuit design
CN115983172B (zh) 用于后仿真的方法和仿真平台
CN116842902B (zh) 针对黑盒模型的系统级仿真建模方法
JP2009075811A (ja) 論理シミュレーション装置及び論理シミュレーション方法
CN110321574B (zh) 一种打印波形的方法和装置
JP2007207119A (ja) 表示装置及び表示方法
US20160266205A1 (en) Logic verification apparatus, logic verification method and test program
JP2006221474A (ja) シミュレーション装置及びその履歴情報記録方法
Ikodinovic Methodology for Cycle-Accurate DRAM Performance Analysis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110907

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

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

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

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5077219

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees