図面 (/)

技術 デバッグ回路、半導体装置及びデバッグ方法

出願人 富士通株式会社
発明者 田宮豊
出願日 2015年3月27日 (5年7ヶ月経過) 出願番号 2015-066456
公開日 2016年10月27日 (4年0ヶ月経過) 公開番号 2016-186707
状態 特許登録済
技術分野 デバッグ/監視 デジタル計算機の試験診断
主要キーワード デバッガ装置 正則行列 非零要素 光学ドライブ装置 メモリリーダライタ ユーザ回路 デバッグ作業者 書き込み値
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年10月27日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

デバッグ作業効率を上げる。

解決手段

記憶部2aは、ワード単位で処理を行う回路信号シーケンスに応じて値が変わる符号化方式で算出され、検出対象シーケンスのうち先頭から最初のワードに収まるシーケンスSaと残りのシーケンスSbを符号化した符号値Aa,Abと、ワード先頭から検出対象シーケンス先頭までのバイト数sofを記憶する。符号値算出部2bは、信号シーケンスに基づきバイトごとの符号値を算出し、第1シーケンス検出部2dは、信号シーケンスのワード内の最後のバイトと、バイト数sofに基づく位置のバイトでの符号値との差分と、符号値Aaとの比較結果に基づきシーケンスSaを検出する。期待値算出部2eは、シーケンスSa検出時の符号値と、符号値Abとに基づき、検出対象シーケンスの終了時の符号値の期待値を算出し、判定部2fは、符号値と期待値との一致時に検出対象シーケンスを検出した旨を出力する。

概要

背景

ハードウェアが正常に動作しているか否かを確認する実機デバッグの手法として、デバッグ対象回路実装時に、デバッグ用の回路を挿入してデバッグを行うロジックアナライザ手法がある。

ロジックアナライザ手法において、デバッグ用の回路は、ユーザによって指定されたデバッグ対象の回路の信号の時間変化監視する。そして、デバッグ用の回路は、信号の値が所定の停止条件と一致したときには、その回路の動作を停止させ、トレースメモリに格納された信号の時間変化を表示装置などに出力する。

概要

デバッグの作業効率を上げる。記憶部2aは、ワード単位で処理を行う回路信号シーケンスに応じて値が変わる符号化方式で算出され、検出対象シーケンスのうち先頭から最初のワードに収まるシーケンスSaと残りのシーケンスSbを符号化した符号値Aa,Abと、ワード先頭から検出対象シーケンス先頭までのバイト数sofを記憶する。符号値算出部2bは、信号シーケンスに基づきバイトごとの符号値を算出し、第1シーケンス検出部2dは、信号シーケンスのワード内の最後のバイトと、バイト数sofに基づく位置のバイトでの符号値との差分と、符号値Aaとの比較結果に基づきシーケンスSaを検出する。期待値算出部2eは、シーケンスSa検出時の符号値と、符号値Abとに基づき、検出対象シーケンスの終了時の符号値の期待値を算出し、判定部2fは、符号値と期待値との一致時に検出対象シーケンスを検出した旨を出力する。

目的

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

ワード単位で処理を行う回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、検出対象とする検出対象シーケンスのうち、先頭から最初の第1のワードに収まる第1のシーケンスを符号化した第1の符号値と、残りの第2のシーケンスを符号化した第2の符号値と、前記第1のワードの先頭から、前記検出対象シーケンスの先頭までの第1のバイト数とを記憶する記憶部と、前記信号のシーケンスに基づき前記符号化方式でバイトごとの第3の符号値を算出する符号値算出部と、前記第3の符号値のうち、前記信号のシーケンスの第2のワード内の最後のバイトでの第4の符号値と、前記第1のバイト数に基づく位置のバイトでの第5の符号値との差分と、前記第1の符号値との比較結果に基づき前記第1のシーケンスを検出する第1シーケンス検出部と、前記第3の符号値のうち、前記第1のシーケンスが検出されたときの第6の符号値と、前記第2の符号値とに基づき、前記検出対象シーケンスの終了時における前記第3の符号値の期待値を算出する期待値算出部と、前記第3の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する判定部と、を有することを特徴とするデバッグ回路

請求項2

前記符号化方式は、線形性を有する符号値を算出する方式であることを特徴とする請求項1に記載のデバッグ回路。

請求項3

前記検出対象シーケンスが、前記第1のワードに収まるとき、前記第1シーケンス検出部は、前記第1のバイト数と前記検出対象シーケンスのバイト数とを加算した第2のバイト数に基づく位置のバイトでの第7の符号値と、前記第5の符号値との差分と、前記第1の符号値との比較結果に基づき、前記検出対象シーケンスを検出する、ことを特徴とする請求項1または2に記載のデバッグ回路。

請求項4

前記記憶部は、前記第1のシーケンスに含まれる1または複数の第3のシーケンスを前記符号化方式で符号化した第8の符号値を有しており、前記第1シーケンス検出部は、前記第3のシーケンスを、前記第1のシーケンスに含まれる複数バイトに対応した複数の第9の符号値間の差分と、前記第8の符号値に基づき検出し、全ての前記第3のシーケンスが検出できたときに、前記第1のシーケンスが検出されたと判定する、ことを特徴とする請求項1乃至3の何れか一項に記載のデバッグ回路。

請求項5

前記第1のバイト数は、前記第1のワードの長さに応じて、前記記憶部に、複数記憶されており、前記第1の符号値と、前記第2の符号値も、前記第1のバイト数のそれぞれに対応して複数記憶されており、前記第1シーケンス検出部は、前記第1のバイト数のそれぞれに対応する前記第1のシーケンスを検出する、ことを特徴とする請求項1乃至4の何れか一項に記載のデバッグ回路。

請求項6

前記検出対象シーケンスは複数であり、前記第1シーケンス検出部は、前記検出対象シーケンスのそれぞれに対応した前記第1のシーケンスを、同時に検出することを特徴とする請求項1乃至5の何れか一項に記載のデバッグ回路。

請求項7

前記第1シーケンス検出部は、前記符号値算出部で算出される前記第3の符号値に、ハミング行列乗算するワード長分の乗算器と、前記乗算器のそれぞれの出力間の差分を算出する減算器とを有し、前記減算器の出力と、前記第1の符号値との比較結果に基づき、前記第1のシーケンスを検出する、ことを特徴とする請求項1乃至6の何れか一項に記載のデバッグ回路。

請求項8

ワード単位で処理を行う回路と、前記回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、検出対象とする検出対象シーケンスのうち、先頭から最初の第1のワードに収まる第1のシーケンスを符号化した第1の符号値と、残りの第2のシーケンスを符号化した第2の符号値と、前記第1のワードの先頭から、前記検出対象シーケンスの先頭までの第1のバイト数とを記憶する記憶部と、前記信号のシーケンスに基づき前記符号化方式でバイトごとの第3の符号値を算出する符号値算出部と、前記第3の符号値のうち、前記信号のシーケンスの第2のワード内の最後のバイトでの第4の符号値と、前記第1のバイト数に基づく位置のバイトでの第5の符号値との差分と、前記第1の符号値との比較結果に基づき前記第1のシーケンスを検出する第1シーケンス検出部と、前記第3の符号値のうち、前記第1のシーケンスが検出されたときの第6の符号値と、前記第2の符号値とに基づき、前記検出対象シーケンスの終了時における前記第3の符号値の期待値を算出する期待値算出部と、前記第3の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する判定部と、を備えたデバッグ回路と、を有することを特徴とする半導体装置

請求項9

