(57)【要約】【課題】オシロスコープを使用せずに、半導体装置の端子の信号波形を確認する。【解決手段】半導体装置１００は、複数の端子１０５と、複数のＲＡＭ１０６と、第１および第２のＲＡＭ制御回路２０３、２０４と、第１のＲＡＭに接続されるプロセッサ１０２と、第２のＲＡＭ制御回路２０４に接続され、各端子１０５からサンプリングデータを取得するサンプリング回路２０２と、いずれかのＲＡＭ１０６をサンプリングデータの保存領域にする設定を記憶する第１のレジスタ１０８と、各ＲＡＭ１０６を第１または第２のＲＡＭ制御回路２０３，２０４に選択的に接続する切換回路１０７とを備える。切換回路１０７は、第１のレジスタ１０８の設定に基づいて、いずれかのＲＡＭ１０６と第２のＲＡＭ制御回路２０４とを接続し、サンプリング回路２０２は、第２のＲＡＭ制御回路２０４に接続されたＲＡＭ１０６にサンプリングデータを保存する。【選択図】図２
2020154699.tif 000002
【特許請求の範囲】
【請求項１】
半導体装置であって、
信号を入力および出力するための複数の端子と、
プログラムおよびデータを記憶するための複数のメモリと、
前記複数のメモリにデータを読み書きするための第１のＲＡＭ（Random Access Memory）制御回路および第２のＲＡＭ制御回路と、
前記第１のＲＡＭ制御回路に接続され、前記プログラムを実行するプロセッサと、
前記第２のＲＡＭ制御回路に接続され、前記複数の端子の各信号のサンプリングデータを取得するサンプリング回路と、
前記複数のメモリのいずれかをサンプリングデータの保存領域にする設定を記憶するための第１のレジスタと、
前記複数のメモリのいずれかを前記第１のＲＡＭ制御回路または前記第２のＲＡＭ制御回路に選択的に接続する切換回路とを備え、
前記切換回路は、前記第１のレジスタの設定に基づいて、サンプリングデータの保存領域に設定されたメモリと前記第２のＲＡＭ制御回路とを接続し、
前記サンプリング回路は、前記第２のＲＡＭ制御回路および前記切換回路を介して、サンプリングデータを前記サンプリングデータの保存領域に設定されたメモリに保存する、半導体装置。
【請求項２】
前記サンプリング回路は、
前記プロセッサが前記プログラムを実行中に、サンプリングデータを取得し、
前記切換回路により前記サンプリングデータの保存領域に設定されたメモリと前記第２のＲＡＭ制御回路とが接続されたことに基づいて、前記サンプリングデータの保存領域に設定されたメモリにサンプリングデータを書き込む、請求項１に記載の半導体装置。
【請求項３】
情報処理装置と通信するための通信部をさらに備え、
前記通信部は、
サンプリング処理のコマンドを前記情報処理装置から受信し、
サンプリングデータを前記情報処理装置に送信する、請求項２に記載の半導体装置。
【請求項４】
前記複数の端子の中から、サンプリング対象となる端子を選択する設定を記憶する第２のレジスタをさらに備え、
前記サンプリング回路は、前記第２のレジスタの設定に基づいて、前記複数の端子の中からサンプリングデータを取得する端子を選択する、請求項３に記載の半導体装置。
【請求項５】
サンプリングのトリガーの設定を記憶する第３のレジスタをさらに備え、
前記サンプリング回路は、前記第３のレジスタに記憶される設定に対応する信号を検出したタイミング以降のサンプリングデータを前記サンプリングデータの保存領域に設定されたメモリに保存する、請求項４に記載の半導体装置。
【請求項６】
前記サンプリング回路は、前記第３のレジスタの設定に基づいて、前記半導体装置のタイマー割り込み信号をトリガーとして検出する、請求項５に記載の半導体装置。
【請求項７】
前記サンプリング回路は、前記第３のレジスタの設定に基づいて、前記複数の端子の信号のＨＩＧＨ／ＬＯＷの組み合わせをトリガーとして検出する、請求項５に記載の半導体装置。
【請求項８】
前記サンプリング回路は、
前記第３のレジスタにトリガーの設定が記憶されていないことに基づいて、前記通信部を介して前記情報処理装置からサンプリング停止のコマンドを受信するまで、サンプリングデータの取得を継続し、
前記サンプリングデータの保存領域に空きが無くなると、新しいサンプリングデータを他のサンプリングデータが書き込まれた保存領域に上書きする、請求項５に記載の半導体装置。
【請求項９】
前記通信部は、前記第１〜第３のレジスタの設定に加えて、サンプリング周期の設定を前記情報処理装置から取得する、請求項５に記載の半導体装置。
【請求項１０】
前記サンプリング回路は、サンプリング対象の端子の信号のサンプリングデータを一定周期で取得し、
サンプリングデータは、サンプリング対象の端子のＨＩＧＨ／ＬＯＷの情報と、前記サンプリング対象の端子の信号をサンプリングしたときのタイムスタンプとを含み、
前記サンプリングデータの保存領域に設定されたメモリは、前記サンプリング対象の端子の前記一定周期ごとのサンプリングデータを記憶する、請求項１に記載の半導体装置。
【請求項１１】
前記サンプリング回路は、サンプリング対象の端子の信号のサンプリングデータを一定周期で取得し、
サンプリングデータは、サンプリング対象の端子のＨＩＧＨ／ＬＯＷの情報と、前記サンプリング対象の端子の信号をサンプリングしたときのタイムスタンプとを含み、
前記サンプリングデータの保存領域に設定されたメモリは、前記サンプリング回路が取得したサンプリングデータに含まれる前記サンプリング対象の端子の信号のＨＩＧＨ／ＬＯＷが切り替わるタイミングのサンプリングデータを記憶する、請求項１に記載の半導体装置。
【請求項１２】
前記プロセッサは、前記通信部を介して、前記サンプリングデータの保存領域に設定されたメモリに書き込まれたサンプリングデータを前記情報処理装置に送信する、請求項３に記載の半導体装置。
【請求項１３】
半導体装置であって、
信号を入力および出力するための複数の端子と、
複数の記憶領域を含み、プログラムを記憶するためのメモリと、
前記プログラムを実行するプロセッサと、
前記複数の端子のそれぞれの信号のサンプリングデータを取得するサンプリング回路と、
前記プロセッサと、前記サンプリング回路と、前記メモリとが接続されるバスと、
前記複数の記憶領域の一部をサンプリングデータの保存領域にする設定を記憶するための第１のレジスタとを備え、
前記サンプリング回路は、
割り込み信号を発生させることにより前記プロセッサによる前記バスを介しての前記メモリへの読み書きを停止させ、
前記第１のレジスタの設定に基づいて、サンプリングデータを前記メモリに保存する、半導体装置。
【請求項１４】
半導体装置をデバッグするためにコンピュータで実行されるプログラムであって、前記プログラムは前記コンピュータに、
前記半導体装置が備える複数の端子の中からサンプリングデータの取得対象になる端子を選択するための第１の設定の入力を受け付けるステップと、
サンプリングのトリガーを設定する第２の設定の入力を受け付けるステップと、
サンプリング周期を設定する第３の設定の入力を受け付けるステップと、
前記半導体装置が備える複数のメモリのいずれかをサンプリングデータの保存領域に設定する第４の設定との入力を受け付けるステップと、
前記第１の設定を前記半導体装置に送信するステップと、
前記第２の設定を前記半導体装置に送信するステップと、
前記第３の設定を前記半導体装置に送信するステップと、
前記第４の設定を前記半導体装置に送信するステップと、
前記半導体装置の備える前記メモリに保存されたサンプリングデータを取得するステップとを、実行させる、プログラム。
【請求項１５】
前記メモリに保存されたサンプリングデータは、前記コンピュータが、前記第３の設定に基づいて、前記半導体装置のタイマー割り込み信号をトリガーとして検出して取得したサンプリングデータである、請求項１４に記載のプログラム。
【請求項１６】
サンプリングデータの保存領域に設定されたメモリに保存されたサンプリングデータは、前記コンピュータが、前記第３の設定に基づいて、前記複数の端子の信号のＨＩＧＨ／ＬＯＷの組み合わせをトリガーとして検出して取得したサンプリングデータである、請求項１４に記載のプログラム。
【請求項１７】
前記第１の設定を前記コンピュータのメモリに保存するステップと、
前記第２の設定を前記コンピュータのメモリに保存するステップと、
前記第３の設定を前記コンピュータのメモリに保存するステップと、
前記第４の設定を前記コンピュータのメモリに保存するステップと、
前記コンピュータのメモリから前記第１の設定を読み出して、読み出された前記第１の設定を前記半導体装置に送信するステップと、
前記コンピュータのメモリから前記第２の設定を読み出して、読み出された前記第２の設定を前記半導体装置に送信するステップと、
前記コンピュータのメモリから前記第３の設定を読み出して、読み出された前記第３の設定を前記半導体装置に送信するステップと、
前記コンピュータのメモリから前記第４の設定を読み出して、読み出された前記第４の設定を前記半導体装置に送信するステップとを、前記コンピュータにさらに実行させる、請求項１４に記載のプログラム。
【請求項１８】
前記半導体装置から受信したサンプリングデータを基に、前記コンピュータのモニターに表示する波形グラフを生成するステップを、前記コンピュータにさらに実行させる、請求項１４に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、半導体装置に関し、例えば、半導体装置の端子の信号の検査に好適に利用できるものである。
【背景技術】
【０００２】
近年、ＬＳＩ（Large Scale Integration）等の半導体装置を用いた製品が数多く製造されている。これらの半導体装置を用いたシステムボードの評価を行う際に、半導体装置の端子の信号を測定することがある。
【０００３】
半導体装置の端子の信号の測定には、オシロスコープが用いられることが多い。しかし、オシロスコープを用いた検査では、オシロスコープそのものの準備に加え、システムボード上にオシロスコープのプローブを接触させるための検査箇所を用意する必要がある。
【０００４】
半導体装置の端子の検査に関して、特開２００５−０７７３１１号公報（特許文献１）は、「内部回路との間で信号の入出力を行うＩ／Ｏ端子と、内部状態をモニターするモニター端子とを備えた半導体集積回路装置であって、一端をＩ／Ｏ端子に接続し、他端をモニター端子に接続した、外部から制御可能なトランスファーゲートを備える」半導体集積回路装置を開示している（［要約］参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−０７７３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示された技術によると、半導体装置ができる検査はあくまでもコンタクトチェックのみであり、半導体装置は、自装置がプログラムを実行した際の各端子の信号波形を確認することができない。したがって、半導体装置がプログラムを実行した際の各端子の信号波形を簡単に確認する技術が必要とされている。
【０００７】
本開示は、上記のような背景に鑑みてなされたものであって、ある局面において、半導体装置でプログラムを動作させた際の半導体装置の各端子の信号波形を簡単に確認する技術を提供する。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態によれば、半導体装置は、ＲＡＭ（Random  Access  Memory）と、入出力機能を持つ複数の端子と、各端子の信号をサンプリングするサンプリング回路とを備える。半導体装置は、サンプリング回路により、プログラム実行中の各端子のサンプリングデータを取得し、当該サンプリングデータをＲＡＭに保存する。
【発明の効果】
【００１０】
上記の実施形態によれば、ユーザは、オシロスコープを使用せずに、システムボード上の半導体装置の端子の信号波形を確認することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に従う半導体装置１００の一部の構成の第１の例を示すブロック図である。
【図２】半導体装置１００の一部の構成の第２の例を示すブロック図である。
【図３】サンプリング回路２０２の一部の構成の例を示すブロック図である。
【図４】サンプリングデータのＲＡＭ１０６への書き込みの様子の一例を示すブロック図である。
【図５】トリガー検出回路２０１の周辺回路の一例を示すブロック図である。
【図６】タイマー割り込み発生時の端子１０５の信号波形の一例を示す図である。
【図７】ＩＤＥ（Integrated Development Environment）のＵＩ（User  Interface）の第１の例を示す図である。
【図８】ＩＤＥのＵＩの第２の例を示す図である。
【図９】サンプリング処理の一例を示すフローチャートである。
【図１０】第２の実施の形態に従う半導体装置１００の一部の構成の例を示すブロック図である。
【図１１】圧縮回路１００１の機能の一部の例を示すブロック図である。
【図１２】サンプリングデータの圧縮の一例を示す図である。
【図１３】第３の実施の形態に従う半導体装置１００の一部の構成の例を示すブロック図である。
【図１４】第４の実施の形態に従う半導体装置１００の一部の構成の例を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、各実施形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰り返さない。
【００１３】
＜第１の実施形態＞
図１は、第１の実施の形態に従う半導体装置１００の一部の構成の第１の例を示すブロック図である。図１を参照して、半導体装置１００は、通信部１０１と、ＣＰＵ（Central Processing Unit）１０２と、バス１０３と、検査回路１０４と、端子１０５と、ＲＡＭ１０６と、切替回路１０７と、レジスタ１０８とを備える。
【００１４】
通信部１０１は、外部のデバッガ装置１１０と通信する。より具体的には、通信部１０１は、デバッガ装置１１０を介して、デバッガソフトウェアのインストールされた端末１２０と通信する。ある局面において、端子１０５が通信部１０１として使用されてもよいし、通信部１０１は端子１０５とは独立した構成であってもよい。また、ある局面において、端末１２０は、ＰＣ（Personal Computer）またはタブレット端末であってもよい。また、ある局面において、半導体装置１００またはデバッガソフトウェアがデバッガ装置１１０の機能を内蔵している場合、通信部１０１は端末１２０と直接通信してもよい。
【００１５】
デバッガソフトウェアは、統合開発環境（所謂、ＩＤＥ）に準備されていることが一般的である。ＩＤＥは、デバッガ装置１１０を介して、半導体装置１００にプログラムをインストールする。また、ＩＤＥは、デバッガ装置１１０を介して、半導体装置１００にインストールしたプログラムをデバッグモードで実行させることができる。以降の説明では、ＩＤＥが端末１２０にインストールされているものとして説明するが、ＩＤＥとは個別にデバッガソフトウェアが端末１２０にインストールされていてもよい。また、ＩＤＥは、通信部１０１を介して、後述するＲＡＭ１０６に保存されたサンプリングデータを取得し、端末１２０のモニターにサンプリングデータの数値やグラフを表示させることができる。
【００１６】
ＣＰＵ１０２は、半導体装置１００のフラッシュメモリ（図示しない）等にインストールされたプログラムを実行する。ＣＰＵ１０２は、半導体装置１００の内部オシレータ又は外部の振動素子の周波数に基づいて動作する。
【００１７】
本実施の形態に従う半導体装置１００は、内蔵タイマー機能、各種端子、通信機能および各種割り込み機能等を有する。ＣＰＵ１０２は、プログラムを介してこれらの機能を操作することができる。これらの機能の一部は、割り込み処理により、ＣＰＵ１０２の実行するメインルーチンとは独立して実行されてもよい。
【００１８】
バス１０３は、ＣＰＵ１０２および周辺回路を互いに接続するためのバス回路である。本実施の形態に従う半導体装置１００において、バス１０３は、ＣＰＵ１０２と、後述する切替回路１０７とを接続する。
【００１９】
検査回路１０４は、ＣＰＵ１０２がユーザープログラムを実行中における、複数の端子１０５のそれぞれの信号のサンプリングデータを取得する。検査回路は、オシロスコープのトリガーに相当するスタート信号の入力を検出して、サンプリングデータの取得を開始する。検査回路１０４の詳細に関しては後述する。
【００２０】
端子１０５は、半導体装置１００および他の装置の間の信号の入力および出力を行う。端子１０５は、入力モードにおいて、他の装置から半導体装置１００への信号を入力され得る。また、端子１０５は、出力モードにおいて、半導体装置１００から他の装置に対しての信号を出力し得る。半導体装置１００は、個別の端子１０５ごとの機能を指定するレジスタメモリを備えることが一般的である。レジスタメモリで指定できる端子１０５の機能は、例えば、端子１０５の入力および出力の切り替え、信号のＨＩＧＨ／ＬＯＷの切り替え等がある。また、端子１０５は、ＵＡＲＴやＩ２Ｃ、ＡＤコンバータ等の入出力ピンとして使用され得る。
【００２１】
半導体装置１００は、複数のＲＡＭ１０６を内蔵している。各ＲＡＭ１０６は、ＣＰＵ１０２によって実行されるプログラムを保存し得る。また、各ＲＡＭ１０６は、各種一時的なデータを記憶することもできる。また、本実施の形態に従う各ＲＡＭ１０６は、従来の半導体装置と異なり、検査回路１０４が出力したデータを記憶し得る。
【００２２】
切替回路１０７は、複数のＲＡＭ１０６のそれぞれの接続先を切り替える。切替回路１０７は、複数のＲＡＭ１０６のそれぞれを、バス１０３および検査回路１０４のいずれか片方に接続する。
【００２３】
レジスタ１０８は、複数のＲＡＭ１０６のそれぞれの記憶領域を、ＣＰＵ１０２が使用するプログラム領域又はサンプリングデータの保存領域のいずれかに決定するための設定を記憶する。
【００２４】
ユーザは、ＩＤＥを介して、各ＲＡＭ１０６のそれぞれの記憶領域の設定を行ってもよい。その場合、レジスタ１０８は、通信部１０１を介して、各ＲＡＭ１０６のそれぞれの記憶領域の設定を端末１２０から受信し得る。
【００２５】
上記の構成を備える半導体装置１００は、検査回路１０４により、複数の端子１０５のそれぞれの信号のサンプリングデータを取得する。また、半導体装置１００は、サンプリングデータをユーザ−プログラムの実行領域に設定されていないＲＡＭ１０６のいずれかに保存する。ＲＡＭ１０６に保存されたサンプリングデータは、端末１２０のＩＤＥ（または、デバッガソフトウェア）により、読み出され得る。ＩＤＥは、端末１２０のモニターにサンプリングデータの信号波形グラフを表示してもよい。
【００２６】
ユーザは、ＩＤＥにより、各種サンプリングの設定をする。半導体装置１００は、デバッガ装置１１０を介して、ＩＤＥからサンプリングの設定を受信し、当該サンプリングの設定内容に従い、サンプリング対象の端子１０５ごとのサンプリングデータを取得する。
【００２７】
サンプリングの設定は、例えば、サンプリングデータを記憶する記憶領域を指定する設定、サンプリング対象の端子１０５を選択する設定、サンプリング周波数の設定、および、サンプリング期間の設定等を含み得る。ＩＤＥのＵＩは、端子１０５の信号波形を取得する波形取得モードと、通常のプログラムのデバッグモードとを選択する機能を備えていてもよい。
【００２８】
半導体装置１００が波形取得モードで動作する場合、ＣＰＵ１０２は、半導体装置１００に予めインストールされたユーザープログラムを実行する。そして、検査回路１０４は、ＣＰＵ１０２とは独立して、端子１０５の信号をサンプリングする。検査回路１０４は、切替回路１０７を介して、ＲＡＭ１０６のいずれかにサンプリングデータを保存する。さらに、検査回路１０４は、サンプリングの完了を通知するための割り込み信号を発生させる。ユーザは、ＩＤＥにより、ＲＡＭ１０６のサンプリングデータを読み出すことにより、オシロスコープを用意することなく、サンプリングデータを入手し、半導体装置１００の実装されたシステムボードの評価を容易に行うことが可能となる。
【００２９】
図２は、半導体装置１００の一部の構成の第２の例を示すブロック図である。図２は、検査回路１０４の主要な機能をより詳細に表している。
【００３０】
本実施の形態に従う半導体装置１００は、ユーザープログラムを実行する構成に加えて、検査回路１０４の主要な機能として、トリガー検出回路２０１と、サンプリング回路２０２と、ＲＡＭ制御回路２０４と、切替回路１０７と、レジスタ１０８とを備える。また、半導体装置１００は、複数のＲＡＭ１０６Ａ，１０６Ｂ（総称する場合は、「ＲＡＭ１０６」と呼ぶ）を備える。図２に示される例では、ＲＡＭ１０６の数は２であるが、ＲＡＭ１０６の数はこれに限られない。他の局面において、半導体装置１００は、３以上のＲＡＭ１０６を備えていてもよい。
【００３１】
図２に示す例では、ＣＰＵ１０２は、ＲＡＭ制御回路２０３を介してＲＡＭ１０６にデータを入出力する。ＣＰＵ１０２は、ＩＤＥによりインストールされたユーザープログラムを実行する場合においても、バス１０３およびＲＡＭ制御回路２０３を介していずれかのＲＡＭ１０６に記憶されるユーザープログラムを参照する。
【００３２】
トリガー検出回路２０１は、サンプリングを開始するタイミング（所謂、トリガー）を検出する。ユーザは、ＩＤＥを介して、トリガー検出回路２０１にサンプリングのトリガーおよびトリガーの検出回数を設定し得る。例えば、特定の端子１０５の信号の立ち上がりエッジ等がサンプリングのトリガーとなり得る。トリガー検出回路２０１は、設定された回数のトリガーを検出すると、サンプリング回路２０２にサンプリングを開始させるためのスタート信号を出力する。例えば、トリガー検出回路２０１は、特定の端子１０５の立ち上がりエッジを３回検出したことに基づいてサンプリング回路２０２にスタート信号を出力してもよいし、半導体装置１００のタイマー割り込みを１回検出したことに基づいてサンプリング回路２０２にスタート信号を出力してもよい。
【００３３】
サンプリング回路２０２は、ＣＰＵ１０２とは独立して動作する。ＩＤＥが半導体装置１００の動作モードを波形取得モードに設定すると、サンプリング回路２０２は、定期的に、ＣＰＵ１０２がユーザープログラムを実行中における端子１０５の信号のサンプリングデータを取得する。本実施の形態において、定期的とは、例えば、半導体装置１００または他の振動素子のクロック周波数に基づいて生成されるサンプリング周波数の周期ごとであってもよい。サンプリング回路２０２は、トリガー検出回路２０１に設定されたトリガーを検出したタイミング以降のサンプリングデータをＲＡＭ１０６のいずれかに保存する。ＩＤＥは、通信部１０１を介して、ＲＡＭ１０６に保存されたサンプリングデータを取得し得る。
【００３４】
また、トリガー検出回路２０１にトリガーが設定されていない場合、サンプリング回路２０２は、波形取得モードに移行後、ＩＤＥから停止命令を受信するまでサンプリングを続ける。そして、サンプリング回路２０２は、サンプリングデータの記憶領域に空きが無くなった場合、既にサンプリングデータが保存されている記憶領域に、新しいサンプリングデータを上書きしてもよい。
【００３５】
サンプリング回路２０２は、ＲＡＭ制御回路２０４を介してＲＡＭ１０６にサンプリングデータを保存する。切替回路１０７は、サンプリング回路２０２がＲＡＭ１０６にサンプリングデータを保存するとき、サンプリングデータの保存先に設定されたＲＡＭ１０６をＲＡＭ制御回路２０４に接続する。同様に、切替回路１０７は、ＣＰＵ１０２がＲＡＭ１０６との間でデータの書き込みまたは読み出しを行うとき、ユーザープログラムの実行領域に設定されたＲＡＭ１０６をＲＡＭ制御回路２０３に接続する。
【００３６】
サンプリング回路２０２は、サンプリングを完了すると、サンプリングの完了を通知するための割り込み信号を発生する。当該割り込み信号は、ＣＰＵ１０２または通信部１０１に入力される。ＣＰＵ１０２または通信部１０１は、割り込み信号に基づいて、ＩＤＥにサンプリングの完了を通知し得る。その場合、サンプリング回路２０２は、ＣＰＵ１０２または通信部１０１に割り込み信号を出力する接続線を介して接続されてもよい。
【００３７】
サンプリング回路２０２は、ユーザ−プログラムの実行領域に設定されたＲＡＭ１０６とは異なるＲＡＭ１０６にサンプリングデータを保存する。例えば、ＣＰＵ１０２は、ＲＡＭ１０６Ａをユーザ−プログラムの実行領域として使用し、サンプリング回路２０２は、ＲＡＭ１０６Ｂをサンプリングデータの記憶領域として使用し得る。そうすることで、ＲＡＭ１０６内のユーザープログラムの記憶領域と、サンプリングデータの記憶領域とが明確に分離される。その結果、半導体装置１００は、プログラミングミス等の原因でサンプリングデータおよびユーザープログラムの記憶領域が重複する等の不測の事態を防ぐことができる。
【００３８】
図３は、サンプリング回路２０２の一部の構成の例を示すブロック図である。図３を参照して、サンプリング回路２０２は、レジスタ３０１，３０４，３０９と、分周回路３０２，３０３と、バッファ３０５と、選択回路３０６と、シリアルパラレル変換回路３０７と、カウンタ３０８と、第１の信号生成回路３１０と、第２の信号生成回路３１１とを備える。
【００３９】
サンプリング回路２０２は、半導体装置１００で使用されるクロックの入力を受け付ける。当該クロックは、ベースクロックとなる。当該ベースクロックまたはベースクロックを分周したクロックに基づき、端子１０５の信号をサンプリングする。ある局面において、ベースクロックは、半導体装置１００の最高周波数クロックでもよいし、半導体装置１００の最高周波数クロックを予め分周して得られたたクロックがサンプリング回路２０２に入力されてもよい。
【００４０】
分周回路３０２，３０３は、入力されたベースクロックを分周する。分周回路３０２，３０３で分周された周波数が、所謂、サンプリングクロックである。サンプリング回路２０２は、サンプリングクロックの周期に併せて端子１０５の信号のサンプリングデータを取得する。
【００４１】
レジスタ３０１は、分周回路３０２，３０３の分周の設定を記憶する。レジスタ３０１は、通信部１０１を介して、ＩＤＥから分周回路３０２，３０３の分周の設定を受信し得る。分周回路３０２，３０３は、レジスタ３０１の設定に基づいて、ベースクロックを分周する。
【００４２】
レジスタ３０４は、サンプリング対象となる端子１０５を選択する設定を記憶する。レジスタ３０４は、通信部１０１を介して、ＩＤＥからサンプリング対象となる端子１０５の設定を受信し得る。
【００４３】
バッファ３０５は、フリップフロップ回路であり、サンプリングクロックのタイミングで、各端子１０５の信号を一時的に取得する。
【００４４】
選択回路３０６は、バッファ３０５に一時的に記憶された端子１０５の信号が、レジスタ３０４の設定に一致したことに基づいて（サンプリング対象の信号を検出したことに基づいて）、波形一致信号を出力する。波形一致信号は、スタート信号と共に第２の信号生成回路３１１に入力される。波形一致信号およびスタート信号のいずれか片方が発生したことに基づいて、選択回路３０６は、バッファ３０５に記憶された信号の情報を、ＲＡＭ制御回路２０４に送信する。
【００４５】
シリアルパラレル変換回路３０７は、取得した信号をパラレルデータに変換し、ＲＡＭ制御回路２０４に当該パラレルデータを送信する。カウンタ３０８は、波形一致信号およびスタート信号のいずれか片方を検出したことに基づいて、信号取得時のタイムスタンプを生成し、ＲＡＭ制御回路２０４に送信する。なお、カウンタ３０８は、波形一致信号またはスタート信号の発生時を基準としたタイムスタンプを生成してもよい。
【００４６】
レジスタ３０９は、複数の端子１０５の信号波形の組み合わせを設定され得る。サンプリング回路２０２は、レジスタ３０９に設定されている複数の端子１０５の信号波形の組み合わせを検出したことをトリガーとして、サンプリングデータのＲＡＭ１０６への保存を開始する。
【００４７】
第１の信号生成回路３１０は、レジスタ３０９の設定およびスタート信号に基づいて、分周回路３０２，３０３に分周開始信号を出力する。分周開始信号は、分周回路３０２，３０３に分周を開始させるための信号である。分周回路３０２，３０３は、分周開始信号の入力に応答して分周を開始する。例えば、第１の信号生成回路３１０から分周回路３０２，３０３にＨＩＧＨの信号が出力されたことに基づいて、分周回路３０２，３０３は分周を開始してもよい。
【００４８】
第２の信号生成回路３１１は、スタート信号および波形一致信号に基づいて、カウンタ３０８にカウント開始信号を出力する。カウント開始信号は、カウンタ３０８にカウントを開始させるための信号である。カウンタ３０８は、カウント開始信号の入力に応答して、カウントを開始する。例えば、第２の信号生成回路３１１からカウンタ３０８にＨＩＧＨの信号が出力されたことに基づいて、カウンタ３０８はカウントを開始してもよい。
【００４９】
ある局面において、第１の信号生成回路３１０および第２の信号生成回路３１１は、ＡＮＤ回路やＯＲ回路等の任意の論理回路であってもよいし、これらの論理回路を組み合わせたものであってもよい。
【００５０】
図４は、サンプリングデータのＲＡＭ１０６への保存の様子の一例を示すブロック図である。図４を参照して、ＲＡＭ制御回路２０４は、データ生成部４０４と、アドレスデコーダ４０５とを含む。
【００５１】
データ生成部４０４は、シリアルパラレル変換回路３０７からパラレルデータ４０１を受信し、カウンタ３０８からパラレルデータ４０１に対応するタイムスタンプを受信する。データ生成部４０４は、受信したパラレルデータ４０１およびタイムスタンプからＲＡＭ１０６に保存する形式のサンプリングデータを生成する。同時に、アドレスデコーダ４０５は、サンプリングデータを保存するＲＡＭ１０６内のアドレスを生成する。
【００５２】
切替回路１０７は、サンプリング回路２０２から、ＲＡＭ制御回路２０４への切替信号を受信したことに基づいて、ＲＡＭ制御回路２０４と、ＲＡＭ１０６とを接続する。そうでない場合は、切替回路１０７は、ＲＡＭ制御回路２０３と、ＲＡＭ１０６とを互いに接続する。
【００５３】
ＲＡＭ制御回路２０４は、アドレスデコーダ４０５が生成したアドレスに基づいて、サンプリングデータをＲＡＭ１０６のいずれかに書き込む。ＲＡＭ１０６に保存されるサンプリングデータは、サンプリング対象の端子のＨＩＧＨ／ＬＯＷの情報と、サンプリング周期に基づいてサンプリング対象の端子の信号をサンプリングしたときのタイムスタンプとを含む。
【００５４】
図５は、トリガー検出回路２０１の周辺回路の一例を示すブロック図である。トリガー検出回路２０１は、サンプリングを開始するためのトリガーとなる信号を検出する。
【００５５】
レジスタ５０１は、トリガー検出回路２０１が検出するトリガーの設定を記憶する。レジスタ５０１は、通信部１０１を介して、ＩＤＥからトリガーの設定を受信してもよい。ここでのトリガーとは、端子１０５の信号の変化、複数の端子１０５の信号の組み合わせパターンおよび半導体装置１００内で発生する割り込み信号を含み得る。
【００５６】
端子１０５の信号の変化は、信号レベルのＬＯＷからＨＩＧＨへの変化（信号の立ち上がり）および信号レベルのＨＩＧＨからＬＯＷへの変化（信号の立ち下がり）の２通り存在する。
【００５７】
例えば、ユーザは、半導体装置１００が実装されたテストボードにおいて、端子１０５Ａの立ち下がりをトリガーとして、端子１０５Ａ，１０５Ｂ，１０５Ｃの各信号のサンプリングデータを確認したいとする。この場合、ユーザは、ＩＤＥにより、レジスタ３０４にサンプリング対象として「端子１０５Ａ，１０５Ｂ，１０５Ｃ」を設定し、レジスタ５０１にトリガーとして「端子１０５Ａの立ち下がり」を設定することで、必要なサンプリングデータを取得できる。
【００５８】
オシロスコープで同様の計測をする場合、ユーザは、複数のプローブをシステムボード上に接触させる必要がある。また、オシロスコープのプローブ数は多くとも４本程度であるため、多数の端子１０５の信号のサンプリングデータを取得することができない。これに対して、本実施の形態に従う半導体装置１００は、ＲＡＭ１０６に空きがある限り、多数の端子１０５の信号のサンプリングデータを取得することができる。
【００５９】
複数の端子１０５の信号の組み合わせパターンは、複数の端子１０５の信号レベル（ＨＩＧＨ／ＬＯＷ）の組み合わせを意味する。例えば、ユーザは、半導体装置１００が実装されたテストボードにおいて、端子１０５Ａ，１０５Ｂの各信号の同期がとれているか否か、又は、端子１０５Ａ，１０５Ｂの信号の立ち下がりタイミングの誤差は許容範囲であるか否かを確認したいとする。
【００６０】
この場合、ユーザは、ＩＤＥにより、レジスタ３０４にサンプリング対象として「端子１０５Ａ，１０５Ｂ」を設定し、レジスタ５０１にトリガーとして「波形の組み合わせ（端子１０５Ａの信号（ＬＯＷ），端子１０５Ｂの信号（ＬＯＷ）」を設定することで必要な端子１０５Ａ，１０５Ｂのそれぞれのサンプリングデータを取得できる。
【００６１】
オシロスコープで同様の計測をする場合、通常、ユーザは特定の端子１０５の信号にのみトリガーを設定することになる。そのため、３本以上の端子１０５の信号の組み合わせを検出することは困難である。これに対して、本実施の形態に従う半導体装置１００は、ＲＡＭ１０６に空きがある限り、多数の端子１０５の信号の組み合わせパターンを検出できる。
【００６２】
半導体装置１００内で発生する割り込み信号は、例えば、タイマー割り込みや通信割り込みを含む。一例として、ユーザは、半導体装置１００が実装されたテストボードにおいて、半導体装置１００のタイマー割り込み機能により、端子１０５Ａ，１０５Ｂから正しいパルスが出力されているか否かを確認したいとする。
【００６３】
この場合、ユーザは、ＩＤＥにより、レジスタ３０４にサンプリング対象として「端子１０５Ａ，１０５Ｂ」を設定し、レジスタ５０１にトリガーとして「タイマー割り込み」を設定することで必要なサンプリングデータを取得できる。ある局面において、半導体装置１００が複数のタイマーおよびタイマー割り込み設定機能を備えている場合、レジスタ５０１の設定は、タイマー情報および割り込み情報の詳細を含んでもよい。
【００６４】
また、同様に、ユーザは、半導体装置１００が実装されたテストボードにおいて、半導体装置１００のＩ２Ｃ通信の発生時の端子１０５Ａ，１０５Ｂの信号波形を確認したいとする。この場合、ユーザは、デバッガソフトウェアにより、レジスタ３０４にサンプリング対象として「端子１０５Ａ，１０５Ｂ」を設定し、レジスタ５０１にトリガーとして「Ｉ２Ｃ通信割り込み」を設定することで必要なサンプリングデータを取得できる。
【００６５】
オシロスコープは、半導体装置１００内で発生する割り込み信号は検出できない。そのため、オシロスコープで同様の計測をする場合、ユーザは、テスト用のプログラム等を別途作成する必要がある。例えば、テスト用のプログラムは、タイマー割り込みが発生したことを確認するための信号を端子１０５Ｃに出力させる等の処理を含む。これに対して、本実施の形態に従う半導体装置１００は、半導体装置１００内で発生する割り込み信号そのものをトリガーとして、任意の端子１０５のサンプリングデータを取得することができる。
【００６６】
トリガーカウンタ５０２は、トリガー検出回路２０１がトリガーを検出した回数をカウントする。トリガーカウンタ５０２は、レジスタ５０１によって設定された回数のトリガーをカウントすると、スタート信号を出力する。レジスタ５０１は、通信部１０１を介して、ＩＤＥからトリガーの検出回数の設定を受信してもよい。
【００６７】
トリガーカウンタ５０２が出力するスタート信号は、図２でトリガー検出回路２０１からサンプリング回路２０２に出力するスタート信号に対応する。ある局面において、トリガー検出回路２０１は、トリガーカウンタ５０２を含んでいてもよい。
【００６８】
図６は、タイマー割り込み発生時の端子１０５の信号波形の一例を示す図である。図６に示す例では、半導体装置１００のタイマーのカウンタ値（以下、単に「カウンタ値」と呼ぶ）６０１と、端子の波形６０２との変化を表している。
【００６９】
半導体装置１００は、装置内部にタイマーカウンタを含み、タイマーカウンタによってカウンタ値を順次カウントアップしていく。そして、カウンタ値が、予め定められたトグル値６０３およびトグル値６０４のいずれかと一致した場合に割り込み信号（以下「コンペアマッチ割り込み」という）が発生する。
【００７０】
図６に示す例では、カウンタ値がトグル値６０４と一致した場合、端子１０５Ｂの信号６０６が反転する（ＨＩＧＨ／ＬＯＷが切り替わる）。同様に、カウンタ値がトグル値６０３と一致した場合、端子１０５Ａの信号６０５が反転し、同時に、カウンタ値もリセットされる。
【００７１】
ユーザは、このようなタイマー割り込みによって変化する端子の波形６０２を観測したい場合、ＩＤＥを介して、トリガーとしてタイマー割り込みをレジスタ５０１に設定することができる。そうすることで、ユーザは、オシロスコープを用意することなく、ＩＤＥにより、半導体装置１００内で発生した割り込み信号をトリガーとして、任意の端子１０５の信号の変化を観測し得る。
【００７２】
図７は、ＩＤＥのＵＩの第１の例を示す図である。図７を参照して、ＩＤＥのＵＩは、ダイアログ７０１，７０２，７０３を含む。なお、ある局面において、全てのダイアログの機能は、単一のウィンドウ内に纏められていてもよい。また、ある局面において、全ての機能は、コマンドラインにて設定できてもよい。
【００７３】
ダイアログ７０１は、サンプリング周期の設定を受け付けるための領域７０４と、使用メモリ領域の設定を受け付けるための領域７０５と、サンプリング対象の端子１０５の設定を受け付けるための領域７０６と、トリガーの設定を受け付けるための領域７０７と、トリガーの検出回数の設定を受け付けるための領域７０８と、ＳＴＡＲＴボタン７０９と、ＣＡＮＣＥＬボタン７１０とを備える。
【００７４】
領域７０４は、端子１０５の信号のサンプリング間隔の入力あるいは選択を受け付ける。例えば、サンプリング周期が「５０ｎｓ」と設定されている場合、サンプリング回路２０２は、設定されたサンプリング周期に基づいて、５０ナノ秒ごとに、端子１０５の信号を一度サンプリングする。
【００７５】
領域７０５は、サンプリングデータを保存するための記憶領域の指定を受け付ける。当該記憶領域の設定は、レジスタ１０８に保存される。
【００７６】
領域７０６は、ダイアログ７０２を呼び出すボタンである。本実施の形態においては、領域７０６は、ダイアログ７０２を呼び出すボタンであるが、本実施の形態におけるＩＤＥのＵＩはこれに限られない。ダイアログ７０１は、ダイアログ７０２の機能を含んでいてもよい。
【００７７】
領域７０７は、サンプリング回路２０２にサンプリングを開始させるトリガーの設定を受け付ける。トリガーは、例えば、タイマー割り込み、通信割り込み、外部割り込みおよび信号波形（パターンマッチ）割り込みの少なくともいずれかを含む。
【００７８】
また、領域７０７にトリガーが設定されていない場合、サンプリング回路２０２は、波形取得モードに移行後、サンプリングデータの取得を続けてもよい。そして、サンプリング回路２０２は、ＲＡＭ１０６のサンプリングデータの記憶領域に空きがなくなった場合、すでにサンプリングデータが保存された記憶領域に、新しいサンプリングデータを上書きしてもよい。この場合、ＩＤＥが、ストップ信号を出力させるためのコマンドを半導体装置１００に送信したことに基づいて、サンプリング回路２０２は、サンプリングデータの取得を停止し得る。ユーザは、ストップ信号で停止した時点での最新のサンプリングデータの波形グラフを確認することができる。
【００７９】
領域７０８は、トリガーの検出回数の設定を受け付ける。例えば、領域７０８にて「３回」が入力された場合、トリガー検出回路２０１は、トリガーを３回検出すると、スタート信号を出力する。
【００８０】
ＩＤＥは、ＳＴＡＲＴボタン７０９を押されることにより、デバッガ装置１１０を介して、各領域で設定された内容を半導体装置１００に送信する。半導体装置１００は、受信した設定に基づいて、サンプリングデータの取得を開始する。なお、ＩＤＥは、ＣＡＮＣＥＬボタン７１０の押下を検出すると、各ダイアログの設定を終了してもよいし、半導体装置１００にストップ信号を出力させるコマンドを半導体装置１００に送信してもよい。
【００８１】
ダイアログ７０２は、サンプリングの対象になる端子１０５の選択を可能にする。ダイアログ７０３は、半導体装置１００により取得されたサンプリングデータをグラフとして表示する。ＩＤＥは、半導体装置１００によるサンプリングデータの取得の完了後、サンプリングデータを取得してダイアログ７０３を表示してもよい。また、ＩＤＥは、サンプリングデータを数値で表示してもよいし、ＣＳＶ（Comma-Separated Value）形式等で端末１２０に保存できるようにしてもよい。
【００８２】
図８は、ＩＤＥのＵＩの第２の例を示す図である。図８に示す例では、領域７０７にて「パターンマッチ」が設定されている。ＩＤＥは、領域７０７にて「パターンマッチ」が設定されている場合、ダイアログ８０１を表示してもよい。また、ダイアログ７０１は、波形パターンを設定するためのダイアログ８０１を呼び出すボタン等を含んでいてもよい。
【００８３】
ダイアログ８０１は、ダイアログ７０２にて選択された端子の信号のパターンを設定し得る。例えば、ユーザは、ダイアログ８０１にて、端子１０５「Ｐ１１」の信号が「ＬＯＷ」、かつ、端子１０５「Ｐ１２」の信号が「ＨＩＧＨ」となる波形パターン等を設定し得る。
【００８４】
なお、図７および図８の各ダイアログで設定された全ての内容は、端末１２０の記憶媒体に保存され、後でＩＤＥに再読み込みされて使用されてもよい。ユーザは、ＩＤＥを介して、一度作成したサンプリングの設定を端末１２０の記憶媒体に保存し得る。また、ユーザは、ＩＤＥを介して、端末１２０の記憶媒体に保存された設定をＩＤＥに読み出させ、読み出された設定を半導体装置１００に送信し得る。これにより、ユーザは、同じ設定を流用して半導体装置１００をテストすることができる。
【００８５】
図９は、サンプリング処理の一例を示すフローチャートである。ステップＳ９１０において、半導体装置１００は、ＩＤＥからＲＡＭ１０６の記憶領域、波形取得対象の端子およびトリガー等の任意の各種設定を受信する。
【００８６】
ステップＳ９２０において、半導体装置１００は、ＩＤＥからのコマンドにより、予めインストールされているユーザープログラムを実行する。半導体装置１００は、併せて、ステップＳ９１０にて受信した設定に基づいて、波形取得モードに移行し、サンプリングデータの取得を開始する。
【００８７】
ステップＳ９３０において、半導体装置１００は、サンプリング回路２０２にて取得したサンプリングデータをＲＡＭ１０６に保存する。半導体装置１００は、トリガーおよびトリガーの検出回数が設定されている場合は、設定された検出回数のトリガーを検出したことに基づいて、サンプリングデータの取得を行う。トリガーが設定されていない場合、半導体装置１００は、即座にサンプリングデータの取得を開始し、デバッガソフトウェアからのコマンドにより、ストップ信号の発生を検出するまでサンプリングデータの取得を続ける。なお、半導体装置１００は、ＲＡＭ１０６のサンプリングデータの記憶領域に空きがない場合、すでにサンプリングデータが保存された記憶領域に、新しいサンプリングデータを上書きしてもよい。
【００８８】
ステップＳ９４０において、半導体装置１００は、サンプリングデータの取得の完了通知をデバッガ装置１１０に送信する。ＩＤＥは、デバッガ装置１１０を介して完了通知を受信する。ＩＤＥは、完了通知の受信後に、半導体装置１００にサンプリングデータの取得要求を送信し、半導体装置１００からＲＡＭ１０６に保存されたサンプリングデータを受信する。
【００８９】
ステップＳ９５０において、ＩＤＥは、ボタンの押下やコマンド入力等のユーザの操作により、サンプリングデータの波形表示の指示の入力を受け付ける。ステップＳ９６０において、ＩＤＥは、端末１２０のモニターに受信したサンプリングデータの波形グラフを表示する。ある局面において、ＩＤＥは、半導体装置１００からサンプリングデータを取得した時点で、自動的に端末１２０のモニターに波形グラフを表示してもよい。
【００９０】
以上説明したように、本実施の形態に係る半導体装置１００によれば、ユーザは、オシロスコープを使用せずに、半導体装置１００が実装されたテストボードの評価を行うことを可能にする。また、半導体装置１００は、各ＲＡＭ１０６を個別にユーザープログラムの実行領域およびサンプリングデータの記憶領域のいずれかに設定することで、プログラミングミス等の原因でサンプリングデータおよびユーザープログラムの使用領域が重複する等の不測の事態を防ぐことができる。
【００９１】
＜第２の実施形態＞
次に、第２の実施の形態に従う半導体装置１０００について説明する。第２の実施の形態に従う半導体装置１０００は、サンプリングデータの圧縮機能を備える点で、第１の実施の形態に従う半導体装置１００とは異なる。なお、前述の実施の形態で示された構成と同じ構成には同じ符号が付してある。したがって、同じ構成の説明は繰り返さない。
【００９２】
図１０は、第２の実施の形態に従う半導体装置１０００の一部の構成の例を示すブロック図である。図１０を参照して、半導体装置１０００は、図２の回路構成に加えて、圧縮回路１００１を備える。
【００９３】
圧縮回路１００１は、サンプリング回路２０２からパラレル化したサンプリングデータと、サンプリングデータに関連付けられたタイムスタンプとを受信する。圧縮回路１００１は、サンプリング対象である端子１０５に変化がない期間のサンプリングデータを圧縮し、ＲＡＭ制御回路２０４に送信する。圧縮処理の詳細は後述する。
【００９４】
図１１は、圧縮回路１００１の機能の一部の例を示すブロック図である。圧縮回路１００１は、バッファ１１０２と、判定回路１１０３とを含む。
【００９５】
バッファ１１０２は、サンプリング回路２０２から取得した連続するタイムスタンプ「ｎ−１」およびタイムスタンプ「ｎ」と、各タイムスタンプに関連付けられたパラレル化されたサンプリングデータとを格納する。
【００９６】
判定回路１１０３は、バッファ１１０２に保存されたデータをＲＡＭ１０６に保存するか否かを判定する。判定回路１１０３は、タイムスタンプ「ｎ−１」およびタイムスタンプ「ｎ」のそれぞれのサンプリングデータを比較し、各サンプリングデータが異なる場合、タイムスタンプ「ｎ」のサンプリングデータをＲＡＭ制御回路２０４に送信する。また、例外として、判定回路１１０３は、必ずタイムスタンプ「０」のサンプリングデータをＲＡＭ制御回路２０４に送信する。なお、ここでのサンプリングデータの変化とは、サンプリング対象である端子１０５の信号の「ＨＩＧＨ／ＬＯＷ」の変化を意味する。
【００９７】
図１２は、サンプリングデータの圧縮の一例を示す図である。図１２に示す例では、サンプリング回路２０２は、端子１０５「Ｐ００，Ｐ０１，Ｐ０２，Ｐ０３」のそれぞれの信号のサンプリングデータを取得している。
【００９８】
信号波形１２０１は、各端子１０５の信号の変化を時系列に表示したものである。タイムスタンプは、サンプリング回路２０２のサンプリングの開始時を基準として、カウンタ３０８により生成される。
【００９９】
データ１２０２は、信号波形１２０１をデータ化したものである。データ１２０２は、タイムスタンプごとに、各端子１０５の信号「Ｈ／Ｌ（ＨＩＧＨ／ＬＯＷ）」を関連付けてある。なお、各端子１０５の「Ｈ／Ｌ」は、バイナリデータ「１／０」として表現されてもよい。同様に、タイムスタンプも、任意のビット数のバイナリデータとして表現されてもよい。
【０１００】
圧縮データ１２０３は、データ１２０２が圧縮回路１００１によって圧縮されたデータである。例えば、データ１２０２の期間１２１０の各端子１０５のそれぞれの信号は常に「Ｌ，Ｈ，Ｈ，Ｌ」となっている。つまり、タイムスタンプ「００」〜「０４」の期間は、各端子１０５のそれぞれの信号は変化しないことがわかる。この場合、期間１２１０の各端子１０５のそれぞれの信号のサンプリングデータは、圧縮されてデータ１２３０になる。データ１２３０は、各端子１０５のそれぞれの信号が変化しない期間の先頭のタイムスタンプおよび各端子１０５のそれぞれの信号を対応付けたデータである。
【０１０１】
同様に、データ１２０２の期間１２２０の各端子１０５のそれぞれの信号は常に「Ｈ，Ｈ，Ｌ，Ｌ」となっている。つまり、タイムスタンプ「０５」〜「０９」の期間は、各端子１０５のそれぞれの信号は変化しないことがわかる。この場合、期間１２２０の各端子１０５のそれぞれの信号のサンプリングデータは、圧縮されてデータ１２４０になる。
【０１０２】
以下同様に、データ１２０２は、圧縮回路１００１により、各端子１０５のそれぞれの信号が変化しない期間をひとまとまりとして圧縮される。よって、最終的に、ＲＡＭ１０６に保存されるサンプリングデータは、タイムスタンプ「０」のサンプリングデータと、サンプリング対象の端子の信号のＨＩＧＨ／ＬＯＷが切り替わるタイミングにおけるサンプリングデータとのみになる。
【０１０３】
以上説明したように、半導体装置１０００は、圧縮回路１００１により、サンプリングデータを圧縮するため、ＲＡＭ１０６により多くのサンプリングデータを格納することができる。
【０１０４】
＜第３の実施形態＞
次に、図１３を参照して、第３の実施の形態に従う半導体装置１３００について説明する。第３の実施の形態に従う半導体装置１３００は、ＣＰＵ１０２およびサンプリング回路２０２が共通のＲＡＭ制御回路２０３を介して同一のＲＡＭ１０６にアクセスする点で、前述の半導体装置１００，１０００とは異なる。なお、前述の実施の形態で示された構成と同じ構成には同じ符号が付してある。したがって、同じ構成の説明は繰り返さない。
【０１０５】
図１３は、第３の実施の形態に従う半導体装置１３００の一部の構成の例を示すブロック図である。図１３に示す例では、ＣＰＵ１０２およびサンプリング回路２０２は、いずれもバス１０３およびＲＡＭ制御回路２０３を介して同一のＲＡＭ１０６にデータの保存を行う。サンプリング回路２０２またはＲＡＭ制御回路２０４は、切替回路１０７の代わりにレジスタ１０８を参照して、ＲＡＭ１０６にデータを保存する処理を行ってもよい。
【０１０６】
上記の構成とすることで、ＲＡＭ１０６に接続されるバスの電気的な切り替えが発生しなくなる。また、ＣＰＵ１０２と、サンプリング回路２０２とは、共通の記憶領域を使用することができ、ＲＡＭ１０６の記憶領域の設定の自由度が向上する。
【０１０７】
＜第４の実施形態＞
図１４は、第４の実施の形態に従う半導体装置１４００の一部の構成の例を示すブロック図である。第４の実施の形態に従う半導体装置１４００は、第１〜第３の実施の形態における半導体装置１４００の構成を組み合わせたものとなる。
【０１０８】
図１４に示す例では、サンプリング回路２０２は、ＣＰＵ１０２と同一のバス１０３を経由する経路と、バス１０３を経由しない経路とのいずれか片方を介してＲＡＭ１０６にサンプリングデータを保存することができる。ユーザは、ＩＤＥにより、サンプリングデータのＲＡＭ１０６への書き込み経路として、バス１０３を経由する経路およびバス１０３を経由しない経路のいずれかを選択し得る。また、ＲＡＭ１０６は、非圧縮のサンプリングデータおよび圧縮されたサンプリングデータのいずれかを記憶し得る。
【０１０９】
上記の構成とすることで、ユーザは、サンプリングデータの書き込み経路として、安全性が高い経路およびＲＡＭ１０６の記憶領域の割り当ての自由度が高い経路のいずれかを用途に合わせて柔軟に選択することができる。
【０１１０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【符号の説明】
【０１１１】
１００，１０００，１３００，１４００  半導体装置、１０１  通信部、１０３  バス、１０４  検査回路、１０５，１０５Ａ，１０５Ｂ，１０５Ｃ  端子、１０６，１０６Ａ，１０６Ｂ  ＲＡＭ、１０７  切替回路、１０８  レジスタ、１１０  デバッガ装置、１２０  端末、２０１  トリガー検出回路、２０２  サンプリング回路、２０３，２０４  ＲＡＭ制御回路、３０１  レジスタ、３０２，３０３  分周回路、３０４  レジスタ、３０５  バッファ、３０６  選択回路、３０７  シリアルパラレル変換回路、３０８  カウンタ、３０９  レジスタ、３１０  第１の信号生成回路、３１１  第２の信号生成回路、４０１  パラレルデータ、５０１  レジスタ、５０２  トリガーカウンタ、７０１，７０２，７０３，８０１  ダイアログ、７０４，７０５，７０６，７０７，７０８  領域、７０９  ＳＴＡＲＴボタン、７１０  ＣＡＮＣＥＬボタン、１００１  圧縮回路、１１０２  バッファ、１１０３  判定回路、１２０１  信号波形。 
【図１】
2020154699.tif 000003
【図２】
2020154699.tif 000004
【図３】
2020154699.tif 000005
【図４】
2020154699.tif 000006
【図５】
2020154699.tif 000007
【図６】
2020154699.tif 000008
【図７】
2020154699.tif 000009
【図８】
2020154699.tif 000010
【図９】
2020154699.tif 000011
【図１０】
2020154699.tif 000012
【図１１】
2020154699.tif 000013
【図１２】
2020154699.tif 000014
【図１３】
2020154699.tif 000015
【図１４】
2020154699.tif 000016