(57)【要約】【課題】ソフトウェアの開発や保守におけるデバッグ作業を効率的に行うことのできる半導体集積回路装置を提供する。【解決手段】半導体集積回路装置１の内部回路１０で実行されるソフトウェアのデバッグを行うデバッグ回路２は、インターフェイス部２４から入力される機能構成情報によりプログラマブルロジック部２１の機能が構成され、デバッグポート２２を介して、デバッグに必要な内部回路１０の信号端および内部バスがプログラマブルロジック部２１へ接続され、プログラマブルロジック部２１から出力されてトレースメモリ２３に格納されたデータを、インターフェイス部２４から外部へ出力する。【選択図】図１
2009276985.tif 000002
【特許請求の範囲】
【請求項１】
プログラムされたソフトウェアにより動作が制御される内部回路と、前記内部回路が接続されるバスと、前記ソフトウェアのデバッグを行うデバッグ回路とを備える半導体集積回路装置であって、
前記デバッグ回路が、
機能の再構成が可能なプログラマブルロジック手段と、
デバッグ時に前記プログラマブルロジック手段との接続が必要となる前記内部回路の信号端および前記バスが接続されるデバッグポートと、
前記プログラマブルロジック手段から出力されるデータを格納するトレースメモリと、
前記プログラマブルロジック手段に対する機能構成情報の入力および前記トレースメモリからのデータの出力を外部との間で行うインターフェイス手段と
を有することを特徴とする半導体集積回路装置。
【請求項２】
前記デバッグ回路は、
前記プログラマブルロジック手段が、
前記インターフェイス手段から入力された前記機能構成情報により、
前記バスへのアクセスをトレースする条件が設定されたトレース条件設定回路と、
前記バスに接続された前記デバッグポートと前記トレースメモリとの間を結ぶデータ転送回路とを形成し、
前記トレース条件設定回路に設定された条件が成立したときに、前記バスのデータを前記データ転送回路を介して前記トレースメモリに格納し、
前記インターフェイス手段が、
前記トレースメモリに格納されたデータを外部へ出力する
ことを特徴とする請求項１に記載の半導体集積回路装置。
【請求項３】
前記デバッグ回路は、
前記プログラマブルロジック手段が、
前記インターフェイス手段から入力された前記機能構成情報により、
前記内部回路内で行われるローカル通信をモニタする通信モニタ回路を形成して、モニタ対象の信号端が接続された前記デバッグポートへ入力されたデータを前記トレースメモリに格納し、
前記インターフェイス手段が、
前記トレースメモリに格納されたデータを外部へ出力する
ことを特徴とする請求項１に記載の半導体集積回路装置。
【請求項４】
前記デバッグ回路は、
前記プログラマブルロジック手段が、
前記インターフェイス手段から入力された前記機能構成情報により、
前記バスへのアクセス条件を監視するバスアクセス監視回路と、
前記バスアクセス監視回路の出力に応じて前記内部回路の動作を制御する制御信号を生成する制御信号生成回路とを形成し、
前記制御信号を前記デバッグポートを介して制御対象の内部回路の信号端へ出力し、前記バスアクセス監視回路が所定のアクセス条件を検出したときに、前記制御対象の内部回路の動作を停止させる
ことを特徴とする請求項１に記載の半導体集積回路装置。
【請求項５】
前記デバッグ回路は、
前記プログラマブルロジック手段が、
前記インターフェイス手段から入力された前記機能構成情報により、
前記内部回路で発生するバス転送要求を模擬するバスインターフェイス模擬回路と、
前記バスインターフェイス模擬回路に対してバス転送要求発生の模擬条件を設定する模擬条件設定回路とを形成し、
前記内部回路に代わって、前記バスインターフェイス模擬回路で生成したデータを前記デバッグポートを介して前記バスへ送出する
ことを特徴とする請求項１に記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置に関する。
【背景技術】
【０００２】
近年、ＬＳＩには複数のプロセッサやさまざまな専用回路（例えば、音声・映像処理回路、描画回路など）が搭載され、それらが内部バスに接続される構造をとるなど、内部構造が複雑な構成となっている。その結果、ＬＳＩ開発段階におけるハードウェアバグの修正に時間を要するようになってきた。また、ＬＳＩの動作を制御するソフトウェアの開発や保守作業の難しさも増大している。
【０００３】
そこで、従来、ＬＳＩにオンチップデバッグ回路を搭載し、ハードウェアバグやソフトウェアバグのデバッグ作業の効率向上を図ることが行われている。
【０００４】
そのようなオンチップデバッグ回路により、ハードウェアバグの修正を行なう手法として、ＬＳＩにＦＰＧＡ（Field  Programmable  Logic  Array）を搭載し、デバッグの進行に応じて、このＦＰＧＡへのマッピング内容をソフトウェアデバッグ手段からハードウェアデバッグ手段に変更し、最終的には、ハードウェアのバグを修正したハードウェアデバッグ回路とする、デバッグシステムが提案されている（例えば、特許文献１参照。）。
【０００５】
この提案されたデバッグシステムでは、ハードウェアバグの修正をＦＰＧＡで行なえるため、ハードウェアバグの修正に要する時間が短縮される。このような手法は、ＬＳＩで実行されるソフトウェアが、予め組み込まれた専用ソフトウェアなど、ＬＳＩの開発段階でのみデバッグが行われるソフトウェアである場合には、有用である。
【０００６】
これに対して、ＬＳＩの出荷後にユーザ側でソフトウェア開発が行われる場合、そのソフトウェア開発や保守作業を支援するオンチップデバッグ回路が必要となる。
【０００７】
そのようなソフトウェアバグの解析を行うためのオンチップデバッグ回路として、従来、ＣＰＵに付帯されるプロセッサデバッグ回路や、内部バスの動作を記録して外部に出力するバスモニタ回路などが用いられている。
【０００８】
プロセッサデバッグ回路は、近年のＣＰＵには標準的に付帯されているものであり、外部からの制御により、プログラムの実行・停止やメモリの読み書きを制御し、実行した命令の履歴を外部へ出力する。
【０００９】
また、バスモニタ回路は、ＣＰＵや専用回路からデータが転送される内部バスの動作を記録し、その転送記録を外部に出力する。
【００１０】
このようなソフトウェアデバッグ用の回路をＬＳＩに内蔵する場合、予め、発生する不具合を想定し、その解析に必要な機能が総て実装されていることが望まれる。しかしながら、チップサイズの制約等もあり、従来のオンチップデバッグ回路では、実装できる機能に限界があった。
【００１１】
その結果、例えば、プログラムの実行履歴を取得したい場合、プロセッサデバッグ回路の使用で決められた範囲の条件のデータしか得られないため、特定の条件の実行履歴を見たい場合、その条件より緩い条件で取得した大量のデータの中から目的の箇所を捜し当てるという作業が必要であった。
【００１２】
すなわち、従来のオンチップデバッグ回路を搭載したＬＳＩでは、ソフトウェアの開発や保守におけるデバッグ作業を効率良く行えない、という問題があった。
【特許文献１】特開２００２−１７５１９７号公報  （第３ページ、図３）
【発明の開示】
【発明が解決しようとする課題】
【００１３】
そこで、本発明の目的は、ソフトウェアの開発や保守におけるデバッグ作業を効率的に行うことのできる半導体集積回路装置を提供することにある。
【課題を解決するための手段】
【００１４】
本発明の一態様によれば、プログラムされたソフトウェアにより動作が制御される内部回路と、前記内部回路が接続される内部バスと、前記ソフトウェアのデバッグを行うデバッグ回路とを備える半導体集積回路装置であって、前記デバッグ回路が、機能の再構成が可能なプログラマブルロジック手段と、デバッグ時に前記プログラマブルロジック手段との接続が必要となる前記内部回路の信号端および前記内部バスが接続されるデバッグポートと、前記プログラマブルロジック手段から出力されるデータを格納するトレースメモリと、前記プログラマブルロジック手段に対する機能構成情報の入力および前記トレースメモリからのデータの出力を外部との間で行うインターフェイス手段とを有することを特徴とする半導体集積回路装置が提供される。
【発明の効果】
【００１５】
本発明によれば、ソフトウェアの開発や保守におけるデバッグ作業を効率的に行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施例を図面を参照して説明する。
【実施例】
【００１７】
図１は、本発明の実施例に係る半導体集積回路装置の構成の例を示すブロック図である。
【００１８】
本実施例の半導体集積回路装置１は、プログラムされたソフトウェアにより動作が制御される内部回路１０と、内部回路１０内の様々な機能ブロックが接続される内部バスと、
内部回路１０で実行されるソフトウェアのデバッグを行うデバッグ回路２とを備える。
【００１９】
内部回路１０としては、例えば、複数のプロセッサＣＰＵ１およびＣＰＵ２、バスマスタ機能を有する専用回路ＨＷ１、バススレーブとして動作する専用回路ＨＷ２およびＨＷ３、バスを経由せずに専用線で専用回路ＨＷ３と通信を行う専用回路ＨＷ４、外部メモリ１００を制御するメモリ制御回路Memory  Controllerなどが含まれているものとする。また、専用回路ＨＷ１と内部バスとの間には、マルチプレクサＭＵＸが挿入されているものとする。このマルチプレクサＭＵＸは、デバッグの際、専用回路ＨＷ１からの出力に代わってデバッグ回路２からの出力を内部バスへ送出したいときに、使用される。通常、マルチプレクサＭＵＸは、専用回路ＨＷ１からの出力を内部バスへ送出する。
【００２０】
ここで、専用回路の例としては、音声・映像処理回路、描画回路などがある。また、バスマスタは、内部バスに対して自ら転送を発生させる回路であり、バススレーブは、バスからの転送要求に対して応答する受動的な回路である。
【００２１】
デバッグ回路２は、機能の再構成が可能なプログラマブルロジック部２１と、デバッグ時にプログラマブルロジック部２１との接続が必要となる内部回路１０の信号端および内部バスが接続されるデバッグポート２２と、プログラマブルロジック部２１から出力されるデータを格納するトレースメモリ２３と、外部からのプログラマブルロジック部２１への機能構成情報の入力、およびトレースメモリ２３から外部へのデータの出力を行うインターフェイス部２４と、を有する。
【００２２】
プログラマブルロジック部２１は、外部から入力される機能構成情報に従って、その内部の機能構成を変化させることができる。その代表的な例は、ＦＰＧＡ（Field  Programmable  Gate  Array）やＣＰＬＤ（Complex  Programmable  Logic  Device）である。
【００２３】
デバッグポート２２へは、デバッグ時にモニタが必要になると予想される内部回路１０の信号端と、デバッグ時にプログラマブルロジック部２１から出力される制御信号の供給先となる内部回路１０の信号端、および内部バスが接続される。
【００２４】
プログラマブルロジック部２１とデバッグポート２２との間の接続も、プログラマブルロジック部２１へ入力される機能構成情報に従って、その構成が変更される。
【００２５】
トレースメモリ２３は、プログラマブルロジック部２１に接続され、デバッグ時にプログラマブルロジック部２１から出力されるデータを格納する。トレースメモリ２３に格納されたデータは、インターフェイス部２４を介して外部へ出力される。
【００２６】
インターフェイス部２４としては、ＪＴＡＧインターフェイスなど、標準的な外部デバッグ装置が接続できるインターフェイスを用いるようにする。
【００２７】
このような本実施例の半導体集積回路装置１では、ソフトウェア開発時のデバッグを行う際、半導体集積回路装置１の出荷後であっても、プログラマブルロジック部２１の機能構成を変化させることによって、デバッグの目的に適したデバッグ回路をオンチップ状態で構築することができる。また、半導体集積回路装置１の不具合発生時などの保守作業においても、その不具合解析に適したデバッグ回路をオンチップ状態で構築することができる。
【００２８】
以下、プログラマブルロジック部２１における機能再構成の例を、構成例１〜５として、図２〜図６に示す。なお、図２〜図６では、図１で示した各ブロックのうち、それぞれのデバッグ機能に関係する部分のみを記載している。
【００２９】
（構成例１）
図２は、プログラマブルロジック部２１の機能構成の第１の例を示すブロック図である。この例では、プログラマブルロジック部２１は、内部バスに対する自由度の高いバスモニタとして機能する。
【００３０】
図２に示すプログラマブルロジック部２１は、機能構成情報の入力により、内部バスへのアクセスをトレースする条件が設定されたトレース条件設定部２１１と、内部回路１０のＣＰＵ１、ＣＰＵ２および専用回路ＨＷ１からそれぞれ出力される外部メモリへのＲ／Ｗ（リード／ライト）信号がデバッグポート２２を介して入力されるトレース制御部２１２と、内部バスに接続されたデバッグポート２２とトレースメモリ２３との間を結ぶデータ転送部２１３と、を形成する。
【００３１】
トレース制御部２１２は、入力された各Ｒ／Ｗ信号の間でトレース条件設定部２１１に設定された条件が成立したとき、データ転送部２１３に対して、デバッグポート２２を介して入力される内部バスのデータをトレースメモリ２３へ転送するよう指示する。
【００３２】
この指示を受けて、データ転送部２１３は、内部バスのデータをトレースメモリ２３へ転送する。転送された内部バスのデータは、トレースメモリ２３に格納され、その後、外部へ出力される。
【００３３】
この構成例では、その時々のデバッグで必要とされるトレース条件をトレース条件設定部２１１に設定することにより、その目的に応じたバスモニタ機能を実現することができる。
【００３４】
その例を列挙すると、
（１）専用回路ＨＷ１が外部メモリ１００のある領域にアクセスしたときに、そのアドレスとデータをトレースメモリ２３に格納し、外部へ出力する。
【００３５】
（２）専用回路ＨＷ１が外部メモリ１００にアクセスしている間に、ＣＰＵ１がメモリ１００にアクセスリクエストを出したとき、その情報をトレースメモリ２３に格納し、外部へ出力する。
【００３６】
（３）ＣＰＵ１とＣＰＵ２と専用回路ＨＷ１が外部メモリ１００の同じ領域に書き込みを行ったとき、そのアドレスとデータをトレースメモリ２３に格納し、外部へ出力する。
【００３７】
などがある。
【００３８】
上述のバスモニタ機能により、バスマスタである専用回路ＨＷ１の不具合、例えば、専用回路ＨＷ１が内部バスを長時間独占してＣＰＵ１とＣＰＵ２の処理が遅延する、外部メモリ１００上のＣＰＵ１の作業領域に専用回路ＨＷ１が誤って書き込みを行ってＣＰＵ１上のプログラムが誤動作する、などの現象の解析が容易になる。
【００３９】
（構成例２）
図３は、プログラマブルロジック部２１の機能構成の第２の例を示すブロック図である。この例では、プログラマブルロジック部２１は、内部バスを介さずに行われる、内部回路１０内のローカル通信のモニタを行う。
【００４０】
図３に示すプログラマブルロジック部２１は、機能構成情報の入力により、通信モニタ部２１４を形成する。このとき、通信モニタ部２１４には、モニタ対象の通信が使用する通信プロトコルに合わせたモニタ論理が構成される。
【００４１】
図３では、内部回路１０の専用回路ＨＷ３と専用回路ＨＷ４との間の通信をモニタする例を示す。その場合、専用回路ＨＷ３と専用回路ＨＷ４との間の通信線を分岐させ、デバッグポート２２を介して通信モニタ部２１４へ入力する。通信モニタ部２１４は、取得した通信ログをトレースメモリに格納する。
【００４２】
このローカル通信モニタ機能により、内部回路１０内のローカル通信で通信異常が発生したときの解析が容易になる。
【００４３】
上述の構成例１および構成例２では、内部回路１０の動作をモニタする例を示したが、次に、デバッグのために内部回路１０の動作を制御できるようにプログラマブルロジック部２１の機能を構成する例を構成例３〜構成例５として示す。
【００４４】
（構成例３）
図４は、プログラマブルロジック部２１の機能構成の第３の例を示すブロック図である。この例では、プログラマブルロジック部２１は、内部バスに対して予め設定された条件のアクセスが発生したときに、バスマスタの動作を停止させる制御信号を生成する。
【００４５】
図４に示すプログラマブルロジック部２１は、機能構成情報の入力により、内部バスに対するアクセス発生条件が設定されたアクセス条件設定部２１５と、内部回路１０のＣＰＵ１、ＣＰＵ２および専用回路ＨＷ１からそれぞれ出力される内部バスへのバスアクセス信号がデバッグポート２２を介して入力され、内部バスに対するアクセス状況を監視するバスアクセス監視部２１６と、専用回路ＨＷ１のバスマスタ機能動作を制御するＨＷ１制御信号をデバッグポート２２を介して出力する内部回路制御部２１７と、を形成する。
【００４６】
バスアクセス監視部２１６は、入力された各バスアクセス信号の間でアクセス条件設定部２１５に設定された条件が成立したとき、内部回路制御部２１７に対して、ＨＷ１制御信号を出力するよう指示する。
【００４７】
この指示を受けて内部回路制御部２１７からＨＷ１制御信号が出力されると、専用回路ＨＷ１は、バスマスタ機能動作を停止する。
【００４８】
このとき、ＣＰＵ１に付帯されるプロセッサデバッグ回路ＣＰＵ１Ｄｅｂｕｇを経由して、専用回路ＨＷ１のステータスを読み出すことが可能である。
【００４９】
このようなバスマスタ停止機能を利用することにより、従来に比べて、より瞬時に内部回路１０の動作を停止させることができる。その結果、内部バスに対して予め設定された条件のアクセスが発生した時刻近くでの内部回路１０の状態を観測することができる。
【００５０】
（構成例４）
図５は、プログラマブルロジック部２１の機能構成の第４の例を示すブロック図である。この例では、プログラマブルロジック部２１は、内部バスに対して予め設定された条件のアクセスが発生したときに、ＣＰＵ１に対して割り込みをかけるＣＰＵ１割り込み信号を生成する。
【００５１】
本構成例においても構成例３と同様、プログラマブルロジック部２１は、機能構成情報の入力により、アクセス条件設定部２１５と、バスアクセス監視部２１６と、内部回路制御部２１７Ａと、を形成する。
【００５２】
内部回路制御部２１７Ａは、入力された各バスアクセス信号の間でアクセス条件設定部２１５に設定された条件が成立したことをバスアクセス監視部２１６が検出したときに、ＣＰＵ１割り込み信号を生成し、デバッグポート２２を介してＣＰＵ１へ出力する。
【００５３】
このＣＰＵ１割り込み信号によりＣＰＵ１に割り込みがかかったときに、その割り込みルーチンでデバッグプログラムを実行するようにする。これにより、内部バスに対して予め設定された条件のアクセスが発生したとき、その時刻近くの内部回路の状態を観察することができる。
【００５４】
（構成例５）
図６は、プログラマブルロジック部２１の機能構成の第５の例を示すブロック図である。この例では、プログラマブルロジック部２１は、専用回路ＨＷ１に代わってバスマスタとして機能し、予め設定された条件の模擬テストデータを内部バスへ送出する。
【００５５】
図６に示すプログラマブルロジック部２１は、機能構成情報の入力により、内部バスへのデータ送出条件が設定された模擬条件設定部２１８と、専用回路ＨＷ１に代わって内部バスへ送出する模擬データをデバッグポート２２を介して出力するバスインターフェイス模擬部２１９と、を形成する。
【００５６】
プログラマブルロジック部２１を専用回路ＨＷ１に代わるバスマスタとして機能させるときには、バスインターフェイス模擬部２１９からデバッグポート２２を介して出力されている切り替え信号を用いて、専用回路ＨＷ１と内部バスとの間に挿入されているマルチプレクサＭＵＸの入力選択の切り替えを行い、内部バスに対するデータの出力元を専用回路ＨＷ１からバスインターフェイス模擬部２１９へ切り替える。
【００５７】
このようにして、プログラマブルロジック部２１を専用回路ＨＷ１に代わるバスマスタとして機能させることにより、例えば、内部バスに対するアクセス時間を外部から自由に変えることができる。その結果、半導体集積回路装置１の外部から、内部バスが混雑する状況を意図的に生成することができる。これにより、内部バスの転送速度や転送性能に起因する不具合の解析の効率を向上させることができる。
【００５８】
このような本実施例によれば、半導体集積回路で実行するソフトウェアの開発や保守におけるデバッグ作業を行うときに、発生した不具合現象に応じて、デバッグ回路に備えられたプログラマブルロジックで形成する機能を変更し、その不具合の解析に適したデバッグ回路を構成することができる。
【００５９】
これにより、ソフトウェアの開発や保守におけるデバッグ作業を効率的に行うことができる。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施例に係る半導体集積回路装置の構成の例を示すブロック図。
【図２】本発明の実施例のプログラマブルロジック部の機能構成の第１の例を示すブロック図。
【図３】本発明の実施例のプログラマブルロジック部の機能構成の第２の例を示すブロック図。
【図４】本発明の実施例のプログラマブルロジック部の機能構成の第３の例を示すブロック図。
【図５】本発明の実施例のプログラマブルロジック部の機能構成の第４の例を示すブロック図。
【図６】本発明の実施例のプログラマブルロジック部の機能構成の第５の例を示すブロック図。
【符号の説明】
【００６１】
１  半導体集積回路装置
２  デバッグ回路
１０  内部回路
２１  プログラマブルロジック部
２２  デバッグポート
２３  トレースメモリ
２４  インターフェイス部
２１１  トレース条件設定部
２１２  トレース制御部
２１３  データ転送部
２１４  通信モニタ部
２１５  アクセス条件設定部
２１６  バスアクセス監視部
２１７、２１７Ａ  内部回路制御部
２１８  模擬条件設定部
２１９  バスインターフェイス模擬部
【図１】
2009276985.tif 000003
【図２】
2009276985.tif 000004
【図３】
2009276985.tif 000005
【図４】
2009276985.tif 000006
【図５】
2009276985.tif 000007
【図６】
2009276985.tif 000008