(57)【要約】【課題】オリジナルの回路に影響を与えず、自由度の高いデバッグを可能にする。【解決手段】命令デコード手段１２は、所定のタイミングに従って命令レジスタ１１の命令コードを復号し、キャプチャ制御手段１４へ送る。また、トリガ検出手段１３は、トリガ信号線３１の状態変化を監視し、変化を検出するとこれをキャプチャ制御手段１４へ通知する。キャプチャ制御手段１４は、復号された命令に従って、トリガとなるトリガ信号線３１の状態変化が通知され、トリガ条件と一致した場合には、トリガ条件成立と判定する。ここで、遅延時間が設定されていた場合、遅延時間が経過した後、設定されていない場合には直ちにキャプチャ手段１５を起動する。キャプチャ手段１５は、キャプチャ制御手段１４に従ってキャプチャ処理を開始し、観測信号線３２の状態を読出し、これを観測結果として出力する。【選択図】　　　　図１
2004132844.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２の信号線を有する試験対象回路を内蔵した半導体装置において、
前記第１の信号線における状態変化を規定した命令コードを記憶する命令コード記憶手段と、
前記第１の信号線における状態変化を検出する検出手段と、
前記検出手段によって検出された前記状態変化が前記命令コード記憶手段に記憶された前記命令コードに規定される状態変化と一致するときにおける前記第２の信号線の状態を外部出力する出力手段と、
を具備することを特徴とする半導体装置。
【請求項２】
前記出力手段は、前記命令コードにより指定された前記半導体装置の外部から供給される信号に応じて前記第２の信号線の状態を外部出力することを特徴とする請求項１記載の半導体装置。
【請求項３】
前記出力手段は、前記検出手段により前記第１の信号線における状態変化が検出された時点から前記命令コードにより指定された時間が経過したときにおける前記第２の信号線の状態を外部出力することを特徴とする請求項１記載の半導体装置。
【請求項４】
前記命令コード記憶手段は、前記半導体装置の外部からシリアルデータ形式の前記命令コードが供給され、
前記出力手段は、前記第２の信号線の状態をシリアルデータ形式により前記半導体装置の外部へ出力することを特徴とする請求項１記載の半導体装置。
【請求項５】
第１及び第２の信号線を有する試験対象回路と、記憶手段と、前記第１の信号線における状態変化を検出する検出手段と、出力手段とを具備した半導体装置の試験方法であって、
前記記憶手段へ前記第１の信号線における状態変化を規定した命令コードを記憶させ、
前記出力手段に対し、前記検出手段によって検出された前記状態変化が前記記憶手段へ供給された前記命令コードに規定される状態変化と一致したときにおける前記第２の信号線の状態を外部出力させることを特徴とする半導体装置の試験方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は半導体装置およびその試験方法に関し、特に被試験対象回路の内部状態が外部から観測可能な半導体装置およびその試験方法に関する。
【０００２】
【従来の技術】
近年、製造プロセスの微細化等によって、半導体装置内部の回路の状態を外部から読み取ることが難しくなってきている。
【０００３】
このような半導体装置内部の回路状態を読み取る代表的な技術として、バウンダリスキャン（ＪＴＡＧ）と呼ばれる技術がある。（ＩＥＥＥＳｔｄ．１１４９．１）ＪＴＡＧによれば、半導体装置の入出力ピンのデータをシリアルに読み出すことができるが、任意の内部状態を読み出すことはできない。また、専用クロックでの動作に限定されており、近年の高速化された半導体の内部クロックに追従して高速動作速度そのままに動作することはできない。
【０００４】
このため、任意の信号をトリガとしてブレークポイントを設定し、その時点の指定された内部状態を専用のデバッガを通して外部へ読み出す手法がある。（例えば、特許文献１参照）
ここで、ＷＯ　０１／４０９４１に記載の従来の内部状態を読出し可能な半導体装置について説明する。図１１は、従来の内部状態を外部へ読出し可能な半導体装置の構成の概略図である。
【０００５】
半導体装置３００は、複数の回路ブロックから構成されており、そのなかに被試験対象の電子回路（以下、ＤＵＴとする　ＤＵＴ；Ｄｅｖｉｃｅ　Ｕｎｄｅｒ　Ｔｅｓｔ）３０２がある。ＤＵＴ３０２は、設計時に、オリジナルの設計記述に対し、インストゥルメンタによって内部状態を観測するための観測指示情報に応じた観測点や観測回路が付加され、新たな設計記述が作成される。続いて、この改変された設計情報に基づいて論理合成により電子回路が半導体上に製作される。また、ＤＵＴ３０２作成に用いられた観測指示情報に基づいて、ＤＵＴ３０２の信号を観測するためのデバッグ回路が作成され、ＤＵＴ３０２に組み込まれる。以下、組み込まれたデバッグ回路をＤＩＣ（Ｄｅｓｉｇｎ　Ｉｎｓｔｒｕｍｅｎｔａｔｉｏｎ　Ｃｉｒｃｕｉｔｒｙ）３０１とする。
【０００６】
ユーザは、このような半導体装置３００を用いることによって、インストゥルメンタに指示した範囲内で、観測対象の回路（ＤＵＴ３０２）から観測データをデバッグ回路（ＤＩＣ３０１）経由で引き出すことができるようになる。
【０００７】
【特許文献１】
ＷＯ　０１／４０９４１（第１６頁−第１８頁、第１Ａ図）
【０００８】
【発明が解決しようとする課題】
しかし、従来の内部状態を外部から読出し可能な半導体装置およびこれを用いた試験方法では、観測点や観測回路の付加が被試験対象の電子回路に影響を与えてしまうという問題がある。また、試験時に、予め組み込まれている範囲内での観測しかできないという問題がある。
【０００９】
上記の説明のように、従来のＤＵＴ３０２は、インストゥルメンタによってオリジナルの設計記述に対して観測指示情報に応じた観測点や観測回路が付加された後、論理合成や配置配線装置による処理が行なわれて回路が作成される。このため、作成されたＤＵＴ３０２には、観測点や観測回路が内包されている。従って、ＤＵＴ３０２はオリジナルの回路とは違うものになってしまっており、内部回路の機能的にはオリジナルと同一であっても、セレクタ等が挿入されることにより、内部タイミングについてはオリジナルの回路と同一とは言えない。
【００１０】
このように、従来、観測点や観測回路の付加により、オリジナルの設計が改変されてしまうという問題があった。この結果、内部のクリティカルパスのタイミング等に影響を与える可能性があり、速度試験に応用することは難しかった。さらに、セレクタ等の挿入された余分な経路を通過しなければならないため、高速化の妨げとなり、かつレイアウト面積を増大させる等、製品化された半導体装置内に組み込むことは難しかった。
【００１１】
また、ＤＵＴ３０２に付加される観測点や観測回路およびＤＩＣ３０１は、インストゥルメンタによって設計時に形成されるものであり、チップを製作した後に変更することができない。このため、試験時には、指示された範囲内での観測しかできないという問題がある。例えば、チップ完成後に観測したい信号があった場合、その信号に関する観測回路が予め組み込まれていなければ観測することができない。
【００１２】
本発明はこのような点に鑑みてなされたものであり、オリジナルの回路に影響を与えることなく、かつ自由度の高いデバッグが可能となる半導体装置およびその試験方法を提供することを目的とする。
【００１３】
【課題を解決するための手段】
本発明では上記課題を解決するために、第１及び第２の信号線を有する試験対象回路を内蔵した半導体装置において、前記第１の信号線における状態変化を規定した命令コードを記憶する命令コード記憶手段と、前記第１の信号線における状態変化を検出する検出手段と、前記検出手段によって検出された前記状態変化が前記命令コード記憶手段に記憶された前記命令コードに規定される状態変化と一致するときにおける前記第２の信号線の状態を外部出力する出力手段と、を具備することを特徴とする半導体装置、が提供される。
【００１４】
このような構成の半導体装置では、試験対象回路には、任意の観測点における回路の内部状態を回路外部へ出力するための第１及び第２の信号線が組み込まれている。命令コード記憶手段には、キャプチャ処理開始のトリガとする第１の信号線における状態変化を規定した命令コードが記憶されている。試験が開始されると、検出手段は、接続する第１の信号線の状態を監視し、状態変化を検出する。出力手段は、検出手段の検出した第１の信号線の状態変化が命令コード記憶手段に記憶された命令コードに規定される状態と一致するかどうかを判断する。一致した場合、出力手段は、第２の信号線の状態を取り込み、外部へ出力する。
【００１５】
また、上記課題を解決するために、第１及び第２の信号線を有する試験対象回路と、記憶手段と、前記第１の信号線における状態変化を検出する検出手段と、出力手段とを具備した半導体装置の試験方法であって、前記記憶手段へ前記第１の信号線における状態変化を規定した命令コードを記憶させ、前記出力手段に対し、前記検出手段によって検出された前記状態変化が前記記憶手段へ供給された前記命令コードに規定される状態変化と一致したときにおける前記第２の信号線の状態を外部出力させることを特徴とする半導体装置の試験方法、が提供される。
【００１６】
このような手順の試験方法が実施される半導体装置の試験対象回路には、予め、回路内の任意の観測点における状態を回路の外部へ出力する第１及び第２の信号線が組み込まれている。また、記憶手段と、第１の信号線における状態変化を検出する検出手段と、出力手段とを具備している。記憶手段には、第１の信号線における状態変化を規定した命令コードを記憶させる。検出手段によって第１の信号線の状態変化が検出される。検出された状態変化が記憶手段へ供給された命令コードに規定される状態変化と一致した場合、出力手段によって第２の信号線の状態を外部へ出力させる。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
【００１８】
図１は、実施の形態に適用される発明の概念図である。
半導体装置１は、デバッグ回路を構成するＤＦＤ（Ｄｅｓｉｇｎ　Ｆｏｒ　Ｄｅｂｕｇ）システム１０と、被試験対象回路であるＤＵＴ２０と、を具備している。ＤＦＤシステム１０は、ＤＵＴ２０に設けられた任意の観測点における状態を伝達する信号線を介してＤＵＴ２０に接続する。信号線には、状態変化を検出する第１の信号線と、その状態を外部へ出力する第２の信号線とがある。
【００１９】
ＤＦＤシステム１０は、命令コードを記憶する命令レジスタ１１、命令コードを復号する命令デコード手段１２、第１の信号線の状態変化を検出するトリガ検出手段１３、及び第１の信号線における状態変化が命令コードに規定された状態と一致した場合に第２の信号線の状態を外部へ出力する出力手段であってキャプチャ処理の制御を行なうキャプチャ制御手段１４とキャプチャ処理を行なうキャプチャ手段１５から構成される。
【００２０】
以下、ＤＦＤシステム１０とＤＵＴ２０を接続する信号線のうち、トリガ検出手段１３と接続する第１の信号線をトリガ信号線３１、キャプチャ手段１５と接続する第２の信号線を観測信号線３２とする。
【００２１】
以下、各部について詳細に説明する。
命令レジスタ１１は、キャプチャ処理を開始するトリガとするトリガ信号線３１の指定およびトリガとする状態変化の方向（立上り／立下り等）、トリガ条件成立からキャプチャ処理開始までの遅延時間等、トリガ信号線３１における状態変化を規定した命令コードを記憶する命令コード記憶手段である。命令レジスタ１１には、外部から入力する命令コードが書込まれており、必要に応じて書き換えることができる。
【００２２】
命令デコード手段１２は、所定のタイミングで命令レジスタ１１に記憶された命令コードを読出し、これを復号してキャプチャ制御手段１４へ伝達する。
トリガ検出手段１３は、ＤＵＴ２０内部と接続するトリガ信号線３１の状態変化を監視する検出手段であり、状態変化を検出すると、これをキャプチャ制御手段１４へ通知する。
【００２３】
キャプチャ制御手段１４は、復号された命令に従って、トリガ条件が成立したかどうかを判定し、判定結果に応じてキャプチャ手段１５の起動を制御する。命令に指定されたトリガ信号線３１の状態変化がトリガ検出手段１３から通知されるのを待ち、トリガ条件が命令コードの内容と一致すれば、トリガ条件が成立したと判断する。トリガ条件の成立判断は、トリガ検出手段１３によって行なわれてもよい。ここで、トリガ条件が成立したと判定された場合、遅延時間の設定があれば遅延時間が経過した後、なければ直ちにキャプチャ手段１５によるキャプチャ処理を開始させる。
【００２４】
キャプチャ手段１５は、キャプチャ制御手段１４の制御に従って、キャプチャ処理を開始し、接続する観測信号線３２の状態を読出し、内部に保持する。保持したデータは、観測結果として順次試験装置に出力する。
【００２５】
ＤＵＴ２０は、所定の処理を実行する被試験対象の回路であり、予め、任意の観測点における状態をＤＦＤシステム１０に出力する信号線が組み込まれている。信号線の数は任意であり、また、任意の１つの信号線をトリガとキャプチャの双方で用いることもできる。
【００２６】
このような構成の半導体装置１の動作およびこの半導体装置１を用いた試験方法について説明する。
半導体装置１のＤＵＴ２０には、内部の信号状態を外部へ出力するための信号線（トリガ信号線３１と観測信号線３２）が組み込まれており、ＤＦＤシステム１０が、この信号線を介してＤＵＴ２０に接続している。ＤＵＴ２０へ信号線を組み込む手法については、後述する。
【００２７】
ＤＦＤシステム１０の命令レジスタ１１には、キャプチャ処理を開始するトリガとなるトリガ信号線３１の指定、状態変化の方向、および遅延時間等のトリガ条件設定等が命令コードとして予め記憶されている。
【００２８】
試験が開始されると、命令デコード手段１２は、所定のタイミングに従って命令レジスタ１１の命令コードを復号し、キャプチャ制御手段１４へ送る。また、トリガ検出手段１３は、トリガ信号線３１の状態変化を監視し、変化を検出するとこれをキャプチャ制御手段１４へ通知する。キャプチャ制御手段１４は、復号された命令に従って、トリガとなるトリガ信号線３１の状態変化が通知され、トリガ条件と一致した場合には、トリガ条件成立と判定する。ここで、遅延時間が設定されていた場合、遅延時間が経過した後、設定されていない場合には直ちにキャプチャ手段１５を起動する。キャプチャ手段１５は、キャプチャ制御手段１４に従ってキャプチャ処理を開始し、観測信号線３２の状態を読出し、これを観測結果として出力する。
【００２９】
上記の説明のように、観測用の信号線をＤＵＴ２０に追加し、ＤＦＤシステム１０でキャプチャ処理をすることにより、半導体装置内部にあって外部から直接観測することのできない観測点の状態を任意のタイミングでラッチする。ラッチされたデータを読み出すことにより、外部の試験装置で内部状態を観測することが可能となる。ＤＵＴ２０は、オリジナル回路に観測用の信号線が追加されるのみであるので、オリジナルの回路とほぼ同一の振る舞いをすることができる。また、ラッチするタイミングを含むキャプチャ開始のトリガ条件は、命令レジスタ１１に記憶する命令コードとしてプログラムされるため、柔軟に変更可能である。このように、本発明によれば、オリジナルの回路に影響を与えることなく、かつ自由度の高いデバッグが可能となる。
【００３０】
次に、本発明が適用される実施の形態について説明する。
図２は、本発明の実施の形態である半導体装置のデバッグ回路のブロック図である。本発明の実施の形態である半導体装置のデバッグ回路であるＤＦＤシステム１００は、命令コードを記憶する命令レジスタ１１０、命令レジスタの命令コードを復号する命令デコーダ１２０、ＤＵＴからのトリガ信号線３１を監視してトリガを検出するトリガ検出器１３０、キャプチャ処理およびシステム全体を制御する制御ブロック１４０、シャドウ・レジスタ１６０を制御する信号を生成するイネーブル信号生成器１５０、観測信号線３２から取り出した信号値を保持するシャドウ・レジスタ１６０および試験装置２００へ観測結果を出力する出力セレクタ１７０から構成される。また、このＤＦＤシステム１００は、命令入力端子１８１、タイミング制御端子１８２および出力端子１９１を介して試験装置２００と接続し、データ交換を行なう。
【００３１】
命令レジスタ１１０は、試験装置２００より命令入力端子１８１を介して入力する命令コードを記憶しておくレジスタである。この命令コードは、外部の試験装置２００からシリアルデータとして順次入力される。命令コードには、キャプチャ処理のトリガ条件が設定されている。
【００３２】
図３は、命令コードの一例である。図３に示した命令コード５００は、オペコード５０１、立上り／立下り５０２、信号ＩＤ５０３およびディレイ周期５０４から構成される。
【００３３】
オペコード５０１は、キャプチャを起動する条件がオペレーション・コードとして設定されている。図３の例の場合には、手動キャプチャ（ＭＣＡＰ）と、信号キャプチャ（ＳＣＡＰ）の２通りがある。手動キャプチャ（ＭＣＡＰ）は、外部の試験装置２００が設定するタイミングでキャプチャを開始する設定であり、そのトリガタイミングはタイミング制御端子１８２を介してＤＦＤシステム１００へ入力する。一方、信号キャプチャ（ＳＣＡＰ）は、トリガ信号線３１に接続する被試験対象回路の観測点の状態変化によってキャプチャを開始する設定である。立上り／立下り５０２は、信号キャプチャが選択された場合、キャプチャを開始するトリガ信号の状態変化の指定である、立上りで開始するか立下りで開始するかの設定である。これらの２つのフィールドも必要に応じて条件を加えることができる。またビット数も任意のビット数とすることが可能である。
【００３４】
信号ＩＤ５０３は、信号キャプチャが選択された場合、キャプチャ開始の判定に用いるトリガ信号の設定である。このフィールドのビット長は、トリガ信号線３１の数に応じて自由に設定することができる。ディレイ周期５０４は、トリガ検出後のキャプチャ・タイミングのディレイ周期の設定である。このフィールドも、トリガ検出から最大何サイクルディレイさせる可能性があるかによって自由にビット長を規定できる。このように、命令コードの大きさは、必要に応じて最適化することができる。
【００３５】
図２に戻って説明する。
命令デコーダ１２０は、命令レジスタ１１０に記憶された命令コードを読込み、復号して制御ブロック１４０へ引き渡す。
【００３６】
トリガ検出器１３０は、ＤＵＴ２０から引き出されたトリガ信号線３１に接続し、命令コードに基づいて制御ブロック１４０が選択したトリガ信号の状態変化を監視する。そして、トリガ信号の変化を検出すると、アクティブを示す信号をイネーブル信号生成器１５０と制御ブロック１４０へ伝える。
【００３７】
制御ブロック１４０は、命令デコーダ１２０の復号した命令コードに従ってＤＦＤシステム１００全体を制御する。手動キャプチャが設定されていれば、タイミング制御端子１８２から入力する開始指示を待ち、指示が入力するとイネーブル信号生成器１５０と出力セレクタ１７０を制御し、ディレイ周期遅延させた後、観測信号線３２から読込んだ信号値をシャドウ・レジスタ１６０にキャプチャし、出力セレクタ１７０より出力させるようにする。また、信号キャプチャが設定されている場合、トリガ検出器１３０にトリガ信号を指示し、トリガ検出器１３０からのトリガ検出通知を待つ。トリガ検出が通知されると、イネーブル信号生成器１５０と出力セレクタ１７０を制御し、ディレイ周期遅延させた後、観測信号線３２から読込んだ信号値をシャドウ・レジスタ１６０にキャプチャし、出力セレクタ１７０より出力させるようにする。さらに、出力セレクタ１７０に対しては、命令デコーダ１２０より取得した命令コードと、シャドウ・レジスタ１６０に保持された観測データとが順次出力されるように制御を行なう。
【００３８】
イネーブル信号生成器１５０は、制御ブロック１４０に従って、キャプチャ・イネーブル信号（ＣＥＮ）と出力イネーブル信号（ＳＯＥ）を生成し、シャドウ・レジスタ１６０に対して観測信号線３２が接続する観測データをラッチし、かつラッチした観測データを出力セレクタ１７０へ出力するように指示を送る。
【００３９】
シャドウ・レジスタ１６０は、イネーブル信号生成器１５０の生成するキャプチャ・イネーブル信号（ＣＥＮ）と、出力イネーブル信号（ＳＯＥ）によって制御される。ＤＵＴ２０内部の観測点より引き出された観測信号線３２からのデータは、イネーブル信号生成器１５０によって生成されたキャプチャ・イネーブル信号（ＣＥＮ）のタイミングでラッチする。その後、ラッチした観測データは、出力イネーブル信号（ＳＯＥ）のタイミングによって、シリアルデータとして出力セレクタ１７０より出力する。ここで、シャドウ・レジスタ１６０は、観測信号線３２が接続する観測点の数に応じて自由に増減できる。
【００４０】
出力セレクタ１７０は、制御ブロック１４０に従って、命令レジスタ１１０に記憶された命令列を出力するとともに、命令列の出力が終わった時点でシャドウ・レジスタ１６０の観測データを出力する。
【００４１】
このような構成のＤＦＤシステム１００の動作について説明する。
ＤＦＤシステム１００は、設計時にＤＵＴ２０に組み込まれたトリガ信号線３１と観測信号線３２に接続している。また、命令コードは、外部の試験装置２００から命令入力端子１８１よりシリアルデータとして入力し、命令レジスタ１１０に保存されている。
【００４２】
第１の例として、この回路が指定されたトリガ信号の１つの立上りエッジによってデータを観測する場合について説明する。トリガ検出器１３０は、選択されたトリガ信号線３１の信号値がＬＯＷからＨＩＧＨに変化すると、イネーブル信号生成器１５０と制御ブロック１４０に対してアクティブを示す信号を送る。遅延時間が設定されている場合には、制御ブロック１４０によって遅延制御が行なわれる。イネーブル信号生成器１５０は、シャドウ・レジスタ群に対して観測データをラッチする指示を送る。また、制御ブロック１４０は、出力セレクタ１７０に指示して命令コードを出力させる。続いて、シャドウ・レジスタ１６０をシリアル接続に切換え、命令コードの出力が終わった時点でイネーブル信号生成器１５０と出力セレクタ１７０に指示して観測データを出力端子１９１より出力させる。
【００４３】
第２の例として、開始指示によってデータを観測する場合について説明する。制御ブロック１４０は、タイミング制御端子１８２より開始指示を入力すると、イネーブル信号生成器１５０に対してキャプチャ処理開始の指示を行なう。指示が出された後の動作は、第１の例の場合と同様である。
【００４４】
このように、命令コードに従ってＤＵＴ２０の内部信号によるトリガのみでなく、外部の試験装置２００からの開始指示もトリガ条件とすることにより、デバッグの自由度はさらに高くなる。
【００４５】
また、このとき、外部の試験装置２００との間で交換される命令コードおよび観測結果をシリアルデータとして授受しているため、命令コード入力用の命令入力端子１８１と、開始指示入力用のタイミング制御端子１８２、および観測結果出力用の出力端子１９１の３ピンでキャプチャ処理を制御することができる。このため、外部とのインタフェースが最小のピン数で自由度の高いデバッグを実現することが可能である。
【００４６】
さらに、命令コード長およびシャドウ・レジスタ１６０もシステムに合わせて最適化できるように、ＤＦＤシステム１００がＤＵＴ２０に応じて柔軟に変更可能な仕様となっている。この結果、無駄な回路が無く、テスト対象回路に最適なサイズのデバッグ回路を構築することができる。
【００４７】
ここで、上記の説明の半導体装置の動作を、タイミングチャートを用いて説明する。図４は、本発明の実施の形態である半導体装置のデバッグ回路のキャプチャ開始までのタイミングチャートである。ここでは、３つのトリガ信号（Ｔｒｉｇ１、Ｔｒｉｇ２、Ｔｒｉｇ３）のうち、Ｔｒｉｇ２信号の立下りでキャプチャが開始される設定であるとする。トリガ検出器１３０において、Ｔｒｉｇ２の立下りが検出されると、イネーブル信号生成器１５０でキャプチャ・イネーブル信号（ＣＥＮ）が生成される。キャプチャ・イネーブル信号（ＣＥＮ）の立下りでシャドウ・レジスタ１６０によるキャプチャが開始される。
【００４８】
また、命令コードにディレイ設定があった場合を図５を用いて説明する。図５は、本発明の実施の形態である半導体装置のデバッグ回路におけるディレイ設定時のタイミングチャートである。制御ブロック１４０の制御によりキャプチャ・イネーブル信号（ＣＥＮ）の立下りが遅延される。図５の例では、３クロック遅延の設定がされており、外部制御装置からのキャプチャ開始信号が入力されてから３クロック遅延された後に内部のキャプチャ・イネーブル信号（ＣＥＮ）が立下り、キャプチャ処理が開始される。
【００４９】
次に、出力時の動作を説明する。図６は、本発明の実施の形態である半導体装置のデバッグ回路の出力時のタイミングチャートである。図４と同じものには同じ符号を付す。出力前の状態では、出力セレクタ１７０は、命令コードを選択している（ＯＵＴＰＵＴＳＥＬ＝Ｌｏｗ）。キャプチャ・イネーブル信号（ＣＥＮ）によりキャプチャが開始されてから一定時間経過後、出力イネーブル信号（ＳＯＥ）が立ち上がる。これにより、出力セレクタ１７０の出力が開始され、出力端子１９１（ＷＳＯ）から命令コードがシリアルデータとして出力される。続いて、キャプチャ・イネーブル信号（ＣＥＮ）が立ちあがるとともに、選択信号ＯＵＴＰＵＴＳＥＬがＨｉｇｈに変化する。選択信号ＯＵＴＰＵＴＳＥＬ＝Ｈｉｇｈにより、出力セレクタ１７０は、シャドウ・レジスタ１６０の出力を選択し、キャプチャ・イネーブル信号（ＣＥＮ）によりシャドウ・レジスタ１６０から観測データが出力される。これにより、出力端子１９１（ＷＳＯ）から観測データがシリアルデータとして出力される。観測データは、観測信号線３２の数だけ出力される。
【００５０】
このように、制御ブロック１４０に従ってイネーブル信号生成器１５０の生成するキャプチャ・イネーブル信号（ＣＥＮ）と出力イネーブル信号（ＳＯＥ）によって、シャドウ・レジスタ１６０の観測データの取り込みと、外部への出力が制御される。
【００５１】
また、上記の説明の実施の形態の半導体装置では、観測データの前にその命令コードを出力することによって、ユーザが設定した命令コードの確認ができるようになっている。
【００５２】
続いて、ＤＦＤシステム１００を構成する命令デコーダと制御ブロック、およびシャドウ・レジスタ１６０について具体例を用いて詳細に説明する。
まず、命令デコーダ１２０と制御ブロック１４０について詳細に説明する。制御ブロック１４０は、命令コードに従って動作タイミングを規定する制御信号を生成して各部を制御する。図７は、実施の形態の命令デコーダと制御ブロックの構成を示した図である。図２、図３と同じものには同じ番号を付し、説明は省略する。
【００５３】
命令デコーダ１２０は、命令レジスタ１１０に記憶された命令コード５００に応じて、デコーダ１（１２１）、デコーダ２（１２２）、デコーダ３（１２３）を具備する。デコーダ１（１２１）は、オペコード５０１と立上り／立下り５０２を復号し、トリガタイミングを生成する動作指示信号として制御ブロック１４０へ出力する。デコーダ２（１２２）は、信号ＩＤ５０３を復号し、トリガ信号情報として制御ブロック１４０へ出力する。デコーダ３（１２３）は、ディレイ周期５０４を復号し、カウンタ初期値として制御ブロック１４０へ出力する。
【００５４】
制御ブロック１４０は、制御信号を生成する制御信号生成ステートマシン１４１と、ディレイ周期を管理するダウンカウンタ１４２とから構成される。制御信号生成ステートマシン１４１は、命令デコーダ１２０から入力する動作指示信号とトリガ信号情報、外部の試験装置２００から入力する手動指令およびダウンカウンタ１４２が算出するカウントに従って、トリガタイミングとトリガ信号を選択するトリガタイミング・選択信号を生成し、トリガ検出器１３０へ出力する。また、キャプチャ処理を許可するイネーブルタイミング・選択信号を生成し、イネーブル信号生成器１５０へ出力するとともに、出力選択信号を出力セレクタ１７０へ出力する。ダウンカウンタ１４２は、デコーダ３（１２３）によってデコードされたカウンタ初期値を設定し、クロック周期ごとに１減算し、カウンタが０になったときに制御信号生成ステートマシン１４１に通知する。
【００５５】
ここで、制御信号生成ステートマシン１４１の動作について説明する。図８は、実施の形態の制御信号生成ステートマシンの状態遷移図である。
この制御信号生成ステートマシン１４１は、最初のステート（ＳＴ０１）では、アイドル状態にある。この状態で、タイミング制御端子１８２より入力する開始指示信号（ＳＴＲ）が１になると、命令フェッチ・ステート（ＳＴ０２）へ遷移する。命令フェッチ・ステート（ＳＴ０２）では、命令デコーダのデコードした命令を取り込む。取り込みが終了すると開始指示信号（ＳＴＲ）を０にし、信号キャプチャ開始・ステート（ＳＴ０３）に遷移する。
【００５６】
信号キャプチャ開始・ステート（ＳＴ０３）では、命令コードによって３種類の動作に分岐する。
第１に、オペコード部の設定が手動キャプチャで、ディレイ周期部の設定が０の場合（ＭＣＡＰ＆Ｄｅｌａｙ＝０）、直接信号出力開始・ステート（ＳＴ０６）へ遷移する。
【００５７】
第２に、オペコード部の設定が手動キャプチャで、ディレイ周期部の設定が０でない場合（ＭＣＡＰ＆Ｄｅｌａｙ≠０）、信号キャプチャディレイ・ステート（ＳＴ０５）へ遷移する。
【００５８】
第３に、オペコード部の設定が信号キャプチャの場合（ＳＣＡＰ）、信号キャプチャ・ステート（ＳＴ０４）へ遷移する。
信号キャプチャ・ステート（ＳＴ０４）では、トリガ検出手段によりトリガが検出されたかどうかをトリガ検出信号（ＣＥＮＴＲＩＧ）で監視する。トリガが検出されると、トリガ検出信号（ＣＥＮＴＲＩＧ）が１になる。この状態で、ディレイ周期部が０の場合（ＣＥＮＴＲＩＧ＝１＆Ｄｅｌａｙ＝０）、信号出力開始・ステート（ＳＴ０６）へ遷移する。また、この状態でディレイ周期部が０でない場合（ＣＥＮＴＲＩＧ＝１＆Ｄｅｌａｙ≠０）、信号キャプチャディレイ・ステート（ＳＴ０５）へ遷移する。
【００５９】
信号キャプチャディレイ・ステート（ＳＴ０５）では、ディレイ周期部の設定に従ってダウンカウンタ１４２がカウント値を減らしていく。そして、カウント＝０となった時点、すなわち、ディレイ周期経過後に、信号出力開始・ステート（ＳＴ０６）へ遷移する。
【００６０】
信号出力開始・ステート（ＳＴ０６）では、キャプチャされた観測データの出力が開始される。まず、信号出力開始・ステート（ＳＴ０６）から無条件で命令出力・ステート（ＳＴ０７）へ遷移する。
【００６１】
命令出力・ステート（ＳＴ０７）では、入力された命令コードを出力端子にシリアルデータとして出力する。これが終了したら、データ出力・ステート（ＳＴ０８）へ遷移する。
【００６２】
データ出力・ステート（ＳＴ０８）では、出力セレクタを切換えて、シャドウ・レジスタ内に格納されているキャプチャデータを出力端子よりシリアル出力する。これが終了したら、最初のアイドル・ステート（ＳＴ０１）へ戻る。
【００６３】
制御信号生成ステートマシン１４１において、このようなステート遷移を繰り返すことにより、キャプチャ処理が制御される。
次に、シャドウ・レジスタ１６０について説明する。図９は、実施の形態のシャドウ・レジスタのブロック図である。ここでは、３個のレジスタが相互に接続されている場合のブロック図を示している。レジスタの数は、観測点の数に応じて自由に増減できる。
【００６４】
シャドウ・レジスタ１６０は、観測信号線３２ａ、３２ｂ、３２ｃを介して入力する観測データをラッチするレジスタ１６１ａ、１６１ｂ、１６１ｃと、レジスタ１６１ａ、１６１ｂ、１６１ｃへ入力する信号を選択するセレクタ１６２ａ、１６２ｂ、１６２ｃとから構成される。
【００６５】
セレクタ１６２ａ、１６２ｂ、１６２ｃは、それぞれに対応する観測信号線３２ａ、３２ｂ、３２ｃと、前に接続するレジスタ１６１ａ、１６１ｂ、１６１ｃとに接続し、信号線１６６より入力する出力イネーブル信号（ＳＯＥ）に応じて、いずれかの信号を選択し、出力端子に接続するレジスタ１６１ａ、１６１ｂ、１６１ｃに出力する。
【００６６】
レジスタ１６１ａ、１６１ｂ、１６１ｃは、セレクタ１６２ａ、１６２ｂ、１６２ｃの出力信号をデータ端子Ｄより入力するデータを、信号線１６５よりイネーブル端子（ＥＮ）に入力するキャプチャ・イネーブル信号（ＣＥＮ）に応じて内部に取り込むとともに、出力端子Ｑより出力する。これらの処理は、信号線１６４より入力する内部クロックに同期して動作する。
【００６７】
観測データ取り込み時には、キャプチャ・イネーブル信号（ＣＥＮ）が１、出力イネーブル信号（ＳＯＥ）が０になる。セレクタ１６２ａ、１６２ｂ、１６２ｃは、観測信号線３２ａ、３２ｂ、３２ｃを選択し、レジスタ１６１ａ、１６１ｂ、１６１ｃは観測データをラッチする。
【００６８】
観測データを出力する際には、キャプチャ・イネーブル信号（ＣＥＮ）が１、出力イネーブル信号（ＳＯＥ）が１になる。セレクタ１６２ａ、１６２ｂ、１６２ｃは、前のレジスタの出力に接続するシリアル接続を選択する。これにより、レジスタ１６１ａ、１６１ｂ、１６１ｃはシリアル接続になり、最終段のレジスタ１６１ｃからシリアル出力側にデータが順次送り出されていく。
【００６９】
このようにしてシャドウ・レジスタ１６０は、観測データのラッチと、ラッチした観測データのシリアル出力動作を行なっている。
次に、このようなデバッグ回路および被試験対象回路とが組み込まれた半導体装置の設計手法について説明する。図１０は、実施の形態の半導体装置の設計手順を示した図である。
【００７０】
まず、被試験対象回路のオリジナルの設計記述であるオリジナルＨＤＬ記述４０１に対して、設計者が観測したい観測点の情報と、観測した信号の変化のトリガとなりうる信号の情報であるプローブポイントトリガ信号情報４０２を抽出する。この情報に基づいて、オリジナルのデバッグ回路を記述したＤＦＤシステムＨＤＬ記述４０３が被試験対象回路に最適となるようにカスタマイズする。
【００７１】
具体的には、ＤＦＤシステムカスタマイズ工程（ステップＳ０１）において、トリガ信号線の数に合わせて、命令コードの信号選択フィールドのビット数とトリガ検出回路の数を決め、必要とされるディレイサイクル数を考慮して命令長を決め、観測信号線の数に合わせて観測点の数を決定する。
【００７２】
論理合成工程（ステップＳ０２）では、ステップＳ０１においてカスタマイズされたデバッグ回路を、被試験対象回路とは別に論理合成する。
論理合成工程（ステップＳ０３）では、被試験対象回路のオリジナルＨＤＬ記述４０１をデバッグ回路とは別に論理合成する。
【００７３】
これまでの処理により、デバッグ回路とオリジナル回路の回路構成が改変されていない被試験対象回路とがそれぞれ別個に論理合成される。すなわち、被試験対象回路とデバッグ回路は明確に分離されている。
【００７４】
集積と配置・配線工程（ステップＳ０４）では、別個に論理合成された被試験対象回路とデバッグ回路とを集積し、配置・配線する。この際、観測用の観測信号線だけが被試験対象回路のオリジナル回路に付加される。
【００７５】
続く製作工程（ステップＳ０５）では、ステップＳ０４で作成された回路に基づいて半導体装置１を生産する。
このようにして生産された半導体装置１は、デバッグ回路であるＤＦＤシステム１０と被試験対象回路であるＤＵＴ２０とが明確に分離されている。このため、ＤＵＴ２０は、デバッグ回路を組み込まない場合とほぼ同一のふるまいをする。この結果、実際のレイアウト上で発生する問題のデバッグを容易に行なうことが可能となる。
【００７６】
上記の説明ではデバッグ回路を１つのブロックで設けるとしたが、例えば、ＪＴＡＧと組み合わせることもできる。この場合、ＪＴＡＧで定義されているユーザ定義ファンクションとユーザ定義レジスタをそれぞれＤＦＤシステムの機能とシャドウ・レジスタに割り当てることにより実装を行なう。そして、ＪＴＡＧで定義されている５つの入出力ピン、ＴＤＩ、ＴＣＫ、ＴＲＳＴ、ＴＤＯのうち、ＴＤＩは命令コードを入力する命令入力端子１８１、ＴＤＯは観測データを出力する出力端子１９１、およびＴＭＳは開始指示を入力するタイミング制御端子１８２として実装する。このように、必要な入出力端子をＪＴＡＧなど、他のテストピンを共有することもできる。この場合、ピン数へのペナルティはゼロとなる。
【００７７】
このように、半導体装置に実装する際、ＪＴＡＧ等と組み合わせることも容易であり、この場合においても任意の内部状態をスキャンできるなど、自由度の高いデバッグを実現することができる。
【００７８】
【発明の効果】
以上説明したように本発明の半導体装置では、被試験対象回路に任意の観測点に接続する信号線を組み込んでおき、信号線で接続するデバッグ回路に観測の命令コードを設定しておくことによって、任意のタイミングでこの信号線の状態をラッチさせる。被試験対象回路には信号線が付加されているのみであり、オリジナルの回路に対して全く改変を加えることなく、内部状態を外部から観測可能にしている。このように、オリジナル回路に影響を与えることなく内部状態が観測できるため、機能的なバグの発見だけではなく、実デバイスの速度試験やクロストーク等の解析に使用することができる。また、観測に関する設定はプログラマブルであるため、観測を柔軟に行なうことができ、自由度の高いデバッグが可能となる。
【００７９】
また、本発明の半導体装置の試験方法では、被試験対象回路に任意の観測点の状態を引き出す信号線を組み込み、この信号線に接続するデバッグ回路にプログラマブルな命令コードを用いて観測のトリガ条件を設定しておく。これにより、任意のタイミングで観測点の状態をラッチすることができる。被試験対象回路には、信号線以外のデバッグ回路は付加されていない。また、観測の命令コードはプログラマブルであるため、オリジナル回路に影響を与えることなく内部状態を観測できるばかりでなく、自由度の高いデバッグが可能となる。また、オリジナル回路に影響を与えることがないため、製品段階における試験にも用いることができる。
【図面の簡単な説明】
【図１】実施の形態に適用される発明の概念図である。
【図２】本発明の実施の形態である半導体装置のデバッグ回路のブロック図である。
【図３】命令コードの一例である。
【図４】本発明の実施の形態である半導体装置のデバッグ回路のキャプチャ開始までのタイミングチャートである。
【図５】本発明の実施の形態である半導体装置のデバッグ回路におけるディレイ設定時のタイミングチャートである。
【図６】本発明の実施の形態である半導体装置のデバッグ回路の出力時のタイミングチャートである。
【図７】実施の形態の命令デコーダと制御ブロックの構成を示した図である。
【図８】実施の形態の制御信号生成ステートマシンの状態遷移図である。
【図９】実施の形態のシャドウ・レジスタのブロック図である。
【図１０】実施の形態の半導体装置の設計手順を示した図である。
【図１１】従来の内部状態を外部へ読出し可能な半導体装置の構成の概略図である。
【符号の説明】
１・・・半導体装置、１０・・・ＤＦＤシステム、１１・・・命令レジスタ、１２・・・命令デコード手段、１３・・・トリガ検出手段、１４・・・キャプチャ制御手段、１５・・・キャプチャ手段、２０・・・ＤＵＴ（被試験対象回路）、３１・・・トリガ信号線、３２・・・観測信号線
【図１】
2004132844.tif 000003
【図２】
2004132844.tif 000004
【図３】
2004132844.tif 000005
【図４】
2004132844.tif 000006
【図５】
2004132844.tif 000007
【図６】
2004132844.tif 000008
【図７】
2004132844.tif 000009
【図８】
2004132844.tif 000010
【図９】
2004132844.tif 000011
【図１０】
2004132844.tif 000012
【図１１】
2004132844.tif 000013