JP2005190112A - マイクロコンピュータ及びそのデバッグ方法 - Google Patents

マイクロコンピュータ及びそのデバッグ方法 Download PDF

Info

Publication number
JP2005190112A
JP2005190112A JP2003429853A JP2003429853A JP2005190112A JP 2005190112 A JP2005190112 A JP 2005190112A JP 2003429853 A JP2003429853 A JP 2003429853A JP 2003429853 A JP2003429853 A JP 2003429853A JP 2005190112 A JP2005190112 A JP 2005190112A
Authority
JP
Japan
Prior art keywords
data
scan
scan chain
clock
register
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.)
Pending
Application number
JP2003429853A
Other languages
English (en)
Inventor
Masayoshi Taniguchi
政義 谷口
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2003429853A priority Critical patent/JP2005190112A/ja
Priority to US10/905,227 priority patent/US20050154947A1/en
Publication of JP2005190112A publication Critical patent/JP2005190112A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/267Reconfiguring circuits for testing, e.g. LSSD, partitioning
    • 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

Abstract

【課題】 LSSDスキャンテストによりSoC内部の任意のレジスタの内容を読み取り、あるいは書き換えて、デバッグを実現する。
【解決手段】 SoCに、複数のラッチ回路がチェーン状に接続されたスキャンテストを実行するためのスキャンチェーンと、このスキャンチェーンに対するスキャンテストを実行しながらスキャンチェーンを構成する特定のラッチ回路を指定してデータを読み取るデバッグ回路100とを備える。このスキャンチェーンは、出力を先頭のラッチ回路の入力に戻してフィードバックループを構成する。また、スキャンチェーンは複数存在し、それぞれ同数のラッチ回路にて構成され、スキャンテストを行うためのラッチ回路と、スキャンチェーンを構成するラッチ回路の数を揃えるためのダミーのラッチ回路とを備える。
【選択図】 図1

Description

本発明は、SoC(System on Chip)の論理設計をテストするデバッグの方法およびデバッグを行うための機構に関する。
今日、半導体集積技術の進歩に基づく集積度の向上により、チップ上に搭載できるゲート数が飛躍的に増加している。これにより、特定の用途のために設計・製造されるASIC(Application Specific Integrated Circuit)においても、1チップにプロセッサ、メモリ、周辺装置などのコンピュータの主要機能を集積したSoC(System on Chip)によるものが増加しつつある。ASICをSoCとすることにより、実装に必要な面積を大幅に縮小し、消費電力も同等の機能を持つ複数チップによるシステムと比べて格段に抑えることができる。
一方、SoCは、各種のデバイスが1チップ上に集積されているため、プリント基板上に作成された回路とは異なり、直接その状態を調べることができない。例えば、プリント基板上の回路では、ロジックアナライザやオシロスコープを使い、データ・バスの値を直接読み込むことや、特定の信号の状態を調べることが容易であるが、SoC化されたASIC(以下、単にASICと記す)では、端子にプローブを当てるこの種の検査を行うことができない。
ところで、ASICの製造時に、チップの良品・不良品を判別する手法として、LSSDラッチ(フリップフロップ)を使用するLSSDスキャンテスト(LSSD Scan test)が広く行われている(例えば、特許文献1参照)。
図8は、LSSDラッチの構成を示す図、図9は、LSSDスキャンテストを実行するためのスキャンチェーンを説明する図である。
図8に示すように、LSSDラッチ200は、マスタラッチ201とスレイブラッチ202という2つのDラッチを組み合わせて構成される。マスタラッチ201には、Aクロックの入力及びこのAクロックにより制御されるスキャンイン(Scan input)とCクロックの入力及びこのCクロックにより制御されるデータイン(Data input)がある。スレイブラッチ202には、Bクロックが接続され、このBクロックがハイレベルのとき、マスタラッチ201のデータがスレイブラッチ202に入力される。
通常の動作では、Aクロックはローレベルに固定されており、Bクロック及びCクロックを使ってデータの保持を行う。一方、LSSDスキャンテストの実行時は、テストデータの入力及びテスト結果の出力にAクロック、Bクロックが使われる。
図9に示すように、このLSSDスキャンテストでは、チップ内の全てのLSSDラッチ(図ではFFと表記)を複数のスキャンチェーン(Scan Chain)で接続し、このLSSDラッチを介してテストパターンを入力する(Scan in)。そして、その結果を、LSSDラッチに取り込むと共にスキャンチェーンを介してチップ外部に取り出し(Scan out)、取り出された結果と予め求めた期待値とを比較することで、チップの良品・不良品を判別することができる。
特開平10−123222号公報
上述したように、SoCであるASICに対しては、データ・バスにプローブを接続しデータを電気的に読み込むことができない。そのため、開発されたASICにバグが存在した場合、その原因追求が非常に困難であった。
また、LSSDラッチ(フリップフロップ)を使ったスキャンテストは、チップが正しく製造されたかどうかを判別するものであり、ASIC自体の論理設計が正しいか否かを判別するものではない。したがって、ASICにバグが存在する場合の原因の探索には適さない。
さらに、このスキャンテストは、テストの実行によって全てのLSSDラッチの内容が変更されてしまう。そのため、同じ状態で再度テストを実行することができないという問題もある。
そこで本発明は、上記の課題を解決し、LSSDスキャンテストによるSoCのデバッグを実現することを目的とする。
また本発明は、SoCによるプログラムの実行を任意の時点で中断し、SoC内部の任意のレジスタの内容を読み取り、あるいは書き換える手段を提供することを他の目的とする。
また本発明は、上記のレジスタの内容の読み取り、書き換えをレジスタの内容を破壊することなく行うことをさらに他の目的とする。
上記の目的を達成する本発明は、複数のラッチ回路がチェーン状に接続された、スキャンテストを実行するためのスキャンチェーンと、このスキャンチェーンに対するスキャンテストを実行しながらスキャンチェーンを構成する特定のラッチ回路を指定してデータを読み取るデバッグ回路とを備えるSoCとして実現される。
さらに詳細には、このスキャンチェーンは、出力を先頭のラッチ回路の入力に戻してフィードバックループを構成する。また、スキャンチェーンは複数存在し、それぞれ同数のラッチ回路にて構成され、スキャンテストを行うためのラッチ回路と、スキャンチェーンを構成するラッチ回路の数を揃えるためのダミーのラッチ回路とを備える。
またデバッグ回路は、より詳細には、スキャンチェーンにおける特定のラッチ回路をスキャンテストで用いられるクロックの数で指定したデータを保持する第1のレジスタと、第1のレジスタに保持されたデータにて指定される特定のラッチ回路から読み取ったデータを保持する第2のレジスタと、スキャンテストで用いられるクロックのカウント値と第1のレジスタに保持されたデータとから得られるタイミングで第2のレジスタにデータを出力するための制御信号をスキャンチェーンに送信する制御回路とを備える。
さらにこのデバッグ回路に、第1のレジスタに保持されたデータにて指定される特定のラッチ回路に書き込むデータを保持する第3のレジスタを備えることができる。この場合、制御回路は、スキャンテストで用いられるクロックのカウント値と第1のレジスタに保持されたデータとから得られるタイミングで第3のレジスタに保持されたデータをスキャンチェーンに送信する。
また本発明による他のSoCは、複数のラッチ回路がチェーン状に接続された、スキャンテストを実行するためのスキャンチェーンと、このスキャンチェーンを構成するラッチ回路のデータをスキャンチェーンに沿って順次シフトさせるためのクロックを生成してスキャンチェーンに供給するクロック供給手段と、このクロックのカウント値に基づいて得られるタイミングでスキャンチェーンからラッチ回路のデータの読み取りを行うデータ読み取り手段とを備えることを特徴とする。
さらにこのSoCに、クロックのカウント値に基づいて得られるタイミングでスキャンチェーンに対してラッチ回路に書き込むデータを送信するデータ書き込み手段、データ読み取り手段にて読み取られたラッチ回路のデータを評価する評価手段といった構成要素を備えることができる。
そして、より好ましくは、スキャンチェーンは、出力であるスキャンアウトを、スキャンチェーンを構成する先頭のラッチ回路の入力であるスキャンインに戻してフィードバックループを構成し、クロック供給手段は、ラッチ回路のデータがフィードバックループに沿って一周するだけ、すなわちスキャンチェーンを構成するラッチ回路の数(スキャンチェーンの長さ)分のクロックを生成しスキャンチェーンに供給する。
さらにまた、上記の目的を達成する本発明は、複数のラッチ回路がチェーン状に接続された、スキャンテストを行うためのスキャンチェーンを内蔵した電子回路に対してデバッグを行う、次のようなデバッグ方法として実現される。このデバッグ方法は、スキャンチェーンを構成するラッチ回路のデータを所定のクロックに従って順次シフトさせるステップと、クロックのカウント値にて特定されるラッチ回路からデータを読み出し、このラッチ回路から読み取られたデータをデータ読み取り用のレジスタに保持するステップと、データ読み取り用のレジスタに保持されたデータをコンピュータが読み込むステップとを含むことを特徴とする。
ここで、このデバッグ方法には、クロックのカウント値にて特定されるラッチ回路のデータを予めデータ書き込み用のレジスタに保持されたデータに置き換えるステップをさらに含むことができる。
さらに詳細には、ラッチ回路のデータをシフトさせるために、まずシステムクロックを停止させて、データのシフトに用いられる所定のクロックを生成し、データをコンピュータが読み込むために、データのシフトに用いられる所定のクロックを停止し、システムクロックを再開する。
以上のように構成された本発明によれば、所定のクロックを用いてスキャンチェーンのラッチ回路のデータをシフトし、特定のタイミングでラッチ回路のデータを読み出し、あるいは書き換えることができ、これにより、SoC内部における特定の回路の状態を調べてデバッグを行うことができる。
また本発明によれば、スキャンテストの終了後にスキャンチェーンの各ラッチ回路のデータが元に戻るようにすることができ、上述したラッチ回路の内容の読み取り、書き換えをラッチ回路の内容を破壊することなく行うことができる。
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、実施形態)について詳細に説明する。
本実施形態のスキャンテストでは、SoCにおける論理設計の正しさを判断し、デバッグを行うために、次の事項が実現されなければならない。
・スキャンチェーンを構成する任意のLSSDラッチ(フリップフロップ)の内容を読み取ることができる。
・スキャンチェーンを構成する任意のLSSDラッチの内容を書き換えることができる。
・所望のLSSDラッチの内容を読み書きする際に、他のLSSDラッチの内容を変更してはならない。
・テストを行ってLSSDラッチの内容を読み出した後、テストのために中断したプログラムを続行できる。
以上の事項を実現するため、本実施形態の構成は、次の4つの条件を満足することが必要である。
1.全てのスキャンチェーンは、スキャンアウト(Scan out)データをスキャンイン(Scan in)に戻すフィードバックループ(Feed back loop)を持つ。
これにより、スキャンテストにおいてスキャンチェーンを構成するLSSDラッチの値を順にシフトしていき、フィードバックループを一周すれば、各LSSDラッチの値は元に戻り、破壊されないこととなる。
2.全てのスキャンチェーンの長さ(LSSDラッチの数)を揃える。
これにより、全てのスキャンチェーンに対してLSSDラッチの値を元に戻すのに要する時間、すなわちスキャンテストに要するクロック数を同じにすることができ、1の条件と合わせて、スキャンテストにおいてLSSDラッチの値がスキャンチェーンのフィードバックループを一周することで、全てのスキャンチェーンにおける全てのLSSDラッチの値を同時に元に戻すことができる。
3.スキャンチェーンのLSSDラッチの内容(スキャンチェーンデータ)に対する読み出し用・書き込み用のレジスタを持ち、スキャンテスト中の所定のタイミングでスキャンチェーンデータの保持、あるいはデータの書き換えを可能とする。
4.一回のスキャンテストで、スキャンチェーンを構成するLSSDラッチと同じ数のスキャンテスト用のAクロック及びBクロック(LSSDラッチの値をスキャンチェーンに沿ってシフトしていくために用いられるクロック)を生成する。
これにより、1、2の条件と合わせれば、スキャンテスト終了時点で、各スキャンチェーンのLSSDラッチの値がスキャンチェーンのフィードバックループを一周し、全てのスキャンチェーンにおける全てのLSSDラッチの値が同時に元に戻る。したがって、テスト終了後に、テストのために中断したプログラムを続行できることとなる。
図1は、本実施形態によるスキャンチェーンを用いたデバッグを実現するSoC(System on Chip)の構成を示す図である。
図1に示すように、本実施形態のSoCには、デバッグ回路100が設けられている。このデバッグ回路100は、CPUローカル・バス110を介してCPU120に接続されており、スキャンチェーン(図示せず)を制御して、SoCのチップ上に集積されたデバイス(図示せず)に対するデバッグを行う。
また図1を参照すると、本実施形態のデバッグ回路100は、スキャンテストにおいてLSSDラッチへの読み書きを行うためのリードデータ(Read_Data)レジスタ11、ライトデータ(Write_Data)レジスタ12及びスキャンナンバー(Scan_Number)レジスタ13と、スキャンテストを含むデバッグ回路100の状態遷移を管理するステートマシン20と、スキャンテストを実行する制御回路30とを備える。
さらに図1において、デバッグ回路100は、基本クロックを入力し、これに基づくシステムクロックを送出している。ここで、基本クロックとはPLL回路を用いて生成される通常のシステムクロックに相当する。しかしながら、本実施形態では後述するように、デバッグ回路100の制御によりスキャンテストを行う際にシステムクロックを停止させるので、このテスト時に停止するシステムクロックと区別するために、デバッグ回路100に入力される前の段階を基本クロックと呼ぶ。
上記の構成において、リードデータレジスタ11は、スキャンチェーン中の特定のLSSDラッチからデータを読み取るためのレジスタであり、後述する制御回路30のカウンタ31の値とスキャンナンバーレジスタ13の値とが一致したときに、スキャンチェーンデータを取り込む。また、リードデータレジスタ11は、CPUローカル・バス110に接続されており、リードデータレジスタ11の内容(取り込んだ値)をCPU120が読み込むことができる。
ライトデータレジスタ12は、スキャンチェーン中の特定のLSSDラッチにデータを書き込むためのレジスタであり、後述する制御回路30のカウンタ31の値とスキャンナンバーレジスタ13の値とが一致したときに、ライトデータレジスタ12の値がスキャンチェーンのLSSDラッチに取り込まれる。また、ライトデータレジスタ12は、CPUローカル・バス110に接続されており、CPU120によりデータ(スキャンチェーンのLSSDラッチに書き込む値)を書き込むことができる。
スキャンナンバーレジスタ13には、データの読み書きの対象(ターゲット)となる特定のLSSDラッチがスキャンチェーンの何番目のLSSDラッチであるかを示すデータ(スキャンナンバー)が書き込まれる。また、スキャンナンバーレジスタ13は、CPUローカル・バス110に接続されており、CPU120によりデータ(スキャンナンバー)を書き込むことができる。
ステートマシン20は、「アイドル」、「停止」、「テスト」、「再開」の4つのステージ(状態)を持ち、デバッグ回路100の状態遷移を管理している。状態遷移の詳細については後述する。
制御回路30は、ステートマシン20がテストステージである場合に、スキャンテストに用いるための、Aクロック、Bクロック、Cクロック及びライトクロック(Write_Clk)を生成して出力する。また、スキャンテストにおけるターゲットのLSSDラッチの位置およびテストの終了タイミングを管理する。制御回路の構成および機能の詳細については後述する。
ここで、本実施形態によるスキャンテストに用いられるスキャンチェーンについて説明する。
図2は、本実施形態のスキャンテストのために用いられるスキャンチェーンの構成を示す図である。通常、ASICでは、テスト時間を短縮するため、16本以上のスキャンチェーンを持つが、各スキャンチェーンでは同じ構成なので、ここでは1本のスキャンチェーンの構成を示す。
図2を参照すると、本実施形態によるスキャンチェーンは、テスト対象であるLSSDラッチのチェーン210と、テスト対象ではないダミーLSSDラッチ220と、マルチプレクサ230とを備えて構成される。
図2に示すように、スキャンアウトはチェーン210を構成する先頭のLSSDラッチのスキャンインに戻され、LSSDラッチから読み出したデータを再度LSSDラッチに書き込むことができるようになっている。これにより、上述した「スキャンアウトデータをスキャンインに戻すフィードバックループを持つ。」という条件を満足する。スキャンチェーンがフィードバックループを構成することにより、外部からスキャンインにてテストパターンを入力するのではなく、各LSSDラッチの値をスキャンチェーンのフィードバックループに沿ってシフトし、周回させることができ、テストを非破壊で行うことが可能となる。
ダミーLSSDラッチ220は、SoC中の各スキャンチェーンの長さ(チェーン210を構成するLSSDラッチの数)を揃えるために設けられるLSSDラッチである。本来、チップの良品・不良品を判断する従来のスキャンテストにおいても、スキャンチェーンの長さがまちまちであると、長いスキャンチェーンに対応してテストに要する時間が長くなってしまうため、各スキャンチェーンの長さはほぼ同じとなっている。しかしながら、1、2ビット程度の誤差は存在するため、各スキャンチェーンの長さを完全に一致させるために、必要に応じてダミーLSSDラッチ220が設けられる。図2の例では2個のダミーLSSDラッチ220が設けられている。
これは、本実施形態のテストが終了した時点で、全てスキャンチェーンにおけるLSSDラッチのデータが、同時に元のLSSDラッチに戻ることを保証するためである。各スキャンチェーンの長さが異なると、スキャンテストの終了後にデータを元のLSSDラッチに戻すために必要なクロック数が異なることとなるため、全てのスキャンチェーンデータを同時に復元できない。そこで、ダミーLSSDラッチ220を適宜組み入れて、各スキャンチェーンの長さを一致させる。これにより、上述した「全てのスキャンチェーンの長さを揃える。」という条件を満足する。
マルチプレクサ230は、チェーン210中の特定のLSSDラッチにデータを書き込むためのマルチプレクサである。このマルチプレクサ230にはスキャンチェーン(図ではスキャンアウトの位置)のLSSDラッチのデータとライトデータレジスタ12のデータとが入力される。そして、スキャンチェーンのフィードバックループに沿って各LSSDラッチの値がシフトされ、ターゲットのLSSDラッチの値がマルチプレクサ230に入力された際に、デバッグ回路100の制御回路30の制御によりマルチプレクサ230の出力が切り替わり、LSSDラッチの値の代わりにライトデータレジスタ12の値が選択される。これにより、各LSSDラッチの値がスキャンチェーンのフィードバックループを一周すると、ターゲットのLSSDラッチにライトデータレジスタ12の値が書き込まれることとなる。また、マルチプレクサ230の出力は、デバッグ回路100の制御回路30の制御(OR回路240を介して入力されるライトクロックおよびスキャン長身号(詳細は後述))により、リードデータレジスタ11に取り込まれる。これにより、上述した「スキャンチェーンデータの保持、あるいはデータの書き換えを可能とする。」という条件を満足する。
なお、図2には、さらにマルチプレクサ250が記載されているが、これはチップの良品・不良品を判断する従来のスキャンテストを行う際に、外部ピンからテストパターンをスキャンチェーンに入力するためのものであり、本実施形態のテストでは機能しない。
図3は、図1に示した制御回路30の構成を示す図である。
図3を参照すると、制御回路30は、カウンタ31と、スキャンチェーンの長さ(Scan_Length)を保持したレジスタ32と、カウンタ31の値とレジスタ32の値とを比較する比較回路33と、カウンタ31の値と図1のスキャンナンバーレジスタ13に保持されたスキャンナンバー(Scan_Number)とを比較する比較回路34とを備える。
また図3に示すように、制御回路30は、基本クロックに基づいて、スキャンチェーンデータをフィードバックループに沿ってシフトするのに使用されるAクロック、Bクロック及びCクロックと、リードデータレジスタ11へのスキャンチェーンデータの取り込みに用いられるライトクロック(Write_Clk)とを生成し、送出する。このうち、ライトクロックは基本クロックを2分の1分周して送出する。
カウンタ31は、デバッグ回路100がステートマシン20にて管理されるテストステージにある間、基本クロックをカウントアップし、それ以外のステージではリセットされている。
比較回路33は、カウンタ31のカウント値とレジスタ32に保持されている値とを比較し、カウント値がスキャンチェーンの長さと等しくなったならば、そのタイミングを通知するスキャン長信号(Counter==Scan_Length)をハイレベルとする。このスキャン長信号は、ステートマシン20に入力され、これを条件として、デバッグ回路100におけるテストステージが終了することとなる。なお、レジスタ32に保持されるスキャンチェーンの長さは固定値なので、レジスタではなくROM(Read Only Memory)等の不揮発性のメモリに記録しておいても良い。
比較回路34は、カウンタ31のカウント値とスキャンナンバーレジスタ13に保持されたスキャンナンバーとを比較し、カウント値がスキャンナンバーと等しくなったならば、そのタイミングを通知するターゲット信号(Counter==Scan_Number)をハイレベルとする。このターゲット信号は、図2に示したように、リードデータレジスタ11に入力されて、スキャンチェーンデータの取り込みタイミングを特定する。また、スキャンチェーンのマルチプレクサ230の切り替え信号として入力され、ライトデータレジスタ12に保持されている値の書き込みタイミングを特定する。
上述したAクロック、Bクロック、Cクロックのうち、Aクロック及びBクロックは、デバッグ回路100の状態がテストステージであって、カウンタ31が動作している間、基本クロックに基づいて出力される。したがって、Aクロック及びBクロックのクロック数はスキャンチェーンの長さと等しい。一方、Cクロックは、デバッグ回路100の状態がテストステージにある間は、強制的にローレベルとされる。これらのクロック信号は、チップの良品・不良品を判断するのに行われる従来のスキャンテストで外部から入力されるクロック信号(図3におけるLSSD ACLK、LSSD BCLK、LSSD CCLK)と同種の信号であるが、本実施形態によるデバッグのためのスキャンテスト実行時には、これら外部からのクロック信号を使用できず、各値が固定値となっているため、デバッグ回路100にて生成することとしている。
図4は、Aクロック、Bクロック及びCクロックのタイミングチャートである。
図4を参照すると、デバッグ回路100の状態がテストステージにない場合(SoCが通常の動作中など)は、Aクロック=0、Bクロック=1、Cクロック=1、スキャンゲート(Scan gate)=0の固定値である。一方、テストステージにある場合(スキャンテスト実行時)は、Aクロック及びBクロックが互いに重複しないパルス信号(Non-overlap pulse)となる。これらのクロック数は、上述したようにスキャンチェーンの長さと等しい。したがって、このAクロック及びBクロックにしたがって、各LSSDラッチの値がフィードバックループを構成するスキャンチェーンをシフトしていけば、テストステージが終了してAクロック及びBクロックの出力が止まった時点で、スキャンチェーンを構成する全てのLSSDラッチの値がフィードバックループを一周して元のLSSDラッチに戻ることとなる。
また、デバッグ回路100の状態がテストステージにある間、Cクロックは上述したようにローレベル=0(Inactive)に固定され、スキャンゲートの値は1に固定される。ファンクションクロック(Function clock)であるCクロックが0に固定されることにより、外部からスキャンチェーンにデータが流れ込み、LSSDラッチのデータがスキャンテスト中に破壊されてしまうことを防止する。
図5は、ライトクロックのタイミングチャートである。
上述したように、ライトクロックは、デバッグ回路100の状態がテストステージにある間、基本クロックの2分の1の周波数を持つパルス信号として出力される。そして、クロック数がスキャンナンバーと等しくなったとき、比較回路34からターゲット信号が出力され、図2に示したようにリードデータレジスタ11に接続されたOR回路240の出力をローレベル=0とする。これにより、このタイミングでマルチプレクサ230から出力されているデータ、すなわちターゲットのLSSDラッチの値がリードデータレジスタ11に取り込まれる。
図6は、ステートマシン20が管理するデバッグ回路100の状態遷移を説明する図である。
図6に示すように、ステートマシン20は、「アイドル」、「停止」、「テスト」、「再開」の4つのステージ(状態)を持つ。SoCがリセットされた後は、アイドルステージとなる。スキャンチェーンのLSSDレジスタの値を読み出す読み出し命令がCPU120から発行されると、ステートマシン20は、アイドルステージから停止ステージに移行する。このステージでは、図1に示したデバッグ回路100から出力されるシステムクロックが停止される。これにより、デバッグ回路100およびこれに制御されるスキャンチェーン以外の回路が動作を停止する。
次に、テストステージに移行すると、制御回路30により上述したようにクロック制御が行われ、スキャンチェーンを構成する所望のLSSDラッチに対してデータの読み書きが行われる。このテストステージでは、生成されるクロックにしたがってスキャンチェーンを構成する各LSSDラッチの値が順次シフトされ、スキャンチェーン中のLSSDラッチの数(スキャンチェーンの長さ)分だけシフトが行われると、スキャンチェーンのフィードバックループに沿って各LSSDラッチのデータが一周し元の値に戻る。そして、この時点でテストステージが終了する。すなわち、スキャンチェーンのLSSDラッチの数が3000個であれば、3000回スキャンシフト(Scan shift)を行った時点で終了する。
テストステージが終了すると、再開ステージに移行する。この再開ステージでは、停止されていたシステムクロックを再び動作させ、SoCの通常動作が可能な状態となる。この後は、アイドルステージに戻り、一連の作業が終了する。
以上の状態遷移において、停止ステージからテストステージの終了までシステムクロックを停止して、デバッグ回路100およびこれに制御されるスキャンチェーン以外の回路の動作を停止させるのは、スキャンテスト中にシステムが誤動作してスキャンチェーン内のデータを破壊してしまうのを防ぐためである。もともとスキャンテスト中は、LSSDラッチのCクロックがInactive状態になるため、SoCの通常動作で機能する回路部分においてデータが失われることはない。しかし、スキャンテスト中にCPU120等が動作していると、スキャンテストの動作の影響で、割り込み処理(Interrupt)等の入力信号が変化しCPU120が誤動作する可能性が考えられる。そこで、システムクロックを停止することによって、このような事態を回避している。
次に、以上のように構成された本実施形態によるデバッグの手順について説明する。
図7は、本実施形態によるデバッグにおいて、スキャンチェーンを構成する所望のLSSDラッチの値を読み出す動作の全体的な流れを説明するフローチャートである。
図7を参照すると、まず、準備段階の動作として、CPU120がターゲット(データの読み出し対象)のLSSDラッチを決め、そのスキャンチェーン上の位置(先頭から何番目か)を調べる(ステップ701)。これは、スキャンアウトからスキャンチェーンをバックトレース(Back trace)することにより得ることができる。
ターゲットのLSSDラッチの位置が得られたら、CPU120は、その位置を示すスキャンナンバー(スキャンチェーンの先頭から数えた数)をスキャンナンバーレジスタ13に書き込む(ステップ702)。そして、リードデータレジスタ11の内容を読み込む命令を実行する(ステップ703)。この命令が実行されると、デバッグ回路100のステートマシン20が動作を開始し、デバッグ回路100がアイドルステージから停止ステージに移行してシステムクロックを停止させる(ステップ704)。
次に、ステートマシン20の制御によりデバッグ回路100が停止ステージからテストステージへ移行し、SoC中の全てのスキャンチェーンに対するスキャンが実行される(ステップ705)。そして、制御回路30から出力されるAクロック及びBクロックによってスキャンチェーンのLSSDラッチの値が順次シフトしていき、カウンタ31による基本クロックのカウント値がステップ702でスキャンナンバーレジスタ13に書き込まれたスキャンナンバーと等しくなったときに、その時点でスキャンアウトとして取り出されるデータ(すなわちターゲットのLSSDラッチの値)がリードデータレジスタ11に読み込まれる(ステップ706)。
この後、Aクロック及びBクロックによるLSSDラッチの値のシフトと、カウンタ31による基本クロックのカウントが続行され、カウンタ31のカウント値がスキャンの長さと等しくなったならば、ステートマシン20の制御によりスキャンテストが終了する(ステップ707)。
スキャンテストが終了したならば、ステートマシン20の制御によりデバッグ回路100がテストステージから開始ステージへ移行し、システムクロックを再開させる(ステップ708)。そして、CPU120が動作を再開し、上記の各ステップでリードデータレジスタ11に取り込まれたデータがCPU120に返送されて、ステップ703でCPU120が実行した命令が終了する(ステップ709)。なお、デバッグ回路100は、開始ステージへ移行した後、さらにステートマシン20の制御によりアイドルステージへ移行し、次のスキャンテストのための命令が実行されるまで、その状態が保持される。
図7に示した動作では、スキャンチェーン中のターゲットのLSSDラッチからデータを読み出す場合について説明したが、このターゲットのLSSDラッチに対してデータの書き込みを行う場合には、まず準備段階として、CPU120がターゲットのLSSDレジスタに書き込むべきデータをライトデータレジスタ12に書き込んでおく。そして、ライトデータレジスタ12の内容を書き込む命令を実行する。
デバッグ回路100は、上記のステップ704〜ステップ706までの動作と同様にして、ターゲットのLSSDレジスタのデータをリードデータレジスタ11に読み込む。このとき、読み込みと同じタイミングでスキャンチェーンから読み出されたデータがライトデータレジスタ12のデータに切り替えられて、スキャンチェーンに戻される。したがって、スキャンチェーンの各LSSDラッチの値がシフトしていき、フィードバックループを一周してスキャンテストが終了したときには、ターゲットのLSSDラッチのデータのみがライトデータレジスタ12に書かれていたデータに変更されることとなる。
以上説明したように、本実施形態の機構およびそのデバッグ方法を用いることにより、SoC内部の全てのレジスタの値をCPU120のリード・コマンドを使って読み取ることができる。これにより、例えばプログラム制御による所定の処理を実行したときにシステムが期待と異なる動作をした場合を考えると、CPU120のデバッガを使用してプログラムの任意のところで停止させ、対象となる回路の状態を調べることが可能となる。
また、問題となるレジスタの値を読み取るだけでなく、これを正しい値に書き換え、プログラムを再スタートさせることができる。この機能により、バグの修正が正しいかどうかを確認することも可能となる。
さらに、この任意のレジスタの内容をプログラム制御にて修正できることから、SoCにて構成されたASICがバグのため誤動作する場合でも、そのバグの内容によってはパッチを当ててソフトウェア的に修正できる可能性がある。ASICの開発コストを考えると、チップを再設計せずにバグが除去できるとすれば、そのメリットは計り知れない。
本実施形態によるスキャンチェーンを用いたデバッグを実現するSoC(System on Chip)の構成を示す図である。 本実施形態のスキャンテストのために用いられるスキャンチェーンの構成を示す図である。 本実施形態におけるデバッグ回路の制御回路の構成を示す図である。 本実施形態の制御回路が出力するAクロック、Bクロック及びCクロックのタイミングチャートである。 本実施形態の制御回路が出力するライトクロックのタイミングチャートである。 本実施形態のステートマシンが管理するデバッグ回路の状態遷移を説明する図である。 本実施形態によるデバッグにおいて、スキャンチェーンを構成する所望のLSSDラッチの値を読み出す動作の全体的な流れを説明するフローチャートである。 LSSDラッチの構成を示す図である。 従来のLSSDスキャンテストを実行するためのスキャンチェーンを説明する図である。
符号の説明
11…リードデータレジスタ、12…ライトデータレジスタ、13…スキャンナンバーレジスタ、20…ステートマシン、30…制御回路、31…カウンタ、32…レジスタ、33、34…比較回路、100…デバッグ回路、110…CPUローカル・バス、120…CPU、210…チェーン、220…ダミーLSSDラッチ、230…マルチプレクサ

Claims (15)

  1. 複数のラッチ回路がチェーン状に接続された、スキャンテストを実行するためのスキャンチェーンと、
    前記スキャンチェーンに対するスキャンテストを実行しながら当該スキャンチェーンを構成する特定のラッチ回路を指定して当該ラッチ回路のデータを読み取るデバッグ回路と
    を備えることを特徴とするマイクロコンピュータ。
  2. 前記デバッグ回路は、前記スキャンチェーンを構成する特定のラッチ回路を指定して当該ラッチ回路にデータを書き込むことを特徴とする請求項1に記載のマイクロコンピュータ。
  3. 前記スキャンチェーンは、当該スキャンチェーンの出力を、当該スキャンチェーンを構成する先頭のラッチ回路の入力に戻してフィードバックループを構成することを特徴とする請求項1に記載のマイクロコンピュータ。
  4. 前記スキャンチェーンは複数存在し、各スキャンチェーンは同数のラッチ回路にて構成されることを特徴とする請求項1に記載のマイクロコンピュータ。
  5. 前記スキャンチェーンは、スキャンテストを行うためのラッチ回路と、スキャンチェーンを構成するラッチ回路の数を揃えるためのダミーのラッチ回路とを備えることを特徴とする請求項4に記載のマイクロコンピュータ。
  6. 前記デバッグ回路は、
    前記スキャンチェーンにおける前記特定のラッチ回路をスキャンテストで用いられるクロックの数で指定したデータを保持する第1のレジスタと、
    前記第1のレジスタに保持されたデータにて指定される前記特定のラッチ回路から読み取ったデータを保持する第2のレジスタと、
    前記スキャンテストで用いられるクロックのカウント値と前記第1のレジスタに保持されたデータとから得られるタイミングで前記第2のレジスタにデータを出力するための制御信号を前記スキャンチェーンに送信する制御回路と
    を備えることを特徴とする請求項1に記載のマイクロコンピュータ。
  7. 前記第1のレジスタに保持されたデータにて指定される前記特定のラッチ回路に書き込むデータを保持する第3のレジスタをさらに備え、
    前記制御回路は、前記スキャンテストで用いられるクロックのカウント値と前記第1のレジスタに保持されたデータとから得られるタイミングで前記第3のレジスタに保持されたデータを前記スキャンチェーンに送信することを特徴とする請求項6に記載のマイクロコンピュータ。
  8. 前記スキャンチェーン及び前記デバッグ回路は、スキャンテストの対象である回路と共に単一の集積回路上に実装されたことを特徴とする請求項1に記載のマイクロコンピュータ。
  9. 複数のラッチ回路がチェーン状に接続された、スキャンテストを実行するためのスキャンチェーンと、
    前記スキャンチェーンを構成するラッチ回路のデータを当該スキャンチェーンに沿って順次シフトさせるためのクロックを生成して前記スキャンチェーンに供給するクロック供給手段と、
    前記クロックのカウント値に基づいて得られるタイミングで前記スキャンチェーンから前記ラッチ回路のデータの読み取りを行うデータ読み取り手段と
    を備えることを特徴とするマイクロコンピュータ。
  10. 前記クロックのカウント値に基づいて得られるタイミングで前記スキャンチェーンに対して前記ラッチ回路に書き込むデータを送信するデータ書き込み手段をさらに備えることを特徴とする請求項9に記載のマイクロコンピュータ。
  11. 前記スキャンチェーンは、当該スキャンチェーンの出力を、当該スキャンチェーンを構成する先頭のラッチ回路の入力に戻してフィードバックループを構成し、
    前記クロック供給手段は、前記ラッチ回路のデータが前記フィードバックループに沿って一周するだけの前記クロックを生成し前記スキャンチェーンに供給することを特徴とする請求項9に記載のマイクロコンピュータ。
  12. 前記データ読み取り手段にて読み取られた前記ラッチ回路のデータを評価する評価手段をさらに備え、
    前記スキャンチェーンと、前記クロック供給手段と、前記データ読み取り手段と、前記評価手段とが単一の集積回路上に実装されたことを特徴とする請求項9に記載のマイクロコンピュータ。
  13. 複数のラッチ回路がチェーン状に接続された、スキャンテストを行うためのスキャンチェーンを内蔵した電子回路に対してデバッグを行うデバッグ方法であって、
    前記スキャンチェーンを構成するラッチ回路のデータを所定のクロックに従って順次シフトさせるステップと、
    前記クロックのカウント値にて特定される前記ラッチ回路からデータを読み出し、当該ラッチ回路から読み取られたデータをデータ読み取り用のレジスタに保持するステップと、
    前記データ読み取り用のレジスタに保持されたデータをコンピュータが読み込むステップと
    を含むことを特徴とするデバッグ方法。
  14. 前記クロックのカウント値にて特定される前記ラッチ回路のデータを予めデータ書き込み用のレジスタに保持されたデータに置き換えるステップをさらに含むことを特徴とする請求項13に記載のデバッグ方法。
  15. 前記ラッチ回路のデータをシフトさせるステップは、
    システムクロックを停止するステップと、
    データのシフトに用いられる前記所定のクロックを生成するステップとを含み、
    前記データをコンピュータが読み込むステップは、
    データのシフトに用いられる前記所定のクロックを停止するステップと、
    前記システムクロックを再開するステップとを含むことを特徴とする請求項13に記載のデバッグ方法。
JP2003429853A 2003-12-25 2003-12-25 マイクロコンピュータ及びそのデバッグ方法 Pending JP2005190112A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003429853A JP2005190112A (ja) 2003-12-25 2003-12-25 マイクロコンピュータ及びそのデバッグ方法
US10/905,227 US20050154947A1 (en) 2003-12-25 2004-12-22 Microcomputer And Method For Debugging Microcomputer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003429853A JP2005190112A (ja) 2003-12-25 2003-12-25 マイクロコンピュータ及びそのデバッグ方法

Publications (1)

Publication Number Publication Date
JP2005190112A true JP2005190112A (ja) 2005-07-14

Family

ID=34736318

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003429853A Pending JP2005190112A (ja) 2003-12-25 2003-12-25 マイクロコンピュータ及びそのデバッグ方法

Country Status (2)

Country Link
US (1) US20050154947A1 (ja)
JP (1) JP2005190112A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012172620A1 (ja) * 2011-06-14 2012-12-20 パナソニック株式会社 半導体集積回路およびデバッグ方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10335809B4 (de) * 2003-08-05 2010-07-01 Infineon Technologies Ag Integrierte Schaltung mit einem zu testenden elektronischen Schaltkreis und Testsystem-Anordnung zum Testen der integrierten Schaltung
US10656202B1 (en) * 2018-09-21 2020-05-19 Xilinx, Inc. Electronic device including integrated circuit with debug capabilities
FR3101449B1 (fr) * 2019-09-27 2021-10-15 St Microelectronics Sa Détection et correction d'erreurs
FR3101448B1 (fr) * 2019-09-27 2021-10-15 St Microelectronics Sa Procédé de détection d'erreurs

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6093559A (ja) * 1983-10-26 1985-05-25 Fujitsu Ltd スキヤン方式
JPH01132980A (ja) * 1987-11-17 1989-05-25 Mitsubishi Electric Corp テスト機能付電子回路装置
JPH05215816A (ja) * 1991-12-06 1993-08-27 Nec Corp 情報処理装置
JPH07270494A (ja) * 1994-03-30 1995-10-20 Toshiba Corp 集積回路装置
JP2001027958A (ja) * 1999-05-11 2001-01-30 Sharp Corp 1チップマイクロコンピュータおよびその制御方法、ならびにそれを用いたicカード

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4204824B2 (ja) * 2001-09-20 2009-01-07 新明和工業株式会社 光学系
US7032202B2 (en) * 2002-11-19 2006-04-18 Broadcom Corporation System and method for implementing a flexible top level scan architecture using a partitioning algorithm to balance the scan chains
GB2403847B (en) * 2003-07-01 2005-11-16 Micron Technology Inc Optical channels for multi-level metal optical imagers and method for manufacturing same
US7137086B2 (en) * 2004-07-06 2006-11-14 Dafca, Inc. Assertion checking using two or more cores

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6093559A (ja) * 1983-10-26 1985-05-25 Fujitsu Ltd スキヤン方式
JPH01132980A (ja) * 1987-11-17 1989-05-25 Mitsubishi Electric Corp テスト機能付電子回路装置
JPH05215816A (ja) * 1991-12-06 1993-08-27 Nec Corp 情報処理装置
JPH07270494A (ja) * 1994-03-30 1995-10-20 Toshiba Corp 集積回路装置
JP2001027958A (ja) * 1999-05-11 2001-01-30 Sharp Corp 1チップマイクロコンピュータおよびその制御方法、ならびにそれを用いたicカード

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012172620A1 (ja) * 2011-06-14 2012-12-20 パナソニック株式会社 半導体集積回路およびデバッグ方法

Also Published As

Publication number Publication date
US20050154947A1 (en) 2005-07-14

Similar Documents

Publication Publication Date Title
US5708773A (en) JTAG interface system for communicating with compliant and non-compliant JTAG devices
US6574762B1 (en) Use of a scan chain for configuration of BIST unit operation
JP5373403B2 (ja) データ処理システムを試験するための方法および装置
US5828824A (en) Method for debugging an integrated circuit using extended operating modes
US7353442B2 (en) On-chip and at-speed tester for testing and characterization of different types of memories
US7644333B2 (en) Restartable logic BIST controller
US9037911B2 (en) Debug state machines and methods of their operation
US7653845B2 (en) Test algorithm selection in memory built-in self test controller
US7340658B2 (en) Technique for combining scan test and memory built-in self test
KR100714240B1 (ko) 반도체 집적회로 및 기록매체
US6564347B1 (en) Method and apparatus for testing an integrated circuit using an on-chip logic analyzer unit
US20160349320A1 (en) Remote bus wrapper for testing remote cores using automatic test pattern generation and other techniques
CN107450003B (zh) 半导体装置、电子控制系统和评估电子控制系统的方法
US11519961B2 (en) Extended JTAG controller and method for functional debugging using the extended JTAG controller
US6260166B1 (en) Observability register architecture for efficient production test and debug
US7089473B2 (en) Method and apparatus for testing a circuit using a die frame logic analyzer
US7607057B2 (en) Test wrapper including integrated scan chain for testing embedded hard macro in an integrated circuit chip
US20100019774A1 (en) Isolation cell with test mode
JP2005190112A (ja) マイクロコンピュータ及びそのデバッグ方法
JP2018190751A (ja) 半導体装置および半導体装置のテスト方法
Josephson et al. Test methodology for the McKinley processor
JP4176944B2 (ja) 半導体集積回路及び記録媒体
Bushard et al. DFT of the Cell Processor and its Impact on EDA Test Softwar
US20070032999A1 (en) System and method for emulating hardware failures and method of testing system software incorporating the same
JP4131937B2 (ja) テスト機能を有する論理回路

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060411

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060710

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070206

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070419