(57)【要約】【課題】ソフトウェアの作成負荷を軽くすることができるとともに、十分な検証結果が得られるシミュレーションを高速に実行することができるようにする。【解決手段】書込完了タイミングｔｅの時点においてバッファ２に蓄積されているデータの実バッファ量Ｒを算出するとともに、読出完了タイミングｔｆの時点においてバッファ２に蓄積されているデータの実バッファ量Ｒを算出するバッファ状態管理ブロック２４を設け、何れかの実バッファ量Ｒがバッファ２の容量Ｌを超えている場合、オーバーフローの発生を認定する。【選択図】図１
2010182140.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーション対象の通信回路に実装されているバッファに書き込まれるフレーム単位のデータの書込開始タイミング及び書込フレーム長を記憶し、上記データの書込開始タイミング及び書込フレーム長と上記バッファのデータ書込速度から、上記データの書込完了タイミングを算出する書込完了タイミング算出手段と、上記バッファから読み出されるフレーム単位のデータの読出開始タイミング及び読出フレーム長を記憶し、上記データの読出開始タイミング及び読出フレーム長と上記バッファのデータ読出速度から、上記データの読出完了タイミングを算出する読出完了タイミング算出手段と、上記書込完了タイミング算出手段により算出された書込完了タイミングの時点において上記バッファに蓄積されているデータのバッファ量を算出するとともに、上記読出完了タイミング算出手段により算出された読出完了タイミングの時点において上記バッファに蓄積されているデータのバッファ量を算出するバッファ量算出手段と、上記バッファ量算出手段により算出された何れかのバッファ量が上記バッファの容量を超えている場合、オーバーフローの発生を認定するオーバーフロー検出手段とを備えたシミュレーション装置。
【請求項２】
オーバーフロー検出手段は、オーバーフローの発生を認定すると、バッファからデータが読み出されている途中でなければ、上記バッファのデータ書込速度を考慮して、オーバーフローが発生した時点を算出し、上記バッファからデータが読み出されている途中であれば、上記バッファのデータ書込速度及びデータ読出速度を考慮して、オーバーフローが発生した時点を算出することを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
シミュレーション対象の通信回路に実装されているバッファに書き込まれるフレーム単位のデータの書込開始タイミング及び書込フレーム長を記憶し、上記データの書込開始タイミング及び書込フレーム長と上記バッファのデータ書込速度から、上記データの書込完了タイミングを算出する書込完了タイミング算出手段と、上記バッファから読み出されるフレーム単位のデータの読出開始タイミング及び読出フレーム長を記憶し、上記データの読出開始タイミング及び読出フレーム長と上記バッファのデータ読出速度から、上記データの読出完了タイミングを算出する読出完了タイミング算出手段と、上記書込完了タイミング算出手段により算出された書込完了タイミングの時点において上記バッファに蓄積されているデータのバッファ量を算出するとともに、上記読出完了タイミング算出手段により算出された読出完了タイミングの時点において上記バッファに蓄積されているデータのバッファ量を算出するバッファ量算出手段と、上記バッファ量算出手段により算出された何れかのバッファ量が負値になる場合、アンダーフローの発生を認定するアンダーフロー検出手段とを備えたシミュレーション装置。
【請求項４】
アンダーフロー検出手段は、アンダーフローの発生を認定すると、バッファにデータが書き込まれている途中でなければ、上記バッファのデータ読出速度を考慮して、アンダーフローが発生した時点を算出し、上記バッファにデータが書き込まれている途中であれば、上記バッファのデータ読出速度及びデータ書込速度を考慮して、アンダーフローが発生した時点を算出することを特徴とする請求項３記載のシミュレーション装置。
【請求項５】
シミュレーション対象の通信回路に実装されているバッファに書き込まれるフレーム単位のデータの書込開始タイミング及び書込フレーム長を記憶し、上記データの書込開始タイミング及び書込フレーム長と上記バッファのデータ書込速度から、上記データの書込完了タイミングを算出する書込完了タイミング算出手段と、上記バッファから読み出されるフレーム単位のデータの読出開始タイミング及び読出フレーム長を記憶し、上記データの読出開始タイミング及び読出フレーム長と上記バッファのデータ読出速度から、上記データの読出完了タイミングを算出する読出完了タイミング算出手段と、上記書込完了タイミング算出手段により算出された書込完了タイミングの時点において上記バッファに蓄積されているデータのバッファ量を算出するとともに、上記読出完了タイミング算出手段により算出された読出完了タイミングの時点において上記バッファに蓄積されているデータのバッファ量を算出するバッファ量算出手段と、上記バッファ量算出手段により算出された何れかのバッファ量が、オールモストフルに関する閾値を超えている場合、オールモストフルの発生を認定するオールモストフル検出手段とを備えたシミュレーション装置。
【請求項６】
オールモストフル検出手段は、オールモストフルの発生を認定すると、バッファからデータが読み出されている途中でなければ、上記バッファのデータ書込速度を考慮して、オールモストフルが発生した時点を算出し、上記バッファからデータが読み出されている途中であれば、上記バッファのデータ書込速度及びデータ読出速度を考慮して、オールモストフルが発生した時点を算出することを特徴とする請求項５記載のシミュレーション装置。
【請求項７】
シミュレーション対象の通信回路に実装されているバッファに書き込まれるフレーム単位のデータの書込開始タイミング及び書込フレーム長を記憶し、上記データの書込開始タイミング及び書込フレーム長と上記バッファのデータ書込速度から、上記データの書込完了タイミングを算出する書込完了タイミング算出手段と、上記バッファから読み出されるフレーム単位のデータの読出開始タイミング及び読出フレーム長を記憶し、上記データの読出開始タイミング及び読出フレーム長と上記バッファのデータ読出速度から、上記データの読出完了タイミングを算出する読出完了タイミング算出手段と、上記書込完了タイミング算出手段により算出された書込完了タイミングの時点において上記バッファに蓄積されているデータのバッファ量を算出するとともに、上記読出完了タイミング算出手段により算出された読出完了タイミングの時点において上記バッファに蓄積されているデータのバッファ量を算出するバッファ量算出手段と、上記バッファ量算出手段により算出された何れかのバッファ量が、オールモストエンプティに関する閾値に満たない場合、オールモストエンプティの発生を認定するオールモストエンプティ検出手段とを備えたシミュレーション装置。
【請求項８】
オールモストエンプティ検出手段は、オールモストエンプティの発生を認定すると、バッファにデータが書き込まれている途中でなければ、上記バッファのデータ読出速度を考慮して、オールモストエンプティが発生した時点を算出し、上記バッファにデータが書き込まれている途中であれば、上記バッファのデータ読出速度及びデータ書込速度を考慮して、オールモストエンプティが発生した時点を算出することを特徴とする請求項７記載のシミュレーション装置。
【請求項９】
書込完了タイミング算出手段は、バッファ量算出手段により算出されたバッファ量がバッファの容量を超えている場合、データの書込開始タイミング、書込フレーム長及び書込完了タイミングを廃棄することを特徴とする請求項１から請求項８のうちのいずれか１項記載のシミュレーション装置。
【請求項１０】
バッファに書き込まれるフレーム単位のデータをデータ配列の形式で記憶するデータ記憶手段を設けたことを特徴とする請求項１から請求項９のうちのいずれか１項記載のシミュレーション装置。
【請求項１１】
データ記憶手段は、バッファの容量より大きい記憶領域を備え、上記バッファに書き込まれるフレーム単位のデータの書込開始タイミングと一致するタイミングで、上記データをデータ配列の最後に記録することを特徴とする請求項１０記載のシミュレーション装置。
【請求項１２】
データ記憶手段は、読出完了タイミング算出手段により算出された読出完了タイミングの時点になると、データ配列の先頭から読出フレーム長分のデータを出力して、上記データを削除することを特徴とする請求項９または請求項１０記載のシミュレーション装置。
【請求項１３】
データ記憶手段は、バッファ量算出手段により算出されたバッファ量がバッファの容量を超えている場合、記録中の書込フレーム長分の最後のデータを削除することを特徴とする請求項１０から請求項１２のうちのいずれか１項記載のシミュレーション装置。
【請求項１４】
データ記憶手段により記憶されているフレーム単位のデータを読み出すデータ読出手段を設けたことを特徴とする請求項１０から請求項１３のうちのいずれか１項記載のシミュレーション装置。
【請求項１５】
データ記憶手段は、バッファに書き込まれるフレーム単位のデータの値と、上記データのフレーム長を示すフレーム情報とをセットにして記憶することを特徴とする請求項１４記載のシミュレーション装置。
【請求項１６】
バッファに書き込まれるフレーム単位のデータの書込開始タイミングで、上記データの値とフレーム情報をデータ記憶手段に出力するデータ書込手段を設けたことを特徴とする請求項１５記載のシミュレーション装置。
【請求項１７】
データ読出手段は、バッファから読み出されるフレーム単位のデータの読出開始タイミングで、データ記憶手段から上記データの値とフレーム情報を読み出すことを特徴とする請求項１５または請求項１６記載のシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、バッファが実装されている通信回路をシミュレーションするシミュレーション装置に関するものである。
【背景技術】
【０００２】
例えば、バッファが実装されている通信回路などのハードウェアの論理検証を行う場合、そのハードウェアと同じ動作を行うソフトウェアを作成し、そのハードウェアに入力されるデータと同じデータをソフトウェアに与えて、そのハードウェアとソフトウェアの出力を照合する手法が用いられることがある（例えば、特許文献１を参照）。
また、ハードウェアで期待通りの性能が得られるか否かを確認する目的で、そのハードウェアと同じ機能を有するソフトウェアを作成し、そのソフトウェアの動作を検証することもある。
【０００３】
ただし、バッファが実装されている通信回路をソフトウェアで模擬することで、そのバッファにおけるオーバーフローやアンダーフローを検出して、そのオーバーフローやアンダーフローが発生するタイミングを判定するには、クロック単位のデータの書込動作と読出動作を記述して、クロック毎にシミュレーションを実行する必要がある。
しかし、ソフトウェアでは、クロック単位のデータの書込動作や読出動作の記述が難しいため、ソフトウェアの作成負荷が高く、シミュレーションの実行も高速に行うことができない。
【０００４】
その解決法として、検証対象のバッファが状態出力機能を備え、この出力情報の中にあるバッファ量と入力を監視して、バッファ量がフルの状態で入力が発生したらオーバーフローと判定し、バッファの出力と照合することで検証を行うシミュレーション装置が以下の特許文献２に開示されている。
このシミュレーション装置の場合、クロック毎に実行する処理が簡易であるため、ソフトウェアの作成負荷が軽くなり、シミュレーションの実行も、さほど低速にならずに済んでいる。
ただし、このシミュレーション装置の場合、検証対象であるバッファの出力で判定を行っているため、そのバッファの出力が正常であるか否かを別途検証する必要があり、バッファの出力が正常であるか否かを別途検証しなければ、十分な検証結果を得ることができない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−１４１４１４号公報（段落番号［００１４］から［００２９］、図１）
【特許文献２】特開２００４−１３３５２５号公報（段落番号［００４８］から［００５１］、図１４）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のシミュレーション装置は以上のように構成されているので、検証対象であるバッファの出力で判定を行うようにすれば、ソフトウェアの作成負荷が軽くなり、シミュレーションの実行速度を高めることができる。しかし、バッファの出力が正常であるか否かを別途検証しなければ、十分なシミュレーション結果を得ることができないなどの課題があった。
【０００７】
この発明は上記のような課題を解決するためになされたもので、ソフトウェアの作成負荷を軽くすることができるとともに、十分な検証結果が得られるシミュレーションを高速に実行することができるシミュレーション装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
この発明に係るシミュレーション装置は、バッファに書き込まれるフレーム単位のデータの書込開始タイミング及び書込フレーム長とバッファのデータ書込速度から、そのデータの書込完了タイミングを算出する書込完了タイミング算出手段と、そのバッファから読み出されるフレーム単位のデータの読出開始タイミング及び読出フレーム長とバッファのデータ読出速度から、そのデータの読出完了タイミングを算出する読出完了タイミング算出手段と、書込完了タイミング算出手段により算出された書込完了タイミングの時点においてバッファに蓄積されているデータのバッファ量を算出するとともに、読出完了タイミング算出手段により算出された読出完了タイミングの時点においてバッファに蓄積されているデータのバッファ量を算出するバッファ量算出手段とを設け、オーバーフロー検出手段がバッファ量算出手段により算出された何れかのバッファ量がバッファの容量を超えている場合、オーバーフローの発生を認定するようにしたものである。
【発明の効果】
【０００９】
この発明によれば、バッファに書き込まれるフレーム単位のデータの書込開始タイミング及び書込フレーム長とバッファのデータ書込速度から、そのデータの書込完了タイミングを算出する書込完了タイミング算出手段と、そのバッファから読み出されるフレーム単位のデータの読出開始タイミング及び読出フレーム長とバッファのデータ読出速度から、そのデータの読出完了タイミングを算出する読出完了タイミング算出手段と、書込完了タイミング算出手段により算出された書込完了タイミングの時点においてバッファに蓄積されているデータのバッファ量を算出するとともに、読出完了タイミング算出手段により算出された読出完了タイミングの時点においてバッファに蓄積されているデータのバッファ量を算出するバッファ量算出手段とを設け、オーバーフロー検出手段がバッファ量算出手段により算出された何れかのバッファ量がバッファの容量を超えている場合、オーバーフローの発生を認定するように構成したので、ソフトウェアの作成負荷を軽くすることができるとともに、十分な検証結果が得られるシミュレーションを高速に実行することができる効果がある。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１によるシミュレーション装置のシミュレーション対象である通信回路を示す構成図である。
【図２】この発明の実施の形態１によるシミュレーション装置を示す構成図である。
【図３】入力フレームの一例を示す説明図である。
【図４】図３の入力フレームを受け取る場合のバッファ処理ブロック１２内の情報を示す説明図である。
【図５】データ配列ブロック２１におけるデータ配列を示す説明図である。
【図６】アンダーフロー動作時における３〜２８クロックのデータ配列状態を示す説明図である。
【図７】オーバーフロー動作時における５０〜６８クロックのデータ配列状態を示す説明図である。
【図８】この発明の実施の形態２によるシミュレーション装置のシミュレーション対象である通信回路を示す構成図である。
【図９】この発明の実施の形態２によるシミュレーション装置を示す構成図である。
【図１０】図３の入力フレームを受け取る場合のバッファ処理ブロック１２内の情報を示す説明図である。
【図１１】データ配列ブロック２５におけるデータ配列を示す説明図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１はこの発明の実施の形態１によるシミュレーション装置のシミュレーション対象である通信回路を示す構成図である。
図１において、入力回路１はデータを入力して、そのデータをバッファ２に格納する回路である。
バッファ２はバッファ制御回路３の制御の下、ＦＩＦＯとして機能するメモリである。
【００１２】
バッファ制御回路３はアクセス毎にライトアドレス及びリードアドレスをインクリメントすることで、入力回路１から出力されたデータをバッファ２に順番に書き込ませるとともに、先に書き込まれたデータから順番に出力させる処理を実施する。
また、バッファ制御回路３はライトアドレスとリードアドレスの位置関係から、オーバーフロー、アンダーフロー、オールモストエンプティ及びオールモストフルを検出する処理を実施する。
出力回路４はバッファ２に書き込まれているデータを読み出して、そのデータを出力する回路である。
【００１３】
図２はこの発明の実施の形態１によるシミュレーション装置を示す構成図である。
図２において、書込処理ブロック１１はフレーム単位に動作するソフトウェア・モデルであって、入力回路１と同じ動作を行うブロックである。
バッファ処理ブロック１２はフレーム単位に動作するソフトウェア・モデルであって、バッファ２及びバッファ制御回路３を合わせた機能を有するブロックである。
読出処理ブロック１３はフレーム単位に動作するソフトウェア・モデルであって、出力回路４と同じ動作を行うブロックである。
【００１４】
データ配列ブロック２１は通信回路のメモリであるバッファ２に書き込まれるフレーム単位のデータをデータ配列の形式で記憶する記憶領域である。なお、データ配列ブロック２１はデータ記憶手段を構成している。
書込情報管理ブロック２２はバッファ２に書き込まれるフレーム単位のデータの書込開始タイミング及び書込フレーム長を記憶し、そのデータの書込開始タイミング及び書込フレーム長とバッファ２のデータ書込速度から、そのデータの書込完了タイミングを算出する処理を実施する。なお、書込情報管理ブロック２２は書込完了タイミング算出手段を構成している。
【００１５】
読出情報管理ブロック２３はバッファ２から読み出されるフレーム単位のデータの読出開始タイミング及び読出フレーム長を記憶し、そのデータの読出開始タイミング及び読出フレーム長とバッファ２のデータ読出速度から、そのデータの読出完了タイミングを算出する処理を実施する。なお、読出情報管理ブロック２３は読出完了タイミング算出手段を構成している。
バッファ状態管理ブロック２４は書込情報管理ブロック２２により算出された書込完了タイミングの時点においてバッファ２に蓄積されているデータのバッファ量を算出するとともに、読出情報管理ブロック２３により算出された読出完了タイミングの時点においてバッファ２に蓄積されているデータのバッファ量を算出する処理を実施する。なお、バッファ状態管理ブロック２４はバッファ量算出手段を構成している。
【００１６】
また、バッファ状態管理ブロック２４は算出した何れかのバッファ量がバッファ２の容量を超えている場合、オーバーフローの発生を認定し、何れかのバッファ量が負値になる場合、アンダーフローの発生を認定する。また、何れかのバッファ量がオールモストフルに関する閾値を超えている場合、オールモストフルの発生を認定し、何れかのバッファ量がオールモストエンプティに関する閾値に満たない場合、オールモストエンプティの発生を認定する処理を実施する。
バッファ状態管理ブロック２４は、オーバーフローが発生したときに、その回路の仕様に応じて、オーバーフローしたフレームを削除することが可能である。
また、アンダーフローが発生したときには、固定値の書き込みを行うことが可能である。
なお、バッファ状態管理ブロック２４はオーバーフロー検出手段、アンダーフロー検出手段、オールモストフル検出手段及びオールモストエンプティ検出手段を構成している。
【００１７】
この実施の形態１では、図２のシミュレーション装置がコンピュータで構成されるものを想定しており、シミュレーション装置の構成要素であるデータ配列ブロック２１は、ハードウェア資源として当該コンピュータのメモリが用いられる。
また、シミュレーション装置の構成要素である書込処理ブロック１１、読出処理ブロック１３、書込情報管理ブロック２２、読出情報管理ブロック２３及びバッファ状態管理ブロック２４は、ハードウェア資源として当該コンピュータのＣＰＵが用いられる。
なお、書込処理ブロック１１、読出処理ブロック１３、書込情報管理ブロック２２、読出情報管理ブロック２３及びバッファ状態管理ブロック２４の動作を記述しているプログラム（ソフトウェア・モデル）は、事前に当該コンピュータのメモリに格納されており、当該コンピュータのＣＰＵが当該プログラムを実行することにより、書込処理ブロック１１、読出処理ブロック１３、書込情報管理ブロック２２、読出情報管理ブロック２３及びバッファ状態管理ブロック２４を実現するものとする。
【００１８】
次に動作について説明する。
まず、書込処理ブロック１１は、入力回路１と同じ動作を再現するものであり、入力回路１がデータをバッファ２に書き込むタイミングに合わせて、そのデータと同じデータをバッファ処理ブロック１２のデータ配列ブロック２１に書き込む処理を実施する。
ここで、書込処理ブロック１１におけるデータの書込タイミングや書込量は、シミュレーション対象の処理系によって異なるが、この実施の形態１では、一般化して、データの書込開始タイミングをｔｗ1，ｔｗ2，・・・，ｔｗnとし、データの書込フレーム長（書込量）をｌｗ1，ｌｗ2，・・・，ｌｗnとする。
なお、バッファ２が単位時間当り“α”のデータ量を書き込めるバッファである場合、下式が成立する。
ｔｗa+1≧ｔｗa＋ｌｗa／α      （１≦ａ≦ｎ−１）
【００１９】
読出処理ブロック１３は、出力回路４と同じ動作を再現するものであり、出力回路４がバッファ２からデータを読み出すタイミングに合わせて、バッファ処理ブロック１２のデータ配列ブロック２１から上記データと同じデータを読み出す処理を実施する。
ここで、読出処理ブロック１３におけるデータの読出タイミングや読出量は、シミュレーション対象の処理系によって異なるが、この実施の形態１では、一般化して、データの読出開始タイミングをｔｒ1，ｔｒ2，・・・，ｔｒnとし、データの読出フレーム長（読出量）をｌｒ1，ｌｒ2，・・・，ｌｒnとする。
なお、バッファ２が単位時間当り“β”のデータ量を読み出せるバッファである場合、下式が成立する。
ｔｒb+1≧ｔｒb＋ｌｒb／β      （１≦ｂ≦ｎ−１）
【００２０】
書込情報管理ブロック２２は、バッファ２に書き込まれるフレーム単位のデータの書込開始タイミングｔｗ1，ｔｗ2，・・・，ｔｗn及び書込フレーム長ｌｗ1，ｌｗ2，・・・，ｌｗnを記憶しており、そのデータの書込開始タイミングｔｗ1，ｔｗ2，・・・，ｔｗn及び書込フレーム長ｌｗ1，ｌｗ2，・・・，ｌｗnとバッファ２のデータ書込速度αから、そのデータの書込完了タイミングｔｅを算出する。
例えば、ａ個目のフレームを書き込み途中の時点ｔ（ｔｗa≦ｔ≦ｔｗa＋ｌｗa／α）では、下記に示すように、書込開始タイミングｔｗaと書込フレーム長ｌｗaとデータ書込速度αから、データの書込完了タイミングｔｅを算出する。
ｔｅ＝ｔｗa＋ｌｗa／α
【００２１】
読出情報管理ブロック２３は、バッファ２から読み出されるフレーム単位のデータの読出開始タイミングｔｒ1，ｔｒ2，・・・，ｔｒn及び読出フレーム長ｌｒ1，ｌｒ2，・・・，ｌｒnを記憶しており、そのデータの読出開始タイミングｔｒ1，ｔｒ2，・・・，ｔｒn及び読出フレーム長ｌｒ1，ｌｒ2，・・・，ｌｒnとバッファ２のデータ読出速度βから、そのデータの読出完了タイミングｔｆを算出する。
例えば、ｂ個目のフレームを読み出し途中の時点ｔ（ｔｒb≦ｔ≦ｔｒb＋ｌｒb／β）では、下記に示すように、読出開始タイミングｔｒbと読出フレーム長ｌｒbとデータ書込速度βから、データの読出完了タイミングｔｆを算出する。
ｔｆ＝ｔｒb＋ｌｒb／β
【００２２】
バッファ状態管理ブロック２４は、書込情報管理ブロック２２がデータの書込完了タイミングｔｅを算出すると、その書込完了タイミングｔｅの時点において、バッファ２に蓄積されているデータのバッファ量Ｒ（以降、「実バッファ量Ｒ」と称する）を算出する。
即ち、バッファ状態管理ブロック２４は、現在の時刻が書込完了タイミングｔｅの時刻に到達すると、出力回路４がバッファ２からデータを読み出している途中でなければ、下記に示すように、フレーム単位の仮想バッファ量Ｒｅ（フレーム単位のデータの前回の書込処理又は読出処理が完了している時点のバッファ量）と書込フレーム長ｌｗから、実バッファ量Ｒを算出する。
Ｒ＝Ｒｅ＋ｌｗ
バッファ状態管理ブロック２４は、出力回路４がバッファ２からデータを読み出している途中であれば、下記に示すように、フレーム単位の仮想バッファ量Ｒｅ、書込フレーム長ｌｗ、書込完了タイミングｔｅ、読出開始タイミングｔｒ及びデータ読出速度βから、実バッファ量Ｒを算出する。
Ｒ＝Ｒｅ＋ｌｗ−（ｔｅ−ｔｒ）×β
【００２３】
バッファ状態管理ブロック２４は、上記のようにして、実バッファ量Ｒを算出すると、その実バッファ量Ｒとバッファ２の容量Ｌを比較する。
バッファ状態管理ブロック２４は、実バッファ量Ｒがバッファ２の容量Ｌを超える場合（Ｒ＞Ｌ）、オーバーフローの発生を認定し、データ配列ブロック２１に書き込まれた当該フレームのデータを廃棄する。
また、バッファ状態管理ブロック２４は、実バッファ量Ｒが負値（Ｒ＜０）となる場合、アンダーフローの発生を認定する。
【００２４】
さらに、バッファ状態管理ブロック２４は、実バッファ量Ｒと予め設定されたオールモストフル閾値Ｌｆ（０＜Ｌｆ＜Ｌ）を比較し、実バッファ量Ｒがオールモストフル閾値Ｌｆを超える場合（Ｒ＞Ｌｆ）、オールモストフルの発生を認定する。
また、バッファ状態管理ブロック２４は、実バッファ量Ｒと予め設定されたオールモストエンプティ閾値Ｌｅ（０＜Ｌｅ＜Ｌｆ）を比較し、実バッファ量Ｒがオールモストエンプティ閾値Ｌｅに満たない場合（Ｒ＜Ｌｅ）、オールモストエンプティの発生を認定する。
なお、バッファ状態管理ブロック２４は、オーバーフローが発生していない場合、フレーム単位の仮想バッファ量Ｒｅを“Ｒｅ＋ｌｗ”に更新する。
【００２５】
バッファ状態管理ブロック２４は、読出情報管理ブロック２３がデータの読出完了タイミングｔｆを算出すると、書込情報管理ブロック２２がデータの書込完了タイミングｔｅを算出した場合と同様に、その読出完了タイミングｔｆの時点において、バッファ２に蓄積されているデータの実バッファ量Ｒを算出する。
即ち、バッファ状態管理ブロック２４は、現在の時刻が読出完了タイミングｔｆの時刻に到達すると、入力回路１がデータをバッファ２に書き込んでいる途中でなければ、下記に示すように、フレーム単位の仮想バッファ量Ｒｅと読出フレーム長ｌｒから、実バッファ量Ｒを算出する。
Ｒ＝Ｒｅ−ｌｒ
バッファ状態管理ブロック２４は、入力回路１がデータをバッファ２に書き込んでいる途中であれば、下記に示すように、フレーム単位の仮想バッファ量Ｒｅ、読出フレーム長ｌｒ、読出開始タイミングｔｒ、書込開始タイミングｔｗ及びデータ書込速度αから、実バッファ量Ｒを算出する。
Ｒ＝Ｒｅ−ｌｒ＋（ｔｆ−ｔｗ）×α
【００２６】
バッファ状態管理ブロック２４は、上記のようにして、実バッファ量Ｒを算出すると、その実バッファ量Ｒとバッファ２の容量Ｌを比較する。
バッファ状態管理部２４は、実バッファ量Ｒがバッファ２の容量Ｌを超える場合（Ｒ＞Ｌ）、オーバーフローの発生を認定する。
また、バッファ状態管理ブロック２４は、実バッファ量Ｒが負値（Ｒ＜０）となる場合、アンダーフローの発生を認定する。
【００２７】
さらに、バッファ状態管理ブロック２４は、実バッファ量Ｒと予め設定されたオールモストフル閾値Ｌｆ（０＜Ｌｆ＜Ｌ）を比較し、実バッファ量Ｒがオールモストフル閾値Ｌｆを超える場合（Ｒ＞Ｌｆ）、オールモストフルの発生を認定する。
また、バッファ状態管理ブロック２４は、実バッファ量Ｒと予め設定されたオールモストエンプティ閾値Ｌｅ（０＜Ｌｅ＜Ｌｆ）を比較し、実バッファ量Ｒがオールモストエンプティ閾値Ｌｅに満たない場合（Ｒ＜Ｌｅ）、オールモストエンプティの発生を認定する。
なお、バッファ状態管理ブロック２４は、アンダーフローが発生していない場合、フレーム単位の仮想バッファ量Ｒｅを“Ｒｅ−ｌｒ”に更新する。
【００２８】
バッファ状態管理ブロック２４は、上記のようにして、オーバーフローの発生を認定すると、オーバーフローが発生した時点ｔｏを算出する。
即ち、バッファ状態管理ブロック２４は、出力回路４による読み出し途中の処理が無い場合、下記の式（１）が成立するときに、オーバーフローが発生するので、式（１）を式（２）のように変形し、式（２）からオーバーフローが発生した時点ｔｏを算出する。
Ｒｅ＋（ｔｏ−ｔｗ）×α＞Ｌ                                （１）
ｔｏ＞ｔｗ＋（Ｌ−Ｒｅ）／α                                （２）
バッファ状態管理ブロック２４は、出力回路４による読み出し途中の処理がある場合、下記の式（３）が成立するときに、オーバーフローが発生するので、式（３）を式（４）のように変形し、式（４）からオーバーフローが発生した時点ｔｏを算出する。
Ｒｅ＋（ｔｏ−ｔｗ）×α−（ｔｏ−ｔｒ）×β＞Ｌ            （３）
ｔｏ＞（Ｌ−Ｒｅ＋ｔｗ×α−ｔｒ×β）／（α−β）          （４）
【００２９】
バッファ状態管理ブロック２４は、上記のようにして、アンダーフローの発生を認定すると、アンダーフローが発生した時点ｔｕを算出する。
即ち、バッファ状態管理ブロック２４は、入力回路１による書き込み途中の処理が無い場合、下記の式（５）が成立するときに、アンダーフローが発生するので、式（５）を式（６）のように変形し、式（６）からアンダーフローが発生した時点ｔｕを算出する。
Ｒｅ−（ｔｕ−ｔｒ）×β＜０                                （５）
ｔｕ＞ｔｒ＋Ｒｅ／β                                        （６）
バッファ状態管理ブロック２４は、入力回路１による書き込み途中の処理がある場合、下記の式（７）が成立するときに、アンダーフローが発生するので、式（７）を式（８）のように変形し、式（８）からアンダーフローが発生した時点ｔｕを算出する。
Ｒｅ＋（ｔｕ−ｔｗ）×α−（ｔｕ−ｔｒ）×β＜０            （７）
ｔｕ＞（Ｒｅ＋ｔｗ×α＋ｔｒ×β）／（β−α）              （８）
【００３０】
バッファ状態管理ブロック２４は、上記のようにして、オールモストフルの発生を認定すると、オールモストフルが発生した時点ｔｏ’を算出する。
即ち、バッファ状態管理ブロック２４は、出力回路４による読み出し途中の処理が無い場合、下記の式（９）からオールモストフルが発生した時点ｔｏ’を算出する。
ｔｏ’≧ｔｗ＋（Ｌｆ−Ｒｅ）／α                            （９）
バッファ状態管理部２４は、出力回路４による読み出し途中の処理がある場合、下記の式（１０）からオールモストフルが発生した時点ｔｏ’を算出する。
ｔｏ’≧（Ｌｆ−Ｒｅ＋ｔｗ×α−ｔｒ×β）／（α−β）    （１０）
【００３１】
バッファ状態管理ブロック２４は、上記のようにして、オールモストエンプティの発生を認定すると、オールモストエンプティが発生した時点ｔｕ’を算出する。
即ち、バッファ状態管理ブロック２４は、入力回路１による書き込み途中の処理が無い場合、下記の式（１１）からオールモストエンプティが発生した時点ｔｕ’を算出する。
ｔｕ’≧ｔｒ＋（Ｒｅ−Ｌｅ）／β                          （１１）
バッファ状態管理ブロック２４は、入力回路１による書き込み途中の処理がある場合、下記の式（１２）からオールモストエンプティが発生した時点ｔｕ’を算出する。
ｔｕ’≧（Ｒｅ−Ｌｅ＋ｔｗ×α＋ｔｒ×β）／（β−α）    （１２）
【００３２】
以下、図２のシミュレーション装置による具体的なシミュレーション例を説明する。
図１の通信回路と図２のシミュレーション装置が同じクロックで動作するものとし、通信回路のバッファ２が“１ｗｏｒｄ＝８ｂｙｔｅ”であり、バッファ長が“１８ｗｏｒｄ（＝１４４ｂｙｔｅ）”であるものとする。
また、バッファ制御回路３が判定するオールモストフル閾値が“１４ｗｏｒｄ”、オールモストエンプティ閾値が“２ｗｏｒｄ”であるものとする。
さらに、入力回路１は１クロック毎に“１ｗｏｒｄ”のデータを書き込み、入力信号に応じて不定な間隔で不定長のフレームを受け取るものとする。
出力回路４は、１フレームのデータがバッファ２に書き込まれた２クロック後から、データの出力を開始し、１ｗｏｒｄのデータを２クロック期間出力する。さらに、４ｗｏｒｄのデータを読み出した後、２クロックの間隔をおいて、４ｗｏｒｄのデータを読み出す動作を繰り返すものとする。
バッファ制御回路３は、オーバーフローを発生した場合、書込中のフレームを削除し、アンダーフローを発生した場合、アドレスを進めないものとする。
【００３３】
図２のシミュレーション装置がシミュレーションを実施する場合において、α＝１ｗｏｒｄ／ｃｙｃｌｅ、β＝１ｗｏｒｄ／２ｃｙｃｌｅ、Ｌ＝１６ｗｏｒｄ、Ｌｆ＝１４ｗｏｒｄ、Ｌｅ＝２ｗｏｒｄとする。
書込処理ブロック１１は、入力回路１に入力されるフレームのデータ及びタイミングと同じものを図示せぬファイルから読み出すものとする。
読出処理ブロック１３は、出力回路４と同様に４ｗｏｒｄのデータを読み出し、２クロックの間隔をおいて、４ｗｏｒｄのデータを読み出す動作を繰り返すものとする。その結果の出力として、データの値をファイルに書きだすものとする。
【００３４】
図３は入力フレームの一例を示す説明図である。
図４は図３の入力フレームを受け取る場合のバッファ処理ブロック１２内の情報を示す説明図である。
図４において、「時刻」はクロック数を示し、「ｔｗ，ｌｗ，ｔｅ」は書込情報管理ブロック２２が提供する情報であり、上述したように、ｔｗはデータの書込開始タイミング、ｌｗは書込フレーム長、ｔｅは書込完了タイミングである。
「ｔｒ，ｌｒ，ｔｆ」は読出情報管理ブロック２３が提供する情報であり、上述したように、ｔｒは読出開始タイミング、ｌｒは読出フレーム長、ｔｆは読出完了タイミングである。
「Ｒｅ，Ｒ，エラー情報」はバッファ状態管理ブロック２４が提供する情報であり、上述したように、Ｒｅはフレーム単位の仮想バッファ量、Ｒは実バッファ量である。
【００３５】
まず、３クロックの時点で、５ｗｏｒｄのデータが入力されると、書込情報管理ブロック２２の情報がｔｗ＝３，ｌｗ＝５，ｔｅ＝８に更新される。バッファ状態管理ブロック２４に管理されているフレーム単位の仮想バッファ量Ｒｅは初期値“０”である。
８クロックの時点で、５ｗｏｒｄのデータの書き込みが完了し、フレーム単位の仮想バッファ量ＲｅがＲｅ→Ｒｅ＋ｌｗ＝０＋５＝５に更新される。
これにより、データ配列ブロック２１には、１フレーム分のデータが書き込まれたので、１０クロックの時点から、読出処理ブロック１３がデータの読み出し動作を開始する。
このため、読出情報管理ブロック２３の情報がｔｒ＝１０，ｌｒ＝４，ｔｆ＝１８に更新される。
【００３６】
１８クロックの時点で、４ｗｏｒｄのデータの読み出しが終わる。
この時点で、実バッファ量ＲがＲ＝Ｒｅ−ｌｒ＝５−４＝１＜Ｌｅ＝２となり、オールモストエンプティと判定される。
ｔｕ’≧ｔｒ＋（Ｒｅ−Ｌｅ）／β＝１０＋（５−２）／（１／２）＝１０＋３×２＝１６であるため、オールモストエンプティは、１６クロックの時点から発生する。
１８クロックの時点では、アンダーフローが発生しないので、フレーム単位の仮想バッファ量ＲｅがＲｅ→Ｒｅ−ｌｒ＝５−４＝１に更新される。
【００３７】
次に、２０クロックの時点で、４ｗｏｒｄのデータの読み出しが行われ、読出情報管理ブロック２３の情報がｔｒ＝２０，ｌｒ＝４，ｔｆ＝２８に更新される。
２８クロックの時点で、実バッファ量ＲがＲ＝Ｒｅ−ｌｒ＝１−４＝−３＜０となるため、アンダーフローと判定される。
ｔｕ＞ｔｒ＋Ｒｅ／β＝２０＋１／（１／２）＝２０＋１×２＝２２であるため、アンダーフローは、２３クロックの時点から発生する。
この場合、アドレスを進めないため、フレーム単位の仮想バッファ量ＲｅがＲｅ＝０となる。
【００３８】
次に、２９クロックの時点で、２０ｗｏｒｄのデータの書き込みが開始され、書込情報管理ブロック２２の情報がｔｗ＝２９，ｌｗ＝２０，ｔｅ＝４９に更新される。
３０クロックの時点で、４ｗｏｒｄのデータの読み出しが行われ、読出情報管理ブロック２３の情報がｔｒ＝３０，ｌｒ＝４，ｔｆ＝３８に更新される。
３８クロックの時点で、４ｗｏｒｄのデータの読み出しが完了し、実バッファ量ＲがＲ＝Ｒｅ−ｌｒ＋（ｔｆ−ｔｗ）×α＝０−４＋（３８−２９）×１＝−４＋９＝５となるので、エラー無しと判定されて、フレーム単位の仮想バッファ量ＲｅがＲｅ＝０−４＝−４に更新される。
【００３９】
次に、４０クロックの時点で、４ｗｏｒｄのデータの読み出しが行われ、読出情報管理ブロック２３の情報がｔｒ＝４０，ｌｒ＝４，ｔｆ＝４８に更新される。
４８クロックの時点で、４ｗｏｒｄのデータの読み出しが完了し、実バッファ量ＲがＲ＝Ｒｅ−ｌｒ＋（ｔｆ−ｔｗ）×α＝−４−４＋（４８−２９）×１＝−８＋１９＝１１となるので、エラー無しと判定されて、フレーム単位の仮想バッファ量ＲｅがＲｅ＝−４−４＝−８に更新される。
４９クロックの時点で、データの書き込みが完了し、実バッファ量ＲがＲ＝Ｒｅ＋ｌｗ＝−８＋２０＝１２となるので、エラー無しと判定されて、フレーム単位の仮想バッファ量ＲｅがＲｅ＝−８＋２０＝１２に更新される。
【００４０】
５０クロックの時点で、データの書き込み及び読み出しが開始され、書込情報管理ブロック２２の情報がｔｗ＝５０，ｌｗ＝２２，ｔｅ＝７２、読出情報管理ブロック２３の情報がｔｒ＝５０，ｌｒ＝４，ｔｆ＝５８に更新される。
５８クロックの時点で、データの読み出しが完了し、実バッファ量ＲがＲ＝Ｒｅ−ｌｒ＋（ｔｆ−ｔｗ）×α＝１２−４＋（５８−５０）×１＝１２−４＋８＝１６＞Ｌｆ＝１４となるので、オールモストフルと判定される。
ｔｏ’≧（Ｌｆ−Ｒｅ＋ｔｗ×α−ｔｒ×β）／（α−β）＝（１４−１２＋５０×１−５０×１／２）×（１−１／２）＝（１４−１２＋５０−２５）×２＝５４であるため、オールモストフルは、５４クロックの時点から発生する。
フレーム単位の仮想バッファ量ＲｅがＲｅ＝１２−４＝８に更新される。
【００４１】
次に、６０クロックの時点で、４ｗｏｒｄのデータの読み出しが行われ、読出情報管理ブロック２３の情報がｔｒ＝６０，ｌｒ＝４，ｔｆ＝６８に更新される。
６８クロックの時点で、４ｗｏｒｄのデータの読み出しが完了し、実バッファ量ＲがＲ＝Ｒｅ−ｌｒ＋（ｔｆ−ｔｗ）×α＝８−４＋（６８−５０）×１＝８−４＋１８＝２２＞Ｌ＝１６となるので、オーバーフローと判定される。
ｔｏ＞（Ｌ−Ｒｅ＋ｔｗ×α−ｔｒ×β）／（α−β）＝（１６−８＋５０×１−６０×１／２）／（１−１／２）＝（８＋５０−３０）×２＝５６であるため、オーバーフローは、５７クロックの時点から発生する。
オーバーフローと判定されるとフレームを削除するため、書込情報管理ブロック２２の情報ｔｗ，ｌｗ，ｔｅがクリアされる。フレーム単位の仮想バッファ量Ｒｅは更新されない。
【００４２】
この後も継続して実行可能であり、７０クロックの時点で、データの読み出しが行われ、読出情報管理ブロック２３の情報がｔｒ＝７０，ｌｒ＝４，ｔｆ＝７８に更新される。
７４クロックの時点で、データの書き込みが開始され、書込情報管理ブロック２２の情報がｔｗ＝７４，ｌｗ＝１１，ｔｅ＝８４に更新される。
７８クロックの時点で、データの読み出しが完了し、実バッファ量ＲがＲ＝Ｒｅ−ｌｒ＋（ｔｆ−ｔｗ）×α＝８−４＋（７８−７４）×１＝４＋４＝８となるので、エラー無しと判定されて、フレーム単位の仮想バッファ量ＲｅがＲｅ＝８−４＝４に更新される。
【００４３】
次に、図４のようにバッファ処理ブロック１２の状態が変化するときのデータ配列ブロック２１のデータ配列について説明する。
図１の通信回路におけるデータの書込フレーム長と読出フレーム長が異なるため、データ配列ブロック２１では、データ配列として、ワードデータの配列を有している。
ただし、データ配列ブロック２１では、１フレーム単位にデータを書き込むため、バッファ長の１６ワードよりも十分広い余剰領域を備えている。
図５はデータ配列ブロック２１におけるデータ配列を示す説明図である。
図５において、左側はアドレスであり、データ配列ブロック２１は、ＦＩＦＯの動作をし、データの書き込みは、書込開始タイミングで最終書込み位置以降に行い、データの読み出しは、読出完了タイミングで０アドレスから読み出しを行う。データの読み出し後、データは読み出し分だけ上にずれる。
【００４４】
図６はアンダーフロー動作時における３〜２８クロックのデータ配列状態を示す説明図である。
まず、３クロックで、フレーム１のデータが書き込まれ、アドレス０〜４にデータが入る。
１８クロックの時点で、アドレス０〜３までのデータが読み出され、アドレス０だけにデータが残る状態になる。
次に、２８クロックで、アンダーフローとなるため、最終データであるアドレス０の値を読み出して、その値を終了のアドレス３までコピーし、アドレス０〜３までのデータを読出データとする。
【００４５】
図７はオーバーフロー動作時における５０〜６８クロックのデータ配列状態を示す説明図である。
まず、５０クロックで、アドレス０〜１１にフレーム２のデータが入った状態で、アドレス１２以降の２２ワードにフレーム３のデータが書き込まれる。
５８クロックの時点で、アドレス０〜３のデータが読み出され、データが上にずれる。
次に、６８クロックの時点で、アドレス０〜３のデータが読み出されるとともに、オーバーフロー判定によって、後ろから２２ｗｏｒｄのデータ（フレーム３のデータ）が削除される。
【００４６】
この実施の形態１では、固定長のデータを固定間隔で読み出すものについて説明したが、外部から読み出し長を指定される回路のシミュレーションを行う場合、外部から指定される読み出し長をファイルから読み込んで指定するなどの形態が考えられる。
また、固定長のデータを固定の間隔で入力するような入力回路１の場合は、書込処理ブロック１１を変更することで同様にバッファ状態を管理することができる。
【００４７】
以上で明らかなように、この実施の形態１によれば、バッファ２に書き込まれるフレーム単位のデータの書込開始タイミングｔｗ及び書込フレーム長ｌｗとバッファ２のデータ書込速度αから、そのデータの書込完了タイミングｔｅを算出する書込情報管理ブロック２２と、そのバッファ２から読み出されるフレーム単位のデータの読出開始タイミングｔｒ及び読出フレーム長ｌｒとバッファ２のデータ読出速度βから、そのデータの読出完了タイミングｔｆを算出する読出情報管理ブロック２３と、書込情報管理ブロック２２により算出された書込完了タイミングｔｅの時点においてバッファ２に蓄積されているデータの実バッファ量Ｒを算出するとともに、読出情報管理ブロック２３により算出された読出完了タイミングｔｆの時点においてバッファ２に蓄積されているデータの実バッファ量Ｒを算出するバッファ状態管理ブロック２４とを設け、バッファ状態管理ブロック２４が算出した何れかの実バッファ量Ｒがバッファ２の容量Ｌを超えている場合、オーバーフローの発生を認定するように構成したので、ソフトウェアの作成負荷の増加を招くことなく、高速なシミュレーションを実行することができるとともに、高精度にオーバーフローの発生を検出することができる効果を奏する。
【００４８】
即ち、特許文献１に開示されているシミュレーション装置の場合、データのフレーム長を８バイトのバス幅に合わせる必要があるため、８バイトのフレーム長の単位でデータの書込動作と読出動作を記述しているが、この実施の形態１では、６４バイトのワードデータの単位で書込動作と読出動作を記述すればよい。このため、ソフトウェアの作成負荷を軽くすることができ、シミュレーションの実行速度を高めることができる。
【００４９】
また、この実施の形態１によれば、オーバーフローの発生を認定すると、バッファ２からデータが読み出されている途中でなければ、バッファ２のデータ書込速度αを考慮して、オーバーフローが発生した時点ｔｏを算出し、バッファ２からデータが読み出されている途中であれば、バッファ２のデータ書込速度α及びデータ読出速度βを考慮して、オーバーフローが発生した時点ｔｏを算出するように構成したので、ソフトウェアの作成負荷の増加を招くことなく、高精度にオーバーフローの発生時点ｔｏを特定することができる効果を奏する。
【００５０】
この実施の形態１によれば、バッファ状態管理ブロック２４が算出した何れかの実バッファ量Ｒが負値になる場合、アンダーフローの発生を認定するように構成したので、オーバーフローの発生を認定する場合と同様に、ソフトウェアの作成負荷の増加を招くことなく、高速なシミュレーションを実行することができるとともに、高精度にオーバーフローの発生を検出することができる効果を奏する。
【００５１】
この実施の形態１によれば、アンダーフローの発生を認定すると、バッファ２にデータが書き込まれている途中でなければ、バッファ２のデータ読出速度βを考慮して、アンダーフローが発生した時点ｔｕを算出し、バッファ２にデータが書き込まれている途中であれば、バッファ２のデータ読出速度β及びデータ書込速度αを考慮して、アンダーフローが発生した時点ｔｕを算出するように構成したので、ソフトウェアの作成負荷の増加を招くことなく、高精度にアンダーフローの発生時点ｔｕを特定することができる効果を奏する。
【００５２】
この実施の形態１によれば、バッファ状態管理ブロック２４が算出した何れかの実バッファ量Ｒが、オールモストフルに関する閾値Ｌｆを超えている場合、オールモストフルの発生を認定するように構成したので、オーバーフローの発生を認定する場合と同様に、ソフトウェアの作成負荷の増加を招くことなく、高速なシミュレーションを実行することができるとともに、高精度にオールモストフルの発生を検出することができる効果を奏する。
【００５３】
この実施の形態１によれば、オールモストフルの発生を認定すると、バッファ２からデータが読み出されている途中でなければ、バッファ２のデータ書込速度αを考慮して、オールモストフルが発生した時点ｔｏ’を算出し、バッファ２からデータが読み出されている途中であれば、バッファ２のデータ書込速度α及びデータ読出速度βを考慮して、オールモストフルが発生した時点ｔｏ’を算出するように構成したので、ソフトウェアの作成負荷の増加を招くことなく、高精度にオールモストフルの発生時点ｔｏ’を特定することができる効果を奏する。
【００５４】
この実施の形態１によれば、バッファ状態管理ブロック２４が算出した何れかの実バッファ量Ｒが、オールモストエンプティに関する閾値Ｌｅに満たない場合、オールモストエンプティの発生を認定するように構成したので、オーバーフローの発生を認定する場合と同様に、ソフトウェアの作成負荷の増加を招くことなく、高速なシミュレーションを実行することができるとともに、高精度にオールモストエンプティの発生を検出することができる効果を奏する。
【００５５】
この実施の形態１によれば、オールモストエンプティの発生を認定すると、バッファ２にデータが書き込まれている途中でなければ、バッファ２のデータ読出速度βを考慮して、オールモストエンプティが発生した時点ｔｕ’を算出し、バッファ２にデータが書き込まれている途中であれば、バッファ２のデータ読出速度β及びデータ書込速度αを考慮して、オールモストエンプティが発生した時点ｔｕ’を算出するように構成したので、ソフトウェアの作成負荷の増加を招くことなく、高精度にオールモストエンプティの発生時点ｔｕ’を特定することができる効果を奏する。
【００５６】
実施の形態２．
図８はこの発明の実施の形態２によるシミュレーション装置のシミュレーション対象である通信回路を示す構成図であり、図において、図１と同一符号は同一又は相当部分を示すので説明を省略する。
入力回路５はデータを入力して、そのデータの値をバッファ２に格納するとともに、そのデータのフレーム長などを示すフレーム情報を情報レジスタ６に格納する回路である。
情報レジスタ６はフレーム情報を格納するレジスタであり、バッファ２に蓄積されたデータに関するフレーム情報を複数個蓄えることができる。
出力回路７は情報レジスタ６に格納されているフレーム情報を参照して、バッファ２からフレーム単位のデータを読み出す回路である。
【００５７】
図９はこの発明の実施の形態２によるシミュレーション装置を示す構成図であり、図において、図２と同一符号は同一又は相当部分を示すので説明を省略する。
書込処理ブロック１４は図２の書込処理ブロック１１と同様に、フレーム単位に動作するソフトウェア・モデルであって、入力回路５と同じ動作を行うブロックである。
ただし、書込処理ブロック１４は図２の書込処理ブロック１１と異なり、データの書込開始タイミングｔｗで、そのデータの値とフレーム情報をバッファ処理ブロック１２に出力する処理を実施する。
なお、書込処理ブロック１４はデータ書込手段を構成している。
【００５８】
データ配列ブロック２５は図２のデータ配列ブロック２１と同様に、通信回路のメモリであるバッファ２に書き込まれるフレーム単位のデータをデータ配列の形式で記憶する記憶領域である。
ただし、データ配列ブロック２５は図２のデータ配列ブロック２１と異なり、バッファ２と情報レジスタ６を合わせた機能を有しており、バッファ２に書き込まれるフレーム単位のデータの値と、そのデータのフレーム長などを示すフレーム情報とをセットにして記憶する。
なお、データ配列ブロック２５はデータ記憶手段を構成している。
【００５９】
読出処理ブロック１５はフレーム単位に動作するソフトウェア・モデルであって、出力回路７と同じ動作を行うブロックであり、データの読出開始タイミングｔｒで、データ配列ブロック２５から先頭フレームのフレーム情報を取得し、そのフレーム情報が示すフレーム長を読出情報管理ブロック２３に通知する処理を実施する。なお、読出処理ブロック１５はデータ読出手段を構成している。
【００６０】
この実施の形態２では、図９のシミュレーション装置がコンピュータで構成されるものを想定しており、シミュレーション装置の構成要素であるデータ配列ブロック２５は、ハードウェア資源として当該コンピュータのメモリが用いられる。
また、シミュレーション装置の構成要素である書込処理ブロック１４、読出処理ブロック１５、書込情報管理ブロック２２、読出情報管理ブロック２３及びバッファ状態管理ブロック２４は、ハードウェア資源として当該コンピュータのＣＰＵが用いられる。
なお、書込処理ブロック１４、読出処理ブロック１５、書込情報管理ブロック２２、読出情報管理ブロック２３及びバッファ状態管理ブロック２４の動作を記述しているプログラム（ソフトウェア・モデル）は、事前に当該コンピュータのメモリに格納されており、当該コンピュータのＣＰＵが当該プログラムを実行することにより、書込処理ブロック１４、読出処理ブロック１５、書込情報管理ブロック２２、読出情報管理ブロック２３及びバッファ状態管理ブロック２４を実現するものとする。
【００６１】
次に動作について説明する。
図８の通信回路と図９のシミュレーション装置が同じクロックで動作するものとし、通信回路のバッファ２が“１ｗｏｒｄ＝８ｂｙｔｅ”であり、バッファ長が“３２ｗｏｒｄ（＝２５６ｂｙｔｅ）”であるものとする。
また、バッファ制御回路３が判定するオールモストフル閾値が“３０ｗｏｒｄ”、オールモストエンプティ閾値が“２ｗｏｒｄ”であるものとする。
入力回路５は、図１の入力回路１と同様に、１クロック毎に“１ｗｏｒｄ”のデータを書き込み、入力信号に応じて不定な間隔で不定長のフレームを受け取るものとする。
出力回路７も、図１の出力回路４と同様に、１フレームのデータがバッファ２に書き込まれた２クロック後から、データの出力を開始し、１ｗｏｒｄのデータを２クロック期間出力する。
ただし、出力回路７は、図１の出力回路４と異なり、書込フレーム長分のデータを読み出し、バッファ２にデータが無くなると、データの読み出しを停止するものとする。またバッファ２にフレームが複数個ある場合、出力完了後の２クロック後に、次のフレームのデータの読み出しを開始するものとする。
【００６２】
図９のシミュレーション装置がシミュレーションを実施する場合において、α＝１ｗｏｒｄ／ｃｙｃｌｅ、β＝１ｗｏｒｄ／２ｃｙｃｌｅ、Ｌ＝３２ｗｏｒｄ、Ｌｆ＝３０ｗｏｒｄ、Ｌｅ＝２ｗｏｒｄとする。
書込処理ブロック１４は、図２の書込処理ブロック１１と同様に、入力回路５に入力されるフレームのデータ及びタイミングと同じものを図示せぬファイルから読み出すものとする。
読出処理ブロック１５は、出力回路７と同様に動作し、その出力は、データの値をファイルに書きだすものとする。
【００６３】
図１０は図３の入力フレームを受け取る場合のバッファ処理ブロック１２内の情報を示す説明図である。
まず、３クロックの時点で、５ｗｏｒｄのフレームが入力されると、書込情報管理ブロック２２の情報がｔｗ＝３，ｌｗ＝５，ｔｅ＝８に更新される。バッファ状態管理ブロック２４に管理されているフレーム単位の仮想バッファ量Ｒｅは初期値“０”である。
８クロックの時点で、５ｗｏｒｄのフレームの書き込みが完了し、フレーム単位の仮想バッファ量ＲｅがＲｅ→Ｒｅ＋ｌｗ＝０＋５＝５に更新される。
これにより、データ配列ブロック２５には、１フレーム分のデータが書き込まれたので、１０クロックの時点から、読出処理ブロック１５がデータの読み出しを開始する。
このため、読出情報管理ブロック２３の情報がｔｒ＝１０，ｌｒ＝５，ｔｆ＝２０に更新される。
【００６４】
２０クロックの時点で、１フレーム分のデータの読み出しが終わる。
この時点で、実バッファ量ＲがＲ＝Ｒｅ−ｌｒ＝５−５＝０＜Ｌｅ＝２となり、オールモストエンプティが判定される。
ｔｕ’≧ｔｒ＋（Ｒｅ−Ｌｅ）／β＝１０＋（５−２）／（１／２）＝１０＋３×２＝１６であるため、オールモストエンプティは、１６クロックの時点から発生する。
２０クロックの時点では、アンダーフローが発生しないので、フレーム単位の仮想バッファ量ＲｅがＲｅ＝５−５＝０に更新される。
【００６５】
次に、２９クロックの時点で、フレーム２のデータの書き込みが開始され、書込情報管理ブロック２２の情報がｔｗ＝２９，ｌｗ＝２０，ｔｅ＝４９に更新される。
４９クロックの時点で、フレーム２のデータの書き込みが完了し、実バッファ量ＲがＲ＝Ｒｅ＋ｌｗ＝０＋２０＝２０となるので、エラー無しと判定されて、フレーム単位の仮想バッファ量ＲｅがＲｅ＝０＋２０＝２０に更新される。
【００６６】
次に、５０クロックの時点で、フレーム３のデータの書き込みが開始され、書込情報管理ブロック２２の情報がｔｗ＝５０，ｌｗ＝２２，ｔｅ＝７２に更新される。
７２クロックの時点で、フレーム２のデータの読み出しが開始され、読出情報管理ブロック２３の情報がｔｒ＝５１，ｌｒ＝２０，ｔｆ＝９１に更新される。
７２クロックの時点で、フレーム３のデータの書き込みが完了し、実バッファ量ＲがＲ＝Ｒｅ＋ｌｗ−（ｔｅ−ｔｒ）×β＝２０＋２２−（７２−５１）×１／２＝４２−１０．５＝３１．５＞Ｌｆ＝３６となるので、オールモストフルと判定される。
ｔｏ’≧（Ｌｆ−Ｒｅ＋ｔｗ×α−ｔｒ×β）／（α−β）＝（３０−２０＋５０×１−５１×１／２）／（１−１／２）＝（１０＋５０−２５．５）×２＝６９であるため、オールモストフルは、６９クロックの時点から発生する。
フレーム単位の仮想バッファ量ＲｅがＲｅ＝２０＋２２＝４２に更新される。
【００６７】
次に、７４クロックの時点で、フレーム４のデータの書き込みが開始され、書込情報管理ブロック２２の情報がｔｗ＝７４，ｌｗ＝１１，ｔｅ＝８５に更新される。
８５クロックの時点で、フレーム４のデータの書き込みが完了し、実バッファ量ＲがＲ＝Ｒｅ＋ｌｗ−（ｔｅ−ｔｒ）×β＝４２＋１１−（８５−５１）×１／２＝５３−１７＝３６＞Ｌ＝３２となるので、オーバーフローと判定される。
ｔｏ＞（Ｌ−Ｒｅ＋ｔｗ×α−ｔｒ×β）／（α−β）＝（３２−４２＋７４×１−５１×１／２）／（１−１／２）＝（−１０＋７４−２５．５）×２＝７７であるため、オーバーフローは、７８クロックの時点から発生する。
オーバーフローと判定されるとフレーム４がフレーム配列から削除され、書込情報管理ブロック２２の情報ｔｗ，ｌｗ，ｔｅがクリアされる。フレーム単位の仮想バッファ量Ｒｅは更新されない。
【００６８】
この後も継続して実行可能であり、９１クロックの時点で、フレーム２のデータの読み出しが完了し、実バッファ量ＲがＲ＝Ｒｅ−ｌｒ＝４２−２２＝２０となるので、新たなエラーは無しと判定される。
９３クロックの時点で、フレーム３のデータの読み出しが開始され、読出情報管理ブロック２３の情報がｔｒ＝９３，ｌｒ＝２２，ｔｆ＝１３７に更新される。
１００クロックの時点で、フレーム５のデータの書き込みが開始され、書込情報管理ブロック２２の情報がｔｗ＝１００，ｌｗ＝１８，ｔｅ＝１１８に更新される。
以下、継続して動作するが、同様の動作であるため説明を省略する。
【００６９】
次に、図１０のようにバッファ処理ブロック１２の状態が変化するときのデータ配列ブロック２５のデータ配列について説明する。
図１１はデータ配列ブロック２５におけるデータ配列を示す説明図である。
データ配列ブロック２５では、フレーム配列のデータ（データの値とフレーム長のセット）を複数個蓄えることができる。
また、データは、書込開始タイミングｔｗで、書込処理ブロック１４により書き込まれ、読出開始タイミングｔｒで、読出処理ブロック１５により読み出されるものとする。また、データ配列ブロック２５では、バッファ長を意識せずにデータを保存する。
【００７０】
５０クロックの時点で、フレーム２のデータを格納している状態で、フレーム３のデータが書き込まれるため、データが追加される。
５１クロックの時点で、フレーム２のデータが読み出されるため、フレーム２のデータが廃棄され、フレーム３のデータのみになる。７２クロックの時点でも同様である。
７４クロックの時点で、フレーム４のデータが書き込まれるため、フレーム４のデータが追加される。
８５クロックの時点で、オーバーフローの発生が検出されるため、最後のフレーム４のデータが削除される。
【符号の説明】
【００７１】
１  入力回路、２  バッファ、３  バッファ制御回路、４  出力回路、１１  書込処理ブロック、１２  バッファ処理ブロック、１３  読出処理ブロック、１４  書込処理ブロック（データ書込手段）、１５  読出処理ブロック（データ読出手段）、２１  データ配列ブロック（データ記憶手段）、２２  書込情報管理ブロック（書込完了タイミング算出手段）、２３  読出情報管理ブロック（読出完了タイミング算出手段）、２４  バッファ状態管理ブロック（バッファ量算出手段、オーバーフロー検出手段、アンダーフロー検出手段、オールモストフル検出手段、オールモストエンプティ検出手段）、２５  データ配列ブロック（データ記憶手段）。
【図１】
2010182140.tif 000003
【図２】
2010182140.tif 000004
【図３】
2010182140.tif 000005
【図４】
2010182140.tif 000006
【図５】
2010182140.tif 000007
【図６】
2010182140.tif 000008
【図７】
2010182140.tif 000009
【図８】
2010182140.tif 000010
【図９】
2010182140.tif 000011
【図１０】
2010182140.tif 000012
【図１１】
2010182140.tif 000013