JP2006079464A - シミュレーション装置及びシミュレーション方法 - Google Patents
シミュレーション装置及びシミュレーション方法 Download PDFInfo
- Publication number
- JP2006079464A JP2006079464A JP2004264592A JP2004264592A JP2006079464A JP 2006079464 A JP2006079464 A JP 2006079464A JP 2004264592 A JP2004264592 A JP 2004264592A JP 2004264592 A JP2004264592 A JP 2004264592A JP 2006079464 A JP2006079464 A JP 2006079464A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- simulation
- hardware
- mapped
- bus
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】 トランザクションレベルのシミュレーションにおいて、デバッグ機構や監視機構への指示命令をトランザクションに含むことによりシミュレーションを効率的に行う。
【解決手段】 システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置であって、ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信し、そのトランザクションを送信する。そして、ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時のデバッグ機構への指示命令を含む。
【選択図】 図7
【解決手段】 システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置であって、ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信し、そのトランザクションを送信する。そして、ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時のデバッグ機構への指示命令を含む。
【選択図】 図7
Description
本発明は、論理回路から構成されるハードウェアシステムを、システム記述言語により高速シミュレーション可能なモデルとして高い抽象度で記述されたシミュレーション装置に関するものである。
プロセス技術の進歩によりLSIの集積度が増大し、これまではボードで実現していたシステムをシステムLSIとして1チップ上に搭載することが可能となっている。また、チップ上に搭載する機能モジュールも多様化し、回路規模も増大している。これに伴い、システムLSIを効率的に設計するための手法として、従来のVerilog-HDLやVHDLといったハードウェア記述言語を使用した設計から、SystemCやSpecCといったシステム記述言語による設計が普及してきている。
システム記述言語による設計支援ツールとしては、Synopsys社のCoCentricやCoWare社のConvergenSCが知られている。そして、システム記述言語により記述したモジュールをブロック図入力画面で入力し、システムLSIの設計を行うことが可能になっている。
このシステムLSIの設計が終了すると、設計支援ツールからシミュレーションモデルを生成し、シミュレータを起動してシステムシミュレーションを行い、設計したシステムLSIの機能や性能を確認することができる。即ち、実際のハードウェアを作成する前に、シミュレーションによりシステムの評価を行うことにより、仕様の不具合や性能不足を回避している。
上述のシステム記述言語によるモジュール記述には、記述の抽象度により以下の3種類の記述レベルが一般に知られている。
トランザクションレベル(TL):
モジュール間のバス通信を捉えて機能を記述する抽象度レベルである。通信の開始及び終了の時間、通信データにより動作するため、クロックに対する精度は低い。イベントにより機能をシミュレートするため、シミュレーション速度は非常に速い。システムとしての動作が実際のハードウェアと一致するため、システム全体の評価に適している。
モジュール間のバス通信を捉えて機能を記述する抽象度レベルである。通信の開始及び終了の時間、通信データにより動作するため、クロックに対する精度は低い。イベントにより機能をシミュレートするため、シミュレーション速度は非常に速い。システムとしての動作が実際のハードウェアと一致するため、システム全体の評価に適している。
ARM社による定義では、更に細かく分類されておりPV(プログラマーズビュー)、PVT(プログラマーズビュー+タイミング)、CL(サイクルレベル)に相当する。
バスサイクルアキュレート(BCA):
モジュールの入力及び出力のイベントとして機能を記述する抽象度レベルである。動作クロックに対して、入力及び出力部で正確にシミュレートすることができる。
モジュールの入力及び出力のイベントとして機能を記述する抽象度レベルである。動作クロックに対して、入力及び出力部で正確にシミュレートすることができる。
ARM社による定義では、CC(サイクルコーラブル)に相当する。
レジスタトランスファレベル(RTL):
レジスタファイル間の同期転送を捉えて回路を記述する抽象度レベルである。動作クロックに対して、正確に機能動作をシミュレートすることができ、精度が非常に高い。1クロック毎に機能をシミュレートするため、シミュレーション速度は非常に遅い。
レジスタファイル間の同期転送を捉えて回路を記述する抽象度レベルである。動作クロックに対して、正確に機能動作をシミュレートすることができ、精度が非常に高い。1クロック毎に機能をシミュレートするため、シミュレーション速度は非常に遅い。
ARM社による定義ではRT(RTLイベントドリブン)に相当する。
一般的に、抽象度が高いほどシミュレーション速度は速くなり、また抽象度が低いほどシミュレーション精度は高くなる。
システムのシミュレーションを行うためのシミュレーションモデルは、トランザクションレベルにより記述される。
トランザクションレベルによるシミュレーションモデルとして、ARM社により公開されているAMBAバスモデルが広く知られている(AMBA AHB Cycle Level Interface (AHB CLI) Specification, 2003年7月15日公開)。
図1は、AHB CLIで定義されているバストランザクションを示す図である。図1に示すトランザクションメソッドは、AMBA AHBバスプロトコルで規定されたハードウェア信号に対応させることができる。図2は、トランザクションメソッド、アトリビュート、ハードウェアの対応を示す図である。図2に示すように、アトリビュート及びメソッド自身が、少なくとも1つのハードウェア信号に対応している。これらのメソッドを使用してバスの動作をシミュレーションすることが可能である。
図3、図4を用いてバスの動作をシミュレーションする方法を説明する。図3は、トランザクションメソッドと信号波形の対応を示す図である。図4は、トランザクションメソッドを用いたシミュレーションを説明するための図である。
時刻T1において、バスマスター1がバスへのリクエスト要求を行う。このとき、バスマスター1はrequest()メソッドを呼び出し、バスに対して発行する。これはHBUSREQ_M1信号のアサートに相当する。また、バスはアービターに対してアービトレーションを開始させる(arbitrate())。また、バスからマスターに対してresponse()[OKAY,READY]メソッドが発行される。これはHREADY及びHRESP信号に相当する。
時刻T2において、マスター2がバスへのリクエスト要求を行う(request())。これはHBUSREQ_M2信号のアサートに相当する。同時に、バスからマスター1に対してグラントが与えられる(arbitrate()[grant M1])。これはHGRANT_M1のアサートに相当する。
時刻T3において、マスター1はグラントを検知(has_grant()[TRUE])し、バスへのリクエストを取り下げる(end_request())。これはHBUSREQ_M1信号のデアサートに相当する。また、トランザクションを開始する(set_protection()、init_transaction())。これらはHPROTO、HTRANS、HADDR、HBURST、HWRITE、HSIZEといった信号に相当する。また同時に、バスはアドレスデコードを行い、スレーブに対してトランザクションを発行する(write()[address A1]、control_info[NONSEQ,INCR4])。
時刻T4からT7でマスター1は、バスに対してデータを送る(set_data())。これはHWDATA信号に相当する。そして、バスは、スレーブに対してマスターからのデータを送付する(set_data())。
時刻T6でバスはマスター2に対してグラントを与える(arbitrate()[grant M2])。時刻T7でマスター2はグラントを検知し、バスアクセスを開始する。
このように、各トランザクションメソッドは、ハードウェア信号の挙動と同じ機能を有しており、メソッド及びアトリビュートはハードウェア信号にマッピングできるものであることがわかる。
AHB CLIでは、トランザクションメソッドの他にバスのコンフィギュレーションを変更するためのメソッドが用意されている。このメソッドにより、バスのアドレス幅、データ幅、アドレスマップを変更することが可能である。
図5は、ハードウェアコンフィギュレーションメソッドを示す図である。図5に示すようにシミュレータがシステムモデルを読み出すエラボレーション時に実行されるメソッドと、シミュレーション実行時に使用することができるメソッドとに分けられる。ここで、シミュレーション実行を行いながら、バスのコンフィギュレーションを変更するメソッドは、デコーダのinitialize_map()及びアービターのpriority()、set_default_master()である。
これらは、実際のハードウェアの動作に関係しており、initialize_map()はremap信号に相当し、priority()、set_dafulat_maste()はアービター内のレジスタアクセス信号に相当する。
また、AHB CLIには、検証目的で使用するメソッドが用意されている。ハードウェアの検証に一般的に使用されているバックドア機能に対応するメソッドである。バスのプロトコルとは無関係に、指定したアドレスのデータを直接読書きすることが可能である。
図6は、検証メソッドを示す図である。マスターが使用する引数はアドレス、データへのポインタ、転送サイズの3つであり、ハードウェアと関連したものである。スレーブが使用する引数は、マスターID、アドレス、データへのポインタ、転送サイズの4つであり、これらもハードウェアと関連したものである。
AMBA AHB Cycle Level Interface (AHB CLI) Specification, 2003年7月15日公開
AMBA AHB Cycle Level Interface (AHB CLI) Specification, 2003年7月15日公開
しかしながら、上記従来の技術では、システムや各モジュールの検証を行うために、各トランザクションを監視するためのモニタを別途作成する必要があった。一般的に、より低い抽象度であるRTLにおいても、検証用にモニタを作成する必要があり、モニタ開発が二度手間になるという問題があった。
また、一般的に、モニタはそれ自体が一つのモジュールとして実装されるが、モニタの対象とする情報の解析に機能モジュールのみが保持している情報を必要とする場合がある。例えば、バスモデルは内部にアドレスデコーダの機能が含まれるが、アドレスマップの情報は外側からトランザクションを観測しても取得することはできない。このような場合には、機能モジュールとモニタとの間で情報の共有を必要とし、このようなモニタを実装することは非常に手間がかかる。
また、トランザクションレベルでは、各モジュールのメソッドと呼ばれる関数を呼び出すことにより行われるため、容易にモニタを作成することはできなかった。AHB CLIでは、モニタのためのメソッドが用意されているが、モニタ用のメソッドが用意されていないことが殆どである。
また、AHB CLIにあるように検証用のメソッドが定義されていることもあるが、実際のハードウェア動作のシミュレーションを実行している間に、シミュレーション結果に影響を及ぼさないように、メソッドを呼び出す必要があり、これらのメソッドを使用して検証を行うのは手間がかかるものであった。
また、メソッドを多用して検証を行うことは、シミュレーション時のイベントの増加を招き、シミュレーション速度への影響が大きくなり、結果としてシミュレーション速度を低下させるものであった。
一方、システムや各モジュールの検証にメソッドを使わない方法として、各モジュールのトランザクション情報を波形としてダンプし、その波形を観測する方法が知られているが、システムの膨大なシミュレーション結果を波形により検証していくのはほぼ不可能に近い状況であった。また、波形情報をファイルに保持していくためには、膨大なディスク容量を必要とし、充分な時間シミュレーションを実行させることが困難であるという問題もあった。
近年のシステムLDIの大規模化、高機能化により、システム内部に存在する機能モジュール数、バスの本数は増大している。このような複雑なシステムを性能解析及び検証していくのには、上で挙げた従来の手法では非常に困難である。
本発明は、トランザクションレベルのシミュレーションにおいて、デバッグ機構や監視機構への指示命令をトランザクションに含むことによりシミュレーションを効率的に行うことを目的とする。
また、本発明は、トランザクションレベルのシミュレーションにおいて、大規模、且つ複雑なシステムに対応でき、性能解析及び検証を容易に行うことを目的とする。
本発明は、システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置であって、ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信する受信手段と、前記トランザクションを送信する送信手段とを備え、前記ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時のデバッグ機構への指示命令を含むことを特徴とする。
また、本発明は、システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置であって、ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信する受信手段と、前記トランザクションを送信する送信手段とを備え、前記ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時の監視機構への指示命令を含むことを特徴とする。
更に、本発明は、システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置のシミュレーション方法であって、ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信する工程と、前記トランザクションを送信する工程とを有し、前記ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時のデバッグ機構への指示命令を含むことを特徴とする。
更に、本発明は、システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置のシミュレーション方法であって、ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信する工程と、前記トランザクションを送信する工程とを有し、前記ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時の監視機構への指示命令を含むことを特徴とする。
本発明によれば、トランザクションレベルのシミュレーションにおいて、デバッグ機構や監視機構への指示命令をトランザクションに含むことにより、シミュレーションを効率的に行うことができる。
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
実施例1では、トランザクションに、ハードウェアにマッピングしないアトリビュート情報としてシミュレーション実行時のデバッグ機構への指示命令(ブレーク指示)を付加するものである。
図7は、実施例1におけるシミュレーションモデルで使用するトランザクションの構成の一例を示す図である。図7において、700はアドレストランザクションであり、バスにより通信され、マスタもしくはバスからスレーブに対するアクセス要求に相当するトランザクションである。このアドレストランザクション700において、701〜703はハードウェアであるバス信号にマッピングされないアトリビュート情報であり、実施例1では以下の情報が保持される。
即ち、指示命令を受信し、デバッグ機構への指示命令の発行を行う機能モジュール名称である指示命令送信先モデル名称701、シミュレーションの実行中断を要求するか否かの情報であるブレーク指示オン/オフ702、及びシミュレーションの実行中断を指示する際の条件に関する情報であるブレーク条件703が保持される。
704〜708はハードウェアであるバス信号にマッピングされるアトリビュート情報である。アトリビュート情報704〜708はバスのプロトコルに依存するものであり、バスの種類によってアドレストランザクション700に含まれるアトリビュート情報も異なってくる。
709はハードウェアマッピングフラグであり、アトリビュート情報701〜708がハードウェアであるバス信号にマッピングされるか否かを示すフラグである。実施例1では、ハードウェアマッピングフラグ709において、黒丸で示されるものがハードウェアにマッピングされることを、黒丸が無いものがハードウェアにマッピングされないことを示している。
710はリードデータトランザクションであり、バスにより通信され、マスタもしくはバスからのリードアクセス要求に対するリードデータに相当するトランザクションである。このリードデータトランザクション710において、711〜713は上述した701〜703に対応するアトリビュート情報である。714はハードウェアであるバス信号にマッピングされるアトリビュート情報である。719は上述した709に対応するハードウェアマッピングフラグである。
図8は、実施例1におけるシミュレーションモデルのシステム構成の一例を示す図である。図8において、801はクロック生成器であり、システムの各機能モジュール(後述する第1のマスタ、第2のマスタ、第1のスレーブ、第2のスレーブ、ブリッジなど)に対してクロックを供給する。811、812は対象とするシステムを構成する第1、第2のバスであり、バスに対してマスタとして接続する機能モジュールからのトランザクションを受信し、バスのアービトレーション、アドレスデコードを行い、アービトレーションによって選択された機能モジュールのトランザクションを、バスに対してスレーブとして接続する機能モジュールに対して中継する。
802はシステムを構成する機能モジュールの1つである第1のマスタであり、第1のバス811に対してマスタとして接続し、第1のバス811に対してトランザクションを発行又はスレーブからのトランザクションを受信する。
803はシステムを構成する機能モジュールの1つである第2のマスタであり、第2のバス812に対してマスタとして接続し、第2のバス812に対してトランザクションを発行又はスレーブからのトランザクションを受信する。
805はシステムを構成する機能モジュールの1つである第1のスレーブであり、第1のバス811に対してスレーブとして接続し、第1のバス811からトランザクションを受信又はマスタからのリードに相当するトランザクションに対してはリードデータに相当するトランザクションを発行する。
806はシステムを構成する機能モジュールの1つである第2のスレーブであり、第2のバス812に対してスレーブとして接続し、第2のバス812からトランザクションを受信又はマスタからのリードに相当するトランザクションに対してはリードデータに相当するトランザクションを発行する。
808はシステムを構成する機能モジュールの1つである第1のブリッジであり、第1のバス811に対してスレーブとして接続し、第2のバス812に対してはマスタとして接続している。そして、第1のバス811から受信したトランザクションを、第2のバス812に適合したトランザクション形式として第2のバス812に対して発行する。また第2のバス812から受信したリードデータに相当するトランザクションを、第1のバス811に適合したトランザクション形式として第1のバス811に対して発行する。
814はトランザクションにより通信を行うポートであり、第1のマスタ802、第2のマスタ803、第1のスレーブ805、第2のスレーブ806、第1のブリッジ808、第1のバス811、及び第2のバス812に存在する。
815はクロック生成器801からのクロックを受信するポートであり、第1のマスタ802、第2のマスタ803、第1のスレーブ805、第2のスレーブ806、及び第1のブリッジ808に存在する。
[データ書き込み]
以上の構成において、まず、第1のマスタ802が第1のブリッジ808を介して第2のスレーブ806に対してライト要求のトランザクションの転送を行い、第2のスレーブ806がシミュレーションの実行中断をデバッグ機構に指示するか否かを決定する場合の処理について説明する。
以上の構成において、まず、第1のマスタ802が第1のブリッジ808を介して第2のスレーブ806に対してライト要求のトランザクションの転送を行い、第2のスレーブ806がシミュレーションの実行中断をデバッグ機構に指示するか否かを決定する場合の処理について説明する。
図9は、トランザクションを受け取った機能モジュールがシミュレーションの実行中断を指示するか否かを決定する処理を示すフローチャートである。
シミュレーションが開始されると、第1のマスタ802が、第1のバス811に対してトランザクションを発行できる状態であれば、アドレストランザクション700の発行を行う。第1のマスタ802は、アドレストランザクション700におけるハードウェアにマッピングされるアトリビュート情報704〜708の値を以下のように設定する。
transaction.read_write.value = WRITE;
transaction.address.value = 0x08000000;
transaction.write_data.value[0] = 0x76543210;
transaction.byte_enable.value = 0xf;
transaction.burst_length.value = 1;
また、第1のマスタ802はアドレストランザクション700におけるハードウェアにマッピングされないアトリビュート情報701〜703の値を以下のように設定する。
transaction.address.value = 0x08000000;
transaction.write_data.value[0] = 0x76543210;
transaction.byte_enable.value = 0xf;
transaction.burst_length.value = 1;
また、第1のマスタ802はアドレストランザクション700におけるハードウェアにマッピングされないアトリビュート情報701〜703の値を以下のように設定する。
transaction.dest_model_name.value = SLAVE2;
transaction.break.value = ON;
transaction.break_condition.value = NULL;
即ち、実施例1では、指示命令送信先モデル名称701に第2のスレーブ806を設定し、ブレーク指示オン/オフ702にオンを設定し、ブレーク条件703にヌル(NULL)を設定する。
transaction.break.value = ON;
transaction.break_condition.value = NULL;
即ち、実施例1では、指示命令送信先モデル名称701に第2のスレーブ806を設定し、ブレーク指示オン/オフ702にオンを設定し、ブレーク条件703にヌル(NULL)を設定する。
尚、アドレストランザクション700におけるハードウェアマッピングフラグ709は読み出し専用情報として以下に示す値が予め保持されており、第1のマスタ802が変更することはできない。
transaction.read_write.hw_flag == true
transaction.address.hw_flag == true
transaction.write_data.hw_flag == true
transaction.byte_enable.hw_flag == true
transaction.burst_length.hw_flag == true
transaction.dest_model_name.hw_flag == false
transaction.break.hw_flag == false
transaction.break_condition.hw_flag == false
第1のマスタ802は、ハードウェアにマッピングされるアトリビュート情報704〜708と、ハードウェアにマッピングされないアトリビュート情報701〜703の設定を行うと、第1のバス811に対してアドレストランザクション700を発行する。
transaction.address.hw_flag == true
transaction.write_data.hw_flag == true
transaction.byte_enable.hw_flag == true
transaction.burst_length.hw_flag == true
transaction.dest_model_name.hw_flag == false
transaction.break.hw_flag == false
transaction.break_condition.hw_flag == false
第1のマスタ802は、ハードウェアにマッピングされるアトリビュート情報704〜708と、ハードウェアにマッピングされないアトリビュート情報701〜703の設定を行うと、第1のバス811に対してアドレストランザクション700を発行する。
これにより、第1のバス811は第1のマスタ802からのアドレストランザクション700を受け取り、アドレストランザクション700におけるハードウェアにマッピングされるアトリビュート情報704〜708の値とハードウェアにマッピングされないアトリビュート情報701〜703の値を読み出す。
そして、第1のバス811はハードウェアにマッピングされるアトリビュート情報704〜708のうちアドレス705の値をデコードし、第1のブリッジ808に対して第1のマスタ802からのアドレストランザクション700を中継する。
一方、第1のブリッジ808では、第1のバス811からのトランザクションを受け取り可能な状態であればアドレストランザクション700を受け取り、そのアドレストランザクション700におけるハードウェアにマッピングされるアトリビュート情報704〜708の値と、ハードウェアにマッピングされないアトリビュート情報701〜703の値を読み出す(S901)。
ここで、第1のブリッジ808は、ハードウェアにマッピングされないアトリビュート情報701〜703のうち、デバッグ機構への指示命令の発行を行う機能モジュール名称701と第1のブリッジ808自身のモデル名称とを比較する(S902)。ここでは、今回受け取ったアドレストランザクション700において、デバッグ機構への指示命令の発行を行う機能モジュール名称701が“SLAVE2”と設定され、第1のブリッジ808自身のモデル名称が“BRIDGE1”のため、比較の結果は不一致となり(S902のNO)、デバッグに関する処理は行わない。
そして、第1のブリッジ808は、第2のバス812に対してトランザクションを発行できる状態であれば、受け取ったアドレストランザクション700を第2のバス812に対して発行する。
第2のバス812がバスアービトレーションを開始し、第1のブリッジ808に対してバス権を与えると、第1のブリッジ808からのアドレストランザクション700を受け取り、アドレストランザクション700におけるハードウェアにマッピングされるアトリビュート情報704〜708の値と、ハードウェアにマッピングされないアトリビュート情報701〜703の値を読み出す。
次に、第2のバス812はハードウェアにマッピングされるアトリビュート情報704〜708のうちアドレス705の値をデコードし、第2のスレーブ806に対して第1のブリッジ808からのアドレストランザクション700を中継する。
一方、第2のスレーブ806では、第2のバス812からのトランザクションを受け取り可能な状態であればアドレストランザクション700を受け取り、そのアドレストランザクション700におけるハードウェアにマッピングされるアトリビュート情報704〜708の値と、ハードウェアにマッピングされないアトリビュート情報701〜703の値を読み出す(S901)。
ここで、第2のスレーブ806は、ハードウェアにマッピングされないアトリビュート情報701〜703のうち、デバッグ機構への指示命令の発行を行う機能モジュール名称701と第2のスレーブ806自身のモデル名称とを比較する(S902)。ここでは、今回受け取ったアドレストランザクション700において、デバッグ機構への指示命令の発行を行う機能モジュール名称701が“SLAVE2”と設定され、第2のスレーブ806自身のモデル名称が“SLAVE2”のため、比較の結果は一致となる。
ここで比較結果が一致すると(S902のYES)、ハードウェアにマッピングされないアトリビュート情報701〜703のうち、シミュレーションの実行中断を要求するか否かの情報702を判定する(S903)。ここでは、今回受け取ったアドレストランザクション700において、シミュレーションの実行中断を要求するか否かの情報702が“オン”と設定されているので、シミュレーションの実行中断の要求があると判定する。
次に、シミュレーションの実行中断の要求があると判定した場合(S903のYES)、ハードウェアにマッピングされないアトリビュート情報701〜703のうち、シミュレーションの実行中断を指示する際の条件に関する情報703の確認を行う。ここでは、今回受け取ったアドレストランザクション700において、シミュレーションの実行中断を指示する際の条件に関する情報703が“NULL”と設定されているので、シミュレーションの実行中断を指示する際の条件が特に無いことを確認し、シミュレーションの実行中断の指示をシミュレータに対して行う(S904)。
尚、シミュレーションの実行中断を指示する際の条件に関する情報703には、様々な条件を設定することができ、例えばそのトランザクションが到達する時間に着目し、ある時間よりも到達した時間が遅い場合、シミュレーションの実行中断を指示する、
transaction.break_condition.value = sim_time > 2000;
や、第2のスレーブ806の状態に着目し、あるアドレスへのデータの書き込みが2度目以降であったらシミュレーションの実行を中断する、
transaction.break_condition.value = data_exists(address);
といった条件を設定することが考えられる。
transaction.break_condition.value = sim_time > 2000;
や、第2のスレーブ806の状態に着目し、あるアドレスへのデータの書き込みが2度目以降であったらシミュレーションの実行を中断する、
transaction.break_condition.value = data_exists(address);
といった条件を設定することが考えられる。
尚、トランザクションの到達時間は、例えば第1のマスタ802から第1のスレーブ805へ転送する場合などは第1のマスタ802が容易に予測することができるが、第1のマスタ802から第1のブリッジ808を介して第2のスレーブ806に転送を行う場合などは第2のマスタ803からの転送要求との関連で予測することが難しいため、所定の転送が到達した際の時間によりシミュレーションの実行を中断するか否かを判定するのが効果的である。
また、第1のマスタ802から第2のスレーブ806へデータを転送した後に、第2のマスタ803から第2のスレーブ806へ転送されたデータを上書きしないか否かを判定する場合など、あるモデル名称のアドレスへのデータの書き込みが2度目以降である場合に、シミュレーションの実行を中断するか否かを判定するのが効果的である。
そして、第2のスレーブ806は、ハードウェアにマッピングされないアトリビュート情報701〜703のうち、デバッグ機構への指示命令の発行を行う機能モジュール名称701と第2のスレーブ806自身のモデル名称との比較が一致しなかった場合、もしくはシミュレーションの実行中断から復帰した場合、ハードウェアにマッピングされるアトリビュート情報のアドレス705、ライトデータ706、バイトイネーブル707、バースト長708に従って該当するアドレスへデータを書き込む。
このように、アドレストランザクション700を受け取った機能モジュールが、ハードウェアにマッピングされないアトリビュート情報701〜703によりシミュレーションの実行中断を指示するか否かを決定し、デバッグ機構へ指示することができる。
[データ読み出し]
次に、第1のマスタ802が第1のブリッジ808を介して第2のスレーブ806に対してリード要求のトランザクションの転送を行い、第1のマスタ802に転送されるべきリードデータトランザクション710が間違えて第2のマスタ803に転送され、第2のマスタ803にてシミュレーションの実行中断が発行される場合について説明する。
次に、第1のマスタ802が第1のブリッジ808を介して第2のスレーブ806に対してリード要求のトランザクションの転送を行い、第1のマスタ802に転送されるべきリードデータトランザクション710が間違えて第2のマスタ803に転送され、第2のマスタ803にてシミュレーションの実行中断が発行される場合について説明する。
上述したライトの場合のトランザクションと同様に、シミュレーションが開始されると、第1のマスタ802が第1のバス811に対してトランザクションを発行できる状態であればアドレストランザクション700の発行を行う。ここで、第1のマスタ802は、そのアドレストランザクション700のハードウェアにマッピングされるアトリビュート情報704〜708の値を以下のように設定する。
transaction.read_write.value = READ;
transaction.address.value = 0x08000000;
transaction.write_data.value =
transaction.byte_enable.value = 0xf;
transaction.burst_length.value = 1;
ここでは、read_write704の値にリードを設定し、write_data706の値は不定とし、他は上述したライトの場合のトランザクションと同じ値を設定するものとする。
transaction.address.value = 0x08000000;
transaction.write_data.value =
transaction.byte_enable.value = 0xf;
transaction.burst_length.value = 1;
ここでは、read_write704の値にリードを設定し、write_data706の値は不定とし、他は上述したライトの場合のトランザクションと同じ値を設定するものとする。
また、第1のマスタ802はアドレストランザクション700におけるハードウェアにマッピングされないアトリビュート情報701〜703の値を以下のように設定する。
transaction.dest_model_name.value = NULL;
transaction.break.value = OFF;
transaction.break_condition.value = NULL;
ここでは、デバッグ機構への指示命令に関する設定は、全て“無効”の設定を行うこととする。
transaction.break.value = OFF;
transaction.break_condition.value = NULL;
ここでは、デバッグ機構への指示命令に関する設定は、全て“無効”の設定を行うこととする。
第1のマスタ802は、ハードウェアにマッピングされるアトリビュート情報704〜708と、ハードウェアにマッピングされないアトリビュート情報701〜703の設定を行うと、上述したライトの場合のトランザクションと同様に、第1のバス811に対してアドレストランザクション700を発行する。そして、第1のブリッジ808、第2のバス812を介して第2のスレーブ806にアドレストランザクション700を転送する。ここでは、デバッグ機構への指示命令に関する設定は全て無効になっているので、このトランザクションによるシミュレーションの実行中断は発生しない。
次に、第2のスレーブ806にアドレストランザクション700が転送されると、第2のスレーブ806はアドレストランザクション700のハードウェアにマッピングされるアトリビュート情報704〜708の値とハードウェアにマッピングされないアトリビュート情報701〜703の値を読み出す。
そして、ハードウェアにマッピングされるアトリビュート情報704〜708のうちアドレス705、バイトイネーブル707、バースト長708に従って該当するアドレスのデータを読み出す。
その後、第2のスレーブ806は、第2のバス812に対してリードデータトランザクション710の発行を開始する。
第2のスレーブ806は、リードデータトランザクション710におけるハードウェアにマッピングされるアトリビュート情報714の値を以下のように設定する。
transaction1.read_data.value[0] = 0x76543210;
また、リードデータトランザクション710のハードウェアにマッピングされないアトリビュート情報711〜713の値も以下のように設定する。
また、リードデータトランザクション710のハードウェアにマッピングされないアトリビュート情報711〜713の値も以下のように設定する。
transaction1.dest_model_name.value = MASTER2;
transaction1.break.value = ON;
transaction1.break_condition.value = NULL;
尚、リードトランザクション710におけるハードウェアマッピングフラグ719は読み出し専用情報として以下に示す値が予め保持されており、第2のスレーブ206が変更することはできない。
transaction1.break.value = ON;
transaction1.break_condition.value = NULL;
尚、リードトランザクション710におけるハードウェアマッピングフラグ719は読み出し専用情報として以下に示す値が予め保持されており、第2のスレーブ206が変更することはできない。
transaction1.read_data.hw_flag == true
transaction1.model_name.hw_flag == false
transaction.break.hw_flag == false
transaction.break_condition.hw_flag == false
第2のスレーブ806は、ハードウェアにマッピングされるアトリビュート情報714と、ハードウェアにマッピングされないアトリビュート情報711〜713の設定を行うと、第2のバス812に対してリードデータトランザクション710を発行する。
transaction1.model_name.hw_flag == false
transaction.break.hw_flag == false
transaction.break_condition.hw_flag == false
第2のスレーブ806は、ハードウェアにマッピングされるアトリビュート情報714と、ハードウェアにマッピングされないアトリビュート情報711〜713の設定を行うと、第2のバス812に対してリードデータトランザクション710を発行する。
これにより、第2のバス812は第2のスレーブ806からのリードデータトランザクション710を受け取り、第1のブリッジ808にリードデータトランザクション710の中継を行うはずが、第2のバス812におけるアービトレーションの失敗などにより、リードデータトランザクション710が第2のマスタ803に転送される。
一方、第2のマスタ803は、第2のバス812からのリードデータトランザクション710を受け取り、ハードウェアにマッピングされるアトリビュート情報714の値と、ハードウェアにマッピングされないアトリビュート情報711〜713の値を読み出す(S901)。
ここで、第2のマスタ803はハードウェアにマッピングされないアトリビュート情報711〜713のうち、デバッグ機構への指示命令の発行を行う機能モジュール名称711と第2のマスタ803自身のモデル名称とを比較する(S902)。ここでは、今回受け取ったリードデータトランザクション710において、デバッグ機構への指示命令の発行を行う機能モジュール名称711は“MASTER2”と設定され、第2のマスタ803自身のモデル名称も“MASTER2”のため、比較の結果は一致となる。
ここで比較結果が一致すると(S903のYES)、ハードウェアにマッピングされないアトリビュート情報711〜713のうち、シミュレーションの実行中断を要求するか否かの情報712を判定する(S903)。ここでは、今回受け取ったリードデータトランザクション710において、シミュレーションの実行中断を要求するか否かの情報712が“オン”と設定されているので、シミュレーションの実行中断の要求があると判定する。
次に、シミュレーションの実行中断の要求があると判定した場合(S903のYES)、ハードウェアにマッピングされないアトリビュート情報711〜713のうち、シミュレーションの実行中断を指示する際の条件に関する情報713の確認を行う。ここでは、今回受け取ったリードデータトランザクション710において、シミュレーションの実行中断を指示する際の条件に関する情報713は“NULL”と設定されているので、シミュレーションの実行中断を指示する際の条件が特に無いことを確認し、シミュレーションの実行中断の指示をシミュレータに対して行う(S904)。
実施例1では、デバッグ機構への指示命令の発行を行う機能モジュール名称を1つ設定して行う形で説明を行ったが、複数の機能モジュール名称を設定するようにしても良い。また、第1のブリッジ及び第1のマスタ(BRIDGE1 and MASTER1)以外というような設定ができるようにしても良い。このような設定を行うことにより、本来転送するつもりではない機能モジュールにトランザクションが到達した際に、シミュレーションの実行中断の指示をシミュレータに対して行うことができる。
次に、図面を参照しながら本発明にかかる実施例2について詳細に説明する。実施例2では、トランザクションに、ハードウェアにマッピングしないアトリビュート情報としてシミュレーション実行時の監視機構への指示命令を付加するものである。
図10は、実施例2におけるシミュレーションモデルで使用するトランザクションの構成の一例を示す図である。図10に示す構成は、図7に示した構成とほぼ同じであるが、リードデータトランザクション710におけるハードウェアであるバス信号にマッピングされるアトリビュート情報としてread error1015を追加したものである。またハードウェアであるバス信号にマッピングされないアトリビュート情報としてシミュレーション時の監視機能に対する設定を行う各機能モジュールの名称1001、その機能モジュールにおける監視項目1002、その監視項目に対する設定値1003をトランザクションに保持するものである。
また、実施例2の説明においても、実施例1の説明で用いた図8に示すシステム構成を用いる。
まず、第1のマスタ802が第1のブリッジ808を介して第2のバス812のアドレス領域へトランザクションの転送を行う際に、第2のバス812が監視機構に対する設定を制御する場合について説明する。
尚、トランザクションを受信した機能モジュールがハードウェアにマッピングされないアトリビュート情報1000の監視項目1002を実行する機能モジュールか否かの判定は、実施例1と同様に、モデル名称1001を参照して判定するものとする。
シミュレーションが開始されると、第1のマスタ802が、第1のバス811に対してトランザクションを発行できる状態であれば、アドレストランザクション1000の発行を行う。第1のマスタ802は、アドレストランザクション1000におけるハードウェアにマッピングされるアトリビュート情報1004〜1008の値を以下のように設定する。
transaction.read_write.value = READ;
transaction.address.value = 0x09000000;
transaction.byte_enable.value = 0xf;
transaction.burst_length.value = 1;
また、第1のマスタ802はアドレストランザクション1000におけるハードウェアにマッピングされないアトリビュート情報1001〜1003の値を以下のように設定する。
transaction.address.value = 0x09000000;
transaction.byte_enable.value = 0xf;
transaction.burst_length.value = 1;
また、第1のマスタ802はアドレストランザクション1000におけるハードウェアにマッピングされないアトリビュート情報1001〜1003の値を以下のように設定する。
transaction.dest_model_name.value = BUS2;
transaction.monitoring_item.value = ADDRESS_ERROR;
transaction.monitoring_setting.value = BYPASS;
尚、実施例1と同様に、アドレストランザクション1000のハードウェアマッピングフラグ1009は読み出し専用情報として以下に示す値が予め保持されており、第1のマスタ802が変更することはできない。
transaction.monitoring_item.value = ADDRESS_ERROR;
transaction.monitoring_setting.value = BYPASS;
尚、実施例1と同様に、アドレストランザクション1000のハードウェアマッピングフラグ1009は読み出し専用情報として以下に示す値が予め保持されており、第1のマスタ802が変更することはできない。
transaction.read_write.hw_flag == true
transaction.address.hw_flag == true
transaction.write_data.hw_flag == true
transaction.byte_enable.hw_flag == true
transaction.burst_length.hw_flag == true
transaction.dest_model_name.hw_flag == false
transaction.monitoring_item.hw_flag == false
transaction.monitoring_setting.hw_flag == false
第1のマスタ802は、ハードウェアにマッピングされるアトリビュート情報1004〜1008と、ハードウェアにマッピングされないアトリビュート情報1001〜1003の設定を行うと、第1のバス811に対してアドレストランザクション1000を発行する。
transaction.address.hw_flag == true
transaction.write_data.hw_flag == true
transaction.byte_enable.hw_flag == true
transaction.burst_length.hw_flag == true
transaction.dest_model_name.hw_flag == false
transaction.monitoring_item.hw_flag == false
transaction.monitoring_setting.hw_flag == false
第1のマスタ802は、ハードウェアにマッピングされるアトリビュート情報1004〜1008と、ハードウェアにマッピングされないアトリビュート情報1001〜1003の設定を行うと、第1のバス811に対してアドレストランザクション1000を発行する。
これにより、第1のバス811は第1のマスタ802からのアドレストランザクション1000を受け取り、アドレストランザクション1000におけるハードウェアにマッピングされるアトリビュート情報1004〜1008の値と、ハードウェアにマッピングされないアトリビュート情報1001〜1003の値を読み出す。
ここで、第1のバス811は、ハードウェアにマッピングされないアトリビュート情報1001〜1003のうち、シミュレーション時の監視機能に対する設定を行う各機能モジュールの名称1001と第1のバス811自身のモデル名称とを比較する。ここでは、今回受け取ったアドレストランザクション1000において、シミュレーション時の監視機能に対する設定を行う機能モジュール名称が“BUS2”と設定され、第1のバス811自身のモデル名称が“BUS1”のため、比較の結果は不一致となり、第1のバス811が有しているシミュレーション時の監視機能に対する設定処理は行わない。
そして、第1のバス811はハードウェアにマッピングされるアトリビュート情報1004〜1008のうちアドレス1005の値をデコードし、第1のブリッジ808に対して第1のマスタ802からのトランザクション1000を中継する。
一方、第1のブリッジ808では、第1のバス811からのアドレストランザクション1000が受け取り可能な状態であればアドレストランザクション1000を受け取り、そのアドレストランザクション1000におけるハードウェアにマッピングされるアトリビュート情報1004〜1008の値と、ハードウェアにマッピングされないアトリビュート情報1001〜1003の値を読み出す。
ここで、第1のブリッジ808は、第1のバス811と同様に、ハードウェアにマッピングされないアトリビュート情報1001〜1003のうち、シミュレーション時の監視機能に対する設定を行う各機能モジュールの名称1001と第1のブリッジ808自身のモデル名称とを比較する。ここで、第1のブリッジ808自身のモデル名称が“BRIDGE1”のため、比較の結果は不一致となり、第1のブリッジ808が有しているシミュレーション時の監視機能に対する設定処理は行わない。
そして、第1のブリッジ808は、第2のバス812に対してトランザクションを発行できる状態であれば、受け取ったアドレストランザクション1000を第2のバス812に対する発行する。
第2のバス812がバスアービトレーションを開始し、第1のブリッジ808に対してバス権を与えると、第1のブリッジ808からのアドレストランザクション1000を受け取り、アドレストランザクション1000におけるハードウェアにマッピングされるアトリビュート情報1004〜1008の値と、ハードウェアにマッピングされないアトリビュート情報1001〜1003の値を読み出す。
次に、第2のバス812はハードウェアにマッピングされないアトリビュート情報1001〜1003のうちシミュレーション時の監視機能に対する設定を行う各機能モジュールの名称1001と第2のバス812自身のモデル名称とを比較する。ここでは、今回受け取ったアドレストランザクション1000において、シミュレーション時の監視機能に対する設定を行う機能モジュール名称が“BUS2”と設定され、第2のバス812自身のモデル名称が“BUS2”のため、比較の結果は一致となる。
ここで比較結果が一致すると、次にハードウェアにマッピングされないアトリビュート情報1001〜1003のうち、その機能モジュールにおける監視項目とその監視項目に対する設定値を用いて、その機能モジュールにおける監視項目の設定を行う。
ここで、今回受け取ったアドレストランザクション1000において、監視項目1002がADDRESS_ERROR、監視項目設定1003の値がBYPASSとなっているので、第2のバス812が有しているアドレストランザクション時の、例えば転送先が定義されていないことにより発生する、アドレスデコードエラーに対する監視機能に対して、この転送に関しては監視処理を行わないことにするという設定を行う。
ここで、第2のバス812はハードウェアにマッピングされるアトリビュート情報1004〜1008のうちアドレス1005の値をデコードし、その結果、転送先が、例えば第2のスレーブ806というように正しく選択されれば、上述した実施例1と同様に第2のスレーブ806に対して第1のブリッジ808からのトランザクション1000を中継し、第2のスレーブ806は第2のバス812に対してリードデータトランザクション1010の発行を行う。しかし、実施例2では、第2のバス812におけるアドレスのデコードの結果、転送先が定義されていないことが判明し、第2のバス812はアドレスデコードエラーを検知し、シミュレーションの停止を要請するということになる。
しかし、第2のバス812に対する監視機能、ここではアドレスデコードエラーに対する監視機能をこの転送に関しては処理を行わないように設定したので、実際にはアドレスコードエラーによるシミュレーションの停止要請は発行されず、シミュレーションが継続して実行されることになる。
また、ここで、第2のバス812は、他の第2のバスに接続するスレーブの代わりに、リードデータトランザクション1010を第1のブリッジ808に対して発行する。この時、リードデータトランザクション1010のハードウェアにマッピングされるアトリビュート情報1014、1015の値を以下のように設定する。
transaction1.read_data.value[0] = 0x00000000;
transaction1.read_error.value = 0x1;
また、リードデータトランザクション1010のハードウェアにマッピングされないアトリビュート情報1001〜1003の値も以下のように設定する。
transaction1.read_error.value = 0x1;
また、リードデータトランザクション1010のハードウェアにマッピングされないアトリビュート情報1001〜1003の値も以下のように設定する。
transaction1.dest_model_name.value = NULL;
transaction1.monitoring_item.value = NULL;
transaction1.monitoring_setting.value = NULL;
このトランザクションは、第1のブリッジ808、第1のバス811を介して、第1のマスタ802に転送され、リード時のエラーとして伝えられる。
transaction1.monitoring_item.value = NULL;
transaction1.monitoring_setting.value = NULL;
このトランザクションは、第1のブリッジ808、第1のバス811を介して、第1のマスタ802に転送され、リード時のエラーとして伝えられる。
上述の手法を用いることにより、バスの機能として実装されているデフォルトスレーブの機能など、シミュレーションの強制終了を伴うような特殊なハードウェアの状態を確認するような事項を、テストシーケンスの一部として容易に行うことができる。
以上説明したように、実施例によれば、バスを介して通信されるトランザクションに、ハードウェアの信号に相当することを示すハードウェアマッピングフラグを設け、ハードウェアの信号に無関係な情報を付加できるようにし、トランザクションを発行するモジュールにおいて情報を付加し、トランザクションを受信したモジュールにおいて付加情報を利用できるようにしたため、以下のような効果が得られる。
(1)複数のバス及びブリッジを有するようなシステムのシミュレーションにおいても、シミュレーションの実行中断要求などデバッガへの指示が、実行時間による指定やプログラムのステップによる指示といった方法でなく、特定のトランザクションが特定の位置に転送されたときというような、より詳細な指示が行えるようになる。このため、シミュレーションにおけるデバッグや性能検証、機能検証作業にかかる時間を短縮することが可能である。
(2)バス及び機能モジュール内に保持されている情報を用いなければ発見できないような間違いを、バスモニタを一切使うこと無く、シミュレーション中に動的に発見することが可能である。
(3)バス及び機能モジュールに、必要な情報を取得するためのモニタ専用メソッドを用意することなく、既存のトランザクション操作メソッドを拡張することで、設計者がシミュレーション中のバス及び機能モジュール内の必要な情報を確認することが可能となる。また、これによってモニタ専用メソッドを呼ぶことによるイベントの増加、更にはシミュレーション速度の低下を避けることが可能となる。
(4)バス及び機能モジュールが、トランザクション処理と同時にその内部の情報を利用してエラーチェック等の処理を行うことができ、シミュレーション後ではなくシミュレーション中に動的にそれらの情報を設計者に通知することが可能となる。また、これによってエラー発生後の無駄なシミュレーション実行を回避し、設計時間の短縮が可能となる。
(5)バス及び機能モジュールが所持する監視機能の設定を、実行時間による指定やプログラムのステップによる指示といった方法でなく、特定のトランザクションが特定の位置に転送されたときというような、より詳細な指示が行えるようになる。このため、シミュレーションにおけるデバッグや機能検証作業にかかる時間を短縮することが可能である。
(1)複数のバス及びブリッジを有するようなシステムのシミュレーションにおいても、シミュレーションの実行中断要求などデバッガへの指示が、実行時間による指定やプログラムのステップによる指示といった方法でなく、特定のトランザクションが特定の位置に転送されたときというような、より詳細な指示が行えるようになる。このため、シミュレーションにおけるデバッグや性能検証、機能検証作業にかかる時間を短縮することが可能である。
(2)バス及び機能モジュール内に保持されている情報を用いなければ発見できないような間違いを、バスモニタを一切使うこと無く、シミュレーション中に動的に発見することが可能である。
(3)バス及び機能モジュールに、必要な情報を取得するためのモニタ専用メソッドを用意することなく、既存のトランザクション操作メソッドを拡張することで、設計者がシミュレーション中のバス及び機能モジュール内の必要な情報を確認することが可能となる。また、これによってモニタ専用メソッドを呼ぶことによるイベントの増加、更にはシミュレーション速度の低下を避けることが可能となる。
(4)バス及び機能モジュールが、トランザクション処理と同時にその内部の情報を利用してエラーチェック等の処理を行うことができ、シミュレーション後ではなくシミュレーション中に動的にそれらの情報を設計者に通知することが可能となる。また、これによってエラー発生後の無駄なシミュレーション実行を回避し、設計時間の短縮が可能となる。
(5)バス及び機能モジュールが所持する監視機能の設定を、実行時間による指定やプログラムのステップによる指示といった方法でなく、特定のトランザクションが特定の位置に転送されたときというような、より詳細な指示が行えるようになる。このため、シミュレーションにおけるデバッグや機能検証作業にかかる時間を短縮することが可能である。
尚、本発明は複数の機器(例えば、ホストコンピュータ,インターフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体としては、例えばフロッピー(登録商標)ディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
700 アドレストランザクション
701 指示命令送信先モデル名称
702 ブレーク指示オン/オフ
703 ブレーク条件
704 リード/ライト
705 アドレス
706 ライトデータ
707 バイトイネーブル
708 バースト長
709 ハードウェアマッピングフラグ
710 リードデータトランザクション
711 指示命令送信先モデル名称
712 ブレーク指示オン/オフ
713 ブレーク条件
714 リードデータ
719 ハードウェアマッピングフラグ
801 クロック生成器
802 第1のマスタ
803 第2のマスタ
805 第1のスレーブ
806 第2のスレーブ
808 第1のブリッジ
811 第1のバス
812 第2のバス
814 トランザクションポート
815 信号ポート
701 指示命令送信先モデル名称
702 ブレーク指示オン/オフ
703 ブレーク条件
704 リード/ライト
705 アドレス
706 ライトデータ
707 バイトイネーブル
708 バースト長
709 ハードウェアマッピングフラグ
710 リードデータトランザクション
711 指示命令送信先モデル名称
712 ブレーク指示オン/オフ
713 ブレーク条件
714 リードデータ
719 ハードウェアマッピングフラグ
801 クロック生成器
802 第1のマスタ
803 第2のマスタ
805 第1のスレーブ
806 第2のスレーブ
808 第1のブリッジ
811 第1のバス
812 第2のバス
814 トランザクションポート
815 信号ポート
Claims (8)
- システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置であって、
ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信する受信手段と、
前記トランザクションを送信する送信手段とを備え、
前記ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時のデバッグ機構への指示命令を含むことを特徴とするシミュレーション装置。 - 前記指示命令は、少なくともシミュレーションの実行を中断する命令及び該中断の条件であることを特徴とする請求項1記載のシミュレーション装置。
- 前記ハードウェアにマッピングしないアトリビュート情報に、前記指示命令を実行する装置名称を含み、当該装置名称の装置がシミュレーション実行時のデバッグ機構への指示命令を行うことを特徴とする請求項1記載のシミュレーション装置。
- システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置であって、
ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信する受信手段と、
前記トランザクションを送信する送信手段とを備え、
前記ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時の監視機構への指示命令を含むことを特徴とするシミュレーション装置。 - 前記指示命令は、少なくともアドレスデコードエラーに関する命令であることを特徴とする請求項4記載のシミュレーション装置。
- 前記指示命令は、少なくともデータリードエラーに関する命令であることを特徴とする請求項4記載のシミュレーション装置。
- システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置のシミュレーション方法であって、
ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信する工程と、
前記トランザクションを送信する工程とを有し、
前記ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時のデバッグ機構への指示命令を含むことを特徴とするシミュレーション方法。 - システム記述言語によりバス上の通信をトランザクションにより行うトランザクションレベルで記述されたシミュレーション装置のシミュレーション方法であって、
ハードウェアにマッピングする情報であるか否かを示す情報と、ハードウェアにマッピングしないアトリビュート情報を含むトランザクションを受信する工程と、
前記トランザクションを送信する工程とを有し、
前記ハードウェアにマッピングしないアトリビュート情報に、シミュレーション実行時の監視機構への指示命令を含むことを特徴とするシミュレーション方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004264592A JP2006079464A (ja) | 2004-09-10 | 2004-09-10 | シミュレーション装置及びシミュレーション方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004264592A JP2006079464A (ja) | 2004-09-10 | 2004-09-10 | シミュレーション装置及びシミュレーション方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006079464A true JP2006079464A (ja) | 2006-03-23 |
Family
ID=36158844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004264592A Withdrawn JP2006079464A (ja) | 2004-09-10 | 2004-09-10 | シミュレーション装置及びシミュレーション方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006079464A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010181961A (ja) * | 2009-02-03 | 2010-08-19 | Fujitsu Ltd | シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法 |
-
2004
- 2004-09-10 JP JP2004264592A patent/JP2006079464A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010181961A (ja) * | 2009-02-03 | 2010-08-19 | Fujitsu Ltd | シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8020124B2 (en) | Various methods and apparatuses for cycle accurate C-models of components | |
US6876941B2 (en) | Testing compliance of a device with a bus protocol | |
KR100483636B1 (ko) | 에뮬레이션및시뮬레이션을이용한설계검증방법및장치 | |
US6651228B1 (en) | Intent-driven functional verification of digital designs | |
US7472361B2 (en) | System and method for generating a plurality of models at different levels of abstraction from a single master model | |
KR101375171B1 (ko) | 시스템 온 칩 모델 검증 방법 및 장치 | |
US6571204B1 (en) | Bus modeling language generator | |
CN112949233B (zh) | Fpga芯片的自动化开发方法及装置、电子设备 | |
US20080133206A1 (en) | Method of switching external models in an automated system-on-chip integrated circuit design verification system | |
US20220292248A1 (en) | Method, system and verifying platform for system on chip verification | |
JP4599266B2 (ja) | シミュレーション装置及びシミュレーション方法 | |
US7979822B2 (en) | Apparatus and method for performing a sequence of verification tests to verify a design of a data processing system | |
JP2002259157A (ja) | 回路内エミュレーション装置及びそのチップ設計方法、及び回路内エミュレーションシステム | |
Jindal et al. | Verification of transaction-level SystemC models using RTL testbenches | |
US8036874B2 (en) | Software executing device and co-operation method | |
US7865345B2 (en) | Simulation apparatus and method | |
US20050144436A1 (en) | Multitasking system level platform for HW/SW co-verification | |
JP2005108007A (ja) | Lsi設計検証装置及びlsi設計検証方法 | |
JP2007058431A (ja) | シミュレーションモデル、及びシミュレーション方法 | |
JP2006079464A (ja) | シミュレーション装置及びシミュレーション方法 | |
JP2006079370A (ja) | シミュレーション装置及びシミュレーション方法 | |
US7313731B2 (en) | Systems and methods for identifying erroneous transactions | |
JP2006221474A (ja) | シミュレーション装置及びその履歴情報記録方法 | |
JP4498206B2 (ja) | システムlsiシミュレーション装置 | |
Dellacherie et al. | Improve-HDL-a DO-254 formal property checker used for design and verification of avionics protocol controllers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20071204 |