(57)【要約】【課題】設計資産を含む、複数のハードウェアモジュールから構成される半導体回路機能として求められる仕様の妥当性や期待されるアルゴリズムを、半導体回路の設計開発工程の早い段階で検証するために、送信元となる該ハードウェアモジュールが送信する信号を送信先の該ハードウェアモジュールに伝送するハードウェアモジュール接続装置を提供することを目的とする。【解決手段】ポートインタフェース部とターミナル部とＯＲ回路分とを備え、ハードウェアモジュールとポートインタフェース部間の通信に通信プロトコルを持たないトランザクションとして抽象化した信号を用い、トランザクションを運ぶトークンに、通信状態を示す情報を持たせ、トランザクションおよびトークンの送信および到着を検出するためにイベント番号を用いて、ハードウェアモジュールが送信する信号を送信先の該ハードウェアモジュールに伝送する。【選択図】        図１
2004252878.tif 000002
【特許請求の範囲】
【請求項１】
半導体回路を構成するハードウェアモジュールについて検証する場合、少なくとも２以上の該ハードウェアモジュールを接続し、送信元となる該ハードウェアモジュールが送信する信号を送信先の該ハードウェアモジュールに伝送することで、該ハードウェアモジュール間の通信を確立するハードウェアモジュール接続装置において、
通信プロトコルを持たないトランザクションとして抽象化した信号で、該ハードウェアモジュールとインタフェースし、送信元となる該ハードウェアモジュールが送信する該トランザクションを該トランザクションが有するイベント番号によって検出し、送信先となる該ハードウェアモジュールへ該トランザクションを伝送するポートインタフェース部と、
少なくとも２以上の該ポートインタフェース部を論理的にリング状に接続する信号であり、該トランザクションと、通信状態を識別する状態と、送信および検出を判定するイベント番号とを情報として有するトークンを、発生および終端するターミナル部と、
該ハードウェアモジュールから通信要求が発生した場合に該ポートインタフェース部より出力される信号の論理和をとり、該ターミナル部にて該トークンを発生する契機となる信号を発生するＯＲ回路部と、
を備えることを特徴とするハードウェアモジュール接続装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、設計資産を含む、複数のハードウェアモジュールから構成される半導体回路機能として求められる仕様の妥当性や期待されるアルゴリズムを、半導体回路の設計開発工程の早い段階で検証するために、送信元となる該ハードウェアモジュールが送信する信号を送信先の該ハードウェアモジュールに伝送するハードウェアモジュール接続装置に関する。
【０００２】
近年、携帯電話等の電化製品の寿命は短くなる傾向にあり、これらの電化製品に使用されるＬＳＩ等の半導体回路の開発期間を短縮することは重要であり、半導体回路の設計開発者による仕様誤解や機能漏れに起因する不具合を開発の早い段階で検証し、不具合による開発のフィードバックによって生じる開発遅延を防止することが必要となっている。このような背景から、半導体回路の開発手段としてトップダウン設計手法が採用されている。本設計手法は、設計開発者の考えたアイディアが半導体回路に要求されている仕様を満足するかを上流工程で検証し、不具合原因を後に続く下流工程に流れ込まないようにすることを目的としている。
【０００３】
半導体回路に組み込まれるＣＰＵ、メモリ、アプリケーションに特化したブロックは並行開発ができるように別々の部品として分割し、設計開発する。ここで、前に記載した部品として分割するブロックをハードウェアモジュールという。また、それぞれのハードウェアモジュールを接続する機構も半導体回路に組み込まれ、この機構は一般的にバスと言われている。
【０００４】
トップダウン設計手法では、一般的にハードウェア記述言語等のプログラミング言語を使用してハードウェアモジュールをモデル化するので、バスに全ハードウェアモジュールを接続すれば、ＣＡＤ（ｃｏｍｐｕｔｅｒ−ａｉｄｅｄ  ｄｅｓｉｇｎ）での検証において半導体回路全体の検証が可能となり、早期に不具合を発見できる。
しかし、近年の半導体回路の開発規模はムーアの法則にも言われるように年々大規模になり、一つのハードウェアモジュールあたりの規模も大規模になり、開発期間の長期化の要因となっている。また、半導体回路全体の検証は全てのハードウェアモジュールが完成するまで待たなければならないため、一般的に、仕様設計、回路設計、検証、インプリメントの段階を経る開発工程の後半に実施されることが多く、また検証にかかる時間も長くなる。そのため、前記の半導体回路全体の検証によって不具合が発見されると、不具合発生箇所の特定やハードウェアモジュールの再開発設計などにより開発期間の長期化が助長される。
【０００５】
よって、開発の早い段階での半導体回路全体または複数のハードウェアモジュールの検証は非常に重要であり、特に仕様誤解や機能漏れに起因する不具合は、前記開発工程での仕様設計段階において、排除することが重要となっている。
【０００６】
【従来の技術】
近年の大規模化する半導体回路の設計開発を高品質かつ効率的に行うためには、ＬＳＩまたはＬＳＩを含んで構成されるＬＳＩシステムとしての論理検証を効率的かつ自動的に行う方式もある（例えば、特許文献１参照）。
一方、開発期間の短期化、開発コストの低減化を図るために、自社あるいは他社のＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）とも呼ばれる設計資産を使用することがある。設計資産は過去に検証されているため安定した動作を得ることができ、品質確保にも貢献できるため、多くの設計資産を使用することが重要となっている。以降、前記の設計資産もハードウェアモジュールとして扱うこととする。
【０００７】
しかしながら、自分以外の第三者が設計開発したハードウェアモジュールを前記のバスに接続する場合、ハードウェアモジュール内に実装されているバスインタフェース部がハードウェアモジュールごとに異なることがあるために、複数のハードウェアモジュールを実装した半導体回路全体を検証することが難しくなる。ここで、バスインタフェース部とは、ハードウェアモジュール間でのデータ伝送を可能とするために必要なポートの種類と信号の入出力タイミングを規定した通信プロトコルを実装している部分である。
【０００８】
図８はハードウェアモジュール適用事例であり、前記のバスインタフェース部が異なるハードウェアモジュールにて半導体回路を構成する場合の三つの事例を示している。
事例１は、ハードウェアモジュールが有する通信プロトコルＢと、バスが有する通信プロトコルＡを相互変換するプロトコル変換器を、ハードウェアモジュールとバスの間に実装するものである。本事例１の通信プロトコルを相互に変換することは、プロトコル変換器内のデータのタイミング調整等のハード規模を考えると開発期間が長期化する問題がある。
【０００９】
事例２は、ハードウェアモジュールが有するインタフェース部を通信プロトコルＡに適応するように改造するものである。本事例２は、自分以外の第三者が設計開発した回路を改造するため、品質の低下を招く問題がある。
事例３は、設計資産であるハードウェアモジュールを使用せずに、新規に通信プロトコルＡを有するハードウェアモジュールを設計開発するものである。本事例３は単純な考えではあるが、前記の事例１の開発期間、事例２の品質を考えると、本事例３を選択する開発者は少なくないが設計開発コストが増大する問題がある。
【００１０】
従来のハードウェアモジュールが有する通信プロトコルの一例を図９に示す。図９は従来の通信プロトコルとトランザクションであり、（ａ）にて従来の通信プロトコルを示している。
チップセレクトは、ハードウェアモジュールのバスインタフェースを有効にする信号である。
【００１１】
アドレスは、データをアクセスするためのアドレスを示す信号である。
リード・ライトは、前記アドレスで特定されるデータを読み出すか書き込むかを示す信号である。
データは、前記のリード・ライトにて読み出すか書き込むかをされる信号である。
【００１２】
アクノリッジは、伝送される前記のデータが確定されるタイミングを示す信号である。
一般的に、上記の各々の信号によって前記のバスは構成されており、ハードウェアモジュールごとに上記の各信号についてインタフェース条件を規定することが必要となり、前記の図８の説明で記載したように非常に困難なものである。
【００１３】
一方、前記図９（ａ）ではタイムチャートとして規定されたインタフェースであるが、タイミング的な要素を除き通信プロトコルを抽象的に表したものが図９（ｂ）のトランザクションであり、接続先のアドレス、リード・ライトを指示するコマンド、リード・ライトするデータより構成され、パケットとして送信するものである。
【００１４】
そして、上記のようなパケットを伝送する簡単な手段の一つとして、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）等に使用されるトークンリングアクセス方式があり（例えば、非特許文献１参照）、概要を説明する。
図１０はトークンリングアクセス方式を示すものであり、通信の状態によって、状態（１）（２）（３）（４）を示している。トークンリングは複数の局（Ａ、Ｂ、Ｃ、Ｄ）が伝送媒体によって直列に接続されたリング状ネットワークである。
【００１５】
局Ａから局Ｃに通信を行う場合を、状態（１）から順次説明する。
状態（１）は、どの局からも送信要求がない状態であり、フリートークンが各局（Ａ、Ｂ、Ｃ、Ｄ）により中継され、リングネットワーク上を一方向に周回している。
状態（２）では、送信要求が発生した局Ａは、フリートークンの到着を待つ。フリートークンが到着すると、これをビジートークンに変え、データに宛先アドレスと自己アドレスを付けたフレームを送信する。
【００１６】
状態（３）では、各局ではビジートークンに続く宛先アドレスを調べ、局Ｃはリングを通過するデータをバッファにコピーし、コピー済みのマークをフレームの末尾に付ける。
状態（４）では、局Ａはビジートークンがリングを一巡して戻ってくると、局Ｃで正しく受信されたことを調べると共に、そのフレームをリングから除去してフリートークンを再びリングに送信することにより、送信権を他に手離す。
【００１７】
上記のように、ネットワーク内にてデータを送信したい局は、ネットワーク内を周回するトークンと呼ばれる送信権を取り込み、通信を行うことが可能になる。
【００１８】
【特許文献１】
特開平１０−２２１４１０号公報「ＬＳＩの自動論理検証方式」
【００１９】
【非特許文献１】
斉藤忠夫監修  石坂充弘編著「情報通信プロトコル」オーム社
【００２０】
【発明が解決しようとする課題】
以上記載したように、半導体回路の短期開発を実現する場合、設計資産であるハードウェアモジュールを使用することは必須であるが、自分以外の第三者が設計開発したハードウェアモジュールを使用することは、前記の図８で示したように、バスへハードウェアモジュールを接続するための問題を解決するため、多くの設計開発時間が必要となり、半導体回路全体の検証が開発の後半になってしまう問題があった。
【００２１】
本発明は、設計資産を含む、複数のハードウェアモジュールから構成される半導体回路機能として求められる仕様の妥当性や期待されるアルゴリズムを、半導体回路の設計開発工程の早い段階で検証するために、送信元となる該ハードウェアモジュールが送信する信号を送信先の該ハードウェアモジュールに伝送するハードウェアモジュール接続装置を提供することを目的とする。
【００２２】
【課題を解決するための手段】
本発明は、半導体回路を構成するハードウェアモジュールについて検証する場合、少なくとも２以上の該ハードウェアモジュールを接続し、送信元となる該ハードウェアモジュールが送信する信号を送信先の該ハードウェアモジュールに伝送することで、該ハードウェアモジュール間の通信を確立するハードウェアモジュール接続装置において、
通信プロトコルを持たないトランザクションとして抽象化した信号で、該ハードウェアモジュールとインタフェースし、送信元となる該ハードウェアモジュールが送信する該トランザクションを該トランザクションが有するイベント番号によって検出し、送信先となる該ハードウェアモジュールへ該トランザクションを伝送するポートインタフェース部と、少なくとも２以上の該ポートインタフェース部を論理的にリング状に接続する信号であり、該トランザクションと、通信状態を識別する状態と、送信および検出を判定するイベント番号とを情報として有するトークンを、発生および終端するターミナル部と、該ハードウェアモジュールから通信要求が発生した場合に該ポートインタフェース部より出力される信号の論理和をとり、該ターミナル部にて該トークンを発生する契機となる信号を発生するＯＲ回路部と、を備えることを特徴とするハードウェアモジュール接続装置である。
【００２３】
本発明によれば、半導体回路の設計開発の工程である、要求仕様を受け、仕様設計、回路設計、検証、インプリメントにおいて、回路設計段階に行うハードウェアモジュール間の通信プロトコルやバスインタフェースの決定を行う前、つまり仕様設計の早い段階に、複数のハードウェアモジュールを、ハードウェア記述言語等のプログラミング言語を使用してモデル化し、同じくハードウェア記述言語等のプログラミング言語で記述された本発明のハードウェアモジュール接続装置に接続することによって、前記の半導体回路の開発工程の早い段階で半導体回路全体、つまり、仕様の妥当性、ハードウェアモジュールの振る舞い、開発する半導体回路が有するシステムのサービスについて検証することが可能となる。
【００２４】
【発明の実施の形態】
以降、図面を併用して、本発明の詳細を説明する。
図１は、本発明に係わるハードウェアモジュール接続装置の構成を示すものであり、半導体回路を構成する４１、４２、４ｎで示すｎ個のハードウェアモジュールとハードウェアモジュール接続装置１を示している。該ハードウェアモジュール接続装置１は、１１、１２、１ｎで示すｎ個のポートインタフェース部、ＯＲ回路部２０、ターミナル部３０を備える。ｎは２以上の整数であり、ポートインタフェース部はハードウェアモジュールと同じ個数だけ設ける。
【００２５】
ここで、以降、ハードウェアモジュールを総称する場合はハードウェアモジュール４０、ポートインタフェース部を総称する場合はポートインタフェース部１０と記載する。
ハードウェアモジュール４０とポートインタフェース部１０は、（１１１）（１２１）（１ｎ１）で示す送信元要求、（１１２）（１２２）（１ｎ２）で示す送信元応答、（１１３）（１２３）（１ｎ３）で示す送信先要求、（１１４）（１２４）（１ｎ４）で示す送信先応答によってインタフェースする。
【００２６】
また、ポートインタフェース部１０は、ハードウェアモジュール４０との対を識別するために識別番号を有し、ポートインタフェース部１１の識別番号は１、ポートインタフェース部１２の識別番号は２、ポートインタフェース部１ｎの識別番号はｎとする。
ここで、以降、送信元要求を総称する場合は送信元要求（１０１）、送信元応答を総称する場合は送信元応答（１０２）、送信先要求を総称する場合は送信先要求（１０３）、送信先応答を総称する場合は送信先応答（１０４）と記載する。
【００２７】
また、（    ）付数字は信号を表す。
送信元となるハードウェアモジュール４０は、送信元要求（１０１）を介してハードウェアモジュール接続装置１にトランザクションを送信する。該トランザクションについては、後記にて説明する。
ハードウェアモジュール接続装置１は、該送信元ハードウェアモジュール４０への応答として送信元応答（１０２）を介してトランザクションを返す。該送信元ハードウェアモジュール４０は該トランザクションを受取ると通信要求が終了したとみなす。
【００２８】
ハードウェアモジュール接続装置１は、送信先要求（１０３）を介して送信先となるハードウェアモジュール４０にトランザクションを送信する。
該送信先ハードウェアモジュール４０は、ハードウェアモジュール接続装置１への応答として送信先応答（１０４）を介してトランザクションを返し、処理が終了したことを示す。
【００２９】
つまり、送信元のハードウェアモジュール４０において通信要求が生じた場合、必要な情報をまとめてハードウェアモジュール接続装置１へトランザクションを送る。ハードウェアモジュール接続装置１は該トランザクションを送信先のハードウェアモジュール４０まで伝送する。該トランザクションを受取った送信先のハードウェアモジュール４０はデータを処理した後、応答トランザクションをハードウェアモジュール接続装置１へ返す。最後にハードウェアモジュール接続装置１から送信元のハードウェアモジュール４０へ応答トランザクションを返して、通信要求を終了する。
【００３０】
前記のトランザクションとは、前記図９（ａ）にて説明した通信プロトコルを抽象的に表現したものであり、図９（ｂ）に示すようにアクセスに必要なアドレス、コマンド、データで構成される情報を持つがタイミングの定義は行わない。
図２はトランザクションの構造を示し、前記のトランザクションは本図（図２）に示す型を定義する。該トランザクションは、情報として、イベント番号、コマンド、送信先識別番号、アドレス、データによって構成される。
【００３１】
イベント番号は、整数の値を持ち、前記ハードウェアモジュール４０で保持しているイベント番号を＋１した値を、イベント番号として送信することでデータを送ったことを示し、該トランザクションの送信および検出のために使用される。
コマンドは、リードまたはライトを示す値を持ち、現アクセスがリードかライトを示す。
【００３２】
送信先識別番号は、送信先のハードウェアモジュール４０に対応するポートインタフェース部１０に一意的に付けられた番号であり、図１では識別番号と示しており、送信先のハードウェアモジュール４０の検索に使用される。
アドレスは、送信先のハードウェアモジュール内のレジスタやメモリのアドレスを示す。
【００３３】
データは、ハードウェアモジュール４０間で受け渡すデータを示す。
図３は、トランザクション動作事例を示しており、“送る”動作と“受取る”動作を説明する。ここでは、図１のハードウェアモジュール４１から送り、ハードウェアモジュール４２にて受取ることとする。
まず、トランザクションを“送る”動作について説明する（ア）。
【００３４】
送信元のハードウェアモジュール４１にて（イ）、該ハードウェアモジュール４１の出力ポートを図２に示したトランザクション型で定義する（ウ）。
次にトランザクション型の各情報について設定する。送信先のハードウェアモジュール４２の識別番号である２を送信先識別番号（エ）、アドレスを１００番地（オ）、データを１０（カ）、コマンドをライト（キ）と設定する。
【００３５】
そして、該ハードウェアモジュール４１が保持しているイベント番号を＋１した値をイベント番号として（ク）、該トランザクションを送信する（ケ）。
次に、トランザクションを“受取る”動作について説明する（コ）。
送信先のハードウェアモジュール４２にて（サ）、該ハードウェアモジュール４２の入力ポートを図２に示したトランザクション型で定義する（シ）。
【００３６】
次に該ハードウェアモジュール４２は入力したトランザクションのイベント番号が＋１されていることを検出すると、トランザクションが到着されたことを認識して（ス）、到着したトランザクションを変数ｔｍｐ（ｔｅｍｐｏｒａｒｙ）として一時的に格納する（セ）。
上記にて、該ハードウェアモジュール４０と該ハードウェアモジュール接続装置１とのインタフェースを説明した。
【００３７】
次に、図１において該ハードウェアモジュール接続装置１内部の動作について説明する。
該ポートインタフェース部１０とＯＲ回路部２０は、該ハードウェアモジュールに通信要求が発生した場合に（１１０）（１２０）（１ｎ０）で示す個別トリガを発生する。
【００３８】
ここで、以降、個別トリガを総称する場合は個別トリガ（１００）と記載する。
該ＯＲ回路部２０は該ターミナル部３０に、全体トリガ（２００）を出力する。
論理的に隣り合う該ターミナル部３０と該ポートインタフェース部１０は（３００）（３０１）（３０２）（３０ｎ−１）（３０ｎ）で示すトークンによって通信を行う。
【００３９】
ここで、以降、トークンを総称する場合はトークン（０００）と記載する。
トークン（０００）は、送信元から送信先へトランザクションを運ぶコンテナの役割を持つ。
図４はトークンの構造を示し、前記のトークン（０００）は本図（図４）に示す型を定義する。トークン（０００）は、情報として、図２で示したトランザクションを内包し、その他にイベント番号、送信元識別番号、状態によって構成される。
【００４０】
イベント番号は、整数の値を持ち、トークン（０００）を送信する時に＋１したイベント番号にすることで、トークン（０００）の送信、検出を行う。
トランザクションは、図２で説明した、トークン（０００）が伝送するデータである。
送信元識別番号は、送信元ハードウェアモジュールを検索するために使用される。
【００４１】
状態は、トークン（０００）の通信状態を示し、空き、送信元検索終了、送信先検索終了、終了の４状態を示し、ポートインタフェース部１０は、トークン（０００）の到着を検出した時に、該状態と該送信元識別番号に対応する処理を行う。
＜動作例＞
次に、本発明の動作例として、ハードウェアモジュール接続装置１に接続するハードウェアモジュール４１からハードウェアモジュール４２へデータを書き込む動作について説明する。
【００４２】
先ず、送信元となるハードウェアモジュール４１は、通信要求が発生すると、イベント番号は該ハードウェアモジュール４１が保持している現時点のイベント番号に＋１した値を、コマンドはライトを、送信先識別番号は２を、アドレスとデータは任意の値を設定したトランザクションを送信元要求（１１１）を介して送信する。送信先識別番号の２は、送信先のハードウェアモジュール４２に接続されたポートインタフェース部１２の識別番号である。
【００４３】
ハードウェアモジュール接続装置１は、ポートインタフェース部１１にて該送信元要求（１１１）を介してトランザクションを検出し、ポートインタフェース部１１にて通信要求が発生したことをターミナル部３０に通知するために、個別トリガ（１１０）を発生する（フラグをｏｎにする）。
ここで、トランザクションを検出するとは、ハードウェアモジュール４０もしくはポートインタフェース部１０が、到着したトランザクションのイベント番号が変化したことを認識することである。
【００４４】
該個別トリガ（１１０）はＯＲ回路部２０にて論理和がとられ、全体トリガ（２００）として、ターミナル部３０に通知される。
ターミナル部３０は、全体トリガ（２００）を検出すると、イベント番号は該ターミナル部３０が保持している現時点のイベント番号に＋１した値を、状態は空きを設定し、その他の情報は未設定のトークン（３００）を送信する。
【００４５】
ポートインタフェース部１１は、該トークン（３００）を検出すると、トークンの状態を調べ、空きであるならば、該送信元要求（１１１）に発生している前記トランザクションをトークン（３０１）のトランザクションにコピーすると共に、イベント番号は該ポートインタフェース部１１が保持しているトークンに対する現時点のイベント番号に＋１した値を、送信元識別番号を１、状態を送信元検索終了に書き換えて、トークン（３０１）を送信する。
【００４６】
ここで、トークン（０００）を検出するとは、ポートインタフェース部１０もしくはターミナル部３０が、到着したトークン（０００）のイベント番号が変化したことを認識することである。
ポートインタフェース部１２は、該トークン（３０１）を検出すると、トークンの状態を調べ、送信元検索終了であるならば、該トークン（３０１）のトランザクションの送信先識別番号と該ポートインタフェース部１２の識別番号を比較する。本動作例では一致するため、該トークン（３０１）のトランザクションを送信先要求（１２３）にコピーすると共に、イベント番号は該ポートインタフェース部１２が保持している現時点の送信先要求（１２３）に対するイベント番号に＋１した値にし、該送信元要求（１２３）を介してトランザクションをハードウェアモジュール４２へ送信する。また、該トークン（３０１）をトークン（３０２）にコピーする。
【００４７】
送信先の該ハードウェアモジュール４２は、該送信先要求（１２３）のトランザクションを検出し、必要な処理、本動作例では該トランザクションが示すアドレスのレジスタに該トランザクションのデータを書込む、を行い、送信先応答（１２４）を介して検出した該トランザクションをコピーし、同様に＋１したイベント番号を設定し、トランザクションを送信する。本動作例の場合、ライトコマンドに対する応答なので送信するデータに有意性はない。リードコマンドに対する応答の場合には、データは読み出されたデータになるため有意性が生じる。
【００４８】
ポートインタフェース部１２は、該送信先応答（１２４）を介したトランザクションを検出すると、前記のコピーされた該トークン（３０２）のトランザクションを該トランザクションに書き換えると共に、イベント番号は該ポートインタフェース部１２が保持しているトークンに対する現時点のイベント番号に＋１した値に、トークンの状態を送信先検索終了に書き換え、該トークン（３０２）を送信する。
【００４９】
ポートインタフェース部１ｎは、トークン（３０ｎ−１）を検出すると、トークンの状態を調べ、送信先検索終了であるならば、該トークン（３０ｎ−１）のトランザクションの送信先識別番号を調べ、該ポートインタフェース部１ｎに設定された識別番号と比較する。本動作例では、不一致となるので、該トークン（３０ｎ−１）をトークン（３０ｎ）にコピーし、イベント番号を該ポートインタフェース部１ｎが保持しているトークンに対する現時点のイベント番号に＋１した値にし、該トークン（３０ｎ）を送信する。
【００５０】
ターミナル部３０では、該トークン（３０ｎ）を検出すると、トークンの状態を調べ、送信先検索終了であるならば、該トークン（３０ｎ）をトークン（３００）にコピーし、イベント番号を該ターミナル部３０が保持している現時点のイベント番号に＋１した値にし、該トークン（３００）を送信する。
ポートインタフェース部１１は、該トークン（３００）を検出すると、トークンの状態を調べ、送信先検索終了であるならば、該トークン（３００）の送信元識別番号と該ポートインタフェース部１１の識別番号を比較する。本動作例では、一致となるので、接続しているハードウェアモジュール４１が該トークン（３００）のトランザクションの送信元と判断できる。
【００５１】
該ポートインタフェース部１１は、該トークン（３００）のトランザクションを送信元応答（１１２）にコピーし、イベント番号を同様に＋１した値にし、該ハードウェアモジュール４１に該送信元応答（１１２）を送信する。また、該トークン（３００）をトークン（３０１）にコピーする。
送信先の該ハードウェアモジュール４１は、該送信元応答（１１２）のトランザクションを検出することで、全ての通信要求が終了したことを認識できる。
【００５２】
そして、該ポートインタフェース部１１は、前記の個別トリガ（１１０）をディセーブル（ｏｆｆ）にし、通信要求がなくなったことを、ＯＲ回路部２０を介してターミナル部３０に通知する。また、コピーされた該トークン（３０１）の状態を終了に設定し、イベント番号を同様に＋１した値にし、該トークン（３０１）を送信する。
【００５３】
以下、ポートインタフェース部１２、１ｎは、検出したトークンの状態を調べ、終了であるならば、検出したトークン（０００）をコピーし、イベント番号を同様に＋１した値にして送信する。
ターミナル部３０は、検出したトークン（３０ｎ）の状態を調べ、終了であり、前記ポートインタフェース部１１がディセーブルした個別トリガ（１１０）によって、ＯＲ回路部２０の出力である全体トリガ（２００）がディセーブルされていることを検出することで、トークン（３００）の送信を終了する。
【００５４】
以上、記載した本発明の動作例を動作シーケンスとして説明する。
＜動作シーケンスで示す動作例＞
図５は、本発明の動作シーケンスであり、前記の図１の説明で記載したように、ハードウェアモジュール４１を送信元、ハードウェアモジュール４２を送信先として、ハードウェアモジュール４２にデータを書き込む動作を示している。ポートインタフェース部１１は該ハードウェアモジュール４１と接続され、ポートインタフェース部１２は該ハードウェアモジュール４２と接続されており、該ポートインタフェース部１１、該ポートインタフェース部１２、ポートインタフェース部１ｎ、ターミナル部３０は論理的にリング状に接続されている。また、本図（図５）では、ＯＲ回路部２０は省略している。
【００５５】
以降、図５に示した（  ）付の小文字英字で示したシーケンス符号に沿って説明する。
（ａ）ハードウェアモジュール４１に通信要求が発生し、ハードウェアモジュール４１は、送信元要求（１１１）を介してトランザクションをポートインタフェース部１１に送信する。該トランザクションは、該ハードウェアモジュール４１が保持している現時点のイベント番号を初期値０とし、初期値０に＋１した１を持つイベント番号、ライトを示すコマンド、送信先のハードウェアモジュール４２を示す値２を持つ送信先識別番号、任意の値を持つアドレスとデータ、により構成される。
（ｂ）該送信元要求（１１１）を送信した該ハードウェアモジュール４１は、送信元応答（１１２）の検出を待つ。
（ｃ）該送信元要求（１１１）を検出したポートインタフェース部１１は、個別トリガ（１１０）を発生する。なお、該個別トリガ（１１０）により全体トリガ（２００）が発生する。
（ｄ）該全体トリガ（２００）を検出したターミナル部３０は、トークン（３００）を送信する。該トークン（３００）は、該ターミナル部３０が保持している現時点のイベント番号を初期値０とし、初期値０に＋１した１を持つイベント番号、未設定のトランザクションと送信元識別番号、空きを示す値をもつ状態、により構成される。
（ｅ）該トークン（３００）を検出したポートインタフェース部１１は、前記シーケンス（ａ）にて検出した該送信元要求（１１１）に発生しているトランザクションを、トークン（３０１）のトランザクションにコピーすると共に、該ポートインタフェース部１１が保持しているトークンに対する現時点のイベント番号を初期値０とし、初期値０に＋１した１を持つイベント番号、該ポートインタフェース部１１の識別番号である１を持つ送信元識別番号、送信元検索終了を示す値をもつ状態、に書き換えて、トークン（３０１）を送信する。
（ｆ）該トークン（３０１）を検出したポートインタフェース部１２は、該トークン（３０１）の状態を調べ、送信元検索終了であるならば、該トークン（３０１）のトランザクションの送信先識別番号と該ポートインタフェース部１２の識別番号を比較する。本動作例では一致し、自ポートインタフェース部１２に接続するハードウェアモジュール４２へのトランザクションが含まれていることを認識し、該トークン（３０１）のトランザクションを送信先要求（１２３）にコピーすると共に、該トークン（３０１）のトランザクションのイベント番号を同様に初期値０に＋１した１に書き換え、該送信先要求（１２３）を介してトランザクションをハードウェアモジュール４２へ送信する。また、該トークン（３０１）をトークン（３０２）にコピーする。
（ｇ）該送信先要求（１２３）を送信した該ポートインタフェース部１２は、送信先応答（１２４）の検出を待つ。
（ｈ）該送信先要求（１２３）を検出したハードウェアモジュール４２は、必要な処理、本動作例では該トランザクションが示すアドレスのレジスタに該トランザクションのデータを書き込むことを行い、送信先応答（１２４）を介して検出した該トランザクションをコピーし、同様に＋１したイベント番号１を設定したトランザクションを送信する。
（ｉ）該送信先応答（１２４）を検出したポートインタフェース部１２は、前記シーケンス（ｆ）にてコピーされた該トークン（３０２）のトランザクションを、該送信先応答（１２４）を介したトランザクションに書き換えると共に、同様に＋１したイベント番号１に設定し、トークンの状態を送信先検索終了に書き換え、該トークン（３０２）を送信する。
【００５６】
なお、該トークン（３０２）は、トークン（３０ｎ−１）となってポートインタフェース部１ｎにて検出されるとする。
（ｊ）該トークン（３０ｎ−１）を検出したポートインタフェース部１ｎは、該トークン（３０ｎ−１）の状態を調べ、送信先検索終了であるならば、該トークン（３０ｎ−１）のトランザクションの送信先識別番号を調べ、該ポートインタフェース部１ｎに設定された識別番号と比較する。本動作例では、不一致となるので、該トークン（３０ｎ−１）をトークン（３０ｎ）にコピーし、同様に＋１したイベント番号１に設定し、該トークン（３０ｎ）を送信する。
（ｋ）該トークン（３０ｎ）を検出したターミナル部３０は、該トークン（３０ｎ）の状態を調べ、送信先検索終了であるならば、該トークン（３０ｎ）をトークン（３００）にコピーし、該ターミナル部３０が保持しているイベント番号１に＋１したイベント番号２を設定し、該トークン（３００）を送信する。
（ｌ）該トークン（３００）を検出したポートインタフェース部１１は、該トークン（３００）の状態を調べ、送信先検索終了であるならば、該トークン（３００）の送信元識別番号と該ポートインタフェース部１１の識別番号を比較する。本動作例では、一致となるので、接続しているハードウェアモジュール４１が該トークン（３００）のトランザクションの送信元と判断できるので、該ポートインタフェース部１１は、該トークン（３００）のトランザクションを送信元応答（１１２）にコピーし、同様に＋１したイベント番号１を設定し、該ハードウェアモジュール４１に該送信元応答（１１２）を介してトランザクションを送信する。また、該トークン（３００）をトークン（３０１）にコピーする。
（ｍ）ポートインタフェース部１１は、コピーされた前記トークン（３０１）の状態を終了に書き換え、同様に＋１したイベント番号２を設定し、該トークン（３０１）を送信する。
【００５７】
なお、本図では省略したが、前記シーケンス（ｃ）で発生した個別トリガ（１１０）をディセーブル（ｏｆｆ）にし、通信要求がなくなったことを、ＯＲ回路部２０を介してターミナル部３０に通知する。
（ｎ）該トークン（３０１）を検出したポートインタフェース部１２は、該トークン（３０１）の状態を調べ、終了であるならば、該トークン（３０１）をトークン（３０２）にコピーし、同様に＋１したイベント番号２を設定し、該トークン（３０２）を送信する。
【００５８】
なお、該トークン（３０２）は、トークン（３０ｎ−１）となってポートインタフェース部１ｎにて検出されるとする。
（ｏ）該トークン（３０ｎ−１）を検出したポートインタフェース部１ｎは、該トークン（３０ｎ−１）の状態を調べ、終了であるならば、該トークン（３０ｎ−１）をトークン（３０ｎ）にコピーし、同様に＋１したイベント番号２を設定し、該トークン（３０ｎ）を送信する。
【００５９】
該トークン（３０ｎ）と前記シーケンス（ｍ）で記載した個別トリガ（１１０）のディセーブルを受取ったターミナル部３０は、トークンが終了したことを認識し、トークン（３００）の送信を停止する。
以上、説明した本発明の動作について、ポートインタフェース部１０とターミナル部３０の観点から、図６、図７を用いてそれぞれの動作処理フローを説明する。
【００６０】
なお、本発明のハードウェアモジュール接続装置１は、図１に示す構成であり、ポートインタフェース部１０の識別番号を総称してｉとし、１≦ｉ≦ｎ、ｎ≧２の関係を有し、識別番号ｉを持つポートインタフェース部が検出するトークンをトークン（ｉ−１）、送信するトークンをトークン（ｉ）とする。また、ターミナル部３０においては、検出するトークンをトークン（ｎ）、送信するトークンをトークン（０）とする。
【００６１】
＜動作処理フローで示すポートインタフェース部１０の動作＞
図６は、ポートインタフェース部の動作処理フローであり、以降、Ｓ付数字で示したステップ番号に沿って説明する。
なお、ポートインタフェース部１０は、接続しているハードウェアモジュール４０からの通信要求である送信元要求（１０１）の検出と、論理的に隣り合うターミナル部３０もしくはポートインタフェース部１０からのトークン（０００）を検出するステップから始まる。
Ｓ１．接続するハードウェアモジュール４０において通信要求が発生した場合、該ハードウェアモジュール４０が送信する送信元要求（１０１）を介したトランザクションを検出する。なお、該トランザクションを検出するとは、該トランザクションが有するイベント番号が、本ポートインタフェース部１０において値が変化したことを認識することである。
Ｓ２．前記ステップＳ１にて送信元要求（１０１）を介したトランザクションを検出した場合であり、個別トリガ（１００）を出力する。本動作は、フラグをｏｎすることと同等である。
Ｓ３．論理的に隣り合うポートインタフェース部１０もしくはターミナル部３０から送信されるトークン（ｉ−１）を検出する。なお、該トークンを検出するとは、該トークン（ｉ−１）が有するイベント番号が、本ポートインタフェース部１０において値が変化したことを認識することである。
Ｓ４．前記ステップＳ３にてトークン（ｉ−１）を検出した場合であり、該トークン（ｉ−１）が有する状態を識別する。
Ｓ５．前記ステップＳ４にて検出したトークン（ｉ−１）の有する状態が、空きである場合であり、前記ステップＳ１での検出の結果であるフラグがｏｎになっているかを判定する。
Ｓ６．前記ステップＳ５にてフラグがｏｎである場合であり、自ポートインタフェース部１０に接続しているハードウェアモジュール４０に通信要求が発生している場合であるので、検出したトークン（ｉ−１）のトランザクションを前記ステップＳ１にて送信元要求（１０１）を介して検出したトランザクションに書き換え、送信元識別番号を自ポートインタフェース部１０の識別番号ｉに書き換える。
Ｓ７．送信するトークン（ｉ）の状態を送信元検索終了に書き換える。
Ｓ８．前記ステップＳ４にて検出したトークン（ｉ−１）の有する状態が、送信元検索終了である場合であり、該トークン（ｉ−１）のトランザクションが有する送信先識別番号が自ポートインタフェース部の識別番号ｉと一致するかを判定する。
Ｓ９．前記ステップＳ８にて送信先識別番号がｉと一致した場合であり、該トークン（ｉ−１）のトランザクションは接続するハードウェアモジュール４０に送信されるものである。よって、該トークン（ｉ−１）のトランザクションを送信先要求（１０３）にコピーする。
Ｓ１０．送信先要求（１０３）を介して前記ステップＳ９に記載のトランザクションを、接続するハードウェアモジュール４０へ送信する。
Ｓ１１．接続するハードウェアモジュール４０からの送信先応答（１０４）の検出を待つ。
Ｓ１２．接続するハードウェアモジュール４０からの送信先応答（１０４）を介したトランザクションを検出し、送信するトークン（ｉ）のトランザクションを検出した該トランザクションに書き換え、状態を送信先検索終了に書き換える。
Ｓ１３．前記ステップＳ４にて検出したトークン（ｉ−１）の有する状態が、送信先検索終了である場合であり、該トークン（ｉ−１）が有する送信元識別番号が自ポートインタフェース部の識別番号ｉと一致するかを判定する。
Ｓ１４．前記ステップＳ１３にて送信元識別番号がｉと一致した場合であり、接続しているハードウェアモジュール４０が該トークン（ｉ−１）のトランザクションの送信元と判断できる。よって、該トークン（ｉ−１）のトランザクションを、送信元応答（１０２）にコピーし、該送信元応答（１０２）を介してトランザクションを、ハードウェアモジュール４０へ送信する。
Ｓ１５．送信するトークン（ｉ）の状態を終了に書き換える。
Ｓ１６．前記ステップＳ２で出力した個別トリガ（１００）をディセーブルする。本動作は、フラグをｏｆｆすることと同等である。
Ｓ１７．先ず、本ステップの処理を行う場合を列挙する。
・前記ステップＳ４にて検出したトークン（ｉ−１）の有する状態が、終了である場合。
・前記ステップＳ５にて、検出したトークン（ｉ−１）の状態が空きであり、かつフラグがｏｎになっていない場合、つまり自ポートインタフェース部１０にて通信要求が発生していない場合に空きのトークン（ｉ−１）を検出した場合。
・前記ステップＳ８にて、検出したトークン（ｉ−１）の状態が送信元検索終了であり、かつ送信先識別番号がｉと一致しない場合、つまり自ポートインタフェース部１０が送信先でない場合に送信元検索終了のトークン（ｉ−１）を検出した場合。
・前記ステップＳ１３にて、検出したトークン（ｉ−１）の状態が送信先検索終了であり、かつ送信元識別番号がｉと一致しない場合、つまり自ポートインタフェース部１０が送信元でない場合に送信先検索終了のトークン（ｉ−１）を検出した場合。
【００６２】
上記に列挙した何れかの場合に、検出したトークン（ｉ−１）をコピーして送信するトークン（ｉ）とする。
Ｓ１８．先ず、本ステップの処理を行う場合を列挙する。
・検出したトークン（ｉ−１）の状態が空きであり、状態を送信元検索終了としたトークン（ｉ）を送信する場合。
・検出したトークン（ｉ−１）の状態が送信元検索終了であり、状態を送信先検索終了としたトークン（ｉ）を送信する場合。
・検出したトークン（ｉ−１）の状態が送信先検索終了であり、状態を終了としたトークン（ｉ）を送信する場合。
・検出したトークン（ｉ−１）をコピーして、トークン（ｉ）として送信する場合。
【００６３】
上記に列挙した何れかの場合に、送信するトークン（ｉ）のイベント番号を、本ポートインタフェース部１０が保持しているトークンに対するイベント番号に対して＋１した値を設定して、該トークン（ｉ）を送信する。
＜動作処理フローで示すターミナル部３０の動作＞
図７は、ターミナル部の動作処理フローであり、以降、Ｓ付数字で示したステップ番号に沿って説明する。
Ｓ２１．全体トリガ（２００）の有無を判定する。
Ｓ２２．前記ステップＳ２１にて全体トリガ（２００）が発生した場合、トークン（０００）を構成する情報である、イベント番号を本ターミナル部３０が保持している現時点のイベント番号を＋１した値に設定し、状態を空きに設定し、トランザクション、送信元識別番号を未設定としたトークン（０）を送信する。
Ｓ２３．論理的に隣り合うポートインタフェース部１ｎが送信するトークン（ｎ）を検出する（該トークン（ｎ）は、図１ではトークン（３０ｎ）と記載）。
Ｓ２４．前記ステップＳ２３にてトークン（ｎ）を検出した場合、該トークン（ｎ）の状態が終了であるかを判定する。
Ｓ２５．前記ステップＳ２４にて該トークン（ｎ）の状態が終了でない、つまり送信元検索終了、送信先検索終了の場合、該トークン（ｎ）をコピーしてトークン（０）として送信する。ただし、イベント番号は本ターミナル部３０が保持している現時点のイベント番号を＋１した値に書き換える。なお、該トークン（ｎ）の状態が空きである場合は、異常時の動作となるため、トークン（０）の送信を停止する等の手段を講じることとし、ここでは詳細についての説明を省略する。
Ｓ２６．前記ステップＳ２４にて該トークン（ｎ）の状態が終了の場合、前記ステップＳ２１にて判定した全体トリガ（２００）がまだ継続して有る（ｏｎのまま）かを判定する。
Ｓ２７．前記ステップＳ２６にて全体トリガ（２００）が継続して有る場合、新たに、何れかのハードウェアモジュール４０に通信要求が発生している場合であるので、前記ステップＳ２２と同様に、イベント番号を同様に＋１した値に設定し、状態を空きに設定し、トランザクション、送信元識別番号を未設定としたトークン（０）を送信する。
Ｓ２８．前記ステップＳ２６にて全体トリガ（２００）が発生していないので、トークン（０）の送信を停止する。
【００６４】
【発明の効果】
以上記載したように、ＩＰと呼ばれる設計資産を含むハードウェアモジュールが持つポートをトランザクション型に宣言し、本発明のハードウェアモジュール接続装置に接続すれば、該ハードウェアモジュール接続装置を経由してデータ（トランザクション）を送信元のハードウェアモジュールから送信先のハードウェアモジュールに伝送することが可能となる。また、トランザクションによるデータ伝送は通信プロトコルを定義していないので、従来課題となっていたハードウェアモジュール間通信でのタイミングの不一致やポートの不一致の発生を解消することが可能となる。
【００６５】
したがって、半導体回路の設計開発の上流工程となる、回路設計段階にて行うハードウェアモジュール間の通信プロトコルやバスインタフェースの決定を行う前の、仕様検討の早い段階に、複数のハードウェアモジュールを、ハードウェア記述言語等にてモデル化し、同じくハードウェア記述言語等で記述された本発明のハードウェアモジュール接続装置に接続することによって、前記の上流工程である仕様設計の早い段階で半導体回路全体、つまり、仕様の妥当性、ハードウェアモジュールの振る舞い、開発する半導体が有するシステムのサービスについて検証することが可能となる。
【００６６】
本発明は、上記の検証を可能とし、複数のハードウェアモジュールを接続するハードウェアモジュール接続装置の提供することを可能とする。
【図面の簡単な説明】
【図１】ハードウェアモジュール接続装置の構成
【図２】トランザクションの構造
【図３】トランザクションの動作事例
【図４】トークンの構造
【図５】動作シーケンス
【図６】ポートインタフェース部の動作処理フロー
【図７】ターミナル部の動作処理フロー
【図８】ハードウェアモジュール適用事例
【図９】従来の通信プロトコルとトランザクション
【図１０】トークンリングアクセス方式
【符号の説明】
１                    ハードウェアモジュール接続装置
１１、１２、１ｎ      ポートインタフェース部
１０                  ポートインタフェース部の総称
２０                  ＯＲ回路部
３０                  ターミナル部
４１、４２、４ｎ      ハードウェアモジュール
４０                  ハードウェアモジュールの総称
以下、（  ）付符号は信号を表す。
（１１１）、（１２１）、（１ｎ１）                          送信元要求
（１０１）                                              送信元要求の総称
（１１２）、（１２２）、（１ｎ２）                          送信元応答
（１０２）                                              送信元応答の総称
（１１３）、（１２３）、（１ｎ３）                          送信先要求
（１０３）                                              送信先要求の総称
（１１４）、（１２４）、（１ｎ４）                          送信先応答
（１０４）                                              送信先応答の総称
（１１０）、（１２０）、（１ｎ０）                          個別トリガ
（１００）                                              個別トリガの総称
（２００）                                              全体トリガ
（３００）、（３０１）、（３０２）、（３０ｎ−１）、（３０ｎ）  トークン
（０００）                                              トークンの総称
【図１】
2004252878.tif 000003
【図２】
2004252878.tif 000004
【図３】
2004252878.tif 000005
【図４】
2004252878.tif 000006
【図５】
2004252878.tif 000007
【図６】
2004252878.tif 000008
【図７】
2004252878.tif 000009
【図８】
2004252878.tif 000010
【図９】
2004252878.tif 000011
【図１０】
2004252878.tif 000012