JP5059532B2 - 半導体集積回路 - Google Patents

半導体集積回路 Download PDF

Info

Publication number
JP5059532B2
JP5059532B2 JP2007249083A JP2007249083A JP5059532B2 JP 5059532 B2 JP5059532 B2 JP 5059532B2 JP 2007249083 A JP2007249083 A JP 2007249083A JP 2007249083 A JP2007249083 A JP 2007249083A JP 5059532 B2 JP5059532 B2 JP 5059532B2
Authority
JP
Japan
Prior art keywords
register
macro
debugger
signal
state
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.)
Expired - Fee Related
Application number
JP2007249083A
Other languages
English (en)
Other versions
JP2009080632A (ja
Inventor
周市 国江
広喜 町村
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2007249083A priority Critical patent/JP5059532B2/ja
Priority to US12/232,073 priority patent/US8429615B2/en
Priority to GB0817218A priority patent/GB2453224B/en
Priority to CN200810161064.4A priority patent/CN101403989B/zh
Publication of JP2009080632A publication Critical patent/JP2009080632A/ja
Application granted granted Critical
Publication of JP5059532B2 publication Critical patent/JP5059532B2/ja
Priority to US13/866,920 priority patent/US20130238948A1/en
Expired - Fee Related 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/3177Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

本発明は半導体集積回路に関し、特に制御信号を受信するマクロを含む半導体集積回路に関する。
プログラムのデバッグを行うデバッガは、従来、プログラムの実行履歴情報を取得しておき、デバッグが異常終了した後に実行履歴情報の参照・解析を行い、プログラムの実行状況を把握していた。この方法では、ユーザはデバッグが異常終了した時点でのデータは容易に取得することができる。しかし、デバッグが異常終了するに至るまでの情報については、ユーザが考察する必要がある。そこで、特許文献1には、プログラム実行時に実行履歴情報を出力する機能と、後からプログラムの実行を行なうために必要とするデバッグ情報を取得する機能と、実行履歴情報とデバッグ情報を関連付けるための情報を出力する機能を有する情報取得機能を有し、情報取得機能により取得した情報を使用して、任意の実行履歴情報出力時の状態を再現してプログラムを再実行するデバッグ方法が開示されている。特許文献1では、デバッグの異常終了の原因の特定が情報取得機能により取得した情報の使用により容易となる。
また、デバッグ専用の特別なハードウェアを付加することなく、複数のブレークポイントを設定することで、デバッグ効率の向上を図ったマルチプロセッサシステムが特許文献2に開示されている。このマルチプロセッサシステムでは、ブレークポイントの設定に関して、ブレークポイント設定テーブルを用いて、複数のCPUにおいてブレークポイント発生条件を個別に設定できるようにし、それらの条件がすべて満たされ、かつ、ブレークポイント設定テーブルとブレークポイント履歴テーブルとが一致した場合にデバッグ対象プログラムの実行を中断し、デバッガプログラムを呼び出すようにしている。
特開2004−252684号公報 特開2005−352591号公報
しかしながら、上記従来技術には以下の課題がある。あるマクロを対象としてデバッガがデバッグを行っている際に、このデバッガ以外の他の要因によって、デバッグの対象であるマクロの状態が遷移したとする。マクロの状態とは、例えばこのマクロの内部信号や出力信号などをいう。例えばデバッグの対象であるマクロ以外の他のマクロがデバッグ対象マクロにリセット信号などの制御信号を送信し、この制御信号を受信したデバッグ対象マクロが状態遷移した場合が考えられる。この場合、デバッガがデバッグを行っているにも関わらず、デバッグの対象であるマクロの状態が遷移したことになる。そうすると、デバッガはデバッグの実行中に実行すべきプログラムの位置を見失い、異常終了(ハングアップ)してしまう。これは、デバッガが、デバッガ以外の他の要因が送信する制御信号などの外部要因を知ることができないためである。
例えば複数のマスタを有する実際のシステムでは、マスタである複数のマクロの中でもマスタとスレーブの関係が生じる。したがって、これら複数のマクロの中におけるマスタが、これら複数のマクロの中におけるスレーブのリセットを行なう場合がある。ゆえに、デバッガがこれらのマクロのデバッグを行う場合、プログラムにデバッグ中にアクティブになるマスタからスレーブへのリセットを禁止する設定が必要になる。このような設定は本来のソフトウェアプログラムのシーケンスから外れたものである。
本発明に係る半導体集積回路は、制御信号の受信に応答して一の状態になるマクロと、前記マクロが特定時点で前記一の状態であるか否かを記憶する第1レジスタと、前記マクロが前記特定時点より前に前記制御信号を受信して前記一の状態になったことがあるか否かを記憶して、前記特定時点まで保持する第2レジスタと、を有し、前記特定時点において前記第1レジスタが記憶している状態、及び、前記特定時点において前記第2レジスタが記憶している状態、の両方が前記半導体集積回路の外部の外部装置に参照されることを特徴とする。例えば、デバッガがこのマクロを対象としてデバッグを行っている際、このデバッガ以外の他の要因によって当該マクロの状態が遷移し、デバッガはデバッグを継続することができなくなったとする。このとき、デバッガは、第1レジスタおよび第2次レジスタを参照することにより、デバッグを継続することができなくなった原因を知ることができ、その原因に応じた処理を行うことができる。例えば、デバッガは、第1レジスタおよび第2レジスタを参照し、デバッグ対象であるマクロが過去に制御信号を受信して、デバッガが検知しない状態遷移を行ったことを知ることができる。この場合、デバッガは、デバッグ対象であるマクロが過去に状態遷移を行ったことに鑑みて、デバッグの再開に必要な処理を行い再びデバッグを開始することができる。例えばデバッガは、自身が有するデバッグ対象マクロの情報と、他のマクロが送信した制御信号により状態遷移した後のデバッグ対象マクロの情報との整合を図るための処理を行う。係る処理の完了後、デバッガは、デバッグ対象マクロのデバッグを再開することができる。また例えば、デバッガは、他のマクロがデバッグ対象のマクロに制御信号を送信中であって、デバッグ対象マクロの状態が係る制御信号に基づく状態に固定されていることも知ることができる。この場合、デバッガは、他のマクロがデバッグ対象マクロに対する制御信号の送信を停止するのを待つとともに、他のマクロがデバッグ対象マクロへの制御信号の送信を停止した後にデバッグの再開に必要な処理を行い再びデバッグを開始することができる。


本発明によれば、デバッガがデバッグを行っているマクロの状態が当該デバッガ以外の要因で変化し、デバッガがデバッグを継続できなくなった場合においても、デバッガは異常終了することなくデバッグを再開することができる。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。なお、以下の説明では適宜、具体的な例を用いて当該実施の形態の説明を行うが、係る具体的な例は本発明の権利範囲を限定するものではない。
図1は、本実施の形態にかかる半導体集積回路を示す図である。デバッガ10は半導体集積回路20に対してJTAG信号やリセット信号nSRSTを半導体集積回路20に対して制御信号を送信し、マクロのデバッグを行う。ここでJTAG信号とは、IEEE1149.1のJTAG規格で定められている信号であり、TCK、TMS、TDI、TDO、nTRSTの5つの信号をいう。nSRST信号は、CPUデバッグ用のリセット信号である。これらの信号に基づく種々の動作は後述する。半導体集積回路20は、マスタとして機能するとともにリセット信号RST1ないしRST3を出力する複数のマクロ21ないし23、端子41ないし44を介してJTAG信号を受信するとともにリセット信号RST4を出力するデータレジスタ24、同じくJTAG信号を受信し、受信したJTAG信号に基づきデータレジスタ24などの制御を行うTAP25、RST1ないし3を受信するANDゲート26、ANDゲート26の出力を受信するとともに、データレジスタ25からのリセット信号RST4を受信するANDゲート27、ANDゲート27の出力およびデバッガ10が出力するnSRST信号受信するとともに、端子47を介して半導体集積回路20が受信する外部からのリセット信号を受信するANDゲート28を有するSOC(System on chip)である。ANDゲート28はリセット信号RST5を出力する。
ここで、図1の半導体集積回路20が有するマクロ29ないし31は、それぞれマクロ21ないし23と同一である。マクロ21ないし23はそれぞれマスタとして機能するマクロであるが、マクロ21ないし23のいずれかに対するスレーブとして機能するマクロにもなる。マスタであるマクロ21が同じくマスタであるマクロ22やマクロ23に対して制御信号、例えばマクロ22やマクロ23をリセット状態にするリセット信号を送信する場合もある。これを、図1は、マクロ21がローアクティブであるリセット信号RST1を出力し、このリセット信号RST1がANDゲート回路26ないし28を介してマクロ22と同一のマクロを示すマクロ30あるいはマクロ23と同一のマクロを示すマクロ31に到達することで表現する。マクロ22とマクロ30は同一であって、マクロ23とマクロ31は同一であるからである。また、マクロ21は自分自身を制御する場合がある。自らを上述のリセット状態にする場合がある。これを、図1は、マクロ21がRST1信号を出力し、このRST1信号がANDゲート26ないし28を介してマクロ29に到達することで表現する。マクロ21とマクロ29は同一のマクロを表しているからである。なお、ここでいうリセット状態は、マクロの内部信号や出力信号などの特定の一状態(ハイレベル又はローレベル)を示す。マクロがアクティブな信号値を示すリセット信号を受信している場合、マクロの内部信号や出力信号はアクティブなリセット信号に対応した状態を保ち続ける。
図1に示すTAP25は、IEEE1149.1のJTAG規格に基づく動作を行う制御部であり、TAPコントローラ251と命令レジスタ252とを有する。TAPコントローラ251はデバッガから、JTAG信号の内のTCK、TMS、nTRSTを受信する。TCKはクロック信号であり、TAPコントローラ251はこのTCKに同期して動作する。TMSはTAPコントローラ251の具体的な動作を制御する信号である。TAPコントローラ251は、TCKの立ち上がりでデバッガが出力するTMSを取得する。命令レジスタ252は、JTAG信号の内、TDI信号とTDO信号を受信する。TDI信号は、デバッガがTAP25の命令レジスタ252およびデータレジスタ24に出力する信号である。例えばTDI信号は、シリアルなビット列である。デバッガは、TAPコントローラ251に所望の動作を実行させるべく、命令コードをTAPコントローラ251に送信する。デバッガ10はこの命令コードをTDI信号として出力する。TAPコントローラ251は係る命令コードを命令レジスタ252に取り込み、取り込んだ命令コードに対応する命令を解釈して実行する。TDO信号は、データレジスタ24および命令レジスタ252からの出力信号である。例えば、TAPコントローラ251が実行した命令に基づく演算結果が、データレジスタ24からTDO信号としてデバッガに出力される。
データレジスタ24は、TAP25がJTAG信号に基づき制御するレジスタである。データレジスタ24は、内部にステータスレジスタ241(以下Sレジスタという)と、ヒストリレジスタ242(以下、Hレジスタという)を含む。図1では、Sレジスタ32およびHレジスタ33が、データレジスタ24が含むSレジスタ241およびHレジスタ242とは別個に記載されている。しかし、Sレジスタ241とSレジスタ32、Hレジスタ242とHレジスタ33は同一のレジスタである。前述したとおり、図1はマクロ21ないし23とマクロ29ないし31がそれぞれ同一であることを示している。それは、マクロ21ないし23はそれぞれがマスタとして機能するものの、これらのマクロのいずれかに対してスレーブとして機能することがあるからである。この表記法に従い、データレジスタ24が含むSレジスタ241およびHレジスタ242と、マクロ29ないし31と接続するSレジスタ32およびHレジスタ34は同一であるものとする。すなわち、Sレジスタ32およびHレジスタ32も、データレジスタ24が含むレジスタの一種である。
データレジスタ24は,コア・ロジックと入出力ピンの境界に配置されるバウンダリスキャンレジスタ、デバッガが出力したTDI信号をそのままTDO信号としてバイパスする経路を構成するバイパスレジスタ、及びその他のデータレジスタを含む。データレジスタ24はオプションとして更に異なる用途を持つレジスタを含む場合がある。たとえばデータレジスタ24は、デバイス及び製造メーカを識別するためのIDcodeレジスタなどを含む場合がある。本実施の形態では、上述したように、データレジスタ24はSレジスタ32及びHレジスタ33を含む。(これらはSレジスタ241およびHレジスタ242とそれぞれ同一)Sレジスタ32とHレジスタ33は、ともにJTAG信号に基づきTAP25が制御する。Sレジスタ32およびHレジスタ33の役割については後述する。
ここで、図2は、TAP25が有するTAPコントローラ251の動作とTMSとの関係を示している。図2はTAPコントローラ251の動作状態の遷移を示したステートマシンであり、TAPコントローラ251の動作状態はTCKの立ち上がりに応答してTAPコントローラ251が取得したTMS信号に基づき遷移する。
Test-Logic-Resetでは、全てのテストロジックがディスエーブルとなり、IC(Integrated Circuit)の通常動作がイネーブルとなる。TAPコントローラ251は、初期のステートに関わらず、信号レベルがHighであるTMSをTCKの立ち上がりに応じて5回受信することでTest-Logic-Resetステートに遷移する。nTRSTはTAPコントローラ251に対するリセット信号であるが、上述の方法に従ってTAPコントローラ251の動作状態はTest-Logic-Resetステートに遷移するため、nTRSTはオプションである。
TAPコントローラ251の動作状態がRun-Test-Idleである場合、TAPコントローラ251は、特定の命令が存在するときのみIC内のテストロジックをアクティブにする。それ以外の場合、TAPコントローラ251は、IC内のテストロジックをアイドル状態にする。
TAPコントローラ251の動作状態は、Select-DR-Scanを介してCapture-DR又はSelect-IR-Scanステートに進む。
TAPコントローラ251の動作状態はSelect-IR-Scanから、Capture-IRまたはTest-Logic-Resetステートに遷移する。
Capture-IRでは、TCKの立ち上がりエッジで、命令レジスタ252に対して固定値のパターンがパラレルに読み込まれる。
Shift-IRでは、命令レジスタ252がTCKの立ち上がりに応答して、TDI信号であるシリアルなビット列を順次取得する。デバッガは命令コードをTDI信号として出力し、命令レジスタ252はデバッガが出力した命令コードを取得する。
Exit1-IRでは、TAPコントローラ251はPause-IRステート又はUpdate-IRステートのいずれに遷移させる。
Pause-IRでは、TAPコントローラ251は命令レジスタ252でのシフトを一時的に停止することができる。
Exit2-DRでは、TAPコントローラ251は動作状態をShift-IRステート又はUpdate-IRステートのいずれに遷移させる。
Update-IRでは、TAPコントローラ251は、命令レジスタ252がShift-IRステートで記憶した命令コードに対応する命令を実行する。
Capture-DRでは、TCKの立ち上がりエッジで、データが現在の命令で選択されたデータレジスタにパラレルに読み込まれる。
Shift-DR、Exit1-DR、Pause-DR、Exit2-DR、及びUpdate-DRは、命令パスのShift-IR、Exit1-IR、Pause-IR、Exit2-IR、及びUpdate-IR ステートと同様である。
以上の通り、TAPコントローラ251は16種のステートを有するステートマシンであり、TMS信号及びTCK信号により動作状態が遷移する。そして、TAPコントローラ251はデータレジスタや命令レジスタ252及びマルチプレクサなどを制御してJTAG機能を実現する。TRST(Test Reset)信号はTAPコントローラ251を初期化する信号でオプションであり、端子45を介してTAPコントローラ251に入力される。TMSが"H"状態で、TCKの立ち上がりエッジを5回検出した場合もTAPコントローラ25125が初期化される。
上記TDI、TDO、TMS、TCKなどのJTAG信号は、端子41〜44を介して制御回路250、マクロ21〜23に入力される。さらに、CPUデバッグ用のリセット信号nSRT信号が端子46を介して、また外部からのリセット信号が端子47を介して入力される。
次に、デバッガ10が半導体集積回路20に含まれるマクロをデバッグする際のデバッガ10および半導体集積回路20の動作ついて説明する。デバッガ10はマクロ(M0)21(すなわちマクロ29)をデバッグするものとして説明する。なお、図1のマクロ22および23、マクロ30および31に向かう点線の矢印は、マクロ22および23、すなわちマクロ30および31がデバッグ対象ではないことを示している。ここで、デバッガ10がマクロ21をデバッグしている際に、他のマクロがマクロ21に対して何らかの制御信号を送信し、その制御信号を受信したマクロ21の状態が変化したとする。具体的にはマクロ21の内部信号や出力信号の状態が変化したとする。以下では、具体例として、この制御信号をリセット信号であるとする。つまり、デバッガ10がマクロ21をデバッグしている際に、例えばマクロ22がリセット信号RST2を出力し、そのリセット信号RST2をマクロ29が受信したとする。この場合、デバッガ10がマクロ21をデバッグしているにも関わらず、マクロ21の状態がデバッガ10の制御とは無関係にリセット状態となる。デバッガ10は、自身が把握しているマクロ21の状態とマクロ21の実際の状態とが不一致となったことを検知する。この場合、デバッガ10は、自身が把握しているマクロ21の状態とマクロ21の実際の状態とを一致させる処理を行う必要がある。係る処理を行わないと、デバッガ10はマクロ21のデバッグを再開することができず、デバッガ10が行うデバッグは異常終了してしまうからである。そこで、次にデバッガ10は、Sレジスタ32およびHレジスタ33が記憶する値を参照する処理を実行する。
ここで、Sレジスタ32およびHレジスタ33の基本的な機能および動作について、概念的に説明しておく。なお、JTAG信号やTAPコントローラ251と関係した具体的な動作は後述する。Sレジスタ32は、デバッグ対象であるマクロ21がリセット信号を受信しているか否かを記憶する。具体的にはANDゲート28の出力であるRST5を受信し、マクロ21ないしマクロ23、データレジスタ24、デバッガ10、その他の外部のそれぞれがマクロ29(すなわちマクロ21)に対して、RST1ないし4、nSRST、外部からのリセット信号のそれぞれを出力したか否かを記憶する。例えば各リセット信号は信号値"0"でアクティブとなるとする。その場合、RST1ないし4、nSRST、外部からのリセット信号のいずれか一が"0"となれば、その信号値はANDゲート26、27、28を介してリセット信号RST5となってマクロ29に到達する。Sレジスタ32はその信号値が"0"となったリセット信号RST5を受信し、記憶する。その後、RST1ないし4、nSRST、外部からのリセット信号のすべてが解除された場合、すなわちこれらの信号値が"1"となった場合には、RST5は"1"となる。Sレジスタ32は、この"1"となったRST5の値を、以前に記憶した"0"に変えて、新たに記憶する。このように、Sレジスタ32は、マクロ21が現在において、リセット状態であるか否かを記憶するレジスタである。
一方、Hレジスタ33は、デバッグ対象であるマクロ21が、Sレジスタが記憶するマクロ21のリセット信号の受信開始より前に、RST1ないし、nSRST、外部からのリセット信号のいずれかを受信したことがあるか否かを記憶する。すなわちHレジスタ32は、マクロ21が過去にリセット状態となったことがあるか否かの履歴を記憶するレジスタである。例えば各リセット信号は信号値"0"でアクティブとなるとする。その場合、Sレジスタが記憶するマクロ21のリセット信号の受信開始より前、すなわち過去にRST1ないし4、nSRST、外部からのリセット信号のいずれか一が"0"となれば、その信号値はANDゲート26、27、28を介してリセット信号RST5となってマクロ29に到達していたことになる。この場合、マクロ21は、過去に上述の各リセット信号に応答してリセット状態になっていたことになる。Hレジスタ33はその信号値が"0"となったリセット信号RST5を受信し、記憶する。その後、RST1ないし4、nSRST、外部からのリセット信号のすべてが解除された場合、すなわちこれらの信号値が"1"となった場合には、Hレジスタ33は以前に記憶したRST5の信号値"0"を"1"に書き換えることを行わない。Hレジスタ33は信号値"0"を保持し続ける。
再びデバッガ10がマクロ21のデバッグを行う際の動作について説明する。デバッガ10は上述の通り、Sレジスタ32およびHレジスタ33を参照する。デバッガ10はJTAG信号の内のTDI信号をTAP25が有する命令レジスタ252に出力する。この場合のTDI信号は命令コードである。命令コードはデータレジスタ24に含まれるSレジスタ32およびHレジスタ33の記憶値をデバッガ10に対して出力する動作を示す。命令レジスタ252は、TAP25に含まれるTAPコントローラ251の動作状態がShift-IRとなった場合、受信するTCKの立ち上がりに応じてデバッガ10が出力した命令コードを取得する。その後、TAPコントローラ251の動作状態がUpdate-IRに遷移した場合、TAP25は、命令レジスタ252が記憶している命令コードに対応する命令を実行する。すなわち、TAP25は、データレジスタ24に含まれるSレジスタ32およびHレジスタ33が記憶する信号値を、それぞれデバッガ10に出力する。この場合、Sレジスタ32およびHレジスタ33が出力する信号値はそれぞれTDO信号である。デバッガ10はTDO信号として、Sレジスタ32およびHレジスタ33が記憶している値を受信する。
デバッガ10はSレジスタ32およびHレジスタ33が記憶している値を受信する。この動作により、デバッガ10はデバッグ対象であるマクロ21が過去にリセット状態になったことがあるか否か、そして現在、リセット状態であるか否かを知ることができる。ここで、デバッガ10は取得したSレジスタ32およびHレジスタ33の値に応じて以下の処理を行う。まず、デバッガ10が取得したSレジスタ32の値が"1"で、取得したHレジスタ33の値が"0"であった場合を考える。この場合、デバッガ10は、マクロ21は現在はアクティブなリセット信号を受信しておらず、リセット状態ではないものの、マクロ21は過去にリセット状態となったことがあることを知る。デバッガ10は、すぐにマクロ21のデバッグを再開するための処理を行う。なお、このデバッガがデバッグを再開するための処理は、使用するデバッガの仕様などに応じて異なる。すなわち、各デバッガメーカーのデバッガごとに、その処理は異なる。例えばデバッグを再開する処理として、デバッガ自身が内部で持っているマクロ21の情報と過去にマクロ21が受信したリセット信号により変化したマクロ21の情報の一致を試みる処理が考えられる。デバッガ10は、このデバッグの再開に必要な処理が完了した後、再びマクロ21のデバッグを開始する。
一方、デバッガ10が取得したSレジスタ32の値が"0"で、取得したHレジスタ33の値が"1"または"0"であった場合を考える。この場合、デバッガ10は、デバッグ対象であるマクロ21が現在、リセット信号を受信しておりリセット状態であることを知る。したがって、デバッガ10はまず、マクロ21がリセット信号を受信しなくなるまで待つ。この動作を行うため、デバッグ10はSレジスタ32の値を取得し続けなければならない。そこでデバッガ10は、例えば以下の動作を行う。デバッガ10は再度、命令レジスタ252に対してTDI信号を送信する。この場合のTDI信号も命令コードである。命令レジスタ252は同様に係るTCKに応じて命令コードを取得する。その後TAP25は、命令レジスタ252が新たに取得した命令コードに対応する命令を実行する。この場合、TAP25は、Sレジスタ32が記憶している値が"0"から"1"に変化するまで、係るSレジスタ32の値をデバッガ10に対して出力し続ける。デバッガ10が受信するSレジスタ32の値は、この場合もTDO信号としてデバッガ10に対して出力される。デバッガ10は、Sレジスタ32の値を参照し続け、Sレジスタ32の値が"0"から"1"に変化するまで待つ。そして、ある時点で、デバッガ10が受信するSレジスタ32の値が"0"から"1"に変化したとする。その後デバッガ10は、すぐにマクロ21のデバッグを再開するための処理を行う。係る処理の完了後、デバッガ10はマクロ21のデバッグを再開する。
デバッガ10は、マクロ21の状態がデバッガ10の制御とは無関係にリセット状態となりデバッグをそのまま継続することができなくなった場合において、以上の処理を行う。デバッガ10は以上の処理を行うことで、再びデバッグを開始することができる。すなわち、マクロ21の状態がデバッガ10の制御とは無関係にリセット状態となっても、デバッグが異常終了することはない。
図3は、Sレジスタ32およびHレジスタ33の動作をJTAG信号に応じたTAP25の動作を考慮せず、概念的に示したものである。図3において、"S"はSレジスタ32が記憶している値であり 、"H"はHレジスタ33が記憶する値を示す。TCKはクロック信号であり、Master Resetはデバッガ10がデバッグするマクロが受信するリセット信号である。このリセット信号は信号がローレベルのときにアクティブとなる。時点t1に示すように、Sレジスタ32、Hレジスタ33は、初期値としてそれぞれ"1"を記憶する。時点t2でMaster Reset信号がローレベルとなり、デバッグ対象のマクロはリセット状態に遷移する。このとき、Sレジスタ32が記憶する値は"0"に変化する。Hレジスタ33が記憶する値は時点t2では変化しない。時点t3では、MasterReset信号はローレベルであり、デバッグ対象であるマクロはリセット状態である。この場合、Sレジスタ32は"0"を記憶し続ける。
一方、Hレジスタ33は、時点t2で、MasterReset信号がハイレベルからローレベルに変化したことに応答し、記憶する値を"1"から"0"と更新する。時点t3から時点t4までの間のSレジスタ32およびHレジスタ33の動作は以下の通りである。Sレジスタ32は、クロックの立ち上がりごとに、Master Reset信号の値を記憶する。時点t3からt4まで、Master Reset信号はローレベルであり続けるため、Sレジスタ32は"0"を記憶し続けることになる。一方、Hレジスタ33は、時点t2でMasterReset信号がローレベルに変化してデバッグ対象マクロがリセット状態となったことに応答して時点t3で記憶した値"0"をそのまま保持する。
時点t4でMasterReset信号がローレベルからハイレベルに変化する。つまり、デバッグ対象マクロはリセット状態ではなくなる。この場合、Sレジスタ32は、クロックの立ち上がりごとにMasterReset信号の値を記憶するので、記憶する値を"0"から"1"に更新する。一方、Hレジスタ33は、時点t2でMasterReset信号がローレベルに変化してデバッグ対象マクロがリセット状態となったことに応答して時点t3で記憶した値"0"をそのまま保持する。
時点t5から時点t6までの間は、MasterReset信号はハイレベルで一定である。したがって、Sレジスタ32およびHレジスタ33が記憶している値は変化しない。
時点t6で、例えばデバッグ対象マクロをデバッグするマクロが、Sレジスタ32およびHレジスタ33の値を参照したとする。この"参照"は前述したフローに従い行われる。この場合、時点t6以降、再びMaster Reset信号がローレベルに変化するまでSレジスタ32およびHレジスタ33が記憶する値は変化しない。MasterReset信号が再びローレベルに変化した後の動作は、これまでに説明した動作と同様である。
一方、時点t6で、デバッガがHレジスタ33の値を初期化する動作を行うこともある。Hレジスタ33は、任意のタイミングで記憶する値を初期化することができる機能を有することになる。具体的には、例えば以下のような場合にこの初期化動作が行われる。デバッガが、Sレジスタ32およびHレジスタ33が記憶する値を参照し、その後でデバッグの再開に必要な処理を行ったとする。そしてデバッガがマクロのデバッグを再開したとする。そうすると、Hレジスタ33が記憶する履歴情報はもはや不要である。したがって、デバッガはHレジスタ33が記憶する値を初期化する。例えば図1に照らして考えると、デバッガ10が、TAP25に対して命令コードを送信し、TAP25がHレジスタ33の値を初期化するようにしてもよい。
ここまで、デバッガ10が、TAP25、そしてSレジスタ32、Hレジスタ33と協働して行うマクロ21のデバッグについて説明してきた。以下では、TAP25がJTAG規格に基づく動作を行うという観点をより詳細に考慮した場合における、Sレジスタ32およびHレジスタ33の動作について説明する。TAP25は、図2に示したTAPコントローラ251の動作状態の遷移に従って種々の制御を行う。本実施の形態においては、TAP25がデバッガ10からSレジスタ32およびHレジスタ33が記憶する値を出力する命令を受けた場合、TAPコントローラ251がCapture−DRステートであるときのSレジスタ32およびHレジスタ33の値をデバッガに出力する。一方、TAP25は、TAPコントローラ251の動作状態がUpdate−DRであるときのRST5の値をHレジスタ33に書き込む。
TAP25は、Sレジスタ32およびHレジスタ33が記憶する値の操作を、TAPコントローラ251の特定の動作状態のときに行っているが、Hレジスタ33が記憶する値の更新に関しては以下の問題が発生する。TAPコントローラ251は動作状態が、Capture-DR, Shift-DR, Exit1-DR, Pause-DR, Exit2-DR, Update-DRの順番に遷移し、Update-DRの動作状態が終了した後、再びCapture-DRに戻って同様に遷移する場合を考える。 そして、例えばCapture-DRステートにおいて、リセット信号RST5の値が"1"から"0"になり、Capture-DR ステート後であってUpdate-DRステートより前にリセット信号RST5が"0"から"1"に変化した場合を考える。TAP25は、TAPコントローラ251の動作状態がUpdate-DRステートであるときのRST5の値をHレジスタ33に書き込む。そうすると、Hレジスタ33は、過去に一度RST5が"0"になったという履歴を記憶することなく、信号値"1"を記憶する。Hレジスタ33がデバッグ対象マクロのリセット信号の受信履歴を正しく記憶することができない場合、デバッガ10はデバッグを継続することができなくなり、デバッグが異常終了することになる。
図5は、この問題を解決することができるHレジスタ33の構成を示している。実際にデバッグ対象であるマクロがリセット状態になったことがあるか否かの履歴を記憶するのはフリップフロップFFdである。フリップフロップFFaとFFbは、図1のRST5信号をTCKに同期させる役割を担うレジスタである。図5に示すHレジスタ33は、その他にAND回路51、52、54、55及びセレクタ53、56を有する。FFcはTAPコントローラ251の動作状態がCapture‐DRのときのFFbの出力信号の値を保持する。このFFbの出力信号の値は、RST5の値である。なお、Sレジスタ32はFFaの前段に位置し、RST5の変化を記憶する。Sレジスタ32とHレジスタ33の間にはFFaとFFbが存在するため、Sレジスタ32が記憶値を更新した後、2クロック遅れてHレジスタは記憶値を更新することになる。
このとき、TAPコントローラ251の動作状態がShift−DR、Exit1−DR、Exit2−DR、Pause−DRである期間に、FFbの出力信号であるRST5の信号値が"1"から"0"に変化すると、FFcは"0"を記憶する。一度FFcが"0"を記憶した場合、その後にFFbの出力信号が"0"から"1"に変化したとしても、FFcは"0"を保持する。一方、ANDゲート54は、FFcの出力が"1"であって、TAPコントローラ251の動作状態がUpdate‐DRの場合に"1"を出力し、それ以外の場合には"0"を出力する。一方、FFdは、TAPコントローラ251の動作状態がShift−DR、Exit1−DR、Exit2−DR、Pause−DRである期間にFFbの出力信号であるRST5の信号値が"1"から"0"に変化したことに応答して、"0"を記憶している。そして、FFcは"0"をANDゲート54にを出力する。
そうすると、仮にTAPコントローラ251の動作状態がShift−DR、Exit1−DR、Exit2−DR、Pause−DRである期間にFFbの出力信号が"0"から"1"に変化し、その後にTAPコントローラ251の動作状態がUpdate-DRになった場合であっても、ANDゲート54の出力は"0"である。従って、セレクタ56はFFbの出力信号をFFdに伝達するのではなく、以前にFFdが記憶した値であるANDゲート55の出力信号をFFdに伝達する。したがって、FFdは記憶値"0"を保持することができる。すなわち、図4の実線で示すように、クリアタイミングではHレジスタ32の更新(リセット履歴情報のクリア)は行なわれない。これによりCaptureDRからUpdateDR前までにノン・アクティブになったリセットも履歴として残すことが可能となる。
本実施の形態においては、複数のマスタを有するシステム及びSOCにおいて、デバッグ対象マクロ(ターゲット)であるマクロ21に対してデバッガ10の管轄外でデバッグ対象マクロがリセットされたり、又はデバッグ対象マクロ21自身が自身をリセットしたり、ボタンスイッチ等の外部からリセットされたり、又は他のマスタがデバッグ対象マクロ21をリセットしても、デバッガ10は、Sレジスタ32及びHレジスタ33により、現在のリセット状態及び過去のリセット状態を監視することができる。ここで、リセットによるリセット対象リソースは、マスタ内外に存在するデバッガ10が使用しているリソース、例えばブレークポイント、ウォッチポイント、ステータス・コントロールレジスタ、JTAGチェーン長が変化するようなシステム等である。
よって、デバッガ10は、デバッグ対象マクロの状態を見失っても次のアクションを決定することができるので、ハングアップ(異常終了)することなく、デバッグ対象ターゲットの再設定が可能で、デバッガによるデバッグを続行することができる。
また、JTAGチェーンを使用してリセット監視状態をリード・ライトすることができるため、デバッグ対象マクロが自分自身をリセットしても、そのリセット状態を知ることができるため、デバッガの利用自由度を向上することができる。
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
本発明の実施の形態にかかる半導体集積回路を示す図である。 TAPコントローラ251のステートを示す図である。 本発明の実施の形態にかかるリセットの監視方法を説明するための図である。 TAPステートを説明する図である。 Hレジスタの構成を示す図である。
符号の説明
10 デバッガ
20 半導体集積回路
21−23 マスタ側マクロ
24 レジスタ
26、27、28 AND回路
29−31 スレーブ側マクロ
32 Sレジスタ
33 Hレジスタ
41、42、43、44、45、46、47 端子
51、52、54、55 AND回路
53、56 セレクタ
250 制御回路
251 TAPコントローラ
252 命令レジスタ

Claims (4)

  1. 制御信号の受信に応答してリセット状態になるマクロと、
    前記マクロが特定時点で前記リセット状態であるか否かを記憶する第1レジスタと、
    前記マクロが前記特定時点より前に前記制御信号を受信して前記リセット状態になったことがあるか否かを記憶して、前記特定時点まで保持する第2レジスタと、
    を有する半導体集積回路であって、
    前記第2レジスタは、前記マクロが前記特定時点より前に前記リセット状態になったことがあることを記憶した後は、前記第1レジスタが記憶する前記マクロの前記リセット状態が変化した場合であっても、そのまま記憶している状態を保持し続け、
    前記特定時点において前記第1レジスタが記憶している前記リセット状態、及び、前記特定時点において前記第2レジスタが記憶している前記リセット状態、の両方が前記半導体集積回路の外部の外部装置に参照される半導体集積回路。
  2. 前記第1レジスタおよび前記第2レジスタのそれぞれが記憶した前記マクロの状態を前記外部装置に出力する動作を制御する制御部をさらに有することを特徴とする請求項に記載の半導体集積回路。
  3. 前記制御部は、前記外部装置からの命令に基づいて前記動作を制御することを特徴とする請求項に記載の半導体集積回路。
  4. 前記外部装置は、前記マクロをデバッグするデバッガであることを特徴とする請求項に記載の半導体集積回路。
JP2007249083A 2007-09-26 2007-09-26 半導体集積回路 Expired - Fee Related JP5059532B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007249083A JP5059532B2 (ja) 2007-09-26 2007-09-26 半導体集積回路
US12/232,073 US8429615B2 (en) 2007-09-26 2008-09-10 Semiconductor integrated circuit
GB0817218A GB2453224B (en) 2007-09-26 2008-09-19 Semiconductor integrated circuit
CN200810161064.4A CN101403989B (zh) 2007-09-26 2008-09-26 半导体集成电路
US13/866,920 US20130238948A1 (en) 2007-09-26 2013-04-19 Semiconductor integrated circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007249083A JP5059532B2 (ja) 2007-09-26 2007-09-26 半導体集積回路

Publications (2)

Publication Number Publication Date
JP2009080632A JP2009080632A (ja) 2009-04-16
JP5059532B2 true JP5059532B2 (ja) 2012-10-24

Family

ID=39951903

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007249083A Expired - Fee Related JP5059532B2 (ja) 2007-09-26 2007-09-26 半導体集積回路

Country Status (4)

Country Link
US (2) US8429615B2 (ja)
JP (1) JP5059532B2 (ja)
CN (1) CN101403989B (ja)
GB (1) GB2453224B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190370016A1 (en) * 2018-05-31 2019-12-05 Hamilton Sundstrand Corporation Auto detection of jtag debuggers/emulators
CN114661534B (zh) * 2022-05-24 2022-08-16 深圳时识科技有限公司 生成tms目标比特流的方法、装置和存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193838A (ja) * 1987-10-05 1989-04-12 Nec Corp デバッグ用マイクロプロセッサ
JPH03138753A (ja) * 1989-10-25 1991-06-13 Mitsubishi Electric Corp マルチプロセッサシステムのブートロード装置
JPH03288241A (ja) * 1990-04-03 1991-12-18 Mitsubishi Electric Corp レジスタ装置
JPH05334222A (ja) * 1992-06-04 1993-12-17 Fujitsu Ltd データ集配信装置
TW307927B (ja) * 1994-08-29 1997-06-11 Matsushita Electric Ind Co Ltd
JPH1165883A (ja) * 1997-08-11 1999-03-09 Nec Corp デバッグ機能内蔵マイクロプロセッサ
US6681280B1 (en) 1998-10-29 2004-01-20 Fujitsu Limited Interrupt control apparatus and method separately holding respective operation information of a processor preceding a normal or a break interrupt
JP2000346905A (ja) 1999-06-04 2000-12-15 Nec Corp 半導体装置およびそのテスト方法
JP2001134461A (ja) * 1999-11-05 2001-05-18 Fujitsu Ltd リセット制御システムおよび方法
JP2004094451A (ja) * 2002-08-30 2004-03-25 Mitsubishi Electric Corp オンチップjtagインタフェース回路およびシステムlsi
JP2004252684A (ja) 2003-02-20 2004-09-09 Hitachi Ltd プログラムデバッグ方法およびシステム
JP2004280789A (ja) * 2003-02-28 2004-10-07 Denso Corp 半導体集積回路装置およびマイクロコンピュータ開発支援装置
JP2004272679A (ja) * 2003-03-10 2004-09-30 Seiko Epson Corp デバッグ装置およびデバッグ方法
JP4944368B2 (ja) 2004-06-08 2012-05-30 キヤノン株式会社 マルチプロセッサシステム、デバッグ方法、及びプログラム
US7443196B2 (en) * 2005-07-15 2008-10-28 Tabula, Inc. Configuration network for a configurable IC
US20090204823A1 (en) * 2008-02-07 2009-08-13 Analog Devices, Inc. Method and apparatus for controlling system access during protected modes of operation

Also Published As

Publication number Publication date
GB0817218D0 (en) 2008-10-29
GB2453224B (en) 2009-11-18
US8429615B2 (en) 2013-04-23
US20130238948A1 (en) 2013-09-12
JP2009080632A (ja) 2009-04-16
CN101403989B (zh) 2013-04-03
US20090083712A1 (en) 2009-03-26
CN101403989A (zh) 2009-04-08
GB2453224A (en) 2009-04-01

Similar Documents

Publication Publication Date Title
TWI403744B (zh) 測試資料處理系統之方法及裝置
US7272678B2 (en) DSP bus monitoring apparatus and method
US6732311B1 (en) On-chip debugger
US8943377B2 (en) On-chip detection of types of operations tested by an LBIST
US8892973B2 (en) Debugging control system using inside core event as trigger condition and method of the same
US6961872B2 (en) Microcomputer and debugging system
KR100880832B1 (ko) 코-디버깅 기능을 지원하는 반도체 집적회로 및 반도체집적회로 테스트 시스템
CN103675641A (zh) 芯片故障定位方法、装置及系统
JP6297091B2 (ja) 電子システムならびにシステム診断回路およびその動作方法
CN112997089A (zh) 扩展jtag控制器和使用扩展jtag控制器进行功能调试的方法
US20120150477A1 (en) Driving circuit of a test access port
JP4992791B2 (ja) スキャン制御方法及び装置
JP5059532B2 (ja) 半導体集積回路
US10970191B2 (en) Semiconductor device and debug method
JP5022110B2 (ja) 半導体集積回路
US6484275B1 (en) System and method for interfacing data with a test access port of a processor
CN108664387B (zh) 基于ejtag的mips处理器调试方法及系统
JP2013242746A (ja) 故障検出システムと方法並びに半導体装置
US9304165B2 (en) Method for controlling a state machine
EP2141597B1 (en) Semiconductor integrated circuit
JP2005190112A (ja) マイクロコンピュータ及びそのデバッグ方法
US20240210470A1 (en) Scan chain diagnostic accuracy using high volume manufacturing functional testing
JP2009258857A (ja) デバッグ装置及びデバッグ方法
JP3698478B2 (ja) デバッグ装置
CN116414682A (zh) 程序的测试方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110816

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120530

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: 20120724

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120802

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5059532

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees