(58)【調査した分野】(Int.Cl.,DB名)
前記試験プログラムには、前記第1のアドレス、前記第2のアドレス及び、前記バスの使用要求を前記試験制御部に発生させる命令が記述されている、ことを特徴とする請求項1または2に記載の半導体装置。
【発明を実施するための形態】
【0013】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の半導体装置及び試験回路の一例を示す図である。
【0014】
半導体装置1は、プロセッサ2、試験プログラム入力部3、RAM(Random Access Memory)4、ROM(Read Only Memory)5、試験対象回路6、試験回路7を有し、これらはバス8に接続されている。
【0015】
プロセッサ2は、ROM5に格納されたプログラムや、試験プログラム入力部3から入力された試験プログラムに基づき、半導体装置1の各部を制御する。
試験プログラム入力部3は、試験対象回路6に対する試験プログラムを入力する。試験プログラム入力部3は、たとえば、通信マクロである。なお、試験プログラムはROM5に格納されていてもよい。
【0016】
RAM4は、プロセッサ2に実行させるプログラムの少なくとも一部を一時的に格納する。たとえば、試験プログラムはRAM4上に展開されて実行される。
ROM5は、プロセッサ2が実行するプログラムや、各種データを格納する。
【0017】
試験対象回路6は、設定値などを格納するレジスタを有している各種周辺回路などである。たとえば、タイマや通信インターフェースなどが試験対象回路6となる。なお、バス8に接続されている試験プログラム入力部3、RAM4、ROM5が試験対象回路6であってもよい。
【0018】
試験回路7は、記憶部10、試験制御部11、バス出力制御回路12、バス入力制御回路13を有する。
記憶部10は、ダミーアドレス格納レジスタ10a、調査アドレス格納レジスタ10b、データ格納レジスタ10cを有している。
【0019】
ダミーアドレス格納レジスタ10aと調査アドレス格納レジスタ10bは、試験プログラムで指定される2つのアドレスを保持する。以下、上記の2つのアドレスを、ダミーアドレスと調査アドレスと呼ぶことにする。調査アドレスは、調査するデータが格納される試験対象回路6のアドレスであり、ダミーアドレスは、試験時に特定のアドレスの動きをさせるために、調査アドレスの前に指定されるアドレスである。これらの2つのアドレスは、試験プログラムに記述されている。
【0020】
データ格納レジスタ10cは、試験対象回路6から読み出されるデータ、または試験対象回路6に書き込むデータを保持する。試験対象回路6に書き込むデータは、たとえば、試験プログラムに記述されている。
【0021】
試験制御部11は、プロセッサ2にバス8の使用要求を行う。試験制御部11にバス8の使用要求を発生させる命令は、試験プログラムに記述されている。試験制御部11は、プロセッサ2からバス8の使用許可を受けると、プロセッサ2によるバス8の制御を待機させた状態で、ダミーアドレスと調査アドレスをバス8に順に供給し、試験対象回路6に対する試験を行う。
【0022】
バス出力制御回路12は、試験制御部11の制御のもと、ダミーアドレス、調査アドレス、または書き込み試験時には書き込みデータをバス8に出力する。
バス入力制御回路13は、試験制御部11の制御のもと、試験対象回路6から読み出されたデータを、バス8を介して読み出し、データ格納レジスタ10cに供給する。
【0023】
以下、第1の実施の形態の半導体装置の動作の一例を説明する。
プロセッサ2の制御のもと、試験プログラム入力部3が試験プログラムを入力する。試験プログラムは、RAM4に展開される。RAM4に展開された試験プログラムにより、ダミーアドレス格納レジスタ10aと調査アドレス格納レジスタ10bに、ダミーアドレスと調査アドレスが保持される。書き込み試験が行われる場合には、データ格納レジスタ10cに試験プログラムに記述された書き込み用のデータが格納される。
【0024】
また、試験プログラムにより、試験制御部11が、プロセッサ2にバス8の使用要求を行う。プロセッサ2は試験制御部11からバス8の使用要求を受けると、バス8の使用許可を発行する。これにより、プロセッサ2は待機状態となり、バス8の制御が試験回路7で行われるようになる。
【0025】
試験制御部11は、プロセッサ2からのバス8の使用許可を受けると、プロセッサ2を待機させた状態で、ダミーアドレスと調査アドレスをバス出力制御回路12にバス8に出力させる。
【0026】
図1の例では、試験回路7からの出力アドレスと、バス8(アドレスバス)を伝達するその出力アドレスのアドレスビット群のうち、あるアドレスビット(bit x)の一例の様子が示されている。
【0027】
タイミングt1では、試験回路7の出力アドレスとしてダミーアドレスが出力される。また、タイミングt2では、試験回路7の出力アドレスとして調査アドレスが出力される。ここで、ダミーアドレスと調査アドレスの共通のbit xは、正常時の場合、“1”(H(High)レベル)から“0”(L(Low)レベル)に変化している。しかしながら、たとえば、bit xを伝達するアドレス線において、遅延性の不具合が発生した場合、“1”から“0”への変化が遅延して、たとえば
図1に示すような異常時の波形となる。このような場合、試験対象回路6では、bit xが、“0”ではなく“1”であると判定して、たとえば、意図したアドレスとは違うアドレスからの誤読み出しが発生する。
【0028】
試験制御部11は、調査アドレスを出力した後に、その調査アドレスに基づき試験対象回路6から読み出されたデータを、バス入力制御回路13を介してデータ格納レジスタ10cに格納する。
【0029】
その後、試験制御部11は、バス8の使用要求を取り下げる。これにより、プロセッサ2によるバス8の制御が行われ、たとえば、データ格納レジスタ10cからのデータの読み出しが行われる。これにより、意図したデータが読み出されているかが判定される。
図1のように、bit xが異常時の波形で示したように変化すると、正しいアドレスが指定されないため、読み出されたデータは意図したものとは異なるため、不具合が発生していることを把握することができる。なお、データ格納レジスタ10cに格納されたデータは、プロセッサ2による制御のもと、図示しない通信マクロを介して外部に出力され、外部の装置により不具合の発生の有無が判定されるようにしてもよい。
【0030】
なお、試験対象回路6に対するデータ書き込み時のアドレスの異常による、誤読み出しを検出する際には、試験制御部11の制御のもと、調査アドレスで指定された試験対象回路6のレジスタへ、データ格納レジスタ10cに格納されているデータが書き込まれる。ただし、
図1に示すようなアドレスの異常が発生した場合には、意図しないアドレスへ誤書き込みされる。試験制御部11によるバス8の使用要求の取り下げ後、プロセッサ2により、調査アドレスにおけるデータがデータ格納レジスタ10cから読み出され、意図した値が書き込まれたかが判定される。
【0031】
このように、本実施の形態では、試験プログラムで指定されるダミーアドレスと調査アドレスが記憶部10に保持され、プロセッサ2によるバス8の制御を待機させた状態で、試験回路7がこれらのアドレスを順にバス8に出力して試験を実行する。試験プログラムに記述されたダミーアドレスと調査アドレスの値は任意に変更できる。そのため、試験対象回路6に対する試験の際に、アドレスの動きを任意に設定でき、不具合の再現が容易になる。
【0032】
また、アドレスの動きをワーストケースにするために命令コードのアドレス配置を考えなくてもよくなるため、プロセッサ2が試験を行う場合のように、ワーストケースを再現するための複雑な試験プログラムを作成せずともよくなる。
【0033】
また、試験プログラムにより、アドレスを任意に設定できるため、アドレス/データ入出力専用端子や、外部のアドレス発生器などが不要となる。
また、試験プログラムが実行されることにより、試験回路7の試験制御部11が、バス8の使用要求を発行して、プロセッサ2を待機させ、試験回路7によるバス8の制御が行われるようになる。これにより、予め周辺回路などに試験開始トリガーのための回路を設けたり、トリガー条件などを記述したテーブルなどを設けずともよくなる。
【0034】
(第2の実施の形態)
図2は、第2の実施の形態の半導体装置の一例を示す図である。
半導体装置20は、プロセッサ21、デコーダ22、ROM23,26、通信マクロ24、周辺回路25、RAM27、DMAC(Direct Memory Access Controller)28、試験回路29を有しており、これらは内部バス30に接続されている。また、半導体装置20は、OR回路31を有している。
【0035】
プロセッサ21は、ROM23,26に格納されたプログラムや、たとえば、通信マクロ24から入力された試験プログラムに基づき、半導体装置20の各部を制御する。プロセッサ21は、マルチプロセッサであってもよい。プロセッサ21は、たとえばCPU、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ21は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0036】
デコーダ22は、外部より入力される動作モード選択信号に応じて、ROM23を選択するか、ROM26を選択するか切り替える。
ROM23は、たとえば、試験時にプロセッサ21によって実行されるプログラムや、各種データを格納する。
【0037】
通信マクロ24は、プロセッサ21またはDMAC28の制御のもと、外部からの試験プログラムの入力や、試験結果の出力を行う。
周辺回路25は、タイマや入出力インターフェースなどである。
【0038】
ROM26は、ユーザによって使用されるプログラムや、各種データを格納する。
RAM27は、プロセッサ21に実行させるプログラムの少なくとも一部を一時的に格納する。
【0039】
DMAC28は、通信マクロ24や周辺回路25などと、RAM27との間のデータの送受信を制御する。また、DMAC28は、OR回路31を介してプロセッサ21に、内部バス30の使用要求を発行するとともに、プロセッサ21から内部バス30の使用許可を受ける。
【0040】
試験回路29は、試験プログラムで指定されるアドレスを試験対象回路に供給して、試験を行う。また、試験回路29は、OR回路31を介してプロセッサ21に、内部バス30の使用要求を発行するとともに、プロセッサ21から内部バス30の使用許可を受ける。
【0041】
OR回路31は、DMAC28または試験回路29の少なくとも1つから内部バス30の使用要求が発行されたとき、それをプロセッサ21に通知する。
なお、内部バス30は、データバスとアドレスバスを含む。
【0042】
図3は、第2の実施の形態の試験回路の一例を示す図である。
試験回路29は、ダミーアドレス格納レジスタ40、調査アドレス格納レジスタ41、データ格納レジスタ42、内部バス使用要求信号生成部43、シーケンス回路44、バス出力制御回路45、バス入力制御回路46を有する。
【0043】
ダミーアドレス格納レジスタ40は、試験時に特定のアドレスの動きをさせるために、調査アドレスの前に指定されるアドレスであるダミーアドレスを保持する。
調査アドレス格納レジスタ41は、試験対象回路6に調査のために指定されるアドレスを保持する。これらのアドレスは、試験プログラムに基づいて設定されるアドレスである。
【0044】
データ格納レジスタ42は、試験時に試験対象となる回路から読み出されるデータ、または試験対象となる回路に書き込むデータを保持する。
内部バス使用要求信号生成部43は、プロセッサ21に内部バス30の使用要求を行う内部バス使用要求信号を生成する。以下、内部バス使用要求信号が“1”のときに、試験回路29が内部バス30の使用を要求するものとする。
【0045】
シーケンス回路44は、プロセッサ21に接続されており、プロセッサ21から内部バス30の使用を許可する旨の信号を受けると、バス出力制御回路45を制御してダミーアドレスと調査アドレスを内部バス30に順に供給する。そして、シーケンス回路44は、読み出し試験のときは、バス入力制御回路46を制御して、調査アドレスによって、試験対象となる回路から読み出されるデータを、内部バス30を介してデータ格納レジスタ42に保持させる。また、書き込み試験のときは、シーケンス回路44は、バス出力制御回路45を制御して、データ格納レジスタ42に保持されているデータを、内部バス30を介して、試験対象となる回路に書き込ませる。シーケンス回路44は、データ格納レジスタ42へのデータの書き込み、またはデータ格納レジスタ42からのデータの読み出しが終わると、内部バス使用要求信号生成部43を制御して、内部バス使用要求信号を“0”にさせる。
【0046】
バス出力制御回路45は、シーケンス回路44の制御のもと、ダミーアドレス、調査アドレス、または書き込みデータを内部バス30に出力する。
バス入力制御回路46は、シーケンス回路44の制御のもと、試験対象の回路から読み出されたデータを、内部バス30を介してデータ格納レジスタ42に供給する。
【0047】
以下、読み出し試験を例にして、本実施の形態の半導体装置20の試験方法の一例を説明する。
(半導体装置20の試験方法の一例)
図4及び
図5は、本実施の形態の半導体装置の試験方法の一例の流れを示すフローチャートである。
【0048】
まず、デコーダ22は、ROM23に格納された試験時に実行されるプログラムを選択する旨の動作モード選択信号を受信して、試験プログラムのRAM27への転送のための動作モードを選択する(ステップS1)。これにより、プロセッサ21は、ROM23上のプログラムを起動し、通信マクロ24によるRAM27へ転送動作を開始する(ステップS2)。
【0049】
通信マクロ24は、外部からの試験プログラムの読み込みを開始し(ステップS3)、読み込まれた試験プログラムが、RAM27上へ展開される(ステップS4)。そして、プロセッサ21は、実行中のプログラムの処理から、上記の試験プログラムへ処理を移す。
【0050】
その後、プロセッサ21の制御のもと、試験プログラムに基づく初期設定(ステップS5)、試験回路29に対する設定が行われる(ステップS6)。これによって、試験回路29が起動する。ステップS5の処理では、たとえば、通信マクロ24におけるボーレートの設定やビット長などの設定が行われる。また、ステップS6の処理では、ダミーアドレス格納レジスタ40と、調査アドレス格納レジスタ41へのダミーアドレスと調査アドレスの書き込みなどが行われる。
【0051】
その後、試験回路29の内部バス使用要求信号生成部43は、内部バス使用要求信号を“1”として、内部バス使用要求を発行する(ステップS7)。
プロセッサ21は、内部バス使用要求を受けて、内部バス使用許可を発行するとともに内部バス30を開放して、待機状態となる(ステップS8)。
【0052】
試験回路29においてシーケンス回路44は、内部バス使用許可を受け取ると(ステップS9)、バス出力制御回路45を制御して、ダミーアドレス格納レジスタ40に保持されているダミーアドレスを内部バス30に出力する(ステップS10)。
【0053】
その後、シーケンス回路44は、バス出力制御回路45を制御して、調査アドレス格納レジスタ41に保持されている調査アドレスを内部バス30に出力する(ステップS11)。
【0054】
その後、シーケンス回路44は、バス入力制御回路46を制御して、調査アドレスによって読み出された試験対象の回路からの読み出しデータを、データ格納レジスタ42に格納させる(ステップS12)。
【0055】
ステップS12の処理後、シーケンス回路44は、内部バス使用要求信号生成部43を制御して、内部バス使用要求信号を“0”にさせ、内部バス使用要求の取り下げを行う(ステップS13)。これによって、プロセッサ21による内部バス30を用いる動作が再開する(ステップS14)。
【0056】
プロセッサ21は、データ格納レジスタ42に格納されたデータを読み出し、理想値との比較を行い、その比較結果を通信マクロ24から出力する出力処理を行う(ステップS15)。
【0057】
通信マクロ24から出力されたデータに基づき、外部の装置では良否判定処理が行われる(ステップS16)。なお、プロセッサ21が良否判定処理を行うようにしてもよいし、試験回路29が、理想値を保持しており、その理想値とデータ格納レジスタ42に格納されたデータとを比較して、その比較結果または比較結果に基づく良否判定結果を出力するようにしてもよい。
【0058】
次に、試験プログラムの一例を説明する。
(試験プログラムの一例)
図6は、試験プログラムの一例を示す図である。
【0059】
試験プログラムでは、まずレジスタ群が定義されている。“TEST_DA”は、ダミーアドレス格納レジスタ40、“TEST_RA”は、調査アドレス格納レジスタ41、“TEST_RD”は、データ格納レジスタ42を示している。“TSET_ST”は、内部バス使用要求信号生成部43内の図示しない内部バス要求ビット格納レジスタを示している。また、“CANREG”と“CANSTAT”は、通信マクロ24内の、図示しない通信マクロ送信データレジスタと通信マクロ状態レジスタを示している。
【0060】
その次に、試験時の各処理が記述されている。まずは通信マクロ24の初期化を行うコードとして、通信マクロ24のボーレート、ビット長、送信許可の設定などが記述されている。これらのコードにより、前述した
図4のステップS5の処理が行われる。
【0061】
さらに、試験回路29の設定を行うコードの一例が記述されている。“MOV TEST_DA,#7FFFEh”は、ダミーアドレス格納レジスタ40に、ダミーアドレス“7FFFEh”を転送するコードである。“MOV TEST_RA,#C0000h”は、調査アドレス格納レジスタ41に、調査アドレス“C0000h”を転送するコードである。“MOV TEST_ST,#FFh”は、内部バス使用要求ビット格納レジスタに、内部バス使用要求ビット“FFh”を転送するコードである。
【0062】
これらのコードにより、前述した
図4のステップS6,S7の処理が行われる。
その次に、プロセッサ21による制御から、試験回路29のシーケンス回路44による制御に切り替わるまで、プロセッサ21を待機させる、切り替わり待ちのためのダミーコード“NOP”が記述されている。
図6の例では、2サイクル待機させたタイミングで、シーケンス回路44による制御に移行する。コード“NOP”は、さらにもう一つ記述されており、さらに1サイクル分、プロセッサ21を待機させる。
【0063】
次に記載されている“WAITLOOP”内の、“MOV A,TEST_ST”は、内部バス要求ビット格納レジスタの値を、プロセッサ21の図示しないアキュムレータ(レジスタ)に転送するコードである。また、“CMP A,00h”は、アキュムレータの値が、“00h”であるか否かを判定するコードである。これにより、試験回路29による内部バス30の制御が終了したか否かが確認される。内部バス要求ビット格納レジスタの値は、シーケンス回路44の制御のもと、試験対象の回路から読み出されたデータがデータ格納レジスタ42に格納された後に、“00h”となる。これにより内部バス使用要求信号が“0”となり、試験回路29による内部バス30の制御が終了することになる。
【0064】
“BNE WAITLOOP”は、アキュムレータの値が、“00h”でない場合には、“WAITLOOP”内の処理を繰り返させるコードである。つまり、試験回路29による内部バス30の制御が終了していないなら、プロセッサ21の処理は、“WAITLOOP”の行からの処理に戻る。
【0065】
以下のコードは、試験回路29による内部バス30の制御が終了したときに実行される。
“MOV A,TEST_RD”は、調査アドレス格納レジスタ41に書き込まれた、試験対象の回路からの読み出しデータのプロセッサ21のアキュムレータへの取り込みを行うコードである。
【0066】
“MOV CANREG,A”は、アキュムレータに取り込まれた読み出しデータを、通信マクロ送信レジスタに書き込むコードである。
次に記載されている“WAITLOOP1”内の、“BBS,CANSTAT:0,WAITLOOP1”は、通信マクロ24内の、通信マクロ状態レジスタの値が“0”(送信終了を示す値)になるまで、プロセッサ21の動作を待機させるコードである。
【0067】
“//PROG END”は、試験プログラムの終わりを示している。なお、
図6の試験プログラムの例では、試験対象の回路から読み出したデータを、そのまま通信マクロ24を用いて出力するものとしているが、前述したように、理想値と読み出しデータとの比較結果を通信マクロ送信レジスタに書き込んだ後、外部に出力するようにしてもよい。
【0068】
次に、読み出し試験を例にして、本実施の形態の半導体装置20の試験動作時の各部の信号の一例の様子を説明する。
(半導体装置20の試験動作時の各部の信号の一例)
図7は、通信マクロからRAMへの試験プログラムの転送動作時の各部の信号の一例を示すタイミングチャートである。
【0069】
図7では、上から内部バス30(アドレスバス)、通信マクロ24の入力波形、内部バス30(データバス)、RAM27のデータ入力波形の一例が示されている。
タイミングt10〜t11の間で、通信マクロ24による試験プログラムの読み込みと、内部バス30(データバス)への伝達が行われ、プロセッサ21に入力される。タイミングt12〜t13の間で、試験プログラムがプロセッサ21から、RAM27の指定されたアドレスに書き込まれる。
【0070】
タイミングt14から、RAM27に書き込まれた試験プログラムが実行されることになる。
図8は、試験プログラム実行時の各部の信号の一例を示すタイミングチャートである。
【0071】
図8では、上から内部バス30(アドレスバス)、RAM27のデータ出力波形、内部バス30(データバス)、ダミーアドレス格納レジスタ40の入力波形、調査アドレス格納レジスタ41の入力波形、内部バス使用要求ビット格納レジスタの入力波形の一例が示されている。
【0072】
試験プログラムが実行されると、タイミングt15から、試験回路29の各レジスタへの書き込み動作が行われる。
タイミングt16では、ダミーアドレス格納レジスタ40に、前述のように試験プログラムに記述されたダミーアドレスが書き込まれる。
【0073】
タイミングt17では、調査アドレス格納レジスタ41に、試験プログラムに記述された調査アドレスが書き込まれる。
タイミングt18では、内部バス使用要求ビット格納レジスタに、試験プログラムに記述された内部バス使用要求ビットの値(
図6に示した試験プログラムの例の場合“FFh”)が書き込まれる。
【0074】
なお、上記では、ダミーアドレス、調査アドレスの順で書き込まれる例について示したが、この順番に限定されるものではない。調査プログラムのコードに応じて、書き込む順番は変更してもよい。
【0075】
図9は、試験回路動作時の各部の信号の一例を示すタイミングチャートである。
図9では、上から内部バス30(アドレスバス)の様子と、アドレスのbit 14の正常時の波形と異常時の波形、内部バス使用要求ビット格納レジスタの入力波形、内部バス使用要求信号及び内部バス使用許可信号の一例が示されている。さらに、正常時と異常時の内部バス30(データバス)の波形、ダミーアドレス格納レジスタ40と調査アドレス格納レジスタ41の出力波形、データ格納レジスタ42の入力波形の一例が示されている。
【0076】
前述したように、タイミングt18で、内部バス使用要求ビット格納レジスタに、内部バス使用要求ビットの値が書き込まれると、タイミングt19において、内部バス使用要求信号生成部43は、内部バス使用要求信号を“0”から“1”にする。
【0077】
内部バス使用要求信号の変化を受けて、プロセッサ21は、内部バス使用許可信号を“0”から“1”にする。これによって、内部バス30が、試験回路29によって制御されることになる。
【0078】
タイミングt21〜t22の間では、試験回路29のシーケンス回路44が、バス出力制御回路45を制御して、ダミーアドレスと調査アドレスを順に内部バス30に出力させている。さらにシーケンス回路44は、バス入力制御回路46を制御して、試験対象の回路から読み出されたデータを、データ格納レジスタ42に格納させている。
【0079】
図9の例では、ダミーアドレスと調査アドレスとが、
図6に示した試験プログラムに記述されている値、“7FFFEh”と“C0000h”とである場合について示されている。“7FFFEh”から“C0000h”へアドレスを動かすとき、アドレスビットbit 14は、正常時の場合、“1”から“0”へ変化する。しかしながら、異常時には、たとえば、
図9に示されているように“0”への変化が遅れる。このような異常が発生する理由の一例を以下に示す。
【0080】
図10は、アドレスバスでの異常発生の一例を示す図である。
周辺回路25が試験対象回路である場合について示されている。たとえば、周辺回路25は、レジスタ50,51、AND回路52,53、インバータ回路54を有している。
【0081】
図10の例では、内部バス30(アドレスバス)のアドレス線30a,30b,30cは、AND回路52の入力端子に接続されており、AND回路52の出力端子はレジスタ50に接続されている。また、アドレス線30a,30bは、AND回路53の入力端子に接続されており、アドレス線30cは、インバータ回路54を介してAND回路53の入力端子に接続されている。AND回路53の出力端子は、レジスタ51に接続されている。
【0082】
内部バス30(アドレスバス)により周辺回路25に供給されるアドレスによって、レジスタ50またはレジスタ51が選択される。たとえば、アドレス線30a,30b,30cを伝達する各アドレスビットが“1”であれば、AND回路52の出力信号は“1”となり、AND回路53の出力信号は“0”となる。このとき、レジスタ50が選択されて読み出しまたは書き込みが行われる。ここで、アドレス線30cを伝達するアドレスビットが“0”となると、AND回路52の出力信号は“0”となり、AND回路53の出力信号は“1”となり、レジスタ51が選択されることになる。
【0083】
しかしながら、たとえば、
図10のように、アドレス線30cに異物60が付着して、アドレス線30cを伝達するアドレスビットの変化が、
図9にbit 14の異常時波形として示したように遅れる場合を考える。この場合、AND回路52,53の出力信号の変化も遅れ、読み出し時や書き込み時にレジスタ51を選択すべきところをレジスタ50が選択される可能性がある。これにより誤読み出しや誤書き込みが生じる。
【0084】
図9のタイミングt21〜t22に示すように、ダミーアドレス“7FFFEh”と調査アドレス“C0000h”がアドレスバスに供給されることで、データバスには試験対象の回路のデータが読み出される。しかし、アドレスビットbit 14の波形が
図9のように正常時の場合と異常時の場合では、データバスに読み出されるデータが変わる。そのため、データ格納レジスタ42に格納されるデータも変わる。
【0085】
タイミングt22でシーケンス回路44が、内部バス使用要求信号を“0”とすると、タイミングt23にて、プロセッサ21は、内部バス使用許可信号を“0”とする。これによって、内部バス30がプロセッサ21によって制御されるようになる。
【0086】
図11は、試験回路動作終了後の結果出力処理時の各部の信号の一例を示す図である。
図11では、上から内部バス30(アドレスバス)の様子と、内部バス使用要求信号及び内部バス使用許可信号の一例が示されている。さらに、内部バス30(データバス)の波形、調査アドレス格納レジスタ41の出力波形、データ格納レジスタ42の入出力波形、通信マクロ24の出力波形の一例が示されている。
【0087】
図11の例では、タイミングt24からプロセッサ21の処理が再開している。プロセッサ21は、タイミングt25〜t26の間で、データ格納レジスタ42に格納されたデータを読み出し、良否判定を行い、通信マクロ24を用いて判定結果の送信準備を行う。ここでは、前述したように、通信マクロ24のレジスタへの判定結果の書き込みなどが行われる。これにより、タイミングt26から、通信マクロ24は、判定結果を送信する。
【0088】
第2の実施の形態の半導体装置20及び試験回路29でも第1の実施の形態の半導体装置1及び試験回路7と同様の効果を有する。すなわち、試験対象となる回路に対する試験の際に、アドレスの動きを任意に設定でき、不具合の再現が容易になる。たとえば、
図9のアドレスビットbit 14の異常時波形のように、誤読み出しや誤書き込みを行う状態をピンポイントで設定できるようになる。
【0089】
また、アドレスの動きをワーストケースにするために命令コードのアドレス配置を考えなくてもよくなるため、プロセッサ21が試験を行う場合のように、ワーストケースを再現するための複雑な試験プログラムを作成せずともよくなる。
【0090】
また、試験プログラムにより、アドレスを任意に設定できるため、アドレス/データ入出力専用端子や、外部のアドレス発生器などが不要となる。
また、試験プログラムが実行されることにより、試験回路29の内部バス使用要求信号生成部43が、内部バス30の使用要求を発行して、プロセッサ21を待機させ、試験回路29による内部バス30の制御が行われるようになる。これにより、予め周辺回路などに試験開始トリガーのための回路を設けたり、トリガー条件などを記述したテーブルなどを設けずともよくなる。また、OR回路31が、DMAC28または試験回路29から出力される内部バス30の使用要求をプロセッサ21に伝えるようにしたため、簡単な構成で内部バス30の制御主体を、プロセッサ21、DMAC28、試験回路29の間で切り替えられる。
【0091】
以上、実施の形態に基づき、本発明の半導体装置、試験回路及び試験方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
たとえば、試験プログラムは、通信マクロを介して外部から取り込んでRAMに展開するのではなく、予め半導体装置内のROM内に格納しておき、半導体装置の起動時に自己診断を行わせるようにしてもよい。