(57)【要約】【課題】バスアーキテクチャの変更があった場合にTLモデルの変更あるいは書き換えを不要にする半導体集積回路シミュレーション装置を提供する。【解決手段】実施形態によれば、シミュレーション装置１は、半導体集積回路に含まれるバスのバスアーキテクチャ情報を取得するバスアーキテクチャ情報取得部と、取得したバスアーキテクチャ情報に基づいて、バスアーキテクチャに適合する転送サイズを算出する転送サイズ算出部と、シミュレーション実行部とを有する。シミュレーション実行部は、半導体集積回路に含まれるバスイニシエータからのトランザクションを、転送サイズに適合するサイズのトランザクションに変換してバスへ出力するトランザクション変換部を設定して、半導体集積回路のシミュレーションを行う。【選択図】図２
2012203451.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路に含まれるバスのバスアーキテクチャ情報を取得するバスアーキテクチャ情報取得部と、
取得した前記バスアーキテクチャ情報に基づいて、前記バスアーキテクチャに適合する転送サイズを算出する転送サイズ算出部と、
前記半導体集積回路に含まれるバスイニシエータからのトランザクションを、前記転送サイズに適合するサイズのトランザクションに変換して前記バスへ出力するトランザクション変換部を設定して、前記半導体集積回路のシミュレーションを行うシミュレーション実行部と、
を有することを特徴とする半導体集積回路シミュレーション装置。
【請求項２】
前記トランザクション変換部は、前記バスイニシエータからのトランザクションのサイズが、前記転送サイズよりも大きい場合は、前記バスイニシエータからのトランザクションを前記転送サイズのトランザクションに分割して複数の分割トランザクションを生成して、前記バスへ前記複数の分割トランザクションを出力し、前記バスイニシエータからのトランザクションのサイズが、前記転送サイズよりも小さい場合は、前記バスイニシエータからのトランザクションを前記転送サイズのトランザクションになるように統合して１つの統合トランザクションを生成して、前記バスへ前記統合トランザクションを出力することを特徴とする請求項１に記載の半導体集積回路シミュレーション装置。
【請求項３】
前記トランザクション変換部は、前記バスイニシエータからのトランザクションのサイズが前記転送サイズよりも大きい場合、前記バスイニシエータからのトランザクションが前記転送サイズのトランザクションに分割されて出力されたとした場合の仮想出力時間情報の生成処理を実行し、前記バスイニシエータからのトランザクションの分割処理は実行しないことを特徴とする請求項１又は２に記載の半導体集積回路シミュレーション装置。
【請求項４】
半導体集積回路に含まれるバスターゲットがトランザクションを受理して動作開始をする開始条件を含むバスターゲット情報を取得するバスターゲット情報取得部と、
取得した前記バスターゲット情報に基づいて、前記バスターゲットに適合する転送サイズを算出する転送サイズ算出部と、
前記半導体集積回路に含まれるバスからのトランザクションを、前記転送サイズに適合するサイズのトランザクションに変換して前記バスターゲットへ出力するトランザクション変換部を設定して、前記半導体集積回路のシミュレーションを行うシミュレーション実行部と、
を有することを特徴とする半導体集積回路シミュレーション装置。
【請求項５】
バスアーキテクチャ情報取得部、転送サイズ算出部及びシミュレーション実行部を用いて半導体集積回路のシミュレーションを行う方法であって、
前記バスアーキテクチャ情報取得部により、前記半導体集積回路に含まれるバスのバスアーキテクチャ情報を取得し、
前記転送サイズ算出部により、取得した前記バスアーキテクチャ情報に基づいて、前記バスアーキテクチャに適合する転送サイズを算出し、
前記シミュレーション実行部により、前記半導体集積回路に含まれるバスイニシエータからのトランザクションを、前記転送サイズに適合するサイズのトランザクションに変換して前記バスへ出力するトランザクション変換部を設定して、前記半導体集積回路のシミュレーションを行う、
ことを特徴とする半導体集積回路のシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体集積回路シミュレーション装置及び半導体集積回路のシミュレーション方法に関する。
【背景技術】
【０００２】
近年、システムLSI（Large Scale Integration）と呼ばれる半導体集積回路が広く利用されている。システムLSIは、複数の機能ブロックと、複数の機能ブロック間を接続するバスを有する半導体集積回路である。このシステムLSIの性能は、そのシステムアーキテクチャに依存するところが大きい。  
しかし、そのアーキテクチャは、そのシステムを構成するハードウエア及びプロセッサの構成、使用するプロセッサの種類と動作周波数、システム上で実行される各処理をどのハードウエアあるいはプロセッサに割り当てるか、割り振った各処理の実行時間、バス幅等のバスアーキテクチャ、等の多くの要素を考慮して決定される。
【０００３】
通常、そのアーキテクチャの決定のためにシミュレーション技術が利用される。シミュレーションでは、種々の要素を考慮して、候補として挙がった複数のアーキテクチャを実現するモデルをシミュレーション装置あるいはブレッドボード等の実機上で動作させ、バス上のトランザクション情報、バス競合によるバス使用待ち情報、バスのスループット・レイテンシ情報などを得て比較することが行われる。しかし、シミュレーションには多くの時間を要するため、そのシミュレーションの高速化が求められている。
【０００４】
そのシミュレーションの高速化のために、モデルに含まれる機能ブロック間のデータのやりとりをRTL(Register Transfer Level)の一般的なピンインターフェース（以下、Pin I/Fという）を使用せずに、データ量や転送にかかる時間を含むバストランザクション情報としてひとまとめにしてやり取りするトランザクションレベルインターフェースすなわちトランザクションレベルモデル（以下、TLモデルという）を使用したシミュレーションが行われている。
【０００５】
システムアーキテクチャの検討においてTL モデルを用いる場合、TLモデルの内容を、想定するバスアーキテクチャに応じて変更しなければならない場合がある。例えば、バスマスタとしてのバスイニシエータのモデルが、バススレーブであるバスターゲットのモデルへトランザクションを発行するときに、バスイニシエータあるいはバスターゲットのTLモデルが発行あるいは受理するトランザクションがバスアーキテクチャに適合しない場合がある。そのような場合、バスアーキテクチャに適合する形式でトランザクションを発行あるいは受理するように、そのモデルを変更すなわち書き換えられなければならない。
【０００６】
しかし、バスアーキテクチャに適合するようにバスイニシエータあるいはバスターゲットのモデルを変更することは、繁雑な作業である。種々のシステムアーキテクチャを検討する際に、バスアーキテクチャの変更の度に、変更されたバスアーキテクチャに適合するようにバスイニシエータあるいはバスターゲットのモデルを毎回変更することは、シミュレーション時間の短縮化すなわちシミュレーションの高速化を阻害するものとなっている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−１３２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、本実施形態は、バスアーキテクチャの変更があった場合にTLモデルの変更あるいは書き換えを不要にする半導体集積回路シミュレーション装置及び半導体集積回路のシミュレーション方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態の半導体集積回路シミュレーション装置は、半導体集積回路に含まれるバスのバスアーキテクチャ情報を取得するバスアーキテクチャ情報取得部と、取得した前記バスアーキテクチャ情報に基づいて、前記バスアーキテクチャに適合する転送サイズを算出する転送サイズ算出部と、シミュレーション実行部とを有する。シミュレーション実行部は、前記半導体集積回路に含まれるバスイニシエータからのトランザクションを、前記転送サイズに適合するサイズのトランザクションに変換して前記バスへ出力するトランザクション変換部を設定して、前記半導体集積回路のシミュレーションを行う。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係わる半導体集積回路シミュレーション装置の構成を示す構成図である。
【図２】第１の実施形態に係わるシミュレーション装置１のブロック構成図である。
【図３】第１の実施形態に係わる、システムLSIのシステムアーキテクチャのトランザクションレベルモデル図の例を示す図である。
【図４】バスイニシエータのTLモデルの書き換えの例を説明するための図である。
【図５Ａ】第１の実施形態に係わるトランザクションタイミング図の例を示す図である。
【図５Ｂ】第１の実施形態に係わるトランザクションタイミング図の他の例を示す図である。
【図５Ｃ】第１の実施形態に係わるトランザクションタイミング図のさらに他の例を示す図である。
【図６】第１の実施形態に係わるトランザクション変換部１６におけるトランザクションの分割処理の例を示すフローチャートである。
【図７】第１の実施形態に係わる、分割トランザクションを出力するトランザクション変換部の処理を説明するための図である。
【図８】第１の実施形態に係わるトランザクション変換部１６におけるトランザクションの統合処理の例を示すフローチャートである。
【図９】第１の実施形態に係わる統合トランザクションを出力するトランザクション変換部の処理を説明するための図である。
【図１０】第１の実施形態に係わる、トランザクション変換部がバスイニシエータ毎に設けられているトランザクションレベルモデル図である。
【図１１】第２の実施形態に係るシミュレーション装置１Aのブロック構成図である。
【図１２】第２の実施形態に係る、システムLSIのシステムアーキテクチャのトランザクションレベルモデル図である。
【図１３】第２の実施形態に係る、トランザクション変換部１６Aにおけるトランザクションの分割処理の例を示すフローチャートである。
【図１４】第２の実施形態に係る、分割トランザクションを出力するトランザクション変換部１６Aの処理を説明するための図である。
【図１５】第２の実施形態に係る、トランザクション変換部１６におけるトランザクションの統合処理の例を示すフローチャートである。
【図１６】第２の実施形態に係る、統合トランザクションを出力するトランザクション変換部の処理を説明するための図である。
【図１７】第２の実施形態に係る、トランザクション変換部が、バスターゲット毎に設けられているトランザクションレベルモデル図である。
【図１８】第３の実施形態に係るシステムLSIのシステムアーキテクチャのトランザクションレベルモデル図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施形態を説明する。  
（第１の実施形態）
（構成）
図１は、本実施形態に係わる半導体集積回路シミュレーション装置（以下、シミュレーション装置という）の構成を示す構成図である。シミュレーション装置１は、各種ソフトウエアプログラムを実行する中央処理装置（以下、CPUという）２ａを有する本体装置２と、本体装置２と接続され各種ソフトウエアプログラム等を記憶する記憶部３と、本体装置２と接続された表示部４と有して構成されている。そして、ユーザが、各種プログラムを実行させるための指示を与えるための、キーボード５とマウス６の入力装置が、本体装置２には接続されている。
【００１２】
記憶部３には、各種ソフトウエアプログラムとして、半導体集積回路のシミュレーションを行うシミュレーションプログラムSPと、トランザクションレベルモデルデータすなわちプログラム（以下、TLモデルプログラムという）TLPが記憶されている。本体装置２のCPU２ａは、システムアーキテクチャ検討作業者であるユーザの指示に応じて、記憶部３に記憶されたTLモデルプログラムTLPについてシミュレーションプログラムSPを実行する。
【００１３】
従って、ユーザは、半導体集積回路のTLモデルプログラムTLPを作成して、シミュレーションプログラムSPを実行して、設計する半導体集積回路のシミュレーションを行うことができる。
【００１４】
図２は、シミュレーション装置１のブロック構成図である。図２の各ブロックは、シミュレーションプログラムSPの処理により実現される。シミュレーションプログラムSPの処理は、CPU２ａにより実行される。  
図２に示すように、シミュレーション装置１は、TLモデル入力部S1、バスアーキテクチャ情報取得部S2、転送サイズ算出部S3、シミュレーション実行部S4及びシミュレーション結果出力部S5を有する。
【００１５】
まず、ユーザがキーボード５等の入力装置を用いてシミュレーションの対象となるTLモデルプログラムTLPを入力あるいは指定する。CPU２ａは、その指定されたTLモデルプログラムTLP から、各TLモデルの情報を入力し、RAM等に保持する。TLモデル入力部S1は、各TLモデルが入力される処理部である。
【００１６】
次に、ユーザは、バス１５のバスアーキテクチャ情報を入力して設定する。CPU２ａは、設定されたバスアーキテクチャ情報を取得し、その後の処理用のデータとしてRAM等に保持する。ここでは、ユーザが指定した、バスのバス幅、バースト長及び転送にかかる時間の情報が設定される。バスアーキテクチャ情報取得部S2は、半導体集積回路に含まれるバスのバスアーキテクチャ情報を取得する処理部である。
【００１７】
CPU２ａは、設定されたバスアーキテクチャの情報から、後述するトランザクション変換部が出力するトランザクションデータの転送サイズを演算して求める。転送サイズ算出部S3は、取得したバスアーキテクチャ情報に基づいて、バスアーキテクチャに適合する転送サイズを算出する処理部である。
【００１８】
後述するように、トランザクション変換部は、設定された転送サイズで、トランザクションデータを分割あるいは統合してバスに出力する。バスイニシエータとバス間に配置されたトランザクション変換部を含むTLモデルプログラムTLPのシミュレーションが、CPU２ａによって行われる。シミュレーション実行部S4は、半導体集積回路に含まれるバスイニシエータからのトランザクションを、転送サイズに適合するサイズのトランザクションに変換してバスへ出力するトランザクション変換部（後述する）を設定して、半導体集積回路のシミュレーションを行う処理部である。
【００１９】
CPU２ａは、シミュレーション結果を出力し、表示装置４の画面上に表示する。シミュレーション結果は、例えば、トランザクションタイミング図などである。シミュレーション結果出力部S5は、シミュレーション実行部S4によるシミュレーションの結果を出力する処理部である。
【００２０】
なお、本実施形態は、シミュレーションの実行の前に、バスアーキテクチャの情報の設定と転送サイズの計算が行われる例で説明するが、点線で示すように、シミュレーションの実行（S4）の中で、バスアーキテクチャの情報の設定及び変更（S2）とその設定等に基づく転送サイズの計算（S3）を行うようにしてもよい。
【００２１】
次に、トランザクションレベルモデルの例について説明する。  
図３は、システムLSIのシステムアーキテクチャのトランザクションレベルモデル図の例を示す図である。トランザクションレベルモデル図は、シミュレーション時に使用されるシステムLSIのアーキテクチャを示す図である。一般に、システムLSIは、複数の機能ブロックが、１又は複数のバスを介して接続され、複数の機能ブロックは、所定の１又は複数のバスを介してデータのやりとりを行っているが、図３では、本実施形態の説明を簡単にするために、４つの機能ブロックとそのブロック間を接続する１つのバスのみを示している。データのリードあるいはライトに関わるデータの転送処理の単位がトランザクションである。
【００２２】
図３において、例として、バスイニシエータ１１，１２と、バスターゲット１３，１４とはバス１５を介して接続されている。４つの機能ブロックは、バスイニシエータ１１が所定の時刻から所定のトランザクションIT1をバスターゲット１３へ送信し、バスイニシエータ１２も前記の所定の時刻とは異なる時刻から所定のトランザクションIT2をバスターゲット１４へ送信し、バスターゲット１３と１４のそれぞれにおいて所定の処理が実行される、という処理条件を有している。
【００２３】
例えば、バスイニシエータ１１は、バス１５を介して所定の時刻t1から、64バイトのトランザクションIT1をバスターゲット１３へ送信するTLモデルであり、バスイニシエータ１１からのデータを受信するバスターゲット１３は、64バイト分のトランザクションが揃った時点、所定の処理を実行するという動作条件を有するTLモデルである。同様に、バスイニシエータ１２は、バス１５を介して所定の時刻t2から、32バイトのトランザクションIT2をバスターゲット１４へ送信するTLモデルであり、バスターゲット１４は、32バイト分のトランザクションが揃った時点、所定の処理を実行するという動作条件を有するTLモデルである。バス１５は、指定されたバス幅とバースト長を有するバスアーキテクチャのTLモデルである。
【００２４】
例えば、ユーザがバス１５のバス幅を32ビット、バースト長を4に設定してシミュレーションを行う場合を想定する。バス１５は、32ビット幅でバースト長が4なので、バスイニシエータ１１と１２は、それぞれ64バイトと32バイトのトランザクションをそのままバス１５へ出力できない。  
従来は、バスイニシエータ１１のTLモデルの内容を書き換えて、64バイトのトランザクションを４つの16バイトのトランザクションに分けて送信するTLモデルに書き換え、同様に、バスイニシエータ１２のTLモデルも書き換えて、32バイトのトランザクションを２つの16バイトのトランザクションに分けて送信するモデルに書き換えなければならない。
【００２５】
図４は、バスイニシエータのTLモデルの書き換えの例を説明するための図である。図４に示すように、バスイニシエータ１１と１２が、それぞれ64バイトと32バイトのトランザクション処理を記述している場合、バスアーキテクチャに応じて、それぞれを、16バイトのトランザクションの発行をするバスイニシエータ１１A，１２Aに書き換えなければならない。さらに、システムLSIのシステムアーキテクチャを検討するために、バスアーキテクチャが変更された場合には、その変更の度に、システムアーキテクチャ検討作業者であるユーザは、その変更されたバスアーキテクチャに応じてバスイニシエータ１１，１２のTLモデルを、バスイニシエータ１１A，１２AのTLモデルに書き換えなければならない。
【００２６】
本実施形態では、このようなモデルの書き換えあるいは修正を行わなくてもよいように、バスイニシエータ１１、１２とバス１５の間に設けられるトランザクション変換部１６を設定し、トランザクション変換部１６は、入力されたトランザクションIT1,IT2を、所定のサイズに変換したトランザクションTT1,TT2に変換して出力するように構成されている。
【００２７】
なお、トランザクション変換部１６は、シミュレーション時にのみ設けられるTLモデルであって、最終的に製造されるシステムLSIの中には、トランザクション変換部１６は、含まれない。  
また、トランザクション変換部１６における処理に掛かる時間がTLモデルプログラムTLPのシミュレーション結果には反映されないように、トランザクション変換部１６における処理時間は除かれて、シミュレーション結果は、生成されて出力される。例えば、トランザクション変換部１６の処理時間は除いて、バスイニシエータ１１，１２、バス１５，バスターゲット１３，１４における処理の実行開始タイミングが決定されて、トランザクションタイミング図が作成される。
【００２８】
ここで、トランザクションタイミング図について説明する。図５Aから図５Cは、トランザクションタイミング図の例を示す図である。図５Aの例では、バスイニシエータ１１がバスターゲット１３へ時刻100に64バイトのデータTD1を送信し、バスターゲット１３は、64バイト全てのデータが揃ってから処理SA1を実行し、バスイニシエータ１２がバスターゲット１４へ時刻110に32バイトのデータTD2を送信し、バスターゲット１４は、32バイト全てのデータが揃ってから処理SA2を実行するとした場合である。図５Aの場合では、バスイニシエータ１１が、64バイトの一纏まりのトランザクションを発行し、かつバスイニシエータ１２が、32バイトの一纏まりのトランザクションを発行している。図５Aは、その場合のトランザクションタイミングを示す。
【００２９】
図５Bの例は、バスが32ビット幅、バースト長が4で、かつバス調停がラウンドロビン方式であり、バスイニシエータ１１がバスターゲット１３へ時刻100から64バイトのデータTD1の転送を開始し、バスターゲット１３は、64バイト全てのデータが揃ってから処理SA1を実行し、バスイニシエータ１２がバスターゲット１４へ時刻110から32バイトのデータTD2の転送を開始し、バスターゲット１４は、32バイト全てのデータが揃ってから処理SA2を実行するとした場合である。図５Bは、その場合のトランザクションタイミングを示す。なお、バス幅が狭くなると、同じデータ量のデータの転送時間が長くなる。
【００３０】
図５Cの例は、バスが64ビット幅、バースト長が4で、かつバス調停がラウンドロビン方式であり、バスイニシエータ１１がバスターゲット１３へ時刻100から64バイトのデータTD1の転送を開始し、バスターゲット１３は、64バイト全てのデータが揃ってから処理SA1を実行し、バスイニシエータ１２がバスターゲット１４へ時刻110から32バイトのデータTD2の転送を開始し、バスターゲット１４は、32バイト全てのデータが揃ってから処理SA2を実行するとした場合である。図５Cは、その場合のトランザクションタイミングを示す。
【００３１】
以上のように、トランザクションタイミング図は、バスアーキテクチャに応じた各トランザクションの実行と、各バスターゲットにおける実行開始タイミングの状況を示すので、バスアーキテクチャを変更したときのタイミングを容易に把握することができる。
【００３２】
（トランザクションの分割）
まず、図３のトランザクション変換部１６が、バスイニシエータ１１，１２から発行される各トランザクションをバス１５のバスアーキテクチャに合わせた転送サイズのトランザクションに分割する場合の例について説明する。
【００３３】
シミュレーションのためのバスアーキテクチャ情報はユーザにより入力され、トランザクション変換部１６は、S2で取得したバス１５のバスアーキテクチャ情報から計算された転送サイズ毎に、バスイニシエータ１１，１２からのトランザクションIT1,IT2を分割して、その分割された複数のトランザクションDTをバス１５に出力する。すなわち、トランザクション変換部１６が、バスイニシエータから一纏めで発行されるトランザクションIT1,IT2をバスアーキテクチャに合わせた転送サイズに変換するので、バスイニシエータのTLモデルの変更は不要となる。
【００３４】
図６は、トランザクション変換部１６におけるトランザクションの分割処理の例を示すフローチャートである。  
トランザクション変換部１６は、バスイニシエータ１１からトランザクションを受信し（S11）、S3において求めたバスアーキテクチャが許容する転送サイズTSで、バスイニシエータ１１からのトランザクションを分割する変換を行うトランザクション変換処理を実行する（S12）。  
転送サイズTSは、バスアーキテクチャ情報の示すバス幅とバースト長から求められる。上述した例の場合、バス幅が32ビットでバースト長が4の場合、バス１５の転送サイズ（すなわち期待サイズ）は16バイト(＝4Byte(32bit)×4burst)である。よって、バスイニシエータのトランザクションサイズIT1が、64バイトである場合、転送サイズTSは、16バイトなので、トランザクションIT1は４つに分割される。
【００３５】
S12の処理により、バスイニシエータ１１からのトランザクションは、複数のトランザクションに分割され（S12）、一つずつ出力される（S13）。分割されたトランザクション（以下、分割トランザクションという）が出力されると、最後の分割トランザクションか否かが判定される（S14）。
【００３６】
図７は、分割トランザクションを出力するトランザクション変換部の処理を説明するための図である。図７において、バスイニシエータ１１からの64バイトのトランザクションIT1は、各々が16バイトの転送サイズを有する４つのトランザクションDTに分割される。
【００３７】
４つ目の分割トランザクションDTが出力されるまでは、S14でNOとなって、S13が繰り返され、分割トランザクションDTの出力が行われる。４つ目の分割トランザクションDTが出力されると、S14でYESとなり、バスイニシエータ１１へ、完了通知NTを出力して（S15）、処理は終了する。
【００３８】
すなわち、トランザクション変換部１６は、バスイニシエータ１１からのトランザクションのサイズが、転送サイズTSよりも大きい場合は、バスイニシエータ１１からのトランザクションを転送サイズTSのトランザクションに分割して複数の分割トランザクションを生成して、バス１５へ複数の分割トランザクションを出力する。そして、トランザクション変換部１６は、バスイニシエータ１１が期待する64バイト分のトランザクションの完了をチェックし、完了したならば、バスイニシエータ１１に、その期待するトランザクションの発行が完了したことを通知する。トランザクション変換部１６からの完了通知により、バスイニシエータ１１は、トランザクションの発行の完了を判定して、次のトランザクションの発行を行うことができる。
【００３９】
以上は、バスイニシエータ１１について説明したが、バスイニシエータ１２の場合は、32バイトのトランザクションIT2であるので、トランザクション変換部１６は、トランザクションIT2を２つの分割トランザクションDTに分割して出力する。
【００４０】
（トランザクションの統合）
以上は、バスイニシエータの発行するトランザクションIT1,IT2のサイズが、バス１５の転送サイズTSよりも大きい場合であるが、バスイニシエータの発行するトランザクションIT1,IT2のサイズが、バス１５の転送サイズTSよりも小さい場合がある。  
そのような場合は、トランザクション変換部１６は、バスイニシエータから発行されるトランザクションの統合を行う。
【００４１】
図８は、トランザクション変換部１６におけるトランザクションの統合処理の例を示すフローチャートである。  
トランザクション変換部１６は、バスイニシエータ１１からトランザクションを受信し（S21）、S3において求めたバスアーキテクチャが許容する転送サイズTSになるように、バスイニシエータ１１からのトランザクションを合成すなわち統合する変換を行うトランザクション変換処理を実行する（S22）。
【００４２】
CPU２ａは、統合したトランザクションが、バス１５の転送サイズTS（すなわち期待サイズ）になったか否かを判定し（S23）、統合したトランザクションがその期待サイズでない場合は（S23:NO）、処理は、S21へ戻る。統合したトランザクションが期待サイズになった場合は（S23:YES）、統合されたトランザクション（以下、統合トランザクションという）CTをバス１５へ出力すなわち発行する（S24）。  
よって、S22,S24,S25の処理により、バスイニシエータ１１からのトランザクションIT1は、統合されて、転送サイズTSの統合トランザクションCTが出力される。
【００４３】
図９は、統合トランザクションを出力するトランザクション変換部の処理を説明するための図である。上述したように、転送サイズTSは、バスアーキテクチャ情報の示すバス幅とバースト長から求められる。例えば、バス幅が32ビットでバースト長が8の場合、バス１５の転送サイズは64バイトである。そして、バスイニシエータ１１の発行するトランザクションサイズIT1が、16バイトである場合、転送サイズTSは、64バイトなので、４つのトランザクションIT1が統合される。そして、その４つのトランザクションIT1が統合されて、64バイトの転送サイズの統合バストランザクションCTが出力される。
【００４４】
４つ目のトランザクションIT1が出力されるまでは、S23でNOとなって、S21,S22が繰り返され、トランザクションIT1が統合される。４つのトランザクションIT1を受信すると、S23でYESとなり、バスイニシエータ１１へ、統合トランザクションCTが出力される。
【００４５】
すなわち、トランザクション変換部１６は、バスイニシエータ１１からのトランザクションIT1のサイズが、転送サイズTSよりも小さい場合は、バスイニシエータ１１からのトランザクションを転送サイズTSのトランザクションになるように統合して１つの統合トランザクションCTを生成して、バス１５へ出力する。  
以上は、バスイニシエータ１１について説明したが、バスイニシエータ１２の場合も同様に、トランザクションのサイズがバスの転送サイズが大きい場合は、複数のトランザクションの統合が行われる。
【００４６】
以上のように、本実施形態のシミュレーション装置によれば、バスアーキテクチャの情報を設定すれば、システムアーキテクチャ検討作業者であるユーザがバスイニシエータのTLモデルを書き換える等の修正をしなくても、指定したTLモデルのシミュレーションを行うことができる。
【００４７】
そして、シミュレーション実行部（S4）は、シミュレーションにおいて得られた変換されたトランザクションの出力時間情報に基づいて、半導体集積回路に含まれるバスターゲットにおける処理の実行開始タイミングを決定することができる。よって、シミュレーション結果出力部（S5）は、その実行開始タイミングの情報からトランザクションタイミング図などを生成して出力することができる。
【００４８】
なお、上記の例では、トランザクション変換部１６は、バスに対して１つ設けられているが、トランザクション変換部を、バスイニシエータ毎に設けてもよい。図１０は、トランザクション変化部が、バスイニシエータ毎に設けられているトランザクションレベルモデル図である。図１０に示すように、トランザクション変換部１６ａと１６ｂが、それぞれバスイニシエータ１１と１２に対応して設けられている。
【００４９】
さらになお、上記の例では、バスイニシエータからのトランザクションのサイズが転送サイズTSより大きい場合、バスイニシエータからのトランザクションを分割して、バスを介してバスターゲットへ発行しているが、トランザクションの転送時間の計算処理は行い、バスイニシエータからのトランザクションを分割しないで、そのままバスを介してバスターゲットへ供給するようにしてもよい。
【００５０】
すなわち、トランザクションの分割において、トランザクションに含まれるデータの分割はせず、トランザクションの分割によりトランザクションがいくつに分割されるかという情報の計算だけ行う。
【００５１】
これは、シミュレーション処理において、トランザクション自体の分割及び転送処理にかかる時間が省けるため、シミュレーションの高速化に繋がるというメリットがある。トランザクションの分割数を計算し、バス調停による各分割トランザクションの転送時間の計算だけは行い、その計算結果は得られるので、バスターゲットにおける処理の実行開始タイミングを決定することができる。よって、シミュレーション結果は上記と同様に得ることができる。
【００５２】
例えば、バスイニシエータが16バイトのトランザクションを発行し、そのトランザクションが、「0xAABBCCDDEEFFGGHH」であって、バスアーキテクチャが32ビット幅でシングル転送（すなわち１回のトランザクションサイズが4バイト転送）のみである場合、トランザクションは４つに分割される。このとき、通常は、トランザクションの分割数の計算処理と、トランザクションデータの「0x AABB」、「0x CCDD」、「0x EEFF」及び「0x GGHH」への分割処理が行われるが、ここでは、トランザクションの分割数の計算処理だけを行い、トランザクションの分割処理は行わず、16バイトのトランザクションデータ「0xAABBCCDDEEFFGGHH」の転送は行う。バスターゲットへのトランザクションデータ「0xAABBCCDDEEFFGGHH」の転送は行われるので、バスターゲットにおける処理に問題はない。
【００５３】
以上のように、トランザクション変換部は、バスイニシエータからのトランザクションのサイズが転送サイズよりも大きい場合、バスイニシエータからのトランザクションが転送サイズのトランザクションに分割されて出力されたとした場合の仮想出力時間情報を生成し、バスイニシエータからのトランザクションをそのままバスへ出力し、トランザクションの分割処理は実行しない。
【００５４】
すなわち、分割したと仮定した場合の分割トランザクションの仮想出力時間を計算により得て、シミュレーション実行部（S4）は、シミュレーションにおいて得られた変換されたトランザクションの仮想出力時間情報に基づいて、半導体集積回路に含まれるバスターゲットにおける処理の実行開始タイミングを決定する。
【００５５】
このように、トランザクションのやりとりと、タイミング時間の計算を分けて行うようにしても、上述した実施形態と同様に、バスイニシエータのTLモデルの書き換えをせずに、シミュレーションを実行することができる。
【００５６】
（第２の実施形態）
第１の実施形態は、バスアーキテクチャを変更した場合においてもバスイニシエータのTLモデルを書き換えないで済むシミュレーション装置に関するが、本実施形態は、バスアーキテクチャを変更した場合においてもバスターゲットのTLモデルを書き換えないで済むシミュレーション装置に関する。
【００５７】
バスターゲットのTLモデルにおいても、トランザクションを受信して処理を開始するための動作開始条件が定義すなわち記述されている場合があり、バスアーキテクチャの変更に応じて、そのTLモデルの書き換えが必要になる場合がある。  
例えば、あるバスターゲットは、所定サイズのトランザクションのみ受信可能である仕様であると、意図した処理が実行されなかったりする場合が生じる。あるいは、あるバスターゲットがトランザクションの受信が処理の動作開始条件となっている仕様であると、所定のサイズのトランザクションの一部（例えば64バイト中の16バイト）だけを受信しても、その一部のトランザクションを用いた処理が開始されてしまい、意図した処理が実行されなかったり、意図しない処理が実行されてしまう場合が生じる。従って、従来は、バスターゲットのTLモデルの書き換えが必要であった。  
そこで、本実施形態によれば、ユーザがバスアーキテクチャを変更した場合には、トランザクション変換部はそのバスターゲット情報に応じて、トランザクションを変換する。
【００５８】
図１１は、シミュレーション装置１Aのブロック構成図である。図１１の各ブロックは、シミュレーションプログラムSPの処理により実現される。図１１において、図２と同様の処理は、同じ符号を付し、説明は省略する。
【００５９】
図１１は、シミュレーション装置１Aのブロック構成図である。シミュレーション装置１Aは、TLモデル入力部S1、バスターゲット情報取得部S31、転送サイズ算出部S32、シミュレーション実行部S4及びシミュレーション結果出力部S5を有する。
【００６０】
図１１において、ユーザによりバスターゲット情報が入力されるので、S1の後に、バスターゲット情報の取得が行われる（S31）。そして、そのバスターゲット情報から、各バスターゲットの期待サイズを計算により得て（S32）、シミュレーションが実行される（S4）。
【００６１】
なお、点線で示すように、シミュレーションの実行（S4）の中で、バスターゲット情報の設定及び変更（S31）とその設定等に基づく転送サイズの計算（S32）を行うようにしてもよい。
【００６２】
バスターゲット情報取得部S31が、半導体集積回路に含まれるバスターゲットがトランザクションを受理して動作開始をする開始条件を含むバスターゲット情報を取得する処理部である。転送サイズ算出部S32が、取得したバスターゲット情報に基づいて、バスターゲットに適合するバスターゲット用転送サイズを算出する処理部である。
【００６３】
図１２は、第２の実施形態に係る、システムLSIのシステムアーキテクチャのトランザクションレベルモデル図である。図１２に示すように、バス１５とバスターゲット１３，１４間にトランザクション変換部１６Aが設定されている。第２の実施形態のシミュレーション装置の構成は、図１及び図２で説明した第１の実施形態のシミュレーション装置１と同じであり、図１２に示す本実施形態のトランザクションレベルモデル図において、図３と同じ構成については、同じ符号を付し、説明は省略する。
【００６４】
図１２に示す場合においても、入力されたバスアーキテクチャ情報（S31）と、各バスターゲットの動作開始条件等から、転送サイズである期待サイズが決定される（S32）。そして、バスとバスターゲット間に配置されたトランザクション変換部を含むTLモデルプログラムTLPのシミュレーションが、CPU２ａによって行われる（S4）。
【００６５】
（トランザクションの分割）
まず、図１２のトランザクション変換部１６Aが、バス１５から受信した各トランザクションをバスターゲット１３，１４のそれぞれの期待サイズのトランザクションに分割する場合の例について説明する。バスターゲット１３，１４の期待サイズとは、バスターゲット１３，１４のそれぞれがトランザクションを受信して処理を開始する動作開始条件に基づいて設定されるトランザクションのサイズである。
【００６６】
シミュレーションのためのバスアーキテクチャ情報はユーザにより入力される。トランザクション変換部１６Aは、バスアーキテクチャ情報と、S31で取得した各バスターゲット情報から計算された期待サイズ毎に、バス１５からのバストランザクションIT3,IT4を分割して、その分割された複数のトランザクションDT3,DT4のそれぞれをバスターゲット１３，１４に出力する。すなわち、バスターゲットのTLモデルは変更せずに、トランザクション変換部１６Aは、バス１５からのトランザクションIT3,IT4をバスターゲット１３，１４に合わせた転送サイズに変換する。
【００６７】
図１３は、トランザクション変換部１６Aにおけるトランザクションの分割処理の例を示すフローチャートである。  
トランザクション変換部１６Aは、バス１５からトランザクションを受信し（S41）、受信すると、バス１５へトランザクションの受理通知NT1を出力する（S42）。S32において求めた各バスターゲットが許容する期待サイズの転送サイズTSに、バス１５からのトランザクションを分割する変換を行うトランザクション変換処理を実行する（S43）。
【００６８】
転送サイズTSは、上述したように各バスターゲットの期待サイズである。例えば、バス幅が32ビットでバースト長が8の場合、バス１５の転送サイズは64バイトである。これに対して、バスターゲット１３の期待サイズが、16バイトである場合、バス１５からのトランザクションは、４つの分割トランザクションDT3に分割される。
【００６９】
そして、バス１５からのトランザクションは、複数のトランザクションに分割され、一つずつ出力される（S44）。分割トランザクションが出力されると、最後の分割トランザクションか否かが判定される（S45）。
【００７０】
図１４は、分割トランザクションを出力するトランザクション変換部１６Aの処理を説明するための図である。図１４に示すように、バス１５からの64バイトのトランザクションIT3は、各々が16バイトの転送サイズを有する４つの分割トランザクションDT3に分割される。
【００７１】
４つ目の分割トランザクションDT3が出力されるまでは、S45でNOとなって、S44が繰り返され、分割トランザクションDT3が出力される。４つ目の分割トランザクションDT3が出力されると、S45でYESとなり、処理は終了する。
【００７２】
すなわち、トランザクション変換部１６Aは、バス１５からのトランザクションのサイズが、期待サイズよりも大きい場合は、バス１５からのトランザクションを期待サイズである転送サイズTSのトランザクションに分割して複数の分割トランザクションDT3を生成して、バスターゲット１３へ出力する。
【００７３】
以上は、バスターゲット１３について説明したが、バスターゲット１４の場合も、トランザクション変換部１６Aは、バスターゲット１４の期待サイズに、バス１５からのトランザクションを分割してバスターゲット１４に出力する。
【００７４】
（トランザクションの統合）
以上は、バス１５からトランザクションIT3,IT4のサイズが、バスターゲットの期待サイズよりも大きい場合であるが、バス１５からのトランザクションIT3,IT4のサイズが、バスターゲット１３，１４の期待サイズよりも小さい場合がある。  
そのような場合は、シミュレーションプログラムSPは、バスからのトランザクションの統合を行う。
【００７５】
図１５は、トランザクション変換部１６におけるトランザクションの統合処理の例を示すフローチャートである。  
トランザクション変換部１６Aは、バス１５からトランザクションを受信し（S51）、受信すると、バス１５へトランザクションの受理通知を出力する（S52）。S3において求めたバスターゲットの期待サイズになるように、バス１５からのトランザクションを統合する変換を行うトランザクション変換処理を実行する（S53）。
【００７６】
CPU２ａは、統合したトランザクションが、バスターゲット１３の期待サイズになったか否かを判定し（S54）、統合したトランザクションが期待サイズでない場合は（S54:NO）、処理は、S51へ戻る。統合したトランザクションが期待サイズである場合は（S54:YES）、統合さトランザクションCT3をバスターゲット１３へ出力すなわち発行する（S55）。
【００７７】
よって、S51,S53,S54の処理により、バス１５からのトランザクションIT3は、統合されて、バスターゲット１３の期待サイズの統合トランザクションCT3が出力される。
【００７８】
図１６は、統合トランザクションを出力するトランザクション変換部の処理を説明するための図である。上述したように、期待サイズは、バスターゲット１３のTLモデルより取得することができる。例えば、バス１５からのトランザクションのサイズが16バイトで、バスターゲット１３の期待サイズが64バイトである場合、期待サイズは、64バイトなので、４つのトランザクションIT3が統合される。そして、その４つのトランザクションIT3が統合されて、64バイトの統合トランザクションCT3が出力される。
【００７９】
従って、４つのトランザクションIT3が統合されるまでは、S54でNOとなって、S51からS53が繰り返され、トランザクションIT3が統合される。４つのトランザクションIT3を受信すると、S54でYESとなり、バスターゲット１３へ、統合トランザクションCT3が出力される。
【００８０】
すなわち、トランザクション変換部１６Aは、バス１５からのトランザクションIT3のサイズが、期待サイズである転送サイズよりも小さい場合は、バス１５からのトランザクションIT3を転送サイズのトランザクションになるように統合して１つの統合トランザクションCT3を生成して、バスターゲット１３へ出力する。
【００８１】
以上は、バスターゲット１３について説明したが、バスターゲット１４の場合も同様であり、トランザクション変換部１６Aは、統合トランザクションCT4をバスターゲット１４へ出力する。
【００８２】
そして、シミュレーション実行部（S4）は、シミュレーションにおいて得られた変換されたトランザクションの出力時間情報に基づいて、半導体集積回路に含まれるバスターゲットにおける処理の実行開始タイミングを決定することができる。よって、シミュレーション結果出力部（S5）は、その実行開始タイミングの情報からトランザクションタイミング図などを生成して出力することができる。
【００８３】
以上のように、本実施形態のシミュレーション装置によれば、バスアーキテクチャ情報とバスターゲット情報を設定すれば、システムアーキテクチャ検討作業者であるユーザがバスターゲットのTLモデルを書き換える等の修正をしなくても、指定したTLモデルのシミュレーションを行うことができる。
【００８４】
なお、上記の例では、トランザクション変換部１６Aは、バスに対して１つ設けられているが、トランザクション変換部を、バスターゲット毎に設けてもよい。図１６は、トランザクション変換部が、バスターゲット毎に設けられているトランザクションレベルモデル図である。図１６に示すように、トランザクション変換部１６Aａと１６Aｂが、それぞれバスターゲット１３と１４に対応して設けられ、それぞれが変換されたトランザクションTT3,TT4を出力している。
【００８５】
さらになお、上記の例では、トランザクション変換部は、バスからのトランザクションのサイズが期待サイズよりも小さい場合、バスからのトランザクションが期待サイズのトランザクションになるように統合してバスターゲットへ出力しているが、バスからのトランザクションを統合しないでそのままバスターゲットへ供給するようにしてもよい。
【００８６】
すなわち、トランザクションの統合において、複数のトランザクションの統合はせず、トランザクションの統合において、いくつのトランザクションが統合されるかという情報の計算だけ行う。
【００８７】
これは、シミュレーション処理において、トランザクションの統合及び転送処理にかかる時間が省けるため、シミュレーションの高速化に繋がるというメリットがある。トランザクションの統合数を計算し、バス調停による統合トランザクションの転送時間の計算だけを行い、その計算結果は得られるので、バスターゲットにおける処理の実行開始タイミングを決定することができる。よって、シミュレーション結果は上記と同様に得ることができる。
【００８８】
例えば、バスイニシエータが16バイトのトランザクションを発行し、そのトランザクションが、４つのデータの「0x AABB」、「0x CCDD」、「0x EEFF」及び「0x GGHH」に分割されてバスを介して転送され、バスターゲットが16バイト分のデータが揃ったら、処理を実行する場合、４つのトランザクションは１つに統合される。このとき、通常は、トランザクションの統合数の計算処理と、統合トラザクションデータ「0x AABBCCDDEEFFGGHH」の統合処理が行われるが、ここでは、トランザクションの統合数の計算処理だけを行い、トランザクションの統合処理は行わず、バスターゲットへの４つのデータの「0x AABB」、「0x CCDD」、「0x EEFF」及び「0x GGHH」の転送は行う。バスターゲットへの４つのデータの「0x AABB」、「0x CCDD」、「0x EEFF」及び「0x GGHH」の転送は行われるので、バスターゲットにおける処理に問題はない。
【００８９】
以上のように、トランザクション変換部は、バスからのトランザクションのサイズが期待サイズよりも小さい場合、バスからのトランザクションが期待サイズのトランザクションになるように統合して１つにするとした場合の仮想出力時間情報を生成し、バスからのトランザクションをそのままバスターゲットへ出力し、トランザクションの統合処理は実行しない。
【００９０】
すなわち、統合したと仮定した場合の統合トランザクションの仮想出力時間を計算により得て、シミュレーション実行部（S4）は、シミュレーションにおいて得られた変換されたトランザクションの仮想出力時間情報に基づいて、半導体集積回路に含まれるバスターゲットにおける処理の実行開始タイミングを決定する。  
このように、トランザクションのやりとりと、タイミング時間の計算を分けて行うようにしても、バスターゲットのTLモデルの書き換えをしなくても、シミュレーションを実行することができる。
【００９１】
（第３の実施形態）
第１の実施形態は、TLモデルにおいてバスとバスイニシエータ間にトランザクション変換部を設定してシミュレーションを行うシミュレーション装置であり、第２の実施形態は、TLモデルにおいてバスとバスターゲット間にトランザクション変換部を設定してシミュレーションを行うシミュレーション装置であるのに対して、第３の実施形態は、TLモデルにおいてバスとバスイニシエータ間及びバスとバスターゲット間のそれぞれにトランザクション変換部１６，１６Aを設定してシミュレーションを行うシミュレーション装置に関する。
【００９２】
図１８は、本実施形態のシステムLSIのシステムアーキテクチャのトランザクションレベルモデル図である。  
TLモデルにおいてバスイニシエータ１１，１２とバス１５の間に、第１の実施形態のトランザクション変換部１６を設け、バス１５とバスターゲット１３，１４の間に、第２の実施形態のトランザクション変換部１６Aを設定して、シミュレーションが行われる。
【００９３】
トランザクション変換部１６，１６Aの構成及び処理内容は、それぞれ上述の第１及び第２の実施形態のトランザクション変換部１６，１６Aと同様である。
【００９４】
よって、LSIのシステムアーキテクチャを検討する場合に、バスアーキテクチャの変更があっても、バスイニシエータ及びバスターゲットのTLモデルの書き換え等の変更作業は、不要となる。
【００９５】
なお、上記の例では、トランザクション変換部１６と１６Aは、バスに対して１つ設けられているが、図１０と図１７に示したように、トランザクション変換部を、バスターゲット毎及びバスターゲット毎に設けられてもよい。
【００９６】
以上のように、上述した各実施形態のシミュレーション装置によれば、バスアーキテクチャの変更があった場合にTLモデルの変更あるいは書き換えを不要にすることができる。
【００９７】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶媒体に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本実施形態のシミュレーション装置を実現することができる。
【００９８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９９】
１、１A  シミュレーション装置、２  本体装置、２ａ  ＣＰＵ、３  記憶部、４  表示部、５  キーボード、６  マウス、１１，１１Ａ，１２，１２Ａ  バスイニシエータ、１３，１３Ａ，１４，１４Ａ  バスターゲット、１５  バス、１６，１６Ａ  トランザクション変換部
【図１】
2012203451.tif 000003
【図２】
2012203451.tif 000004
【図３】
2012203451.tif 000005
【図４】
2012203451.tif 000006
【図５Ａ】
2012203451.tif 000007
【図５Ｂ】
2012203451.tif 000008
【図５Ｃ】
2012203451.tif 000009
【図６】
2012203451.tif 000010
【図７】
2012203451.tif 000011
【図８】
2012203451.tif 000012
【図９】
2012203451.tif 000013
【図１０】
2012203451.tif 000014
【図１１】
2012203451.tif 000015
【図１２】
2012203451.tif 000016
【図１３】
2012203451.tif 000017
【図１４】
2012203451.tif 000018
【図１５】
2012203451.tif 000019
【図１６】
2012203451.tif 000020
【図１７】
2012203451.tif 000021
【図１８】
2012203451.tif 000022