JP2016186707A - デバッグ回路、半導体装置及びデバッグ方法 - Google Patents

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

Info

Publication number
JP2016186707A
JP2016186707A JP2015066456A JP2015066456A JP2016186707A JP 2016186707 A JP2016186707 A JP 2016186707A JP 2015066456 A JP2015066456 A JP 2015066456A JP 2015066456 A JP2015066456 A JP 2015066456A JP 2016186707 A JP2016186707 A JP 2016186707A
Authority
JP
Japan
Prior art keywords
sequence
code value
code
word
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015066456A
Other languages
English (en)
Other versions
JP6477134B2 (ja
Inventor
豊 田宮
Yutaka Tamiya
豊 田宮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015066456A priority Critical patent/JP6477134B2/ja
Priority to US15/019,358 priority patent/US10024911B2/en
Publication of JP2016186707A publication Critical patent/JP2016186707A/ja
Application granted granted Critical
Publication of JP6477134B2 publication Critical patent/JP6477134B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31703Comparison aspects, e.g. signature analysis, comparators
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31705Debugging aspects, e.g. using test circuits for debugging, using dedicated debugging test circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

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

Description

本発明は、デバッグ回路、半導体装置及びデバッグ方法に関する。
ハードウェアが正常に動作しているか否かを確認する実機デバッグの手法として、デバッグ対象の回路の実装時に、デバッグ用の回路を挿入してデバッグを行うロジックアナライザ手法がある。
ロジックアナライザ手法において、デバッグ用の回路は、ユーザによって指定されたデバッグ対象の回路の信号の時間変化を監視する。そして、デバッグ用の回路は、信号の値が所定の停止条件と一致したときには、その回路の動作を停止させ、トレースメモリに格納された信号の時間変化を表示装置などに出力する。
特開2003−46393号公報
M. Walma, "Pipelined Cyclic Redundancy Check (CRC) Calculation", Proc. of 16th Int'l Conf. on Computer Communications and Networks, pp. 365-370, 2007.
ところで、ソフトウェアのデバッグではブレークポイントを使用して、プログラムを様々な条件で停止させることができる。しかしながら、ハードウェアのデバッグでは、トレースメモリの容量やデバッグに使える信号線の本数などのハードウェア上の制約により、ユーザが意図した条件やタイミングでハードウェアを停止させることが難しく、効率よくデバッグを行うことは難しい。したがって、デバッグの作業効率を向上することが課題である。
発明の一観点によれば、ワード単位で処理を行う回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、検出対象とする検出対象シーケンスのうち、先頭から最初の第1のワードに収まる第1のシーケンスを符号化した第1の符号値と、残りの第2のシーケンスを符号化した第2の符号値と、前記第1のワードの先頭から、前記検出対象シーケンスの先頭までの第1のバイト数とを記憶する記憶部と、前記信号のシーケンスに基づき前記符号化方式でバイトごとの第3の符号値を算出する符号値算出部と、前記第3の符号値のうち、前記信号のシーケンスの第2のワード内の最後のバイトでの第4の符号値と、前記第1のバイト数に基づく位置のバイトでの第5の符号値との差分と、前記第1の符号値との比較結果に基づき前記第1のシーケンスを検出する第1シーケンス検出部と、前記第3の符号値のうち、前記第1のシーケンスが検出されたときの第6の符号値と、前記第2の符号値とに基づき、前記検出対象シーケンスの終了時における前記第3の符号値の期待値を算出する期待値算出部と、前記第3の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する判定部と、を有するデバッグ回路が提供される。
また、発明の一観点によれば、ワード単位で処理を行う回路と、前記回路における信号のシーケンスに応じて値が変わる符号化方式で算出され、検出対象とする検出対象シーケンスのうち、先頭から最初の第1のワードに収まる第1のシーケンスを符号化した第1の符号値と、残りの第2のシーケンスを符号化した第2の符号値と、前記第1のワードの先頭から、前記検出対象シーケンスの先頭までの第1のバイト数とを記憶する記憶部と、前記信号のシーケンスに基づき前記符号化方式でバイトごとの第3の符号値を算出する符号値算出部と、前記第3の符号値のうち、前記信号のシーケンスの第2のワード内の最後のバイトでの第4の符号値と、前記第1のバイト数に基づく位置のバイトでの第5の符号値との差分と、前記第1の符号値との比較結果に基づき前記第1のシーケンスを検出する第1シーケンス検出部と、前記第3の符号値のうち、前記第1のシーケンスが検出されたときの第6の符号値と、前記第2の符号値とに基づき、前記検出対象シーケンスの終了時における前記第3の符号値の期待値を算出する期待値算出部と、前記第3の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する判定部と、を備えたデバッグ回路と、を有する半導体装置が提供される。
また、発明の一観点によれば、デバッガ装置が、ワード単位で処理を行う回路における信号のシーケンスから検出する検出対象シーケンスを、先頭から最初の第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の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する、デバッグ方法が提供される。
開示のデバッグ回路、半導体装置及びデバッグ方法によれば、デバッグの作業効率を向上できる。
第1の実施の形態の半導体装置、デバッグ回路及びデバッガ装置の一例を示す図である。 検出対象シーケンスが1ワードに収まるときの検出処理を説明する図である。 第2の実施の形態の半導体装置及びデバッガ装置を含むデバッグシステムの例を示す図である。 半導体装置の一例を示す図である。 レジスタの格納例を示す図である。 シフト部の一例を示す図である。 レジスタへの期待値の格納例を示す図である。 デバッガ装置のハードウェア例を示す図である。 デバッガ装置による設定処理の一例の流れを示すフローチャートである。 パケットの一例を示す図である。 半導体装置による処理の一例の流れを示すフローチャートである。 ユーザ回路の信号が、1ワードに収まらない検出対象シーケンスを含むシーケンスで遷移する例を示す図である。 シーケンスSaの検出例を示す図である。 ユーザ回路の信号が、1ワードに収まる検出対象シーケンスを含むシーケンスで遷移する例を示す図である。 ワードに収まる検出対象シーケンスSの検出例を示す図である。 検出対象シーケンスSの検出用の期待値の算出例を示す図である。 検出対象シーケンスの検出例を示す図である。 第1シーケンス検出部の一例を示す図である。 シーケンスSaの検出例を示す図である。 4つのシーケンスの例を示す図である。 H(k)を乗じた符号値の例が示されている。 第1シーケンス検出部の他の例を示す図である。 開始オフセットが未指定のときのレジスタの格納例を示す図である。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の半導体装置、デバッグ回路及びデバッガ装置の一例を示す図である。
半導体装置1は、デバッグ回路2とハードウェアであるデバッグ対象回路3とを有している。
デバッグ回路2は、デバッグ対象回路3における任意の信号のシーケンスから、所定の信号のシーケンス(以下検出対象シーケンスと呼ぶ)を検出し、検出した旨の検出信号を出力する回路である。検出信号は、たとえば、デバッグ対象回路3の動作を停止させるのに用いられる。
なお、デバッグ対象回路3は、複数バイトによるワード単位でデータ処理(パラレルデータ処理)を行う回路である。
また、検出対象シーケンスは、ワードの先頭から始まらないものも含む。たとえば、デバッグ対象回路3が、1ワードが8バイトのPCI(Peripheral Component Interconnect)expressのトランザクション層パケットを処理する回路である場合を考える。このパケットは、パケット種別、デバイス番号、書き込みアドレスなどを示す信号シーケンスを含む。これらの信号シーケンスは、ワードの先頭(境界)から始まらないものもある。本実施の形態のデバッグ回路2は、そのような信号のシーケンスも検出対象として設定できるようにしたものである。
図1には、ワードWa,Wbに跨る検出対象シーケンスの例が示されている。楕円状の要素は、バイトを表している。8バイトのワードWaの先頭から検出対象シーケンスの先頭までの間には、バイト数sof(図1の例では2)のオフセットがある。図1では、検出対象シーケンスのうち、先頭から最初のワードWaの境界までの(ワードWaに収まる)シーケンスSa、残りの部分がシーケンスSbと示されている。
デバッグ回路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を記憶するようにしてもよい。
符号値Aa,Abは、デバッグ対象回路3における信号のシーケンスに応じて値が変わる符号化方式で算出される。
符号値Aa,Abは、たとえば、線形性を有する符号値(線形符号)であり、CRC(Cyclic Redundancy Check)などの符号化方式で、デバッガ装置4にて算出される。
符号値算出部2bは、デバッグ対象回路3における信号のシーケンスをワード単位で取得し、信号のシーケンスに基づき、デバッガ装置4が符号値Aa,Abを算出する際の符号化方式と同じ符号化方式で、バイトごとの符号値を算出する。
なお、符号値算出部2bは、後述する式(1)に基づいて、1ワード分のデータから、1ワード分のバイトごとの符号値を同時に計算可能である。また、符号値算出部2bは、たとえば、図示しないカウンタを有しており、取得するデータに含まれるバイト数をカウントする機能も有する。
図1では、符号値算出部2bが、デバッグ対象回路3の信号である入力データxまたは出力データyの1ワード分のデータD(j),…D(j+w−1)を取得したときの例が示されている。jは、符号値算出部2bが取得するバイトのカウント値を示し、D(j)は、j番目のバイトのデータを示している。また、wは、1ワードに含まれるバイト数を示し、ワード長を意味する。
符号値算出部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に供給されている例が示されている。
第1シーケンス検出部2dは、検出対象シーケンスのうち、シーケンスSaを検出する。第1シーケンス検出部2dは、符号値算出部2bで算出される符号値のうち、ワード内の最後のバイトでの符号値と、前述したバイト数sofに基づく位置のバイトでの符号値との差分と、符号値Aaとの比較結果に基づき検出を行う。
図1には、未知のシーケンスXの後に、シーケンスSa,Sbを含む検出対象シーケンスが続くときのシーケンスSaの検出例が示されている。シーケンスSaは、ワードW1内に含まれている。シーケンスSaのワードW1内での開始位置は、バイト数sofに対応する位置であり、図1の例では、バイトカウント値がj+sofの位置となっている。また、ワードW1の最後のバイトの位置は、バイトカウント値がj+w−1の位置となっている。
このとき、ワードW1の最後のバイトでの符号値a(j+w−1)と、バイトカウント値がj+sofの1つ前の位置のバイトでの符号値a(j+sof−1)との差分が、符号値Aaに相当する。このため、第1シーケンス検出部2dは、シーケンスSaを検出できる。
第1シーケンス検出部2dは、シーケンスSaを検出すると、検出したときの符号値を期待値算出部2eに供給する。図1の例では、符号値a(j+w−1)が期待値算出部2eに供給されている。
なお、第1シーケンス検出部2dは、ワードW1に収まる検出対象シーケンスを検出する機能も有する。この処理については後述する。
期待値算出部2eは、符号値算出部2bで算出される符号値のうち、シーケンスSaが検出されたときの符号値と、符号値Abとに基づき、検出対象シーケンスの終了時における、符号値算出部2bで算出される符号値の期待値を算出する。
たとえば、期待値算出部2eは、シーケンスSaが検出されたときの符号値が符号値a(j+w−1)のとき、符号値a(j+w−1)と符号値AbのXOR演算から期待値b(j+n+sof−1)を算出する(後述の式(5)参照)。なお、nは検出対象シーケンスの長さ(バイト数)である。
判定部2fは、符号値算出部2bから出力される符号値と、期待値とが一致したときに、検出対象シーケンスを検出した旨を示す信号を出力する。図1には、符号値算出部2bから出力される符号値a(j+n+sof−1)が期待値b(j+n+sof−1)に一致した例が示されている。このとき、判定部2fは、検出対象シーケンスを検出した旨の信号を出力する。この信号は、たとえば、デバッグ対象回路3の動作を停止する旨を指示する回路停止信号となる。
判定部2fは、たとえば、回路停止信号により、デバッグ対象回路3へクロック信号の供給を停止することで、デバッグ対象回路3の動作を停止する。また、判定部2fは、デバッグ対象回路3へのデータの入力またはデバッグ対象回路3からのデータの出力を遮断して、デバッグ対象回路3が停止しているように扱うようにしてもよい。
デバッガ装置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はない。
以下、半導体装置1とデバッガ装置4を含むデバッグシステムによるデバッグ方法の一例を説明する。
デバッガ装置4による上記のステップS1〜S4の処理で算出され、送信されたシーケンスSa,Sbの情報は、半導体装置1のデバッグ回路2の記憶部2aに記憶される。
デバッグ回路2は、デバッグ対象回路3の信号の遷移を検出しており、符号値算出部2bは、図1の例では、入力データxまたは出力データyのシーケンスに基づき、符号値をワード単位で更新する。
たとえば、図1のように、デバッグ回路2が、デバッグ対象回路3から、1ワード分のデータD(j),…D(j+w−1)を取得したとき、符号値算出部2bの出力は、符号値a(j),…a(j+w−1)に更新される。
符号値算出部2bから出力された符号値a(j),…a(j+w−1)は、シフト部2cにて、符号値a(j−1)が加えられたのち、第1シーケンス検出部2dに供給される。
デバッグ回路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)を算出する。
入力データxと出力データyが遷移して、符号値算出部2bから出力される符号値a(j+n+sof−1)が、期待値b(j+n+sof−1)に一致したとき、判定部2fは、検出対象シーケンスを検出した旨を示す信号を出力する。このとき、判定部2fは、たとえば、“1”を出力する。これにより、OR回路2gは、“1”を出力し、たとえば、デバッグ対象回路3の動作を停止する。
その後は、たとえば、デバッガ装置4により、デバッグ対象回路3の各部の信号の様子を調査するなどのデバッグ作業が行われる。
なお、デバッグ回路2は、ワードW1に収まる検出対象シーケンスを検出するとき、以下のような処理を行う。
図2は、検出対象シーケンスが1ワードに収まるときの検出処理を説明する図である。
図2に示すように、検出対象シーケンスSが、ワードW1に収まるとき、第1シーケンス検出部2dは、前述した符号値a(j+sof−1)と、符号値a(j+eof)との差分と、符号値Aaとの比較結果に基づき検出を行う。ここで、バイト数eofは、検出対象シーケンスのバイト数nとバイト数sofを加算したバイト数である。
第1シーケンス検出部2dは、符号値a(j+sof−1)と、符号値a(j+eof)との差分が、符号値Aaと一致したときには、検出対象シーケンスSを検出した旨の信号として、たとえば、“1”を出力する。このときも、OR回路2gは、“1”を出力し、たとえば、デバッグ対象回路3の動作を停止する。
このように、本実施の形態のデバッグ回路2は、ワードの先頭から検出対象シーケンスの先頭までのバイト数を記憶しておき、そのバイト数に基づくバイト位置での符号値を用いて、検出対象シーケンスの検出を行う。これによって、ワード境界に捉われず検出対象シーケンスを設定できる。つまり、ワードの先頭から始まらない信号シーケンスも検出対象シーケンスとして設定できる。たとえば、ワード内に動作環境で変動するような値が指定されるフィールドがあってもそのフィールドを避けて検出対象シーケンスの設定が可能になる。これにより、ユーザが意図した条件やタイミングでハードウェアを停止させることができるようになり、デバッグ時の作業効率が向上する。
また、上記のような符号値を用いることで、ハードウェア上の制約があっても、様々な条件でデバッグ対象回路3を停止することが容易になり、デバッグの作業効率が上がる。
また、デバッグ回路2は、入力データxや出力データyを直接扱うのではなく、データ量の小さい符号値を用いて処理を行うため、処理を小規模な回路で行えるとともに高速動作が可能となる。
さらに、複雑なシーケンスを検出対象シーケンスとしたときでも、符号値として表現できるので、記憶部2aの容量は小さくてすみ、デバッグ回路2及び半導体装置1の回路面積を小さくできる。
また、検出対象シーケンスを変更するとき、記憶部2aはその検出対象シーケンスを符号化した符号値を記憶すればよいため、特に回路の再実装などを行わなくてすみ、デバッグの作業効率が上がる。
(第2の実施の形態)
図3は、第2の実施の形態の半導体装置及びデバッガ装置を含むデバッグシステムの例を示す図である。
デバッグシステムは、半導体装置10とデバッガ装置20を含み、それらは通信ケーブル20bにより接続されている。なお、半導体装置10とデバッガ装置20は無線で通信を行ってもよい。
半導体装置10は、たとえば、SoC(System on Chip)であり、デバッグ回路11とデバッグ対象となるユーザ回路12を有している。
デバッガ装置20は、たとえば、コンピュータであり、作業者20aにより操作され、通信ケーブル20bを介して半導体装置10と通信を行い、デバッグ処理を行う。
(半導体装置)
図4は、半導体装置の一例を示す図である。
半導体装置10は、前述したデバッグ回路11、ユーザ回路12の他、デバッガ装置20から通信ケーブル20bを介して送られてくるデータを受信する受信部13を有している。
デバッグ回路11は、レジスタ11a1〜11ap、レジスタ11b1〜11bp、符号値算出部11c、シフト部11d、第1シーケンス検出部11e、期待値算出部11f、レジスタ11g1〜11gp、判定部11h、OR回路11iを有している。
レジスタ11a1〜11apとレジスタ11b1〜11bpは、第1の実施の形態のデバッグ回路2における記憶部2aの機能を有している。レジスタ11a1〜11apとレジスタ11b1〜11bpの代わりに、RAM(Random Access Memory)を用いてもよい。
レジスタ11a1〜11apは、複数(p個)の検出対象シーケンスのそれぞれにおいて、先頭から最初の1ワードに収まる分のシーケンスを符号化した符号値と、そのワードの先頭から検出対象シーケンスの先頭までバイト数の情報などを記憶する。以下では、この最初の1ワードに収まる分のシーケンスを第1の実施の形態と同様に、シーケンスSaと表記する。
レジスタ11b1〜11bpは、検出対象シーケンスの残りのシーケンスを符号化した符号値と、そのシーケンスの情報などを記憶する。以下では、このシーケンスを第1の実施の形態と同様に、シーケンスSbと表記する。また、以下では、符号値は、CRCで符号化された符号値とするが、これに限定されるものではなく、たとえば、線形性を有する符号値が適用可能である。
図5は、レジスタの格納例を示す図である。
レジスタ11a1には、検出対象シーケンスの識別情報seqID、ワードの先頭から検出対象シーケンスの先頭までバイト数sof、シーケンスSaの長さlen1、シーケンスSaの符号値CRC(Sa)が記憶されている。
レジスタ11b1には、検出対象シーケンスの識別情報seqIDと、シーケンスSbの長さlen2、シーケンスSbの符号値CRC(Sb)が記憶されている。
識別情報seqIDは、符号値CRC(Sa),CRC(Sb)が同じ検出対象シーケンスに含まれるものであることを示すために用いられる。
シーケンスSaの長さlen1はバイト数で表され、w−sofか、検出対象シーケンスの長さn、の何れかである。なお、wは、バイト数で表されるワード長である。
シーケンスSbの長さlen2は、n−w+sofとなる。
なお、検出対象シーケンスは、たとえば、ユーザ回路12に関する信号がどのように遷移したら、ユーザ回路12を停止させるかを指定するものである。ユーザ回路12に関する信号としては、ユーザ回路12の入力データ、出力データ、または内部の信号などである。以下では、検出対象シーケンスは、1つの信号(たとえば、入力データまたは出力データ)の遷移として説明するが、複数の信号の遷移であってもよい。また、ユーザ回路12は、ワード単位でデータ処理を行う回路であるものとする。
符号値算出部11cは、ユーザ回路12における信号のシーケンスをワード単位で取得し、シーケンスによって値が変わる符号値を、バイトごとに、デバッガ装置20で符号値を算出する際の符号化方式と同じ符号化方式(すなわちCRC)で算出する。なお、符号値算出部11cは、図示しないカウンタを有し、取得するデータに含まれるバイトの数をカウントする機能も有する。
たとえば、符号値算出部11cは、以下の式(1)に基づいて、1ワード分のデータから、1ワード分の符号値を同時に計算する。
Figure 2016186707
式(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に記載されている。
シフト部11dは、符号値算出部11cが処理するワードの1つ前のワードの最後のバイトでの符号値を、ワード分の符号値の前に付加して、第1シーケンス検出部11eに供給する。
図6は、シフト部の一例を示す図である。
シフト部11dは、レジスタ11d1とマージ部11d2を有している。
レジスタ11d1は、1ワード分の符号値の最後の符号値を記憶する。
マージ部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)を出力する。
図4において、第1シーケンス検出部11eは、シーケンスSaを検出する。第1シーケンス検出部11eは、あるワード内の最後のバイトでの符号値と、バイト数sofに基づく位置のバイトでの符号値との差分と、レジスタ11a1〜11apに記憶されている符号値との比較結果に基づき検出を行う。また、第1シーケンス検出部11eは、シーケンスSaを検出すると、検出したときの符号値を期待値算出部11fに供給する。
なお、第1シーケンス検出部11eは、1ワードに収まる検出対象シーケンスを検出する機能も有する。
期待値算出部11fは、シーケンスSaが検出されたときの符号値と、レジスタ11b1〜11bpに記憶されている符号値とに基づき、検出対象シーケンスの終了時における、符号値算出部11cで算出される符号値の期待値を算出する。
レジスタ11g1〜11gpは、期待値算出部11fで算出された、複数の検出対象シーケンスのそれぞれに対応する期待値を記憶する。
図7は、レジスタへの期待値の格納例を示す図である。
レジスタ11g1には、検出対象シーケンスSの識別情報seqID、シーケンスSbの長さlen2、符号値CRC(X&S)が記憶されている。なお、Xは未知のシーケンスであり、符号値CRC(X&S)は、未知のシーケンスの後に検出対象シーケンスSが続くときに得られる符号値の期待値を示している。
判定部11hは、シフト部2cから出力される符号値(バイトカウント値が0のバイトから順次更新されている符号値(以下符号値の絶対値と呼ぶ場合もある))と、レジスタ11g1〜11gpに記憶されている期待値とを比較する。そして、判定部11hは、符号値の絶対値が、レジスタ11g1〜11gpに記憶されている何れかの期待値が一致したときに、検出対象シーケンスを検出した旨の信号を出力し、たとえば、デバッグ対象であるユーザ回路12の動作を停止させる。
OR回路11iは、第1シーケンス検出部11eで、ワード長に収まる検出対象シーケンスが検出されたとき、または、判定部11hでワード長を超える検出対象シーケンスが検出されたとき、1を出力する。
第1シーケンス検出部11e、期待値算出部11f、判定部11hでの処理例については、後述する。
(デバッガ装置20)
図8は、デバッガ装置のハードウェア例を示す図である。
デバッガ装置20は、コンピュータであり、プロセッサ21によって装置全体が制御されている。プロセッサ21には、バス29を介してRAM22と複数の周辺機器が接続されている。プロセッサ21は、マルチプロセッサであってもよい。プロセッサ21は、たとえばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ21は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM22は、デバッガ装置20の主記憶装置として使用される。RAM22には、プロセッサ21に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM22には、プロセッサ21による処理に必要な各種データが格納される。
バス29に接続されている周辺機器としては、HDD(Hard Disk Drive)23、グラフィック処理装置24、入力インタフェース25、光学ドライブ装置26、機器接続インタフェース27及びネットワークインタフェース28がある。
HDD23は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行う。HDD23は、デバッガ装置20の補助記憶装置として使用される。HDD23には、OSのプログラム、アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置24には、モニタ24aが接続されている。グラフィック処理装置24は、プロセッサ21からの命令にしたがって、デバッグ結果などの画像をモニタ24aの画面に表示させる。モニタ24aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース25には、キーボード25aとマウス25bとが接続されている。入力インタフェース25は、キーボード25aやマウス25bから送られてくる信号をプロセッサ21に送信する。なお、マウス25bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置26は、レーザ光などを利用して、光ディスク26aに記録されたデータの読み取りを行う。光ディスク26aは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク26aには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース27は、デバッガ装置20に周辺機器を接続するための通信インタフェースである。たとえば機器接続インタフェース27には、メモリ装置27aやメモリリーダライタ27bを接続することができる。メモリ装置27aは、機器接続インタフェース27との通信機能を搭載した記録媒体である。メモリリーダライタ27bは、メモリカード27cへのデータの書き込み、またはメモリカード27cからのデータの読み出しを行う装置である。メモリカード27cは、カード型の記録媒体である。
また、機器接続インタフェース27は、通信ケーブル20bを介して半導体装置10に接続されている。
ネットワークインタフェース28は、ネットワーク28aに接続されている。ネットワークインタフェース28は、ネットワーク28aを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態のデバッガ装置20の処理機能を実現することができる。なお、第1の実施の形態のデバッガ装置4も、図8に示したデバッガ装置20と同様のハードウェアにより実現することができる。
デバッガ装置20は、たとえばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。デバッガ装置20に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、デバッガ装置20に実行させるプログラムをHDD23に格納しておくことができる。プロセッサ21は、HDD23内のプログラムの少なくとも一部をRAM22にロードし、プログラムを実行する。またデバッガ装置20に実行させるプログラムを、光ディスク26a、メモリ装置27a、メモリカード27cなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ21からの制御により、HDD23にインストールされた後、実行可能となる。またプロセッサ21が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
(デバッグ方法)
以下、上記の半導体装置10及びデバッガ装置20を用いたデバッグ方法の一例を説明する。
図9は、デバッガ装置による設定処理の一例の流れを示すフローチャートである。
デバッガ装置20は、たとえば、作業者20aによるキーボード25aやマウス25bの操作などによって入力される1または複数の検出対象シーケンスを取得する(ステップS10)。
検出対象シーケンスは、ワードの先頭から始まらないものも含む。たとえば、ユーザ回路12が、1ワードが8バイトのPCIexpressのトランザクション層パケットを処理する回路である場合を考える。
図10は、パケットの一例を示す図である。
図10に示されているワード(Word1,Word2)うち、たとえば、パケット種別(Fmt)、デバイス番号(devid)、書き込みアドレス(Addr)のフィールドが、検出対象シーケンスとして指定される。属性(attr)、長さ(length)、書き込み値(Data)などは、たとえば、動作環境で変動するため検出対象シーケンスとして指定されない。
たとえば、特定のデバイス番号を検出したいときには、devidは、“Byte offset”が+4、すなわち、5バイト目から始まるため、検出対象シーケンスは、Word1内の5バイト目から始まる。
検出対象シーケンスの取得後、デバッガ装置20は、検出対象シーケンスが1ワードに収まらないときには、検出対象シーケンスをシーケンスSaと残りのシーケンスSbに分割する(ステップS11)。
さらに、デバッガ装置20は、シーケンスSaとシーケンスSbをそれぞれCRCで符号化した符号値を算出する(ステップS12)。ステップS12の処理では、デバッガ装置20は、シーケンスSaの始めの信号(入力データまたは出力データ)から、符号値を算出し、後続の信号によって符号値を更新していく。シーケンスSaの最後の信号による符号値の更新が終わると、そのときの符号値がシーケンスSaによる符号値となる。後続部のシーケンスSbについても同様に処理されて、符号値が算出される。
デバッガ装置20は、ステップS12の処理で算出した符号値を、検出対象シーケンスの識別番号、ワードの先頭から検出対象シーケンスの先頭までのバイト数sof、シーケンスSa,Sbの長さとともに、半導体装置10に送信する(ステップS13)。これによりデバッガ装置20による設定処理が終了する。
図11は、半導体装置による処理の一例の流れを示すフローチャートである。
半導体装置10は、デバッガ装置20から送信された符号値などの情報を受信部13で受信する(ステップS20)。そして、半導体装置10の図示しない制御部は、受信した情報を、図5に示したように、レジスタ11a1〜11ap,11b1〜11bpに設定(記憶)する(ステップS21)。
その後、半導体装置10の図示しない制御部は、デバッグ対象のユーザ回路12に動作を開始させる(ステップS22)。
ユーザ回路12の動作開始後、デバッグ回路11の符号値算出部11cは、図示しないクロックの各タイミングで、ユーザ回路12の入力データxまたは出力データyに基づき、CRCで符号値を算出(更新)する(ステップS23)。このとき、符号値算出部11cは、前述した式(1)にしたがって、ワード単位で符号値を算出する。
その後、第1シーケンス検出部11eは、レジスタ11a1〜11apに記憶された情報を読み出し、シーケンスSaの検出を行う(ステップS24)。
第1シーケンス検出部11eは、検出対象シーケンスが1ワードに収まらないとき、すなわち、n>w−sofのとき、以下の処理を行う。
図12は、ユーザ回路の信号が、1ワードに収まらない検出対象シーケンスを含むシーケンスで遷移する例を示す図である。
図12では、バイトカウント値0から開始されたシーケンスの一例が示されている。あるシーケンスXの後に検出対象シーケンスSが続いている。また、図12では、符号値算出部11cで算出される符号値の例が示されている。シーケンスXの最後で算出される符号値はCRC(X)、ワードW1の途中から始まるシーケンスSaの最後で算出される符号値はCRC(X&Sa)、シーケンスSb(任意長)の最後で算出される符号値はCRC(X&S)である。
なお、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であるシーケンスを示している。
また、式(2)において、CRC(X&0m)+CRC(0k&Sa)=CRC(X&0m)+CRC(Sa)であるのは、CRCの性質から、初期状態から連続する0は、その個数によらず、CRCの値に影響しないためである。
第1シーケンス検出部11eは、シフト部11dから供給される符号値のうち、ワード内の最後のバイトでの符号値と、ワードの先頭バイトからsof−1バイト分後ろのバイトでの符号値との差分に基づく以下の条件式が成立するか否かを評価する。
a(j+w−1)−H(w−sof)・a(j+sof−1)=CRC(Sa) (3)
ここで、jはワードの先頭バイトでのバイト数(バイトカウント値)を示している。
第1シーケンス検出部11eは、上記のようなCRC差分(CRCで符号化された符号値の変化分)に基づく式(3)が成立するか否かを判定することで、シーケンスSaを検出したか否かを判定する(ステップS25)。
図13は、シーケンスSaの検出例を示す図である。
図13の例では、ワードW1の先頭のバイトでのバイトカウント値がjとなっている。
式(3)が成立するとき、図13に示すように、符号値a(j+sof−1)は、CRC(X)となり、符号値a(j+w−1)は、C(X&Sa)となり、バイトカウント値がj+w−1のときに、シーケンスSaが検出されたことになる。
したがって、上記式(3)が成立するとき、第1シーケンス検出部11eは、シーケンスSaが検出されたと判定し、バイトカウント値がj+w−1のときの符号値a(j+w−1)を期待値算出部11fに送る。
一方、ステップS24の処理において、第1シーケンス検出部11eは、検出対象シーケンスが1ワードに収まるとき、すなわち、n≦w−sofのとき、以下の処理を行う。
図14は、ユーザ回路の信号が、1ワードに収まる検出対象シーケンスを含むシーケンスで遷移する例を示す図である。
図14では、バイトカウント値0から開始されたシーケンスの一例が示されている。図12、図13の場合と異なり、図14の例では、あるシーケンスXの後にワードW1に収まる検出対象シーケンスSが続いている。このときシーケンスSaは検出対象シーケンスSと等しい。また、図14でも、符号値算出部11cで算出される符号値の例が示されている。シーケンスXの最後で算出される符号値はCRC(X)、シーケンスSa(検出対象シーケンスS)の最後で算出される符号値はCRC(X&Sa)である。
第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で表せる。
第1シーケンス検出部11eは、上記のようなCRC差分(CRCで符号化された符号値の変化分)に基づく式(4)が成立するか否かを判定することで、ワードに収まる検出対象シーケンスSも検出できる。
図15は、ワードに収まる検出対象シーケンスSの検出例を示す図である。
式(4)が成立するとき、図15に示すように、符号値a(j+sof−1)は、CRC(X)となり、符号値a(j+eof)は、CRC(X&Sa)となる。そのため、バイトカウント値がj+eofのときに、シーケンスSa、すなわちこの場合、検出対象シーケンスSが検出されたことになる。
図11のフローチャートには示されていないが、上記式(4)が成立するとき、第1シーケンス検出部11eは、検出対象シーケンスSが検出されたと判定し、“1”となる信号をOR回路11iに出力し、後述のステップS29の処理が行われる。
シーケンスSaが検出されないとき、すなわち、式(3)または式(4)が成立しないときは、ステップS23からの処理が繰り返される。
期待値算出部11fは、図13に示したような符号値a(j+w−1)を受けると、期待値の算出を行う(ステップS26)。
図16は、検出対象シーケンスSの検出用の期待値の算出例を示す図である。
上記のように、シーケンスSa検出時の符号値は、a(j+w−1)=CRC(X&Sa)となっている。シーケンスSaに引き続いてシーケンスSbが発生するとき、バイトカウント値がj+n+sof−1のとき、符号値の期待値b(j+n+sof−1)であるCRC(X&S)は、以下の式で与えられる。
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の何れかに記憶されているものである。
したがって、期待値算出部11fは、シーケンスSaと同じ識別情報seqIDをもつシーケンスSbの符号値をレジスタ11b1〜11bpの何れかから読み出して、上記の式(5)により期待値を算出する。
その後、符号値算出部11cによる符号値の更新が行われ(ステップS27)、判定部11hは、符号値算出部2bから出力される符号値と、期待値とが一致したときに、検出対象シーケンスを検出した旨を示す信号を出力する。
図17は、検出対象シーケンスの検出例を示す図である。
シーケンスSbの終わりは、シーケンスSaを検出してから(n−w+sof)バイト後である。それは、シーケンスSaを検出してから、(n−w+sof)/w(小数点以下は切り上げ)ワード目の先頭からeofxバイト目である。eofxは、シーケンスSbの長さとワード長との関係から算出できる。図17に示されている例では、ワードWxの先頭バイトのバイトカウント値をjとしている。
したがって、判定部11hは、バイトカウント値=j+eofxでの符号値a(j+eofx)が式(5)で求めたCRC(X&S)と等しいか否かを判定する(ステップS28)。
バイトカウント値=j+eofxでの符号値a(j+eofx)が、CRC(X&S)と一致するときには、判定部11hは、“1”を出力し、デバッグ対象であるユーザ回路12の動作を停止させる(ステップS29)。以上で、ある検出対象シーケンスの検出時のユーザ回路12の停止処理が終わる。
判定部11hは、たとえば、“1”を出力してユーザ回路12へクロック信号の供給を停止することで、ユーザ回路12の動作を停止する。また、判定部11hは、ユーザ回路12へのデータの入力またはユーザ回路12からのデータの出力を遮断して、ユーザ回路12が停止しているように扱うようにしてもよい。
その後は、たとえば、デバッガ装置20により、ユーザ回路12の各部の信号の様子を調査するなどのデバッグ作業が行われる。
バイトカウント値=j+eofxでの符号値a(j+eofx)がCRC(X&S)と一致しないときには、判定部11hは、検出対象シーケンスSが検出されなかったと判定し、再度ステップS23からの処理を繰り返す。
以上のような半導体装置10、デバッグ回路11及びデバッガ装置20によれば、第1の実施の形態の半導体装置1、デバッグ回路2及びデバッガ装置4と同様の効果が得られる。また、複数の検出対象シーケンスのそれぞれのシーケンスSaとシーケンスSbの符号値に基づきユーザ回路12の停止処理を行うことが可能であり、複数の停止条件でユーザ回路12を停止できる。
(第1シーケンス検出部11eの回路例)
ところで、図4に示した第1シーケンス検出部11eは、式(3)、式(4)で示したように、ワード内の任意のバイト間でのCRC差分に基づく判定を行う可能性がある。ワードのバイト数をwとすると、最大w/2(w+1)個の判定条件を評価することになる。
たとえば、第1シーケンス検出部11eは以下のような回路を用いて実現される。
図18は、第1シーケンス検出部の一例を示す図である。
CRC−1〜CRC7は、w=8としたときの、シフト部11dの出力である符号値a(j−1)〜a(j+7)を示している。第1シーケンス検出部11eは、複数の乗算器と減算器を有している。
たとえば、第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)が算出される。
a(j+7)−H(8)・a(j−1)は、第1シーケンス検出部11e内の図示しない比較回路により、たとえば、レジスタ11a1に格納された符号値CRC(Sa)と比較される。そして、これらが一致したら、シーケンスSaが検出されたとみなされ、符号値a(j+7)が期待値算出部11fに供給される。
また、図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が検出される。
同様に1ワードに収まる複数の検出対象シーケンスについても同時に検出できる。
また、第1シーケンス検出部11eは、シーケンスSaを検出する際に、図18に示したような回路を用いて、シーケンスSaの他、シーケンスSaに含まれる1または複数のシーケンスの検出ができたときに、シーケンスSaが検出されたと判定してもよい。
図19は、シーケンスSaの検出例を示す図である。
“Byte offset”は、ワードの先頭バイトの位置を0としたときのバイトの位置を示している。“Byte offset”=0は、バイトカウント値=jに相当する。各バイト位置(−1〜+7)のバイトの符号値は、a(j−1)〜a(j+7)と示されている。
第1シーケンス検出部11eは、符号値a(j+2),a(j+7)の差分と、CRC(Sa)との比較結果に基づきシーケンスSaを検出する際、シーケンスSaの他、シーケンスSaに含まれる1または複数のシーケンスの検出を行う。
たとえば、シーケンスSa内の各バイト間の符号値の差分が、シーケンスSaに含まれるシーケンスSaa,Sab,Sac,Sadの符号値に対応するか否か判定する。なお、シーケンスSaa〜Sadの符号値は、デバッガ装置20によって算出され、たとえば、予めデバッグ回路11のレジスタ11a1に記憶されているものとする。
そして、第1シーケンス検出部11eは、全ての差分が、シーケンスSaa〜Sadの符号値に対応していると判定したときに、シーケンスSaが検出されたと判定する。
CRCはビット数が決まっているため、異なる複数のシーケンスで、同じCRC値が算出される可能性がある。しかし、上記のように、シーケンスSaの検出時、シーケンスSaに含まれる1または複数のシーケンスについても検出することで、検出対象シーケンスのシーケンスSaとは異なるシーケンスを誤って検出する可能性を減らせる。
なお、1ワードに収まる複数の検出対象シーケンスについても、同様の処理を行うことで、誤って異なるシーケンスを検出する可能性を減らせる。
ところで、図18に示したような第1シーケンス検出部11eで、ハミング行列を用いた乗算を行う乗算器の面積は比較的大きいため、以下のように乗算の数を減らすことで、小面積化が可能となる。
たとえば、シーケンスSaまたはワードに収まる検出対象シーケンスである4つのシーケンスSXa,SXb,SXc,SXdを検出する場合を考える。
図20は、4つのシーケンスの例を示す図である。
図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)が成立するときに検出される。
また、シーケンスSXcは、a(j+5)−H(2)・a(j+3)=CRC(SXc)が成立するときに検出され、シーケンスSXdは、a(j+7)−H(4)・a(j+3)=CRC(SXd)が成立するときに検出される。
なお、CRC(SXa)〜CRC(SXd)は、レジスタ11a1〜11apの何れか4つに格納されているシーケンスSXa〜SXdの符号値である。
この例では、ハミング行列H(8),H(4),H(2)の乗算が合計4回行われる。
乗算回数を減らすために、たとえば、以下のようにシフト部11dから出力される符号値にH(k)を乗じた値(ただし、k=w−(Byte offset+1))が用いられる。
図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)はそのままである。
このような符号値を用いた場合、シーケンス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)}が成立するときに検出される。
シーケンス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)が成立するときに検出される。
この場合、シーケンス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に記憶しておけばよいため、乗算器の数は増加しない。
上記の式を実現する第1シーケンス検出部11ea(図18の第1シーケンス検出部11eと区別するために符号を変えている)は、たとえば、以下のような回路となる。
図22は、第1シーケンス検出部の他の例を示す図である。
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つの乗算器を有している。
たとえば、シーケンスSXa〜SXdを検出する際には、乗算器40にて{H(8)・a(j−1)}、乗算器41にて{H(5)・a(j+2)}、乗算器42にて{H(4)・a(j+3)}がそれぞれ算出される。
図18に示した第1シーケンス検出部11eでは、乗算器がw(w+1)/2個含まれていたが、図22に示した第1シーケンス検出部11eaでは、乗算器の数をw個(図22の例ではw=8)に減らすことができ、小面積化できる。
(符号値算出部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)は以下の式で表現できる。
Figure 2016186707
式(6)において、Iは単位行列を表している。
ところで、符号値算出部11cは、前述したように式(1)により、符号値a(j)〜a(j+w−1)を算出する。ここで、式(1)と式(6)は以下の式(7)のように簡略化できる。
Figure 2016186707
符号値算出部11cは、このような式(7)を実現する回路とすることで、シフト部11dの機能も実現することができる。また、式(7)の行列は上三角行列であり、非零要素の個数は、式(1)と同等であるため、シフト部11dの機能をもたせたとしても、乗算回路の増加は少ない。
(バイト数sof設定の変形例)
上記の説明では、ワードの先頭から検出対象シーケンスの先頭までのバイト数sof(開始オフセット)が予め指定されているものとした。しかし、開始オフセットは指定されていなくてもよい。開始オフセットは、ワード長によって取りうる値が決まるので、たとえば、デバッガ装置20は、ワード長に応じた数の開始オフセットを設定し、各開始オフセットの値に対応した、シーケンスSa,Sbの符号値を算出すればよい。これらの値は、デバッグ回路11のレジスタ11a1〜11ap,11b1〜11bpに設定され、検出対象シーケンスの検出に用いられる。
図23は、開始オフセットが未指定のときのレジスタの格納例を示す図である。
レジスタ11a1には、開始オフセットであるw個のバイト数sof1〜sofwが記憶されている。バイト数sof1〜sofwは、0(オフセットなし)〜w−1バイトである。さらに、レジスタ11a1には、バイト数sof1〜sofwのそれぞれに対応したシーケンスSa1〜Sawの長さlen11〜len1wとシーケンスSa1〜Sawの符号値CRC(Sa1)〜CRC(Saw)が記憶されている。
レジスタ11b1には、バイト数sof1〜sofwのそれぞれに対応した、シーケンスSb1〜Sbwの長さlen21〜len2wと、シーケンスSb1〜Sbwの符号値CRC(Sb1)〜CRC(Sbw)が記憶されている。
第1シーケンス検出部11eは、CRC(Sa1)〜CRC(Saw)を用いてシーケンスSa1〜Sawを検出し、シーケンスSa1〜Sawを検出する。期待値算出部11fは、検出されたシーケンスSa1〜Sawの何れかに対応したシーケンスSb1〜Sbwの符号値CRC(Sb1)〜CRC(Sbw)を用いて、前述した期待値を算出する。
これによって、開始オフセットが未指定の検出対象シーケンスについても検出が可能となる。
以上、実施の形態に基づき、本発明のデバッグ回路、半導体装置及びデバッグ方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
1 半導体装置
2 デバッグ回路
2a 記憶部
2b 符号値算出部
2c シフト部
2d 第1シーケンス検出部
2e 期待値算出部
2f 判定部
2g OR回路
3 デバッグ対象回路
4 デバッガ装置
Sa,Sb,X シーケンス
Wa,Wb,W1 ワード
sof バイト数

