JP4268830B2 - アーキテクチャのシミュレーションシステム及びシミュレーション方法 - Google Patents

アーキテクチャのシミュレーションシステム及びシミュレーション方法 Download PDF

Info

Publication number
JP4268830B2
JP4268830B2 JP2003136240A JP2003136240A JP4268830B2 JP 4268830 B2 JP4268830 B2 JP 4268830B2 JP 2003136240 A JP2003136240 A JP 2003136240A JP 2003136240 A JP2003136240 A JP 2003136240A JP 4268830 B2 JP4268830 B2 JP 4268830B2
Authority
JP
Japan
Prior art keywords
arbiter
path
route
exclusive control
simulation system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003136240A
Other languages
English (en)
Other versions
JP2004341737A (ja
Inventor
貴行 佐々木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2003136240A priority Critical patent/JP4268830B2/ja
Publication of JP2004341737A publication Critical patent/JP2004341737A/ja
Application granted granted Critical
Publication of JP4268830B2 publication Critical patent/JP4268830B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、デジタルシステムのアーキテクチャを自動構成するための設計環境を提供するシミュレーションシステム及びシミュレーション方法に関するものである。
【0002】
【従来の技術】
近年、オブジェクト指向モデリングに基づき、設計者が指定したデータから、アーキテクチャを自動構成するためのデータベース及びデータベース管理機構を含むシミュレーション方式が開発されつつある。この環境を実現するオブジェクトは、SystemCのようなオブジェクト指向言語に基づくシミュレーション環境のライブラリとして実装し、SystemCのようなオブジェクト指向言語によるソースコードをコンパイル処理する際にシミュレーション用の記述と一緒に読み込まれ、シミュレーションを実行する実行コードの中に埋め込まれ、実行時に、データベースが作成され、シミュレーション実行中に適宜参照され、所望の動作を実現するものである。
【0003】
なお、本発明に関連する従来の技術として、特開平11−3367号公報には、デジタルシステムのインプリメント可能な記述を生成する設計環境及び方法が開示されている。
【0004】
【特許文献1】
特開平11−3367号公報
【0005】
【発明が解決しようとする課題】
従来の方式では、基本的オブジェクトのみを利用して記述しているため、所望の動作をさせるために多くの記述を必要としていた。従来の方式で用いられる記述は、実際の回路の記述に近い記述で直感的ではあるが、アーキテクチャの動作を再現する目的からすると冗長である。
【0006】
また、従来の方式では、バス/セレクタなど排他制御を行うオブジェクトと、転送を実現するチャネル・オブジェクトとが直接関係していないことが問題をさらに複雑化にしている。このような実現方法をとっているため、バス/セレクタとチャネルの制御を機能ブロック内で行わなければならず、記述量/記述変更量の増加を引き起こしている。
【0007】
従来の方式では、しばしば、アービトレーション・アルゴリズムをバスモデルの記述中に入れる必要がある。このような記述がポートを増やす原因、バス・アクセスの書き換えの要因となっている。
【0008】
例えば、図3の処理を実現するアーキテクチャとして、図4乃至図6のアーキテクチャ例とマッピングで設計しようとする場合、従来の方式を用いると、設計者は、図7乃至図9のようにそれぞれ記述する必要がある。
【0009】
図3の処理は、機能ブロック1(21)、機能ブロック2(22)、機能ブロック3(23)、機能ブロック4(24)の間でデータを、図3の矢印で示したように転送する処理(転送1、転送2、転送3、転送4)である。
【0010】
図4の(a)で示したアーキテクチャ例では、各転送をバス1、アービタ25を用いて実現する。図4の(b)で示したマッピングでは、転送1、転送2、転送3、転送4のイニシエータを、それぞれ、機能ブロック1、機能ブロック2、機能ブロック3、機能ブロック1としている。
【0011】
図5の(a)で示したアーキテクチャ例では、転送2のみをバス1と異なるデータ線を用いて実現する。図5の(b)で示したマッピングでは、転送1、転送2、転送3、転送4のイニシエータを、それぞれ、機能ブロック1、機能ブロック2、機能ブロック3、機能ブロック1としている。
【0012】
図6の(a)で示したアーキテクチャ例では、各転送をバス1、バス2、アービタ25、セレクタ26を用いて実現する。図6の(b)で示したマッピングでは、転送1と転送2には、バス1を使用し、転送3と転送4には、バス2を用いる。また、転送1、転送2、転送3、転送4のイニシエータを、それぞれ、機能ブロック1、機能ブロック2、機能ブロック3、機能ブロック1としている。
【0013】
図7に示したアクセスの記述20Aでは、チャネル1(31)での転送を定義するため、ポート211とポート221を、チャネル2(32)での転送を定義するため、ポート222とポート231を、チャネル3(33)での転送を定義するため、ポート233とポート241を、チャネル4(34)での転送を定義するため、ポート213とポート242をそれぞれ記載している。例えば、チャネル1で機能ブロック1と機能ブロック2間の転送(転送1)をするには、バスリクエスト、バスグラント待ち等のアービトレーションを行うため、バス35と連結させたポート212とポート223を用いる必要がある。バス35の内部の詳細を記述するブロック35Aでは、排他制御とアービトレーションを定義する必要がある。
【0014】
図8の記述20Aでは、図7の記述と同様に、チャネル1で機能ブロック1と機能ブロック2間の転送(転送1)をするには、バスリクエスト、バスグラント待ち等のアービトレーションを行うため、バス35と連結させたポート212とポート223を用いる必要がある。同時に、バス35の内部の詳細を記述するブロック35Aで、排他制御とアービトレーションを記述する必要がある。また、ダミーバス1(36)での転送を定義するため、ポート223を用いる必要がある。
【0015】
図9の記述20Aでは、セレクタ26、バス1(37)、バス2(38)を定義するため、各機能ブロックにさらに余分なポートを設ける必要がある。例えば、チャネル1で機能ブロック1と機能ブロック2間の転送(転送1)をする際には、バス1リクエスト、セレクタリクエスト、バス1グラント待ち、セレクタグラント待ち等のアービトレーションを行うため、バス1(37)と連結させたポート212とポート223、及びセレクタ26と連結させたポート214とポート233を用いる必要がある。
【0016】
従来の方式を用いて、設計者が、図7の記述例を図8の記述例に変更する場合、直結を表すために本来不要であるダミーバスを加える必要があり、設計者に不要な手間をかけることになる。
【0017】
あるいは、図7の記述例から図9の記述例に変更する場合、増やしたバス/セレクタのデータを機能ブロックに伝播させるため、ポートを増やす必要がある。さらに、所望の動作になるように、バスにアクセスするための記述を書き直さなければならず、設計者に不要な手間をかけることになる。
【0018】
図10の記述20Aは、従来の方式を用いて、図4のアーキテクチャ例の場合の性能評価データのダンプをとる例を示す。ファイル27への性能評価データの転送を定義するため、ポート213、ポート224、ポート243等をさらに用いる必要がある。
【0019】
性能評価をする場合には、図10の記述例のようにファイルを受け渡す必要があり、バスアクセスの記述に設計者がファイルアクセスを適切に加える必要があり、設計者に不要な手間をかけることになる。
【0020】
これらの手間は、従来のシミュレーション方式を用いた場合に必要となる記述であり、目的のシミュレーションにおいて本質的な記述ではないため、非効率的である。
【0021】
同様の理由から、機能ブロック内部または機能ブロックとバスを仲介するブロックの中にあるオブジェクトのデータをダンプする場合には記述量がかかる。このような例としてメモリがある。メモリはメモリ使用量などの計測を行う必要がある。
【0022】
機能ブロックの中には複数のバス・アクセスを表現する記述が含まれることがある。この場合、あるバス・アクセス記述の処理が終わってから、次のバス・記述の開始までnサイクル遅延させて、このイベントがパイプライン的に起きることがある。これを実現するために、どちらかをサイクルベースの記述にして、複数のカウンタを用意して、所望のサイクルになったらイベントを伝播するなどの方法がとられていた。更に、なんらかの理由で動作が停止する場合には、カウンタを停止する処理の記述を書き加える方法がとられている。このため、これらの方法では手間がかかり、記述量が多くなっていた。
【0023】
本発明は、上記の点に鑑みてなされたものであり、アーキテクチャのシミュレーションを行う際に設計者が記述する記述量を削減すると共に、アーキテクチャを変更する際に必要となる記述量を削減することで、性能評価データを簡単に集計できるようにするアーキテクチャのシミュレーションシステム及びシミュレーション方法を提供することを目的とする。
【0024】
【課題を解決するための手段】
上記課題を解決するため、本発明のシミュレーションシステムは、バスを介し接続された複数の機能ブロックと、転送経路と、アービタとを含むアーキテクチャを、設計者がハードウェア設計用のオブジェクト指向言語を用いて記述した、排他制御オブジェクト、経路オブジェクト、アービタオブジェクトを含むソースコードをコンパイル処理して実行コードを生成するシミュレーションシステムであって、前記排他制御オブジェクトを管理するための排他制御管理データベースと、前記経路オブジェクトを管理するための経路管理データベースと、前記アービタオブジェクトを管理するためのアービタ管理データベースとを有し、前記シミュレーションシステムが、前記排他制御オブジェクト、前記経路オブジェクト、及び前記アービタオブジェクトから生成した各実行コードにより、前記排他制御オブジェクト、前記経路オブジェクト、及び前記アービタオブジェクトを参照するための識別データを前記排他制御管理データベース、前記経路管理データベース、及び前記アービタ管理データベースにそれぞれ登録し、前記シミュレーションシステムが、設計者の記述した前記経路オブジェクトへの前記排他制御オブジェクトのアサインから生成した実行コードにより、前記排他制御オブジェクトを前記経路オブジェクトの内部領域に登録し、 前記シミュレーションシステムが、設計者の記述した前記アービタオブジェクトへの前記排他制御オブジェクトのアサインから生成した実行コードにより、前記アービタオブジェクトが制御する前記排他制御オブジェクトを含む経路オブジェクトを全て前記アービタオブジェクトの内部領域に登録することにより、シミュレーション実行時に、各管理データベースと通信する機能を提供して、前記アーキテクチャの性能評価データを生成することを特徴とする。
【0026】
本発明のシミュレーション方式によれば、従来方式で処理やアーキテクチャを記述する場合に必要であった機能ブロック内部の記述、ポートの書き換えが不要となり、設計者による記述の量や記述の変更量を削減することができる。また、本発明のシミュレーション方式では、パイプラインイベントオブジェクトを使用すると、従来方式のようにカウンタの記述をすることなく、通常のイベントと同様に、イベント発行とイベント受理で記述することができ、少ない記述量で所望の動作を実現できる。
【0027】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。
【0028】
本発明の一実施例として、SystemCを利用したアーキテクチャのシミュレーションシステムを示す。
【0029】
本発明のシミュレーションシステムでは、図2に示した管理オブジェクトを含むデータベースを利用する。
【0030】
図2の経路管理オブジェクト111、排他制御管理オブジェクト112、アービタ管理オブジェクト113は、それぞれ経路オブジェクト、排他制御オブジェクト、アービタオブジェクトの参照を保持するデータベース(ライブラリ)である。
【0031】
データダンプオブジェクト114は、経路管理オブジェクト111、排他制御管理オブジェクト112、アービタ管理オブジェクト113の参照を持ち、アーキテクチャの構成をダンプする(図1の114)。データダンプオブジェクト114は、サンプリングクロックオブジェクト118のサンプリングクロックに同期して性能評価データをファイルに記録する(図1の115)ため、経路管理オブジェクト111を経由して経路オブジェクトが保持する性能データをファイルに反映させるとともに、次の計測が開始できる状態にリセットする。
【0032】
経路管理オブジェクト111、排他制御管理オブジェクト112、アービタ管理オブジェクト113の実装の一形態として、それぞれの管理オブジェクトをシングルトンとして実装する方法がある。シングルトンとしての実装の一例として、経路オブジェクト、排他制御オブジェクト、アービタオブジェクトのstatic_member変数とし、ライブラリ内でこれらの管理オブジェクトを宣言しておく方法がある。
【0033】
図1は、本発明の一実施例に係るアーキテクチャのシミュレーションシステムを示す。
【0034】
図1のシミュレーションシステム100は、図2に示すデータモデルをもつデータベース(ライブラリ)を使用して、設計者がデジタルシステムのアーキテクチャ(シミュレーションモデル)のソースコードを記述することを可能にする。シミュレーションシステム100は、このソースコードをコンパイル処理してシミュレーション実行コードを生成する。データベースの作成、アーキテクチャの自動構成はこの実行コードの中で行われる。
【0035】
最初に、設計者が記述するソースコードに含まれる、各オブジェクトのデータ構造について説明する。このソースコードは、少なくとも、経路オブジェクト、アービタオブジェクト、排他制御オブジェクトを含む。
【0036】
排他制御オブジェクトは、通常Mutexと呼ばれるものと同一である。
【0037】
経路オブジェクト、アービタ基底クラスについてはクラス図でデータ構造を示す。ただし、ここでは属性になっている個々のオブジェクトを、見やすくするため、クラスとこのクラスに含まれるメンバーのオブジェクトを関係「もっている」で関連づけて表記してある。また、ネストクラスがある場合には、関係「ネストクラス」で明示した。
【0038】
図16は、経路オブジェクトのデータ構造を示す。
【0039】
図16に示したように、経路クラス131は、ビート数61、稼働時間62、開始時間63をもっている。また、経路クラス131は、経路状態64、排他制御リスト65、アービタのイベントリスト66、request_event67、grant_event68、send_event69、end_event70、転送数カウンタ71をもっている。
【0040】
また、本実施例のシミュレーションシステム100は、図15のような経路オブジェクトの状態を管理するFSM(finite_state_machine)を備えている。図15に示したように、このFSMは、イベントの発生状況に応じて、アイドル状態51、グラント状態52、送信待ち状態53、終了待ち状態54、送信中状態55の中で、経路オブジェクトがある1つの状態から別の状態への遷移を監視している。図16に示した経路状態64がこのFSMに相当する。
【0041】
図16に示したevent型は、シミュレーション・ライブラリが提供するイベント型の機能を表す。SystemCの場合、sc_eventがこのイベント型に相当する。
【0042】
排他制御リスト65は、この経路オブジェクトが表現する経路が使用する排他制御オブジェクトの集合を保持するリスト(または集合)である。
【0043】
アービタのイベントリスト66は、図17のwakeup_eventの参照を保持するリストである。このリストには、経路が使用する排他制御オブジェクトを制御するアービタのwakeup_eventの参照をあつめている。
【0044】
このイベントリスト66は、経路オブジェクトがrequestを受付けたときに、この経路オブジェクトが使用する排他制御オブジェクトを制御するアービタを起動するために使用する。
【0045】
図16のrequest_event67、grant_event68、send_event69、end_event70は、request(転送要求)、grant(転送受付)、send(転送開始)、 end(バスの開放)を送信元と送信先の機能ブロック間、又は機能ブロックとアービタ間で通信するために使用される。
【0046】
転送数カウンタ71は、転送したビート数をカウントする機能ブロックである。ビート数61は、転送ビート数を保持する。稼働時間62は、単位時間当たりの経路の活性化した時間の合計を保持する。開始時間63は、活性化した時間を保持する。稼働時間62は、主にデータダンプオブジェクト114により参照され、データダンプオブジェクト114を駆動しているサンプリングクロックの時間でこの稼働時間62を割算することで経路オブジェクトの活性化率を算出することができる。
【0047】
次に、アービタ基底クラス133について説明する。
【0048】
実際に使うアービタクラスは、このアービタ基底クラス133から継承したクラスを作成し、この中にアービタアルゴリズムを記述したクラスである。この作成したクラスのオブジェクトを使ってアービトレーションをする。アービタ基底クラス133は、少なくとも、アービタが共通してもつ経路オブジェクトと通信する機能を実装したものである。
【0049】
図17は、アービタ基底クラス133のデータ構造を示す。
【0050】
アービタはクロックに同期して動く。SystemCによる実装の場合、通常クロックに同期するオブジェクトはsc_moduleの継承クラスであることから、図17ではアービタ基底クラス133をsc_module70の継承クラスとした。
【0051】
アービタ基底クラス133に含まれるオブジェクトについて説明する。アービタ基底クラス133は、排他制御オブジェクトの参照を保持する排他制御リスト74をもっている。アービタ基底クラス133は、このアービタが制御する経路オブジェクトの一覧を保持する経路リスト75をもっている。また、アービタ基底クラス133は、event型のwakeup_event76をもっている。このイベントは、経路リスト75からリクエストが到着した時にイベントを発生する。
【0052】
このイベントを使用することにより、リクエストが来たタイミングで、アービトレーションの処理を開始または再開するようなアービトレーション・アルゴリズムを少ない記述量で記述することを可能にする。
【0053】
また、アービタ基底クラス133のネストクラスとして、ある時点でリクエストを発行した経路オブジェクトの一覧を優先順位順にスキャンするイテレータ(itelator)クラス73をもっている。これにより、スキャンの記述量が削減できる。
【0054】
アービタ基底クラス133から継承クラスを作成する方法の例として、FCFSを実装する記述例を図22に示す。FCFSは過去のリクエストを蓄える履歴リストをもっている。
【0055】
図22に示したように、履歴リストが空ならば、新しいリクエストが来るまでは何もすることがないので、wait(wakeup_event)でイベントの発生をまつ。つまり、新しいリクエストを待つ。
【0056】
次に、wait(0,SC_NS)でデルタ遅延の時間間隔だけ待つ。バッファが空ではなかったら、次のサイクルを待って、更にデルタ遅延だけ待って、履歴リストに含まれているリクエストを順次評価する。
【0057】
grantが可能(すなわち、grant対象の経路オブジェクトが使用する排他制御オブジェクトすべてがopen)であれば、そのリクエストを履歴リストから除外し、grantを出力する。一方、grantできなければ、そのままにしておく。
【0058】
この後、現在到着したリクエストの集合を、優先順位に従って、順次評価する。grant可能なリクエストに対しては、grant信号を送出し、リクエストがgrant不可能な場合には、grant信号を受信したことを履歴リストに記録する。
【0059】
このようにして、アービタ基底クラスから継承クラスを作成して所望のアービタを実現することができる。
【0060】
この方式では、アービトレーション・アルゴリズムが同一であれば、複数の排他制御オブジェクトを一つのアービタで制御することができ、少ない記述で済ませることができる。また、イテレータにより少ない記述でアービトレーション・アルゴリズムを記述できる。
【0061】
次に、図1を用いて、本実施例のシミュレーションシステム100による、ソースコードの初期化手順について説明する。
【0062】
図1中、設計者の記述と示された部分は、設計者(ユーザ)が記述するソースコードの部分である。本実施例のシミュレーションシステム100は、図2のデータモデルを利用して、自動でアーキテクチャを構成する。
【0063】
シミュレーションの実行127に対しては、シミュレーションを実行するとともに、性能評価データ115がダンプされる。
【0064】
また、性能評価データ115の解析をするために、設計者(ユーザ)が指定したアーキテクチャ情報がダンプされたアーキテクチャ構造データ119が生成される。また、経路の状態を波形で観察したい場合がある。この波形データは、シミュレーション実行中、波形データ116にダンプされる。
【0065】
図19と図20は、設計者によるSystemCを用いたソースコードの記述例を示す。具体的には、図19はメイン関数の記述例を示し、図20はトップ階層の記述例を示す。
【0066】
図19において、(1)に示した記述でトップモジュールを宣言している。(4)に示した記述で性能評価ファイル名を渡し、(5)に示した記述でサンプリング・クロックを与えている。(4)と(5)の記述は、図1の性能評価データ用指定126に相当する。(2)に示した記述で波形ファイルを宣言している。この記述方法はSystemCによる。(3)に示した記述で波形ファイルをシミュレーションシステムに渡している。(2)と(3)の記述は、図1の波形ファイル指定125に相当する。
【0067】
図19において、(3)に示した記述で波形ファイルのポインタをnamespace ooの経路クラス(route)の(static member変数で宣言されている)経路管理オブジェクト(head)に渡している。(3)の記述は図1の波形ファイル指定125に相当する。(6)に示した記述でシミュレーションを実行している。この記述はSystemCによる。(6)の記述は図1のシミュレーション実行127に相当する。
【0068】
図20は図19における(1)の記述で宣言しているトップモジュールの記述例である。図20において、oo::routeは経路クラス、oo::exclusiveは排他制御クラス、fcfs_arbiterはアービタ基底クラスから継承して作られたクラス、block1〜block4は処理ブロックの記述をしたクラスである。
【0069】
図20において、SC_CTOR(top)はSystemCの記述方法でコンストラクタである。コンストラクタの内容をtop::top(sc_module_name)以降に記述している。route1〜route4の宣言、bus1の宣言、arb1の宣言はそれぞれ、図1の経路オブジェクトのコンストラクション120、排他制御オブジェクトのコンストラクション121、アービタオブジェクトのコンストラクション122に相当する。「route1〜route4.登録処理(bus1)」としている記述が図1の経路オブジェクトへの排他制御オブジェクトのアサイン123に相当する。「arb1.登録処理(bus1)」としている記述が図1のアービタオブジェクトへの排他制御オブジェクトのアサイン124に相当する。
【0070】
図1において、実行コード101は経路管理オブジェクトに自分自身を参照できるデータを渡す(登録する)。これにより、任意の経路オブジェクトは経路管理オブジェクトから参照できるようになる。同様に、実行コード102、103により、排他制御オブジェクト、アービタオブジェクトはそれぞれの管理オブジェクトから参照できるようになる。
【0071】
また、管理オブジェクトからID番号をもらうことにより、ID番号を割当てることができる。実行コード104により、経路管理オブジェクトに排他制御オブジェクトを参照できるデータを登録している。
【0072】
実行コード105により、アービタオブジェクトは登録された排他制御オブジェクトを通る経路オブジェクトを探す。この経路オブジェクトを探す方法としては、例えば、経路管理オブジェクトにある経路オブジェクトを参照するデータを使って、順番に経路オブジェクトをアクセスし、経路オブジェクトに上記の排他制御オブジェクトを通るかどうか問合せる方法がある。
【0073】
経路オブジェクトがこの問合せに応答する方法としては、例えば、経路オブジェクトが管理している排他制御オブジェクトの集合の中に問合せられた排他制御オブジェクトがあるか否かを検出する方法がある。
【0074】
この一連の処理により、実行コード105の処理でアービタオブジェクトは、このアービタオブジェクトが制御する排他制御オブジェクトを含む経路オブジェクトを全て探し出すことができる。実行コード106の処理で、アービタオブジェクトは見つけた経路オブジェクトをこのアービタオブジェクト内部のDB(データベース)領域に登録する。
【0075】
更に、アービタオブジェクトは、見つけた経路オブジェクトの中のアービタイベントリストに自分自身のwakeup_eventを登録する。これにより、経路オブジェクトがアービタのwakeup_eventを起こせるようになる。
【0076】
実行コード107の処理は、適宜な方法で経路オブジェクト内部の信号(シグナル)に波形ファイルを関係付けする処理をする。一例として、SystemCの場合を挙げる。SystemCでは、シグナルsc_signal<sc_lv<3>>sig1がある場合に、これを波形ファイルfpに波形ダンプするための処理は、sc_trace(fp,sig1,“sig1”)と記述すればよい。
【0077】
図1の実行コード107の処理は、波形ファイル指定125で指定されたファイルを経路管理オブジェクトに登録されている経路オブジェクトに順次与える。経路オブジェクトは、ファイルをもらうと、経路オブジェクトに含まれるシグナルとファイルをsc_traceを使って関連付けする。経路オブジェクトの状態をシグナルに連結することで経路オブジェクトの状態を波形データに反映することができるようになる。
【0078】
図1の実行コード108の処理は、性能評価データ用指定126でもらった性能評価データファイル名に性能評価用のデータを書き出す準備をする。一例として、図1に示したように、アーキテクチャ構造データ119をダンプして、性能評価データ115を出力する場合には、同じファイル名に別の拡張子をつけることで区別することができる。
【0079】
図1のアーキテクチャ構造データ119をダンプする場合、経路管理オブジェクト、排他制御管理オブジェクト、アービタ管理オブジェクトに問合せをして、経路オブジェクトとID番号の対の一覧、それぞれの経路オブジェクトが使う排他制御オブジェクトとID番号の対の一覧、アービタ管理オブジェクトが制御する制御オブジェクトとID番号の対の一覧、排他制御オブジェクトとID番号の対の一覧などのアーキテクチャ・データをダンプする。各管理オブジェクトは問合せを受けると、各々の管理オブジェクトが管理対象のオブジェクト全ての情報を調べ、所望のデータを作成し、これをデータダンプオブジェクト114に返す。このようにアーキテクチャ構造データ119をダンプすることができる。
【0080】
ここでは、経路オブジェクト、排他制御オブジェクト、アービタオブジェクトのみについて書いたが、実際には、アーキテクチャの重要な要素であるメモリも同様の方法でアーキテクチャ構造データとしてダンプすることができる。最大利用率の情報を収集する等の適用がある。
【0081】
アーキテクチャ構造データと各経路オブジェクトの活性化率を利用すると、各バスの利用率、バスの利用率の内訳を後処理で作成することができ、同様の計測を複数することなくシミュレーションすることが可能になる。
【0082】
図1の性能評価データ115は、必要であればヘッダをつける。実際のデータの書き出しは、シミュレーション実行127の処理中に行われる。書き出すタイミングは、データダンプオブジェクトに入れたサンプリングクロックに同期して行われる。サンプリングクロックに同期する方法は、SystemCであれば、SC_THREADを利用することにより実現できる。
【0083】
データダンプオブジェクトは、サンプリングクロックが発生するたびに、ダンプ対象となっているオブジェクトの管理オブジェクトに問合せをかける。例えば、経路管理オブジェクトの活性化率を問合せる場合には、経路管理オブジェクトに問合せをして、問合せを受けた経路管理オブジェクトは、自分自身の管理する各々の経路オブジェクトに対して、稼働時間をもらい、稼働時間をサンプリングクロックの周期で割って活性化率を算出し、稼働時間をゼロ(0)に初期化する。算出した稼動時間データを経路オブジェクトのID番号をつけるなどして性能評価データ115に反映させる。その他の性能評価データをとる場合も、上述したのと同様の手続きでダンプすることが可能である。
【0084】
以上により、シミュレーション時に各オブジェクトが通信するための環境が構築できる。
【0085】
例えば、前述の図3の処理を実現するアーキテクチャとして、図4乃至図6のアーキテクチャ例とマッピングで設計しようとする場合、本実施例のシミュレーション方式を用いることにより、設計者は図11乃至図13のようにそれぞれ記述すればよい。
【0086】
図11に示したアクセスの記述20では、転送1を定義するため、経路1(41)と、経路1と連結するポート211とポート221を用いている。同様に、転送2(42)、転送3(43)、転送4(44)を定義するため、それぞれの経路と、当該経路と連結するポート対を用いている。バス45は、それぞれの経路41−44と直結される。バス45は、アービタ47と連結される。バス45の内部の詳細を記述するブロック45Aでは、排他制御のみを定義する。
【0087】
図12に示したアクセスの記述20は、基本的に図11と同様である。この例では、バス45は、経路41(転送1)、経路43(転送3)、経路44(転送4)と直結されるが、経路42(転送2)とは直結されない。ポート対が増加することはない。
【0088】
図13に示したアクセスの記述20は、基本的に図11と同様である。この例では、バス1(48)は、転送1の経路41と転送2の経路42と直結される。バス2(49)は、転送3の経路43と転送4の経路44と直結される。セレクタ46は、転送3の経路43と転送4の経路44と直結される。バス1(48)、バス2(49)、セレクタ46は、それぞれアービタ47と連結される。
【0089】
図14の記述20は、本実施例のアーキテクチャ方式を用いて、図4のアーキテクチャ例の場合の性能評価データのダンプの例を示す。図14に示したように、転送1の経路41、転送2の経路42、転送3の経路43、転送4の経路44が性能評価のための計測機能をもっているため、ファイル27への性能評価データの転送(ダンプ)を行うためには、設計者は、データダンプオブジェクト114を用いて、そのアーキテクチャ情報を指定するだけでよい。
【0090】
次に、シミュレーション時の通信方法について説明する。図18は、経路オブジェクトが有する処理(メソッド)を実行するための処理手順を示す。
【0091】
経路オブジェクトには、通信用のメソッドとして、少なくとも、リクエスト処理、グラント処理、送信処理、レディ処理、中断処理、終了処理、アンロック問合せ処理がある。
【0092】
通信の説明をするために、イニシエータとレスポンダーの記述例を図21に示す。イニシエータとは、requestを送出してバスを確保する処理をするブロックのことで、レスポンダーとは、イニシエータから送られてきたデータをリアクティブに処理するブロックのことである。
【0093】
図23はビート転送をする場合の例を示している。また、アービタは図22に示したFCFSアービタを使用する。この時、通信は図23に示したシーケンス図のようになる。
【0094】
図21に示したように、経路オブジェクトのリクエスト処理をコールする。そして、wait(port1−>evGrant())で、経路オブジェクト内のgrant_eventの参照をもらい、grant_eventが発生するのを待つ。
【0095】
図21のイニシエータ記述中の(a)で示した記述がこれに相当する。port1は経路オブジェクト(のインターフェイス)のポートである。このポートを利用することにより、経路オブジェクトのメソッドをコールすることができる。
【0096】
リクエスト処理request()がコールされると、図18のリクエスト処理(a)が実行される。最初に、経路オブジェクトはグラント待ちの状態に遷移させる(S15)。直結しているかどうかを判定する(S16)。判定の方法は直結の表現方法に依存する。図18では、排他制御オブジェクトのリストが空の時に直結していると判定する例を示している。直結している場合(ステップS16の判定結果がNOの場合)、本来リクエストを必要としない。しかし、この実施例ではアービタがある場合と同じ手続きにするため、リクエストを使用する。直結している場合にはアービトレーションがないのでリクエストが来たら即座にグラントを返す(S18)。
【0097】
一方、排他制御オブジェクトのリストが空でない場合は、直結していない場合(ステップS16の判定結果がYESの場合)であり、アービタリストの中のイベントwakeup_eventを発生させる(S17)。このイベントが発生すると、アービタはスリープ状態からアクティブ状態に遷移する。
【0098】
図22の例では、初期状態では、履歴リストは空なので、wait(wakeup_event)で待っている状態で停止している。この状態で、wakeup_eventが発生すると、アービタは動作し始める。そして、アービタの動作は、wait(0,SC_NS)で停止する。ここまでの処理は、図23の1サイクル目(1st_Cycle)の処理手順に相当する。
【0099】
アービタ基底クラスがリクエストを発行した経路オブジェクトの集合を得る方法にはいくつかある。例えば、アービタ基底クラス内の経路オブジェクトリストから、グラント待ちになっている経路オブジェクトを抽出する方法、グラント待ち以外の経路オブジェクトをマスクする方法、アービタ基底クラスにリクエスト用のバッファを追加して、経路オブジェクトの参照を挿入する方法等がある。また、優先順位順に並べる方法としては、例えば、STLのsetコンテナを使用する方法がある。
【0100】
上記したwait(0,SC_NS)は、デルタ遅延後に待ち状態から抜ける。このとき、リクエストの集合がすでに完成しているので、イテレータを用いて優先順位に従って順次スキャンする。この実施例では、アービタは、経路オブジェクトのアンロック問合せ処理(図18の(g))を行う。
【0101】
図18のアンロック問合せ処理(g)が開始すると、排他制御リストの要素が全てアンロック状態であるか否かを調べる(S24)。この問合せ処理の結果はbool値として返す。
【0102】
アンロック問合せ処理(g)が行われ、経路オブジェクトがオープン(open)ならば、経路オブジェクトのグラント処理を行う。
【0103】
図18のグラント処理(e)が開始すると、経路オブジェクトは送信待ちの状態に遷移する(S20)。次に、ロック処理を行う(S21)。従って、優先順位順に従って、上記した処理手順を繰り返すことでアービトレーションを実現できる。そして、経路オブジェクトはグラント処理が行われることにより、grant_eventを発生する(S22)。これにより、図21の記述例では、 wait(port1−>evGrant())(ここで、port1−>evGrant()はgrant_eventの参照をもらう関数)で待っていたイニシエータが動き出し、次行のwait()で次のクロックを待つ。
【0104】
また、経路オブジェクトが有する、その他の処理について説明する。
【0105】
図18の登録処理(a)が開始すると、上述したように、排他制御リストに登録する処理が行われる(S11)。
【0106】
図18の中断処理(d)が開始すると、図18の転送終わり処理(i)が行われる(S19)。この転送終わり処理(i)が開始すると、経路オブジェクトは終了待ちの状態に遷移する(S28)。そして、end_eventを発生させて(S29)、転送終わり処理が終了する。
【0107】
図18の終了(バス開放)処理(f)が開始すると、経路オブジェクトはアイドル状態に遷移して(S23)から、処理を終了する。
【0108】
図18の通信処理(h)が開始すると、まず、送信するビット数をセットする(S25)。次に、経路オブジェクトは送信待ちの状態から送信中の状態に遷移する(S26)。そして、send_eventを発生して(S27)から、処理を終了する。
【0109】
図18のロック処理(j)が開始すると、上述したように、排他制御リストの全ての要素をロックする処理が行われる(S30)。
【0110】
アービタ基底クラスと経路オブジェクトが上記のような通信を行ってアービトレーションを実現しているので、このアービタは容易に複数の排他制御オブジェクトを制御することができる。経路には通常、優先順位か、順番(ラウンドロビン等で使われる)が割当てられる。このため、設計者が、あるアービタで制御される経路の集合に順序関係を割当てる必要がある。
【0111】
一方、あるアービタで制御される経路と別のアービタで制御される経路には、設計者は優先順位も順番も割当てる必要がない。この場合、これらの経路間に任意の関係を導入しても差し支えがない。
【0112】
これら2つの経路はアービタを共有しないことから、共有する排他制御オブジェクトがないので、どちらの経路からグラント処理をしても結果は同じになる。このため、任意の関係を導入して差支えがない。例えば、同じ優先順位や順番をもつ複数の経路があった場合、ID番号順に評価することとしてもよい。このようにすると、すべての経路間に順序関係を割当てることができる。このため、同一のアービトレーション・アルゴリズムで制御されるアービタは1つのアービタで制御しても結果が変わらない。従って、図6(a)のような回路であっても1つのアービタで扱えるようになる。また、図6(a)のセレクタ26のように排他制御する要素が含まれていても、セレクタ固有の制御をする必要がない。
【0113】
本実施例のシミュレーション方式では、経路を構成する要素を1個増やすだけで済み、容易に複数の排他制御オブジェクトの制御が可能になる。
【0114】
以上説明したのがイニシエータとアービタの通信方法である。次に、イニシエータとレスポンダーの通信方法について説明する。
【0115】
イニシエータは、図22の記述例では、転送ビート数を書き込んだ(図22の(d))後、アドレスの代わりに転送開始を示すsend()を転送している(図22の(e))。アドレスを送る拡張がなされている場合にはアドレスを書きこむ。
【0116】
また、データを転送するように拡張されている場合には、データも入力する。イニシエータはいずれの場合も、send_eventを発生する。図23に示したように、レスポンダーはsend_eventが発生するのを待っているので、このイベントの発生により動作を開始する。
【0117】
レスポンダーは、図21の記述例では、転送ビート数を調べる。もし、アドレスが送られている場合ならば、アドレスを取り出す。この記述例では ready()を1個返している。あるいは、ready(個数)を返すことで、複数個のready信号を一括して返すことも可能である。
【0118】
図18のレディ処理(b)が開始すると、転送カウンタに転送ビート数を加算する(S12)。次に、転送カウンタがビート数に達したか否かを判定する(S13)。転送カウンタがビート数に達したら、end_eventを発生して正常終了する(S14)。
【0119】
一方、転送カウンタがビート数に達する前に中断処理が行われる場合には、end_eventを発生して異常終了する。
【0120】
イニシエータは、wait(port1−>evEnd())でend_eventの発生を待っている。このため、end_eventが発生すると、図23に示したように動作を再開する。
【0121】
ここで、異常終了もありえる場合には、図23に示したように正常終了したかどうかを問合せる。正常終了したかどうかの判定は、転送カウンタとビート数が一致しているかどうかで判定できる。また、異常終了の場合、成功した転送ビート数が必要になることがあるが、転送カウンタの値を参照することで調べられる。
【0122】
上記した処理手順までで所望の転送処理が終わる。図23の記述例では、次のサイクル(4th_Cycle)で終了処理end()をコールしてバスを開放している。
【0123】
もし、開放しない場合には終了処理end()を行うことなく、次の処理手順を開始する。終了処理end()がコールされると、経路オブジェクト内にある排他制御オブジェクトのリストにある排他制御オブジェクト全てをアンロックする。
【0124】
このようにして、一連の転送が実現できる。また、図18と図15に示したように、関数コールにトリガーされて状態が遷移する。状態が変化に応じてトリガーされて状態値をシグナル(SystemCの場合、sc_signal)に代入することで、状態を波形データとして反映させることができる。
【0125】
また、このFSMを用いて経路の稼働時間を計測することができる。経路の稼動期間を、例えば、グラント処理から終了処理までとすると、グラント処理がコールされた時に現在の時間をもらう処理(SystemCの場合、sc_clock::time_stamp())を行って、得られた時間を開始時間に代入し、終了処理時に、同様にして現在の時間をもらい、得られた終了時間と開始時間の差を稼働時間に加算することで、稼働時間を求めることができる。この稼動時間はダンプオブジェクトにより利用される。
【0126】
次にパイプラインオブジェクトについて説明する。
【0127】
パイプラインオブジェクトは、イベントをパイプライン化する。パイプラインオブジェクトには、例えば、SystemCによる実装の場合、イベントが起こるまでの時間を保持するFIFOバッファと、前のイベントが起こる時刻、内部制御用イベントオブジェクトと(外部参照用)イベントオブジェクト、動作中/サスペンド中を表現できるフラグが定義される。
【0128】
まず、パイプラインオブジェクトのイベント登録方法を説明する。最初に、イベント発生までの時間をもらう。もし、FIFOバッファが空だったら、FIFOバッファにイベントまでの時間を格納し、内部制御用イベントオブジェクトにイベント発生までの時間を通知する(notify)。sc_eventはnotify(時間)がコールされると、現在の時刻からnotify()の引数で与えられた時間が経過すると、イベントを発生する。また、前のイベントが発生する時刻に、現在の時刻にイベント発生までの時間を加算したものを代入する。
【0129】
もし、FIFOバッファが空でなかったら、FIFOバッファに現在の時刻にイベント発生までの時間を加え、この時間から前のイベントが発生する時刻を差し引いた時間を代入する。前の時刻に、現在の時刻にイベント発生までの時間を加えたものを代入する。
【0130】
次に、パイプラインオブジェクトのイベントの発生方法を説明する。
【0131】
SystemCの場合、sc_threadを用いてイベントを発生させる。sc_threadの中に無限ループを置く。ループの先頭でパイプラインオブジェクトが有する内部制御用イベントオブジェクトの発生を待つ。発生したら、外部参照用のイベントオブジェクトをnotify()して、FIFOバッファをポップする。この後、FIFOバッファが空でなかったら、FIFOバッファの先頭に格納されている時間を参照して、notify(参照して得られた時間)とする。
【0132】
これによりイベントをパイプライン化できる。イベントの発生はブロードキャストされるので、後段のパイプラインをサスペンドする必要がなければ、内部制御用イベントオブジェクトを外部参照用イベントオブジェクトで代用し、外部参照のイベントオブジェクトのnotify()を省略することができる。
【0133】
次に、パイプラインオブジェクトの時間を中断・再開する方法を説明する。
【0134】
中断処理(pe.suspend())がコールされた時、FIFOバッファの先頭の要素を書き換える。先頭の要素の値から現在の時刻を差し引き、直前のイベントの発生時刻を加えたものを先頭に書き込む。さらに、フラグをサスペンド中にする。サスペンド中に内部制御イベントが発生した場合、何もせずに内部制御イベント待ちにする。
【0135】
再開処理(pe.resume())がコールされた時、前のイベントの発生時刻に現在の時刻を書き込み、内部制御オブジェクトに対してnotify(FIFOバッファの先頭の値)をコールする。このようにしてパイプラインイベントを中断/再開させることができる。
【0136】
以上説明したように、図3乃至図6に示した事例を従来の方式で記述すると、図7乃至図10のようになるが、本実施例のシミュレーション方式によれば図11乃至図14のようになる。したがって、設計者は、機能ブロック内部の記述を変更する必要がなくなる。また、ポートの書き換えが不要である。各機能ブロックにファイルを渡す記述の代わりに、データダンプオブジェクトにファイルを渡す記述に置き換えられることにより、記述量/記述変更量の削減が可能である。また、パイプラインイベントオブジェクトを使うと、従来方式のようにカウンタの記述等をすることなく、図24のように通常のイベントと同様に、イベント発行とイベント受理で記述することができる。さらに、パイプラインイベントの動作を停止したい場合にも、中断処理suspend()をコールするだけで動作を停止することができ、少ない記述量で所望の動作を実現できる。
【0137】
本発明のシミュレーションシステムでは、バス/セレクタを実現する排他制御オブジェクトと、従来方式のチャネル・オブジェクトの代わりとなる経路オブジェクトと、従来方式ではバスに含まれていたアービトレーション・アルゴリズムを記述したアービタ基底クラスの継承クラスのオブジェクトを基本要素とし、アーキテクチャをこれらの基本要素で表現する。
【0138】
本発明のシミュレーションシステムは、排他制御オブジェクトと経路オブジェクトを関係づけ、経路オブジェクトに機能ブロックとの通信機能を集約し、排他制御オブジェクトが必要に応じて、アービタオブジェクトにアクセスする機能を与える手段を有する。また、経路オブジェクトがアーキテクチャの状態を計測する機能を与える手段を有する。
【0139】
したがって、各機能ブロックには経路オブジェクトを渡すだけでよい。また、転送と排他制御は各オブジェクトの中で処理でき、従来方式のように設計者側の記述で対処する必要がなくなり、冗長な記述の削減ができる。
【0140】
本発明のシミュレーションシステムは、基本要素の宣言、基本要素間の関係づけの宣言により、アーキテクチャ情報を経路管理オブジェクト、排他制御管理オブジェクト、アービタ管理オブジェクトに登録する手段を有し、登録の際に自動でアーキテクチャを生成する手段を有する。
【0141】
したがって、キーの要素を指定すれば、実行コードの実行中にそのほかの制御要素を自動生成できるようになる。設計者はキー要素の指定だけで所望の機能を実現できるようになり、記述量の削減/記述変更量の削減ができる。
【0142】
本発明のシミュレーションシステムは、アービタ基底クラスについて制御の対象となる経路オブジェクトの集合を記憶する手段を有し、アービタで制御される排他制御オブジェクトの集合を記憶する手段を有する。アービタで制御される排他制御オブジェクトが登録されると、排他制御オブジェクトに記憶する。経路管理オブジェクトを用いて、登録された排他制御オブジェクトを通る経路オブジェクトを取り出す手段を有し、取り出したオブジェクトを前記経路オブジェクトの集合に記憶することができる。
【0143】
したがって、アービタ基底クラスに排他制御オブジェクトを登録するだけで、経路オブジェクトの集合を保持できるようになり、記述量の削減/記述変更量の削減ができる。
【0144】
本発明のシミュレーションシステムは、経路オブジェクトを利用して行われる通信を監視して、経路の状態(例えば、アイドル、グラント待ち、送信待ち、送信中、終了待ちの状態)を管理する手段を有し、この経路が単位時間当たりに実際に利用した時間や単位時間当たりにリクエストから処理を終えるまでの時間を計測する手段を有する。また、データダンプオブジェクトは各管理オブジェクトを参照する手段を有し、各管理オブジェクトを各々の管理対象となるオブジェクトを参照する手段を有し、データダンプオブジェクトから任意のオブジェクトにアクセスする手段を有する。
【0145】
したがって、経路オブジェクトのみでバスの状態に関わるデータを計測することができ、収集したアーキテクチャ構成データをダンプすることができる。また、簡単にバス占有率、あるバスの経路別の利用率を算出することが可能になる。本発明のシミュレーション方式によれば、活性化率計算の記述量が削減できるとともにデータダンプ処理のための記述量が削減できる。
【0146】
本発明のシミュレーションシステムは、経路オブジェクトについてのアービトレーションの優先順位を保持する手段を有し、アービタ基底クラスの登録により経路オブジェクトの集合を作成する際に、この優先順位の順に従って配列する手段を有する。アービタ基底クラスについてはこの優先順位の順に経路オブジェクトを参照する機能を与える手段を有する。したがって、優先順位を利用するアービタアルゴリズムの記述量/変更記述量を削減することができる。
【0147】
本発明のシミュレーションシステムは、経路オブジェクトに基づいてイニシエータがアドレスを入力する処理を実行する手段を有し、経路オブジェクトにアドレスを保持する手段を有し、レスポンダーがアドレスを読み出す処理を実行する手段を有する。したがって、アドレスの転送を可能にすることができる。これにより、アドレスを使用する記述であっても、記述量/変更記述量の削減が可能になる。
【0148】
本発明のシミュレーションシステムは、経路オブジェクトが、実際の回路ではあるアドレス空間と対応することに着目して、経路オブジェクトにアドレス空間を保持する手段を有し、伝達されるアドレスがアドレス空間に含まれるか否かを判定する手段を有する。したがって、アドレスが指定したアドレス空間に含まれているか否かを、少ない記述量で判定することが可能になる。
【0149】
本発明のシミュレーションシステムにおいては、経路オブジェクトが経路管理オブジェクトに集約されていることから、経路管理オブジェクトが経路オブジェクトのアドレス空間の重複を検査する手段を有し、同一のアドレス空間をアクセスする経路の集合とアドレス空間の関係表をダンプする手段を有する。あるいは、同一のアドレス空間をアクセスする経路が1つであるアドレス空間とこの経路の関係表をダンプする手段を有する。
【0150】
したがって、指定したアドレス空間が適切であるか視認検査できるようになる。このような検査が少ない記述量で実現できる。
【0151】
本発明のシミュレーションシステムにおいては、経路オブジェクトが一連の処理において、前段の処理が後段の処理を起動するイベントを有し、経路オブジェクトを用いて起動信号の授受を実現する。これにより記述量/記述変更量の削減ができる。
【0152】
本発明のシミュレーションシステムにおいては、複数の経路オブジェクトの順序列を入力として受け取り、先頭のオブジェクトの起動をかけるイベントを最後尾のオブジェクトのイベントに置き換える手段を有する。例えば、SDRAMやチップ上のSRAMに一旦データを書きこむ経路と、SDRAMやチップ上のSRAMから書き込まれたデータを読み出す経路により、間接的に繋がっている2つの機能ブロック間で起動信号の授受をすることを可能にする。
【0153】
本発明のシミュレーションシステムにおいては、排他制御オブジェクトがデータ幅を有し、経路オブジェクトがこの経路を構成する排他制御オブジェクトのうち最小のデータ幅を探す手段を有する。データの幅が重要であるアーキテクチャのシミュレーションが可能になる。排他制御オブジェクトは本質的にデータ幅を保持する対象であることから、記述量を低く抑えた実装を可能にしている。
【0154】
本発明のシミュレーションシステムにおいては、イベントをパイプライン化する手段を有するオブジェクトをデータベースに設けることができる。これにより、機能記述ブロック内部のバス・アクセス記述内部、または複数のバス・アクセス記述間のイベントのやり取りを簡易化でき、記述量の削減ができる。
【0155】
(付記1) アーキテクチャを、排他制御オブジェクト、経路オブジェクト、アービタオブジェクトを基本要素として表現したソースコードからシミュレーション実行コードを生成するシミュレーションシステムであって、前記排他制御オブジェクトを管理する排他制御管理オブジェクトと、前記経路オブジェクトを管理する経路管理オブジェクトと、前記アービタオブジェクトを管理するアービタ管理オブジェクトと、前記排他制御オブジェクトと前記経路オブジェクトを関係づけ、前記経路オブジェクトに機能ブロックとの通信機能を集約し、前記排他制御オブジェクトが必要に応じて、前記アービタオブジェクトにアクセスする機能を与える手段と、前記経路オブジェクトがアーキテクチャの状態を計測する機能を与える手段とを備えることを特徴とするシミュレーションシステム。
【0156】
(付記2) 前記経路オブジェクトについてのアービトレーションの優先順位を保持する手段と、前記アービタオブジェクトの登録により経路オブジェクトの集合を作成する際に、前記優先順位の順に従って配列する手段と、前記アービタオブジェクトが前記優先順位の順に経路オブジェクトを参照する機能を与える手段とを備えることを特徴とする付記1記載のシミュレーションシステム。
【0157】
(付記3) 前記経路オブジェクトに基づいてアドレス空間を保持する手段と、伝達されるアドレスが前記アドレス空間に含まれるか否かを判定する手段とを備えることを特徴とする付記1記載のシミュレーションシステム。
【0158】
(付記4) 前記経路オブジェクトに基づいて、送信元の機能ブロックを実現するオブジェクトからのアドレスを入力し、前記経路オブジェクトに前記アドレスを保持する処理を実行する手段と、送信先の機能ブロックを実現するオブジェクトが前記アドレスを読み出す処理を実行する手段を備えることを特徴とする付記1記載のシミュレーションシステム。
【0159】
(付記5) アーキテクチャを、排他制御オブジェクト、経路オブジェクト、アービタオブジェクトを基本要素として表現したソースコードからシミュレーション実行コードを生成するシミュレーション方法であって、前記排他制御オブジェクトを管理する排他制御管理オブジェクトと、前記経路オブジェクトを管理する経路管理オブジェクトと、前記アービタオブジェクトを管理するアービタ管理オブジェクトとを含むシミュレーションシステムを作成する手順と、前記排他制御オブジェクトと前記経路オブジェクトを関係づける手順と、前記経路オブジェクトに機能ブロックとの通信機能を集約する手順と、前記排他制御オブジェクトが必要に応じて、前記アービタオブジェクトにアクセスする機能を与える手順と、
前記経路オブジェクトがアーキテクチャの状態を計測する機能を与える手順とを有することを特徴とするシミュレーション方法。
【0160】
(付記6) 前記経路オブジェクトのアドレス空間と前記経路オブジェクトとの関係を保持する手段と、前記経路オブジェクトの経路を通るアドレスが前記アドレス空間に含まれるか否かを判定する手段とを備え、正しいアドレスが送付されているかを検査できるよう構成したことを特徴とする付記3記載のシミュレーションシステム。
【0161】
(付記7) 複数の経路オブジェクトで構成される経路を宣言する手段と、前記複数の経路オブジェクトで構成される前記経路の先頭の経路オブジェクトに与えられた処理開始イベントを、前記複数の経路オブジェクトで構成される前記経路の末尾の経路オブジェクトに伝達させる手段とを備え、前記末尾の経路オブジェクトに伝達された処理開始イベントを参照できるよう構成したことを特徴とする付記4記載のシミュレーションシステム。
【0162】
(付記8) パイプラインイベントオブジェクトと、パイプラインイベントにイベントをパイプライン化して発生させる手段と、イベントの発生時間を遅延させる手段とを備えることを特徴とする付記1記載のシミュレーションシステム。
【0163】
(付記9) 前記シミュレーションシステムが、前記経路オブジェクトに基づいて、送信元の機能ブロックを実現するオブジェクトからのアドレスを入力し、前記経路オブジェクトに前記アドレスを保持する処理を実行する手段と、送信先の機能ブロックを実現するオブジェクトが前記アドレスを読み出す処理を実行する手段を備えるよう作成され、かつ、複数の経路オブジェクトで構成される経路を宣言する手順と、前記複数の経路オブジェクトで構成される前記経路の先頭の経路オブジェクトに与えられた処理開始イベントを、前記複数の経路オブジェクトで構成される前記経路の末尾の経路オブジェクトに伝達させる手順とを有することを特徴とする付記5記載のシミュレーション方法。
【0164】
(付記10) 前記シミュレーションシステムが、パイプラインイベントオブジェクトと、パイプラインイベントにイベントをパイプライン化して発生させる手段と、イベントの発生時間を遅延させる手段とを備えるよう作成されることを特徴とする付記5記載のシミュレーション方法。
【発明の効果】
以上説明したように、本発明のシミュレーション方式によれば、従来方式で処理やアーキテクチャを記述する場合に必要であった機能ブロック内部の記述、ポートの書き換えが不要となり、設計者による記述の量や記述の変更量を削減することができる。また、本発明のシミュレーション方式では、パイプラインイベントオブジェクトを使用すると、従来方式のようにカウンタの記述をすることなく、通常のイベントと同様に、イベント発行とイベント受理で記述することができ、少ない記述量で所望の動作を実現できる。
【0165】
【図面の簡単な説明】
【図1】本発明の一実施例に係るアーキテクチャのシミュレーションシステムを示すブロック図である。
【図2】図1のシミュレーションシステムが利用するデータベースの構成を示すブロック図である。
【図3】従来の方式と本発明を比較するために使用する処理例を示す図である。
【図4】従来の方式と本発明を比較するために使用する、処理例とアーキテクチャ例の関係を示す図である。
【図5】従来の方式と本発明を比較するために使用する、処理例とバイパスを加えたアーキテクチャ例の関係を示す図である。
【図6】従来の方式と本発明を比較するために使用する、処理例とマルチレイヤバスにしたアーキテクチャ例の関係を示す図である。
【図7】図4の処理例とアーキテクチャ例に従来の方式を適用した場合のモデル構成の例を示す図である。
【図8】図5の処理例とアーキテクチャ例に従来の方式を適用した場合のモデル構成の例を示す図である。
【図9】図6の処理例とアーキテクチャ例に従来の方式を適用した場合のモデル構成の例を示す図である。
【図10】従来の方式を適用した場合の性能評価データのダンプの例を示す図である。
【図11】図4の処理例とアーキテクチャ例に本発明のシミュレーション方式を適用した場合のモデル構成の例を示す図である。
【図12】図5の処理例とアーキテクチャ例に本発明のシミュレーション方式を適用した場合のモデル構成の例を示す図である。
【図13】図6の処理例とアーキテクチャ例に本発明のシミュレーション方式を適用した場合のモデル構成の例を示す図である。
【図14】本発明のシミュレーション方式を適用した場合の性能評価データのダンプの例を示す図である。
【図15】経路オブジェクトの状態遷移を説明するため図である。
【図16】経路クラスの構成を示す図である。
【図17】アービタ基底クラスの構成を示す図である。
【図18】経路クラスが有する処理を実行するための処理手順を説明するためのフロー図である。
【図19】メイン関数の記述例を示す図である。
【図20】トップ階層の記述例を示す図である。
【図21】イニシエータとレスポンダの記述例を示す図である。
【図22】アービタ基底クラスから継承したクラスの記述例を示す図である。
【図23】図19乃至図22の記述例を用いてシミュレーションを行う場合の転送シーケンスを説明するための図である。
【図24】パイプラインオブジェクトの記述例を示す図である。
【符号の説明】
100 シミュレーションシステム
111 経路管理オブジェクト
112 排他制御管理オブジェクト
113 アービタ管理オブジェクト
114 データダンプオブジェクト
115 性能評価データ
116 波形データ
118 サンプリングクロックオブジェクト
119 アーキテクチャ構造データ
120 経路オブジェクトのコンストラクション
121 排他制御オブジェクトのコンストラクション
122 アービタオブジェクトのコンストラクション
123 経路オブジェクトへの排他制御オブジェクのアサイン
124 アービタオブジェクトへの排他制御オブジェクトのアサイン
125 波形ファイル指定
126 性能評価データ用指定
127 シミュレーション実行

Claims (5)

  1. バスを介し接続された複数の機能ブロックと、転送経路と、アービタとを含むアーキテクチャを、設計者がハードウェア設計用のオブジェクト指向言語を用いて記述した、排他制御オブジェクト、経路オブジェクト、アービタオブジェクトを含むソースコードをコンパイル処理して実行コードを生成するシミュレーションシステムであって、
    前記排他制御オブジェクトを管理するための排他制御管理データベースと、
    前記経路オブジェクトを管理するための経路管理データベースと、
    前記アービタオブジェクトを管理するためのアービタ管理データベースとを有し
    前記シミュレーションシステムは、前記排他制御オブジェクト、前記経路オブジェクト、及び前記アービタオブジェクトから生成した各実行コードにより、前記排他制御オブジェクト、前記経路オブジェクト、及び前記アービタオブジェクトを参照するための識別データを前記排他制御管理データベース、前記経路管理データベース、及び前記アービタ管理データベースにそれぞれ登録し、
    前記シミュレーションシステムは、設計者の記述した前記経路オブジェクトへの前記排他制御オブジェクトのアサインから生成した実行コードにより、前記排他制御オブジェクトを前記経路オブジェクトの内部領域に登録し、
    前記シミュレーションシステムは、設計者の記述した前記アービタオブジェクトへの前記排他制御オブジェクトのアサインから生成した実行コードにより、前記アービタオブジェクトが制御する前記排他制御オブジェクトを含む経路オブジェクトを全て前記アービタオブジェクトの内部領域に登録することにより、
    シミュレーション実行時に、各管理データベースと通信する機能を提供して、前記アーキテクチャの性能評価データを生成することを特徴とするシミュレーションシステム。
  2. 前記シミュレーションシステムは、前記経路オブジェクトについてのアービトレーションの優先順位を保持、前記アービタオブジェクトの登録により経路オブジェクトの集合を作成する際に、前記優先順位の順に従って配列、前記アービタオブジェクトが前記優先順位の順に経路オブジェクトを参照する機能を提供することを特徴とする請求項1記載のシミュレーションシステム。
  3. 前記シミュレーションシステムは、前記経路オブジェクトに基づいてアドレス空間を保持、伝達されるアドレスが前記アドレス空間に含まれるか否かを判定することを特徴とする請求項1記載のシミュレーションシステム。
  4. 前記シミュレーションシステムは、前記経路オブジェクトに基づいて、送信元の機能ブロックを実現するオブジェクトからのアドレスを入力し、前記経路オブジェクトに前記アドレスを保持する処理を実行、送信先の機能ブロックを実現するオブジェクトが前記アドレスを読み出す処理を実行することを特徴とする請求項1記載のシミュレーションシステム。
  5. 前記シミュレーションシステムは、設計者の記述した性能評価データ用指定を管理するためのデータダンプオブジェクトを有し、前記性能評価データ用指定から生成した実行コードにより、性能評価データファイル名とサンプリングクロックを前記データダンプオブジェクトに登録し、前記データダンプオブジェクトが前記排他制御管理データベース、前記経路管理データベース、及び前記アービタ管理データベースと通信することにより、前記アーキテクチャの性能評価データを性能評価データファイルに転送することを特徴とする請求項1記載のシミュレーションシステム
JP2003136240A 2003-05-14 2003-05-14 アーキテクチャのシミュレーションシステム及びシミュレーション方法 Expired - Fee Related JP4268830B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003136240A JP4268830B2 (ja) 2003-05-14 2003-05-14 アーキテクチャのシミュレーションシステム及びシミュレーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003136240A JP4268830B2 (ja) 2003-05-14 2003-05-14 アーキテクチャのシミュレーションシステム及びシミュレーション方法

Publications (2)

Publication Number Publication Date
JP2004341737A JP2004341737A (ja) 2004-12-02
JP4268830B2 true JP4268830B2 (ja) 2009-05-27

Family

ID=33526269

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003136240A Expired - Fee Related JP4268830B2 (ja) 2003-05-14 2003-05-14 アーキテクチャのシミュレーションシステム及びシミュレーション方法

Country Status (1)

Country Link
JP (1) JP4268830B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734785B2 (en) * 2004-12-09 2010-06-08 International Business Machines Corporation On demand message based financial network integration middleware
CN111950219B (zh) * 2019-04-30 2024-06-18 北京百度网讯科技有限公司 用于实现模拟器的方法、装置、设备以及介质

Also Published As

Publication number Publication date
JP2004341737A (ja) 2004-12-02

Similar Documents

Publication Publication Date Title
US6154816A (en) Low occupancy protocol for managing concurrent transactions with dependencies
US7735087B2 (en) Task switching apparatus, method and program
US6014690A (en) Employing multiple channels for deadlock avoidance in a cache coherency protocol
Attiya et al. Sequential consistency versus linearizability
US6085276A (en) Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies
EP0911731B1 (en) Order supporting mechanisms for use in a switch-based multi-processor system
US7720891B2 (en) Synchronized objects for software transactional memory
US6094686A (en) Multi-processor system for transferring data without incurring deadlock using hierarchical virtual channels
US7475198B2 (en) Asynchronous symmetric multiprocessing
US8156507B2 (en) User mode file system serialization and reliability
KR100280161B1 (ko) 순서를 벗어난 작업처리 방법 및 장치
CN107729050B (zh) 基于let编程模型的实时系统及任务构建方法
US8140503B2 (en) Information processing apparatus having process units operable in parallel
JP3899104B2 (ja) システム開発方法及びデータ処理システム
JP3162321B2 (ja) 論理シミュレーション方法及び論理シミュレーション方法を実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP4268830B2 (ja) アーキテクチャのシミュレーションシステム及びシミュレーション方法
Wang et al. Synthesizing operating system based device drivers in embedded systems
CN111767337B (zh) 区块的验证方法、装置及设备
JPH09120387A (ja) データ処理装置
JP3261766B2 (ja) マルチプロセッサシステム、共有変数更新装置、プロセッサユニット及び共有変数更新方法
Gainer et al. Multi-scale verification of distributed synchronisation
US7216194B2 (en) Methods and systems for improving delayed read handling
Skjellum et al. The Real‐Time Message Passing Interface Standard (MPI/RT‐1.1)
Cao et al. Transaction Scheduling: From Conflicts to Runtime Conflicts
Oswald Automatic generation of highly concurrent, hierarchical and heterogeneous cache coherence protocols from atomic specifications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080930

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090217

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090223

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120227

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130227

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140227

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees