(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、内部バスと、前記ＣＰＵの動作プログラムを保有するＲＯＭと、外部とインタフェース可能な入出力ポートと、外部信号から内部基準クロック信号を形成するクロックパルスジェネレータと、動作モードを指定するためのｎ（１より大きな整数）個の外部端子と、動作モード設定回路とを有する半導体集積回路であって、
前記動作モード設定回路は、第１記憶手段と、第２記憶手段と、動作モード選択回路とを備え、
前記第１記憶手段は、動作モードを指定するためのｎビットの情報を、前記内部バスを介して書換可能に保持することが可能であって、半導体集積回路のリセットに呼応してｎビットの情報で規定される第１の値が設定され、保持する内容を前記内部バスを介して読み出すことが可能な揮発性の記憶手段であり、
前記第２記憶手段は、前記ｎ個の外部端子から入力されたｎビットの信号を保持することが可能で、保持する内容を前記内部バスを介して読み出すことが可能な揮発性の記憶手段であり、
前記動作モード選択回路は、前記第１記憶手段に前記第１の値が設定された第１状態では前記第２記憶手段に保持された状態に応じて動作モード決定用の複数の内部信号を生成し、前記第１記憶手段に前記第１の値以外のｎビットの情報が設定された第２状態では当該設定されたｎビットの情報に応じて前記動作モード決定用の複数の内部信号を生成するものであって、
前記動作モード設定回路は、前記動作モード決定用の複数の内部信号として、前記ＲＯＭの使用の可否を決定するための第１信号と、外部メモリの使用の可否を決定するための第２信号と、クロックパルスジェネレータによる分周の可否を決定するための第３信号を生成すると共に、前記第１記憶手段に前記第１の値以外のｎビットの情報が設定された第２状態において前記第３信号を分周不可の指示状態に制御することを特徴とする半導体集積回路。
【請求項２】
ＣＰＵと、内部バスと、外部信号から内部基準クロック信号を形成するクロックパルスジェネレータと、動作モードを指定するためのｎ（１より大きな整数）個の外部端子と、動作モード設定回路とを有する半導体集積回路であって、
前記動作モード設定回路は、第１記憶手段と、第２記憶手段と、動作モード選択回路とを備え、
前記第１記憶手段は、動作モードを指定するためのｎビットの情報を、前記内部バスを介して書換可能に保持することが可能であって、半導体集積回路のリセットに呼応してｎビットの情報で規定される第１の値が設定され、保持する内容を前記内部バスを介して読み出すことが可能な揮発性の記憶手段であり、
前記第２記憶手段は、前記ｎ個の外部端子から入力されたｎビットの信号を保持することが可能で、保持する内容を前記内部バスを介して読み出すことが可能な揮発性の記憶手段であり、
前記動作モード選択回路は、前記第１記憶手段に前記第１の値が設定された第１状態では前記第２記憶手段に保持された状態に応じて動作モード制御信号を生成し、前記第１記憶手段に前記第１の値以外のｎビットの情報が設定された第２状態では当該設定されたｎビットの情報に応じて前記動作モード制御信号を生成するものであって、
前記動作モード設定回路は、前記動作モード制御信号として、クロックパルスジェネレータによる分周の可否を決定するためのクロック制御信号を生成すると共に、前記第１記憶手段に前記第１の値以外のｎビットの情報が設定された第２状態において前記クロック制御信号を分周不可の指示状態に制御することを特徴とする半導体集積回路。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、半導体集積回路に係り、例えば、シングルチップマイクロコンピュータに利用して有効な技術に関するものである。
【０００２】
【従来の技術】
シングルチップマイクロコンピュータは、昭和５９年１１月３０日オーム社発行の『ＬＳＩハンドブック』Ｐ５４０およびＰ５４１に記載されるように、中央処理装置を中心にしてプログラム保持用のＲＯＭ（リードオンリメモリ）、データ保持用のＲＡＭ（ランダムアクセスメモリ）、およびデータの入出力を行うための入出力回路などの機能ブロックが１つの半導体基板上に形成されてなる。かかるシングルチップマイクロコンピュータは、内蔵メモリと入出力回路のみを用いて動作するシングルチップモードと、外部のメモリを使用可能な拡張モードを有する。本発明者はかかるシングルチップマイクロコンピュータのテストを行なうことについて検討した。シングルチップモードではＣＰＵが内蔵メモリ上のプログラムを実行するほかはなく、自由なテストができない。すなわち、シングルチップモードでは内蔵メモリにテスト用プログラムを設ける余地はなく、このようなテスト用プログラムはシングルチップマイクロコンピュータを所要のシステムに組み込んで動作させることは実使用上は不可能である。なぜならば内蔵メモリに固定的にテストプログラムを保持させることは、内蔵メモリ全体の物理的な容量に対してシステム上自由に使用できる容量を減少させてしまう不利益を生ずる。これに対して前記拡張モードを使用すれば、自由にプログラムを外部から与え、テストを行うことができる。
【０００３】
また、シングルチップマイクロコンピュータとしては、水晶振動子などからの発振信号又は外部から供給されるクロック信号から生成される、例えばデューティ５０％のクロック信号に基づいて動作するものがある。ここで、これら発振信号または外部クロック信号を分周して基準クロックを生成する場合を考える。前記発振信号又は外部クロック信号のデューティが５０％でなくても、それを分周することによって、基準クロック信号のデューティを５０％とすることができる。しかしながら、シングルチップマイクロコンピュータのテストでは、前記外部クロック信号などの分周を行なわず、特に制限はされないものの、外部クロック信号をそのまま使用するのが得策である。分周を行えば、基準クロック信号の最初の位相が１レベル又は０レベルの何れを採るかが不確定となるため、シングルチップマイクロコンピュータの動作は、基準クロックの最初の位相が１レベルか０レベルかによって外部クロック信号の１周期分ずれる場合があり、シングルチップマイクロコンピュータの出力値と期待値の単純な比較ができず、テストが困難になることが本発明者によって明らかにされた。このとき、分周する手段の回路状態を初期化する手段をさらに付加して、分周回路からの出力クロック信号の位相を入力クロック信号の位相に対して画定させようとしても、あるシングルチップマイクロコンピュータの基準クロックの位相を確定することはできるものの、製造上のプロセスばらつき若しくはパラメータの変動などによるシングルチップマイクロコンピュータの物理的特性の変動、例えば前記初期化を行う信号と外部クロックの分周手段までの遅延時間の変動などによって、基準クロックの最初の位相はやはり１レベルか０レベルかの２通りの場合が発生する虞があった。
【０００４】
以上の点を考慮すると、シングルチップマイクロコンピュータの動作モードとしては、実使用状態で選択されるシングルチップモード及び拡張モード、そしてテスト用拡張モードが必要であることが見い出された。即ち、斯るテスト用拡張モードでは外部クロック信号を分周しないで基準クロック信号を生成し、テスト用プログラムを外部から与えてテスト可能にする。例えば、２個のモード端子ＭＤ０、ＭＤ１があるとすると、いずれもハイレベルの時シングルチップモード、ＭＤ０がハイレベルかつＭＤ１がロウレベルのとき、またはＭＤ０がロウレベルかつＭＤ１がハイレベルのとき拡張モード、いずれもロウレベルのときテスト用拡張モードとする。なお、特に制限はされないものの、２つの拡張モードは内蔵のＲＯＭを使用しるかしないかによって相異なり、ＭＤ０がハイレベルかつＭＤ１がロウレベルのとき内蔵のＲＯＭを使用しないものとし、ＭＤ０がロウレベルかつＭＤ１がハイレベルのとき内蔵のＲＯＭを使用するものとする。
【０００５】
【発明が解決しようとする課題】
しかしながら、テスト用拡張モードを使用するときのモード端子ＭＤ０，ＭＤ１は何れもロウレベルとされるため、これらの端子にハイレベルを入力してテストすることができない。従って、動作モードを指定する回路が故障し、テスト用拡張モードしか実現できなくなっていても、この故障を検出することができない。そうだからといって、テストを行うときに斯る動作モードを決定する端子の入力レベルを動作中に変更してしまうと、シングルチップマイクロコンピュータが正常に動作しなくなる。例えばテスト用拡張モードからシングルチップモードに変更すると、基準ロック信号のための分周動作が途中から開始されて内部の動作速度が不所望なタイミングで変化されたり、外部クロック信号の位相と基準クロック信号の位相との対応が採れなくなったりして、テストを行うことができなくなる。
【０００６】
そこで本発明者は、テスト時にソフトウェアで動作モードを変更できる手段を設け、例えば拡張モードを設定してテスト用プログラムをＲＡＭに書き込み、ＲＡＭ上のプログラムに分岐した後、前記変更する手段によってシングルチップモードとしてのテストを可能にし、さらにこの場合のソフトウェア的な動作モードの変更に際しては分周動作を依然行わないようにすることが望ましい点を見い出した。
【０００７】
本発明の目的は、複数の動作モードを設定可能な半導体集積回路のテストに対して動作モードの設定に関してテストの自由度を向上させることができる半導体集積回路を提供することにある。本発明の別の目的は、シングルチップマイクロコンピュータなどの動作モードを指定する回路のテストを容易に行うことができる技術を提供することにある。本発明の更に別の目的は、外部端子を介して一旦設定した動作モードがノイズなどによって不所望に変化される虞のない半導体集積回路を提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【０００９】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、モード端子などの外部端子の状態で動作モードを指定する回路に、ソフトウェアで第１記憶手段に情報を書き込むことによって動作モードを設定可能とする手段を付加し、ソフトウェアによる第１記憶手段への書き込みを行った後は、モード端子の状態に依存せずに動作モードが決定されるように、シングルチップマイクロコンピュータなどの半導体集積回路を構成するものである。
【００１１】
また、前記ソフトウェアによる動作モード変更を行わない場合にも、一旦外部端子の状態に応じて決定された動作モードがそれ以降の外部端子の不所望な状態によって影響されないようにするには、外部端子の状態を所定のタイミングでラッチする第２記憶手段を設けるとよい。
【００１２】
第１及び第２記憶手段や第２記憶手段への信号経路に対するテストという観点に立つと、前記第１記憶手段及び第２記憶手段の出力を内部バスに読出し可能にし、更に第２記憶手段に異なる値をラッチさせてこれを夫々読出す動作指示との整合を考慮して、読出し動作の指示に同期して前記第２記憶手段に前記ラッチ動作を指示し、前記第１記憶手段に対する書き込み動作に同期して前記第２記憶手段に外部端子からの情報取り込み動作を指示するような論理を採用することができる。
【００１３】
外部信号から動作基準クロック信号を生成するとき、実使用動作において外部信号を分周し、テスト動作においては分周しない半導体集積回路の場合、テスト動作において動作モードを変更したとき、分周動作を依然禁止させるには、動作モードを指定するための前記外部端子の状態によって分周を否定する内部信号を形成するとき、前記第１記憶手段の出力情報の如何に拘らず当該信号レベルを維持させる論理ゲートを、前記ソフトウェアで第１記憶手段に情報を書き込むことによって動作モードを設定可能とする手段に含めておく。
【００１４】
【作用】
上記した手段によれば、ソフトウェアによって前記第１記憶手段の書き込みを行うことで、それ以降モード端子の状態に依存することなく動作モードが変更可能になり、このことは、テストプログラムよって実行されるテストの自由度を増す。
【００１５】
ソフトウェアによる動作モードの変更が行われたとき、動作基準クロック信号生成に際して分周動作は依然阻止された状態を維持することは、テスト動作における動作モードの変更時に外部クロックとテスト出力との間に不所望な位相差を生ずることを防止し、例えば、シングルチップモード類似の動作モードでシングルチップマイクロコンピュータをテスト可能にする。
【００１６】
第２記憶手段は動作モード設定用外部端子の状態を所定のタイミングでラッチすると、それ以降モード端子の状態を内部に伝達せず、電気的雑音などによって、モード端子の入力レベルが不安定になっても、動作モードが不所望に変化してしまうことを防止する。
【００１７】
ソフトウェアにより動作モードを変更して、それ以降動作モードがモード端子のような外部端子の状態に依存しないようにした後、外部端子を介して第２記憶手段に相互に論理値の異なる情報をラッチさせる度にこれを読出して期待値と比較することにより、シングルチップマイクロコンピュータなどの動作モードを指定する回路のテストを容易に実現する。
【００１８】
【実施例】
図２には本発明の一実施例に係るシングルチップコンピュータが示される。
【００１９】
このシングルチップコンピュータ１００は、特に制限はされないものの、ＣＰＵ（中央処理装置）１、前記ＣＰＵ１の動作プログラムなどを保有するＲＯＭ２、前記ＣＰＵ１の作業領域やデータの一時記憶領域とされるＲＡＭ３、タイマ４、シリアルコミュニケーションインタフェース（ＳＣＩ）５、Ａ／Ｄ変換器６、動作モード設定回路９、第１乃至第７入出力ポート７１〜７７、及びクロックパルスジェネレータ１０などから構成されている。これらの機能ブロックは内部バス８によって相互に接続されてなり、公知の半導体集積回路製造技術によりシリコン基板のような１つの半導体基板上に形成される。内部バス８は、特に制限はされないものの１６ビットのアドレスバス、８ビットのデータバス、そしてリード信号、ライト信号、および、基準クロック信号線などを含む。尚、ＲＥＳはリセット端子、ＭＤ０、ＭＤ１はモード端子，ＸＴＡＬ，ＥＸＴＡＬは水晶発振子が接続されまたは外部クロックが供給されるクロック入力端子、Ｖｄｄ，Ｖｓｓは電源端子である。
【００２０】
動作モード設定回路９はこれに指定される動作モードに基づき、所定レベルのモード制御信号としてＲＯＭＥ，ＳＮＧ，ＣＫＤＩＶを出力し、各ブロックを制御する。例えば、クロックパルスジェネレータ１０で外部クロック信号から基準クロック信号を生成する時、分周を行なうか行なわないか、あるいは所定のポートをアドレス出力端子として使用するか入出力ポートと指定するかなどを設定する。
【００２１】
図１には前記動作モード設定回路９の一例が示されている。
【００２２】
この動作モード設定回路９は、モード制御レジスタ９０、モード選択回路９１を含む。かかるモード制御レジスタ９０は、モード端子ＭＤ０，ＭＤ１の状態を反映したモードビットＭＤＳ０、ＭＤＳ１、データバスＤＢから書き込み可能にされるテストモード選択ビットＴＳＴ０、ＴＳＴ１を含む。モード選択回路９１は、これらのビットの内容によって動作モードを選択し、前記モード制御信号としてＳＮＧ信号、ＲＯＭＥ信号、ＣＫＤＩＶ信号を出力する。ＳＮＧ信号は１レベル（以下ハイレベルとも記す）のときシングルチップモードを指示し、０レベル（以下ロウレベルとも記す）のとき拡張モードを指示する。ＲＯＭＥ信号は１レベルのとき内蔵のＲＯＭ２の使用を指示し、０レベルのとき内蔵のＲＯＭ２を使用しないことを指示する。また、ＣＫＤＩＶ信号は１レベルのときクロックパルスジェネレータ１０による分周を行なうことを指示し、０レベルのときはクロックパルスジェネレータ１０による分周を行なわないことを指示する。シングルチップモードが指示されると、シングルチップマイクロコンピュータは外部メモリをアクセスせずに内蔵メモリげで動作し、入出力ポートにはアドレス出力端子としての機能は割り当てられない。拡張モードが指示されると、シングルチップマイクロコンピュータは、外部メモリを利用可能にされ、これに応じて入出力ポートの何れかは、アドレス出力機能並びにデータ入出力機能が割り当てられる。内蔵ＲＯＭ２の使用が指示されると、ＣＰＵが実行すべき命令は内蔵ＲＯＭ２からフェッチされる。内蔵ＲＯＭ２の不使用が指示されると、ＣＰＵ１が実行すべき命令は内蔵ＲＯＭ２以外の内蔵メモリ又は外部メモリからフェッチ可能にされる。外部クロック信号の分周が指示されると、クロックパルスジェネレータ１０に内蔵された図示しない分周回路を経て基準クロック信号が生成される。外部クロック信号の非分周が指示されると、外部クロック信号は前記図示しない分周回路を通らずに迂回してそのまま基準クロック信号として所定の内部回路に供給される。
【００２３】
モード制御レジスタのモードビットＭＤＳ０，ＭＤＳ１は、フリップフロップＦＦ０，ＦＦ１からなり、それぞれモード端子ＭＤ０、ＭＤ１の状態が入力バッファＩＢ０，ＩＢ１を介して端子Ｄに入力され、端子Ｑから得られるデータはクロックドインバータＣＩ０、ＣＩ１を介してデータバスＤＢに出力可能とされている。一方、テストモード選択ビットＴＳＴ０、ＴＳＴ１は、フリップフロップＦＦ２、ＦＦ３からなり、夫々の入力端子ＤはデータバスＤＢに接続され、出力端子ＱはクロックドインバータＣＩ２、ＣＩ３を介してデータバスに接続されている。斯るフリップフロップＦＦ２、ＦＦ３のクロック端子Ｃにはライト信号φ９０２が供給される。このライト信号φ９０２は、アンドゲート９０２から出力され、前記信号ＣＫＤＩＶ信号が０レベルのとき、すなわちテスト用拡張モードが一旦設定された場合にだけ１レベルにされて、フリップフロップＦＦ２、ＦＦ３のデータ書き込みを許容する。また、フリップフロップＦＦ２、ＦＦ３はリセット信号ｒｅｓ（リセット端子ＲＥＳに供給される信号に同期する内部信号）によって０にクリアされる。尚、クロックドインバータＣＩ０〜ＣＩ３のクロックはモード制御レジスタ９０のリード信号φ９０１とされる。
【００２４】
デコーダＤＥＣはアドレスバスＡＢから供給されるアドレス信号を解読する。そのアドレス信号がモード制御レジスタ９０に割り当てられているアドレスであれば、デコーダＤＥＣは１レベルの選択信号を出力する。このとき、リード信号ＲＤが１レベルにされると、アンドゲート９０１の出力が１レベルとされ、リード信号φ９０１を１レベルにして、モード制御レジスタ９０のリード動作を指示する。このリード動作において、フリップフロップＦＦ０〜ＦＦ４の内容がクロックドインバータＣＩ０〜ＣＩ３を介してデータバスＤＢに出力される。前記リード信号φ９０１はフリップフロップＦＦ４の端子Ｒにも供給され、そのリセット信号として機能する。また、モード制御レジスタ９０の前記選択アドレスと１レベルのライト信号ＷＴがデコーダＤＥＣに与えられると、アンドゲート９００の出力が１レベルとされ、モード制御レジスタ９０のライト動作が指示される。ライト動作においてはデータバスＤＢの内容がフリップフロップＦＦ２，ＦＦ３に入力される。同時にアンドゲート９００の出力信号φ９００はフリップフロップＦＦ４の端子Ｓにも与えられ、当該フリップフロップＦＦ４のセット信号としても機能する。
【００２５】
前記フリップフロップＦＦ０，ＦＦ１のクロック端子Ｃは、フリップフロップＦＦ４の出力端子Ｑに接続される。このフリップフロップＦＦ４は、リセット信号ｒｅｓによって１にセットされ、また、モード制御レジスタ９０のリード動作が１レベルの信号φ９０１によって指示されるのに呼応して０にクリアされる。また、特に制限はされないものの、モード制御レジスタ９０のライト動作が１レベルの信号φ９００によって指示されるのに呼応して１にセットされる。
【００２６】
前記モード選択回路９１は、ビットＴＳＴ０，ＴＳＴ１を受けるオアゲート９１７、オアゲート９１７の出力とビットＭＤＳ１を受けるアンドゲート９１１、前記オアゲート９１７の出力とビットＭＤＳ０を受けるアンドゲート９１０、アンドゲート９１１の出力とビットＴＳＴ１を受けるオアゲート９１３、アンドゲート９１０の出力とビットＴＳＴ０を受けるオアゲート９１２、前記オアゲート９１３の出力を受けて信号ＲＯＭＥを出力するバッファ９１６、オアゲート９１２，９１３の出力を受けて前記信号ＳＮＧを出力するアンドゲート９１５、オアゲート９１２，９１３の出力を受けるアンドゲート９１８、及びこのアンドゲート９１８の出力と前記オアゲート９１７の出力を受けて前記信号ＣＫＤＩＶを出力するノアゲート９１４によって構成される。
【００２７】
したがって、ビットＭＤＳ０，ＭＤＳ１に対応するフリップフロップＦＦ０，ＦＦ１は、シングルチップマイクロコンピュータが前記ＲＥＳ端子を介してリセット状態にされると、フリップフロップＦＦ４はリセット信号ｒｅｓによってその出力が１にセットされ、モード端子ＭＤ、ＭＤＳ１の値を入力可能な状態にされる。その後、１レベルの信号φ９０１によってモード制御レジスタのリード動作が一旦指示されると，フリップフロップＦＦ０，ＦＦ１は、それまでの入力状態を保持し、フリップフロップＦＦ４が次にセット状態にされるまでモード端子ＭＤＳ０、ＭＤ１の状態には依存しなくなる。また、シングルチップマイクロコンピュータ１００の前記リセット状態において、フリップフロップＦＦ２，ＦＦ３のビットＳＴ０，ＳＴ１は０レベルにされ、これにより、オアゲート９１２，９１３は前記ビットＭＤＳ０，ＭＤＳ１のレベルに応じた論理レベルを後段に出力し、信号ＲＯＭＥ，ＳＮＧ，ＣＫＤＩＶのレベルはビットＭＤＳ０，ＭＤＳ１の組み合わせに従って決定される。その後、１レベルの信号φ９０２によってモード制御レジスタ９０に書き込みが指示されて、ビットＴＳＴ０，ＴＳＴ１の何れかのビットが論理１に書き換えられると、換言すれば、ビットＴＳＴ０，ＴＳＴ１に対する書き込み値がテストモード以外とされると、オアゲート９１７の出力が１レベルに反転し、これにより、アンドゲート９１２，９１３は前記ビットＭＤＳ０，ＭＤＳ１のレベルに依存せず、ビットＴＳＴ０，ＴＳＴ１の論理値に従った論理レベルを後段に出力し、信号ＲＯＭＥ，ＳＮＧ，ＣＫＤＩＶのレベルはビットＴＳＴ０，ＴＳＴ１の組み合わせに応じて決定される。例えば、シングルチップマイクロコンピュータ１００のリセット直後にモード端子からビットＭＤＳ０，ＭＤＳ１に０，０のテストモードが設定された後、ビットＴＳＴ０，ＴＳＴ１が書き換えられることによってシングルチップマイクロコンピュータ１００の動作モードが変更される。このとき、信号ＣＫＤＩＶの出力段には、前記オアゲート９１７の出力を一方の入力に受けるノアゲート９１４が配置されているから、ビットＴＳＴ０，ＴＳＴ１の書換によって動作モードがテストモード以外に変更されても信号ＣＫＤＩＶのレベルは０レベルを維持し、依然としてクロック信号の分周動作は抑制される。
【００２８】
本実施例において、まず、前記ＲＥＳ端子に所定のレベルを入力してシングルチップマイクロコンピュータ１００をリセット状態にすると、ビットＴＳＴ０，ＴＳＴ１はいずれも０となり、ビットＭＤＳ０，ＭＤＳ１はモード端子ＭＤ０、ＭＤ１の状態を反映する。テスト時にはモード端子ＭＤ０、ＭＤ１をいずれもロウレベルとし、テスト用拡張モードとする。これにより、前記モード選択回路９２は信号ＳＮＧ，ＲＯＭＥ，ＣＫＤＩＶの全てを０レベルにする。一方、実使用状態において、モード端子ＭＤ０、ＭＤ１をいずれもハイレベルとすれば、シングルチップモードとされ、信号ＳＮＧは１レベル、信号ＲＯＭＥは１レベル、信号ＣＫＤＩＶは１レベルとなる。ＭＤ０がハイレベルかつＭＤ１がロウレベルのとき拡張モードとされ、信号ＳＮＧは０レベル、信号ＲＯＭＥは０レベル、信号ＣＫＤＩＶは１レベルとなる。また、ＭＤ０がロウレベルかつＭＤ１がハイレベルとすれば拡張モードとされ、信号ＳＮＧは０レベル、信号ＲＯＭＥ１レベル、信号ＣＫＤＩＶは１レベルとなる。
【００２９】
動作モード設定回路９のテスト以外では、シングルチップマイクロコンピュータ１００をリセット状態にしてモード端子ＭＤ１，ＭＤ２を介してテスト用拡張モードを設定した後、ＣＰＵ１に外部のテストプログラムのソフトウェアを実行させて、先ずモード制御レジスタ９０に対するリード動作を指定して、フリップフロップＦＦ０，ＦＦ１のクロック端子Ｃの入力を０レベルに反転させる。これにより、当該フリップフロップＦＦ１，ＦＦ２はそのときのモード端子ＭＤ０，ＭＤ１からの入力をラッチし、それ以降モード端子ＭＤ０，ＭＤ１の入力状態に影響されなくなる。従って、電気的雑音などによって、モード端子ＭＤ０，ＭＤ１の入力レベルが不安定になっても、誤動作を起こすことはない。この状態で所定のテストを行なえばよい。例えば、ビットＴＳＴ０、ＴＳＴ１の双方に１をライトすれば、信号ＳＮＧは１レベル、信号ＲＯＭＥは１レベルとなって、シングルチップモード同様の動作モードでテストを行うことができる。このとき、信号ＣＫＤＩＶは１レベルのままにされているので、外部クロックとテスト出力との間に不所望な位相差を生じない。尚、このようなテスト動作では、テストモードを設定してビットＴＳＴ０，ＴＳＴ１を書き換える前に、外部のテストプログラムを内蔵ＲＡＭ３に転送し、これを利用することにより、シングルチップモード同様の動作モードでテストを行うことができる。
【００３０】
モード制御レジスタ９０のリード動作を指定してモード端子ＭＤ０，ＭＤ１の状態を保持してしまうことは、実使用状態においても上記同様の効果がある。本実施例においては、その保持動作をソフトウェアによって選択的に行なう必要があり、例えば、リセット状態から動作状態に遷移する時点で固定的に保持を行なってしまうと、モード設定回路のテスト動作上不都合があるが、この点については、以下の記述から明かにされる。
【００３１】
図３には動作モード設定回路のテスト方法を示すフローチャートの一例が示されている。
【００３２】
動作モード設定回路９のテストでは、前記同様に、モード端子ＭＤ０、ＭＤ１をいずれもロウレベルとし、テスト用拡張モードとする。前記モード選択回路９１は信号ＳＮＧを０レベル、信号ＲＯＭＥを０レベル、信号ＣＫＤＩＶを０レベルにする。リセット状態が解除された後、ＣＰＵ１による外部プログラムの実行によって、内蔵のＲＡＭ３上に所定のテストプログラムを書き込む。この時点で、モード端子ＭＤ０，ＭＤ１に接続する入力回路ＩＢ０，ＩＢ１とフリップフロップＦＦ０，ＦＦ１の１固定のテスト（出力が１レベルに固定されるような故障があるか否かのテスト）を行なうことができる。これらのいずれかが論理的に１に固定されていれば、信号ＣＫＤＩＶが１レベルとなり、クロックが分周されて、シングルチップマイクロコンピュータの動作が遅くなるので、これを検出することによって当該テストを行うことができる。
【００３３】
その後、前記書き込みを行なった内蔵のＲＡＭ３上のプログラムに分岐して実行開始する。本プログラムでは、まずモード制御レジスタ９０のビットＴＳＴ０、ＴＳＴ１に何れも１レベルをライトする。この状態ではオアゲート９１７の出力が１レベルとなってアンドゲート９１０、９１１の出力は０レベルに固定されるので、モード選択回路９１の出力信号ＳＮＧ、ＲＯＭＥ、ＣＫＤＩＶはフリップフロップＦＦ０，ＦＦ１の状態、すなわち、モード端子ＭＤ０，ＭＤ１の状態に依存しなくなる。次いで、モード端子ＭＤ０，ＭＤ１の入力レベルをハイレベルにする。この状態でモード制御レジスタ９０にリード動作を指示し、その内容を、所望の入出力ポートから出力して、期待値Ｈ’ＦＦ（Ｈ’は１６進数を示す）と比較する。これによって今度は、モード端子ＭＤ０，ＭＤ１に接続する入力回路ＩＢ０，ＩＢ１とフリップフロップＦＦ０，ＦＦ１の０固定のテスト（出力が０レベルに固定されるような故障があるか否かのテスト）を行なうことができる。これらのいずれかが論理的に１に固定されていれば、ポートから出力されたデータが期待値とは異なっているためである（ビット０、１のいずれかが０になる）。
【００３４】
次にモード端子ＭＤ０，ＭＤ１の入力レベルをロウレベルにしてモード制御レジスタ９０にリード動作を指示し、この内容をポート５に出力して、期待値（Ｈ’ＦＦ）と比較すれば、フリップフロップＦＦ４の１固定のテストを行なうことができる。フリップフロップＦＦ４が１に固定されていれば、フリップフロップＦＦ０，ＦＦ１に新しいデータが入力され、ポートから出力されたデータが期待値とは異なるためである（ビット０、１が０になる）。モード制御レジスタのビットＴＳＴ０、ＴＳＴ１にいずれも１をライトすると、これに同期してフリップフロップＦＦ４が１にセットされる。さらに、モード端子ＭＤ０，ＭＤ１の入力レベルをロウレベルにしてモード制御レジスタ９０にリード動作を指示し、この内容を入出力ポートから出力して期待値（Ｈ’ＦＣ）と比較すれば、フリップフロップＦＦ４の０固定のテストを行なうことができる。フリップフロップＦＦ４が０に固定されていれば、フリップフロップＦＦ０，ＦＦ１に新しいデータが入力されず、前記ポートから出力されるデータが期待値とは異なるためである（ビット０、１が１になる）。
【００３５】
なお、クロックの分周のテストは基準クロックの出力レベルの変化点を捜索し、基準クロックのハイレベル、ロウレベル、立上り、立下がり時間を測定することによって行なえばよい。この場合、クロック以外の論理機能はテストする必要はない。
【００３６】
上記実施例によれば以下の作用効果を得るものである。
【００３７】
（１）モード端子ＭＤ０，ＭＤ１を介してテスト用拡張モードを設定した後、ソフトウェアによってビットＴＳＴ０，ＴＳＴ１の書き込みを行うことで、それ以降モード端子の状態に依存することなく動作モードを変更することができ、テストプログラムよって実行されるテストの自由度を増すことができる。
【００３８】
（２）テスト用拡張モードを経て上記ソフトウェアによる動作モードの変更が行われたとき、信号ＣＫＤＩＶは依然０レベルを維持して、クロックパルスジェネレータ１０による分周動作は阻止されるから、外部クロックとテスト出力との間に不所望な位相差を生ぜず、テスト用外部クロック信号の位相に完全同期させてシングルチップモード類似の動作モードでシングルチップマイクロコンピュータをテストすることができる。
【００３９】
（３）モード端子の状態をラッチ可能なフリップフロップＦＦ０，ＦＦ１を設けてあるから、モード端子ＭＤ１，ＭＤ２を介してテスト用拡張モードを設定した後、モード制御レジスタ９０に対するリード動作を指定して、フリップフロップＦＦ０，ＦＦ１のクロック端子Ｃの入力を０レベルに反転すると、当該フリップフロップＦＦ１，ＦＦ２はそのときのモード端子ＭＤ０，ＭＤ１からの入力をラッチし、それ以降モード端子ＭＤ０，ＭＤ１の入力状態に影響されなくなる。したがって、電気的雑音などによって、モード端子ＭＤ０，ＭＤ１の入力レベルが不安定になっても、動作モードが不所望に変化してしまうことを防止することができる。この作用効果はテスト動作並びに実動作の双方にあてはまる。
【００４０】
（４）ソフトウェアにより動作モードを変更して、それ以降動作モードがモード端子ＭＤ０，ＭＤ１の状態に依存しないようにした後、当該モード端子ＭＤ０，ＭＤ１を介してフリップフロップＦＦ０，ＦＦ１に相互に論理値の異なる情報をラッチさせる度にこれを読出すことにより、フリップフロップＦＦ０，ＦＦ１からモード端子ＭＤ０，ＭＤ１に至る信号経路並びに回路の故障による異常を簡単に検出することができる。
【００４１】
（５）以上のことから、シングルチップマイクロコンピュータ１００の動作モードを指定する回路のテストを容易に実現することができる。
【００４２】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００４３】
例えば、シングルチップマイクロコンピュータの具体的な構成や動作モードの種類、設定方法などについては何ら限定されない。モード制御レジスタのビットＭＤＳ０，ＭＤＳ１、ビットＴＳＴ０，ＴＳＴ１は同じアドレスに存在しなくてもよい。また、モード制御レジスタ９０やモード選択回路９１の具体的構成は上記実施例に限定されず、その他種々変更可能である。たとえば、フリップフロップ４はモード制御レジスタのライト時に０にクリアされなくてもよい。テストの手順についても種々の変形が可能である。
【００４４】
モード端子の内容を保持するクロックは、モード制御レジスタのリード動作による他、モード制御レジスタのライト動作によって行ってもよく、あるいはＣＰＵの所定のアドレスに対するリードまたはライト動作時によって行ってもよい。テスト用拡張モード時には所定のアドレスに対するリードまたはライト動作により、また、シングルチップモード，拡張モード時には任意のアドレスのリードまたはライト動作により、行ってもよい。
【００４５】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータに適用した場合について説明したが、それに限定されるものではなく、その他の半導体集積回路にも適用可能であり、本発明は少なくとも複数の動作モード有する半導体集積回路に適用することができる。
【００４６】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００４７】
すなわち、ソフトウェアによって第１記憶手段の書き込みを行うと、それ以降モード端子の状態に依存することなく動作モードが変更可能になるから、テストプログラムよって実行されるテストの自由度を増すことができる。
【００４８】
ソフトウェアにより動作モードを変更して、それ以降動作モードがモード端子のような外部端子の状態に依存しないようにした後、外部端子を介して第２記憶手段に相互に論理値の異なる情報をラッチさせる度にこれを読出して期待値と比較することにより、シングルチップマイクロコンピュータなどの動作モードを指定する回路のテストを容易に実現することができる。
【００４９】
ソフトウェアによる動作モードの変更が行われたとき、動作基準クロック信号生成に際しての分周動作を依然阻止する事ができるから、テスト動作における動作モードの変更時に外部クロックとテスト出力との間に不所望な位相差を生ずることを防止でき、例えば、シングルチップモード類似の動作モードでシングルチップマイクロコンピュータなどをテストする事ができる。
【００５０】
動作モード設定用外部端子の状態を所定のタイミングでラッチする第２記憶手段を設けることにより、電気的雑音などによって、モード端子の入力レベルが不安定になっても、動作モードが不所望に変化してしまうことを防止することができる。
【図面の簡単な説明】
【図１】図１は本発明の一実施例に係るシングルチップマイクロコンピュータにおける動作モード設定回路のブロック図である。
【図２】図２は本発明の一実施例に係るシングルチップマイクロコンピュータのブロック図である。
【図３】図３は動作モード設定回路のテスト動作の一例フローチャートである。
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  タイマ
５  ＳＣＩ
６  Ａ／Ｄ変換器
７１〜７７  入出力ポート
８  内部バス
９  動作モード設定回路
１０  クロックパルスジェネレータ
９０  モード制御レジスタ
９１  モード選択回路
ＦＦ０〜ＦＦ４  フリップフロップ回路
ＩＢ０，ＩＢ１  入力バッファ
ＣＩ０〜ＣＩ３  クロックバッファ
ＤＥＣ  デコーダ
【図１】
0003683284.tif 000002
【図２】
0003683284.tif 000003
【図３】
0003683284.tif 000004