(57)【特許請求の範囲】
【請求項１】
デバッグ対象の回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、前記回路の停止条件を示す第１の符号値を記憶する記憶部と、
前記信号が変化するたびに、前記信号に基づき前記符号化方式で第２の符号値を算出する符号値算出部と、
前記第１の符号値と前記第２の符号値とが一致したときに前記回路の動作を停止する動作停止部と、
を有することを特徴とするデバッグ回路。
【請求項２】
前記記憶部は、複数の前記停止条件を示す複数の前記第１の符号値に対応して、複数設けられ、
１または複数の前記動作停止部において、前記第２の符号値と、複数の前記第１の符号値の何れかが一致したときに前記回路の動作を停止する、ことを特徴とする請求項１に記載のデバッグ回路。
【請求項３】
前記動作停止部は、前記回路への入力データの入力または前記回路からの出力データの出力を遮断することで、前記回路の動作を停止する、ことを特徴とする請求項１または２に記載のデバッグ回路。
【請求項４】
前記第１の符号値及び前記第２の符号値は、ＣＲＣ、ハミング符号、ＭＤ５またはＳＨＡ−１で算出されることを特徴とする請求項１乃至３の何れか一項に記載のデバッグ回路。
【請求項５】
プロセッサを有し、
前記プロセッサは、
デバッグ対象の回路をモデル化した回路モデルに対するシミュレーションを行い、前記回路における信号のシーケンスに応じて値が変わる符号化方式で、前記回路の停止条件を示す第１の符号値を算出し、
前記第１の符号値を出力する、
ことを特徴とするデバッガ装置。
【請求項６】
デバッグ対象となる回路と、
前記回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、前記回路の停止条件を示す第１の符号値を記憶する記憶部と、前記信号が変化するたびに、前記信号に基づき前記符号化方式で第２の符号値を算出する符号値算出部と、前記第１の符号値と前記第２の符号値とが一致したときに前記回路の動作を停止する動作停止部と、を備えたデバッグ回路と、
を有することを特徴とする半導体装置。
【請求項７】
前記動作停止部から、前記回路の動作を停止する旨の信号を受けると、前記回路への入力データの入力または前記回路からの出力データの出力を遮断する遮断部を有することを特徴とする請求項６に記載の半導体装置。
【請求項８】
デバッガ装置が、デバッグ対象の回路をモデル化した回路モデルに対するシミュレーションを行い、前記回路における信号のシーケンスに応じて値が変わる符号化方式で、前記回路の停止条件を示す第１の符号値を算出し、前記第１の符号値を送信し、
前記回路を備えた半導体装置は、前記第１の符号値を受信して、前記第１の符号値を記憶部に記憶し、前記回路における前記信号が変化するたびに、前記信号に基づき前記符号化方式で第２の符号値を算出し、前記第１の符号値と前記第２の符号値とが一致したときに前記回路の動作を停止する、
ことを特徴とするデバッグ方法。
【請求項９】
前記デバッガ装置は、前記回路の動作停止時に、前記半導体装置から前記回路の状態を読み出し、前記状態が前記停止条件を満たしているか否かを判定する、ことを特徴とする請求項８に記載のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法に関する。
【背景技術】
【０００２】
ハードウェアが正常に動作しているか否かを確認する実機デバッグの手法として、デバッグ対象の回路の実装時に、デバッグ用の回路を挿入してデバッグを行うロジックアナライザ手法がある。
【０００３】
ロジックアナライザ手法において、デバッグ用の回路は、ユーザによって指定されたデバッグ対象の回路の信号の時間変化を監視する。そして、デバッグ用の回路は、信号の値が所定の停止条件と一致したときには、その回路の動作を停止させ、トレースメモリに格納された信号の時間変化を表示装置などに出力する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３１７０２３号公報
【特許文献２】国際公開第２００８／０２０５１３号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ソフトウェアのデバッグではブレークポイントを使用して、プログラムを様々な条件で停止させることができる。しかしながら、ハードウェアのデバッグでは、トレースメモリの容量やデバッグに使える信号線の本数などのハードウェア上の制約により、ユーザが意図した条件やタイミングでハードウェアを停止させることが難しく、効率よくデバッグを行うことは難しい。
【課題を解決するための手段】
【０００６】
発明の一観点によれば、デバッグ対象の回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、前記回路の停止条件を示す第１の符号値を記憶する記憶部と、前記信号が変化するたびに、前記信号に基づき前記符号化方式で第２の符号値を算出する符号値算出部と、前記第１の符号値と前記第２の符号値とが一致したときに前記回路の動作を停止する動作停止部と、を有するデバッグ回路が提供される。
【０００７】
また、発明の一観点によれば、プロセッサを有し、前記プロセッサは、デバッグ対象の回路をモデル化した回路モデルに対するシミュレーションを行い、前記回路における信号のシーケンスに応じて値が変わる符号化方式で、前記回路の停止条件を示す第１の符号値を算出し、前記第１の符号値を出力する、デバッガ装置が提供される。
【０００８】
また、発明の一観点によれば、デバッグ対象となる回路と、前記回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、前記回路の停止条件を示す第１の符号値を記憶する記憶部と、前記信号が変化するたびに、前記信号に基づき前記符号化方式で第２の符号値を算出する符号値算出部と、前記第１の符号値と前記第２の符号値とが一致したときに前記回路の動作を停止する動作停止部と、を備えたデバッグ回路と、を有する半導体装置が提供される。
【０００９】
また、発明の一観点によれば、デバッガ装置が、デバッグ対象の回路をモデル化した回路モデルに対するシミュレーションを行い、前記回路における信号のシーケンスに応じて値が変わる符号化方式で、前記回路の停止条件を示す第１の符号値を算出し、前記第１の符号値を送信し、前記回路を備えた半導体装置は、前記第１の符号値を受信して、前記第１の符号値を記憶部に記憶し、前記回路における前記信号が変化するたびに、前記信号に基づき前記符号化方式で第２の符号値を算出し、前記第１の符号値と前記第２の符号値とが一致したときに前記回路の動作を停止するデバッグ方法が提供される。
【発明の効果】
【００１０】
開示のデバッグ回路、デバッガ装置、半導体装置及びデバッグ方法によれば、デバッグの作業効率を向上できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の半導体装置、デバッグ回路及びデバッガ装置の一例を示す図である。
【図２】第２の実施の形態の半導体装置及びデバッガ装置を含むデバッグシステムの例を示す図である。
【図３】半導体装置の一例を示す図である。
【図４】デバッガ装置のハードウェア例を示す図である。
【図５】デバッグ方法の一例の流れを示すフローチャートである。
【図６】デバッグ対象のユーザ回路の回路モデルの記述例である。
【図７】図６に示した回路モデルを機能ブロックで表した図である。
【図８】回路モデルの実行結果とＣＲＣ値の算出例及び停止条件が成立したか否かを示す図である。
【図９】第３の実施の形態の半導体装置の一例を示す図である。
【図１０】第４の実施の形態の半導体装置の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の半導体装置、デバッグ回路及びデバッガ装置の一例を示す図である。
【００１３】
半導体装置１は、デバッグ回路２とハードウェアであるデバッグ対象回路３とを有している。
デバッグ回路２は、所定の停止条件でデバッグ対象回路３の動作を停止する回路であり、記憶部２ａ，２ｂ、符号値算出部２ｃ、動作停止部２ｄを有している。
【００１４】
記憶部２ａは、デバッグ対象回路３の停止条件を示す符号値（以下符号値Ａという）を記憶する。符号値Ａは、デバッグ対象回路３に関する信号のシーケンスに応じて値が変わる符号化方式で算出される。信号があるシーケンスのときにデバッグ対象回路３の動作をデバッグ回路２が停止する場合、そのシーケンスが停止条件として符号値Ａで示されている。
【００１５】
信号のシーケンスに応じて値が変わる符号化方式（符号化アルゴリズム）として、例えば、ＣＲＣ（Cyclic Redundancy Check）、ハミング符号、ＭＤ（Message Digest Algorithm）５またはＳＨＡ（Secure Hash Algorithm）−１などがある。符号値Ａは、デバッガ装置４にて算出される。
【００１６】
記憶部２ｂは、デバッグ回路２内の符号値算出部２ｃで算出された符号値（以下符号値Ｂという）を記憶する。
符号値算出部２ｃは、デバッグ対象回路３に関する信号が変化するたびに、その信号に基づき、符号値Ａを算出する際の符号化方式と同じ符号化方式で、符号値Ｂを算出する。
【００１７】
動作停止部２ｄは、符号値Ａ，Ｂが一致したときに、デバッグ対象回路３の動作を停止する。動作停止部２ｄは、符号値Ａ，Ｂが一致したとき、例えば、回路停止信号により、デバッグ対象回路３へクロック信号の供給を停止することで、デバッグ対象回路３の動作を停止する。また、動作停止部２ｄは、デバッグ対象回路３へのデータへの入力またはデバッグ対象回路３からのデータの出力を遮断して、デバッグ対象回路３が停止しているように扱うようにしてもよい。
【００１８】
デバッガ装置４は、半導体装置１と通信してデバッグを行う装置である。デバッガ装置４は、デバッグ対象回路３をモデル化した回路モデルと、デバッグ対象回路３の動作を停止させたい信号のシーケンスの情報を含むデータＤ１に基づき、符号値Ａを算出する（ステップＳ１）。デバッガ装置４は、例えば、回路シミュレーションにより、データＤ１に含まれる特定のシーケンスで信号を変化させて、そのたびに、上記の符号化方式で符号値を更新し、シーケンスが終了したときの符号値を符号値Ａとする。そして、デバッガ装置４は、その符号値Ａを半導体装置１に出力（送信）する（ステップＳ２）。
【００１９】
以下、半導体装置１とデバッガ装置４を含むデバッグシステムによるデバッグ方法の一例の動作を説明する。
デバッグ対象回路３において、入力データｘと出力データｙが、例えば、（ｘ１，ｙ１）、（ｘ２，ｙ２）、…、（ｘｉ，ｙｉ）のシーケンスで変化したときに、デバッグ対象回路３の動作を停止させる場合を例に説明する。
【００２０】
デバッガ装置４は、デバッグ対象回路３の回路モデルに対して回路シミュレーションを行い、上記のシーケンスで信号を変化させたときの符号値Ａを計算する。このとき、符号値Ａとして、ｃｉが算出されたとする。デバッガ装置４は、そのｃｉを符号値Ａとして送信する。半導体装置１のデバッグ回路２では、ｃｉを受けて記憶部２ａに記憶する。
【００２１】
デバッグ回路２は、デバッグ対象回路３の信号の変化を検出しており、符号値算出部２ｃは、図１の例では、入力データｘまたは出力データｙが変化するたびに、符号値Ｂを更新する。
【００２２】
例えば、図１のように、デバッグ対象回路３の入力データｘと出力データｙが、（ｘ１，ｙ１）、（ｘ２，ｙ２）、…、（ｘｉ，ｙｉ）の順で変化していき、符号値Ｂが、ｃ１、ｃ２、…、ｃｉの順で変化したとき、符号値Ｂは符号値Ａと一致する。
【００２３】
このとき、動作停止部２ｄは、デバッグ対象回路３の動作を停止する。
その後は、例えば、デバッガ装置４により、デバッグ対象回路３の各部の信号の様子を調査するなどのデバッグ作業が行われる。
【００２４】
このように、本実施の形態の半導体装置１、デバッグ回路２及びデバッガ装置４では、デバッグ対象回路３の信号のシーケンスで値が変わる符号値で停止条件を予め求め、記憶部２ａに記憶しておく。そして、デバッグ回路２は、信号が変化する度求めた符号値との一致時にデバッグ対象回路３を止める。上記のような符号値を用いることで、ハードウェア上の制約があっても、様々な条件でデバッグ対象回路３を停止することが容易になり、デバッグの作業効率が上がる。
【００２５】
また、複雑なシーケンスを停止条件とした場合でも、停止条件は符号値として表現できるので、記憶部２ａ，２ｂの容量は小さくてすみ、デバッグ回路２及び半導体装置１の回路面積を小さくできる。
【００２６】
また、停止条件を変更するとき、デバッガ装置４は新たな停止条件を示す符号値を算出し、記憶部２ａはその符号値を記憶すればよいため、特に回路の再実装などを行わなくてすむ。
【００２７】
（第２の実施の形態）
図２は、第２の実施の形態の半導体装置及びデバッガ装置を含むデバッグシステムの例を示す図である。
【００２８】
デバッグシステムは、半導体装置１０とデバッガ装置２０を含み、それらは通信ケーブル３０により接続されている。なお、半導体装置１０とデバッガ装置２０は無線で通信を行ってもよい。
【００２９】
半導体装置１０は、例えば、ＳｏＣ（System on Chip）であり、デバッグ回路１１とデバッグ対象となるユーザ回路１２を有している。
デバッガ装置２０は、例えば、コンピュータであり、作業者４０により操作され、通信ケーブル３０を介して半導体装置１０と通信を行い、デバッグ処理を行う。
【００３０】
（半導体装置）
図３は、半導体装置の一例を示す図である。
半導体装置１０は、前述したデバッグ回路１１、ユーザ回路１２の他、デバッガ装置２０から通信ケーブル３０を介して送られてくるデータを受信する受信部１３を有している。
【００３１】
デバッグ回路１１は、レジスタ１１ａ，１１ｂ、符号値算出部１１ｃ、動作停止部１１ｄを有している。
レジスタ１１ａは、受信部１３で受信したデバッガ装置２０から送信された停止条件を示す符号値を記憶する。
【００３２】
レジスタ１１ｂは、符号値算出部１１ｃが算出した符号値を記憶する。また、受信部１３で受信したデバッガ装置２０から送信された符号値の初期値を記憶する。
符号値算出部１１ｃは、ユーザ回路１２に関する信号が変化するたびに、その信号のシーケンスによって値が変わる符号値を、デバッガ装置２０で符号値を算出する際の符号化方式と同じ符号化方式で算出する。その符号化方式としては、前述したように、例えば、ＣＲＣ、ハミング符号、ＭＤ５またはＳＨＡ−１などがある。
【００３３】
動作停止部１１ｄは、レジスタ１１ａ，１１ｂに記憶されている両符号値が一致したときに、デバッグ対象であるユーザ回路１２の動作を停止させる。
（デバッガ装置２０）
図４は、デバッガ装置のハードウェア例を示す図である。
【００３４】
デバッガ装置２０は、コンピュータであり、プロセッサ２１によって装置全体が制御されている。プロセッサ２１には、バス２９を介してＲＡＭ（Random Access Memory）２２と複数の周辺機器が接続されている。プロセッサ２１は、マルチプロセッサであってもよい。プロセッサ２１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ２１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３５】
ＲＡＭ２２は、デバッガ装置２０の主記憶装置として使用される。ＲＡＭ２２には、プロセッサ２１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２２には、プロセッサ２１による処理に必要な各種データが格納される。
【００３６】
バス２９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）２３、グラフィック処理装置２４、入力インタフェース２５、光学ドライブ装置２６、機器接続インタフェース２７及びネットワークインタフェース２８がある。
【００３７】
ＨＤＤ２３は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行う。ＨＤＤ２３は、デバッガ装置２０の補助記憶装置として使用される。ＨＤＤ２３には、ＯＳのプログラム、回路シミュレーションソフトなどのアプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００３８】
グラフィック処理装置２４には、モニタ２４ａが接続されている。グラフィック処理装置２４は、プロセッサ２１からの命令にしたがって、デバッグ結果などの画像をモニタ２４ａの画面に表示させる。モニタ２４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３９】
入力インタフェース２５には、キーボード２５ａとマウス２５ｂとが接続されている。入力インタフェース２５は、キーボード２５ａやマウス２５ｂから送られてくる信号をプロセッサ２１に送信する。なお、マウス２５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４０】
光学ドライブ装置２６は、レーザ光などを利用して、光ディスク２６ａに記録されたデータの読み取りを行う。光ディスク２６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４１】
機器接続インタフェース２７は、デバッガ装置２０に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース２７には、メモリ装置２７ａやメモリリーダライタ２７ｂを接続することができる。メモリ装置２７ａは、機器接続インタフェース２７との通信機能を搭載した記録媒体である。メモリリーダライタ２７ｂは、メモリカード２７ｃへのデータの書き込み、またはメモリカード２７ｃからのデータの読み出しを行う装置である。メモリカード２７ｃは、カード型の記録媒体である。
【００４２】
また、機器接続インタフェース２７は、通信ケーブル３０を介して半導体装置１０に接続されている。
ネットワークインタフェース２８は、ネットワーク２８ａに接続されている。ネットワークインタフェース２８は、ネットワーク２８ａを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４３】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示したデバッガ装置４も、図３に示したデバッガ装置２０と同様のハードウェアにより実現することができる。
【００４４】
デバッガ装置２０は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。デバッガ装置２０に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、デバッガ装置２０に実行させるプログラムをＨＤＤ２３に格納しておくことができる。プロセッサ２１は、ＨＤＤ２３内のプログラムの少なくとも一部をＲＡＭ２２にロードし、プログラムを実行する。またデバッガ装置２０に実行させるプログラムを、光ディスク２６ａ、メモリ装置２７ａ、メモリカード２７ｃなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ２１からの制御により、ＨＤＤ２３にインストールされた後、実行可能となる。またプロセッサ２１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４５】
（デバッグ方法）
以下、上記の半導体装置１０及びデバッガ装置２０を用いたデバッグ方法を説明する。
図５は、デバッグ方法の一例の流れを示すフローチャートである。
【００４６】
まず、デバッガ装置２０は、ソフトウェアで、デバッグ対象であるユーザ回路１２と同様の動作を行う（ユーザ回路１２をモデル化した）回路モデルに対して回路シミュレーションを行い、ユーザ回路１２の停止条件を示す符号値を算出する（ステップＳ１０）。
【００４７】
図６は、デバッグ対象のユーザ回路の回路モデルの記述例である。
図６では、Ｖｅｒｉｌｏｇ  ＨＤＬ（Hardware Description Language）で記述された回路モデルの例が示されている。図６には回路モデルに入力されるクロック信号ｃｋと１６ビットの入力データｘと、回路モデルから出力される１６ビットの出力データｙ、さらに、回路モデルの内部状態を示す信号として１ビットの信号ｓが示されている。
【００４８】
出力データｙは、信号ｓの値が０のときには、０となり、信号ｓの値が１のときには、入力データｘに２を乗じた値となる（図６の記述の４行目参照）。
また、クロック信号ｃｋの立ち上がりに同期して、６〜１０行目の処理が行われる。６〜１０行目には、信号ｓの値が０のとき、入力データｘが、“１６’ｈ００１０”であるときには、信号ｓが１に遷移し、信号ｓの値が１のとき、入力データｘが、“１６’ｈ００３０”であるときには、信号ｓが０に遷移することが示されている。
【００４９】
また、図６の例では、信号ｓが０に遷移するタイミングに、ブレークポイントが設定されている。なお、ブレークポイントの設定は、例えば、作業者４０によって行われる。
図７は、図６に示した回路モデルを機能ブロックで表した図である。
【００５０】
回路モデル１２ａは、ステートマシン１２ａ１と関数部１２ａ２を有する。
ステートマシン１２ａ１は、前述のように、入力データｘの値と、回路モデル１２ａの内部状態を示す信号ｓの値に応じて、信号ｓを０または１に遷移する。
【００５１】
関数部１２ａ２は、信号ｓの値に基づき、前述のように、信号ｓの値が０のときには、出力データｙを０とし、信号ｓの値が１のときには、出力データｙを入力データｘに２を乗じた値とする。
【００５２】
デバッガ装置２０のプロセッサ２１は、回路シミュレーション（例えば、ＲＴＬ（Register Transfer Level）シミュレーション）で、回路モデル１２ａを実行する。回路シミュレーションは、図６に示したブレークポイントで停止するように設定されている。そして、プロセッサ２１は、回路シミュレーション時の入力データｘと出力データｙの値に基づき、符号値計算処理Ｔ１を行う。
【００５３】
以下の説明では、回路モデル１２ａの入力データｘのシーケンスが、“１６’ｈ００１０”、“１６’ｈ００２０”、“１６’ｈ００３０”、“１６’ｈ００４０”の順番であるものとする。また、デバッガ装置２０のプロセッサ２１は、符号値計算処理Ｔ１として、ＩＥＥＥ（Institute of Electrical and Electronics Engineers）８０２．３で規定されたＣＲＣ３２で符号値（ＣＲＣ値）を計算するものとする。
【００５４】
図８は、回路モデルの実行結果とＣＲＣ値の算出例及び停止条件が成立したか否かを示す図である。
初期状態では、信号ｓの値は０であり、入力データｘと出力データｙによるＣＲＣ値は、“３２’ｈ００００００００”となっている。このタイミングはブレークポイントでないため、停止条件は不成立となる。
【００５５】
信号ｓの値が０の状態で、入力データｘが“１６’ｈ００１０”となると、関数部１２ａ２での処理により、出力データｙは“１６’ｈ００００”となる。このとき、ＣＲＣ値は更新され、図８の例では、“３２’ｈ７１５ｄ８８８３”という値になっている。なお、このときも、停止条件は不成立となる。
【００５６】
上記のように入力データｘが“１６’ｈ００１０”となり、クロック信号ｃｋが立ち上がると、ステートマシン１２ａ１での処理により信号ｓは１となる。信号ｓが１の状態で、入力データｘが“１６’ｈ００２０”となると、関数部１２ａ２での処理により、出力データｙは入力データｘの２倍となり、“１６’ｈ００４０”となる。このとき、ＣＲＣ値は更新され、“３２’ｈ４９ｄ２０ｅ７９”という値になっている。なお、このときも、停止条件は不成立となる。
【００５７】
さらに、信号ｓが１の状態で、入力データｘが“１６’ｈ００３０”となると、関数部１２ａ２での処理により、出力データｙは入力データｘの２倍となり、“１６’ｈ００６０”となる。このとき、ＣＲＣ値は更新され、“３２’ｈ１４３５ｄ０ａｆ”という値になっている。このときは、図６に示したように、信号ｓ＝１で入力データｘが“１６’ｈ００３０”という、ブレークポイントが設定されているタイミングに相当する状態であるため、停止条件が成立する。
【００５８】
また、このとき、クロック信号ｃｋが立ち上がると、ステートマシン１２ａ１での処理により信号ｓは０となる。信号ｓが０の状態で、入力データｘが“１６’ｈ００４０”となると、関数部１２ａ２での処理により、出力データｙは“１６’ｈ００００”となる。このとき、ＣＲＣ値は更新され、“３２’ｈ９ａ３ａａｄ８９”という値になっている。なお、このとき、停止条件は不成立となる。
【００５９】
以上のようにして、ステップＳ１０の符号値の算出処理が行われるが、デバッガ装置２０は、停止条件が成立したときのＣＲＣ値、“３２’ｈ１４３５ｄ０ａｆ”を、半導体装置１０に送信する。
【００６０】
そして、半導体装置１０は、デバッガ装置２０から送信された符号値を受信部１３で受信し、デバッグ回路１１のレジスタ１１ａに設定（記憶）する（ステップＳ１１）。
さらに、デバッガ装置２０は、レジスタ１１ｂに設定する初期値“３２’ｈ００００００００”を、半導体装置１０に送信する。
【００６１】
半導体装置１０は、デバッガ装置２０から送信された初期値を受信部１３で受信し、デバッグ回路１１のレジスタ１１ｂに設定（記憶）する（ステップＳ１２）。
その後、デバッグ回路１１の動作停止部１１ｄは、デバッグ対象のユーザ回路１２に動作を開始させる（ステップＳ１３）。例えば、動作停止部１１ｄは、ユーザ回路１２へのクロック信号の供給をオンすることで、ユーザ回路１２は動作を開始する。
【００６２】
ユーザ回路１２の動作開始後、デバッグ回路１１の符号値算出部１１ｃは、ユーザ回路１２の入力データｘまたは出力データｙが変化するたびに、符号値を算出し、レジスタ１１ｂに記憶されている符号値を更新する（ステップＳ１４）。
【００６３】
ステップＳ１４の処理で算出される符号値は、デバッガ装置２０で算出される符号値と同じ符号化方式で算出される。前述のように、デバッガ装置２０が、ＣＲＣ３２で符号値を計算した場合には、デバッグ回路１１の符号値算出部１１ｃでも同様にＣＲＣ３２で符号値を計算する。
【００６４】
レジスタ１１ｂに記憶されている符号値が更新されると、動作停止部１１ｄは、レジスタ１１ａ，１１ｂに記憶されている両符号値が一致するか否かを判定する（ステップＳ１５）。両符号値が異なるときには、ステップＳ１４からの処理が繰り返される。
【００６５】
両符号値が一致したとき、動作停止部１１ｄは、デバッグ対象のユーザ回路１２の動作を停止する（ステップＳ１６）。
例えば、デバッガ装置２０にて、回路モデル１２ａの入力データｘと出力データｙが図８に示したようなシーケンスで遷移したときに算出されたＣＲＣ値、“３２’ｈ１４３５ｄ０ａｆ”がレジスタ１１ａに記憶されているものとする。
【００６６】
半導体装置１０のユーザ回路１２でも入力データｘと出力データｙが図８に示したようなシーケンスで遷移すると、符号値算出部１１ｃで算出されるＣＲＣ値も、“３２’ｈ１４３５ｄ０ａｆ”となり、レジスタ１１ａに記憶されているＣＲＣ値と一致する。このとき、動作停止部１１ｄは、ユーザ回路１２に供給する回路停止信号を“１”として、ユーザ回路１２へのクロック信号の供給をオフするなどして、ユーザ回路１２の動作を停止する。
【００６７】
その後、作業者４０によるデバッガ装置２０の操作によって、半導体装置１０のデバッグ対象のユーザ回路１２の状態の読み出しが行われる（ステップＳ１７）。ステップＳ１７の処理では、例えば、半導体装置１０内の図示しないバウンダリスキャン回路を使うなどして、ユーザ回路１２の状態（入力データｘ、出力データｙ、内部状態を示す信号ｓなど）の読み出しなどが行われる。
【００６８】
次に、デバッガ装置２０は、読み出したユーザ回路１２の状態から、停止条件が本当に成立しているか否かを判定する（ステップＳ１８）。
例えば、デバッガ装置２０は、図８に示したような停止条件が成立する入力データｘ、信号ｓ、出力データｙの値と、半導体装置１０から読み出された信号とが一致するか否か判定し、一致している場合には、停止条件が成立していると判定する。これにより、デバッグ処理が終了される。一致していない場合には、デバッガ装置２０は、半導体装置１０のデバッグ回路１１にユーザ回路１２の動作を再開させる。これにより、ステップＳ１３からの処理が繰り返される。
【００６９】
なお、ステップＳ１８の処理後、作業者４０は、デバッガ装置２０を操作して、半導体装置１０内のユーザ回路１２の信号を変更させるようにしてもよい。そして、デバッガ装置２０と半導体装置１０に、再度、ステップＳ１０からの処理を繰り返させるようにしてもよい。
【００７０】
また、上記の各処理の順序は、特に限定されるわけではなく、レジスタ１１ｂへの初期値の設定などは、ステップＳ１０の処理の前に行ってもよい。
以上のような半導体装置１０、デバッグ回路１１及びデバッガ装置２０によれば、第１の実施の形態の半導体装置１、デバッグ回路２及びデバッガ装置４と同様の効果が得られる。
【００７１】
また、ステップＳ１８の処理のような判定を行うことで、実際は停止条件を満たしていないのに符号値が一致してしまい誤ったタイミングでユーザ回路１２を停止したときの信号を、作業者４０に提示してしまうことを防止できる。
【００７２】
（第３の実施の形態）
上記では、デバッグ回路１１の動作停止部１１ｄは、ユーザ回路１２へのクロック信号の供給をオフするなどして、ユーザ回路１２の動作を停止すると説明したが、例えば、以下のようにしてユーザ回路１２の動作を停止するようにしてもよい。
【００７３】
図９は、第３の実施の形態の半導体装置の一例を示す図である。
図３に示した半導体装置１０と同様の要素については同一符号を付し、説明を省略する。
【００７４】
図９に示されている半導体装置１０ａは、ユーザ回路１２の入力側に接続された入力遮断部１４と、ユーザ回路１２の出力側に接続された出力遮断部１５を有している。
入力遮断部１４は、動作停止部１１ｄからユーザ回路１２の動作を停止する旨の信号（例えば、回路停止信号＝１）を受けると、入力データｘの値によらず、固定値（例えば、０）を出力する。
【００７５】
出力遮断部１５は、動作停止部１１ｄからユーザ回路１２の動作を停止する旨の信号（例えば、回路停止信号＝１）を受けると、ユーザ回路１２からの出力データｙの値によらず、固定値（例えば、０）を出力する。
【００７６】
ユーザ回路１２がハンドシェーク方式で動作する回路であるときには、入力、または出力の遮断によりユーザ回路１２の動作が停止する。このため、図９に示すような入力遮断部１４と出力遮断部１５で入出力を遮断するだけで、ユーザ回路１２の動作を停止することができ、回路量の増加が少なくてすむ。また、第２の実施の形態の半導体装置１０及びデバッグ回路１１と同様の効果が得られる。
【００７７】
（第４の実施の形態）
図１０は、第４の実施の形態の半導体装置の一例を示す図である。
図３に示した半導体装置１０と同様の要素については同一符号を付し、説明を省略する。
【００７８】
第４の実施の形態の半導体装置１０ｂにおいて、デバッグ回路５０は、複数の停止条件に相当する符号値を記憶するレジスタ１１ａ１，１１ａ２を有している。
レジスタ１１ａ１，１１ａ２に記憶される符号値は、前述したデバッガ装置２０によるステップＳ１０（図５参照）の処理にて算出されたものである。例えば、複数のブレークポイントに達するまでの、回路モデル１２ａの信号の複数のシーケンスに対して、複数の符号値が算出され、それらが、半導体装置１０ｂに送信され、レジスタ１１ａ１，１１ａ２に記憶される。
【００７９】
また、デバッグ回路５０は、動作停止部１１ｄ１，１１ｄ２と、ＯＲ回路５１を有している。
動作停止部１１ｄ１は、レジスタ１１ａ１に記憶される符号値と、レジスタ１１ｂに格納される符号値とを比較して、両符号値が一致したときに、ユーザ回路１２の動作を停止する。本実施の形態の半導体装置１０ｂでは、動作停止部１１ｄ１は、両符号値が一致したときには、１となる回路停止信号を出力するものとする。
【００８０】
動作停止部１１ｄ２は、レジスタ１１ａ２に記憶される符号値と、レジスタ１１ｂに格納される符号値とを比較して、両符号値が一致したときに、ユーザ回路１２の動作を停止する。動作停止部１１ｄ２についても、両符号値が一致したときには、１となる回路停止信号を出力するものとする。
【００８１】
ＯＲ回路５１は、動作停止部１１ｄ１，１１ｄ２から出力される回路停止信号を入力し、そのＯＲ論理をとってユーザ回路１２に出力する。ＯＲ回路５１は、動作停止部１１ｄ１，１１ｄ２から出力される回路停止信号が一方でも１であるときには、１を出力する。これにより、ユーザ回路１２の動作が停止する。
【００８２】
第４の実施の形態の半導体装置１０ｂ及びデバッグ回路５０によれば、第２の実施の形態の半導体装置１０及びデバッグ回路１１と同様の効果が得られるとともに、より、複雑な停止条件で、ユーザ回路１２を停止することができる。なお、停止条件は複数の入力データｘや複数の出力データｙではなく、符号値で表されるため、停止条件を複数としても回路量の増加が少なくてすむ。
【００８３】
なお、図１０の例では、デバッガ装置２０から受信する停止条件を示す符号値の数は２つとしたが、３つ以上としてもよい。その場合は、レジスタと動作停止部をその符号値の数に対応して設ければよい。
【００８４】
また、図１０の例では、停止条件を示す符号値の数は２つに対して動作停止部を２つとしたが、動作停止部は１つでもよい。その場合は、２つの停止条件を示す符号値を、レジスタ１１ｂに格納される符号値と逐次的に比較し、いずれかの比較で符号値が一致した時点で回路停止信号を出力すればよい。
【００８５】
なお、第４の実施の形態の半導体装置１０ｂは、第３の実施の形態の半導体装置１０ａと組み合わせてもよい。その場合、ＯＲ回路５１の出力端子は、入力遮断部１４と出力遮断部１５に接続される。
【００８６】
以上、実施の形態に基づき、本発明のデバッグ回路、デバッガ装置、半導体装置及びデバッグ方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【００８７】
例えば、上記の例では、デバッグ対象の回路の入力データと出力データの両方のシーケンスに基づき、符号値を算出するものとして説明したが、どちらか一方であってもよい。また、デバッグ対象の回路の内部の信号のシーケンスに基づいて符号値を算出するようにしてもよい。
【符号の説明】
【００８８】
１  半導体装置
２  デバッグ回路
２ａ，２ｂ  記憶部
２ｃ  符号値算出部
２ｄ  動作停止部
３  デバッグ対象回路
４  デバッガ装置
【図１】
0006318976.tif 000002
【図２】
0006318976.tif 000003
【図３】
0006318976.tif 000004
【図４】
0006318976.tif 000005
【図５】
0006318976.tif 000006
【図６】
0006318976.tif 000007
【図７】
0006318976.tif 000008
【図８】
0006318976.tif 000009
【図９】
0006318976.tif 000010
【図１０】
0006318976.tif 000011