(57)【特許請求の範囲】
【請求項１】
複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路と、
擬似乱数値を生成する擬似乱数生成回路と、を有し、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値と前記擬似乱数値とを論理演算して出力する論理演算回路を有する半導体装置。
【請求項２】
請求項１において、
前記論理演算回路は、論理否定回路である半導体装置。
【請求項３】
請求項１において、
前記接続経路は、前記論理演算回路を分散して複数有する半導体装置。
【請求項４】
請求項１において、
前記論理演算回路は、前記フリップフロップの非反転出力値と所定値とを入力とし、ＡＮＤ演算回路、ＯＲ演算回路、ＸＯＲ演算回路、ＮＡＮＤ演算回路、ＮＯＲ演算回路、ＸＮＯＲ演算回路のいずれかである半導体装置。
【請求項５】
第１のクロックに同期して動作する複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続して前記第１のクロックに同期してシフト動作するスキャンチェーンを構成する接続経路と、
擬似乱数値を生成する擬似乱数生成回路と、
前記擬似乱数値と前記第１のクロックとを論理演算し第２のクロックを出力するクロック生成回路とを有し、
前記複数のフリップフロップのうちいずれかの前記フリップフロップは、テストモード時には前記第２のクロックに同期して動作し、ユーザモード時には前記第１のクロックに同期して動作する半導体装置。
【請求項６】
請求項５において、さらに、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関する。
【背景技術】
【０００２】
従来から、半導体装置（ＬＳＩ：Large Scale Integration）のテスト手法としてスキャンテストが知られている。図１は、スキャンテスト機能を有するＬＳＩの構成の一例を表す図である。同図のＬＳＩは、データ処理や演算処理を実行する複数の回路素子からなる組み合わせ回路ｃ１〜ｃ８と、組み合わせ回路ｃ１〜ｃ８に接続されたスキャンフリップフロップｓｆ１〜ｓｆｆとを有する。スキャンフリップフロップ（以下、ＦＦ）ｓｆ１〜ｓｆｆは、マルチプレクサ機能を有する。
【０００３】
また、図１のＬＳＩは、通常時のユーザモードと、スキャンテスト時のスキャンモードとを有する。ユーザモードの場合、組み合わせ回路ｃ１〜ｃ８は、スキャンフリップフロップｓｆ１〜ｓｆｆと共に、入力端子ＵＩからの入力データに対して処理を行い、処理結果を出力端子ＵＯに出力する。
【０００４】
一方、スキャンモードの場合、スキャンイン端子ＳＩからスキャンアウト端子ＳＯの間がシリアルに接続され、スキャンチェーンが構成される。ユーザーは、スキャンイン端子ＳＩからデータパターンを入力し、組み合わせ回路ｃ１〜ｃ８への任意の入力値としてスキャンＦＦｓｆ１〜ｓｆｆにセットすることができる。また、ユーザーは、スキャンＦＦｓｆ１〜ｓｆｆに保持された組み合わせ回路ｃ１〜ｃ８の処理結果を示す値を、スキャンチェーンをシフトさせることによって、スキャンアウト端子ＳＯから出力させることができる。ユーザーは、出力されたデータパターンを検証することによって、組み合わせ回路ｃ１〜ｃ８の処理が適切に行われたか否かを判定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２８４１号公報
【特許文献２】特開２００９−５０５０５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところが、図１のようなＬＳＩは、スキャンチェーンを構成することによりスキャンテストを可能にする反面、スキャンＦＦｓｆ１〜ｓｆｆに保持される値の出力及び外部からの入力を可能にする。例えば、組み合わせ回路ｃ１〜ｃ８が課金情報やパスワード等の内部情報を扱うような場合、スキャンＦＦｓｆ１〜ｓｆｆに内部情報が保持されることがある。そして、スキャンＦＦｓｆ１〜ｓｆｆに保持された値が第３者に不正に入出力されることによって、内部情報の漏洩や改竄を招くことがある。しかしながら、ＬＳＩがスキャンチェーンを有していない場合、ユーザーは、組み合わせ回路ｃ１〜ｃ８の検証を適切に行うことが困難である。
【０００７】
スキャンテストが可能なＬＳＩについて、データの漏洩及び改竄を防止するために、様々な技術が開示されている（特許文献１、２）。
【０００８】
本発明は、スキャンテストを可能にしながら内部データの漏洩及び改竄を防止する半導体装置を提供する。
【課題を解決するための手段】
【０００９】
第１の側面は、複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する。
【発明の効果】
【００１０】
第１の側面によれば、スキャンテストを可能にしながら内部データの漏洩及び改竄を防止する。
【図面の簡単な説明】
【００１１】
【図１】スキャンテスト機能を有するＬＳＩの構成の一例を表す図である。
【図２】スキャンＦＦを具体的に説明する図である。
【図３】図２のスキャンチェーンの波形図を表す図である。
【図４】論理反転演算回路を有するスキャンチェーンの一例と、波形図を表す図である。
【図５】論理反転値が出力されるＦＦを有するスキャンチェーンの一例と波形図を表す図である。
【図６】論理反転回路及び論理反転値が出力されるＦＦを複数有するスキャンチェーンの一例を表す図である。
【図７】論理演算回路を有するスキャンチェーンの一例と波形図を表す図である。
【図８】擬似乱数生成回路の一例を表す図である。
【図９】異なるクロック信号に基づくＦＦを有するスキャンチェーンの一例である。
【図１０】図９のスキャンチェーンの波形図を表す図である。
【図１１】さらに論理反転回路を有する図９のスキャンチェーンの一例を表す図である。
【図１２】図１１のスキャンチェーンの波形図を表す図である。
【図１３】製品出荷後、ＦＦへの入出力値をリセットするスキャンチェーンの一例を表す図である。
【図１４】図１３のスキャンチェーンの波形図を表す図である。
【図１５】図１３のスキャンチェーンの別の形態例を表す図である。
【図１６】図１５のスキャンチェーンの波形図を表す図である。
【発明を実施するための形態】
【００１２】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１３】
図２は、図１のスキャンＦＦｓｆ１〜ｓｆｆを具体的に説明する図である。同図では、４つのスキャンＦＦｓｆ１〜ｓｆ４が例示されており、各スキャンＦＦｓｆ１〜ｓｆ４は、マルチプレクサｍ１〜ｍ４とフリップフロップ（以下、ＦＦ）ｆ１〜ｆ４とをそれぞれ有する。図示されていないが、ＦＦｆ１〜ｆ４及び組み合わせ回路ｃ１〜ｃ３には、クロック信号が供給される。ＦＦｆ１〜ｆ４は、クロック信号の立ち上がり時に、保持していた値をＱ端子から出力すると共に、マルチプレクサｍ１〜ｍ４から出力された値をＤ端子から取得する。
【００１４】
また、図２において、スキャンイネーブル信号ＳＥは、マルチプレクサｍ１〜ｍ４への選択信号であり、後続のＦＦｆ１〜ｆ４への出力を切り替える。具体的に、マルチプレクサｍ１〜ｍ４は、スキャンイネーブル信号がＨｉｇｈ（以下、Ｈ）レベルのときはスキャンイン信号ＳＩを、Ｌｏｗ（以下、Ｌ）レベルのときは組み合わせ回路ｃ１〜ｃ３からの出力を選択し、後続のＦＦｆ１〜ｆ４に出力する。
【００１５】
続いて、ユーザモードとスキャンモード時の動作の相違について説明する。図２において、ユーザモードの場合、スキャンイネーブル信号ＳＥはＬレベルに設定される。このため、マルチプレクサｍ１は入力端子ＵＩからの入力値を、マルチプレクサｍ２〜ｍ４は前段の組み合わせ回路ｃ１〜ｃ３からの出力値を選択して、後続のＦＦｆ１〜ｆ４に出力する。これにより、ＦＦｆ１〜ｆ４に、入力端子ＵＩからの入力値及び組み合わせ回路ｃ１〜ｃ３からの出力値が供給されると共に、各ＦＦｆ１〜ｆ４に保持されていた値が、後続の組み合わせ回路ｃ１〜ｃ３及び出力端子ＵＯに出力される。
【００１６】
一方、図２においてスキャンモードの場合、スキャンイネーブル信号ＳＥはＨレベルに設定される。これにより、マルチプレクサｍ１はスキャンイン端子ＳＩからの入力値を、マルチプレクサｍ２〜ｍ４は前段のＦＦｆ１〜ｆ３からの出力値を選択して、後続のＦＦｆ１〜ｆ４に出力する。つまり、スキャンモードに設定された場合、各ＦＦｆ１〜ｆ４がシリアルに接続されスキャンチェーンを構成し、シフトレジスタ動作が行われる。これにより、スキャンイン端子ＳＩから入力されたテスト用のデータパターンがＦＦｆ１〜ｆ４に入力されると共に、ＦＦｆ１〜ｆ４に保持された値がスキャンアウト端子ＳＯに出力される。以下、波形図に基づいて、具体的に説明する。
【００１７】
図３は、図２のスキャンＦＦｓｆ１〜ｓｆ４の波形図１Ａ、１Ｂを表す図である。同図の波形図１Ａはスキャンイン端子ＳＩからテスト用のデータパターンが入力される場合の波形図であり、波形図１ＢはＦＦｆ１〜ｆ４が保持する値がスキャンアウト端子ＳＯに出力される場合の波形図である。スキャンイン端子ＳＩからのデータパターンの入力と、ＦＦｆ１〜ｆ４が保持する値のスキャンアウト端子ＳＯへの出力は同時に行われるが、別々の波形図に基づいて説明する。なお、この例において、スキャンチェーンは４つのスキャンＦＦｓｆ１〜ｓｆ４を有し、入力するデータパターンは１０１０であるものとする。
【００１８】
まず、図３の波形図１Ａについて説明する。同図の波形図１Ａは、スキャンイン端子ＳＩからテスト用のデータパターン１０１０を入力する例を表す。この例において、初め、スキャンイネーブル信号ＳＥはＬレベルに設定され、各ＦＦｆ１〜ｆ４には、例えば、前回のクロックの立ち上がり時における組み合わせ回路ｃ１〜ｃ３の出力値が保持されている（１１ｘ）。この状態で、スキャンイネーブル信号ＳＥがＨレベルに変更されると、クロックの立ち上がり毎に、シフトレジスタ動作が行われる。
【００１９】
具体的に、スキャンイネーブル信号がＨレベルに変更後１クロック目ｔ０、ＦＦｆ１にデータパターンの初めの値「１」が入力されると共に、ＦＦｆ２〜ｆ４に保持された値が後続のＦＦｆ３〜ｆ４、スキャンアウト端子ＳＯに出力される。同様にして、スキャンイネーブル信号ＳＥがＨレベルに設定されたまま、次のクロックの立ち上がり時、データパターン１０１０の２番目の値「０」がＦＦｆ１に入力されると共に、初めの値「１」はＦＦｆ２にシフトされる。この例では、スキャンイネーブル信号ＳＥをＨレベルに変更後、４回目のクロックの立ち上がり時ｔ４に、データパターン１０１０のＦＦｆ１〜ｆ４への入力が完了する（１１ｙ）。
【００２０】
このように、スキャンイン端子ＳＩからデータパターンを入力する場合、スキャンイネーブル信号ＳＥがＨレベルに設定されると、クロックの立ち上がり毎に、データパターンがシフトレジスタ動作によってスキャンＦＦｓｆ１〜ｓｆ４に順次入力される。例えば、入力が完了した状態（１１ｙ）で、スキャンイネーブル信号がＬレベルに変更されると、次のクロックの立ち上がり時に、ＦＦｆ１〜ｆ４に保持された値が組み合わせ回路ｃ１〜ｃ３に入力され、データパターンに基づく組み合わせ回路の処理が行われる。
【００２１】
次に、図３の波形図１Ｂについて説明する。同図の波形図１Ｂは、ＦＦｆ１〜ｆ４に保持された組み合わせ回路の処理結果を示す値が、スキャンアウト端子ＳＯに出力される場合を表す。初め、スキャンイネーブル信号ＳＥはＬレベルに設定され、各ＦＦｆ１〜ｆ４には、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている（１２ｘ）。この状態で、スキャンイネーブル信号ＳＥがＨレベルに変更されると、次のクロックの立ち上がり時ｔ３に、各ＦＦｆ１〜ｆ３に保持された値が後続のＦＦｆ２〜ｆ４に出力され、ＦＦｆ４に保持されていた値はスキャンアウト端子ＳＯに出力される。この例では、スキャンイネーブル信号ＳＥをＨレベルに変更してから４回目のクロックの立ち上がり時に、ＦＦｆ１〜ｆ４に保持された値が全てスキャンアウト端子ＳＯに出力される。
【００２２】
このように、ＦＦｆ１〜ｆ４に保持された値をスキャンアウト端子ＳＯに出力する場合、スキャンイネーブル信号ＳＥがＨレベルに設定され、クロックの立ち上がり毎に、各ＦＦの値がシフトレジスタ動作によってスキャンアウト端子ＳＯに順次出力される。ユーザーは、ＦＦｆ１〜ｆ４に保持された組み合わせ回路の処理結果を示す値をスキャンアウト端子ＳＯに出力させて、任意のデータパターンに基づいて組み合わせ回路の処理が適切に行われたか否かを検証する。
【００２３】
以上のように、スキャンチェーンを有するＬＳＩは、スキャンイン端子ＳＩから任意のデータパターンをスキャンＦＦに入力可能にすると共に、スキャンＦＦに保持された値をスキャンアウト端子ＳＯに出力可能にする。しかしながら、その反面、スキャンＦＦにパスワードや課金情報等の内部情報が保持されている場合、内部情報の漏洩及び改竄を招く。
【００２４】
［第１の実施の形態例］
そこで、第１の実施の形態例におけるＬＳＩは、複数のＦＦとを有するユーザー回路と、テストモード（以下、スキャンモード）時に複数のＦＦを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、複数のＦＦのうちいずれかのＦＦの非反転出力値を論理演算して出力する論理演算回路を有する。なお、複数のＦＦのうち、他のＦＦについては、非反転出力値が論理演算されることなく後段のＦＦに出力される。これにより、ＬＳＩは、スキャンモード時に、ＦＦに入力されるデータパターンを変更させることができると共に、ＦＦに保持された値を変更して出力させることができる。
【００２５】
図４は、ＦＦｆ２の出力値Ｑ（非反転出力値）を論理反転演算する論理反転演算回路Ｉ１（論理演算回路）を有するスキャンチェーンの一例と、その波形図２Ａ、２Ｂとを表す図である。波形図２Ａはスキャンイン端子ＳＩからテスト用のデータパターンが入力される場合の波形図であり、波形図２ＢはＦＦｆ１〜ｆ４が保持する値がスキャンアウト端子ＳＯに出力される場合の波形図である。同図において、論理反転回路Ｉ１はスキャンチェーンの接続経路に設けられているため、スキャンモードの場合にのみ適用され、ユーザモードの処理には影響しない。以下、波形図に基づいて具体的に説明する。図３の波形図と同様に、スキャンチェーンは４つのスキャンＦＦｓｆ１〜ｓｆ４を有し、入力されるデータパターンは１０１０である。
【００２６】
まず、図４の波形図２Ａについて説明する。図３の波形図１Ａと同様に、初め、スキャンイネーブル信号ＳＥはＬレベルに設定され、各ＦＦｆ１〜ｆ４には、例えば、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている（２１ｘ）。この状態で、スキャンイネーブル信号がＨレベルに変更されると、クロックの立ち上がり毎に、図３と同様に、シフトレジスタ動作によって、スキャンイン端子ＳＩからデータパターン１０１０がＦＦｆ１〜ｆ４に入力される。
【００２７】
ただし、この例では、スキャンイネーブル信号ＳＥがＨレベルに変更された後３クロック目ｔ１、ＦＦｆ３にはデータパターンの初めの入力値「１」の論理反転値「０」が入力される。続く４クロック目ｔ２、ＦＦｆ３にはデータパターンの２番目の値「０」の論理反転値「１」が、ＦＦｆ４には、ＦＦｆ３から出力された論理反転回路Ｉ１で反転済みのデータパターンの初めの値「０」が入力される。この結果、データパターンが全て入力された時、ＦＦｆ３、ｆ４には論理反転された値が保持される（２１ｙ）。この例では、スキャンチェーンの途中（ＦＦｆ２とＦＦｆ３の間）に論理反転回路Ｉ１が設けられているため、データパターンの一部の値のみが論理反転される。
【００２８】
このように、スキャンチェーンの接続経路に論理反転回路Ｉ１が設けられていることにより、ＦＦｆ１〜ｆ４に入力される値は、データパターン１０１０から変更（０１１０）される。しかし、スキャンテストを行うユーザーは、ＦＦｆ２とＦＦｆ３の間に論理反転回路Ｉ１が設けられていることを予め認識しているため、論理反転回路Ｉ１による一部の値の変更を予め想定したデータパターンを用意し、スキャンテストを行うことができる。
【００２９】
その一方、第３者は、スキャンチェーンの接続経路に論理反転回路Ｉ１が設けられていることを認識していないため、任意のデータパターンをスキャンＦＦへ入力することができない。また、スキャンチェーンのどの位置に論理演算回路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第３者が、スキャンチェーンの接続経路に論理反転回路Ｉ１が設けられていることを認識している場合でも、論理反転回路Ｉ１がスキャンチェーンのいずれの位置にいくつ設置されているかを認識することは困難である。このため、本実施の形態例におけるＬＳＩは、第３者による、任意のデータパターンのスキャンＦＦへの入力を困難にし、スキャンチェーンを悪用した内部情報の改竄等を抑止することができる。
【００３０】
次に、図４のＦＦｆ１〜ｆ４に保持された値がスキャンアウト端子ＳＯに出力される波形図２Ｂについて説明する。図３の波形図１Ｂと同様に、初め、スキャンイネーブル信号ＳＥはＬレベルに設定され、各ＦＦｆ１〜ｆ４には、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている（２２ｘ）。この状態で、スキャンイネーブル信号ＳＥがＨレベルに変更されると、クロックの立ち上がり毎に、図３と同様に、シフトレジスタ動作によって、ＦＦｆ１〜ｆ４に保持された値がスキャンアウト端子ＳＯに出力される。
【００３１】
ただし、この例では、スキャンイネーブル信号ＳＥがＨレベルに変更された後１クロック目ｔ３、ＦＦｆ３には、ＦＦｆ２に保持された値「０」の論理反転値「１」が入力される。続く２クロック目ｔ４では、初めＦＦｆ１に保持されていたＦＦｆ２からの出力値「１」が「０」に論理反転されＦＦ３に入力され、前クロックで論理反転済みのＦＦｆ３からの出力値「１」がＦＦｆ４に入力される。この結果、初め、ＦＦｆ１〜ｆ４に保持されていた値（２２ｘ）のうち、ＦＦｆ１、ｆ２に保持されていた値が論理反転され、スキャンアウト端子ＳＯに出力される。また、スキャンチェーンの途中（ＦＦｆ２とＦＦｆ３の間）に論理反転回路Ｉ１が設けられていることにより、一部のＦＦｆ１、ｆ２に保持されていた値のみが論理反転されスキャンアウト端子ＳＯに出力される。
【００３２】
しかし、スキャンテストを行うユーザーは、スキャンチェーンを構成するＦＦｆ２とＦＦｆ３の間に論理反転回路Ｉ１が設けられていることを予め認識しているため、スキャンアウト端子ＳＯに出力されたデータパターンを論理反転回路Ｉ１による変更前の値に復元することができる。そして、ユーザーは、復元後のデータパターンに基づいて、組み合わせ回路の処理が適切に行われたか否かを検証することができる。
【００３３】
その一方、第３者は、スキャンチェーンの接続経路に論理反転回路Ｉ１が設けられていることを認識しておらず、ＦＦに保持された通りの値を取得することができない。また、スキャンチェーンのどの位置に論理演算回路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第３者が、スキャンチェーンの接続経路に論理反転回路Ｉ１が設けられていることを認識している場合でも、論理反転回路Ｉ１がスキャンチェーンのいずれの位置にいくつ設置されたかを認識することは困難である。このため、第３者が、論理反転回路によって変更されたデータパターンに基づいて、ＦＦに保持された元の値を復元することは困難である。従って、本実施の形態例におけるＬＳＩは、第３者による、ＦＦに保持された内部情報の取得を困難にし、スキャンチェーンを悪用した内部情報の漏洩等を抑止することができる。
【００３４】
以上のようにして、本実施の形態例におけるＬＳＩは、接続経路が、ＦＦの出力値（非反転出力値）を論理演算（論理反転演算）して出力する論理演算回路を有することによって、スキャンチェーンを利用した第３者によるＬＳＩの内部情報の漏洩及び改竄を抑止することができる。一方、ユーザーは、接続経路における論理演算回路の設置状態を認識していることにより、当該論理演算回路による値の変更を想定したデータパターンを生成すると共に、スキャンアウト端子ＳＯに出力されたデータパターンを当該論理演算回路による変更前の値に復元することができる。これにより、本実施の形態例におけるＬＳＩは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報の改竄及び漏洩を抑止することができる。
【００３５】
［第２の実施の形態例］
第２の実施の形態例におけるＬＳＩは、複数のＦＦとを有するユーザー回路と、テストモード（以下、スキャンモード）時に複数のＦＦを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、複数のＦＦのうちいずれかのＦＦの反転出力値を後段のＦＦに出力する反転値接続経路を有する。なお、複数のＦＦのうち、他のＦＦについては、非反転出力値が後段のＦＦに出力される。これにより、ＬＳＩは、スキャンモード時に、ＦＦに入力されるデータパターンを変更させることができると共に、ＦＦに保持された値を変更して出力させることができる。
【００３６】
図５は、ＦＦｆ２の論理反転値ＱＸ（反転出力値）を後段のＦＦｆ３に出力する接続経路（反転値接続経路）を有するスキャンチェーンの一例と、その波形図３Ａ、３Ｂとを表す図である。波形図３Ａはスキャンイン端子ＳＩからテスト用のデータパターンが入力される場合の波形図であり、波形図３ＢはＦＦｆ１〜ｆ４が保持する値がスキャンアウト端子ＳＯに出力される場合の波形図である。同図において、ＦＦｆ２の論理反転値ＱＸを後段のＦＦｆ３に出力する接続経路はスキャンチェーンの接続経路に設けられるため、スキャンモードの場合にのみ適用され、ユーザモードの処理には影響しない。以下、波形図に基づいて具体的に説明する。図３の波形図と同様に、スキャンチェーンは４つのスキャンＦＦｓｆ１〜ｓｆ４を有し、入力されるデータパターンは１０１０である。
【００３７】
まず、図５の波形図３Ａについて説明する。図３の波形図１Ａと同様に、初め、スキャンイネーブル信号ＳＥはＬレベルに設定され、各ＦＦｆ１〜ｆ４には、例えば、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている（３１ｘ）。この状態で、スキャンイネーブル信号がＨレベルに変更されると、クロックの立ち上がり毎に、図３と同様に、シフトレジスタ動作によって、スキャンイン端子ＳＩからデータパターン１０１０がＦＦｆ１〜ｆ４に入力される。
【００３８】
ただし、この例では、スキャンイネーブル信号ＳＥがＨレベルに変更された後３クロック目ｔ１、ＦＦｆ３には、ＦＦｆ２に保持された値「１」の論理反転値ＱＸ「０」が入力される。続く４クロック目ｔ２、ＦＦｆ３にはデータパターンの２番目の値「０」の論理反転値ＱＸ「１」が、ＦＦｆ４には、ＦＦｆ３から出力されたＦＦｆ２で論理反転済みのデータパターンの初めの値「０」が入力される。この結果、図３の波形図２Ａと同様にして、データパターンが全て入力された時、ＦＦｆ３、ｆ４には論理反転された値が保持される（３１ｙ）。この例においても、論理反転値ＱＸを出力するＦＦｆ２がスキャンチェーンの途中に設置されていることにより、入力されたデータパターンの一部のみが論理反転される。
【００３９】
このように、ＦＦｆ２が論理反転値ＱＸを出力することにより、ＦＦｆ１〜ｆ４に入力される値は、データパターン１０１０から変更（０１１０）される。しかし、スキャンテストを行うユーザーは、スキャンチェーンにおいてＦＦｆ２の論理反転値ＱＸがＦＦｆ３に出力されることを予め認識しているため、ＦＦｆ２の論理反転値出力による値の変更を予め想定したデータパターンを用意し、スキャンテストを行うことができる。
【００４０】
その一方、第３者は、スキャンチェーンに論理反転値ＱＸを後段のＦＦに出力する反転値接続経路が設けられていることを認識しておらず、任意のデータパターンをスキャンＦＦへ入力することができない。また、スキャンチェーンのどの位置に反転値接続経路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第３者が、スキャンチェーンに反転値接続経路が設けられていることを認識している場合でも、当該反転出力経路がスキャンチェーンのいずれの位置にいくつ設置されているかを認識することは困難である。従って、本実施の形態例におけるＬＳＩは、第３者による、任意のデータパターンのスキャンＦＦへの入力を困難にし、スキャンチェーンを悪用した内部情報の改竄等を抑止することができる。
【００４１】
次に、図５の波形図２Ｂについて説明する。図３の波形図１Ｂと同様に、初め、スキャンイネーブル信号ＳＥはＬレベルに設定され、各ＦＦｆ１〜ｆ４には、前回のクロックの立ち上がり時における組み合わせ回路の出力値が保持される（３２ｘ）。この状態で、スキャンイネーブル信号ＳＥがＨレベルに変更されると、クロックの立ち上がり毎に、図３と同様に、シフトレジスタ動作によって、ＦＦｆ１〜ｆ４に保持された値がスキャンアウト端子ＳＯに出力される。
【００４２】
ただし、この例では、スキャンイネーブル信号ＳＥがＨレベルに変更された後１クロック目ｔ３、ＦＦｆ３には、ＦＦｆ２に保持された値「０」の論理反転値ＱＸ「１」が入力される。続く２クロック目ｔ４では、初めＦＦｆ１に保持されていた値「１」の論理反転値ＱＸ「０」がＦＦ３に入力され、前クロックで論理反転済みのＦＦｆ３からの出力値「１」がＦＦｆ４に入力される。この結果、初め、ＦＦｆ１〜ｆ４に保持されていた値（３２ｘ）のうち、ＦＦｆ１、ｆ２に保持されていた値が論理反転され、スキャンアウト端子ＳＯに出力される。この例でも、論理反転値ＱＸを出力するＦＦｆ２がスキャンチェーンの途中に設置されていることにより、一部のＦＦｆ１、ｆ２に保持されていた値のみが論理反転されスキャンアウト端子ＳＯに出力される。
【００４３】
しかし、スキャンテストを行うユーザーは、スキャンチェーンにおいてＦＦｆ２の論理反転値ＱＸがＦＦｆ３に出力されることを予め認識しているため、スキャンアウト端子ＳＯに出力されたデータパターンをＦＦｆ２の論理反転値出力による変更前の値に復元することができる。そして、ユーザーは、復元後のデータパターンに基づいて、組み合わせ回路の処理が適切に行われたか否かを検証することができる。
【００４４】
その一方、第３者は、スキャンチェーンに論理反転値ＱＸを後段のＦＦに出力する反転値接続経路が設けられていることを認識しておらず、ＦＦに保持された通りの値を取得することができない。また、スキャンチェーンのどの位置に反転値接続経路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第３者が、スキャンチェーンに反転値接続経路が設けられていることを認識している場合でも、当該反転出力経路がスキャンチェーンのいずれの位置にいくつ設置されているかを認識することは困難である。このため、第３者が、反転出力経路によって変更されたデータパターンに基づいて、ＦＦに保持された元の値を復元することは困難である。従って、本実施の形態例におけるＬＳＩは、第３者による、ＦＦに保持された内部情報の取得を困難にし、スキャンチェーンを悪用した内部情報の漏洩等を抑止することができる。
【００４５】
以上のようにして、本実施の形態例におけるＬＳＩは、接続経路がＦＦの論理反転値ＱＸ（反転出力値）を後段のＦＦに出力する反転値接続経路を有することによって、スキャンチェーンを利用した第３者によるＬＳＩの内部情報の漏洩及び改竄を抑止することができる。一方、ユーザーは、スキャンチェーンに設けられた反転値接続経路の数及び設置位置を認識していることにより、当該反転値接続経路による値の変更を想定したデータパターンを生成すると共に、スキャンアウト端子ＳＯに出力されたデータパターンを当該反転値接続経路による変更前の値に復元することができる。これにより、本実施の形態例におけるＬＳＩは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報の改竄及び漏洩を抑止することができる。
【００４６】
また、本実施の形態例におけるＬＳＩは、第１の実施の形態例のように、接続経路に別途、論理演算回路（図４の論理演算回路Ｉ１）を設ける必要がない。これにより、本実施の形態例におけるＬＳＩは、ＬＳＩのレイアウトパターンに基づいた、第３者によるスキャンチェーンの接続経路の解析をより困難にする。従って、本実施の形態例におけるＬＳＩは、第３者による内部情報の改竄及び漏洩をより効果的に抑止することができる。
【００４７】
なお、第１、２の実施の形態例において、接続経路が論理反転回路Ｉ１、または、反転値接続経路をひとつ有するＬＳＩを例示した。しかし、スキャンチェーンは、論理反転回路、反転値接続経路のいずれかまたは両方を複数、組み合わせて有してもよい。
【００４８】
図６は、論理反転回路及び反転値接続経路を複数有するスキャンチェーンの一例である。同図において、スキャンチェーンＳＣ１は、３つの論理反転回路Ｉ２〜Ｉ４を有し、スキャンチェーンＳＣ２は、論理反転値ＱＸを出力する３つのスキャンＦＦｓｆ１１〜ｓｆｆ１３を有する。そして、スキャンチェーンＳＣ３は、２つの論理反転回路Ｉ５、Ｉ６と、論理反転値ＱＸを出力するスキャンＦＦｓｆ１４とを組み合わせて有する。
【００４９】
例えば、第３者は、任意のデータパターンをスキャンチェーンに入出力させ、前後のデータパターンの変移を分析することによって、スキャンチェーンに設けられた論理反転回路及び反転値接続経路の設置状態の解析（スキャンチェーンの接続経路の解析）を行う。しかし、膨大なＦＦを有するスキャンチェーンに論理反転回路及び反転値接続経路が、分散して複数、設置されることにより、データパターンの変移内容がより複雑化し、スキャンチェーンの解析がより困難になる。従って、本実施の形態例におけるＬＳＩは、スキャンチェーンの接続経路に、論理反転回路及び反転値接続経路を分散して複数配置することにより、接続経路の解析をより困難にし、内部情報の改竄及び漏洩の抑止効果を向上させることができる。
【００５０】
［第３の実施の形態例］
第３の実施の形態例におけるＬＳＩは、複数のＦＦとを有するユーザー回路と、テストモード（以下、スキャンモード）時に複数のＦＦを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、複数のＦＦのうちいずれかのＦＦの非反転出力値と所定値とを入力とし、ＡＮＤ演算回路、ＯＲ演算回路、ＸＯＲ演算回路、ＮＡＮＤ演算回路、ＮＯＲ演算回路、ＸＮＯＲ演算回路のいずれかの論理演算を行う論理演算回路を有する。なお、複数のＦＦのうち、他のＦＦについては、非反転出力値が論理演算されることなく後段のＦＦに出力される。
【００５１】
これにより、ＬＳＩは、スキャンモード時、ＦＦに入力されるデータパターンを変更させることができると共に、ＦＦに保持された値を変更して出力させることができる。また、ＬＳＩは、第３者によるスキャンチェーンの解析を困難にし、内部情報の漏洩及び改竄をより効果的に抑止することができる。
【００５２】
具体的に、本実施の形態例では、スキャンチェーンの接続経路が、ＦＦｆ２からの出力値（非反転出力値）と擬似乱数値（所定値）との排他的論理和（以下、ＸＯＲ）演算を行う論理演算回路を有する場合を例示する。ただし、論理演算回路の行う演算はＸＯＲ演算に限定されるものではなく、ＡＮＤ演算、ＯＲ演算、ＮＡＮＤ演算、ＮＯＲ演算、ＸＮＯＲ演算等のいずれかであってもよい。また、所定値についても擬似乱数値に限定されるものではなく、固定値や所定のパターンに基づく値であってもよい。
【００５３】
図７は、ＦＦｆ２の出力値（非反転出力値）と擬似乱数値（所定値）とのＸＯＲ演算を行う論理演算回路Ｘ１を有するスキャンチェーンの一例と、その波形図４Ａ、４Ｂとを表す図である。このため、同図の論理演算回路Ｘ１は、擬似乱数値とＦＦｆ２の出力値とが同一である場合は「０」を、異なる場合は「１」を、ＦＦｆ３に出力する。擬似乱数値は、擬似乱数生成回路ＬＦによって生成され、論理演算回路Ｘ１に出力される。また、論理演算回路Ｘ１はスキャンチェーンの接続経路に設けられているため、スキャンモードの場合にのみ適用され、ユーザモードの処理には影響しない。
【００５４】
図８は、擬似乱数生成回路ＬＦの一例を表す図である。同図の擬似乱数生成回路ＬＦは、複数のレジスタｆｘ０〜ｆｘｆと、論理演算回路Ｘ１１〜Ｘ１３とを有する線形帰還シフトレジスタである。レジスタｆｘ０〜ｆｘｆの取りうる状態は有限個であるため、周期的なパターンで乱数値（０または１）が出力される。これにより、ユーザーは、擬似乱数生成回路ＬＦから出力される値の出力パターンを予め認識することができる。しかし、第３者が、擬似乱数生成回路ＬＦから出力される乱数値のパターンを特定するには工数を要し、困難である。なお、擬似乱数生成回路ＬＦは、同図の例に限定されるものではない。例えば、ユーザーは、出力される擬似乱数値のパターンの特定をより困難にするために、ＬＳＩに複数の擬似乱数生成回路ＬＦを備え、適用する擬似乱数生成回路ＬＦを定期的に切り替えてもよい。
【００５５】
図７に戻り、波形図４Ａはスキャンイン端子ＳＩからテスト用のデータパターンが入力される場合の波形図であり、波形図４ＢはＦＦｆ１〜ｆ４が保持する値がスキャンアウト端子ＳＯに出力される場合の波形図である。図３の波形図と同様に、スキャンチェーンは４つのスキャンＦＦｓｆ１〜ｓｆ４を有し、入力されるデータパターンは１０１０である。以下、波形図に基づいて具体的に説明する。
【００５６】
まず、波形図４Ａについて説明する。図３の波形図１Ａと同様に、初め、スキャンイネーブル信号ＳＥはＬレベルに設定され、各ＦＦｆ１〜ｆ４には、例えば、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている（４１ｘ）。この状態で、スキャンイネーブル信号がＨレベルに変更されると、クロックの立ち上がり毎に、図３と同様に、シフトレジスタ動作によって、スキャンイン端子ＳＩからデータパターン１０１０がＦＦｆ１〜ｆ４に入力される。
【００５７】
ただし、この例では、スキャンイネーブル信号がＨレベルに変更された後３クロック目ｔ１、ＦＦｆ３には、論理演算回路Ｘ１による、ＦＦｆ２から出力されたデータパターンの初めの値「１」と擬似乱数値「０」とのＸＯＲ演算結果値「１」が出力される。続く４クロック目ｔ２では、ＦＦｆ４には、前クロックでラッチした論理演算回路Ｘ１の結果値「１」がＦＦｆ３か出力されると共に、ＦＦｆ３には、論理演算回路Ｘ１による、ＦＦｆ２から出力されたデータパターンの２番目の値「０」と擬似乱数値「１」とのＸＯＲ演算結果値「１」が出力される。この結果、データパターンが全て入力された時、ＦＦｆ３、ｆ４にはデータパターンの初め２つの値と擬似乱数値との演算結果値が保持される（４１ｙ）。この例でも、論理演算回路Ｘ１がスキャンチェーンの途中に設置されていることにより、入力されたデータパターンの一部のみが論理演算結果値に変更される。
【００５８】
このように、スキャンチェーンの接続経路に論理演算回路Ｘ１が設けられていることにより、ＦＦｆ１〜ｆ４にセットされた値は、データパターン１０１０から変更（１１１０）される。しかし、スキャンテストを行うユーザーは、ＦＦｆ２とＦＦｆ３の間に論理演算回路Ｘ１が設けられていること、及び、その演算内容、擬似乱数値のパターンを予め認識していることから、論理演算回路Ｘ１による値の変更を予め想定したデータパターンを用意し、スキャンテストを行うことができる。
【００５９】
その一方、第３者は、仮にスキャンチェーンの接続経路に論理演算回路Ｘ１が設けられていることを認識している場合であっても、論理演算回路Ｘ１の演算内容及び設置位置、擬似乱数値のパターンを特定し、論理演算回路Ｘ１による値の変更を予め想定したデータパターンを生成することは困難である。従って、本実施の形態例におけるＬＳＩは、スキャンチェーンを構成するＦＦへの第３者による任意のデータパターンの入力をより困難にし、スキャンチェーンを悪用した内部情報の改竄等をより効果的に抑止することができる。
【００６０】
次に、図７のＦＦｆ１〜ｆ４に保持された値がスキャンアウト端子ＳＯに出力される波形図４Ｂについて説明する。図３の波形図１Ｂと同様に、初め、スキャンイネーブル信号ＳＥはＬレベルに設定され、各ＦＦｆ１〜ｆ４には、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている（４２ｘ）。この状態で、スキャンイネーブル信号ＳＥがＨレベルに変更されると、クロックの立ち上がり毎に、図３と同様に、シフトレジスタ動作によって、ＦＦｆ１〜ｆ４に保持された値がスキャンアウト端子ＳＯに出力される。
【００６１】
ただし、この例では、スキャンイネーブル信号がＨレベルに変更された後１クロック目ｔ３、ＦＦｆ３には、論理演算回路Ｘ１による、ＦＦｆ２からの出力値「０」と擬似乱数値「０」とのＸＯＲ演算結果値「０」が出力される。続く２クロック目ｔ４では、ＦＦｆ４には、前クロックでラッチした論理演算回路Ｘ１の結果値「０」がＦＦｆ３から出力されると共に、ＦＦｆ３には、論理演算回路Ｘ１による、ＦＦｆ２からの出力値「１」と擬似乱数値「１」との演算結果値「０」が出力される。この結果、初め、ＦＦｆ１〜ｆ４に保持されていた値（４２ｘ）のうち、ＦＦｆ１、ｆ２に保持されていた値が演算結果値に変更されてスキャンアウト端子ＳＯに出力される。この例でも、論理演算回路Ｘ１がスキャンチェーンの途中に設置されていることにより、一部のＦＦｆ１、ｆ２に保持された値のみが演算結果値に変更されスキャンアウト端子ＳＯに出力される。
【００６２】
しかし、スキャンテストを行うユーザーは、ＦＦｆ２とＦＦｆ３の間に論理演算回路Ｘ１が設けられていること、及び、その演算内容、擬似乱数値のパターンを予め認識していることから、スキャンアウト端子ＳＯに出力されたデータパターンから、論理演算回路Ｘ１による変更前の各ＦＦの値を復元することができる。そして、ユーザーは、復元後のデータパターンに基づいて、組み合わせ回路の処理が適切に行われたか否かを検証することができる。
【００６３】
その一方、第３者は、仮にスキャンチェーンの接続経路に論理演算回路Ｘ１が設けられていることを認識している場合であっても、論理演算回路Ｘ１の演算内容及び設置位置、擬似乱数値のパターンを特定し、論理演算回路Ｘ１による変更前の各ＦＦの値を復元することは困難である。従って、本実施の形態例におけるＬＳＩは、スキャンチェーンを構成するＦＦに保持された内部情報の第３者による取得を困難にし、スキャンチェーンを悪用した内部情報の漏洩等をより効果的に抑止することができる。
【００６４】
以上のようにして、本実施の形態例におけるＬＳＩは、接続経路が、ＦＦの出力値（非反転出力値）と所定値（擬似乱数値）とを論理演算して出力する論理演算回路を有することによって、スキャンチェーンを利用した第３者によるＬＳＩの内部情報の漏洩及び改竄の抑止効果を向上させることができる。一方、ユーザーは、接続経路における論理演算回路の設置状態を認識していることにより、当該論理演算回路による値の変更を想定したデータパターンを生成すると共に、スキャンアウト端子ＳＯに出力されたデータパターンを当該論理演算回路による変更前の値に復元することができる。これにより、本実施の形態例におけるＬＳＩは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報の改竄及び漏洩をより効果的に抑止することができる。
【００６５】
［第４の実施の形態例］
第４の実施の形態例におけるＬＳＩは、第１のクロックに同期して動作する複数のＦＦを有するユーザー回路と、テストモード時に、複数のＦＦを接続して第１のクロックに同期してシフト動作するスキャンチェーンを構成する接続経路と、所定値と第１のクロックとを論理演算し第２のクロックを出力するクロック生成回路とを有する。そして、複数のＦＦのうちいずれかのＦＦは、テストモード（以下、スキャンモード）時には第２のクロックに同期して動作し、ユーザモード時には第１のクロックに同期して動作する。なお、複数のＦＦのうち、他のＦＦについては、スキャンモード時についても、第１のクロックに同期して動作する。
【００６６】
これにより、ＬＳＩは、スキャンモード時、ＦＦに入力されるデータパターンの一部を省略または変更させることができると共に、ＦＦに保持された値を一部省略または変更して出力させることができる。また、ＬＳＩは、第３者によるスキャンチェーンの解析を困難にし、内部情報の漏洩及び改竄をより効果的に抑止することができる。
【００６７】
具体的に、本実施の形態例では、クロック生成回路が、第１のクロックと擬似乱数値（所定値）とをＸＯＲ演算（論理演算）した第２のクロックを出力する場合を例示する。ただし、論理演算は、ＸＯＲ演算に限定されるものではなく、ＡＮＤ演算、ＯＲ演算、ＮＡＮＤ演算、ＮＯＲ演算、ＸＮＯＲ演算等のいずれかであってもよい。また、所定値についても擬似乱数値に限定されるものではなく、固定値や所定のパターンに基づく値であってもよい。
【００６８】
図９は、クロック信号ＣＫ１（第１のクロック）とタイミングの異なるクロック信号ＣＫ２（第２のクロック）に同期して動作するＦＦｆ３を有するスキャンチェーンの一例である。同図において、他のＦＦｆ１、ｆ２、ｆ４は第１のクロック信号ＣＫ１に同期して動作する。また、同図のスキャンチェーンは、擬似乱数生成回路ＬＦから出力された擬似乱数値と、クロック信号ＣＫ１とをＸＯＲ演算しクロック信号ＣＫ２を出力する論理演算回路Ｘ２（クロック生成回路）を有する。論理演算回路Ｘ２はスキャンチェーンの接続経路に設けられているため、ＦＦｆ３は、ユーザモード時にはクロック信号ＣＫ１に同期して動作する。以下、波形図に基づいて具体的に説明する。
【００６９】
図１０は、図９のスキャンチェーンの波形図５Ａ、５Ｂを表す図である。波形図５Ａはスキャンイン端子ＳＩからテスト用のデータパターンが入力される場合の波形図であり、波形図５ＢはＦＦｆ１〜ｆ４が保持する値がスキャンアウト端子ＳＯに出力される場合の波形図である。図３の波形図と同様に、スキャンチェーンは４つのスキャンＦＦｓｆ１〜ｓｆ４を有し、入力されるデータパターンは１０１０である。
【００７０】
まず、クロック信号ＣＫ２について説明する。この例において、論理演算回路Ｘ２は、クロック信号ＣＫ１と擬似乱数値とが異なる場合、Ｈレベルのクロック信号ＣＫ２をＦＦｆ３に出力する。例えば、図１０のタイミングｔ５において、論理演算回路Ｘ２は、Ｌレベルのクロック信号ＣＫ１と擬似乱数値「１」とに基づいて、Ｈレベルのクロック信号ＣＫ２を出力する。続いて、タイミングｔ６では、クロック信号ＣＫ１がＨレベルに遷移することにより、論理演算回路Ｘ２は、擬似乱数値「０」とのＸＯＲ演算に基づいてＨレベルのクロック信号ＣＫ２を継続して出力する。そして、タイミングｔ７では、クロック信号ＣＫ１がＬレベルに遷移することにより、擬似乱数値「０」とのＸＯＲ演算に基づいて、クロック信号ＣＫ２はＬレベルに遷移する。このように、ＦＦｆ３に供給されるクロック信号ＣＫ２は、クロック信号ＣＫ１と異なるタイミングで遷移する。
【００７１】
図１０の波形図５Ａにおいて、具体的に、スキャンイネーブル信号がＨレベルに変更された後、３回目のクロック信号の立ち上がり時ｔ８、ＦＦｆ２は、データパターンの初めの値「１」をＦＦｆ３に出力する。ただし、タイミングｔ８において、クロック信号ＣＫ２はＬレベルであるため、ＦＦｆ３はＦＦｆ２から出力された値「１」を取得しない。そして、タイミングｔ９でクロック信号ＣＫ２がＨレベルに遷移すると、ＦＦｆ３はＦＦｆ２からの出力値を取得する。しかし、ＦＦｆ２からの出力値は、既にデータパターンの２番目の値「０」に遷移している。このため、ＦＦｆ３は２番目の値「０」を取得することになり、データパターンの初めの値ｓ１はスキップされることになる。そして、タイミングｔ１０において、ＦＦｆ４はデータパターンの初めの値ではなく２番目の値を取得することになる。
【００７２】
このように、ＦＦｆ３はクロック信号ＣＫ２に、他のＦＦｆ１、ｆ２、ｆ４はクロック信号ＣＫ１に同期して処理を行うため、データパターンの一部の値が省かれることにより変更されＦＦに入力されることがある。この例では、データパターンの初めの値ｓ１が省かれ、ＦＦｆ１〜ｆ４にセットされた値は、データパターン１０１０から変更（００１０）される（５１ｙ）。しかし、スキャンテストを行うユーザーは、各ＦＦが同期するクロック信号ＣＫ１、ＣＫ２を認識しているため、データパターンの値の変更を認識することができる。このため、ユーザーは、値の変更を予め想定してデータパターンを用意し、スキャンテストを行うことができる。
【００７３】
その一方、第３者は、仮にスキャンチェーンを構成する一部のＦＦが、その他のＦＦと異なるクロック信号に同期して処理を行うことを認識している場合であっても、当該クロック信号を生成する演算回路の内容、及び、擬似乱数値のパターンを特定し、値の変更を予め想定したデータパターンを生成することは困難である。従って、本実施の形態例におけるＬＳＩは、スキャンチェーンを構成するＦＦへの第３者による任意のデータパターンの入力をより困難にし、スキャンチェーンを悪用した内部情報の改竄等をより効果的に抑止することができる。
【００７４】
次に、図９のＦＦｆ１〜ｆ４に保持された値をスキャンアウト端子ＳＯに出力する波形図５Ｂについて説明する。具体的に、スキャンイネーブル信号がＨレベルに変更された後１回目のクロック信号の立ち上がり時ｔ１１、ＦＦｆ２は保持していた値「０」をＦＦｆ３に出力する。ただし、タイミングｔ８において、クロック信号ＣＫ２はＬレベルであるため、ＦＦｆ３はＦＦｆ２から出力された値「１」を取得しない。そして、タイミングｔ１２でクロック信号ＣＫ２がＨレベルに遷移すると、ＦＦｆ３はＦＦｆ２からの出力値を取得する。しかし、ＦＦｆ２からの出力値は、既に、ＦＦｆ１に保持されていた値「１」に遷移している。このため、ＦＦｆ３は、ＦＦｆ１に保持されていた値「１」を取得することになり、ＦＦｆ２に保持されていた値「０」ｓ２はスキップされる。このように、ＦＦｆ３が異なるクロック信号ＣＫ２と同期することにより、一部のＦＦに保持されていた値が出力されないことがある。
【００７５】
しかし、スキャンテストを行うユーザーは、各ＦＦが同期するクロック信号ＣＫ１、ＣＫ２を認識しているため、一部のＦＦに保持されていた値の省略による出力値の変更を認識することができる。このため、ユーザーは、いずれのＦＦの値が省略されたかを認識した上で、有効な値に基づいて組み合わせ回路の検証を行うことができる。
【００７６】
その一方、第３者は、仮にスキャンチェーンを構成する一部のＦＦが、その他のＦＦと異なるクロック信号に同期して処理を行うことを認識している場合であっても、当該クロック信号を生成する演算回路の内容、及び、擬似乱数値のパターンを特定し、いずれのＦＦに保持された値が省略されるかを特定することは困難である。従って、本実施の形態例におけるＬＳＩは、スキャンチェーンを構成するＦＦに保持された内部情報の第３者による取得をより困難にし、スキャンチェーンを悪用した内部情報の漏洩等をより効果的に抑止することができる。
【００７７】
以上のようにして、本実施の形態例におけるＬＳＩは、スキャンモード時に他のＦＦと異なるクロック信号に同期して動作するＦＦを有することによって、スキャンチェーンを利用した第３者によるＬＳＩの内部情報の漏洩及び改竄をより困難にし、抑止効果を向上させることができる。一方、ユーザーは、当該ＦＦによる値の変更を予め想定したデータパターンを生成すると共に、スキャンアウト端子ＳＯに出力されたデータパターンのうち省略された値を認識することができる。これにより、本実施の形態例におけるＬＳＩは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報を改竄及び漏洩の抑止効果をさらに向上させることができる。
【００７８】
なお、図９のスキャンチェーンに、さらに、ひとつまたは複数の論理演算回路が組み合わせて設けられていてもよい。これにより、本実施の形態例におけるＬＳＩは、第３者によるスキャンチェーンの解析をより困難にすることができる。
【００７９】
図１１は、さらに、論理反転回路Ｉ１０が設けられた図９のスキャンチェーンの一例を表す図である。同図において、異なるクロック信号ＣＫ２に同期するＦＦｆ３の出力値が論理反転を行う論理演算回路Ｉ１０によってさらに論理反転されＦＦｆ４に出力される。
【００８０】
図１２は、図１１のスキャンチェーンの波形図を表す図である。同図の波形図６Ａように、ＦＦｆ４は、クロックＣＫ１の立ち上がり時ｔ２１に、ＦＦｆ３に保持された値「０」の論理反転値「１」をラッチする。また、同図の波形図６Ｂにおいても同様に、ＦＦｆ４は、クロックＣＫ１の立ち上がり時、ＦＦｆ３に保持された値の論理反転値をラッチする。これにより、第３者がスキャンチェーンの解析を目的として任意のデータパターンをＦＦに入出力して検証を行う場合、出力されるデータパターンがより複雑に変化する。この結果、スキャンチェーンの解析がより困難になり、内部情報を改竄及び漏洩の抑止効果が向上する。
【００８１】
［第５の実施の形態例］
第５の実施の形態例におけるＬＳＩは、複数のＦＦとを有するユーザー回路と、テストモード（以下、スキャンモード）時に複数のＦＦを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、製品出荷前は第１の値と複数のＦＦのうちいずれかのＦＦの非反転出力値との論理演算値が当該非反転出力値に、製品出荷後は第２の値と非反転出力値との論理演算値が一定値になる論理演算を行う論理演算回路を有する。この所定値は、製品出荷前は第１の値に、製品出荷後は前記第１の値とは異なる第２の値に設定される。なお、複数のＦＦのうち、他のＦＦについては、非反転出力値が論理演算されることなく後段のＦＦに出力される。
【００８２】
これにより、ＬＳＩは、製品出荷前のスキャンモード時は、データパターンのＦＦへの入力、及び、ＦＦに保持された値の出力を可能にし、製品出荷後のスキャンモード時には、所定値との論理演算によって、データパターンのＦＦへの入力値、及び、ＦＦに保持された値をリセットすることができる。これにより、ＬＳＩは、第３者のスキャンチェーンの悪用による内部情報の漏洩及び改竄を回避する。
【００８３】
具体的に、本実施の形態例では、接続経路が、製品出荷前はＨレベルの信号（第１の値）と前段のＦＦからの出力値との論理積（以下、ＡＮＤ）演算の結果、当該出力値を、製品出荷後はＬレベルの信号（第２の値）と出力値とのＡＮＤ演算の結果、値「０」（一定値）を出力する論理演算回路を有する場合を例示する。
【００８４】
図１３は、製品出荷後のスキャンモード時、データパターンの入力のＦＦへの入力値、及び、ＦＦに保持された値をリセットする論理演算回路Ｘ３を有するスキャンチェーンの一例を表す図である。論理演算回路Ｘ３は、プルダウン回路ＰＤから出力されたテスト信号ＴＥとＦＦｆ２の出力値との論理積（以下、ＡＮＤ）演算を行う。この例において、プルダウン回路ＰＤは、製品出荷前はＨレベルの信号を、製品出荷後はＬレベルの信号を出力する。従って、論理演算回路Ｘ３は、製品出荷前は、ＦＦｆ２からの出力値とＨレベルのテスト信号ＴＥとのＡＮＤ演算に基づいて常にＦＦｆ２から出力値を、製品出荷後には、ＦＦｆ２からの出力値とＬレベルのテスト信号ＴＥとのＡＮＤ演算に基づいて常に値「０」をＦＦｆ３に出力する。以下、波形図に基づいて具体的に説明する。
【００８５】
図１４は、図１３のスキャンチェーンの波形図７Ａ、７Ｂを表す図である。波形図７Ａは製品出荷前、波形図７Ｂは製品出荷後におけるスキャンモード時、スキャンイン端子ＳＩからデータパターンを入力する場合の波形図である。図３の波形図と同様に、スキャンチェーンは４つのスキャンＦＦｓｆ１〜ｓｆ４を有し、入力されるデータパターンは１０１０である。
【００８６】
図１４の波形図７Ａにおいて、製品出荷前のスキャンモード時、テスト信号ＴＥはＨレベルに、スキャンイネーブル信号ＳＥはＨレベルに設定される。そこで、論理演算回路Ｘ３は、クロックの立ち上がり毎に、ＦＦｆ２から出力された値とＨレベルのテスト信号ＴＥとのＡＮＤ演算の結果、ＦＦｆ２からの出力値と同じ値をＦＦｆ３に出力する。これにより、製品出荷前のスキャンモード時、各ＦＦｆ１〜ｆ４にはスキャンイン端子ＳＩからデータパターン１０１０が入力される（７１ｙ）。
【００８７】
一方、波形図７Ｂにおいて、製品出荷後のスキャンモードとして、テスト信号ＴＥはＬレベルに、スキャンイネーブル信号ＳＥはＨレベルに設定される。そこで、論理演算回路Ｘ３は、クロックの立ち上がり毎に、ＦＦｆ２から出力された値とＬレベルのテスト信号ＴＥとのＡＮＤ演算の結果、値「０」をＦＦｆ３に出力する。これにより、製品出荷後のスキャンモード時、ＦＦｆ３、ｆ４には常に値「０」が入力される（７２ｙ）。
【００８８】
なお、図１４の波形図では、スキャンイン端子ＳＩからデータパターンを入力する場合を例示したが、各ＦＦｆ１〜ｆ４に保持された値をスキャンアウト端子ＳＯに出力する場合についても同様である。波形図７Ａで前述したとおり、製品出荷前のスキャンモード時、論理演算回路Ｘ３は、常にＦＦｆ２から出力された値をＦＦｆ３に出力する。従って、ＦＦｆ１〜ｆ４に保持された値はリセットされることなく、スキャンアウト端子ＳＯに出力される。一方、製品出荷後のスキャンモード時、論理演算回路Ｘ３は、常に値「０」をＦＦｆ３に出力する。従って、ＦＦｆ１〜ｆ４に保持された値のうち、ＦＦｆ１、ｆ２に保持された値は、値「０」にリセットされてスキャンアウト端子ＳＯに出力される。
【００８９】
また、本実施の形態例におけるリセットを行う論理演算回路は、ＡＮＤ演算回路に限定されるものではない。続いて、製品出荷後のスキャンモード時に、データパターンの入力のＦＦへの入力値、及び、ＦＦに保持された値をリセットする別のスキャンチェーンを例示する。
【００９０】
図１５は、製品出荷のスキャンモード時、データパターンの入力のＦＦへの入力値、及び、ＦＦに保持された値をリセットする別の論理演算回路Ｘ４を有するスキャンチェーンの一例を表す図である。論理演算回路Ｘ４は、プルアップ回路ＰＵから出力されたテスト信号ＴＥとＦＦｆ２の出力値との論理和（以下、ＯＲ）演算を行う。この例において、プルアップ回路ＰＵは、製品出荷前はＬレベルの信号を、製品出荷後はＨレベルの信号を出力する。従って、論理演算回路Ｘ４は、製品出荷前は、ＦＦｆ２からの出力値とＬレベルのテスト信号ＴＥとのＯＲ演算により常にＦＦｆ２から出力値を、製品出荷後は、ＦＦｆ２からの出力値とＨレベルのテスト信号ＴＥとのＯＲ演算に基づいて常に値「１」をＦＦｆ３に出力する。以下、波形図に基づいて具体的に説明する。
【００９１】
図１６は、図１５のスキャンチェーンの波形図８Ａ、８Ｂを表す図である。波形図８Ａは製品出荷前、波形図８Ｂは製品出荷後におけるスキャンモード時、スキャンイン端子ＳＩからデータパターンを入力する場合の波形図である。図３の波形図と同様に、スキャンチェーンは４つのスキャンＦＦｓｆ１〜ｓｆ４を有し、入力されるデータパターンは１０１０である。
【００９２】
図１６の波形図８Ａにおいて、製品出荷前のスキャンモードとして、テスト信号ＴＥはＬレベルに、スキャンイネーブル信号ＳＥはＨレベルに設定される。そこで、論理演算回路Ｘ４は、クロックの立ち上がり毎に、ＦＦｆ２から出力された値とＬレベルに固定されたテスト信号ＴＥとのＯＲ演算の結果、ＦＦｆ２からの出力値と同じ値をＦＦｆ３に出力する。これにより、製品出荷前のスキャンモード時、各ＦＦｆ１〜ｆ４にはスキャンイン端子ＳＩからデータパターン１０１０が入力される（８１ｙ）。
【００９３】
一方、波形図８Ｂにおいて、製品出荷後のスキャンモードとして、テスト信号ＴＥはＨレベルに、スキャンイネーブル信号ＳＥはＨレベルに設定される。そこで、論理演算回路Ｘ４は、クロックの立ち上がり毎に、ＦＦｆ２から出力された値とＬレベルに固定されたテスト信号ＴＥとをＯＲ演算の結果、値「１」をＦＦｆ３に出力する。この結果、製品出荷後のスキャンモード時、ＦＦｆ３、ｆ４には常に値「１」が入力される（８２ｙ）。
【００９４】
このように、本実施の形態例におけるＬＳＩは、製品出荷前のスキャンモード時には、接続経路に設けられた論理演算回路に前段のＦＦからの出力値を出力させることによって、データパターンのＦＦへの入力、及び、ＦＦに保持された値の出力を可能にし、スキャンテストを可能にする。その一方、製品出荷後のスキャンモード時には、本実施の形態例におけるＬＳＩは、接続経路に設けられた論理演算回路に一定値を出力させることによって、データパターンのＦＦへの入力値、及び、ＦＦに保持された値をリセットする。これにより、第３者は、任意のデータパターンをスキャンＦＦに入力することができず、スキャンＦＦに保持された値を出力することができない。従って、本実施の形態例におけるＬＳＩは、製品出荷前は前段のＦＦからの出力値を、製品出荷後は固定値を出力する論理演算回路を有することによって、製品出荷前にスキャンテストを可能にしながら、製品出荷後はスキャンチェーンを利用した第３者によるＬＳＩの内部情報の漏洩及び改竄を回避する。
【００９５】
以上の実施の形態をまとめると、次の付記のとおりである。
【００９６】
（付記１）
複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【００９７】
（付記２）
付記１において、
前記論理演算回路は、論理否定回路である半導体装置。
【００９８】
（付記３）
付記１において、
前記接続経路は、前記論理演算回路、または、前記反転値出力経路のいずれかまたは両方を分散して複数有する半導体装置。
【００９９】
（付記４）
付記１において、
前記論理演算回路は、前記フリップフロップの非反転出力値と所定値とを入力とし、ＡＮＤ演算回路、ＯＲ演算回路、ＸＯＲ演算回路、ＮＡＮＤ演算回路、ＮＯＲ演算回路、ＸＮＯＲ演算回路のいずれかである半導体装置。
【０１００】
（付記５）
付記４において、
前記所定値は、擬似乱数値である半導体装置。
【０１０１】
（付記６）
付記４において、
前記所定値は、製品出荷前は第１の値に、製品出荷後は前記第１の値とは異なる第２の値に設定され、
前記論理演算回路は、前記製品出荷前は前記第１の値と前記非反転出力値との論理演算値が当該非反転出力値に、前記製品出荷後は前記第２の値と前記非反転出力値との論理演算値が一定値になる論理演算を行う半導体装置。
【０１０２】
（付記７）
第１のクロックに同期して動作する複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続して前記第１のクロックに同期してシフト動作するスキャンチェーンを構成する接続経路と、
所定値と前記第１のクロックとを論理演算し第２のクロックを出力するクロック生成回路とを有し、
前記複数のフリップフロップのうちいずれかの前記フリップフロップは、テストモード時には前記第２のクロックに同期して動作し、ユーザモード時には前記第１のクロックに同期して動作する半導体装置。
【０１０３】
（付記８）
付記７において、
前記クロック生成回路の前記論理演算は、ＡＮＤ演算、ＯＲ演算、ＸＯＲ演算、ＮＡＮＤ演算、ＮＯＲ演算、ＸＮＯＲ演算のいずれかである半導体装置。
【０１０４】
（付記９）
付記７または８において、
前記所定値は、擬似乱数値である半導体装置。
【０１０５】
（付記１０）
付記７乃至９のいずれかにおいて、さらに、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【符号の説明】
【０１０６】
ＳＩ：スキャンイン端子、ＳＯ：スキャンアウト端子、ＵＩ：入力端子、ＵＯ：出力端子、ＳＥ：スキャンイネーブル信号、ｓｆ１〜ｓｆｆ：スキャンフリップフロップ、ｃ１〜ｃ３：組み合わせ回路、ｍ１〜ｍ４：マルチプレクサ、ｆ１〜ｆ４：フリップフロップ
【図１】
0005793978.tif 000002
【図２】
0005793978.tif 000003
【図３】
0005793978.tif 000004
【図４】
0005793978.tif 000005
【図５】
0005793978.tif 000006
【図６】
0005793978.tif 000007
【図７】
0005793978.tif 000008
【図８】
0005793978.tif 000009
【図９】
0005793978.tif 000010
【図１０】
0005793978.tif 000011
【図１１】
0005793978.tif 000012
【図１２】
0005793978.tif 000013
【図１３】
0005793978.tif 000014
【図１４】
0005793978.tif 000015
【図１５】
0005793978.tif 000016
【図１６】
0005793978.tif 000017