デバッガ装置が、ワード単位で処理を行う回路における信号のシーケンスから検出する検出対象シーケンスを、先頭から最初の第1のワードに収まる第1のシーケンスと、残りの第2のシーケンスとに分割し、前記信号のシーケンスに応じて値が変わる符号化方式で、前記第1のシーケンスを符号化した第1の符号値と、前記第2のシーケンスを符号化した第2の符号値とを算出し、前記第1の符号値、前記第2の符号値及び、前記第1のワードの先頭から前記検出対象シーケンスの先頭までの第1のバイト数を送信し、前記回路を備えた半導体装置が、前記第1の符号値、前記第2の符号値及び前記第1のバイト数を受信し、前記信号のシーケンスに基づき前記符号化方式でバイトごとの第3の符号値を算出し、前記第3の符号値のうち、前記信号のシーケンスの第2のワード内の最後のバイトでの第4の符号値と、前記第1のバイト数に基づく位置のバイトでの第5の符号値との差分と、前記第1の符号値との比較結果に基づき前記第1のシーケンスを検出し、前記第3の符号値のうち、前記第1のシーケンスが検出されたときの第6の符号値と、前記第2の符号値とに基づき、前記検出対象シーケンスの終了時における前記第3の符号値の期待値を算出し、前記第3の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する、ことを特徴とするデバッグ方法

技術分野

0001

本発明は、デバッグ回路半導体装置及びデバッグ方法に関する。

背景技術

0002

ハードウェアが正常に動作しているか否かを確認する実機デバッグの手法として、デバッグ対象回路実装時に、デバッグ用の回路を挿入してデバッグを行うロジックアナライザ手法がある。

0003

ロジックアナライザ手法において、デバッグ用の回路は、ユーザによって指定されたデバッグ対象の回路の信号の時間変化監視する。そして、デバッグ用の回路は、信号の値が所定の停止条件と一致したときには、その回路の動作を停止させ、トレースメモリに格納された信号の時間変化を表示装置などに出力する。

0004

特開2003−46393号公報

先行技術

0005

M. Walma, "Pipelined Cyclic Redundancy Check (CRC) Calculation", Proc. of 16th Int'l Conf. on Computer Communications and Networks, pp. 365-370, 2007.

発明が解決しようとする課題

0006

ところで、ソフトウェアのデバッグではブレークポイントを使用して、プログラムを様々な条件で停止させることができる。しかしながら、ハードウェアのデバッグでは、トレースメモリの容量やデバッグに使える信号線の本数などのハードウェア上の制約により、ユーザが意図した条件やタイミングでハードウェアを停止させることが難しく、効率よくデバッグを行うことは難しい。したがって、デバッグの作業効率を向上することが課題である。

課題を解決するための手段

0007

発明の一観点によれば、ワード単位で処理を行う回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、検出対象とする検出対象シーケンスのうち、先頭から最初の第1のワードに収まる第1のシーケンスを符号化した第1の符号値と、残りの第2のシーケンスを符号化した第2の符号値と、前記第1のワードの先頭から、前記検出対象シーケンスの先頭までの第1のバイト数とを記憶する記憶部と、前記信号のシーケンスに基づき前記符号化方式でバイトごとの第3の符号値を算出する符号値算出部と、前記第3の符号値のうち、前記信号のシーケンスの第2のワード内の最後のバイトでの第4の符号値と、前記第1のバイト数に基づく位置のバイトでの第5の符号値との差分と、前記第1の符号値との比較結果に基づき前記第1のシーケンスを検出する第1シーケンス検出部と、前記第3の符号値のうち、前記第1のシーケンスが検出されたときの第6の符号値と、前記第2の符号値とに基づき、前記検出対象シーケンスの終了時における前記第3の符号値の期待値を算出する期待値算出部と、前記第3の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する判定部と、を有するデバッグ回路が提供される。

0008

また、発明の一観点によれば、ワード単位で処理を行う回路と、前記回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、検出対象とする検出対象シーケンスのうち、先頭から最初の第1のワードに収まる第1のシーケンスを符号化した第1の符号値と、残りの第2のシーケンスを符号化した第2の符号値と、前記第1のワードの先頭から、前記検出対象シーケンスの先頭までの第1のバイト数とを記憶する記憶部と、前記信号のシーケンスに基づき前記符号化方式でバイトごとの第3の符号値を算出する符号値算出部と、前記第3の符号値のうち、前記信号のシーケンスの第2のワード内の最後のバイトでの第4の符号値と、前記第1のバイト数に基づく位置のバイトでの第5の符号値との差分と、前記第1の符号値との比較結果に基づき前記第1のシーケンスを検出する第1シーケンス検出部と、前記第3の符号値のうち、前記第1のシーケンスが検出されたときの第6の符号値と、前記第2の符号値とに基づき、前記検出対象シーケンスの終了時における前記第3の符号値の期待値を算出する期待値算出部と、前記第3の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する判定部と、を備えたデバッグ回路と、を有する半導体装置が提供される。

0009

また、発明の一観点によれば、デバッガ装置が、ワード単位で処理を行う回路における信号のシーケンスから検出する検出対象シーケンスを、先頭から最初の第1のワードに収まる第1のシーケンスと、残りの第2のシーケンスとに分割し、前記信号のシーケンスに応じて値が変わる符号化方式で、前記第1のシーケンスを符号化した第1の符号値と、前記第2のシーケンスを符号化した第2の符号値とを算出し、前記第1の符号値、前記第2の符号値及び、前記第1のワードの先頭から前記検出対象シーケンスの先頭までの第1のバイト数を送信し、前記回路を備えた半導体装置が、前記第1の符号値、前記第2の符号値及び前記第1のバイト数を受信し、前記信号のシーケンスに基づき前記符号化方式でバイトごとの第3の符号値を算出し、前記第3の符号値のうち、前記信号のシーケンスの第2のワード内の最後のバイトでの第4の符号値と、前記第1のバイト数に基づく位置のバイトでの第5の符号値との差分と、前記第1の符号値との比較結果に基づき前記第1のシーケンスを検出し、前記第3の符号値のうち、前記第1のシーケンスが検出されたときの第6の符号値と、前記第2の符号値とに基づき、前記検出対象シーケンスの終了時における前記第3の符号値の期待値を算出し、前記第3の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する、デバッグ方法が提供される。

発明の効果

0010

開示のデバッグ回路、半導体装置及びデバッグ方法によれば、デバッグの作業効率を向上できる。

図面の簡単な説明

0011

第1の実施の形態の半導体装置、デバッグ回路及びデバッガ装置の一例を示す図である。
検出対象シーケンスが1ワードに収まるときの検出処理を説明する図である。
第2の実施の形態の半導体装置及びデバッガ装置を含むデバッグシステムの例を示す図である。
半導体装置の一例を示す図である。
レジスタの格納例を示す図である。
シフト部の一例を示す図である。
レジスタへの期待値の格納例を示す図である。
デバッガ装置のハードウェア例を示す図である。
デバッガ装置による設定処理の一例の流れを示すフローチャートである。
パケットの一例を示す図である。
半導体装置による処理の一例の流れを示すフローチャートである。
ユーザ回路の信号が、1ワードに収まらない検出対象シーケンスを含むシーケンスで遷移する例を示す図である。
シーケンスSaの検出例を示す図である。
ユーザ回路の信号が、1ワードに収まる検出対象シーケンスを含むシーケンスで遷移する例を示す図である。
ワードに収まる検出対象シーケンスSの検出例を示す図である。
検出対象シーケンスSの検出用の期待値の算出例を示す図である。
検出対象シーケンスの検出例を示す図である。
第1シーケンス検出部の一例を示す図である。
シーケンスSaの検出例を示す図である。
4つのシーケンスの例を示す図である。
H(k)を乗じた符号値の例が示されている。
第1シーケンス検出部の他の例を示す図である。
開始オフセットが未指定のときのレジスタの格納例を示す図である。

実施例

0012

以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の半導体装置、デバッグ回路及びデバッガ装置の一例を示す図である。

0013