Claims (9)

  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の符号値と、前記期待値とが一致したときに前記検出対象シーケンスを検出した旨を示す信号を出力する、
    ことを特徴とするデバッグ方法。
JP2015066456A 2015-03-27 2015-03-27 デバッグ回路、半導体装置及びデバッグ方法 Active JP6477134B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015066456A JP6477134B2 (ja) 2015-03-27 2015-03-27 デバッグ回路、半導体装置及びデバッグ方法
US15/019,358 US10024911B2 (en) 2015-03-27 2016-02-09 Debug circuit, semiconductor device, and debug method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015066456A JP6477134B2 (ja) 2015-03-27 2015-03-27 デバッグ回路、半導体装置及びデバッグ方法

Publications (2)

Publication Number Publication Date
JP2016186707A true JP2016186707A (ja) 2016-10-27
JP6477134B2 JP6477134B2 (ja) 2019-03-06

Family

ID=56975124

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015066456A Active JP6477134B2 (ja) 2015-03-27 2015-03-27 デバッグ回路、半導体装置及びデバッグ方法

Country Status (2)

Country Link
US (1) US10024911B2 (ja)
JP (1) JP6477134B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6354489B2 (ja) * 2014-09-22 2018-07-11 富士通株式会社 デバッグ回路、半導体装置及びデバッグ方法
US10698805B1 (en) * 2017-01-25 2020-06-30 Cadence Design Systems, Inc. Method and system for profiling performance of a system on chip
US10949586B1 (en) * 2020-07-01 2021-03-16 Xilinx, Inc. Post-synthesis insertion of debug cores
US20220407813A1 (en) * 2021-06-16 2022-12-22 Ampere Computing Llc Apparatuses, systems, and methods for implied sequence numbering of transactions in a processor-based system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05210534A (ja) * 1992-01-31 1993-08-20 Sofuia Syst:Kk 命令フェッチ・トリガ回路
JPH103404A (ja) * 1996-06-19 1998-01-06 Nec Ibaraki Ltd ハードウェアのデータ採取方法および装置
JP2006113906A (ja) * 2004-10-15 2006-04-27 Canon Inc バス監視装置及びバス監視装置付きコントローラ
WO2008020513A1 (fr) * 2006-08-14 2008-02-21 Nec Corporation débogueur et procédé de débogage

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4414669A (en) 1981-07-23 1983-11-08 General Electric Company Self-testing pipeline processors
US4569049A (en) 1983-05-09 1986-02-04 Digital Equipment Corp. Diagnostic system for a digital computer
US5611043A (en) 1994-03-18 1997-03-11 Borland International, Inc. Debugger system and method for controlling child processes
JP3343201B2 (ja) 1997-06-12 2002-11-11 株式会社日立製作所 復号回路および情報処理装置
US6591390B1 (en) * 2000-04-11 2003-07-08 Texas Instruments Incorporated CRC-based adaptive halting turbo decoder and method of use
US20020144235A1 (en) 2001-03-30 2002-10-03 Charles Simmers Debugging embedded systems
JP3554715B2 (ja) 2001-07-31 2004-08-18 アンリツ株式会社 誤り検出装置
TW526411B (en) 2001-08-17 2003-04-01 Mediatek Inc Debugging device
DE10349933B4 (de) * 2003-10-24 2008-03-27 Infineon Technologies Ag Auswerteschaltung und Verfahren zum Feststellen und/oder zum Lokalisieren fehlerhafter Datenworte in einem Datenstrom
TWI346867B (en) 2005-11-25 2011-08-11 Hon Hai Prec Ind Co Ltd Mistakes tracing device and method for optical disc drive
US20070226702A1 (en) * 2006-03-22 2007-09-27 Rolf Segger Method for operating a microcontroller in a test environment
US8856600B2 (en) 2012-06-21 2014-10-07 Breakingpoint Systems, Inc. JTAG-based programming and debug
JP6354489B2 (ja) * 2014-09-22 2018-07-11 富士通株式会社 デバッグ回路、半導体装置及びデバッグ方法
JP6458626B2 (ja) * 2015-05-07 2019-01-30 富士通株式会社 デバッグ回路、半導体装置及びデバッグ方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05210534A (ja) * 1992-01-31 1993-08-20 Sofuia Syst:Kk 命令フェッチ・トリガ回路
JPH103404A (ja) * 1996-06-19 1998-01-06 Nec Ibaraki Ltd ハードウェアのデータ採取方法および装置
JP2006113906A (ja) * 2004-10-15 2006-04-27 Canon Inc バス監視装置及びバス監視装置付きコントローラ
WO2008020513A1 (fr) * 2006-08-14 2008-02-21 Nec Corporation débogueur et procédé de débogage

Also Published As

Publication number Publication date
JP6477134B2 (ja) 2019-03-06
US10024911B2 (en) 2018-07-17
US20160282413A1 (en) 2016-09-29

Similar Documents

Publication Publication Date Title
US9767292B2 (en) Systems and methods to identify security exploits by generating a type based self-assembling indirect control flow graph
JP6477134B2 (ja) デバッグ回路、半導体装置及びデバッグ方法
CN111124926B (zh) 模糊测试方法、装置、电子设备及存储介质
US20110154299A1 (en) Apparatus and method for executing instrumentation code
CN112597064B (zh) 对程序进行仿真的方法、电子设备及存储介质
CN111611767B (zh) 验证方法和装置
JP6458626B2 (ja) デバッグ回路、半導体装置及びデバッグ方法
CN113342671B (zh) 对运算模块进行验证的方法、装置、电子设备和介质
JP6354489B2 (ja) デバッグ回路、半導体装置及びデバッグ方法
CN113283203A (zh) 用于仿真逻辑系统设计的方法、电子设备及存储介质
JP5979966B2 (ja) 回路設計支援装置及び回路設計支援方法及びプログラム
JP6471615B2 (ja) 性能情報生成プログラム、性能情報生成方法及び情報処理装置
JP6318976B2 (ja) デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
US10783293B2 (en) Circuit design system, checking method, and non-transitory computer readable medium thereof
CN112506806B (zh) 用于调试程序的方法、电子设备及存储介质
GB2573417A (en) Scale calculation device and scale calculation program
CN114968751A (zh) 一种无代码开发平台的程序调试方法和程序调试装置
JP5550578B2 (ja) エントリ書換装置及びエントリ書換プログラム
CN112989736B (zh) 用于检测修改设计的错误实例的方法、设备及存储介质
CN115470737B (zh) 生成数据流图的方法、电子设备及存储介质
US10534691B2 (en) Apparatus and method to improve accuracy of performance measurement for loop processing in a program code
JP2019159482A (ja) 情報処理装置,プログラム及び情報処理方法
JP2008176485A (ja) 再構成可能な論理デバイスおよびそのデバッグシステム
JPWO2018163387A1 (ja) 解析装置、解析方法及び解析プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181126

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190121

R150 Certificate of patent or registration of utility model

Ref document number: 6477134

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150