(57)【要約】【課題】簡易な回路で、よりセキュリティ性を向上させる。【解決手段】半導体集積回路装置（１００）は、複数の機能ブロック（１２５−１２７）と、取り込み部（１３１）と、検出部（１３２）と、判定部（１５０）とを具備し、動作パターンが所定の規則に従って変化したときにテストモードに移行する。複数の機能ブロック（１２５−１２７）は、制御装置（２００）からの指示に応答して動作する。取り込み部（１３１）は、複数の機能ブロック（１２５−１２７）のそれぞれの動作状態を示す信号を取り込む。検出部（１３２）は、複数の機能ブロック（１２５−１２７）のうちの少なくとも１つの機能ブロックの動作状態の変化を検出する。判定部（１５０）は、取り込まれた動作状態を示す信号によって示される動作パターンが所定の規則に従って変化するか否かを判定する。【選択図】図２
2012083272.tif 000002
【特許請求の範囲】
【請求項１】
制御装置からの指示に応答して動作する複数の機能ブロックと、
前記複数の機能ブロックのそれぞれの動作状態を示す信号を取り込む取り込み部と、
前記複数の機能ブロックのうちの少なくとも１つの機能ブロックの動作状態の変化を検出する検出部と、
取り込まれた前記動作状態を示す信号によって示される動作パターンが所定の規則に従って変化するか否かを判定する判定部と
を具備し、
前記動作パターンが前記所定の規則に従って変化したときにテストモードに移行する
半導体集積回路装置。
【請求項２】
前記判定部は、前記複数の機能ブロックのいずれかの動作状態が変化したときに前記動作パターンの変化を判定する
請求項１に記載の半導体集積回路装置。
【請求項３】
前記判定部は、前記複数の機能ブロックのうちの所定の機能ブロックの動作状態が変化したときに前記動作パターンの変化を判定する
請求項１に記載の半導体集積回路装置。
【請求項４】
前記所定の規則に従う動作パターンを示す時系列的データを格納するテーブルをさらに具備し、
前記判定部は、前記テーブルを参照して前記動作パターンの変化を判定する
請求項１から請求項３のいずれかに記載の半導体集積回路装置。
【請求項５】
前記所定の規則は、前記複数の機能ブロックのそれぞれの起動される順番を示す
請求項１から請求項４のいずれかに記載の半導体集積回路装置。
【請求項６】
前記所定の規則に従う動作パターンは、前記複数の機能ブロックのそれぞれの所定の回路が動作しているか停止しているかを示す
請求項１から請求項４のいずれかに記載の半導体集積回路装置。
【請求項７】
前記制御装置は、前記複数の機能ブロックに起動の指示を発行する間に、前記複数の機能ブロックに属さない機能ブロックに対する起動の指示を発行する
請求項１から請求項６のいずれかに記載の半導体集積回路装置。
【請求項８】
前記制御装置は、
前記指示を出力する手順を示すプログラムを格納するメモリ部と、
前記プログラムを実行して前記指示を出力する制御部と
を含み、
前記メモリ部を外部に備え、
前記メモリ部から出力される前記プログラムを示す信号を外部接続端子から入力する
請求項１から請求項７のいずれかに記載の半導体集積回路装置。
【請求項９】
請求項１から請求項７のいずれかに記載の半導体集積回路装置と、
前記制御装置と
を備え、
前記制御装置は、
前記指示を出力する手順を示すプログラムを格納するメモリ部と、
前記プログラムを実行して前記指示を出力する制御部と
を含む
半導体集積回路装置のテストシステム。
【請求項１０】
制御装置からの指示に応答して動作する複数の機能ブロックを有する半導体集積回路のテストモード設定方法であって、
前記複数の機能ブロックの動作状態を示す信号を取り込むステップと、
前記複数の機能ブロックのうちの少なくとも１つの機能ブロックの動作状態の変化を検出するステップと、
取り込まれた前記動作状態を示す信号によって示される動作パターンが所定の規則に従って変化するか否かを判定するステップと、
前記動作パターンが前記所定の規則に従って変化したときテストモードに移行するステップと
を具備する
半導体集積回路のテストモード設定方法。
【請求項１１】
前記判定するステップは、前記複数の機能ブロックのいずれかの動作状態が変化したときに前記動作パターンの変化を判定するステップを備える
請求項１０に記載の半導体集積回路のテストモード設定方法。
【請求項１２】
前記判定するステップは、前記複数の機能ブロックのうちの所定の機能ブロックの動作状態が変化したときに前記動作パターンの変化を判定するステップを備える
請求項１０に記載の半導体集積回路のテストモード設定方法。
【請求項１３】
前記所定の規則に従う動作パターンを示す時系列的データを予め記憶するステップをさらに具備し、
前記判定するステップは、前記記憶するステップによってテーブルに記憶された時系列的データを参照して前記動作パターンの変化を判定する
請求項１０から請求項１２のいずれかに記載の半導体集積回路のテストモード設定方法。
【請求項１４】
前記所定の規則は、前記複数の機能ブロックのそれぞれの起動される順番を示す
請求項１０から請求項１３のいずれかに記載の半導体集積回路のテストモード設定方法。
【請求項１５】
前記所定の規則に従う動作パターンは、前記複数の機能ブロックのそれぞれの所定の回路が動作しているか停止しているかを示す
請求項１０から請求項１３のいずれかに記載の半導体集積回路のテストモード設定方法。
【請求項１６】
前記制御装置から前記複数の機能ブロックに起動の指示を発行する間に発行される前記複数の機能ブロックに属さない機能ブロックに対する起動の指示を無視するステップをさらに具備する
請求項１０から請求項１５のいずれかに記載の半導体集積回路のテストモード設定方法。
【請求項１７】
前記制御装置は、
前記指示を出力する手順を示すプログラムを格納するメモリ部と、
前記プログラムを実行して前記指示を出力する制御部と
を含み、
前記メモリ部を外部に備え、
前記半導体集積回路のテストモードを設定するとき、前記メモリ部を前記制御部に接続して前記メモリ部から出力される前記プログラムを示す信号を外部接続端子から入力するステップを具備する
請求項１０から請求項１６のいずれかに記載の半導体集積回路のテストモード設定方法。
【請求項１８】
前記制御装置は、前記半導体集積回路の外部に設置され、
前記指示を出力する手順を示すプログラムを格納するメモリ部と、
前記プログラムを実行して前記指示を出力する制御部と
を含み、
前記半導体集積回路のテストモードを設定するとき、前記制御装置を前記半導体集積回路に接続するステップを具備する
請求項１０から請求項１６のいずれかに記載の半導体集積回路のテストモード設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置に関し、特に半導体集積回路装置のテストモード設定方法に関する。
【背景技術】
【０００２】
通常、半導体集積回路は、故障診断を目的としたスキャン・テストや、テストデバッグを目的としたＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）テストなど動作モードとしてテストモードを備える。テストモードの設定に関して、例えば、特開平６−２７２０４号公報に開示されるように、複数機能を持つ集積回路のテストモード設定を１本の外部端子を使用するだけで行う方法が知られる。この方法では、テストモードを設定する際、集積回路の複数の機能ブロックに設けられた、各機能ブロックの本来の機能を設定するための複数の内部レジスタの内の所定の内部レジスタを所定の状態に設定し、テストモード設定端子からテストモード設定信号を入力する。論理回路は、複数の内部レジスタの出力と、テストモード設定端子から与えられるテストモード設定信号との論理演算を行い、その出力により、所定の機能ブロックをテストモードに設定する。
【０００３】
このようなテストでは、半導体集積回路の内部状態を外部に出力して期待値と比較することにより良否判定が行われ、半導体集積回路の故障診断やデバッグが容易になる。すなわち、このようなテストモードで動作させると、半導体集積回路内部に格納されている様々な情報を読み出すことが可能になる。
【０００４】
一方、デジタルＴＶ等のデジタル映像コンテンツを扱う分野では、著作権保護のために、コンテンツが暗号化されている。コンテンツを暗号化したり、暗号化されたコンテンツを復号化したりするために必要な暗号鍵は極めて機密性の高い情報である。半導体集積回路の内部メモリ等には、このようなセキュリティに関する極めて機密性の高い情報が格納されることもある。その場合、悪意を持ってテストモードを使用すれば機密性の高い情報を読み出すことも不可能ではない。第三者によって機密性の高い情報である暗号鍵が読み出されると、著作権保護のために暗号化されたコンテンツが解読される恐れがある。そのため、第三者が容易にテストモードを使用できないようにする必要がある。
【０００５】
容易にテストモードを使用できないようにする方法として、特開２００８−１５２４２１号公報に開示されるように、パスワードによる認証を行う技術がある。この文献によれば、マイクロコンピュータは、テスト回路に加えて、テスト用制御端子に接続された第２入出力制御回路、シフトレジスタ、第１レジスタ、第２レジスタ、ゲート回路等を有する。シフトレジスタは、データ入出力端子に接続され、第２入出力制御回路によってデータ入出力端子からのパスワードの入出力動作が制御される。第１レジスタには、シフトレジスタからパスワードが転送される。第２レジスタには、外部から読み書き不能であり固有値とされるマスターキーコードが格納されている。ゲート回路は、両者を比較し、一致すれば、テスト結果を出力するスキャンパスシフトレジスタとデータ入出力端子間の経路を接続する。不一致であれば、ゲート回路はその経路を遮断する。
【０００６】
このように、ＣＰＵが所定のプログラムを実行する事により、パスワードを所定のレジスタに設定し、そのパスワードが内部にあるマスターキーコードと一致するか比較して、テストデータの出力を許可するテストモードへ移行する。これにより、正しいパスワードを設定しなければ、テストデータ出力信号からテスト結果を読み出す事が出来ず、セキュリティ性を高める事が出来る。
【０００７】
しかし、パスワードによってセキュリティ性を高めようとすると、長いパスワードが必要になり、パスワードの期待値を保持するレジスタやメモリ等が大きくなる。また、パスワードを入力する外部インタフェースを専用に持つことになるが、総当たり式にパスワードを解読される可能性もある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平６−２７２０４号公報
【特許文献２】特開２００８−１５２４２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、簡易な回路で、よりセキュリティ性を向上させる半導体集積回路を提供する。
【課題を解決するための手段】
【００１０】
以下に、［発明を実施するための形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明の観点では、半導体集積回路装置（１００）は、複数の機能ブロック（１２５−１２７）と、取り込み部（１３１）と、検出部（１３２）と、判定部（１５０）とを具備し、動作パターンが所定の規則に従って変化したときにテストモードに移行する。複数の機能ブロック（１２５−１２７）は、制御装置（２００）からの指示に応答して動作する。取り込み部（１３１）は、複数の機能ブロック（１２５−１２７）のそれぞれの動作状態を示す信号を取り込む。検出部（１３２）は、複数の機能ブロック（１２５−１２７）のうちの少なくとも１つの機能ブロックの動作状態の変化を検出する。判定部（１５０）は、取り込まれた動作状態を示す信号によって示される動作パターンが所定の規則に従って変化するか否かを判定する。
【００１２】
本発明の他の観点では、半導体集積回路のテストモード設定方法は、制御装置からの指示に応答して動作する複数の機能ブロックを有する半導体集積回路のテストモード設定方法であって、複数の機能ブロックの動作状態を示す信号を取り込むステップと、複数の機能ブロックのうちの少なくとも１つの機能ブロックの動作状態の変化を検出するステップと、取り込まれた動作状態を示す信号によって示される動作パターンが所定の規則に従って変化するか否かを判定するステップと、動作パターンが所定の規則に従って変化したときテストモードに移行するステップとを具備する。
【発明の効果】
【００１３】
本発明によれば、複数の機能ブロックを有する半導体集積回路において、簡易な回路で、よりセキュリティ性を向上させる半導体集積回路を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】半導体集積回路の機能ブロック構成例を示す図である。
【図２】本発明の実施の形態に係る半導体集積回路のテストモード設定システムの構成を示す図である。
【図３】本発明の実施の形態に係る半導体集積回路のテストモード設定動作を説明するフローチャートである。
【図４】各機能ブロックの動作状態を時系列的に説明する図である。
【図５】各機能ブロックの他の動作状態を時系列的に説明する図である。
【図６】所定の機能ブロックの動作状態を利用したテストモード設定動作を説明する図である。
【図７Ａ】起動される機能ブロックと中央処理装置との実装関係を説明する図である。
【図７Ｂ】起動される機能ブロックと中央処理装置との実装関係を説明する図である。
【発明を実施するための形態】
【００１５】
図面を参照して本発明の実施の形態を説明する。
【００１６】
半導体集積回路として、例えば、映像音声処理用の半導体集積回路１００について説明する。一般に、ＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）に代表される半導体集積回路には、図１に示されるように多数の機能ブロックが搭載されている。ここでは、半導体集積回路１００には、復号ブロック１２２、ＤＭＡＣブロック１２３、周辺制御ブロック１２４、解析ブロック１２５、デコードブロック１２６、映像出力ブロック１２７、音声出力ブロック１２８等々が搭載される。これらの機能ブロックの動作は中央処理装置２００により制御される。中央処理装置２００は、メモリ３００に格納されるプログラムを読み出して実行する。各機能ブロックは、中央処理装置２００によって設定されるＩ／Ｏレジスタを通常複数備える。このＩ／Ｏレジスタに仕様に合致する値を仕様に合致する順序およびタイミングで設定することによって、機能ブロックの所定の回路が動作状態になる。
【００１７】
図２に、本発明の実施の形態に係る半導体集積回路のテストモード設定システムの構成が示される。テストモード設定システムは、テスト対象の半導体集積回路１００と、モード設定する中央処理装置２００と、モード設定するプログラムを保持するメモリである外部ＲＯＭ３００を有する。半導体集積回路１００は、各機能ブロックの集合であるロジック回路１２０と、テスト用の入出力制御回路（ＴＡＰＣ）１１０と、テストモード設定回路１３０と、テストモードに切り替えるスイッチとして機能するＡＮＤ回路１６０とを具備する。
【００１８】
入出力制御回路１１０には、テスト用の制御信号ＴＣＫ、ＴＲＳＴ、ＴＭＳが入力され、入出力制御回路１１０はテスト時に入力されたコマンドを実行する。
【００１９】
ロジック回路１２０は、中央処理装置２００に接続され、中央処理装置２００の指示に基づいて動作する。ロジック回路１２０は、図１に示されるように、種々の機能ブロックを備えるが、ここでは、解析ブロック１２５、デコードブロック１２６、映像出力ブロック１２７、音声出力ブロック１２８が図示される。また、ロジック回路１２０は、各機能ブロック内のフリップフロップがテストモード時にシフトレジスタとして動作するスキャンパスシフトレジスタ（ＳＲＥＧ）１２１を含む。図２では、スキャンパスシフトレジスタ１２１は、説明を容易にするために別の機能ブロックのように図示されるが、通常動作時は他の機能ブロックに含まれる。スキャンパスシフトレジスタ１２１には、入出力制御回路１１０の出力と、テスト用データ入力信号ＴＤＩとが入力され、ＡＮＤ回路１６０を介してテスト結果を示すテスト用出力信号ＴＤＯを出力する。
【００２０】
テストモード設定回路１３０は、動作状態を示す情報を保持するラッチ回路１３１と、動作状態の変化点を検出する変化検出回路１３２と、検出された変化点を計数する変化点カウンタ１３３と、動作状態の変化順序の期待値を保持する動作順序テーブル１４０と、各機能ブロックの動作状態と動作順序テーブル１４０の期待値とを比較判定する比較判定回路１５０とを備える。
【００２１】
ラッチ回路１３１は、解析ブロック１２５、デコードブロック１２６、映像出力ブロック１２７から出力される各機能ブロックの動作状態を示す動作状態信号を入力して保持する。ラッチ回路１３１が保持する動作状態を示す情報（ここでは３ビット幅のデータ）は、変化検出回路１３２と比較判定回路１５０とに供給される。
【００２２】
変化検出回路１３２は、ラッチ回路１３１から入力される動作状態を示す情報に基づいて、動作状態の変化点を検出する。検出された動作状態の変化点は、例えば、動作クロック１周期幅のパルス信号で示され、変化点カウンタ１３３および比較判定回路１５０に供給される。
【００２３】
変化点カウンタ１３３は、変化検出回路１３２から出力される動作状態の変化点を示す信号に基づいて、何回目の動作状態の変化であるかを計数し、計数結果を動作順序テーブル１４０および比較判定回路１５０に供給する。変化点カウンタ１３３は、観測対象の機能ブロック数をカウント出来るだけのビット数を有し、ここでは２ビットのカウンタとなる。
【００２４】
動作順序テーブル１４０は、動作状態を観測する対象となる機能ブロックの動作状態の変化の期待値を格納するテーブルである。期待値は、変化点カウンタ１３３のカウント値に関連付けて格納され、カウント値に応じて比較判定回路１５０に供給される。ここでは、３機能ブロックの動作開始順序を観測するため、テーブル値（期待値）１４１、１４２、１４３の３パターンを保持する。テーブル値１４１、１４２、１４３のそれぞれは、解析ブロック１２５、デコードブロック１２６、映像出力ブロック１２７の動作状態の期待値を並べてパターンとして保持する。すなわち、テーブル値１４１は、１回目の変化点を検出したときの各機能ブロックの動作状態の期待値のパターンを示す。テーブル値１４２は、２回目の変化点を検出したときの各機能ブロックの動作状態の期待値のパターンを示す。テーブル値１４３は、３回目の変化点を検出したときの各機能ブロックの動作状態の期待値のパターンを示す。
【００２５】
期待値は、それぞれの機能ブロックに対して１ビットずつ割り当てられ、“１”は動作中を示し、“０”は停止中を示す。例えば、解析ブロック１２５が動作中であり、デコードブロック１２６、映像出力ブロック１２７が停止中であるときを“１００”として表す。また、解析ブロック１２５、デコードブロック１２６が停止中であり、映像出力ブロック１２７が動作中であるときを“００１”として表す。したがって、第１のテーブル値が“０１０”であり、第２のテーブル値が“０１１”であるとき、この変化点は映像出力ブロック１２７が起動されて動作を開始したことを期待していることを示す。
【００２６】
比較判定回路１５０は、各機能ブロックの動作状態の変化点が検出されたときに、各機能ブロックの動作状態と期待値とを比較して期待通りに起動されるか否かを判定する。期待通りに起動されると、比較判定回路１５０は、半導体集積回路１００がテストモードに移行して動作することを許可する。すなわち、比較判定回路１５０は、ＡＮＤ回路１６０に許可を示す信号を出力し、ＡＮＤ回路１６０は、試験結果を示すデータ信号ＴＤＯとしてスキャンパスシフトレジスタ１２１から出力されるデータを出力する。期待通りではない場合、ＡＮＤ回路１６０は、スキャンパスシフトレジスタ１２１の出力をブロックするため、半導体集積回路１００内の状態を示すデータは出力されない。
【００２７】
比較判定回路１５０は、動作順序テーブル１４０から出力される期待値と、ラッチ回路１３１から出力される各機能ブロックの動作状態を示すデータとを比較した結果を第１判定結果１５１、第２判定結果１５２、第３判定結果１５３として保持する。比較判定回路１５０は、３つの判定結果が期待値通りを示すと、テストモードに移行して動作することを許可する信号を出力する。
【００２８】
本発明の実施の形態に係る半導体集積回路のテストモード設定システムの動作を説明する。被テスト回路である半導体集積回路は、内部に搭載されている所定の機能ブロックが所定の順序で起動されたときにテストモードに移行する。所定の順序とは、通常動作時には指定されない順序であり、半導体集積回路が正常に機能しないような順序で各機能ブロックが起動されて動作を開始したときにテストモードに移行する。動作状態を観測される機能ブロックは、半導体集積回路内にある多くの機能ブロックのいくつかが対象となり、どの機能ブロックが観測対象であるかは第三者に公開されない。したがって、観測対象の機能ブロックを特定することは困難であり、第三者がテストモードを使用することはほぼ不可能である。また、テストモードに移行するための手続きの間に、観測対象外の機能ブロックを起動する手続きを混合すると、観測対象の機能ブロックを推定することもさらに困難になる。
【００２９】
例えば、図１に示されるように、デジタルＴＶデコーダとして機能する半導体集積回路１００の場合、機能ブロックとして、解析ブロック１２５、デコードブロック１２６、映像出力ブロック１２７を取り上げて説明すると以下のようになる。通常の動作では、解析ブロック１２５が起動され、ストリームデータが取り込まれると、そのデータはデコードブロック１２６によってデコードされる。デコードされたデータは、映像出力ブロック１２７によって映像出力される。すなわち、解析ブロック１２５、デコードブロック１２６、映像出力ブロック１２７の順に起動される。ストリームデータが入力されていないときにＭＰＥＧデコードを行うことはあり得ないため、解析ブロック１２５が起動される前に、デコードブロック１２６が起動されることは通常あり得ない。
【００３０】
ここでは、通常動作では、Ａ（解析ブロック１２５）→Ｂ（デコードブロック１２６）→Ｃ（映像出力ブロック１２７）の順序で起動され、動作を開始する機能ブロックが、Ｃ→Ａ→Ｂというようにユースケース上あり得ない順序で起動され、テストモードに移行するものとして説明する。したがって、テーブル値１４１は“００１”、テーブル値１４２は“１０１”、テーブル値１４３は“１１１”に設定されている。すなわち、まず、映像出力ブロック１２７が動作を開始し、次に解析ブロック１２５が起動され、最後にデコードブロック１２６が動作を開始することを期待するように、動作順序テーブル１４０が設定されている。
【００３１】
外部ＲＯＭ３００に格納されるプログラムは、各機能ブロックが所定の処理を行うために必要な情報を各機能ブロック内のＩ／Ｏレジスタに設定し、各機能ブロックを起動するように組まれている。例えば、解析ブロック１２５を起動するためには、解析モードを設定し、受信バッファの総数および先頭アドレスを設定した後、解析の開始を指示する。Ｃ言語で記載されたプログラム例を以下に示す。
【００３２】
//機能ブロックＡ（ストリーム解析）
io_write(IN_MODE,        
0xff006007);  //解析モード(受信経路，レート等)
io_write(IN_BUF_MAX,      0x00000005);  //受信バッファ総数
io_write(IN_BUF_START_ADR,0x00004000);  //受信バッファの先頭アドレス
io_write(IN_START,        0x00000001); 
//解析開始
このようにして各Ｉ／Ｏレジスタに所定の値が設定されると、解析ブロック１２５は解析動作を開始する。
【００３３】
また、デコードブロックを起動するためには、デコードモードを設定し、デコードするデータが格納されているアドレスとデコードされたデータを格納するアドレスとを設定してからデコード開始を指示する。Ｃ言語で記載されたプログラム例を以下に示す。
【００３４】
//機能ブロックＢ（ＭＰＥＧデコード）
io_write(MPEG_MODE,       0x01390e01);  //デコードモード(MPGEG1/2/4等)
io_write(MPEG_SRC_ADR,    0x10006000);  //デコード開始アドレス
io_write(MPEG_DST_ADR,    0x00082000);  //デコード済みデータ出力先アドレス
io_write(MPEG_START,      0x00000008);  //デコード開始
このようにして各Ｉ／Ｏレジスタに所定の値が設定されると、デコードブロック１２６はデコード動作を開始する。
【００３５】
上記のように、デコードブロック１２６が、ＭＰＥＧ２、ＭＰＥＧ４、ＪＰＥＧなどの複数の圧縮方式に対応しているとすると、デコードモードが異なれば異なる圧縮方式の動作が起動される。この圧縮方式毎に示される動作状態に基づいて、この機能ブロックの動作状態を判定することも可能である。各圧縮方式毎に動作中を示すフラグを備え、そのうちの１つをテストモード設定の比較判定用に使用するとよい。所定のデコードモードに設定しなければ期待する動作状態にならないため、与えるパラメータが重要である。すなわち、観測対象の機能ブロック内のどの動作状態を観測対象とするかを特定することは、第三者には推定が困難であり、第三者がテストモードを容易に使用することができない。
【００３６】
映像出力ブロックを起動するためには、画面選択、アスペクト比等の映像モードを設定し、デコードされた映像データが格納されているエリアのアドレスを指定してから映像出力開始を指示する。Ｃ言語で記載されたプログラム例を以下に示す。
【００３７】
//機能ブロックＣ（映像出力）
io_write(DISP_MODE,       0x000500ad);  //映像モード（画面選択，アスペクト比等）
io_write(DISP_SRC_ADR,    0x00008000);  //映像データアドレス
io_write(DISP_START,      0x00010000);  //映像出力開始
このようにして各Ｉ／Ｏレジスタに所定の値が設定されると、映像出力ブロック１２７は映像出力を開始する。
【００３８】
ここで、“io_write(address, data)”は、“address”で指定したアドレスに、“data”で指定した値を書き込む関数を示す。それぞれの機能ブロックにおいて設定すべき情報は異なっており、誤った情報が設定されるとその機能ブロックは起動されない。このようなプログラムを中央処理装置２００が所定の順序で実行することにより、各機能ブロックが起動されて半導体集積回路１００は所定の機能を果たす。
【００３９】
このように、機能ブロックをある動作状態に移行させるためには、複数のレジスタ設定が必要になる。さらに、昨今のＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  ａ  Ｃｈｉｐ）では、その半導体装置を動作させるためのソフトウエアを半導体ベンダがセットメーカに提供することも多くなっており、その場合、レジスタ仕様や設定手順が外部に公開されることはない。したがって、観測対象の機能ブロックを動作させる正しいレジスタ設定順、及び設定タイミングを特定することは第三者には困難であり、第三者がテストモードを容易に使用することはできなくなる。
【００４０】
図３を参照して、半導体集積回路１００のテストモードを設定するときの動作を説明する。
【００４１】
中央処理装置２００は、外部ＲＯＭ３００に格納されているプログラムを読み出して実行する（ステップＳ１０）。外部ＲＯＭ３００には、上記に示されるように、各機能ブロックを起動するプログラムが格納されている。半導体集積回路１００をテストモード状態にするために、中央処理装置２００は、上記のＡ→Ｂ→Ｃの順ではなく、Ｃ→Ａ→Ｂの順に機能ブロックを起動する。
【００４２】
半導体集積回路１００では、指定されたＩ／Ｏレジスタにデータが書き込まれ、条件が整った機能ブロックが動作を開始する。動作を開始したこと（動作中であること）は、例えば、その機能ブロックのステートマシンがある状態になったことやＩ／Ｏレジスタに所定の値がセットされたことなどにより示される。監視される機能ブロックの動作状態は、ラッチ回路１３１に通知される。中央処理装置２００からの指示が映像出力ブロック１２７の起動であれば、ラッチ回路１３１の出力は、“００１”に変化する。変化検出回路１３２は、ラッチ回路１３１の出力を監視し（ステップＳ２０）、ラッチ回路１３１の出力が変化したことを検出すると（ステップＳ２０−ＹＥＳ）、変化点カウンタ１３３および比較判定回路１５０に通知する。
【００４３】
変化点カウンタ１３３は、１回目の変化点検出であることを動作順序テーブル１４０および比較判定回路１５０に示している。動作順序テーブル１４０は、１回目の変化点を検出したときの各機能ブロックの動作状態の期待値１４１（格納値＝“００１”）を比較判定回路１５０に供給している。比較判定回路１５０は、ラッチ回路１３１の出力と、動作順序テーブル１４０から供給される期待値１４１とを比較し、判定結果を第１判定結果１５１に保持する（ステップＳ３０）。回路動作としては、ここで変化点カウンタ１３３が歩進され、次の変化点検出が２回目であることを示す。ラッチ回路１３１の出力が“００１”であれば、すなわち映像出力ブロック１２７のみ動作中であることを示していれば（ステップＳ３０−ＹＥＳ）、動作状態が変化するまで監視を続行する（ステップＳ４０）。ラッチ回路１３１の出力が“００１”でなければ（ステップＳ３０−ＮＯ）、比較判定回路１５０はテストモード設定信号をオフのまま出力して終了する（ステップＳ９０）。
【００４４】
中央処理装置２００は、プログラム実行を継続して、次の機能ブロックの起動を指示する。中央処理装置２００からの指示が解析ブロック１２５の起動であれば、ラッチ回路１３１の出力は、“１０１”に変化する。ラッチ回路１３１の出力を監視している変化検出回路１３２は、ラッチ回路１３１の出力に変化を検出すると（ステップＳ４０−ＹＥＳ）、変化点カウンタ１３３および比較判定回路１５０に通知する。
【００４５】
変化検出回路１３２が２回目の変化点を検出したとき、変化点カウンタ１３３は、２回目の変化点検出であることを動作順序テーブル１４０および比較判定回路１５０に示している。動作順序テーブル１４０は、２回目の変化点を検出したときの各機能ブロックの動作状態の期待値１４２（格納値＝“１０１”）を比較判定回路１５０に供給している。比較判定回路１５０は、ラッチ回路１３１の出力と期待値１４２とを比較し、判定結果を第２判定結果１５２に保持する（ステップＳ５０）。回路動作としては、ここで変化点カウンタ１３３が歩進され、次の変化点検出が３回目であることを示す。ラッチ回路１３１の出力が“１０１”であれば、すなわち解析ブロック１２５と映像出力ブロック１２７とが動作中であることを示していれば（ステップＳ５０−ＹＥＳ）、次に動作状態が変化するまで監視を続行する（ステップＳ６０）。ラッチ回路１３１の出力が“１０１”でなければ（ステップＳ５０−ＮＯ）、比較判定回路１５０はテストモード設定信号をオフのまま出力して終了する（ステップＳ９０）。
【００４６】
中央処理装置２００は、プログラム実行を継続して、次の機能ブロックの起動を指示する。中央処理装置２００からの指示がデコードブロック１２６の起動であれば、ラッチ回路１３１の出力は、“１１１”に変化する。ラッチ回路１３１の出力を監視している変化検出回路１３２は、ラッチ回路１３１の出力に変化を検出すると（ステップＳ６０−ＹＥＳ）、変化点カウンタ１３３および比較判定回路１５０に通知する。
【００４７】
変化検出回路１３２が３回目の変化点を検出したとき、変化点カウンタ１３３は、３回目の変化点検出であることを動作順序テーブル１４０および比較判定回路１５０に示している。動作順序テーブル１４０は、３回目の変化点を検出したときの各機能ブロックの動作状態の期待値１４３（格納値＝“１１１”）を比較判定回路１５０に供給する。比較判定回路１５０は、ラッチ回路１３１の出力と期待値１４３とを比較し、判定結果を第３判定結果１５３に保持する（ステップＳ７０）。ラッチ回路１３１の出力が“１１１”であれば、すなわち解析ブロック１２５とデコードブロック１２６と映像出力ブロック１２７とが動作中であることを示していれば（ステップＳ７０−ＹＥＳ）、比較判定回路１５０はテストモード設定信号をオンにて出力する（ステップＳ８０）。すなわち、半導体集積回路１００はテストモードに移行することができる。ラッチ回路１３１の出力が“１１１”でなければ（ステップＳ７０−ＮＯ）、比較判定回路１５０はテストモード設定信号をオフのまま出力して終了する（ステップＳ９０）。すなわち、半導体集積回路１００はテストモードに移行しない。
【００４８】
このように、第１、第２、第３判定結果１５１、１５２、１５３が、全て一致を示していれば、テストモード設定回路１３０から出力されるテストモード設定信号は“１（オン）”になる（ステップＳ８０）。したがって、ＡＮＤ回路１６０を介して、スキャンパスシフトレジスタ１２１とテストデータ出力信号ＴＤＯ間の経路が接続され、半導体集積回路１００のテストが可能となる。
【００４９】
一方、第１、第２、第３判定結果１５１、１５２、１５３のうちのいずれか一つでも不一致を示していれば、機能ブロックがＣ→Ａ→Ｂの順序で動作中にならなかったことを示しており、テストモード設定回路１３０から出力されるテストモード設定信号は“０（オフ）”のままとなる。このときＡＮＤ回路１６０の出力は０に固定され、半導体集積回路１００のテストは不可能となる。ここでは、ＡＮＤ回路１６０によりテスト結果を出力できないように設定して、テストを不可能にしたが、入出力制御回路１１０をリセットするように、制御信号ＴＲＳＴを利用することも可能である。その場合、テスト動作そのものが機能しないようにできる。
【００５０】
このように、通常の機能を実行する命令を、正常に動作しないような順序で並べたプログラムコード自体を、パスワードのように機密保護の為に必要な符号として用いることが可能になる。また、ユースケース上取り得ない順序とすることにより、通常動作に影響を与えることはない。
【００５１】
一般に、機能ブロックを動作状態にするには複数の命令を要することから、機能ブロックを動作させるための命令実行が、パスワードによる認証行為に相当する。また、セキュリティ性を高めるように、より多くの命令数（パスワードに相当）を必要とする機能ブロックを観測対象とした場合でも、機能ブロックの動作順序だけを比較するため、テストモード設定回路１３０の回路規模は変化しない。さらに、各機能ブロックの動作状態を示す信号は、機能ブロックの既存の出力を利用することができる。動作状態を示す信号が出力されない場合には、ブロック内部の既存の動作状態を示す信号、例えばステートマシン等の動作状態を示す信号を出力すれば良く、容易に実現することができる。
【００５２】
図４は、中央処理装置２００の指示、各ブロックの動作状態、ラッチ回路１３１の出力状態を時系列的に示した図である。図４（ｂ）〜（ｄ）に示されるように、解析ブロック１２５、デコードブロック１２６、映像出力ブロック１２７は、初期状態では“停止中”であり、ラッチ回路１３１から出力される動作状態パターンは“０００”となっている。中央処理装置２００によって映像出力ブロック１２７が起動されると（図４（ａ）Ｃ起動）、映像出力ブロック１２７の動作状態が“動作中”に変わり（図４（ｄ））、動作状態パターンは“００１”になる（図４（ｅ））。次に、中央処理装置２００によって解析ブロック１２５が起動されると（図４（ａ）Ａ起動）、解析ブロック１２５の動作状態が“動作中”に変わり（図４（ｂ））、動作状態パターンは“１０１”になる（図４（ｅ））。さらに、中央処理装置２００によってデコードブロック１２６が起動されると（図４（ａ）Ｂ起動）、デコードブロック１２６の動作状態が“動作中”に変わり（図４（ｃ））、動作状態パターンは“１１１”になる（図４（ｅ））。
【００５３】
本発明の半導体集積回路１００は、この動作状態パターンの変化が“０００”→“００１”→“１０１”→“１１１”になることを確認してテストモードに移行する。この順序で各機能ブロックが起動されないと、動作状態パターンは、上記のような変化とならないため、半導体集積回路１００は、テストモードに移行できない。例えば、解析ブロック１２５が解析動作を終了すると動作状態が自動的に“停止中”に戻るとする。その場合、図５に示されるように、デコードブロック１２６の起動が遅ければ（図５（ａ）Ｂ起動）、デコードブロック１２６の起動の前に解析ブロック１２５の解析動作が終了して“停止中”になり、動作状態パターンは“００１”に戻る。したがって、デコードブロック１２６の起動時には動作状態パターンは“０１１”となって上記の動作状態パターンの変化とは異なり、半導体集積回路１００は、テストモードに移行できない。したがって、動作状態を監視する機能ブロックの一つにこのような機能ブロックを加えると、中央処理装置２００からの起動指示に時間的制約が加わり、セキュリティ性をさらに向上することができる。
【００５４】
さらに、短期間で動作状態が変わる機能ブロックは、他の機能ブロックの動作状態をサンプリングするトリガを与える機能ブロックとして利用可能である。例えば、ＤＭＡＣブロック１２３は、少量のデータをＤＭＡ転送すると停止するものとする。変化検出回路１３２は、ＤＭＡＣブロック１２３の動作状態を監視し、“動作中”になると、変化点カウンタ１３３、比較判定回路１５０に通知する。他の動作は上記と同様である。図６を参照して、動作を説明する。
【００５５】
図６（ｂ）〜（ｄ）に示されるように、解析ブロック１２５、デコードブロック１２６、映像出力ブロック１２７は、初期状態では“停止中”であり、ラッチ回路１３１から出力される動作状態パターンは“０００”となっている。中央処理装置２００からの指示（図６（ａ）Ｃ起動）に応答して、映像出力ブロック１２７が起動されて“動作中”になり（図６（ｄ））、動作状態パターンは“００１”になる（図６（ｅ））。中央処理装置２００からの指示（図６（ａ）Ｄ起動）に応答して、ＤＭＡＣブロック１２３が“動作中”になると、変化検出回路１３２は変化点カウンタ１３３、比較判定回路１５０に変化点を検出したことを通知する。比較判定回路１５０は、このときの動作状態パターン“００１”を１回目の期待値と比較して比較結果を第１判定結果１５１に保持する。
【００５６】
次に、中央処理装置２００からの指示（図６（ａ）Ａ起動）に応答して、解析ブロック１２５が起動されて“動作中”になり（図６（ｂ））、動作状態パターンは“１０１”になる（図６（ｅ））。中央処理装置２００からの指示（図６（ａ）Ｄ起動）に応答して、ＤＭＡＣブロック１２３が“動作中”になると、変化検出回路１３２は変化点カウンタ１３３、比較判定回路１５０に変化点を検出したことを通知する。比較判定回路１５０は、このときの動作状態パターン“１０１”を２回目の期待値と比較して比較結果を第２判定結果１５２に保持する。
【００５７】
さらに、中央処理装置２００からの指示（図６（ａ）Ｂ起動）に応答して、デコードブロック１２６が起動されて“動作中”になり（図６（ｃ））、動作状態パターンは“０１１”になる（図６（ｅ））。中央処理装置２００からの指示（図６（ａ）Ｄ起動）に応答して、ＤＭＡＣブロック１２３が“動作中”になると、変化検出回路１３２は変化点カウンタ１３３、比較判定回路１５０に変化点を検出したことを通知する。比較判定回路１５０は、このときの動作状態パターン“０１１”を３回目の期待値と比較して比較結果を第３判定結果１５３に保持する。
【００５８】
ここでは、解析ブロック１２５の動作は短期間で終了して“停止中”に戻り、デコードブロック１２６が起動されたときの動作状態パターンの期待値が“０１１”であるものとすると、動作状態パターンが“００１”→“１０１”→“０１１”に変化したことを検出して半導体集積回路１００はテストモードに移行する。図４に示されるように、解析ブロック１２５の動作が継続する場合には、動作状態パターンが“００１”→“１０１”→“１１１”に変化したことを検出して半導体集積回路１００はテストモードに移行する。監視される機能ブロックの動作状況に応じた期待値を動作順序テーブル１４０に設定しておけばよい。
【００５９】
また、ＤＭＡＣブロック１２３の“動作中”から“停止中”に変わる変化点を検出して動作状態パターンを比較してもよい。図６の場合、ＤＭＡＣブロック１２３が“動作中”から“停止中”に変わる変化点における動作状態パターンは、図６（ｉ）に示されるように、“００１”→“００１”→“０１１”と変化する。このように、“動作中”から“停止中”に変化する変化点における動作状態パターンを監視してもよいし、“停止中”から“動作中”、“動作中”から“停止中”の両方の変化点における動作状態パターンを監視してもよい。すなわち、変化点が監視される機能ブロックと、動作状態が監視される機能ブロックとを分離しても同様にテストモードに移行することができる。
【００６０】
また、各機能ブロックの動作状態をパターンとして比較する他に、監視される各機能ブロックの動作開始の順序だけを比較してもよい。他の機能ブロックの動作状態に関わらずに所定の機能ブロックの動作開始だけを観測すると、処理時間の長短に関わらずに起動順序のみの条件により判定可能になる。さらに、動作開始だけを判定するのであれば、動作状態パターンを動作順序テーブル１４０に保持しておく必要はなく、動作を開始した機能ブロックを順番に確認する状態遷移方式の回路によっても判定することができる。
【００６１】
このように、テストモードに移行するために中央処理装置２００から発行される指示を複雑にすることができ、それに伴ってセキュリティ性を高めることができる。中央処理装置２００が実行する命令は、外部のメモリ３００に格納される。外部メモリ３００の選択は自由度が大きく格納されるプログラムに対する制約は少ない。また、半導体集積回路１００内部に保持しなければならない起動順序を示す期待値は、動作状態パターンだけ保持すればよいので動作順序テーブル１４０の容量は少量で済み、半導体集積回路１００への影響は少ない。また、テストモード設定回路１３０は、監視される機能ブロックの動作順序を比較するだけで簡素な構成であり、回路規模はプログラム規模にそれほど影響を受けない。
【００６２】
本発明のテストモード設定回路１３０は、十数個のフリップフロップとゲート回路だけで構成することも可能となり、回路規模を小さくすることができる。更に、セキュリティ向上のために機能ブロックを動作させるためのプログラムの命令数（パスワード方式におけるパスワード長に相当）を多く必要とする機能ブロックを観測対象とする場合でも、テストモード設定回路１３０の回路規模は変わらない。
【００６３】
例えば、中央処理装置２００からの命令により“動作中”になる機能ブロックＡ、Ｂ、Ｃがあるとする。機能ブロックＡを動作状態にするのに４命令、機能ブロックＢを動作状態にするのに３命令、機能ブロックＣを動作状態にするのに６命令を必要とする場合、命令数×命令コード長＝（４＋３＋６）命令×（３２）ビット＝３８４ビット分の命令を実行することによってテストモードに移行することできる。これは、パスワードに相当するものと考えることができる。
【００６４】
３つの機能ブロックＡ、Ｂ、Ｃが“動作中”になる順序を観測対象とする場合、テストモード設定回路１３０の回路規模は、以下のように推定できる。動作状態を保持するラッチ回路１３１は、３個のフリップフロップで構成可能と推定する。動作状態の変化を検出する変化検出回路１３２は、３個のフリップフロップで構成可能と推定する。変化点カウンタ１３３は、２ビットのカウンタで構成可能と推定する。動作順序を管理する動作順序テーブル１４０は、９ビット分のクランプ論理と３ビット幅の３入力１出力のセレクタとで構成可能と推定する。比較判定回路１５０は、３ビット幅の比較回路と３個のフリップフロップと数個のゲート回路で構成可能と推定する。したがって、フリップフロップの合計は、３＋３＋２＋３＝１１個となる。
【００６５】
一方、１２８ビット長のパスワードを保持して比較する方法の場合、入力されるパスワードを保持する１２８個のフリップフロップと、パスワードの期待値を内部に保持する１２８ビット分のクランプ論理と、入力パスワードと期待値とを比較する１２８ビット幅のゲート回路（ＥＸＯＲ）とが必要になる。回路規模に大きな影響を及ぼすフリップフロップの個数を比較すると、後者のパスワード方式では１２８個のフリップフロップが必要になるのに対し、前者の本発明によるテストモード設定回路は１１個のフリップフロップで構成可能である。このフリップフロップの個数は、本発明のテストモード設定回路では、命令数を多く必要とする機能ブロックを観測対象とした場合でも変わりない。
【００６６】
上述では、図７Ａに示されるように、半導体集積回路装置１００は、監視される機能ブロックを含む機能ブロック群とテストモード設定回路とを含み、外部の中央処理装置２００からテストモード移行を指示される。中央処理装置２００は、プログラムを格納するメモリ３００からプログラムコードを読み出して実行する。これにより、半導体集積回路装置１００は、通常の動作を行ったり、テストモードに移行してテスト動作を行ったりする。中央処理装置２００と半導体集積回路装置１００とのインタフェースは、通常の動作であっても、テストモード移行を指示するときも同じであり、特別なインタフェースを備える必要はない。
【００６７】
図７Ｂに示されるように、監視される機能ブロックを含む機能ブロック群とテストモード設定回路とを含む半導体集積回路装置１００と、中央処理装置２００とは、同じ半導体チップ１０１内にあってもよい。この場合も、メモリ３００と中央処理装置２００との間のインタフェースは、通常の動作であっても、テストモード移行を指示するときも同じであり、特別なインタフェースを備える必要はない。
【００６８】
このように、本発明のテストモード設定回路は、既存の機能ブロックの動作状態を監視するだけであるため、テストモード設定回路以外に回路の追加が不要となる。機能ブロックを動作させる順番を判断してテストモードへの移行を許可するため、パスワードに相当する命令数をより多く必要とする機能ブロックを観測対象とした場合でも、回路規模が増大することはない。すなわち、本発明によれば、回路規模が増大することなく、簡易な回路によって、よりセキュリティ性を高めることができる。また、通常使用されるインタフェース回路を利用して命令を授受するため、専用のインタフェースを備える必要がなく、外部接続端子の制約もない。外部接続の専用端子を必要としないため、外部接続端子から総当たり的にパスワードを入力してテストモードに移行することは困難である。
【００６９】
以上、実施の形態を参照して本発明を説明したが、上記実施の形態は、矛盾のない限り組み合わせて実施可能である。また、本発明は上記実施の形態に限定されるものではなく、本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００７０】
１００  半導体集積回路
１０１  半導体チップ
１１０  入出力制御回路（ＴＡＰＣ）
１２０  ロジック回路
１２１  スキャンパスシフトレジスタ（ＳＲＥＧ）
１２２  復号ブロック
１２３  ＤＭＡＣブロック
１２４  周辺制御ブロック
１２５  解析ブロック
１２６  デコードブロック
１２７  映像出力ブロック
１２８  音声出力ブロック
１３０  テストモード設定回路
１３１  ラッチ回路
１３２  変化検出回路
１３３  変化点カウンタ
１４０  動作順序テーブル
１４１、１４２、１４３  テーブル値（期待値）
１５０  比較判定回路
１５１、１５２、１５３  第１、第２、第３判定結果
１６０  ＡＮＤ回路
２００  中央処理装置（ＣＰＵ）
３００  外部ＲＯＭ／メモリ
【図１】
2012083272.tif 000003
【図２】
2012083272.tif 000004
【図３】
2012083272.tif 000005
【図４】
2012083272.tif 000006
【図５】
2012083272.tif 000007
【図６】
2012083272.tif 000008
【図７Ａ】
2012083272.tif 000009
【図７Ｂ】
2012083272.tif 000010