半導体装置1は、デバッグ回路2とハードウェアであるデバッグ対象回路3とを有している。
デバッグ回路2は、デバッグ対象回路3における任意の信号のシーケンスから、所定の信号のシーケンス(以下検出対象シーケンスと呼ぶ)を検出し、検出した旨の検出信号を出力する回路である。検出信号は、たとえば、デバッグ対象回路3の動作を停止させるのに用いられる。

0014

なお、デバッグ対象回路3は、複数バイトによるワード単位でデータ処理パラレルデータ処理)を行う回路である。
また、検出対象シーケンスは、ワードの先頭から始まらないものも含む。たとえば、デバッグ対象回路3が、1ワードが8バイトのPCI(Peripheral Component Interconnect)expressのトランザクション層パケットを処理する回路である場合を考える。このパケットは、パケット種別デバイス番号書き込みアドレスなどを示す信号シーケンスを含む。これらの信号シーケンスは、ワードの先頭(境界)から始まらないものもある。本実施の形態のデバッグ回路2は、そのような信号のシーケンスも検出対象として設定できるようにしたものである。

0015

図1には、ワードWa,Wbに跨る検出対象シーケンスの例が示されている。楕円状の要素は、バイトを表している。8バイトのワードWaの先頭から検出対象シーケンスの先頭までの間には、バイト数sof(図1の例では2)のオフセットがある。図1では、検出対象シーケンスのうち、先頭から最初のワードWaの境界までの(ワードWaに収まる)シーケンスSa、残りの部分がシーケンスSbと示されている。

0016

デバッグ回路2は、記憶部2a、符号値算出部2b、シフト部2c、第1シーケンス検出部2d、期待値算出部2e、判定部2f、OR回路2gを有している。
記憶部2aは、上記に示したようなシーケンスSaを符号化した符号値Aaと、シーケンスSbを符号化した符号値Abを記憶する。また、記憶部2aは、バイト数sof(0〜w−1)(wはワード長)を記憶する。記憶部2aは、さらに、図1に示すように、シーケンスSa,Sbの長さlena,lenbと、検出対象シーケンスの識別番号IDを記憶するようにしてもよい。

0017

符号値Aa,Abは、デバッグ対象回路3における信号のシーケンスに応じて値が変わる符号化方式で算出される。
符号値Aa,Abは、たとえば、線形性を有する符号値(線形符号)であり、CRC(Cyclic Redundancy Check)などの符号化方式で、デバッガ装置4にて算出される。

0018

符号値算出部2bは、デバッグ対象回路3における信号のシーケンスをワード単位で取得し、信号のシーケンスに基づき、デバッガ装置4が符号値Aa,Abを算出する際の符号化方式と同じ符号化方式で、バイトごとの符号値を算出する。

0019

なお、符号値算出部2bは、後述する式(1)に基づいて、1ワード分のデータから、1ワード分のバイトごとの符号値を同時に計算可能である。また、符号値算出部2bは、たとえば、図示しないカウンタを有しており、取得するデータに含まれるバイト数をカウントする機能も有する。

0020

図1では、符号値算出部2bが、デバッグ対象回路3の信号である入力データxまたは出力データyの1ワード分のデータD(j),…D(j+w−1)を取得したときの例が示されている。jは、符号値算出部2bが取得するバイトのカウント値を示し、D(j)は、j番目のバイトのデータを示している。また、wは、1ワードに含まれるバイト数を示し、ワード長を意味する。

0021

符号値算出部2bは、このようなデータD(j),…D(j+w−1)を取得したとき、符号値a(j),…a(j+w−1)を算出する。
シフト部2cは、符号値算出部2bが処理するワードの1つ前のワードの最後のバイトでの符号値を、ワード分の符号値の前に付加して、第1シーケンス検出部2dに供給する。図1には、符号値算出部2bが処理するワードの1つ前のワードの最後のバイトでの符号値a(j−1)が、ワード分の符号値a(j),…a(j+w−1)に付加され、A(j)として第1シーケンス検出部2dに供給されている例が示されている。

0022

第1シーケンス検出部2dは、検出対象シーケンスのうち、シーケンスSaを検出する。第1シーケンス検出部2dは、符号値算出部2bで算出される符号値のうち、ワード内の最後のバイトでの符号値と、前述したバイト数sofに基づく位置のバイトでの符号値との差分と、符号値Aaとの比較結果に基づき検出を行う。

0023

図1には、未知のシーケンスXの後に、シーケンスSa,Sbを含む検出対象シーケンスが続くときのシーケンスSaの検出例が示されている。シーケンスSaは、ワードW1内に含まれている。シーケンスSaのワードW1内での開始位置は、バイト数sofに対応する位置であり、図1の例では、バイトカウント値がj+sofの位置となっている。また、ワードW1の最後のバイトの位置は、バイトカウント値がj+w−1の位置となっている。

0024

このとき、ワードW1の最後のバイトでの符号値a(j+w−1)と、バイトカウント値がj+sofの1つ前の位置のバイトでの符号値a(j+sof−1)との差分が、符号値Aaに相当する。このため、第1シーケンス検出部2dは、シーケンスSaを検出できる。

0025

第1シーケンス検出部2dは、シーケンスSaを検出すると、検出したときの符号値を期待値算出部2eに供給する。図1の例では、符号値a(j+w−1)が期待値算出部2eに供給されている。

0026

なお、第1シーケンス検出部2dは、ワードW1に収まる検出対象シーケンスを検出する機能も有する。この処理については後述する。
期待値算出部2eは、符号値算出部2bで算出される符号値のうち、シーケンスSaが検出されたときの符号値と、符号値Abとに基づき、検出対象シーケンスの終了時における、符号値算出部2bで算出される符号値の期待値を算出する。

0027

たとえば、期待値算出部2eは、シーケンスSaが検出されたときの符号値が符号値a(j+w−1)のとき、符号値a(j+w−1)と符号値AbのXOR演算から期待値b(j+n+sof−1)を算出する(後述の式(5)参照)。なお、nは検出対象シーケンスの長さ(バイト数)である。

0028

判定部2fは、符号値算出部2bから出力される符号値と、期待値とが一致したときに、検出対象シーケンスを検出した旨を示す信号を出力する。図1には、符号値算出部2bから出力される符号値a(j+n+sof−1)が期待値b(j+n+sof−1)に一致した例が示されている。このとき、判定部2fは、検出対象シーケンスを検出した旨の信号を出力する。この信号は、たとえば、デバッグ対象回路3の動作を停止する旨を指示する回路停止信号となる。

0029

判定部2fは、たとえば、回路停止信号により、デバッグ対象回路3へクロック信号の供給を停止することで、デバッグ対象回路3の動作を停止する。また、判定部2fは、デバッグ対象回路3へのデータの入力またはデバッグ対象回路3からのデータの出力を遮断して、デバッグ対象回路3が停止しているように扱うようにしてもよい。

0030

デバッガ装置4は、半導体装置1と通信してデバッグを行う装置である。デバッガ装置4は、たとえば、コンピュータでありソフトウェアで以下の処理を行う。デバッガ装置4は、まず、ユーザ(デバッグ作業者)から検出対象シーケンスを取得する(ステップS1)。次にデバッガ装置4は、検出対象シーケンスをワードWaの境界でシーケンスSa,Sbの2つに分割し(ステップS2)、シーケンスSaとシーケンスSbをそれぞれ符号化した符号値Aa,Abを算出する(ステップS3)。そして、デバッガ装置4は、算出した符号値Aa,Aaやバイト数sofを含むシーケンスSa,Sbの情報を半導体装置1に出力(送信)する(ステップS4)。なお、検出対象シーケンスがワードWaに収まるときには、シーケンスSaが検出対象シーケンスに対応し、シーケンスSbはない。

0031

以下、半導体装置1とデバッガ装置4を含むデバッグシステムによるデバッグ方法の一例を説明する。
デバッガ装置4による上記のステップS1〜S4の処理で算出され、送信されたシーケンスSa,Sbの情報は、半導体装置1のデバッグ回路2の記憶部2aに記憶される。

0032

デバッグ回路2は、デバッグ対象回路3の信号の遷移を検出しており、符号値算出部2bは、図1の例では、入力データxまたは出力データyのシーケンスに基づき、符号値をワード単位で更新する。

0033

たとえば、図1のように、デバッグ回路2が、デバッグ対象回路3から、1ワード分のデータD(j),…D(j+w−1)を取得したとき、符号値算出部2bの出力は、符号値a(j),…a(j+w−1)に更新される。

0034

符号値算出部2bから出力された符号値a(j),…a(j+w−1)は、シフト部2cにて、符号値a(j−1)が加えられたのち、第1シーケンス検出部2dに供給される。

0035

デバッグ回路2が、上記のようなシーケンスSa,Sbを含む検出対象シーケンスを検出するとき、第1シーケンス検出部2dは、符号値a(j−1),a(j),…a(j+w−1)と符号値Aaとを受けて、上記の方法によって、シーケンスSaを検出する。そして、第1シーケンス検出部2dは、シーケンスSaを検出したときの符号値a(j+w−1)を、期待値算出部2eに供給する。期待値算出部2eは、符号値符号値a(j+w−1)と符号値Abとに基づき前述した期待値b(j+n+sof−1)を算出する。

0036

入力データxと出力データyが遷移して、符号値算出部2bから出力される符号値a(j+n+sof−1)が、期待値b(j+n+sof−1)に一致したとき、判定部2fは、検出対象シーケンスを検出した旨を示す信号を出力する。このとき、判定部2fは、たとえば、“1”を出力する。これにより、OR回路2gは、“1”を出力し、たとえば、デバッグ対象回路3の動作を停止する。

0037

その後は、たとえば、デバッガ装置4により、デバッグ対象回路3の各部の信号の様子を調査するなどのデバッグ作業が行われる。
なお、デバッグ回路2は、ワードW1に収まる検出対象シーケンスを検出するとき、以下のような処理を行う。

0038

図2は、検出対象シーケンスが1ワードに収まるときの検出処理を説明する図である。
図2に示すように、検出対象シーケンスSが、ワードW1に収まるとき、第1シーケンス検出部2dは、前述した符号値a(j+sof−1)と、符号値a(j+eof)との差分と、符号値Aaとの比較結果に基づき検出を行う。ここで、バイト数eofは、検出対象シーケンスのバイト数nとバイト数sofを加算したバイト数である。

0039

第1シーケンス検出部2dは、符号値a(j+sof−1)と、符号値a(j+eof)との差分が、符号値Aaと一致したときには、検出対象シーケンスSを検出した旨の信号として、たとえば、“1”を出力する。このときも、OR回路2gは、“1”を出力し、たとえば、デバッグ対象回路3の動作を停止する。

0040

このように、本実施の形態のデバッグ回路2は、ワードの先頭から検出対象シーケンスの先頭までのバイト数を記憶しておき、そのバイト数に基づくバイト位置での符号値を用いて、検出対象シーケンスの検出を行う。これによって、ワード境界に捉われず検出対象シーケンスを設定できる。つまり、ワードの先頭から始まらない信号シーケンスも検出対象シーケンスとして設定できる。たとえば、ワード内に動作環境で変動するような値が指定されるフィールドがあってもそのフィールドを避けて検出対象シーケンスの設定が可能になる。これにより、ユーザが意図した条件やタイミングでハードウェアを停止させることができるようになり、デバッグ時の作業効率が向上する。

0041

また、上記のような符号値を用いることで、ハードウェア上の制約があっても、様々な条件でデバッグ対象回路3を停止することが容易になり、デバッグの作業効率が上がる。
また、デバッグ回路2は、入力データxや出力データyを直接扱うのではなく、データ量の小さい符号値を用いて処理を行うため、処理を小規模な回路で行えるとともに高速動作が可能となる。

0042

さらに、複雑なシーケンスを検出対象シーケンスとしたときでも、符号値として表現できるので、記憶部2aの容量は小さくてすみ、デバッグ回路2及び半導体装置1の回路面積を小さくできる。

0043

また、検出対象シーケンスを変更するとき、記憶部2aはその検出対象シーケンスを符号化した符号値を記憶すればよいため、特に回路の再実装などを行わなくてすみ、デバッグの作業効率が上がる。

0044

(第2の実施の形態)
図3は、第2の実施の形態の半導体装置及びデバッガ装置を含むデバッグシステムの例を示す図である。

0045

デバッグシステムは、半導体装置10とデバッガ装置20を含み、それらは通信ケーブル20bにより接続されている。なお、半導体装置10とデバッガ装置20は無線で通信を行ってもよい。

0046

半導体装置10は、たとえば、SoC(System on Chip)であり、デバッグ回路11とデバッグ対象となるユーザ回路12を有している。
デバッガ装置20は、たとえば、コンピュータであり、作業者20aにより操作され、通信ケーブル20bを介して半導体装置10と通信を行い、デバッグ処理を行う。

0047

(半導体装置)
図4は、半導体装置の一例を示す図である。
半導体装置10は、前述したデバッグ回路11、ユーザ回路12の他、デバッガ装置20から通信ケーブル20bを介して送られてくるデータを受信する受信部13を有している。

0048

デバッグ回路11は、レジスタ11a1〜11ap、レジスタ11b1〜11bp、符号値算出部11c、シフト部11d、第1シーケンス検出部11e、期待値算出部11f、レジスタ11g1〜11gp、判定部11h、OR回路11iを有している。

0049

レジスタ11a1〜11apとレジスタ11b1〜11bpは、第1の実施の形態のデバッグ回路2における記憶部2aの機能を有している。レジスタ11a1〜11apとレジスタ11b1〜11bpの代わりに、RAM(Random Access Memory)を用いてもよい。

0050

レジスタ11a1〜11apは、複数(p個)の検出対象シーケンスのそれぞれにおいて、先頭から最初の1ワードに収まる分のシーケンスを符号化した符号値と、そのワードの先頭から検出対象シーケンスの先頭までバイト数の情報などを記憶する。以下では、この最初の1ワードに収まる分のシーケンスを第1の実施の形態と同様に、シーケンスSaと表記する。

0051

レジスタ11b1〜11bpは、検出対象シーケンスの残りのシーケンスを符号化した符号値と、そのシーケンスの情報などを記憶する。以下では、このシーケンスを第1の実施の形態と同様に、シーケンスSbと表記する。また、以下では、符号値は、CRCで符号化された符号値とするが、これに限定されるものではなく、たとえば、線形性を有する符号値が適用可能である。

0052

図5は、レジスタの格納例を示す図である。
レジスタ11a1には、検出対象シーケンスの識別情報seqID、ワードの先頭から検出対象シーケンスの先頭までバイト数sof、シーケンスSaの長さlen1、シーケンスSaの符号値CRC(Sa)が記憶されている。

0053

レジスタ11b1には、検出対象シーケンスの識別情報seqIDと、シーケンスSbの長さlen2、シーケンスSbの符号値CRC(Sb)が記憶されている。
識別情報seqIDは、符号値CRC(Sa),CRC(Sb)が同じ検出対象シーケンスに含まれるものであることを示すために用いられる。

0054

シーケンスSaの長さlen1はバイト数で表され、w−sofか、検出対象シーケンスの長さn、の何れかである。なお、wは、バイト数で表されるワード長である。
シーケンスSbの長さlen2は、n−w+sofとなる。

0055

なお、検出対象シーケンスは、たとえば、ユーザ回路12に関する信号がどのように遷移したら、ユーザ回路12を停止させるかを指定するものである。ユーザ回路12に関する信号としては、ユーザ回路12の入力データ、出力データ、または内部の信号などである。以下では、検出対象シーケンスは、1つの信号(たとえば、入力データまたは出力データ)の遷移として説明するが、複数の信号の遷移であってもよい。また、ユーザ回路12は、ワード単位でデータ処理を行う回路であるものとする。

0056

符号値算出部11cは、ユーザ回路12における信号のシーケンスをワード単位で取得し、シーケンスによって値が変わる符号値を、バイトごとに、デバッガ装置20で符号値を算出する際の符号化方式と同じ符号化方式(すなわちCRC)で算出する。なお、符号値算出部11cは、図示しないカウンタを有し、取得するデータに含まれるバイトの数をカウントする機能も有する。

0057

たとえば、符号値算出部11cは、以下の式(1)に基づいて、1ワード分のデータから、1ワード分の符号値を同時に計算する。

0058

0059

式(1)において、jはバイトのカウント値を示し、wはワード長を示している。また、D(j)〜D(j+w−1)は、符号値算出部11cが取得する1ワード分のデータであり、a(j)〜a(j+w−1)は、符号値算出部11cによって算出される1ワード分の符号値を示している。H(k)(k=1〜w)は、ハミング行列を示している。H(k)は、&0k(&はシーケンスの連接、0kは、信号シーケンスの値がkバイト分の0を示す)と同じ効果をもたらすように、CRCの値を変換する正則行列である。ハミング行列を用いたCRCの演算の例は、たとえば、非特許文献1に記載されている。

0060

シフト部11dは、符号値算出部11cが処理するワードの1つ前のワードの最後のバイトでの符号値を、ワード分の符号値の前に付加して、第1シーケンス検出部11eに供給する。

0061

図6は、シフト部の一例を示す図である。
シフト部11dは、レジスタ11d1とマージ部11d2を有している。
レジスタ11d1は、1ワード分の符号値の最後の符号値を記憶する。

0062

マージ部11d2は、1ワード分の符号値が入力されたとき、レジスタ11d1に記憶されている符号値をマージして出力する。図6の例では、マージ部11d2は、1ワード分の符号値a(j)〜a(j+w−1)が入力されたとき、レジスタ11d1に記憶されている前のワードの最後のバイトでの符号値a(j−1)と符号値a(j)〜a(j+w−1)とをマージする。つまり、マージ部11d2は、符号値a(j−1),a(j)〜a(j+w−1)を出力する。

0063

図4において、第1シーケンス検出部11eは、シーケンスSaを検出する。第1シーケンス検出部11eは、あるワード内の最後のバイトでの符号値と、バイト数sofに基づく位置のバイトでの符号値との差分と、レジスタ11a1〜11apに記憶されている符号値との比較結果に基づき検出を行う。また、第1シーケンス検出部11eは、シーケンスSaを検出すると、検出したときの符号値を期待値算出部11fに供給する。

0064

なお、第1シーケンス検出部11eは、1ワードに収まる検出対象シーケンスを検出する機能も有する。
期待値算出部11fは、シーケンスSaが検出されたときの符号値と、レジスタ11b1〜11bpに記憶されている符号値とに基づき、検出対象シーケンスの終了時における、符号値算出部11cで算出される符号値の期待値を算出する。

0065

レジスタ11g1〜11gpは、期待値算出部11fで算出された、複数の検出対象シーケンスのそれぞれに対応する期待値を記憶する。
図7は、レジスタへの期待値の格納例を示す図である。

0066

レジスタ11g1には、検出対象シーケンスSの識別情報seqID、シーケンスSbの長さlen2、符号値CRC(X&S)が記憶されている。なお、Xは未知のシーケンスであり、符号値CRC(X&S)は、未知のシーケンスの後に検出対象シーケンスSが続くときに得られる符号値の期待値を示している。

0067

判定部11hは、シフト部2cから出力される符号値(バイトカウント値が0のバイトから順次更新されている符号値(以下符号値の絶対値と呼ぶ場合もある))と、レジスタ11g1〜11gpに記憶されている期待値とを比較する。そして、判定部11hは、符号値の絶対値が、レジスタ11g1〜11gpに記憶されている何れかの期待値が一致したときに、検出対象シーケンスを検出した旨の信号を出力し、たとえば、デバッグ対象であるユーザ回路12の動作を停止させる。

0068

OR回路11iは、第1シーケンス検出部11eで、ワード長に収まる検出対象シーケンスが検出されたとき、または、判定部11hでワード長を超える検出対象シーケンスが検出されたとき、1を出力する。

0069

第1シーケンス検出部11e、期待値算出部11f、判定部11hでの処理例については、後述する。
(デバッガ装置20)
図8は、デバッガ装置のハードウェア例を示す図である。

0070

デバッガ装置20は、コンピュータであり、プロセッサ21によって装置全体が制御されている。プロセッサ21には、バス29を介してRAM22と複数の周辺機器が接続されている。プロセッサ21は、マルチプロセッサであってもよい。プロセッサ21は、たとえばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific IntegratedCircuit)、またはPLD(Programmable Logic Device)である。またプロセッサ21は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。

0071

RAM22は、デバッガ装置20の主記憶装置として使用される。RAM22には、プロセッサ21に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM22には、プロセッサ21による処理に必要な各種データが格納される。

0072

バス29に接続されている周辺機器としては、HDD(Hard Disk Drive)23、グラフィック処理装置24、入力インタフェース25、光学ドライブ装置26、機器接続インタフェース27及びネットワークインタフェース28がある。

0073

HDD23は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行う。HDD23は、デバッガ装置20の補助記憶装置として使用される。HDD23には、OSのプログラム、アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。

0074

グラフィック処理装置24には、モニタ24aが接続されている。グラフィック処理装置24は、プロセッサ21からの命令にしたがって、デバッグ結果などの画像をモニタ24aの画面に表示させる。モニタ24aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。

0075

入力インタフェース25には、キーボード25aとマウス25bとが接続されている。入力インタフェース25は、キーボード25aやマウス25bから送られてくる信号をプロセッサ21に送信する。なお、マウス25bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネルタブレットタッチパッドトラックボールなどがある。

0076

光学ドライブ装置26は、レーザ光などを利用して、光ディスク26aに記録されたデータの読み取りを行う。光ディスク26aは、光の反射によって読み取り可能なようにデータが記録された可搬型記録媒体である。光ディスク26aには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。

0077

機器接続インタフェース27は、デバッガ装置20に周辺機器を接続するための通信インタフェースである。たとえば機器接続インタフェース27には、メモリ装置27aやメモリリーダライタ27bを接続することができる。メモリ装置27aは、機器接続インタフェース27との通信機能を搭載した記録媒体である。メモリリーダライタ27bは、メモリカード27cへのデータの書き込み、またはメモリカード27cからのデータの読み出しを行う装置である。メモリカード27cは、カード型の記録媒体である。

0078

また、機器接続インタフェース27は、通信ケーブル20bを介して半導体装置10に接続されている。
ネットワークインタフェース28は、ネットワーク28aに接続されている。ネットワークインタフェース28は、ネットワーク28aを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。

0079

以上のようなハードウェア構成によって、第2の実施の形態のデバッガ装置20の処理機能を実現することができる。なお、第1の実施の形態のデバッガ装置4も、図8に示したデバッガ装置20と同様のハードウェアにより実現することができる。

0080

デバッガ装置20は、たとえばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。デバッガ装置20に実行させる処理内容記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、デバッガ装置20に実行させるプログラムをHDD23に格納しておくことができる。プロセッサ21は、HDD23内のプログラムの少なくとも一部をRAM22にロードし、プログラムを実行する。またデバッガ装置20に実行させるプログラムを、光ディスク26a、メモリ装置27a、メモリカード27cなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ21からの制御により、HDD23にインストールされた後、実行可能となる。またプロセッサ21が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。

0081

(デバッグ方法)
以下、上記の半導体装置10及びデバッガ装置20を用いたデバッグ方法の一例を説明する。

0082

図9は、デバッガ装置による設定処理の一例の流れを示すフローチャートである。
デバッガ装置20は、たとえば、作業者20aによるキーボード25aやマウス25bの操作などによって入力される1または複数の検出対象シーケンスを取得する(ステップS10)。

0083

検出対象シーケンスは、ワードの先頭から始まらないものも含む。たとえば、ユーザ回路12が、1ワードが8バイトのPCIexpressのトランザクション層パケットを処理する回路である場合を考える。

0084

図10は、パケットの一例を示す図である。
図10に示されているワード(Word1,Word2)うち、たとえば、パケット種別(Fmt)、デバイス番号(devid)、書き込みアドレス(Addr)のフィールドが、検出対象シーケンスとして指定される。属性(attr)、長さ(length)、書き込み値(Data)などは、たとえば、動作環境で変動するため検出対象シーケンスとして指定されない。

0085

たとえば、特定のデバイス番号を検出したいときには、devidは、“Byte offset”が+4、すなわち、5バイト目から始まるため、検出対象シーケンスは、Word1内の5バイト目から始まる。

0086

検出対象シーケンスの取得後、デバッガ装置20は、検出対象シーケンスが1ワードに収まらないときには、検出対象シーケンスをシーケンスSaと残りのシーケンスSbに分割する(ステップS11)。

0087

さらに、デバッガ装置20は、シーケンスSaとシーケンスSbをそれぞれCRCで符号化した符号値を算出する(ステップS12)。ステップS12の処理では、デバッガ装置20は、シーケンスSaの始めの信号(入力データまたは出力データ)から、符号値を算出し、後続の信号によって符号値を更新していく。シーケンスSaの最後の信号による符号値の更新が終わると、そのときの符号値がシーケンスSaによる符号値となる。後続部のシーケンスSbについても同様に処理されて、符号値が算出される。

0088

デバッガ装置20は、ステップS12の処理で算出した符号値を、検出対象シーケンスの識別番号、ワードの先頭から検出対象シーケンスの先頭までのバイト数sof、シーケンスSa,Sbの長さとともに、半導体装置10に送信する(ステップS13)。これによりデバッガ装置20による設定処理が終了する。

0089

図11は、半導体装置による処理の一例の流れを示すフローチャートである。
半導体装置10は、デバッガ装置20から送信された符号値などの情報を受信部13で受信する(ステップS20)。そして、半導体装置10の図示しない制御部は、受信した情報を、図5に示したように、レジスタ11a1〜11ap,11b1〜11bpに設定(記憶)する(ステップS21)。

0090

その後、半導体装置10の図示しない制御部は、デバッグ対象のユーザ回路12に動作を開始させる(ステップS22)。
ユーザ回路12の動作開始後、デバッグ回路11の符号値算出部11cは、図示しないクロックの各タイミングで、ユーザ回路12の入力データxまたは出力データyに基づき、CRCで符号値を算出(更新)する(ステップS23)。このとき、符号値算出部11cは、前述した式(1)にしたがって、ワード単位で符号値を算出する。

0091

その後、第1シーケンス検出部11eは、レジスタ11a1〜11apに記憶された情報を読み出し、シーケンスSaの検出を行う(ステップS24)。
第1シーケンス検出部11eは、検出対象シーケンスが1ワードに収まらないとき、すなわち、n>w−sofのとき、以下の処理を行う。

0092

図12は、ユーザ回路の信号が、1ワードに収まらない検出対象シーケンスを含むシーケンスで遷移する例を示す図である。
図12では、バイトカウント値0から開始されたシーケンスの一例が示されている。あるシーケンスXの後に検出対象シーケンスSが続いている。また、図12では、符号値算出部11cで算出される符号値の例が示されている。シーケンスXの最後で算出される符号値はCRC(X)、ワードW1の途中から始まるシーケンスSaの最後で算出される符号値はCRC(X&Sa)、シーケンスSb(任意長)の最後で算出される符号値はCRC(X&S)である。

0093

なお、CRCの線形性から、以下の式が成り立つ。
CRC(X&S)=CRC((X&0m)+(0k&Sa))=CRC(X&0m)+CRC(0k&Sa)=CRC(X&0m)+CRC(Sa)=H(m)・CRC(X)+CRC(Sa) (2)
式(2)において、“+”はXOR演算を表している(以降の式でも同じである)。また、“0m”は、mバイト分、連続してユーザ回路12から取得されるデータが0であるシーケンスを示している。また、シーケンスXの長さをkバイトとすると、“0k”は、kバイト分、連続してユーザ回路12の信号が0であるシーケンスを示している。

0094

また、式(2)において、CRC(X&0m)+CRC(0k&Sa)=CRC(X&0m)+CRC(Sa)であるのは、CRCの性質から、初期状態から連続する0は、その個数によらず、CRCの値に影響しないためである。

0095

第1シーケンス検出部11eは、シフト部11dから供給される符号値のうち、ワード内の最後のバイトでの符号値と、ワードの先頭バイトからsof−1バイト分後ろのバイトでの符号値との差分に基づく以下の条件式成立するか否かを評価する。

0096

a(j+w−1)−H(w−sof)・a(j+sof−1)=CRC(Sa) (3)
ここで、jはワードの先頭バイトでのバイト数(バイトカウント値)を示している。

0097

第1シーケンス検出部11eは、上記のようなCRC差分(CRCで符号化された符号値の変化分)に基づく式(3)が成立するか否かを判定することで、シーケンスSaを検出したか否かを判定する(ステップS25)。

0098

図13は、シーケンスSaの検出例を示す図である。
図13の例では、ワードW1の先頭のバイトでのバイトカウント値がjとなっている。
式(3)が成立するとき、図13に示すように、符号値a(j+sof−1)は、CRC(X)となり、符号値a(j+w−1)は、C(X&Sa)となり、バイトカウント値がj+w−1のときに、シーケンスSaが検出されたことになる。

0099

したがって、上記式(3)が成立するとき、第1シーケンス検出部11eは、シーケンスSaが検出されたと判定し、バイトカウント値がj+w−1のときの符号値a(j+w−1)を期待値算出部11fに送る。

0100

一方、ステップS24の処理において、第1シーケンス検出部11eは、検出対象シーケンスが1ワードに収まるとき、すなわち、n≦w−sofのとき、以下の処理を行う。
図14は、ユーザ回路の信号が、1ワードに収まる検出対象シーケンスを含むシーケンスで遷移する例を示す図である。

0101

図14では、バイトカウント値0から開始されたシーケンスの一例が示されている。図12図13の場合と異なり、図14の例では、あるシーケンスXの後にワードW1に収まる検出対象シーケンスSが続いている。このときシーケンスSaは検出対象シーケンスSと等しい。また、図14でも、符号値算出部11cで算出される符号値の例が示されている。シーケンスXの最後で算出される符号値はCRC(X)、シーケンスSa(検出対象シーケンスS)の最後で算出される符号値はCRC(X&Sa)である。

0102

第1シーケンス検出部11eは、n≦w−sofのとき、以下の条件式が成立するか否かを評価する。
a(j+eof)−H(eof−sof+1)・a(j+sof−1)=CRC(Sa) (4)
式(4)において、eofは、ワードの先頭バイトから検出対象シーケンスSの最後のバイトまでのバイト数である。ワードの先頭でのバイトカウント値がjのときは、検出対象シーケンスSが終了するバイトカウント値は、j+eofで表せる。

0103

第1シーケンス検出部11eは、上記のようなCRC差分(CRCで符号化された符号値の変化分)に基づく式(4)が成立するか否かを判定することで、ワードに収まる検出対象シーケンスSも検出できる。

