(57)【要約】【課題】メモリに格納されたデータを読み出してからデータ処理後のデータをメモリに格納するまでの時間であるレイテンシを精度良く算出する。【解決手段】モデル上のメモリブロックからパケットデータを読み出して、パケットデータを処理し、パケットデータの処理完了後に、メモリブロックのアクセス先アドレスおよびメモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する。続いて、通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込む。そして、モデル上のメモリブロックからパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する。【選択図】        図１
2010146194.tif 000002
【特許請求の範囲】
【請求項１】
モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理ステップと、
前記データ処理ステップによるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出ステップと、
前記通過遅延算出ステップにより算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込みステップと、
前記データ処理ステップによってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出ステップと
を含むシミュレーション方法。
【請求項２】
前記データ処理ステップによって読み出されたパケットデータを監視して、当該パケットデータの長さを示すパケットデータ長を測定するパケットデータ長測定ステップをさらに含み、
前記通過遅延算出ステップは、前記パケットデータ長測定ステップによって測定されたパケットデータ長に応じた実行ログを用いて、通過遅延を算出する請求項１に記載のシミュレーション方法。
【請求項３】
前記データ処理ステップは、一定の周期ごとに、一周期で処理できる量のパケットデータを読み出して、データ処理し、
前記時間算出ステップは、前記データ処理ステップによって最初のパケットデータが読み出されてから、前記パケットデータ書き込みステップによって最後のパケットデータが書き込まれるまでの時間を算出する請求項１または２に記載のシミュレーション方法。
【請求項４】
モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理手段と、
前記データ処理手段によるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出手段と、
前記通過遅延算出手段により算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込み手段と、
前記データ処理手段によってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出手段と
を有するシミュレーション装置。
【請求項５】
モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理手順と、
前記データ処理手順によるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出手順と、
前記通過遅延算出手順により算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込み手順と、
前記データ処理手順によってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出手順と
をコンピュータに実行させるシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体装置のアーキテクチャの設計段階で、開発中の半導体装置についての性能の評価を行うためのシミュレーション方法、シミュレーション装置およびシミュレーションプログラムに関する。
【背景技術】
【０００２】
従来より、半導体装置の開発における手戻りの発生を防止することを目的として、半導体装置のアーキテクチャの設計段階で、開発中の半導体装置についての性能の評価を行うための技術がある。例えば、特許文献１では、バスの構成をフレキシブルに変更して半導体装置についての性能の評価するためのシミュレーションを行う技術が開示されている。
【０００３】
【特許文献１】特開２００３−１５９６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、従来の半導体装置の性能評価を行う技術は、そもそも、メモリに格納されたデータを読み出してからデータ処理後のデータをメモリに格納するまでの時間であるレイテンシを精度良く算出したいという要望に対して応えられるものではなかった。
【０００５】
そこで、開示のシミュレーション方法、シミュレーション装置およびシミュレーションプログラムは、上述した従来技術の課題を解決するためになされたものであり、レイテンシを精度良く算出することが可能なシミュレーション方法、シミュレーション装置およびシミュレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するため、開示のシミュレーション方法は、モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理ステップと、前記データ処理ステップによるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出ステップと、前記通過遅延算出ステップにより算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込みステップと、前記データ処理ステップによってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出ステップとを含むことを要件とする。
【０００７】
また、開示のシミュレーション装置は、モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理手段と、前記データ処理手段によるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出手段と、前記通過遅延算出手段により算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込み手段と、前記データ処理手段によってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出手段とを有することを要件とする。
【０００８】
また、開示のシミュレーションプログラムは、モデル上のメモリブロックからパケットデータを読み出して、当該パケットデータを処理するデータ処理手順と、前記データ処理手順によるパケットデータの処理完了後に、前記メモリブロックのアクセス先アドレスおよび当該メモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延を算出する通過遅延算出手順と、前記通過遅延算出手順により算出された通過遅延の分だけ、シミュレーション時間を経過させた後、バスを通過させずに、データ処理後のパケットデータをメモリブロックに書き込むパケットデータ書き込み手順と、前記データ処理手順によってパケットデータが読み出されてから、データ処理後のパケットデータがメモリブロックに書き込まれるまでの時間を算出する時間算出手順とをコンピュータに実行させることを要件する。
【発明の効果】
【０００９】
開示のシミュレーション方法、シミュレーション装置およびシミュレーションプログラムによれば、レイテンシを精度良く算出することが可能である。
【発明を実施するための最良の形態】
【００１０】
以下に添付図面を参照して、シミュレーション方法、シミュレーション装置およびシミュレーションプログラムの一実施の形態を詳細に説明する。なお、以下では、シミュレーション装置について説明する。
【実施例１】
【００１１】
［シミュレーション装置の概要（実施例１）］
図１は、実施例１に係るシミュレーション装置の概要を説明するための図である。実施例１に係るシミュレーション装置は、メモリから読み出したパケットデータをデータ処理した後、バスを経由させてメモリにデータ処理後のパケットデータを書き込むまでの一連の処理過程をモデル上でシミュレートすることを概要とする。そして、実施例１に係るシミュレーション装置は、メモリからパケットデータが読み出されてからデータ処理後のパケットデータがメモリに書き込まれるまでの時間であるレイテンシを精度良く算出する。
【００１２】
すなわち、実施例１に係るシミュレーション装置は、図１に示すように、モデル上のメモリブロックからパケットデータを読み出し、データ処理を実行する。ここで、実施例１に係るシミュレーション装置は、実際にパケットデータをデータ処理するため、正確な処理時間を算出できる。
【００１３】
続いて、実施例１に係るシミュレーション装置は、メモリブロックのアクセス先アドレスおよびメモリブロックへのアクセス種別を含む実行ログを用いて、データ処理後のパケットデータがバスを通過する際に発生する通過遅延（遅延時間）を算出する。
【００１４】
ここで、実行ログとは、半導体装置が実際のデータ処理中に行ったデータアクセスの履歴である。この実行ログを用いて、実際のデータ処理中に行われたデータアクセスをモデル上で再現するため、実施例１に係るシミュレーション装置は、通過遅延を精度良く算出できる。
【００１５】
続いて、実施例１に係るシミュレーション装置は、データ処理が完了したときから、遅延時間が経過した後に、バスを経由させずにメモリブロックにデータ処理後のパケットデータを書き込む。そして、実施例１に係るシミュレーション装置は、パケットデータが読み出されてから、データ処理後のパケットデータが書き込まれるまでの時間を算出する。
【００１６】
このようなことから、実施例１に係るシミュレーション装置は、正確な処理時間を算出し、精度良くデータの通過遅延を算出するので、処理時間と、通過遅延とを足し合わせた時間であるレイテンシを精度良く算出することが可能である。
【００１７】
［シミュレーション装置の構成（実施例１）］
図２は、シミュレーション装置の構成を示すブロック図である。図２に示すように、シミュレーション装置１は、入力部１０と、出力部２０と、記憶部３０と、シミュレーション実行部４０とを有する。
【００１８】
入力部１０は、各種の情報の入力を受け付ける。具体的には、入力部１０は、キーボードやマウスなどを備えて構成され、例えば、この入力部１０を介して、半導体モデルや実行ログの入力を受け付ける。
【００１９】
出力部２０は、各種の情報を出力する。具体的には、出力部２０は、モニタやディスプレイなどを備えて構成され、この出力部２０を介して、例えば、遅延時間情報を出力する。
【００２０】
記憶部３０は、シミュレーション実行部４０による各種処理に必要なデータおよびプログラムを記憶する。特に、記憶部３０は、実行ログ記憶部３１と、処理選択テーブル記憶部３２と、パラメータ記憶部３３と、モデルデータ記憶部３４とを有する。
【００２１】
実行ログ記憶部３１は、バスに応じたデータの遅延時間を算出するための実行ログを記憶する。既存の半導体装置におけるプロセッサによりデータ処理が実際に実行されたときに、データ処理に伴って生成された実行ログを記憶する。ここで実行ログとは、プロセッサが実行したアクセスの種別（例えば、命令（Ｉ）、データ読み込み（Ｄ  ＭＲ）、データ書き込み（Ｄ  ＭＷ））を識別するための情報と、アクセス先のアドレスとからなる項目を列挙した情報である。
【００２２】
図３は、処理選択テーブル記憶部に記憶される情報の一例を示した図である。処理選択テーブル記憶部３２は、図３に示すように、パケットデータに含まれる各パケットの長さを示すパケット長およびパケットの種別にそれぞれ対応付けて実行ログの組合せを示す組合せ情報を記憶した処理選択テーブルを記憶する。ここで、例えば、パケット長が「Ｍ」に対応し、かつパケット種別が「Ａ」に対応する組合せ情報である「Ｓ´×３」は、短いパケット用の実行ログを３つ組み合わせることを意味する。なお、処理選択テーブル記憶部３２は、各データ処理に対応する処理選択テーブルをそれぞれ記憶する。また、組合せ情報は、半導体装置の仕様に応じてユーザによって変更される情報である。
【００２３】
パラメータ記憶部３３は、アーキテクチャの改変に応じて設定されるパラメータを記憶する。例えば、パラメータ記憶部３３は、バスを経由して１回データアクセスが行われる際に要する時間を算出するためのパラメータ（１０，ＳＣ＿ＮＳ（１０ナノ秒に相当））を記憶する。
【００２４】
モデルデータ記憶部３４は、半導体装置をモデル化した半導体モデルを生成するためのモデルデータを記憶する。例えば、モデルデータ記憶部３４は、プロセッサをモデル化したプロセッサモデルを生成するためのモデルデータを記憶する。ここで、モデルデータとは、ＳｙｓｔｅｍＣ言語などの言語で記載された構成や、ＲＴＬ（Register Transfer Level）やＴＬＭ（Transaction Level Model）で記載されたモデルの機能を含む情報である。なお、各モデルは、モデル間で制御情報やデータをやり取りするためのインターフェイスを有する。
【００２５】
シミュレーション実行部４０は、モデル生成部４１と、モデル制御部４２と、時間算出部４３とを有する。なお、シミュレーション実行部４０による処理については、後に詳細に説明する。
【００２６】
図４は、半導体モデルの一例を示した図である。モデル生成部４１は、モデルデータをモデルデータ記憶部３４から読み出し、読み出したモデルデータを展開して、半導体モデルを生成する。例えば、モデル生成部４１は、図４に示すような、半導体モデルを生成する。
【００２７】
モデル制御部４２は、半導体モデルにおける各モデルの動作を制御する。例えば、モデル制御部４２は、プロセッサモデルがメモリモデルからパケットデータを読み出す場合のプロセッサモデルの動作を制御する。
【００２８】
時間算出部４３は、半導体モデルにおける各モデルの動作を監視して、シミュレーション上の各種時間を算出する。例えば、時間算出部４３は、プロセッサモデルがメモリモデルからパケットデータを読み出してから、データ処理後のパケットデータをメモリモデルに書き込むまでの時間であるプロセッサのレイテンシを算出する。
【００２９】
［シミュレーション装置による処理（実施例１）］
図５は、シミュレーション装置による処理の流れを示すフローチャート図である。図３に示すように、モデル生成部４１は、ユーザからシミュレーション開始指示を受け付けると（ステップＳ１０１肯定）、モデルデータを展開して、半導体モデルを生成する（ステップＳ１０２）。
【００３０】
続いて、モデル制御部４２は、各モデルの動作を制御して、半導体モデルにおいてデータ処理が実行される場合の半導体モデルの動作をシミュレートする（ステップＳ１０３）。そして、時間算出部４３は、プロセッサモデルがメモリモデルからパケットデータを読み出してから、データ処理後のパケットデータをメモリモデルに書き込むまでの時間であるプロセッサのレイテンシを算出する（ステップＳ１０４）。
【００３１】
［シミュレーション実行部による処理］
機能ブロック＃１、２は、実行ログ記憶部３１から実行ログを読み出し、実行ログの中に列挙されたメモリモデル上のアドレスに対してデータを読み書きする。また、機能ブロック＃１は、パケットデータをメモリモデルから読み出すと、スクランブル処理を実行する。また、機能ブロック＃２は、パケットデータをメモリモデルから読み出すと、暗号化処理を実行する。バスモデルは、バスの動作を抽象化したモデルであり、プロセッサモデル、データ送信モデルおよびデータ受信モデルからメモリモデルへのデータアクセスを制御する。メモリモデルは、ＲＡＭ（Random Access Memory）などの記憶デバイスを抽象化したモデルであり、メモリモデルが有する記憶領域にはアドレスが割り振られ、各アドレスに対応付けてデータを記憶する。
【００３２】
図６は、シミュレーション時間と、各モデルによる処理の関係を示した図である。以下では、図６を参照しつつ、シミュレーションが開始した時点からカウントが開始されているシミュレーション上の時間を示すシミュレーション時間の経過とともに、半導体モデルにおいて実行される処理を説明する。
【００３３】
（１）パケット書き込み
データ送信モデルは、シミュレーションが開始すると、予め設定されている一定のシミュレーション時間が経過するごとに（例えば、周期Ｘごとに）、パケットをメモリモデルに書き込む。そして、データ送信モデルは、パケットの書き込みが完了すると、データ送信が完了したことを示す制御情報をスケジュラーに対して送信する。
【００３４】
図７は、パケットのフォーマットを示す図である。パケットは、例えば、図７に示すように、パケットの先頭を示す識別子（先頭識別子）、各パケットに対してユニークに付与される番号（ＩＤ）、パケットの種類を示す識別子（種別）、パケットに含まれるデータの領域を示す数値（データ）、パケットの終端を示す識別子（終端識別子）を含んで構成される。
【００３５】
（２）処理開始指示
スケジュラーは、データ送信モデルから制御情報を受信すると、スクランブル処理を開始させるための制御信号（処理開始指示ともいう）を機能ブロック＃１に対して送信する。
【００３６】
（３）パケットデータ読み出し
図８は、パケットデータ読み出し処理を説明するための図である。機能ブロック＃１は、スケジュラーから処理開始指示を受信すると、１周期で処理できるパケットデータ量をメモリモデルから読み出してデータ処理を行う。メモリモデルにパケットＩＤ０〜２が記憶されているものと仮定した場合の機能ブロック＃１による処理について説明すると、図８に示すように、機能ブロック＃１は、１周期で処理できるパケットデータとして、各パケットデータ＃１〜＃３を順次読み出してデータ処理を行う。ここで、図８に示すように、パケットデータ＃１は、パケットＩＤ０およびパケットＩＤ１を含んでおり、パケットデータ＃２は、パケットＩＤ１の一部を含んでおり、パケットデータ＃３は、パケットＩＤ１およびパケットＩＤ２を含んでいる。
【００３７】
図９は、機能ブロックにおける処理の流れを示した図である。メモリモデルからパケットデータを読み出すと、機能ブロック＃１は、図９に示すように、パケット先頭検出処理を実行する。具体的には、機能ブロック＃１は、パケットデータの中から先頭識別子を検索して、検出したパケットのパケットＩＤを取得する。そして、機能ブロック＃１は、機能ブロック＃１が有するＩＤリストキューに取得したパケットＩＤをプッシュする。
【００３８】
図１０は、パケットデータ読み出し処理を説明するための図である。図１１は、ＩＤリストキューを示した図である。例えば、機能ブロック＃１は、図１０の（Ａ）に示すように、パケットデータ＃１の中からパケットＩＤ０、１の先頭識別子を検出し、パケットＩＤ０、１を取得する。そして、機能ブロック＃１は、図１１の（Ａ）に示すように、ＩＤリストキューにパケットＩＤ０、１をプッシュする。
【００３９】
続いて、機能ブロック＃１は、パケットデータ＃１の中から検出したパケットＩＤ０、１と、メモリモデルからパケットデータを読み出したときのシミュレーション時間を示す処理開始時間情報（ｔ１）とを対応付けて遅延時間表示部に送信する。なお、このパケットＩＤおよび処理開始時間情報を送信する処理は、各機能ブロックの中で、最初にデータ処理を実行する機能ブロックだけが実行する。
【００４０】
図１２は、全体遅延入力側キューを示した図である。ここで、遅延時間表示部は、図１２の（Ａ）に示すように、全体遅延入力側キューに受信したパケットＩＤ０、１と、処理開始時間情報（ｔ１）とを対応付けてプッシュする。
【００４１】
パケット先頭検出処理を実行した後、機能ブロック＃１は、図９に示すように、シミュレーション時間取得処理を実行する。具体的には、機能ブロック＃１は、メモリモデルからパケットデータを読み出したときのシミュレーション時間を示す処理開始時間情報を取得する。続いて、機能ブロック＃１は、ＩＤリストキューに格納されているパケットＩＤを確認する。
【００４２】
そして、機能ブロック＃１は、機能ブロック＃１が有するＩＤ別タイムスタンプリストに、ＩＤリストキューに格納されているパケットＩＤと、処理開始時間情報とを対応付けてプッシュする。なお、ＩＤ別タイムスタンプリストは、全てのパケットＩＤに対応付けて処理開始時間情報を格納できるように予め配列構成されたものである。
【００４３】
図１３は、ＩＤ別タイムスタンプリストを示した図である。例えば、機能ブロック＃１は、図１３の（Ａ）に示すように、ＩＤ別タイムスタンプリストのパケットＩＤ０、１と、処理開始時間情報（ｔ１）とを対応付けて格納する。
【００４４】
（４）パケットデータ処理
シミュレーション時間取得処理を実行した後、機能ブロック＃１は、図９に示すように、パケットデータ処理を実行する。具体的には、機能ブロック＃１は、パケットデータをスクランブル処理し、実行ログを選択する。
【００４５】
実行ログを選択する処理について説明すると、機能ブロック＃１は、パケットデータに含まれる各パケットの長さをそれぞれ測定する。続いて、機能ブロック＃１は、各パケットの長さと、パケットの種別とを用いて、処理選択テーブル記憶部３２から実行ログの組合せを示す組合せ情報をパケットごとに読み出す。例えば、機能ブロック＃１は、パケットＩＤ０に対応するパケットのパケット長が「Ｍ」であって、パケットＩＤ０に対応するパケットの種別が「Ａ」である場合には、処理選択テーブル記憶部３２から「Ｓ´×３」を示す組合せ情報を読み出す（図３参照）。
【００４６】
（５）実行ログによるアクセス
図１４は、負荷発生処理を説明するための図である。パケットデータ処理を実行した後、機能ブロック＃１は、図９に示すように、負荷発生処理を実行する。具体的には、機能ブロック＃１は、処理選択テーブル記憶部３２から読み出した組合せ情報に対応する実行ログを実行ログ記憶部３１から読み出す。例えば、機能ブロック＃１は、「Ｓ´×３」を示す組合せ情報を処理選択テーブル記憶部３２から読み出した場合には、実行ログＳ´を実行ログ記憶部３１から３回読み出す。
【００４７】
続いて、機能ブロック＃１は、実行ログに列挙されている各構文それぞれについて遅延時間を算出する。例えば、機能ブロック＃１は、図１４に示すように、命令（E050D6E4）が実行された場合の遅延時間として、バスモデルで発生する「１０，ＳＣ＿ＮＳ」および「１０，ＳＣ＿ＮＳ」を算出し、さらに、機能ブロック＃１は、メモリモデルで発生する「３０，ＳＣ＿ＮＳ」を算出する。なお、この命令のアドレス（E050D6E4）がキャッシュモデルにてキャッシュヒットした場合は、バスモデルおよびメモリモデルにアクセスを行わないため、遅延時間は算出されない。アドレス20003018へのデータの書き込み処理が実行された場合の遅延時間として、バスモデルで発生する「１０，ＳＣ＿ＮＳ」および「１０，ＳＣ＿ＮＳ」を算出し、さらに、機能ブロック＃１は、メモリモデルで発生する「２０，ＳＣ＿ＮＳ」を算出する。
【００４８】
そして、機能ブロック＃１は、算出した遅延時間を合計して、合計の遅延時間に一致するシミュレーション時間を経過させる。
【００４９】
（６）パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック＃１は、図９に示すように、遅延時間算出処理を実行する。具体的には、機能ブロック＃１は、メモリモデルにスクランブル処理後のパケットデータを格納したときのシミュレーション時刻を示す処理完了時間情報を取得する。
【００５０】
例えば、機能ブロック＃１は、パケットデータ＃１を格納したときのシミュレーション時刻を示す処理完了時間情報（ｔ２）を取得する。続いて、機能ブロック＃１は、ＩＤ別スタンプリストを確認し、パケットＩＤ０、１にそれぞれ対応する処理開始時間情報（ｔ１）を取得する。次に、機能ブロック＃１は、処理開始時間情報（ｔ１）から処理完了時間情報（ｔ２）に至るまでのシミュレーション上の時間間隔である差分値（ｔ２−ｔ１）を算出する。さらに、機能ブロック＃１は、ＩＤリストキューを参照し、ＩＤリストキューに格納されているパケットＩＤ０、１を取得する。
【００５１】
図１５は、ＩＤ別個別遅延リストを示した図である。続いて、機能ブロック＃１は、機能ブロック＃１が有するＩＤ別個別遅延リストにおいて、取得したパケットＩＤに対応付けて格納されている遅延量に算出した差分値を足し合わせる。例えば、機能ブロック＃１は、図１５の（Ａ）に示すように、パケットＩＤ０、１に対応付けて格納されている遅延量（初期値（０））に算出した差分値（ｔ２−ｔ１）を足し合わせる。
【００５２】
図１６は、パケット終端検出処理を説明するための図である。遅延時間算出処理を実行した後、機能ブロック＃１は、図９に示すように、パケット終端検出処理を実行する。具体的には、機能ブロック＃１は、パケットデータの中から終端識別子を検索して、検出したパケットのパケットＩＤを取得する。パケット終端検出処理の結果、機能ブロック＃１は、例えば、図１６の（Ａ）に示すように、パケットデータ＃１の中からパケットＩＤ０の終端識別子を検出し、パケットＩＤ０を取得する。
【００５３】
続いて、機能ブロック＃１は、ＩＤ別個別遅延リスト参照し、パケットＩＤ０に対応する遅延量（ａ）を読み出し、パケットＩＤ０と、遅延量（ａ）とを対応付けて遅延時間表示部に対して送信する。さらに、機能ブロック＃１は、図１１の（Ｂ）に示すように、ＩＤリストキューからパケットＩＤ０をポップする。
【００５４】
パケット終端検出処理を実行した後、機能ブロック＃１は、バスモデルを経由させずにスクランブル処理後のパケットデータ＃１をメモリモデルに格納する。
【００５５】
（７）処理開始指示
スケジュラーは、前回機能ブロック＃２に対して暗号化処理を開始させるための制御信号（処理開始指示ともいう）を送信してから予め設定されている一定のシミュレーション時間が経過するごとに（周期Ｙごとに）、機能ブロック＃２に対して処理開始指示を送信する。
【００５６】
（８）パケットデータ読み出し
機能ブロック＃２は、スケジュラーから処理開始指示を受信すると、メモリモデルからスクランブル処理後のパケットデータ＃１を読み出す。メモリモデルからパケットデータ＃１を読み出すと、機能ブロック＃２は、機能ブロック＃１と同様に、パケット先頭検出処理およびシミュレーション時間取得処理を実行する。なお、機能ブロック＃２は、ＩＤ別タイムスタンプリストのパケットＩＤ０、１に、処理開始時間情報（ｔ１´）を対応付けて格納する。
【００５７】
（９）パケットデータ処理
シミュレーション時間取得処理を実行した後、機能ブロック＃２は、パケットデータ処理を実行する。機能ブロック＃２は、機能ブロック＃１と同様に、パケットデータ処理を実行する。具体的には、機能ブロック＃２は、パケットデータを暗号化処理し、実行ログを選択する。機能ブロック＃２は、機能ブロック＃２用の処理選択テーブルの中から組合せ情報を読み出す。
【００５８】
（１０）実行ログによるアクセス
パケット処理を実行した後、機能ブロック＃２は、負荷発生処理を実行する。ここで、機能ブロック＃２は、機能ブロック＃２用の実行ログを実行ログ記憶部３１から読み出す他は、機能ブロック＃１と同様に負荷発生処理を実行する。
【００５９】
（１１）パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック＃２は、遅延時間算出処理を実行する。ここで、遅延時間算出処理は、処理完了時間情報（ｔ２´）を取得し、パケットＩＤ０と、処理完了時間情報（ｔ２´）とを対応付けて遅延時間表示部に対して送信する。なお、このパケットＩＤおよび処理完了時間情報を送信する処理は、各機能ブロックの中で、最後にデータ処理を実行する機能ブロックだけが実行する。
【００６０】
図１７は、全体遅延測定用出力側キューを示した図である。ここで、遅延時間表示部は、図１７の（Ａ）に示すように、遅延時間表示部が有する全体遅延測定用出力側キューに、パケットＩＤ０と、処理完了時間情報（ｔ２´）とを対応付けて格納する。続いて、遅延時間表示部は、全体遅延測定用入力側キューおよび全体遅延測定用出力側キューを参照し、全体遅延測定用入力側キューにパケットＩＤ０が格納されており、かつ、全体遅延測定用出力側キューにパケットＩＤ０が格納されていることを検出する（図１２の（Ａ）および図１７の（Ａ）参照）。
【００６１】
図１８は、遅延時間算出処理を説明するための図である。続いて、遅延時間表示部は、図１８の（Ａ）に示すように、全体遅延測定用入力側キューのパケットＩＤ０に対応する処理開始時間情報（ｔ１）から、全体遅延測定用出力側キューのパケットＩＤ０に対応する処理完了時間情報（ｔ２´）に至るまでのシミュレーション上の時間間隔である全体遅延量（α）を算出する。
【００６２】
図１９は、遅延時間表示部による処理を説明するための図である。そして、遅延時間表示部は、図１９に示すように、パケットＩＤ０と、機能ブロック＃１から受信した遅延量（機能ブロック＃１個別遅延（ａ））と、機能ブロック＃２から受信した遅延量（機能ブロック＃２個別遅延（ａ´））と、全体遅延量（α）とを対応付けて出力する。なお、遅延量（ａ）は、図６の「１」に相当し、遅延量（ａ´）は、図６の「２」に相当し、なお、遅延量（α）は、図６の「３」に相当する。
【００６３】
（１２）パケットデータ読み出し
データ受信モデルは、シミュレーションが実行されると、予め設定されている一定のシミュレーション時間が経過するごとに、暗号化処理後のデータをメモリモデルから読み出す。
【００６４】
以後、半導体モデルにおいて、パケットデータ＃２、＃３を読み出されたときに半導体モデルにおいて実行される処理を簡単に説明する。
【００６５】
（パケットデータ＃２）
（３）パケットデータ読み出し
メモリモデルからパケットデータ＃２を読み出すと、機能ブロック＃１は、パケット先頭検出処理を実行する。ここでは、機能ブロック＃１は、図１０の（Ｂ）に示すように、先頭識別子を検出しない。次に、機能ブロック＃１は、シミュレーション時間取得処理を実行する。ここでは、機能ブロック＃１は、図１３の（Ｂ）に示すように、ＩＤ別タイムスタンプリストのパケットＩＤ１と、処理開始時間情報（ｔ３）とを対応付けて格納する。
【００６６】
（４）パケットデータ処理
シミュレーション時間取得処理を実行した後、機能ブロック＃１は、パケットデータ処理を実行する。ここでは、機能ブロック＃１は、パケットデータ＃１を読み出したときと同様の処理を行う。
【００６７】
（５）実行ログによるアクセス
パケットデータ処理を実行した後、機能ブロック＃１は、負荷発生処理を実行する。ここでは、機能ブロック＃１は、パケットデータ＃１を読み出したときと同様の処理を行う。
【００６８】
（６）パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック＃１は、遅延時間算出処理を実行する。ここでは、機能ブロック＃１は、処理完了時間情報（ｔ４）を取得する。続いて、機能ブロック＃１は、ＩＤ別スタンプリストを確認し、パケットＩＤ１に対応する処理開始時間情報（ｔ３）を取得する。次に、機能ブロック＃１は、処理開始時間情報（ｔ３）から処理完了時間情報（ｔ４）に至るまでのシミュレーション上の時間間隔である差分値（ｔ４−ｔ３）を算出する。さらに、機能ブロック＃１は、ＩＤリストキューを参照し、ＩＤリストキューに格納されているパケットＩＤ１を取得する。
【００６９】
続いて、機能ブロック＃１は、機能ブロック＃１が有するＩＤ別個別遅延リストにおいて、取得したパケットＩＤに対応付けて格納されている遅延量に算出した差分値を足し合わせる。例えば、機能ブロック＃１は、図１５の（Ｂ）に示すように、パケットＩＤ１に対応付けて格納されている遅延量（ａ）に算出した差分値（ｔ４−ｔ３）を足し合わせる。
【００７０】
遅延時間算出処理を実行した後、機能ブロック＃１は、パケット終端検出処理を実行する。ここでは、機能ブロック＃１は、図１６の（Ｂ）に示すように、終端識別子を検出しない。パケット終端検出処理を実行した後、機能ブロック＃１は、バスモデルを経由させずにスクランブル処理後のパケットデータ＃２をメモリモデルに格納する。
【００７１】
（パケットデータ＃３）
（３）パケットデータ読み出し
メモリモデルからパケットデータ＃３を読み出すと、機能ブロック＃１は、パケット先頭検出処理を実行する。ここでは、機能ブロック＃１は、図１０の（Ｃ）に示すように、パケットデータ＃３の中からパケットＩＤ２の先頭識別子を検出し、パケットＩＤ２を取得する。そして、機能ブロック＃１は、図１１の（Ｃ）に示すように、ＩＤリストキューにパケットＩＤ２をプッシュする。
【００７２】
続いて、機能ブロック＃１は、パケットデータ＃３の中から検出したパケットＩＤ２と、メモリモデルからパケットデータを読み出したときのシミュレーション時間を示す処理開始時間情報（ｔ５）とを対応付けて遅延時間表示部に送信する。
【００７３】
ここで、遅延時間表示部は、図１２の（Ｃ）に示すように、全体遅延入力側キューに受信したパケットＩＤ２と、処理開始時間情報（ｔ５）とを対応付けてプッシュする。
【００７４】
パケット先頭検出処理を実行した後、機能ブロック＃１は、シミュレーション時間取得処理を実行する。ここでは、機能ブロック＃１は、図１３の（Ｃ）に示すように、ＩＤ別タイムスタンプリストのパケットＩＤ１、２と、処理開始時間情報（ｔ５）とを対応付けて格納する。
【００７５】
（４）パケットデータ処理
シミュレーション時間取得処理を実行した後、機能ブロック＃１は、パケットデータ処理を実行する。ここでは、機能ブロック＃１は、パケットデータ＃１を読み出したときと同様の処理を行う。
【００７６】
（５）実行ログによるアクセス
パケットデータ処理を実行した後、機能ブロック＃１は、負荷発生処理を実行する。ここでは、機能ブロック＃１は、パケットデータ＃１を読み出したときと同様の処理を行う。
【００７７】
（６）パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック＃１は、遅延時間算出処理を実行する。ここでは、機能ブロック＃１は、処理完了時間情報（ｔ６）を取得する。続いて、機能ブロック＃１は、ＩＤ別スタンプリストを確認し、パケットＩＤ１、２に対応する処理開始時間情報（ｔ５）を取得する。次に、機能ブロック＃１は、処理開始時間情報（ｔ５）から処理完了時間情報（ｔ６）に至るまでのシミュレーション上の時間間隔である差分値（ｔ６−ｔ５）を算出する。さらに、機能ブロック＃１は、ＩＤリストキューを参照し、ＩＤリストキューに格納されているパケットＩＤ１、２を取得する。
【００７８】
続いて、機能ブロック＃１は、機能ブロック＃１が有するＩＤ別個別遅延リストにおいて、取得したパケットＩＤに対応付けて格納されている遅延量に算出した差分値を足し合わせる。例えば、機能ブロック＃１は、図１５の（Ｃ）に示すように、パケットＩＤ１に対応付けて格納されている遅延量（ｂ）に算出した差分値（ｔ６−ｔ５）を足し合わせる。また、機能ブロック＃１は、図１５の（Ｃ）に示すように、パケットＩＤ２に対応付けて格納されている遅延量（０）に算出した差分値（ｔ６−ｔ５）を足し合わせる。
【００７９】
遅延時間算出処理を実行した後、機能ブロック＃１は、パケット終端検出処理を実行する。ここでは、機能ブロック＃１は、図１６の（Ｃ）に示すように、パケットデータ＃３の中からパケットＩＤ１、２の終端識別子を検出し、パケットＩＤ１、２を取得する。
【００８０】
続いて、機能ブロック＃１は、ＩＤ別個別遅延リスト参照し、パケットＩＤ１、２に対応する遅延量（ｂ、ｃ）を読み出し、パケットＩＤ１、２と、遅延量（ｂ、ｃ）とを対応付けて遅延時間表示部に対して送信する。さらに、機能ブロック＃１は、図１１の（Ｄ）に示すように、ＩＤリストキューからパケットＩＤ１、２をポップする。
【００８１】
（１１）パケットデータ書き込み
負荷発生処理を実行した後、機能ブロック＃２は、遅延時間算出処理を実行する。ここで、遅延時間算出処理は、処理完了時間情報（ｔ６´）を取得し、パケットＩＤ１、２と、処理完了時間情報（ｔ６´）とを対応付けて遅延時間表示部に対して送信する。
【００８２】
ここで、遅延時間表示部は、図１７の（Ｃ）に示すように、遅延時間表示部が有する全体遅延測定用出力側キューに、パケットＩＤ１、２と、処理完了時間情報（ｔ６´）とを対応付けて格納する。続いて、遅延時間表示部は、全体遅延測定用入力側キューおよび全体遅延測定用出力側キューを参照し、全体遅延測定用入力側キューにパケットＩＤ０が格納されており、かつ、全体遅延測定用出力側キューにパケットＩＤ１、２が格納されていることを検出する（図１２の（Ｃ）および図１７の（Ｃ）参照）。
【００８３】
続いて、遅延時間表示部は、図１８の（Ｂ）に示すように、全体遅延測定用入力側キューのパケットＩＤ０に対応する処理開始時間情報（ｔ１）から、全体遅延測定用出力側キューのパケットＩＤ０に対応する処理完了時間情報（ｔ６´）に至るまでのシミュレーション上の時間間隔である全体遅延量（β）を算出する。また、遅延時間表示部は、図１８の（Ｂ）に示すように、全体遅延測定用入力側キューのパケットＩＤ０に対応する処理開始時間情報（ｔ５）から、全体遅延測定用出力側キューのパケットＩＤ０に対応する処理完了時間情報（ｔ６´）に至るまでのシミュレーション上の時間間隔である全体遅延量（γ）を算出する。
【００８４】
そして、遅延時間表示部は、図１９に示すように、パケットＩＤ１と、機能ブロック＃１から受信した遅延量（機能ブロック＃１個別遅延（ｃ））と、機能ブロック＃２から受信した遅延量（機能ブロック＃２個別遅延（ｃ´））と、全体遅延量（β）とを対応付けて出力する。また、遅延時間表示部は、パケットＩＤ２と、機能ブロック＃１から受信した遅延量（機能ブロック＃１個別遅延（ｄ））と、機能ブロック＃２から受信した遅延量（機能ブロック＃２個別遅延（ｄ´））と、全体遅延量（γ）とを対応付けて出力する。
【００８５】
［実施例１の効果］
上記したように、実施例１によれば、精度の良いレイテンシが算出できるので、開発中の半導体装置について精度良く性能を評価することが可能である。
【００８６】
例えば、実施例１によれば、機能ブロックによってパケットデータが読み出されてから、その機能ブロックによってデータ処理後のパケットデータが書き込まれるまでの時間である機能ブロックごとのレイテンシ（機能ブロック個別遅延）を精度良く算出することが可能である。
【００８７】
また、実施例１によれば、最初のデータ処理を実行する機能ブロックによってパケットデータが読み出されてから、最後のデータ処理を実行する機能ブロックによってデータ処理後のパケットデータが書き込まれるまでの時間であるプロセッサのレイテンシ（全体遅延）を精度良く算出することが可能である。言い換えると、所定の機能ブロックによってデータ処理されたパケットデータがメモリに格納されてから、次のデータ処理を実行する機能ブロックによって読み出されるまでの間の時間であるメモリ滞在時間を含む、レイテンシを精度良く算出することが可能である。
【００８８】
また、実施例１によれば、各パケットについてのレイテンシ（例えば、パケットＩＤ０に対応する機能ブロック個別遅延および全体遅延）を精度良く算出することが可能である。
【００８９】
また、実施例１によれば、複数回に分けてデータ処理されたパケットのレイテンシ（例えば、パケットＩＤ１に対応する機能ブロック個別遅延および全体遅延）を精度良く算出することが可能である。
【実施例２】
【００９０】
以下、他の実施形態について説明する。
【００９１】
（１）装置構成等
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報（例えば、図１４などに示したパラメータ）については、特記する場合を除いて任意に変更することができる。
【００９２】
また、図２に示した、シミュレーション装置１の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、シミュレーション装置１の分散・統合の具体的形態は図２に示すものに限られず、モデル生成部４１と、モデル制御部４２とを統合するなど、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成できる。
【００９３】
さらに、シミュレーション装置１にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９４】
（２）シミュレーションプログラム
また、上記の実施例１で説明したシミュレーション装置１の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。
【００９５】
そこで、以下では、図２０を用いて、上記の実施例１で説明したシミュレーション装置１と同様の機能を有するシミュレーションプログラムを実行するコンピュータの一例を説明する。図２０は、シミュレーションプログラムを実行するコンピュータを示す図である。
【００９６】
図２０に示すように、コンピュータ１１０は、入力部１２０、出力部１７０、ＨＤＤ１５０、ＲＯＭ１３０、ＲＡＭ１６０およびＣＰＵ１４０をバス１８０で接続して構成される。なお、図示は省略するが、他の装置とのやり取りされる情報に関する通信を制御する通信制御部なども有する。
【００９７】
ここで、入力部１２０は、ユーザから各種データの入力を受け付ける。出力部１７０は、各種情報を表示する。ＨＤＤ１５０は、ＣＰＵ１４０による各種処理の実行に必要な情報を記憶する。ＲＯＭ１３０は、各種情報を長期的に記憶する。ＲＡＭ１６０は、各種情報を一時的に記憶する。ＣＰＵ１４０は、各種処理を実行する。
【００９８】
そして、ＲＯＭ１３０には、図２０に示すように、上記の実施例１に示したシミュレーション装置１の各処理部と同様の機能を発揮するモデル生成プログラム１３１と、モデル制御プログラム１３２と、時間算出プログラム１３３とがあらかじめ記憶されている。なお、プログラム１３１〜１３３を適宜分散させて、ネットワークを介して通信可能に接続された他のコンピュータの記憶部に記憶させておくこともできる。
【００９９】
そして、ＣＰＵ１４０が、プログラム１３１〜１３３をＨＤＤ１５０から読み出してＲＡＭ１６０に展開することにより、図２０に示すように、プログラム１３１〜１３３はモデル生成プロセス１４１と、モデル制御プロセス１４２と、時間算出プロセス１４３として機能するようになる。
【０１００】
そして、プロセス１４１〜１４３は、実行ログデータテーブル１５１等をＨＤＤ１５０から読み出して、ＲＡＭ１６０において自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種処理を実行する。
【０１０１】
なお、プロセス１４１〜１４３は、図２に示したシミュレーション装置１のモデル生成部４１、モデル制御部４２および時間算出部４３において実行される処理にそれぞれ対応する。
【０１０２】
なお、上記した各プログラム１３１〜プログラム１３３については、必ずしも最初からＲＯＭ１３０に記憶させておく必要はなく、例えば、コンピュータ１１０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、またはコンピュータ１１０の内外に備えられるＨＤＤなどの「固定用の物理媒体」、さらには公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１１０に接続される「他のコンピュータ（またはサーバ）」などに各プログラムを記憶させておき、コンピュータ１１０がこれから各プログラムを読み出して実行するようにしてもよい。
【図面の簡単な説明】
【０１０３】
【図１】実施例１に係るシミュレーション装置の概要を説明するための図である。
【図２】シミュレーション装置の構成を示すブロック図である。
【図３】処理選択テーブル記憶部に記憶される情報の一例を示した図である。
【図４】半導体モデルの一例を示した図である。
【図５】シミュレーション装置による処理の流れを示すフローチャート図である。
【図６】シミュレーション時間と、各モデルによる処理の関係を示した図である。
【図７】パケットのフォーマットを示す図である。
【図８】パケットデータ読み出し処理を説明するための図である。
【図９】機能ブロックにおける処理の流れを示した図である。
【図１０】パケットデータ読み出し処理を説明するための図である。
【図１１】ＩＤリストキューを示した図である。
【図１２】全体遅延入力側キューを示した図である。
【図１３】ＩＤ別タイムスタンプリストを示した図である。
【図１４】負荷発生処理を説明するための図である。
【図１５】ＩＤ別個別遅延リストを示した図である。
【図１６】パケット終端検出処理を説明するための図である。
【図１７】全体遅延測定用出力側キューを示した図である。
【図１８】遅延時間算出処理を説明するための図である。
【図１９】遅延時間表示部による処理を説明するための図である。
【図２０】シミュレーションプログラムを実行するコンピュータを示す図である。
【符号の説明】
【０１０４】
１  シミュレーション装置
１０  入力部
２０  出力部
３０  記憶部
３１  実行ログ記憶部
３２  処理選択テーブル記憶部
３３  パラメータ記憶部
３４  モデルデータ記憶部
４０  シミュレーション実行部
４１  モデル生成部
４２  モデル制御部
４３  時間算出部
１１０  コンピュータ
１２０  入力部
１３０  ＲＯＭ（Read Only Memory）
１３１  モデル生成プログラム
１３２  モデル制御プログラム
１３３  時間算出プログラム
１４０  ＣＰＵ（Central Processing Unit）
１４１  モデル生成プロセス
１４２  モデル制御プロセス
１４３  時間算出プロセス
１５０  ＨＤＤ（Hard Disk Drive）
１５１  実行ログデータテーブル
１５２  処理選択テーブル
１５３  パラメータデータテーブル
１５４  モデルデータテーブル
１６０  ＲＡＭ（Random Access Memory）
１６１  実行ログデータ
１６２  処理選択データ
１６３  パラメータデータ
１６４  モデルデータ
１７０  出力部
１８０  バス
【図１】
2010146194.tif 000003
【図２】
2010146194.tif 000004
【図３】
2010146194.tif 000005
【図４】
2010146194.tif 000006
【図５】
2010146194.tif 000007
【図６】
2010146194.tif 000008
【図７】
2010146194.tif 000009
【図８】
2010146194.tif 000010
【図９】
2010146194.tif 000011
【図１０】
2010146194.tif 000012
【図１１】
2010146194.tif 000013
【図１２】
2010146194.tif 000014
【図１３】
2010146194.tif 000015
【図１４】
2010146194.tif 000016
【図１５】
2010146194.tif 000017
【図１６】
2010146194.tif 000018
【図１７】
2010146194.tif 000019
【図１８】
2010146194.tif 000020
【図１９】
2010146194.tif 000021
【図２０】
2010146194.tif 000022