(57)【特許請求の範囲】
【請求項１】
転送されたパケットの内容に応じてデータ処理を行なう処理部と、外部デバイスから到来したパケットをその宛先に応じて前記処理部のいずれかに転送する転送部と、を含む半導体集積回路であって、
前記転送部は、
当該到来したパケットを順次受信する受信部と、
前記受信部によって受信されたパケットをその宛先に応じて分配する分配部と、
前記分配部から自身に分配されたパケットを各々が順次蓄積する複数の蓄積部と、
中継許可指令に応じて、前記蓄積部のうちの対応する１つに蓄積されているパケットを、前記処理部のうちの対応する１つに各々が供給する複数の中継部と、
前記分配部から自身に分配されたパケットが中継許可指示パケットであると判別した場合に、前記複数の蓄積部のうち前記中継許可指示パケットによって指定されたパケットが蓄積されている蓄積部に対応する前記中継部に対して前記指定されたパケットについての前記中継許可指令を与える出力制御部と、を含み、
前記処理部は、前記中継部から供給された前記パケットに応じて前記外部デバイスから読み出したデータを通信データとして外部に送信することを特徴とする半導体集積回路。
【請求項２】
前記処理部は、前記中継部から供給された１つのパケットについての前記データ処理が完了したときに完了通知を発することを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
転送されたパケットの内容に応じてデータ処理を行なう処理部と、外部デバイスから到来したパケットをその宛先に応じて前記処理部のいずれかに転送する転送部と、を含む半導体集積回路であって、
前記転送部は、
当該到来したパケットを順次受信する受信部と、
前記受信部によって受信されたパケットが中継許可指示パケットであると判別した場合に前記中継許可指示パケットを取得する出力制御部と、
前記受信部によって受信されたパケットのうちの、前記出力制御部によって取得されたパケット以外のパケットをその宛先に応じて分配する分配部と、
前記分配部から自身に分配されたパケットを各々が順次蓄積する複数の蓄積部と、
中継許可指令に応じて、前記蓄積部のうちの対応する１つに蓄積されているパケットを、前記処理部のうちの対応する１つに各々が供給する複数の中継部と、を含み、
前記出力制御部は、前記複数の蓄積部のうち前記中継許可指示パケットによって指定されたパケットが蓄積されている蓄積部に対応する前記中継部に対して前記指定されたパケットについての前記中継許可指令を与え、
前記処理部は、前記中継部から供給された前記パケットに応じて前記外部デバイスから読み出したデータを通信データとして外部に送信することを特徴とする半導体集積回路。
【請求項４】
前記処理部は、前記中継部から供給された１つのパケットについての前記データ処理が完了したときに完了通知を発することを特徴とする請求項２に記載の半導体集積回路。
【請求項５】
請求項１に記載の半導体集積回路のデバッグ方法であって、
前記受信部により受信されたパケットと前記処理部により送信された通信パケットとを対応付けて観測し、観測結果に基づいてデバッグを行うことを特徴とする半導体集積回路のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関し、特に故障や欠陥を修正するために行われる通信パケット観測のための補助機能を有する半導体集積回路に関する。
【背景技術】
【０００２】
従来より、半導体集積回路内に生じた故障や欠陥をデバッグするために、当該回路とＣＰＵ等の外部のデバイスとの間で通信されるデータを観測することが行なわれている（例えば特許文献１）。近年、例えばＰＣＩ（Peripheral Component Interconnect） Express（以下、ＰＣＩｅという。）等の規格に従って、いわゆるスプリットトランザクションによる通信が行なわれている。かかる通信の場合、ある１つの要求に対する応答がなされる前に次の要求がなされるので、通信されるパケットを観測しても、要求と応答との対応がわかり難く、デバッグを効率化に行なうことができないという問題があった。例えば特許文献２には、かかる問題の解決を課題とした技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２２５６９４号公報
【特許文献２】特開２０１１−９９９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は上記した如き問題点に鑑みてなされたものであって、デバッグを効率的に行なうことができる半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明による半導体集積回路は、転送されたパケットの内容に応じてデータ処理を行なう処理部と、外部デバイスから到来したパケットをその宛先に応じて前記処理部のいずれかに転送する転送部と、を含む半導体集積回路であって、前記転送部は、当該到来したパケットを順次受信する受信部と、前記受信部によって受信されたパケットをその宛先に応じて分配する分配部と、前記分配部から自身に分配されたパケットを各々が順次蓄積する複数の蓄積部と、中継許可指令に応じて、前記蓄積部のうちの対応する１つに蓄積されているパケットを、前記処理部のうちの対応する１つに各々が供給する複数の中継部と、前記分配部から自身に分配されたパケットが中継許可指示パケットであると判別した場合に、前記複数の蓄積部のうち前記中継許可指示パケットによって指定されたパケットが蓄積されている蓄積部に対応する前記中継部に対して前記指定されたパケットについての前記中継許可指令を与える出力制御部と、を含み、前記処理部は、前記中継部から供給された前記パケットに応じて前記外部デバイスから読み出したデータを通信データとして外部に送信することを特徴とする。
【０００６】
また、本発明による半導体集積回路は、転送されたパケットの内容に応じてデータ処理を行なう処理部と、外部デバイスから到来したパケットをその宛先に応じて前記処理部のいずれかに転送する転送部と、を含む半導体集積回路であって、前記転送部は、当該到来したパケットを順次受信する受信部と、前記受信部によって受信されたパケットが中継許可指示パケットであると判別した場合に前記中継許可指示パケットを取得する出力制御部と、前記受信部によって受信されたパケットのうちの、前記出力制御部によって取得されたパケット以外のパケットをその宛先に応じて分配する分配部と、前記分配部から自身に分配されたパケットを各々が順次蓄積する複数の蓄積部と、中継許可指令に応じて、前記蓄積部のうちの対応する１つに蓄積されているパケットを、前記処理部のうちの対応する１つに各々が供給する複数の中継部と、を含み、前記出力制御部は、前記複数の蓄積部のうち前記中継許可指示パケットによって指定されたパケットが蓄積されている蓄積部に対応する前記中継部に対して前記指定されたパケットについての前記中継許可指令を与え、前記処理部は、前記中継部から供給された前記パケットに応じて前記外部デバイスから読み出したデータを通信データとして外部に送信することを特徴とする。
【発明の効果】
【０００７】
本発明による半導体集積回路によれば、デバッグを効率的に行なうことができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施例である半導体集積回路の構成を示すブロック図である。
【図２】図１の半導体集積回路を外部デバイス及び観測装置と共に示すブロック図である。
【図３】図１の半導体集積回路におけるパケットのフローを示すタイムチャートである。
【図４】各パケットアナライザによって観測されるパケット及びデータの一例を時系列順に示すタイムチャートである。
【図５】本発明の第２の実施例である半導体集積回路の構成を示すブロック図である。
【発明を実施するための形態】
【０００９】
以下、本発明に係る実施例について添付の図面を参照しつつ詳細に説明する。
【００１０】
＜第１の実施例＞
図１には、本発明の第１の実施例である半導体集積回路１の構成が示されている。
【００１１】
処理部２−１〜２−ｎ及び３−１〜３−ｎ（ｎは２以上の整数）の各々は、転送されたパケットの内容に応じて各種データ処理を行なう。これらの各々は、例えば、外部デバイス２０（図２）からの指示に応じてメモリ２３へのデータアクセス処理を実行することができる。処理部２−１及び３−１は、バス４−１を介してパケットを送受信する。処理部２−２〜２−ｎ及び３−２〜３−ｎについても、それぞれ対応するバス４−２〜４−ｎを介してパケットを送受信する。
【００１２】
バス４−２〜４−ｎは、例えばAMBA AHB（Advanced Microcontroller Bus Architecture Adcanced High-performance Bus）、PCI（Peripheral Component Interconnect）バス等のバス規格に従ってバスアクセス可能なパラレルバスである。
処理部入出力１４−１〜１４−ｎは、例えばＵＡＲＴ（Universal Asynchronous Receiver Transmitter）、ＵＳＢ（Universal Serial Bus）、ＳＡＴＡ（Serial Advanced Technology Attachment）等の通信規格に従ってデータ通信可能な通信路である。
【００１３】
コンバータ５−１は、処理部２−１及び３−１から出力されたバスアクセスをバス４−１を介して受信し、これをキュー蓄積可能なデータ形式すなわちパケットに変換してアップストリームキュー７−１に順次供給する。また、コンバータ５−１は、ダウンストリームキュー８−１に蓄積されているパケットを時系列順に取り出し、これをバスアクセスに変換して、バス４−１を介して処理部２−１又は３−１に供給する。
【００１４】
コンバータ５−２は、処理部２−２及び３−２から出力されたバスアクセスをバス４−２を介して受信し、これをキュー蓄積可能なデータ形式すなわちパケットに変換してアップストリームキュー７−２に順次供給する。また、コンバータ５−２は、中継部６−２から中継されたパケットをバスアクセスに変換して、バス４−２を介して処理部２−１又は３−１に供給する。コンバータ５−３〜５−ｎの各々もコンバータ５−２と同様の動作を行なう。
【００１５】
中継部６−２は、キュー出力制御部１３から中継許可指令を受ける毎に、ダウンストリームキュー８−２に蓄積されているパケットの１つを時系列順に取り出してコンバータ５−２に中継する。中継許可指令は、ダウンストリームキュー８−２に蓄積されているパケットの１つを中継することを許可するものであり、例えば外部デバイス２０（図２）からの中継許可指示パケットによって与えられる。また、中継部６−２は、キュー出力制御部１３から中継停止指令を受けた場合には、ダウンストリームキュー８−２に蓄積されているパケットの中継を停止する。中継部６−３〜６−ｎの各々も中継部６−２と同様の動作を行なう。
【００１６】
アップストリームキュー７−１は、コンバータ５−１から供給されたパケットを順次蓄積する。アップストリームキュー７−２〜７−ｎの各々もアップストリームキュー７−１と同様の動作を行なう。
【００１７】
ダウンストリームキュー８−１は、分配部１０から供給されたパケットを順次蓄積する。ダウンストリームキュー８−２〜８−ｎの各々もダウンストリームキュー８−１と同様の動作を行なう。
【００１８】
中継部９−２は、キュー出力制御部１３から中継許可指令を受ける毎に、アップストリームキュー７−２に蓄積されているパケットの１つを時系列順に取り出して分配部１０に中継する。また、中継部９−２は、キュー出力制御部１３から中継停止指示を受けた場合には、アップストリームキュー７−２に蓄積されているパケットの中継を停止する。中継部９−３〜９−ｎの各々も中継部９−２と同様の動作を行なう。
【００１９】
分配部１０は、ＰＣＩｅ＿ＩＦ１２によって受信されたパケットをその宛先に応じてダウンストリームキュー８−１〜８−ｎのうちの１つに供給する。
【００２０】
選択部１１は、アップストリームキュー７−１及び中継部９−２〜９−ｎのうちから選択した１つに蓄積されているパケットを取り出してこれをＰＣＩｅ＿ＩＦ１２に供給する。
【００２１】
ＰＣＩｅ＿ＩＦ１２は、ＰＣＩ−Ｅｘｐｒｅｓｓ通信路を介してパケットを送受信するインターフェースである。ＰＣＩｅ＿ＩＦ１２は、選択部１１から供給されたパケットを外部デバイス２０（図２）へ送信できる。また、ＰＣＩｅ＿ＩＦ１２は、外部デバイス２０から到来したパケットを選択部１１に供給できる。
【００２２】
キュー出力制御部１３は、バス４−１を介して到来した自身宛のパケットが中継停止指示パケット又は中継許可指示パケット（以下、これらを総称してキュー制御指示パケットという）であると判別した場合に、その内容に応じて中継部６−２〜６−ｎ及び中継部９−２〜９−ｎを制御する。キュー出力制御部１３は、例えば、これらの中継部に対してパケットの中継停止指令及び中継許可指令を発することができる。
【００２３】
以下、ＰＣＩｅ＿ＩＦ１２と、分配部１０と、ダウンストリームキュー８−１〜８−ｎと、中継部６−１〜６−ｎと、キュー出力制御部１３と、を含む構成を転送部と称する。
【００２４】
図２には、半導体集積回路１と共に、そのデバッグのための外部デバイス２０及び観測装置３１、３２が示されている。
【００２５】
外部デバイス２０は、デバッグのためのデータ及び指令を半導体集積回路１に供給する。
【００２６】
ＰＣＩｅ＿ＩＦ２１は、半導体集積回路１のＰＣＩｅ＿ＩＦ１２との間で、ＰＣＩ−Ｅｘｐｒｅｓｓ規格に従ってパケットを送受信するためのインターフェースである。
【００２７】
ＣＰＵ２２は、外部デバイス２０全体を制御し、例えば、デバッグのための指令を半導体集積回路１に与えることができる。
【００２８】
メモリ２３は、デバッグのためのデータを記憶する。
【００２９】
パケットアナライザ３１は、半導体集積回路１と外部デバイス２０との間で、ＰＣＩ−Ｅｘｐｒｅｓｓ規格に従って送受信されるパケットを観測できる。パケットアナライザ３２は、処理部２−１〜２−ｎ及び３−１〜３−ｎから出力されるパケットを観測できる。
【００３０】
以下、図３を参照しつつ、デバッグ時における半導体集積回路１の動作について説明する。図３には、（ａ）ＰＣＩｅ＿Ｉ/Ｆダウンストリーム、（ｂ）ＰＣＩｅ＿Ｉ/Ｆアップストリーム、（ｃ）ダウンストリームキュー、（ｄ）アップストリームキュー、（ｅ）バス、（ｆ）処理部入出力の各系列毎にパケットが時系列で示されている。なお、外部デバイス２０側から半導体集積回路１側へのパケットの流れをダウンストリームと称し、半導体集積回路１側から外部デバイス２０側へのパケットの流れをアップストリームと称する。以下、半導体集積回路１が、外部デバイス２０からの指示に応じてＰＣＩｅ通信路を介して取得したデータをＵＡＲＴ等の通信路に転送する場合の動作について説明する。
【００３１】
先ず、外部デバイス２０のＣＰＵ２２から半導体集積回路１に対して中継停止指示パケット４１、動作指令パケット５２、５３及び５４、中継許可指示パケット４２が順次送信される。これらのパケットは、半導体集積回路１のＰＣＩｅ＿ＩＦ１２によって順次受信される。
【００３２】
中継停止指示パケット４１は、ダウンストリームキュー８−２〜８−ｎの各々に蓄積されているパケットの中継停止を指示するものであり、キュー出力制御部１３を宛先としている。キュー出力制御部１３は、分配部１０からダウンストリームキュー８−１及びコンバータ５−１を経由してバス４−１に到来した中継停止指示パケット４１を受信する。
【００３３】
キュー制御パケット４１は、中継停止指示パケット４１に応じて、中継部６−２によるダウンストリームキュー８−２からコンバータ５−２へのパケット中継を停止させる。同様に、キュー制御パケット４１は、中継部６−３〜６−ｎによるコンバータ５−３〜５−ｎへのパケット中継を停止させる。なお、キュー制御パケット４１は、中継部９−２〜９−ｎの各々に対しては中継許可指令を発してパケット中継を許可する。中継部９−２〜９−ｎの各々は、アップストリームキュー７−２〜７−ｎに蓄積されたパケットを分配部１０に順次中継する。
【００３４】
動作指令パケット５２は処理部２−２を宛先とし、動作指令パケット５３は処理部２−３を宛先とし、動作指令パケット５４は処理部２−４を宛先とする。動作指令パケット５２は、分配部１０からダウンストリームキュー８−２に供給され蓄積される。同様に、動作指令パケット５３はダウンストリームキュー８−３に蓄積され、動作指令パケット５４はダウンストリームキュー８−４にそれぞれ蓄積される。これらのパケットは、例えば、これらの処理部に対してメモリ２３への直接アクセス（ＤＭＡ（Direct Memory Access））を指示するものである。
【００３５】
中継許可指示パケット４２は、ダウンストリームキュー８−２に蓄積されているパケットのうちの例えば１つを中継することを許可するものであり、キュー出力制御部１３を宛先としている。中継許可指示パケット４２は、当該宛先情報と自身が中継許可指示パケットであることを示すパケット識別情報とをヘッダ内に含み、中継許可対象のキュー識別番号をペイロード内に含んでいる。
【００３６】
キュー出力制御部１３は、分配部１０から分配され、ダウンストリームキュー８−１及びコンバータ５−１を経由してバス４−１に到来したパケットが中継許可指示パケット４２であるか否かをパケット識別情報に基づいて判別する。
【００３７】
キュー出力制御部１３は、中継許可指示パケット４２であると判別した場合に、中継許可指示パケット４２に含まれるキュー識別番号により指定されたダウンストリームキュー８−２に蓄積されているパケットの１つをコンバータ５−２へ中継させる。この際、中継部６−２は、ダウンストリームキュー８−２から時系列順にパケットを１つ取り出してコンバータ５−２へ中継する。ここでは、動作指令パケット５２がコンバータ５−２に中継される。コンバータ５−２は、動作指令パケット５２をバス４−２を介して処理部２−２に供給する。
【００３８】
処理部２−２は、動作指令パケット５２に応じてメモリ２３に対してリードアクセスパケット６２を発する。メモリ２３からは、読み出し完了通知７２と共に読み出しデータ８２が送信される。処理部２−２は、バス４−２を介して読出しデータ８２を受信し、これを例えばＵＡＲＴ等の通信規格に則った通信データ９２として処理部入出力１４−２（図２）から外部に送信する。また、処理部２−２は、通信データ９２の送信完了通知をＣＰＵ２２に対して発することができる。
【００３９】
続いて、ＣＰＵ２２から半導体集積回路１に対して中継許可指示パケット４３が送信される。ＣＰＵ２２は、例えば、処理部２−２によって発せられた送信完了通知を受信したときに中継許可指示パケット４３を発する。また、ＣＰＵ２２は、例えば、通信データ９２の出力を監視する監視装置（図示せず）からの送信完了通知を受信したときに中継許可指示パケット４３を発しても良い。中継許可指示パケット４３は、半導体集積回路１のＰＣＩｅ＿ＩＦ１２によって受信される。
【００４０】
中継許可指示パケット４３は、ダウンストリームキュー８−３に蓄積されているパケットのうちの例えば１つを中継することを許可するものであり、キュー出力制御部１３を宛先としている。中継許可指示パケット４３も、宛先情報、パケット識別情報、及びキュー識別番号を含んでいる。キュー出力制御部１３は、分配部１０からダウンストリームキュー８−１及びコンバータ５−１を経由してバス４−１に到来した中継許可指示パケット４３を受信する。
【００４１】
キュー出力制御部１３は、中継許可指示パケット４３によるキュー指定に応じて、ダウンストリームキュー８−３に蓄積されているパケットの１つをコンバータ５−３へ中継させる。ここでは、中継部６−３によってダウンストリームキュー８−３から動作指令パケット５３が取り出されコンバータ５−３へ中継される。コンバータ５−３は、動作指令パケット５３をバス４−３を介して処理部２−３に供給する。
【００４２】
処理部２−３は、動作指令パケット５３に応じてメモリ２３に対してリードアクセスパケット６３を発する。メモリ２３からは、読み出し完了通知７３と共に読み出しデータ８３が送信される。処理部２−３は、バス４−３を介して読出しデータ８３を受信し、これを例えばＵＳＢ等の通信規格に則った通信データ９３として処理部入出力１４−３（図２）から外部に送信する。また、処理部２−３は、通信データ９３の送信完了通知をＣＰＵ２２に対して発することができる。
【００４３】
続いて、ＣＰＵ２２から半導体集積回路１に対してキュー制御パケット４４が送信される。ＣＰＵ２２は、例えば、処理部２−３又は監視装置（図示せず）によって発せられた送信完了通知を受信したときにキュー制御パケット４４を発する。キュー制御パケット４４は、半導体集積回路１のＰＣＩｅ＿ＩＦ１２によって受信される。
【００４４】
キュー制御パケット４４は、ダウンストリームキュー８−４に蓄積されているパケットのうちの例えば１つを中継することを許可する中継許可指示パケットであり、キュー出力制御部１３を宛先としている。中継許可指示パケット４４も、宛先情報、パケット識別情報、及びキュー識別番号を含んでいる。キュー出力制御部１３は、分配部１０からダウンストリームキュー８−１及びコンバータ５−１を経由してバス４−１に到来した中継許可指示パケット４４を受信する。
【００４５】
キュー出力制御部１４は、中継許可指示パケット４４によるキュー指定に応じて、ダウンストリームキュー８−４に蓄積されているパケットの１つをコンバータ５−４へ中継させる。ここでは、中継部６−４によってダウンストリームキュー８−４から動作指令パケット５４が取り出されコンバータ５−４へ中継される。コンバータ５−４は、動作指令パケット５４をバス４−４を介して処理部２−４に供給する。
【００４６】
処理部２−４は、動作指令パケット５４に応じてメモリ２４に対してリードアクセスパケット６４を発する。メモリ２３からは、読み出し完了通知７４と共に読み出しデータ８４が送信される。処理部２−４は、バス４−２を介して読出しデータ８４を受信し、これを例えばＳＡＴＡ等の通信規格に則った通信データ９４として処理部入出力１４−４（図２）から外部に送信する。
【００４７】
半導体集積回路１による上記データ転送についてのデバッグのために、パケットアナライザ３１は、例えば、図３の（ａ）すなわちＰＣＩｅ＿ＩＦダウンストリーム系列に示される中継許可指示パケット４２〜４４を観測対象とする。また、パケットアナライザ３２は、例えば、図３の（ｆ）すなわち処理部入出力系列に示される通信データ９２〜９４を観測対象とする。これらを観測対象とした場合、時系列的には、中継許可指示パケット４２、通信データ９２、中継許可指示パケット４３、通信データ９３、中継許可指示パケット４４、通信データ９４の順に観測される。
【００４８】
図４には、パケットアナライザ３１及び３２によって観測されるこれらのパケット及びデータが時系列順に示されている。パケットアナライザ３１によって中継許可指示パケット４２を観測した直後に、これに応じて処理部２−２に供給された動作指令パケット５２に対応する通信データ９２をパケットアナライザ３２によって観測できる。故に、動作指令パケット５２とこれに対応する通信データ９２との関係を容易に把握することができる。同様に、動作指令パケット５３とこれに対応する通信データ９３との関係、及び動作指令パケット５４とこれに対応する通信データ９４との関係についても容易に把握することができる。
【００４９】
上記したように、本実施例の半導体集積回路１は、外部から供給される中継停止指示パケット及び中継許可指示パケットに応じて、各処理部への動作指令パケットの供給タイミングを調整する。詳細には、半導体集積回路１は、複数の動作指令パケットを一時に受信したとしても、中継許可指示パケットを受信するまでは、これらを処理部に対して供給しない。半導体集積回路１は、１つの中継許可指示パケットを受信してはじめてこれに対応する１つの動作指令パケットを処理部に供給する。また、１つの動作指令パケットの供給を受けた処理部は、当該パケットの指令に応じたデータ処理により得られた１つの通信データを出力する。半導体集積回路１は、当該１つの中継許可指示パケットを受信してから当該１つの通信データを出力するまでの間に他の通信データを出力することは無い。故に、例えば図４に示したように、パケットアナライザ３１（図２）によって１つの中継許可指示パケット（例えば符号４２）を観測した直後に、パケットアナライザ３２（図２）によって１つの通信データ（例えば符号９２）を観測できるので、１つの動作指令パケットと、これに対応する１つの通信データとの関係を把握することができる。
【００５０】
かかる動作により、例えばＰＣＩｅ等の通信規格に従ってスプリットトランザクションによる通信を行なった場合においても、動作指令パケットによる要求と、これに対する応答パケット（本実施例の通信データ）との関係を容易に把握することができる。特に、半導体集積回路１が複数のバス４−１〜４−ｎを備えている場合により大きな効果を奏する。バス４−１〜４−ｎの各々から出力される通信データがパケットアナライザ３２において混在して観測されることが無くなるからである。
【００５１】
また、例えば特許文献２に開示されている技術は、受信パケットを識別するためにシーケンス番号、アドレス、文字列・数値を用いるものであり、以下のような問題があった。シーケンス番号はＰＣＩｅ規格における「タグ」に相当すると考えられる。ＰＣＩｅのタグは処理未完了のパケットのみについて重複しないように管理するためのものなので、処理完了のパケットとの間でタグが重複することもあり得る。故に、ＰＣＩｅ通信の場合には、タグを用いてパケットを識別することが困難であるという問題がある。
【００５２】
また、アドレスによって識別できるものは送信元と宛先なので、同一の送信先から送信された複数のパケットの各々についてその種別を識別することはできないという問題がある。更に、文字列・数値をパケットに付加するためには、パケット内に冗長なデータ領域を必要とする。しかし、例えばＣＰＵがデバイスを制御する場合には、通常、パケット内には冗長なデータ領域は存在しない。故に、かかる場合には、文字列・数値を用いてパケットを識別できないという問題もあった。
【００５３】
このように、従来技術においては、例えばＰＣＩｅ等の通信規格に従ってパケットを通信する半導体集積回路においては、デバッグのためにパケットを観測してもその識別が困難であった。故に、例えばＣＰＵ等の外部デバイスからの要求パケットと、半導体集積回路内のデバイスからの応答パケットとの対応がわかり難く、デバッグの効率が低下してしまうという問題があった。
【００５４】
これに対して、本実施例の半導体集積回路１においては、外部から供給される中継停止指示パケット及び中継許可指示パケットに応じて、各処理部への動作指令パケットの供給タイミングを調整するので、従来技術のような問題は生じない。
【００５５】
このように、本実施例の半導体集積回路１によれば、外部からの要求とこれに対する応答との関係を容易に把握でき、デバッグを効率的に行なうことができる。
【００５６】
＜第２の実施例＞
図５には、本発明の第２の実施例である半導体集積回路１の構成が示されている。以下、第１の実施例と異なる部分について主に説明する。
【００５７】
コンバータ５−１とダウンストリームキュー８−１との間に中継部６−１が設けられている。中継部６−１は、第１の実施例の中継部６−２と同様の動作を行なう。また、アップストリームキュー７−１と選択部１１−１との間に中継部９−１が設けられている。中継部９−１は、第１の実施例の中継部９−２と同様の動作を行なう。
【００５８】
キュー出力制御部１３は、ＰＣＩｅ＿ＩＦ１２によって受信された中継停止指示パケット及び中継許可指示パケットを取得する。キュー出力制御部１３は、これらのパケットに含まれる宛先情報によって、これらが自身を宛先とするパケットであることを判別する。また、キュー出力制御部１３は、これらのパケットに含まれるパケット識別情報によって、これらのパケットが中継停止指示パケット又は中継許可指示パケットであることを判別する。また、キュー出力制御部１３は、中継許可指示パケットに含まれるキュー識別番号によって中継許可対象のキューを判別し、中継部６−１〜６−ｎ及び９−１〜９−ｎを制御する。
【００５９】
分配部１０は、ＰＣＩｅ＿ＩＦ１２によって受信されたパケットのうちの、キュー出力制御部１３によって取得されたパケット以外のパケットを、その宛先に応じてダウンストリームキュー８−１〜８−ｎのうちの１つに供給する。
【００６０】
以下、図３を参照しつつ、デバッグ時における半導体集積回路１の動作について説明する。
【００６１】
先ず、外部デバイス２０のＣＰＵ２２から送信された中継停止指示パケット４１、動作指令パケット５２、５３及び５４、中継許可指示パケット４２が半導体集積回路１のＰＣＩｅ＿ＩＦ１２によって順次受信される。
【００６２】
中継停止指示パケット４１は、ダウンストリームキュー８−１〜８−ｎの各々に蓄積されているパケットの中継停止を指示するものであり、キュー出力制御部１３を宛先としている。キュー出力制御部１３は、中継停止指示パケット４１をＰＣＩｅ＿ＩＦ１２から直接受信する。
【００６３】
キュー制御パケット４１は、中継停止指示パケット４１に応じて、中継部６−１によるダウンストリームキュー８−１からコンバータ５−１へのパケット中継を停止させる。同様に、キュー制御パケット４１は、中継部６−２〜６−ｎによるコンバータ５−２〜５−ｎへのパケット中継を停止させる。
【００６４】
動作指令パケット５２はダウンストリームキュー８−２に蓄積され、動作指令パケット５３はダウンストリームキュー８−３に蓄積され、動作指令パケット５４はダウンストリームキュー８−４にそれぞれ蓄積される。
【００６５】
中継許可指示パケット４２は、ダウンストリームキュー８−２に蓄積されているパケットのうちの例えば１つを中継することを許可するものであり、キュー出力制御部１３を宛先としている。キュー出力制御部１３は、中継許可指示パケット４２をＰＣＩｅ＿ＩＦ１２から直接受信する。
【００６６】
キュー出力制御部１３は、中継許可指示パケット４２に応じて、ダウンストリームキュー８−２に蓄積されている動作指令パケット５２をコンバータ５−２に中継する。コンバータ５−２は、動作指令パケット５２をバス４−２を介して処理部２−２に供給する。
【００６７】
処理部２−２は、動作指令パケット５２に応じてメモリ２３に対してリードアクセスパケット６２を発する。処理部２−２は、メモリ２３から読み出し完了通知７２と共に送信された読出しデータ８２を受信し、これを例えばＵＡＲＴ等の通信規格に則った通信データ９２として処理部入出力１４−２（図２）から外部に出力する。
【００６８】
半導体集積回路１は、中継許可指示パケット４３及び４４が外部デバイス２０から供給された場合にも同様の動作を行なう。
【００６９】
このように、本実施例の半導体集積回路１においては、キュー出力制御部１３は中継停止指示パケット及び中継許可指示パケットを、バス４−１を介さずにＰＣＩｅ＿ＩＦ１２から直接受信する。かかる構成により、バス４−１の経路についてのパケット中継タイミングをも適宜調整可能となるので、デバッグをより効率的に行なうことができる。また、キュー出力制御部１３がこれらのパケットをＰＣＩｅ＿ＩＦ１２から直接受信するので、タイミング調整の即応性が向上する。
【００７０】
第１及び第２の実施例は、動作指令パケット５２、５３及び５４の宛先が処理部２−２、２−３及び２−４である場合の例であるが、これに限られない。例えば、動作指令パケット５２、５３及び５４が処理部２−１〜２−ｎのうちの１つを宛先とした場合においても、同様の処理により同様の効果を奏する。
【００７１】
第１及び第２の実施例においては、デバッグの動作について説明したが、通常動作時すなわちデバッグを行わないときには、キュー出力制御部１３は、中継部６−１〜６−ｎ及び９−１〜９−ｎの各々に対して中継許可指令を発してパケット中継を許可している。
【符号の説明】
【００７２】
１  半導体集積回路
２−１〜２−ｎ、３−１〜３−ｎ  処理部
４−１〜４−ｎ  バス
５−１〜５−ｎ  コンバータ
６−１〜６−ｎ  中継部
７−１〜７−ｎ  アップストリームキュー
８−１〜８−ｎ  ダウンストリームキュー
９−１〜９−ｎ  中継部
１０  分配部
１１  選択部
１２  ＰＣＩｅ＿ＩＦ
１３  キュー出力制御部（出力制御部）
１４−１〜１４−ｎ  処理部入出力
２０  外部デバイス
２１  ＰＣＩｅ＿ＩＦ
２２  ＣＰＵ
２３  メモリ
３１、３２  パケットアナライザ
【図１】
0006013711.tif 000002
【図２】
0006013711.tif 000003
【図３】
0006013711.tif 000004
【図４】
0006013711.tif 000005
【図５】
0006013711.tif 000006