0104

図15は、ワードに収まる検出対象シーケンスSの検出例を示す図である。
式(4)が成立するとき、図15に示すように、符号値a(j+sof−1)は、CRC(X)となり、符号値a(j+eof)は、CRC(X&Sa)となる。そのため、バイトカウント値がj+eofのときに、シーケンスSa、すなわちこの場合、検出対象シーケンスSが検出されたことになる。

0105

図11のフローチャートには示されていないが、上記式(4)が成立するとき、第1シーケンス検出部11eは、検出対象シーケンスSが検出されたと判定し、“1”となる信号をOR回路11iに出力し、後述のステップS29の処理が行われる。

0106

シーケンスSaが検出されないとき、すなわち、式(3)または式(4)が成立しないときは、ステップS23からの処理が繰り返される。
期待値算出部11fは、図13に示したような符号値a(j+w−1)を受けると、期待値の算出を行う(ステップS26)。

0107

図16は、検出対象シーケンスSの検出用の期待値の算出例を示す図である。
上記のように、シーケンスSa検出時の符号値は、a(j+w−1)=CRC(X&Sa)となっている。シーケンスSaに引き続いてシーケンスSbが発生するとき、バイトカウント値がj+n+sof−1のとき、符号値の期待値b(j+n+sof−1)であるCRC(X&S)は、以下の式で与えられる。

0108

CRC(X&S)=CRC(X&Sa&Sb)=CRC(X&Sa&0n-w+sof)+CRC(Sb)=H(n−w+sof)・CRC(X&Sa)+CRC(Sb) (5)
ここで、CRC(Sb)は、シーケンスSbの符号値であり、レジスタ11b1〜11bpの何れかに記憶されているものである。

0109

したがって、期待値算出部11fは、シーケンスSaと同じ識別情報seqIDをもつシーケンスSbの符号値をレジスタ11b1〜11bpの何れかから読み出して、上記の式(5)により期待値を算出する。

0110

その後、符号値算出部11cによる符号値の更新が行われ(ステップS27)、判定部11hは、符号値算出部2bから出力される符号値と、期待値とが一致したときに、検出対象シーケンスを検出した旨を示す信号を出力する。

0111

図17は、検出対象シーケンスの検出例を示す図である。
シーケンスSbの終わりは、シーケンスSaを検出してから(n−w+sof)バイト後である。それは、シーケンスSaを検出してから、(n−w+sof)/w(小数点以下は切り上げワード目の先頭からeofxバイト目である。eofxは、シーケンスSbの長さとワード長との関係から算出できる。図17に示されている例では、ワードWxの先頭バイトのバイトカウント値をjとしている。

0112

したがって、判定部11hは、バイトカウント値=j+eofxでの符号値a(j+eofx)が式(5)で求めたCRC(X&S)と等しいか否かを判定する(ステップS28)。

0113

バイトカウント値=j+eofxでの符号値a(j+eofx)が、CRC(X&S)と一致するときには、判定部11hは、“1”を出力し、デバッグ対象であるユーザ回路12の動作を停止させる(ステップS29)。以上で、ある検出対象シーケンスの検出時のユーザ回路12の停止処理が終わる。

0114

判定部11hは、たとえば、“1”を出力してユーザ回路12へクロック信号の供給を停止することで、ユーザ回路12の動作を停止する。また、判定部11hは、ユーザ回路12へのデータの入力またはユーザ回路12からのデータの出力を遮断して、ユーザ回路12が停止しているように扱うようにしてもよい。

0115

その後は、たとえば、デバッガ装置20により、ユーザ回路12の各部の信号の様子を調査するなどのデバッグ作業が行われる。
バイトカウント値=j+eofxでの符号値a(j+eofx)がCRC(X&S)と一致しないときには、判定部11hは、検出対象シーケンスSが検出されなかったと判定し、再度ステップS23からの処理を繰り返す。

0116

以上のような半導体装置10、デバッグ回路11及びデバッガ装置20によれば、第1の実施の形態の半導体装置1、デバッグ回路2及びデバッガ装置4と同様の効果が得られる。また、複数の検出対象シーケンスのそれぞれのシーケンスSaとシーケンスSbの符号値に基づきユーザ回路12の停止処理を行うことが可能であり、複数の停止条件でユーザ回路12を停止できる。

0117

(第1シーケンス検出部11eの回路例)
ところで、図4に示した第1シーケンス検出部11eは、式(3)、式(4)で示したように、ワード内の任意のバイト間でのCRC差分に基づく判定を行う可能性がある。ワードのバイト数をwとすると、最大w/2(w+1)個の判定条件を評価することになる。

0118

たとえば、第1シーケンス検出部11eは以下のような回路を用いて実現される。
図18は、第1シーケンス検出部の一例を示す図である。
CRC−1〜CRC7は、w=8としたときの、シフト部11dの出力である符号値a(j−1)〜a(j+7)を示している。第1シーケンス検出部11eは、複数の乗算器減算器を有している。

0119

たとえば、第1シーケンス検出部11eが、符号値a(j−1)と符号値a(j+7)の差分に基づきシーケンスSaを検出するときには(sof=0のとき)、式(3)に基づき、a(j+7)−H(8)・a(j−1)が計算される。このとき、乗算器30にて、H(8)・a(j−1)が算出され、減算器31にて、a(j+7)−H(8)・a(j−1)が算出される。

0120

a(j+7)−H(8)・a(j−1)は、第1シーケンス検出部11e内の図示しない比較回路により、たとえば、レジスタ11a1に格納された符号値CRC(Sa)と比較される。そして、これらが一致したら、シーケンスSaが検出されたとみなされ、符号値a(j+7)が期待値算出部11fに供給される。

0121

また、図18に示すような第1シーケンス検出部11eによれば、シフト部11dの出力である9バイトの符号値の差分に基づき、バイト数sofの異なる複数の検出対象シーケンスに対応したシーケンスSaを同時に検出できる。たとえば、sof=1,2の2つの検出対象シーケンスのシーケンスSaを検出する際には、乗算器32と減算器33により、a(j+7)−H(7)・a(j)、乗算器34、減算器35によりa(j+7)−H(6)・a(j+1)が同時に算出される。そして、算出された値と、図示しない比較部により、レジスタ11a1〜11apに格納された符号値との比較結果に基づき、2つの検出対象シーケンスのシーケンスSaが検出される。

0122

同様に1ワードに収まる複数の検出対象シーケンスについても同時に検出できる。
また、第1シーケンス検出部11eは、シーケンスSaを検出する際に、図18に示したような回路を用いて、シーケンスSaの他、シーケンスSaに含まれる1または複数のシーケンスの検出ができたときに、シーケンスSaが検出されたと判定してもよい。

0123

図19は、シーケンスSaの検出例を示す図である。
“Byte offset”は、ワードの先頭バイトの位置を0としたときのバイトの位置を示している。“Byte offset”=0は、バイトカウント値=jに相当する。各バイト位置(−1〜+7)のバイトの符号値は、a(j−1)〜a(j+7)と示されている。

0124

第1シーケンス検出部11eは、符号値a(j+2),a(j+7)の差分と、CRC(Sa)との比較結果に基づきシーケンスSaを検出する際、シーケンスSaの他、シーケンスSaに含まれる1または複数のシーケンスの検出を行う。

0125

たとえば、シーケンスSa内の各バイト間の符号値の差分が、シーケンスSaに含まれるシーケンスSaa,Sab,Sac,Sadの符号値に対応するか否か判定する。なお、シーケンスSaa〜Sadの符号値は、デバッガ装置20によって算出され、たとえば、予めデバッグ回路11のレジスタ11a1に記憶されているものとする。

0126

そして、第1シーケンス検出部11eは、全ての差分が、シーケンスSaa〜Sadの符号値に対応していると判定したときに、シーケンスSaが検出されたと判定する。
CRCはビット数が決まっているため、異なる複数のシーケンスで、同じCRC値が算出される可能性がある。しかし、上記のように、シーケンスSaの検出時、シーケンスSaに含まれる1または複数のシーケンスについても検出することで、検出対象シーケンスのシーケンスSaとは異なるシーケンスを誤って検出する可能性を減らせる。

0127

なお、1ワードに収まる複数の検出対象シーケンスについても、同様の処理を行うことで、誤って異なるシーケンスを検出する可能性を減らせる。
ところで、図18に示したような第1シーケンス検出部11eで、ハミング行列を用いた乗算を行う乗算器の面積は比較的大きいため、以下のように乗算の数を減らすことで、小面積化が可能となる。

0128

たとえば、シーケンスSaまたはワードに収まる検出対象シーケンスである4つのシーケンスSXa,SXb,SXc,SXdを検出する場合を考える。
図20は、4つのシーケンスの例を示す図である。

0129

図19と同様に、図20でも“Byte offset”に対応した符号値が示されている。
シーケンスSXaは、a(j+7)−H(8)・a(j−1)=CRC(SXa)が成立するときに検出され、シーケンスSXbは、a(j+3)−H(4)・a(j−1)=CRC(SXb)が成立するときに検出される。

0130

また、シーケンスSXcは、a(j+5)−H(2)・a(j+3)=CRC(SXc)が成立するときに検出され、シーケンスSXdは、a(j+7)−H(4)・a(j+3)=CRC(SXd)が成立するときに検出される。

0131

なお、CRC(SXa)〜CRC(SXd)は、レジスタ11a1〜11apの何れか4つに格納されているシーケンスSXa〜SXdの符号値である。
この例では、ハミング行列H(8),H(4),H(2)の乗算が合計4回行われる。

0132

乗算回数を減らすために、たとえば、以下のようにシフト部11dから出力される符号値にH(k)を乗じた値(ただし、k=w−(Byte offset+1))が用いられる。

0133

図21は、H(k)を乗じた符号値の例が示されている。
符号値a(j−1)にはH(8)、符号値a(j)にはH(7)、符号値a(j+1)にはH(6)、符号値a(j+2)にはH(5)、符号値a(j+3)にはH(4)、符号値a(j+4)にはH(3)が乗じられている。また、符号値a(j+5)にはH(2)、符号値a(j+6)にはH(1)が乗じられており、符号値a(j+7)はそのままである。

0134

このような符号値を用いた場合、シーケンスSXaは、a(j+7)−{H(8)・a(j−1)}=CRC(SXa)が成立するときに検出される。
シーケンスSXbは、{H(4)・a(j+3)}−{H(8)・a(j−1)}={H(4)・CRC(SXb)}が成立するときに検出される。

0135

シーケンスSXcは、{H(2)・a(j+5)}−{H(4)・a(j+3)}={H(2)・CRC(SXc)}が成立するときに検出される。
シーケンスSXdは、a(j+7)−{H(4)・a(j+3)}=CRC(SXd)が成立するときに検出される。

0136

この場合、シーケンスSXa〜SXdを検出する際に、{H(8)・a(j−1)}、{H(4)・a(j+3)}、{H(2)・a(j+5)}の3つの乗算で済む。上記の式の右辺の{H(4)・CRC(SXb)}と、{H(2)・CRC(SXc)}は、予めレジスタ11a1〜11apに記憶しておけばよいため、乗算器の数は増加しない。

0137

上記の式を実現する第1シーケンス検出部11ea(図18の第1シーケンス検出部11eと区別するために符号を変えている)は、たとえば、以下のような回路となる。
図22は、第1シーケンス検出部の他の例を示す図である。

0138

CRC−1〜CRC7は、w=8としたときの、シフト部11dの出力である符号値a(j−1)〜a(j+7)を示している。第1シーケンス検出部11eaは、図21に示したように、符号値a(j−1)〜a(j+6)にH(8)〜H(1)を乗じる8つの乗算器を有している。

0139

たとえば、シーケンスSXa〜SXdを検出する際には、乗算器40にて{H(8)・a(j−1)}、乗算器41にて{H(5)・a(j+2)}、乗算器42にて{H(4)・a(j+3)}がそれぞれ算出される。

0140

図18に示した第1シーケンス検出部11eでは、乗算器がw(w+1)/2個含まれていたが、図22に示した第1シーケンス検出部11eaでは、乗算器の数をw個(図22の例ではw=8)に減らすことができ、小面積化できる。

0141

(符号値算出部11cとシフト部11dの一体化
図4に示したデバッグ回路11の符号値算出部11cで算出される1ワード分の符号値a(j)〜a(j+w−1)の各値に対応した、シフト部11dの出力の符号値をc(j)〜c(j+w−1)とすると、c(j)〜c(j+w−1)は以下の式で表現できる。

0142

0143

式(6)において、Iは単位行列を表している。
ところで、符号値算出部11cは、前述したように式(1)により、符号値a(j)〜a(j+w−1)を算出する。ここで、式(1)と式(6)は以下の式(7)のように簡略化できる。

0144

0145

符号値算出部11cは、このような式(7)を実現する回路とすることで、シフト部11dの機能も実現することができる。また、式(7)の行列上三角行列であり、非零要素の個数は、式(1)と同等であるため、シフト部11dの機能をもたせたとしても、乗算回路の増加は少ない。

0146

(バイト数sof設定の変形例)
上記の説明では、ワードの先頭から検出対象シーケンスの先頭までのバイト数sof(開始オフセット)が予め指定されているものとした。しかし、開始オフセットは指定されていなくてもよい。開始オフセットは、ワード長によって取りうる値が決まるので、たとえば、デバッガ装置20は、ワード長に応じた数の開始オフセットを設定し、各開始オフセットの値に対応した、シーケンスSa,Sbの符号値を算出すればよい。これらの値は、デバッグ回路11のレジスタ11a1〜11ap,11b1〜11bpに設定され、検出対象シーケンスの検出に用いられる。

0147

図23は、開始オフセットが未指定のときのレジスタの格納例を示す図である。
レジスタ11a1には、開始オフセットであるw個のバイト数sof1〜sofwが記憶されている。バイト数sof1〜sofwは、0(オフセットなし)〜w−1バイトである。さらに、レジスタ11a1には、バイト数sof1〜sofwのそれぞれに対応したシーケンスSa1〜Sawの長さlen11〜len1wとシーケンスSa1〜Sawの符号値CRC(Sa1)〜CRC(Saw)が記憶されている。

0148

レジスタ11b1には、バイト数sof1〜sofwのそれぞれに対応した、シーケンスSb1〜Sbwの長さlen21〜len2wと、シーケンスSb1〜Sbwの符号値CRC(Sb1)〜CRC(Sbw)が記憶されている。

0149

第1シーケンス検出部11eは、CRC(Sa1)〜CRC(Saw)を用いてシーケンスSa1〜Sawを検出し、シーケンスSa1〜Sawを検出する。期待値算出部11fは、検出されたシーケンスSa1〜Sawの何れかに対応したシーケンスSb1〜Sbwの符号値CRC(Sb1)〜CRC(Sbw)を用いて、前述した期待値を算出する。

0150

これによって、開始オフセットが未指定の検出対象シーケンスについても検出が可能となる。
以上、実施の形態に基づき、本発明のデバッグ回路、半導体装置及びデバッグ方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。

0151

1半導体装置
2デバッグ回路
2a 記憶部
2b符号値算出部
2cシフト部
2d 第1シーケンス検出部
2e期待値算出部
2f 判定部
2gOR回路
3デバッグ対象回路
4デバッガ装置
Sa,Sb,X シーケンス
Wa,Wb,W1ワード
sof バイト数

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