半導体装置
【課題】スキャンテストを可能にしながら内部データの漏洩及び改竄を防止する半導体装置を提供する。
【解決手段】複数のフリップフロップを有するユーザー回路と、テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する。
【解決手段】複数のフリップフロップを有するユーザー回路と、テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関する。
【背景技術】
【0002】
従来から、半導体装置(LSI:Large Scale Integration)のテスト手法としてスキャンテストが知られている。図1は、スキャンテスト機能を有するLSIの構成の一例を表す図である。同図のLSIは、データ処理や演算処理を実行する複数の回路素子からなる組み合わせ回路c1〜c8と、組み合わせ回路c1〜c8に接続されたスキャンフリップフロップsf1〜sffとを有する。スキャンフリップフロップ(以下、FF)sf1〜sffは、マルチプレクサ機能を有する。
【0003】
また、図1のLSIは、通常時のユーザモードと、スキャンテスト時のスキャンモードとを有する。ユーザモードの場合、組み合わせ回路c1〜c8は、スキャンフリップフロップsf1〜sffと共に、入力端子UIからの入力データに対して処理を行い、処理結果を出力端子UOに出力する。
【0004】
一方、スキャンモードの場合、スキャンイン端子SIからスキャンアウト端子SOの間がシリアルに接続され、スキャンチェーンが構成される。ユーザーは、スキャンイン端子SIからデータパターンを入力し、組み合わせ回路c1〜c8への任意の入力値としてスキャンFFsf1〜sffにセットすることができる。また、ユーザーは、スキャンFFsf1〜sffに保持された組み合わせ回路c1〜c8の処理結果を示す値を、スキャンチェーンをシフトさせることによって、スキャンアウト端子SOから出力させることができる。ユーザーは、出力されたデータパターンを検証することによって、組み合わせ回路c1〜c8の処理が適切に行われたか否かを判定する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−2841号公報
【特許文献2】特開2009−505059号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところが、図1のようなLSIは、スキャンチェーンを構成することによりスキャンテストを可能にする反面、スキャンFFsf1〜sffに保持される値の出力及び外部からの入力を可能にする。例えば、組み合わせ回路c1〜c8が課金情報やパスワード等の内部情報を扱うような場合、スキャンFFsf1〜sffに内部情報が保持されることがある。そして、スキャンFFsf1〜sffに保持された値が第3者に不正に入出力されることによって、内部情報の漏洩や改竄を招くことがある。しかしながら、LSIがスキャンチェーンを有していない場合、ユーザーは、組み合わせ回路c1〜c8の検証を適切に行うことが困難である。
【0007】
スキャンテストが可能なLSIについて、データの漏洩及び改竄を防止するために、様々な技術が開示されている(特許文献1、2)。
【0008】
本発明は、スキャンテストを可能にしながら内部データの漏洩及び改竄を防止する半導体装置を提供する。
【課題を解決するための手段】
【0009】
第1の側面は、複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する。
【発明の効果】
【0010】
第1の側面によれば、スキャンテストを可能にしながら内部データの漏洩及び改竄を防止する。
【図面の簡単な説明】
【0011】
【図1】スキャンテスト機能を有するLSIの構成の一例を表す図である。
【図2】スキャンFFを具体的に説明する図である。
【図3】図2のスキャンチェーンの波形図を表す図である。
【図4】論理反転演算回路を有するスキャンチェーンの一例と、波形図を表す図である。
【図5】論理反転値が出力されるFFを有するスキャンチェーンの一例と波形図を表す図である。
【図6】論理反転回路及び論理反転値が出力されるFFを複数有するスキャンチェーンの一例を表す図である。
【図7】論理演算回路を有するスキャンチェーンの一例と波形図を表す図である。
【図8】擬似乱数生成回路の一例を表す図である。
【図9】異なるクロック信号に基づくFFを有するスキャンチェーンの一例である。
【図10】図9のスキャンチェーンの波形図を表す図である。
【図11】さらに論理反転回路を有する図9のスキャンチェーンの一例を表す図である。
【図12】図11のスキャンチェーンの波形図を表す図である。
【図13】製品出荷後、FFへの入出力値をリセットするスキャンチェーンの一例を表す図である。
【図14】図13のスキャンチェーンの波形図を表す図である。
【図15】図13のスキャンチェーンの別の形態例を表す図である。
【図16】図15のスキャンチェーンの波形図を表す図である。
【発明を実施するための形態】
【0012】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0013】
図2は、図1のスキャンFFsf1〜sffを具体的に説明する図である。同図では、4つのスキャンFFsf1〜sf4が例示されており、各スキャンFFsf1〜sf4は、マルチプレクサm1〜m4とフリップフロップ(以下、FF)f1〜f4とをそれぞれ有する。図示されていないが、FFf1〜f4及び組み合わせ回路c1〜c3には、クロック信号が供給される。FFf1〜f4は、クロック信号の立ち上がり時に、保持していた値をQ端子から出力すると共に、マルチプレクサm1〜m4から出力された値をD端子から取得する。
【0014】
また、図2において、スキャンイネーブル信号SEは、マルチプレクサm1〜m4への選択信号であり、後続のFFf1〜f4への出力を切り替える。具体的に、マルチプレクサm1〜m4は、スキャンイネーブル信号がHigh(以下、H)レベルのときはスキャンイン信号SIを、Low(以下、L)レベルのときは組み合わせ回路c1〜c3からの出力を選択し、後続のFFf1〜f4に出力する。
【0015】
続いて、ユーザモードとスキャンモード時の動作の相違について説明する。図2において、ユーザモードの場合、スキャンイネーブル信号SEはLレベルに設定される。このため、マルチプレクサm1は入力端子UIからの入力値を、マルチプレクサm2〜m4は前段の組み合わせ回路c1〜c3からの出力値を選択して、後続のFFf1〜f4に出力する。これにより、FFf1〜f4に、入力端子UIからの入力値及び組み合わせ回路c1〜c3からの出力値が供給されると共に、各FFf1〜f4に保持されていた値が、後続の組み合わせ回路c1〜c3及び出力端子UOに出力される。
【0016】
一方、図2においてスキャンモードの場合、スキャンイネーブル信号SEはHレベルに設定される。これにより、マルチプレクサm1はスキャンイン端子SIからの入力値を、マルチプレクサm2〜m4は前段のFFf1〜f3からの出力値を選択して、後続のFFf1〜f4に出力する。つまり、スキャンモードに設定された場合、各FFf1〜f4がシリアルに接続されスキャンチェーンを構成し、シフトレジスタ動作が行われる。これにより、スキャンイン端子SIから入力されたテスト用のデータパターンがFFf1〜f4に入力されると共に、FFf1〜f4に保持された値がスキャンアウト端子SOに出力される。以下、波形図に基づいて、具体的に説明する。
【0017】
図3は、図2のスキャンFFsf1〜sf4の波形図1A、1Bを表す図である。同図の波形図1Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図1BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。スキャンイン端子SIからのデータパターンの入力と、FFf1〜f4が保持する値のスキャンアウト端子SOへの出力は同時に行われるが、別々の波形図に基づいて説明する。なお、この例において、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力するデータパターンは1010であるものとする。
【0018】
まず、図3の波形図1Aについて説明する。同図の波形図1Aは、スキャンイン端子SIからテスト用のデータパターン1010を入力する例を表す。この例において、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、例えば、前回のクロックの立ち上がり時における組み合わせ回路c1〜c3の出力値が保持されている(11x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、クロックの立ち上がり毎に、シフトレジスタ動作が行われる。
【0019】
具体的に、スキャンイネーブル信号がHレベルに変更後1クロック目t0、FFf1にデータパターンの初めの値「1」が入力されると共に、FFf2〜f4に保持された値が後続のFFf3〜f4、スキャンアウト端子SOに出力される。同様にして、スキャンイネーブル信号SEがHレベルに設定されたまま、次のクロックの立ち上がり時、データパターン1010の2番目の値「0」がFFf1に入力されると共に、初めの値「1」はFFf2にシフトされる。この例では、スキャンイネーブル信号SEをHレベルに変更後、4回目のクロックの立ち上がり時t4に、データパターン1010のFFf1〜f4への入力が完了する(11y)。
【0020】
このように、スキャンイン端子SIからデータパターンを入力する場合、スキャンイネーブル信号SEがHレベルに設定されると、クロックの立ち上がり毎に、データパターンがシフトレジスタ動作によってスキャンFFsf1〜sf4に順次入力される。例えば、入力が完了した状態(11y)で、スキャンイネーブル信号がLレベルに変更されると、次のクロックの立ち上がり時に、FFf1〜f4に保持された値が組み合わせ回路c1〜c3に入力され、データパターンに基づく組み合わせ回路の処理が行われる。
【0021】
次に、図3の波形図1Bについて説明する。同図の波形図1Bは、FFf1〜f4に保持された組み合わせ回路の処理結果を示す値が、スキャンアウト端子SOに出力される場合を表す。初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(12x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、次のクロックの立ち上がり時t3に、各FFf1〜f3に保持された値が後続のFFf2〜f4に出力され、FFf4に保持されていた値はスキャンアウト端子SOに出力される。この例では、スキャンイネーブル信号SEをHレベルに変更してから4回目のクロックの立ち上がり時に、FFf1〜f4に保持された値が全てスキャンアウト端子SOに出力される。
【0022】
このように、FFf1〜f4に保持された値をスキャンアウト端子SOに出力する場合、スキャンイネーブル信号SEがHレベルに設定され、クロックの立ち上がり毎に、各FFの値がシフトレジスタ動作によってスキャンアウト端子SOに順次出力される。ユーザーは、FFf1〜f4に保持された組み合わせ回路の処理結果を示す値をスキャンアウト端子SOに出力させて、任意のデータパターンに基づいて組み合わせ回路の処理が適切に行われたか否かを検証する。
【0023】
以上のように、スキャンチェーンを有するLSIは、スキャンイン端子SIから任意のデータパターンをスキャンFFに入力可能にすると共に、スキャンFFに保持された値をスキャンアウト端子SOに出力可能にする。しかしながら、その反面、スキャンFFにパスワードや課金情報等の内部情報が保持されている場合、内部情報の漏洩及び改竄を招く。
【0024】
[第1の実施の形態例]
そこで、第1の実施の形態例におけるLSIは、複数のFFとを有するユーザー回路と、テストモード(以下、スキャンモード)時に複数のFFを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、複数のFFのうちいずれかのFFの非反転出力値を論理演算して出力する論理演算回路を有する。なお、複数のFFのうち、他のFFについては、非反転出力値が論理演算されることなく後段のFFに出力される。これにより、LSIは、スキャンモード時に、FFに入力されるデータパターンを変更させることができると共に、FFに保持された値を変更して出力させることができる。
【0025】
図4は、FFf2の出力値Q(非反転出力値)を論理反転演算する論理反転演算回路I1(論理演算回路)を有するスキャンチェーンの一例と、その波形図2A、2Bとを表す図である。波形図2Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図2BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。同図において、論理反転回路I1はスキャンチェーンの接続経路に設けられているため、スキャンモードの場合にのみ適用され、ユーザモードの処理には影響しない。以下、波形図に基づいて具体的に説明する。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0026】
まず、図4の波形図2Aについて説明する。図3の波形図1Aと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、例えば、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(21x)。この状態で、スキャンイネーブル信号がHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、スキャンイン端子SIからデータパターン1010がFFf1〜f4に入力される。
【0027】
ただし、この例では、スキャンイネーブル信号SEがHレベルに変更された後3クロック目t1、FFf3にはデータパターンの初めの入力値「1」の論理反転値「0」が入力される。続く4クロック目t2、FFf3にはデータパターンの2番目の値「0」の論理反転値「1」が、FFf4には、FFf3から出力された論理反転回路I1で反転済みのデータパターンの初めの値「0」が入力される。この結果、データパターンが全て入力された時、FFf3、f4には論理反転された値が保持される(21y)。この例では、スキャンチェーンの途中(FFf2とFFf3の間)に論理反転回路I1が設けられているため、データパターンの一部の値のみが論理反転される。
【0028】
このように、スキャンチェーンの接続経路に論理反転回路I1が設けられていることにより、FFf1〜f4に入力される値は、データパターン1010から変更(0110)される。しかし、スキャンテストを行うユーザーは、FFf2とFFf3の間に論理反転回路I1が設けられていることを予め認識しているため、論理反転回路I1による一部の値の変更を予め想定したデータパターンを用意し、スキャンテストを行うことができる。
【0029】
その一方、第3者は、スキャンチェーンの接続経路に論理反転回路I1が設けられていることを認識していないため、任意のデータパターンをスキャンFFへ入力することができない。また、スキャンチェーンのどの位置に論理演算回路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第3者が、スキャンチェーンの接続経路に論理反転回路I1が設けられていることを認識している場合でも、論理反転回路I1がスキャンチェーンのいずれの位置にいくつ設置されているかを認識することは困難である。このため、本実施の形態例におけるLSIは、第3者による、任意のデータパターンのスキャンFFへの入力を困難にし、スキャンチェーンを悪用した内部情報の改竄等を抑止することができる。
【0030】
次に、図4のFFf1〜f4に保持された値がスキャンアウト端子SOに出力される波形図2Bについて説明する。図3の波形図1Bと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(22x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、FFf1〜f4に保持された値がスキャンアウト端子SOに出力される。
【0031】
ただし、この例では、スキャンイネーブル信号SEがHレベルに変更された後1クロック目t3、FFf3には、FFf2に保持された値「0」の論理反転値「1」が入力される。続く2クロック目t4では、初めFFf1に保持されていたFFf2からの出力値「1」が「0」に論理反転されFF3に入力され、前クロックで論理反転済みのFFf3からの出力値「1」がFFf4に入力される。この結果、初め、FFf1〜f4に保持されていた値(22x)のうち、FFf1、f2に保持されていた値が論理反転され、スキャンアウト端子SOに出力される。また、スキャンチェーンの途中(FFf2とFFf3の間)に論理反転回路I1が設けられていることにより、一部のFFf1、f2に保持されていた値のみが論理反転されスキャンアウト端子SOに出力される。
【0032】
しかし、スキャンテストを行うユーザーは、スキャンチェーンを構成するFFf2とFFf3の間に論理反転回路I1が設けられていることを予め認識しているため、スキャンアウト端子SOに出力されたデータパターンを論理反転回路I1による変更前の値に復元することができる。そして、ユーザーは、復元後のデータパターンに基づいて、組み合わせ回路の処理が適切に行われたか否かを検証することができる。
【0033】
その一方、第3者は、スキャンチェーンの接続経路に論理反転回路I1が設けられていることを認識しておらず、FFに保持された通りの値を取得することができない。また、スキャンチェーンのどの位置に論理演算回路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第3者が、スキャンチェーンの接続経路に論理反転回路I1が設けられていることを認識している場合でも、論理反転回路I1がスキャンチェーンのいずれの位置にいくつ設置されたかを認識することは困難である。このため、第3者が、論理反転回路によって変更されたデータパターンに基づいて、FFに保持された元の値を復元することは困難である。従って、本実施の形態例におけるLSIは、第3者による、FFに保持された内部情報の取得を困難にし、スキャンチェーンを悪用した内部情報の漏洩等を抑止することができる。
【0034】
以上のようにして、本実施の形態例におけるLSIは、接続経路が、FFの出力値(非反転出力値)を論理演算(論理反転演算)して出力する論理演算回路を有することによって、スキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄を抑止することができる。一方、ユーザーは、接続経路における論理演算回路の設置状態を認識していることにより、当該論理演算回路による値の変更を想定したデータパターンを生成すると共に、スキャンアウト端子SOに出力されたデータパターンを当該論理演算回路による変更前の値に復元することができる。これにより、本実施の形態例におけるLSIは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報の改竄及び漏洩を抑止することができる。
【0035】
[第2の実施の形態例]
第2の実施の形態例におけるLSIは、複数のFFとを有するユーザー回路と、テストモード(以下、スキャンモード)時に複数のFFを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、複数のFFのうちいずれかのFFの反転出力値を後段のFFに出力する反転値接続経路を有する。なお、複数のFFのうち、他のFFについては、非反転出力値が後段のFFに出力される。これにより、LSIは、スキャンモード時に、FFに入力されるデータパターンを変更させることができると共に、FFに保持された値を変更して出力させることができる。
【0036】
図5は、FFf2の論理反転値QX(反転出力値)を後段のFFf3に出力する接続経路(反転値接続経路)を有するスキャンチェーンの一例と、その波形図3A、3Bとを表す図である。波形図3Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図3BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。同図において、FFf2の論理反転値QXを後段のFFf3に出力する接続経路はスキャンチェーンの接続経路に設けられるため、スキャンモードの場合にのみ適用され、ユーザモードの処理には影響しない。以下、波形図に基づいて具体的に説明する。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0037】
まず、図5の波形図3Aについて説明する。図3の波形図1Aと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、例えば、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(31x)。この状態で、スキャンイネーブル信号がHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、スキャンイン端子SIからデータパターン1010がFFf1〜f4に入力される。
【0038】
ただし、この例では、スキャンイネーブル信号SEがHレベルに変更された後3クロック目t1、FFf3には、FFf2に保持された値「1」の論理反転値QX「0」が入力される。続く4クロック目t2、FFf3にはデータパターンの2番目の値「0」の論理反転値QX「1」が、FFf4には、FFf3から出力されたFFf2で論理反転済みのデータパターンの初めの値「0」が入力される。この結果、図3の波形図2Aと同様にして、データパターンが全て入力された時、FFf3、f4には論理反転された値が保持される(31y)。この例においても、論理反転値QXを出力するFFf2がスキャンチェーンの途中に設置されていることにより、入力されたデータパターンの一部のみが論理反転される。
【0039】
このように、FFf2が論理反転値QXを出力することにより、FFf1〜f4に入力される値は、データパターン1010から変更(0110)される。しかし、スキャンテストを行うユーザーは、スキャンチェーンにおいてFFf2の論理反転値QXがFFf3に出力されることを予め認識しているため、FFf2の論理反転値出力による値の変更を予め想定したデータパターンを用意し、スキャンテストを行うことができる。
【0040】
その一方、第3者は、スキャンチェーンに論理反転値QXを後段のFFに出力する反転値接続経路が設けられていることを認識しておらず、任意のデータパターンをスキャンFFへ入力することができない。また、スキャンチェーンのどの位置に反転値接続経路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第3者が、スキャンチェーンに反転値接続経路が設けられていることを認識している場合でも、当該反転出力経路がスキャンチェーンのいずれの位置にいくつ設置されているかを認識することは困難である。従って、本実施の形態例におけるLSIは、第3者による、任意のデータパターンのスキャンFFへの入力を困難にし、スキャンチェーンを悪用した内部情報の改竄等を抑止することができる。
【0041】
次に、図5の波形図2Bについて説明する。図3の波形図1Bと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、前回のクロックの立ち上がり時における組み合わせ回路の出力値が保持される(32x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、FFf1〜f4に保持された値がスキャンアウト端子SOに出力される。
【0042】
ただし、この例では、スキャンイネーブル信号SEがHレベルに変更された後1クロック目t3、FFf3には、FFf2に保持された値「0」の論理反転値QX「1」が入力される。続く2クロック目t4では、初めFFf1に保持されていた値「1」の論理反転値QX「0」がFF3に入力され、前クロックで論理反転済みのFFf3からの出力値「1」がFFf4に入力される。この結果、初め、FFf1〜f4に保持されていた値(32x)のうち、FFf1、f2に保持されていた値が論理反転され、スキャンアウト端子SOに出力される。この例でも、論理反転値QXを出力するFFf2がスキャンチェーンの途中に設置されていることにより、一部のFFf1、f2に保持されていた値のみが論理反転されスキャンアウト端子SOに出力される。
【0043】
しかし、スキャンテストを行うユーザーは、スキャンチェーンにおいてFFf2の論理反転値QXがFFf3に出力されることを予め認識しているため、スキャンアウト端子SOに出力されたデータパターンをFFf2の論理反転値出力による変更前の値に復元することができる。そして、ユーザーは、復元後のデータパターンに基づいて、組み合わせ回路の処理が適切に行われたか否かを検証することができる。
【0044】
その一方、第3者は、スキャンチェーンに論理反転値QXを後段のFFに出力する反転値接続経路が設けられていることを認識しておらず、FFに保持された通りの値を取得することができない。また、スキャンチェーンのどの位置に反転値接続経路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第3者が、スキャンチェーンに反転値接続経路が設けられていることを認識している場合でも、当該反転出力経路がスキャンチェーンのいずれの位置にいくつ設置されているかを認識することは困難である。このため、第3者が、反転出力経路によって変更されたデータパターンに基づいて、FFに保持された元の値を復元することは困難である。従って、本実施の形態例におけるLSIは、第3者による、FFに保持された内部情報の取得を困難にし、スキャンチェーンを悪用した内部情報の漏洩等を抑止することができる。
【0045】
以上のようにして、本実施の形態例におけるLSIは、接続経路がFFの論理反転値QX(反転出力値)を後段のFFに出力する反転値接続経路を有することによって、スキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄を抑止することができる。一方、ユーザーは、スキャンチェーンに設けられた反転値接続経路の数及び設置位置を認識していることにより、当該反転値接続経路による値の変更を想定したデータパターンを生成すると共に、スキャンアウト端子SOに出力されたデータパターンを当該反転値接続経路による変更前の値に復元することができる。これにより、本実施の形態例におけるLSIは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報の改竄及び漏洩を抑止することができる。
【0046】
また、本実施の形態例におけるLSIは、第1の実施の形態例のように、接続経路に別途、論理演算回路(図4の論理演算回路I1)を設ける必要がない。これにより、本実施の形態例におけるLSIは、LSIのレイアウトパターンに基づいた、第3者によるスキャンチェーンの接続経路の解析をより困難にする。従って、本実施の形態例におけるLSIは、第3者による内部情報の改竄及び漏洩をより効果的に抑止することができる。
【0047】
なお、第1、2の実施の形態例において、接続経路が論理反転回路I1、または、反転値接続経路をひとつ有するLSIを例示した。しかし、スキャンチェーンは、論理反転回路、反転値接続経路のいずれかまたは両方を複数、組み合わせて有してもよい。
【0048】
図6は、論理反転回路及び反転値接続経路を複数有するスキャンチェーンの一例である。同図において、スキャンチェーンSC1は、3つの論理反転回路I2〜I4を有し、スキャンチェーンSC2は、論理反転値QXを出力する3つのスキャンFFsf11〜sff13を有する。そして、スキャンチェーンSC3は、2つの論理反転回路I5、I6と、論理反転値QXを出力するスキャンFFsf14とを組み合わせて有する。
【0049】
例えば、第3者は、任意のデータパターンをスキャンチェーンに入出力させ、前後のデータパターンの変移を分析することによって、スキャンチェーンに設けられた論理反転回路及び反転値接続経路の設置状態の解析(スキャンチェーンの接続経路の解析)を行う。しかし、膨大なFFを有するスキャンチェーンに論理反転回路及び反転値接続経路が、分散して複数、設置されることにより、データパターンの変移内容がより複雑化し、スキャンチェーンの解析がより困難になる。従って、本実施の形態例におけるLSIは、スキャンチェーンの接続経路に、論理反転回路及び反転値接続経路を分散して複数配置することにより、接続経路の解析をより困難にし、内部情報の改竄及び漏洩の抑止効果を向上させることができる。
【0050】
[第3の実施の形態例]
第3の実施の形態例におけるLSIは、複数のFFとを有するユーザー回路と、テストモード(以下、スキャンモード)時に複数のFFを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、複数のFFのうちいずれかのFFの非反転出力値と所定値とを入力とし、AND演算回路、OR演算回路、XOR演算回路、NAND演算回路、NOR演算回路、XNOR演算回路のいずれかの論理演算を行う論理演算回路を有する。なお、複数のFFのうち、他のFFについては、非反転出力値が論理演算されることなく後段のFFに出力される。
【0051】
これにより、LSIは、スキャンモード時、FFに入力されるデータパターンを変更させることができると共に、FFに保持された値を変更して出力させることができる。また、LSIは、第3者によるスキャンチェーンの解析を困難にし、内部情報の漏洩及び改竄をより効果的に抑止することができる。
【0052】
具体的に、本実施の形態例では、スキャンチェーンの接続経路が、FFf2からの出力値(非反転出力値)と擬似乱数値(所定値)との排他的論理和(以下、XOR)演算を行う論理演算回路を有する場合を例示する。ただし、論理演算回路の行う演算はXOR演算に限定されるものではなく、AND演算、OR演算、NAND演算、NOR演算、XNOR演算等のいずれかであってもよい。また、所定値についても擬似乱数値に限定されるものではなく、固定値や所定のパターンに基づく値であってもよい。
【0053】
図7は、FFf2の出力値(非反転出力値)と擬似乱数値(所定値)とのXOR演算を行う論理演算回路X1を有するスキャンチェーンの一例と、その波形図4A、4Bとを表す図である。このため、同図の論理演算回路X1は、擬似乱数値とFFf2の出力値とが同一である場合は「0」を、異なる場合は「1」を、FFf3に出力する。擬似乱数値は、擬似乱数生成回路LFによって生成され、論理演算回路X1に出力される。また、論理演算回路X1はスキャンチェーンの接続経路に設けられているため、スキャンモードの場合にのみ適用され、ユーザモードの処理には影響しない。
【0054】
図8は、擬似乱数生成回路LFの一例を表す図である。同図の擬似乱数生成回路LFは、複数のレジスタfx0〜fxfと、論理演算回路X11〜X13とを有する線形帰還シフトレジスタである。レジスタfx0〜fxfの取りうる状態は有限個であるため、周期的なパターンで乱数値(0または1)が出力される。これにより、ユーザーは、擬似乱数生成回路LFから出力される値の出力パターンを予め認識することができる。しかし、第3者が、擬似乱数生成回路LFから出力される乱数値のパターンを特定するには工数を要し、困難である。なお、擬似乱数生成回路LFは、同図の例に限定されるものではない。例えば、ユーザーは、出力される擬似乱数値のパターンの特定をより困難にするために、LSIに複数の擬似乱数生成回路LFを備え、適用する擬似乱数生成回路LFを定期的に切り替えてもよい。
【0055】
図7に戻り、波形図4Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図4BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。以下、波形図に基づいて具体的に説明する。
【0056】
まず、波形図4Aについて説明する。図3の波形図1Aと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、例えば、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(41x)。この状態で、スキャンイネーブル信号がHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、スキャンイン端子SIからデータパターン1010がFFf1〜f4に入力される。
【0057】
ただし、この例では、スキャンイネーブル信号がHレベルに変更された後3クロック目t1、FFf3には、論理演算回路X1による、FFf2から出力されたデータパターンの初めの値「1」と擬似乱数値「0」とのXOR演算結果値「1」が出力される。続く4クロック目t2では、FFf4には、前クロックでラッチした論理演算回路X1の結果値「1」がFFf3か出力されると共に、FFf3には、論理演算回路X1による、FFf2から出力されたデータパターンの2番目の値「0」と擬似乱数値「1」とのXOR演算結果値「1」が出力される。この結果、データパターンが全て入力された時、FFf3、f4にはデータパターンの初め2つの値と擬似乱数値との演算結果値が保持される(41y)。この例でも、論理演算回路X1がスキャンチェーンの途中に設置されていることにより、入力されたデータパターンの一部のみが論理演算結果値に変更される。
【0058】
このように、スキャンチェーンの接続経路に論理演算回路X1が設けられていることにより、FFf1〜f4にセットされた値は、データパターン1010から変更(1110)される。しかし、スキャンテストを行うユーザーは、FFf2とFFf3の間に論理演算回路X1が設けられていること、及び、その演算内容、擬似乱数値のパターンを予め認識していることから、論理演算回路X1による値の変更を予め想定したデータパターンを用意し、スキャンテストを行うことができる。
【0059】
その一方、第3者は、仮にスキャンチェーンの接続経路に論理演算回路X1が設けられていることを認識している場合であっても、論理演算回路X1の演算内容及び設置位置、擬似乱数値のパターンを特定し、論理演算回路X1による値の変更を予め想定したデータパターンを生成することは困難である。従って、本実施の形態例におけるLSIは、スキャンチェーンを構成するFFへの第3者による任意のデータパターンの入力をより困難にし、スキャンチェーンを悪用した内部情報の改竄等をより効果的に抑止することができる。
【0060】
次に、図7のFFf1〜f4に保持された値がスキャンアウト端子SOに出力される波形図4Bについて説明する。図3の波形図1Bと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(42x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、FFf1〜f4に保持された値がスキャンアウト端子SOに出力される。
【0061】
ただし、この例では、スキャンイネーブル信号がHレベルに変更された後1クロック目t3、FFf3には、論理演算回路X1による、FFf2からの出力値「0」と擬似乱数値「0」とのXOR演算結果値「0」が出力される。続く2クロック目t4では、FFf4には、前クロックでラッチした論理演算回路X1の結果値「0」がFFf3から出力されると共に、FFf3には、論理演算回路X1による、FFf2からの出力値「1」と擬似乱数値「1」との演算結果値「0」が出力される。この結果、初め、FFf1〜f4に保持されていた値(42x)のうち、FFf1、f2に保持されていた値が演算結果値に変更されてスキャンアウト端子SOに出力される。この例でも、論理演算回路X1がスキャンチェーンの途中に設置されていることにより、一部のFFf1、f2に保持された値のみが演算結果値に変更されスキャンアウト端子SOに出力される。
【0062】
しかし、スキャンテストを行うユーザーは、FFf2とFFf3の間に論理演算回路X1が設けられていること、及び、その演算内容、擬似乱数値のパターンを予め認識していることから、スキャンアウト端子SOに出力されたデータパターンから、論理演算回路X1による変更前の各FFの値を復元することができる。そして、ユーザーは、復元後のデータパターンに基づいて、組み合わせ回路の処理が適切に行われたか否かを検証することができる。
【0063】
その一方、第3者は、仮にスキャンチェーンの接続経路に論理演算回路X1が設けられていることを認識している場合であっても、論理演算回路X1の演算内容及び設置位置、擬似乱数値のパターンを特定し、論理演算回路X1による変更前の各FFの値を復元することは困難である。従って、本実施の形態例におけるLSIは、スキャンチェーンを構成するFFに保持された内部情報の第3者による取得を困難にし、スキャンチェーンを悪用した内部情報の漏洩等をより効果的に抑止することができる。
【0064】
以上のようにして、本実施の形態例におけるLSIは、接続経路が、FFの出力値(非反転出力値)と所定値(擬似乱数値)とを論理演算して出力する論理演算回路を有することによって、スキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄の抑止効果を向上させることができる。一方、ユーザーは、接続経路における論理演算回路の設置状態を認識していることにより、当該論理演算回路による値の変更を想定したデータパターンを生成すると共に、スキャンアウト端子SOに出力されたデータパターンを当該論理演算回路による変更前の値に復元することができる。これにより、本実施の形態例におけるLSIは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報の改竄及び漏洩をより効果的に抑止することができる。
【0065】
[第4の実施の形態例]
第4の実施の形態例におけるLSIは、第1のクロックに同期して動作する複数のFFを有するユーザー回路と、テストモード時に、複数のFFを接続して第1のクロックに同期してシフト動作するスキャンチェーンを構成する接続経路と、所定値と第1のクロックとを論理演算し第2のクロックを出力するクロック生成回路とを有する。そして、複数のFFのうちいずれかのFFは、テストモード(以下、スキャンモード)時には第2のクロックに同期して動作し、ユーザモード時には第1のクロックに同期して動作する。なお、複数のFFのうち、他のFFについては、スキャンモード時についても、第1のクロックに同期して動作する。
【0066】
これにより、LSIは、スキャンモード時、FFに入力されるデータパターンの一部を省略または変更させることができると共に、FFに保持された値を一部省略または変更して出力させることができる。また、LSIは、第3者によるスキャンチェーンの解析を困難にし、内部情報の漏洩及び改竄をより効果的に抑止することができる。
【0067】
具体的に、本実施の形態例では、クロック生成回路が、第1のクロックと擬似乱数値(所定値)とをXOR演算(論理演算)した第2のクロックを出力する場合を例示する。ただし、論理演算は、XOR演算に限定されるものではなく、AND演算、OR演算、NAND演算、NOR演算、XNOR演算等のいずれかであってもよい。また、所定値についても擬似乱数値に限定されるものではなく、固定値や所定のパターンに基づく値であってもよい。
【0068】
図9は、クロック信号CK1(第1のクロック)とタイミングの異なるクロック信号CK2(第2のクロック)に同期して動作するFFf3を有するスキャンチェーンの一例である。同図において、他のFFf1、f2、f4は第1のクロック信号CK1に同期して動作する。また、同図のスキャンチェーンは、擬似乱数生成回路LFから出力された擬似乱数値と、クロック信号CK1とをXOR演算しクロック信号CK2を出力する論理演算回路X2(クロック生成回路)を有する。論理演算回路X2はスキャンチェーンの接続経路に設けられているため、FFf3は、ユーザモード時にはクロック信号CK1に同期して動作する。以下、波形図に基づいて具体的に説明する。
【0069】
図10は、図9のスキャンチェーンの波形図5A、5Bを表す図である。波形図5Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図5BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0070】
まず、クロック信号CK2について説明する。この例において、論理演算回路X2は、クロック信号CK1と擬似乱数値とが異なる場合、Hレベルのクロック信号CK2をFFf3に出力する。例えば、図10のタイミングt5において、論理演算回路X2は、Lレベルのクロック信号CK1と擬似乱数値「1」とに基づいて、Hレベルのクロック信号CK2を出力する。続いて、タイミングt6では、クロック信号CK1がHレベルに遷移することにより、論理演算回路X2は、擬似乱数値「0」とのXOR演算に基づいてHレベルのクロック信号CK2を継続して出力する。そして、タイミングt7では、クロック信号CK1がLレベルに遷移することにより、擬似乱数値「0」とのXOR演算に基づいて、クロック信号CK2はLレベルに遷移する。このように、FFf3に供給されるクロック信号CK2は、クロック信号CK1と異なるタイミングで遷移する。
【0071】
図10の波形図5Aにおいて、具体的に、スキャンイネーブル信号がHレベルに変更された後、3回目のクロック信号の立ち上がり時t8、FFf2は、データパターンの初めの値「1」をFFf3に出力する。ただし、タイミングt8において、クロック信号CK2はLレベルであるため、FFf3はFFf2から出力された値「1」を取得しない。そして、タイミングt9でクロック信号CK2がHレベルに遷移すると、FFf3はFFf2からの出力値を取得する。しかし、FFf2からの出力値は、既にデータパターンの2番目の値「0」に遷移している。このため、FFf3は2番目の値「0」を取得することになり、データパターンの初めの値s1はスキップされることになる。そして、タイミングt10において、FFf4はデータパターンの初めの値ではなく2番目の値を取得することになる。
【0072】
このように、FFf3はクロック信号CK2に、他のFFf1、f2、f4はクロック信号CK1に同期して処理を行うため、データパターンの一部の値が省かれることにより変更されFFに入力されることがある。この例では、データパターンの初めの値s1が省かれ、FFf1〜f4にセットされた値は、データパターン1010から変更(0010)される(51y)。しかし、スキャンテストを行うユーザーは、各FFが同期するクロック信号CK1、CK2を認識しているため、データパターンの値の変更を認識することができる。このため、ユーザーは、値の変更を予め想定してデータパターンを用意し、スキャンテストを行うことができる。
【0073】
その一方、第3者は、仮にスキャンチェーンを構成する一部のFFが、その他のFFと異なるクロック信号に同期して処理を行うことを認識している場合であっても、当該クロック信号を生成する演算回路の内容、及び、擬似乱数値のパターンを特定し、値の変更を予め想定したデータパターンを生成することは困難である。従って、本実施の形態例におけるLSIは、スキャンチェーンを構成するFFへの第3者による任意のデータパターンの入力をより困難にし、スキャンチェーンを悪用した内部情報の改竄等をより効果的に抑止することができる。
【0074】
次に、図9のFFf1〜f4に保持された値をスキャンアウト端子SOに出力する波形図5Bについて説明する。具体的に、スキャンイネーブル信号がHレベルに変更された後1回目のクロック信号の立ち上がり時t11、FFf2は保持していた値「0」をFFf3に出力する。ただし、タイミングt8において、クロック信号CK2はLレベルであるため、FFf3はFFf2から出力された値「1」を取得しない。そして、タイミングt12でクロック信号CK2がHレベルに遷移すると、FFf3はFFf2からの出力値を取得する。しかし、FFf2からの出力値は、既に、FFf1に保持されていた値「1」に遷移している。このため、FFf3は、FFf1に保持されていた値「1」を取得することになり、FFf2に保持されていた値「0」s2はスキップされる。このように、FFf3が異なるクロック信号CK2と同期することにより、一部のFFに保持されていた値が出力されないことがある。
【0075】
しかし、スキャンテストを行うユーザーは、各FFが同期するクロック信号CK1、CK2を認識しているため、一部のFFに保持されていた値の省略による出力値の変更を認識することができる。このため、ユーザーは、いずれのFFの値が省略されたかを認識した上で、有効な値に基づいて組み合わせ回路の検証を行うことができる。
【0076】
その一方、第3者は、仮にスキャンチェーンを構成する一部のFFが、その他のFFと異なるクロック信号に同期して処理を行うことを認識している場合であっても、当該クロック信号を生成する演算回路の内容、及び、擬似乱数値のパターンを特定し、いずれのFFに保持された値が省略されるかを特定することは困難である。従って、本実施の形態例におけるLSIは、スキャンチェーンを構成するFFに保持された内部情報の第3者による取得をより困難にし、スキャンチェーンを悪用した内部情報の漏洩等をより効果的に抑止することができる。
【0077】
以上のようにして、本実施の形態例におけるLSIは、スキャンモード時に他のFFと異なるクロック信号に同期して動作するFFを有することによって、スキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄をより困難にし、抑止効果を向上させることができる。一方、ユーザーは、当該FFによる値の変更を予め想定したデータパターンを生成すると共に、スキャンアウト端子SOに出力されたデータパターンのうち省略された値を認識することができる。これにより、本実施の形態例におけるLSIは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報を改竄及び漏洩の抑止効果をさらに向上させることができる。
【0078】
なお、図9のスキャンチェーンに、さらに、ひとつまたは複数の論理演算回路が組み合わせて設けられていてもよい。これにより、本実施の形態例におけるLSIは、第3者によるスキャンチェーンの解析をより困難にすることができる。
【0079】
図11は、さらに、論理反転回路I10が設けられた図9のスキャンチェーンの一例を表す図である。同図において、異なるクロック信号CK2に同期するFFf3の出力値が論理反転を行う論理演算回路I10によってさらに論理反転されFFf4に出力される。
【0080】
図12は、図11のスキャンチェーンの波形図を表す図である。同図の波形図6Aように、FFf4は、クロックCK1の立ち上がり時t21に、FFf3に保持された値「0」の論理反転値「1」をラッチする。また、同図の波形図6Bにおいても同様に、FFf4は、クロックCK1の立ち上がり時、FFf3に保持された値の論理反転値をラッチする。これにより、第3者がスキャンチェーンの解析を目的として任意のデータパターンをFFに入出力して検証を行う場合、出力されるデータパターンがより複雑に変化する。この結果、スキャンチェーンの解析がより困難になり、内部情報を改竄及び漏洩の抑止効果が向上する。
【0081】
[第5の実施の形態例]
第5の実施の形態例におけるLSIは、複数のFFとを有するユーザー回路と、テストモード(以下、スキャンモード)時に複数のFFを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、製品出荷前は第1の値と複数のFFのうちいずれかのFFの非反転出力値との論理演算値が当該非反転出力値に、製品出荷後は第2の値と非反転出力値との論理演算値が一定値になる論理演算を行う論理演算回路を有する。この所定値は、製品出荷前は第1の値に、製品出荷後は前記第1の値とは異なる第2の値に設定される。なお、複数のFFのうち、他のFFについては、非反転出力値が論理演算されることなく後段のFFに出力される。
【0082】
これにより、LSIは、製品出荷前のスキャンモード時は、データパターンのFFへの入力、及び、FFに保持された値の出力を可能にし、製品出荷後のスキャンモード時には、所定値との論理演算によって、データパターンのFFへの入力値、及び、FFに保持された値をリセットすることができる。これにより、LSIは、第3者のスキャンチェーンの悪用による内部情報の漏洩及び改竄を回避する。
【0083】
具体的に、本実施の形態例では、接続経路が、製品出荷前はHレベルの信号(第1の値)と前段のFFからの出力値との論理積(以下、AND)演算の結果、当該出力値を、製品出荷後はLレベルの信号(第2の値)と出力値とのAND演算の結果、値「0」(一定値)を出力する論理演算回路を有する場合を例示する。
【0084】
図13は、製品出荷後のスキャンモード時、データパターンの入力のFFへの入力値、及び、FFに保持された値をリセットする論理演算回路X3を有するスキャンチェーンの一例を表す図である。論理演算回路X3は、プルダウン回路PDから出力されたテスト信号TEとFFf2の出力値との論理積(以下、AND)演算を行う。この例において、プルダウン回路PDは、製品出荷前はHレベルの信号を、製品出荷後はLレベルの信号を出力する。従って、論理演算回路X3は、製品出荷前は、FFf2からの出力値とHレベルのテスト信号TEとのAND演算に基づいて常にFFf2から出力値を、製品出荷後には、FFf2からの出力値とLレベルのテスト信号TEとのAND演算に基づいて常に値「0」をFFf3に出力する。以下、波形図に基づいて具体的に説明する。
【0085】
図14は、図13のスキャンチェーンの波形図7A、7Bを表す図である。波形図7Aは製品出荷前、波形図7Bは製品出荷後におけるスキャンモード時、スキャンイン端子SIからデータパターンを入力する場合の波形図である。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0086】
図14の波形図7Aにおいて、製品出荷前のスキャンモード時、テスト信号TEはHレベルに、スキャンイネーブル信号SEはHレベルに設定される。そこで、論理演算回路X3は、クロックの立ち上がり毎に、FFf2から出力された値とHレベルのテスト信号TEとのAND演算の結果、FFf2からの出力値と同じ値をFFf3に出力する。これにより、製品出荷前のスキャンモード時、各FFf1〜f4にはスキャンイン端子SIからデータパターン1010が入力される(71y)。
【0087】
一方、波形図7Bにおいて、製品出荷後のスキャンモードとして、テスト信号TEはLレベルに、スキャンイネーブル信号SEはHレベルに設定される。そこで、論理演算回路X3は、クロックの立ち上がり毎に、FFf2から出力された値とLレベルのテスト信号TEとのAND演算の結果、値「0」をFFf3に出力する。これにより、製品出荷後のスキャンモード時、FFf3、f4には常に値「0」が入力される(72y)。
【0088】
なお、図14の波形図では、スキャンイン端子SIからデータパターンを入力する場合を例示したが、各FFf1〜f4に保持された値をスキャンアウト端子SOに出力する場合についても同様である。波形図7Aで前述したとおり、製品出荷前のスキャンモード時、論理演算回路X3は、常にFFf2から出力された値をFFf3に出力する。従って、FFf1〜f4に保持された値はリセットされることなく、スキャンアウト端子SOに出力される。一方、製品出荷後のスキャンモード時、論理演算回路X3は、常に値「0」をFFf3に出力する。従って、FFf1〜f4に保持された値のうち、FFf1、f2に保持された値は、値「0」にリセットされてスキャンアウト端子SOに出力される。
【0089】
また、本実施の形態例におけるリセットを行う論理演算回路は、AND演算回路に限定されるものではない。続いて、製品出荷後のスキャンモード時に、データパターンの入力のFFへの入力値、及び、FFに保持された値をリセットする別のスキャンチェーンを例示する。
【0090】
図15は、製品出荷のスキャンモード時、データパターンの入力のFFへの入力値、及び、FFに保持された値をリセットする別の論理演算回路X4を有するスキャンチェーンの一例を表す図である。論理演算回路X4は、プルアップ回路PUから出力されたテスト信号TEとFFf2の出力値との論理和(以下、OR)演算を行う。この例において、プルアップ回路PUは、製品出荷前はLレベルの信号を、製品出荷後はHレベルの信号を出力する。従って、論理演算回路X4は、製品出荷前は、FFf2からの出力値とLレベルのテスト信号TEとのOR演算により常にFFf2から出力値を、製品出荷後は、FFf2からの出力値とHレベルのテスト信号TEとのOR演算に基づいて常に値「1」をFFf3に出力する。以下、波形図に基づいて具体的に説明する。
【0091】
図16は、図15のスキャンチェーンの波形図8A、8Bを表す図である。波形図8Aは製品出荷前、波形図8Bは製品出荷後におけるスキャンモード時、スキャンイン端子SIからデータパターンを入力する場合の波形図である。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0092】
図16の波形図8Aにおいて、製品出荷前のスキャンモードとして、テスト信号TEはLレベルに、スキャンイネーブル信号SEはHレベルに設定される。そこで、論理演算回路X4は、クロックの立ち上がり毎に、FFf2から出力された値とLレベルに固定されたテスト信号TEとのOR演算の結果、FFf2からの出力値と同じ値をFFf3に出力する。これにより、製品出荷前のスキャンモード時、各FFf1〜f4にはスキャンイン端子SIからデータパターン1010が入力される(81y)。
【0093】
一方、波形図8Bにおいて、製品出荷後のスキャンモードとして、テスト信号TEはHレベルに、スキャンイネーブル信号SEはHレベルに設定される。そこで、論理演算回路X4は、クロックの立ち上がり毎に、FFf2から出力された値とLレベルに固定されたテスト信号TEとをOR演算の結果、値「1」をFFf3に出力する。この結果、製品出荷後のスキャンモード時、FFf3、f4には常に値「1」が入力される(82y)。
【0094】
このように、本実施の形態例におけるLSIは、製品出荷前のスキャンモード時には、接続経路に設けられた論理演算回路に前段のFFからの出力値を出力させることによって、データパターンのFFへの入力、及び、FFに保持された値の出力を可能にし、スキャンテストを可能にする。その一方、製品出荷後のスキャンモード時には、本実施の形態例におけるLSIは、接続経路に設けられた論理演算回路に一定値を出力させることによって、データパターンのFFへの入力値、及び、FFに保持された値をリセットする。これにより、第3者は、任意のデータパターンをスキャンFFに入力することができず、スキャンFFに保持された値を出力することができない。従って、本実施の形態例におけるLSIは、製品出荷前は前段のFFからの出力値を、製品出荷後は固定値を出力する論理演算回路を有することによって、製品出荷前にスキャンテストを可能にしながら、製品出荷後はスキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄を回避する。
【0095】
以上の実施の形態をまとめると、次の付記のとおりである。
【0096】
(付記1)
複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【0097】
(付記2)
付記1において、
前記論理演算回路は、論理否定回路である半導体装置。
【0098】
(付記3)
付記1において、
前記接続経路は、前記論理演算回路、または、前記反転値出力経路のいずれかまたは両方を分散して複数有する半導体装置。
【0099】
(付記4)
付記1において、
前記論理演算回路は、前記フリップフロップの非反転出力値と所定値とを入力とし、AND演算回路、OR演算回路、XOR演算回路、NAND演算回路、NOR演算回路、XNOR演算回路のいずれかである半導体装置。
【0100】
(付記5)
付記4において、
前記所定値は、擬似乱数値である半導体装置。
【0101】
(付記6)
付記4において、
前記所定値は、製品出荷前は第1の値に、製品出荷後は前記第1の値とは異なる第2の値に設定され、
前記論理演算回路は、前記製品出荷前は前記第1の値と前記非反転出力値との論理演算値が当該非反転出力値に、前記製品出荷後は前記第2の値と前記非反転出力値との論理演算値が一定値になる論理演算を行う半導体装置。
【0102】
(付記7)
第1のクロックに同期して動作する複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続して前記第1のクロックに同期してシフト動作するスキャンチェーンを構成する接続経路と、
所定値と前記第1のクロックとを論理演算し第2のクロックを出力するクロック生成回路とを有し、
前記複数のフリップフロップのうちいずれかの前記フリップフロップは、テストモード時には前記第2のクロックに同期して動作し、ユーザモード時には前記第1のクロックに同期して動作する半導体装置。
【0103】
(付記8)
付記7において、
前記クロック生成回路の前記論理演算は、AND演算、OR演算、XOR演算、NAND演算、NOR演算、XNOR演算のいずれかである半導体装置。
【0104】
(付記9)
付記7または8において、
前記所定値は、擬似乱数値である半導体装置。
【0105】
(付記10)
付記7乃至9のいずれかにおいて、さらに、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【符号の説明】
【0106】
SI:スキャンイン端子、SO:スキャンアウト端子、UI:入力端子、UO:出力端子、SE:スキャンイネーブル信号、sf1〜sff:スキャンフリップフロップ、c1〜c3:組み合わせ回路、m1〜m4:マルチプレクサ、f1〜f4:フリップフロップ
【技術分野】
【0001】
本発明は、半導体装置に関する。
【背景技術】
【0002】
従来から、半導体装置(LSI:Large Scale Integration)のテスト手法としてスキャンテストが知られている。図1は、スキャンテスト機能を有するLSIの構成の一例を表す図である。同図のLSIは、データ処理や演算処理を実行する複数の回路素子からなる組み合わせ回路c1〜c8と、組み合わせ回路c1〜c8に接続されたスキャンフリップフロップsf1〜sffとを有する。スキャンフリップフロップ(以下、FF)sf1〜sffは、マルチプレクサ機能を有する。
【0003】
また、図1のLSIは、通常時のユーザモードと、スキャンテスト時のスキャンモードとを有する。ユーザモードの場合、組み合わせ回路c1〜c8は、スキャンフリップフロップsf1〜sffと共に、入力端子UIからの入力データに対して処理を行い、処理結果を出力端子UOに出力する。
【0004】
一方、スキャンモードの場合、スキャンイン端子SIからスキャンアウト端子SOの間がシリアルに接続され、スキャンチェーンが構成される。ユーザーは、スキャンイン端子SIからデータパターンを入力し、組み合わせ回路c1〜c8への任意の入力値としてスキャンFFsf1〜sffにセットすることができる。また、ユーザーは、スキャンFFsf1〜sffに保持された組み合わせ回路c1〜c8の処理結果を示す値を、スキャンチェーンをシフトさせることによって、スキャンアウト端子SOから出力させることができる。ユーザーは、出力されたデータパターンを検証することによって、組み合わせ回路c1〜c8の処理が適切に行われたか否かを判定する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−2841号公報
【特許文献2】特開2009−505059号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところが、図1のようなLSIは、スキャンチェーンを構成することによりスキャンテストを可能にする反面、スキャンFFsf1〜sffに保持される値の出力及び外部からの入力を可能にする。例えば、組み合わせ回路c1〜c8が課金情報やパスワード等の内部情報を扱うような場合、スキャンFFsf1〜sffに内部情報が保持されることがある。そして、スキャンFFsf1〜sffに保持された値が第3者に不正に入出力されることによって、内部情報の漏洩や改竄を招くことがある。しかしながら、LSIがスキャンチェーンを有していない場合、ユーザーは、組み合わせ回路c1〜c8の検証を適切に行うことが困難である。
【0007】
スキャンテストが可能なLSIについて、データの漏洩及び改竄を防止するために、様々な技術が開示されている(特許文献1、2)。
【0008】
本発明は、スキャンテストを可能にしながら内部データの漏洩及び改竄を防止する半導体装置を提供する。
【課題を解決するための手段】
【0009】
第1の側面は、複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する。
【発明の効果】
【0010】
第1の側面によれば、スキャンテストを可能にしながら内部データの漏洩及び改竄を防止する。
【図面の簡単な説明】
【0011】
【図1】スキャンテスト機能を有するLSIの構成の一例を表す図である。
【図2】スキャンFFを具体的に説明する図である。
【図3】図2のスキャンチェーンの波形図を表す図である。
【図4】論理反転演算回路を有するスキャンチェーンの一例と、波形図を表す図である。
【図5】論理反転値が出力されるFFを有するスキャンチェーンの一例と波形図を表す図である。
【図6】論理反転回路及び論理反転値が出力されるFFを複数有するスキャンチェーンの一例を表す図である。
【図7】論理演算回路を有するスキャンチェーンの一例と波形図を表す図である。
【図8】擬似乱数生成回路の一例を表す図である。
【図9】異なるクロック信号に基づくFFを有するスキャンチェーンの一例である。
【図10】図9のスキャンチェーンの波形図を表す図である。
【図11】さらに論理反転回路を有する図9のスキャンチェーンの一例を表す図である。
【図12】図11のスキャンチェーンの波形図を表す図である。
【図13】製品出荷後、FFへの入出力値をリセットするスキャンチェーンの一例を表す図である。
【図14】図13のスキャンチェーンの波形図を表す図である。
【図15】図13のスキャンチェーンの別の形態例を表す図である。
【図16】図15のスキャンチェーンの波形図を表す図である。
【発明を実施するための形態】
【0012】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0013】
図2は、図1のスキャンFFsf1〜sffを具体的に説明する図である。同図では、4つのスキャンFFsf1〜sf4が例示されており、各スキャンFFsf1〜sf4は、マルチプレクサm1〜m4とフリップフロップ(以下、FF)f1〜f4とをそれぞれ有する。図示されていないが、FFf1〜f4及び組み合わせ回路c1〜c3には、クロック信号が供給される。FFf1〜f4は、クロック信号の立ち上がり時に、保持していた値をQ端子から出力すると共に、マルチプレクサm1〜m4から出力された値をD端子から取得する。
【0014】
また、図2において、スキャンイネーブル信号SEは、マルチプレクサm1〜m4への選択信号であり、後続のFFf1〜f4への出力を切り替える。具体的に、マルチプレクサm1〜m4は、スキャンイネーブル信号がHigh(以下、H)レベルのときはスキャンイン信号SIを、Low(以下、L)レベルのときは組み合わせ回路c1〜c3からの出力を選択し、後続のFFf1〜f4に出力する。
【0015】
続いて、ユーザモードとスキャンモード時の動作の相違について説明する。図2において、ユーザモードの場合、スキャンイネーブル信号SEはLレベルに設定される。このため、マルチプレクサm1は入力端子UIからの入力値を、マルチプレクサm2〜m4は前段の組み合わせ回路c1〜c3からの出力値を選択して、後続のFFf1〜f4に出力する。これにより、FFf1〜f4に、入力端子UIからの入力値及び組み合わせ回路c1〜c3からの出力値が供給されると共に、各FFf1〜f4に保持されていた値が、後続の組み合わせ回路c1〜c3及び出力端子UOに出力される。
【0016】
一方、図2においてスキャンモードの場合、スキャンイネーブル信号SEはHレベルに設定される。これにより、マルチプレクサm1はスキャンイン端子SIからの入力値を、マルチプレクサm2〜m4は前段のFFf1〜f3からの出力値を選択して、後続のFFf1〜f4に出力する。つまり、スキャンモードに設定された場合、各FFf1〜f4がシリアルに接続されスキャンチェーンを構成し、シフトレジスタ動作が行われる。これにより、スキャンイン端子SIから入力されたテスト用のデータパターンがFFf1〜f4に入力されると共に、FFf1〜f4に保持された値がスキャンアウト端子SOに出力される。以下、波形図に基づいて、具体的に説明する。
【0017】
図3は、図2のスキャンFFsf1〜sf4の波形図1A、1Bを表す図である。同図の波形図1Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図1BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。スキャンイン端子SIからのデータパターンの入力と、FFf1〜f4が保持する値のスキャンアウト端子SOへの出力は同時に行われるが、別々の波形図に基づいて説明する。なお、この例において、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力するデータパターンは1010であるものとする。
【0018】
まず、図3の波形図1Aについて説明する。同図の波形図1Aは、スキャンイン端子SIからテスト用のデータパターン1010を入力する例を表す。この例において、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、例えば、前回のクロックの立ち上がり時における組み合わせ回路c1〜c3の出力値が保持されている(11x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、クロックの立ち上がり毎に、シフトレジスタ動作が行われる。
【0019】
具体的に、スキャンイネーブル信号がHレベルに変更後1クロック目t0、FFf1にデータパターンの初めの値「1」が入力されると共に、FFf2〜f4に保持された値が後続のFFf3〜f4、スキャンアウト端子SOに出力される。同様にして、スキャンイネーブル信号SEがHレベルに設定されたまま、次のクロックの立ち上がり時、データパターン1010の2番目の値「0」がFFf1に入力されると共に、初めの値「1」はFFf2にシフトされる。この例では、スキャンイネーブル信号SEをHレベルに変更後、4回目のクロックの立ち上がり時t4に、データパターン1010のFFf1〜f4への入力が完了する(11y)。
【0020】
このように、スキャンイン端子SIからデータパターンを入力する場合、スキャンイネーブル信号SEがHレベルに設定されると、クロックの立ち上がり毎に、データパターンがシフトレジスタ動作によってスキャンFFsf1〜sf4に順次入力される。例えば、入力が完了した状態(11y)で、スキャンイネーブル信号がLレベルに変更されると、次のクロックの立ち上がり時に、FFf1〜f4に保持された値が組み合わせ回路c1〜c3に入力され、データパターンに基づく組み合わせ回路の処理が行われる。
【0021】
次に、図3の波形図1Bについて説明する。同図の波形図1Bは、FFf1〜f4に保持された組み合わせ回路の処理結果を示す値が、スキャンアウト端子SOに出力される場合を表す。初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(12x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、次のクロックの立ち上がり時t3に、各FFf1〜f3に保持された値が後続のFFf2〜f4に出力され、FFf4に保持されていた値はスキャンアウト端子SOに出力される。この例では、スキャンイネーブル信号SEをHレベルに変更してから4回目のクロックの立ち上がり時に、FFf1〜f4に保持された値が全てスキャンアウト端子SOに出力される。
【0022】
このように、FFf1〜f4に保持された値をスキャンアウト端子SOに出力する場合、スキャンイネーブル信号SEがHレベルに設定され、クロックの立ち上がり毎に、各FFの値がシフトレジスタ動作によってスキャンアウト端子SOに順次出力される。ユーザーは、FFf1〜f4に保持された組み合わせ回路の処理結果を示す値をスキャンアウト端子SOに出力させて、任意のデータパターンに基づいて組み合わせ回路の処理が適切に行われたか否かを検証する。
【0023】
以上のように、スキャンチェーンを有するLSIは、スキャンイン端子SIから任意のデータパターンをスキャンFFに入力可能にすると共に、スキャンFFに保持された値をスキャンアウト端子SOに出力可能にする。しかしながら、その反面、スキャンFFにパスワードや課金情報等の内部情報が保持されている場合、内部情報の漏洩及び改竄を招く。
【0024】
[第1の実施の形態例]
そこで、第1の実施の形態例におけるLSIは、複数のFFとを有するユーザー回路と、テストモード(以下、スキャンモード)時に複数のFFを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、複数のFFのうちいずれかのFFの非反転出力値を論理演算して出力する論理演算回路を有する。なお、複数のFFのうち、他のFFについては、非反転出力値が論理演算されることなく後段のFFに出力される。これにより、LSIは、スキャンモード時に、FFに入力されるデータパターンを変更させることができると共に、FFに保持された値を変更して出力させることができる。
【0025】
図4は、FFf2の出力値Q(非反転出力値)を論理反転演算する論理反転演算回路I1(論理演算回路)を有するスキャンチェーンの一例と、その波形図2A、2Bとを表す図である。波形図2Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図2BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。同図において、論理反転回路I1はスキャンチェーンの接続経路に設けられているため、スキャンモードの場合にのみ適用され、ユーザモードの処理には影響しない。以下、波形図に基づいて具体的に説明する。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0026】
まず、図4の波形図2Aについて説明する。図3の波形図1Aと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、例えば、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(21x)。この状態で、スキャンイネーブル信号がHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、スキャンイン端子SIからデータパターン1010がFFf1〜f4に入力される。
【0027】
ただし、この例では、スキャンイネーブル信号SEがHレベルに変更された後3クロック目t1、FFf3にはデータパターンの初めの入力値「1」の論理反転値「0」が入力される。続く4クロック目t2、FFf3にはデータパターンの2番目の値「0」の論理反転値「1」が、FFf4には、FFf3から出力された論理反転回路I1で反転済みのデータパターンの初めの値「0」が入力される。この結果、データパターンが全て入力された時、FFf3、f4には論理反転された値が保持される(21y)。この例では、スキャンチェーンの途中(FFf2とFFf3の間)に論理反転回路I1が設けられているため、データパターンの一部の値のみが論理反転される。
【0028】
このように、スキャンチェーンの接続経路に論理反転回路I1が設けられていることにより、FFf1〜f4に入力される値は、データパターン1010から変更(0110)される。しかし、スキャンテストを行うユーザーは、FFf2とFFf3の間に論理反転回路I1が設けられていることを予め認識しているため、論理反転回路I1による一部の値の変更を予め想定したデータパターンを用意し、スキャンテストを行うことができる。
【0029】
その一方、第3者は、スキャンチェーンの接続経路に論理反転回路I1が設けられていることを認識していないため、任意のデータパターンをスキャンFFへ入力することができない。また、スキャンチェーンのどの位置に論理演算回路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第3者が、スキャンチェーンの接続経路に論理反転回路I1が設けられていることを認識している場合でも、論理反転回路I1がスキャンチェーンのいずれの位置にいくつ設置されているかを認識することは困難である。このため、本実施の形態例におけるLSIは、第3者による、任意のデータパターンのスキャンFFへの入力を困難にし、スキャンチェーンを悪用した内部情報の改竄等を抑止することができる。
【0030】
次に、図4のFFf1〜f4に保持された値がスキャンアウト端子SOに出力される波形図2Bについて説明する。図3の波形図1Bと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(22x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、FFf1〜f4に保持された値がスキャンアウト端子SOに出力される。
【0031】
ただし、この例では、スキャンイネーブル信号SEがHレベルに変更された後1クロック目t3、FFf3には、FFf2に保持された値「0」の論理反転値「1」が入力される。続く2クロック目t4では、初めFFf1に保持されていたFFf2からの出力値「1」が「0」に論理反転されFF3に入力され、前クロックで論理反転済みのFFf3からの出力値「1」がFFf4に入力される。この結果、初め、FFf1〜f4に保持されていた値(22x)のうち、FFf1、f2に保持されていた値が論理反転され、スキャンアウト端子SOに出力される。また、スキャンチェーンの途中(FFf2とFFf3の間)に論理反転回路I1が設けられていることにより、一部のFFf1、f2に保持されていた値のみが論理反転されスキャンアウト端子SOに出力される。
【0032】
しかし、スキャンテストを行うユーザーは、スキャンチェーンを構成するFFf2とFFf3の間に論理反転回路I1が設けられていることを予め認識しているため、スキャンアウト端子SOに出力されたデータパターンを論理反転回路I1による変更前の値に復元することができる。そして、ユーザーは、復元後のデータパターンに基づいて、組み合わせ回路の処理が適切に行われたか否かを検証することができる。
【0033】
その一方、第3者は、スキャンチェーンの接続経路に論理反転回路I1が設けられていることを認識しておらず、FFに保持された通りの値を取得することができない。また、スキャンチェーンのどの位置に論理演算回路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第3者が、スキャンチェーンの接続経路に論理反転回路I1が設けられていることを認識している場合でも、論理反転回路I1がスキャンチェーンのいずれの位置にいくつ設置されたかを認識することは困難である。このため、第3者が、論理反転回路によって変更されたデータパターンに基づいて、FFに保持された元の値を復元することは困難である。従って、本実施の形態例におけるLSIは、第3者による、FFに保持された内部情報の取得を困難にし、スキャンチェーンを悪用した内部情報の漏洩等を抑止することができる。
【0034】
以上のようにして、本実施の形態例におけるLSIは、接続経路が、FFの出力値(非反転出力値)を論理演算(論理反転演算)して出力する論理演算回路を有することによって、スキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄を抑止することができる。一方、ユーザーは、接続経路における論理演算回路の設置状態を認識していることにより、当該論理演算回路による値の変更を想定したデータパターンを生成すると共に、スキャンアウト端子SOに出力されたデータパターンを当該論理演算回路による変更前の値に復元することができる。これにより、本実施の形態例におけるLSIは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報の改竄及び漏洩を抑止することができる。
【0035】
[第2の実施の形態例]
第2の実施の形態例におけるLSIは、複数のFFとを有するユーザー回路と、テストモード(以下、スキャンモード)時に複数のFFを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、複数のFFのうちいずれかのFFの反転出力値を後段のFFに出力する反転値接続経路を有する。なお、複数のFFのうち、他のFFについては、非反転出力値が後段のFFに出力される。これにより、LSIは、スキャンモード時に、FFに入力されるデータパターンを変更させることができると共に、FFに保持された値を変更して出力させることができる。
【0036】
図5は、FFf2の論理反転値QX(反転出力値)を後段のFFf3に出力する接続経路(反転値接続経路)を有するスキャンチェーンの一例と、その波形図3A、3Bとを表す図である。波形図3Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図3BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。同図において、FFf2の論理反転値QXを後段のFFf3に出力する接続経路はスキャンチェーンの接続経路に設けられるため、スキャンモードの場合にのみ適用され、ユーザモードの処理には影響しない。以下、波形図に基づいて具体的に説明する。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0037】
まず、図5の波形図3Aについて説明する。図3の波形図1Aと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、例えば、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(31x)。この状態で、スキャンイネーブル信号がHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、スキャンイン端子SIからデータパターン1010がFFf1〜f4に入力される。
【0038】
ただし、この例では、スキャンイネーブル信号SEがHレベルに変更された後3クロック目t1、FFf3には、FFf2に保持された値「1」の論理反転値QX「0」が入力される。続く4クロック目t2、FFf3にはデータパターンの2番目の値「0」の論理反転値QX「1」が、FFf4には、FFf3から出力されたFFf2で論理反転済みのデータパターンの初めの値「0」が入力される。この結果、図3の波形図2Aと同様にして、データパターンが全て入力された時、FFf3、f4には論理反転された値が保持される(31y)。この例においても、論理反転値QXを出力するFFf2がスキャンチェーンの途中に設置されていることにより、入力されたデータパターンの一部のみが論理反転される。
【0039】
このように、FFf2が論理反転値QXを出力することにより、FFf1〜f4に入力される値は、データパターン1010から変更(0110)される。しかし、スキャンテストを行うユーザーは、スキャンチェーンにおいてFFf2の論理反転値QXがFFf3に出力されることを予め認識しているため、FFf2の論理反転値出力による値の変更を予め想定したデータパターンを用意し、スキャンテストを行うことができる。
【0040】
その一方、第3者は、スキャンチェーンに論理反転値QXを後段のFFに出力する反転値接続経路が設けられていることを認識しておらず、任意のデータパターンをスキャンFFへ入力することができない。また、スキャンチェーンのどの位置に反転値接続経路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第3者が、スキャンチェーンに反転値接続経路が設けられていることを認識している場合でも、当該反転出力経路がスキャンチェーンのいずれの位置にいくつ設置されているかを認識することは困難である。従って、本実施の形態例におけるLSIは、第3者による、任意のデータパターンのスキャンFFへの入力を困難にし、スキャンチェーンを悪用した内部情報の改竄等を抑止することができる。
【0041】
次に、図5の波形図2Bについて説明する。図3の波形図1Bと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、前回のクロックの立ち上がり時における組み合わせ回路の出力値が保持される(32x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、FFf1〜f4に保持された値がスキャンアウト端子SOに出力される。
【0042】
ただし、この例では、スキャンイネーブル信号SEがHレベルに変更された後1クロック目t3、FFf3には、FFf2に保持された値「0」の論理反転値QX「1」が入力される。続く2クロック目t4では、初めFFf1に保持されていた値「1」の論理反転値QX「0」がFF3に入力され、前クロックで論理反転済みのFFf3からの出力値「1」がFFf4に入力される。この結果、初め、FFf1〜f4に保持されていた値(32x)のうち、FFf1、f2に保持されていた値が論理反転され、スキャンアウト端子SOに出力される。この例でも、論理反転値QXを出力するFFf2がスキャンチェーンの途中に設置されていることにより、一部のFFf1、f2に保持されていた値のみが論理反転されスキャンアウト端子SOに出力される。
【0043】
しかし、スキャンテストを行うユーザーは、スキャンチェーンにおいてFFf2の論理反転値QXがFFf3に出力されることを予め認識しているため、スキャンアウト端子SOに出力されたデータパターンをFFf2の論理反転値出力による変更前の値に復元することができる。そして、ユーザーは、復元後のデータパターンに基づいて、組み合わせ回路の処理が適切に行われたか否かを検証することができる。
【0044】
その一方、第3者は、スキャンチェーンに論理反転値QXを後段のFFに出力する反転値接続経路が設けられていることを認識しておらず、FFに保持された通りの値を取得することができない。また、スキャンチェーンのどの位置に反転値接続経路が設置されるかによっても、データパターンの変更内容は異なる。仮に、第3者が、スキャンチェーンに反転値接続経路が設けられていることを認識している場合でも、当該反転出力経路がスキャンチェーンのいずれの位置にいくつ設置されているかを認識することは困難である。このため、第3者が、反転出力経路によって変更されたデータパターンに基づいて、FFに保持された元の値を復元することは困難である。従って、本実施の形態例におけるLSIは、第3者による、FFに保持された内部情報の取得を困難にし、スキャンチェーンを悪用した内部情報の漏洩等を抑止することができる。
【0045】
以上のようにして、本実施の形態例におけるLSIは、接続経路がFFの論理反転値QX(反転出力値)を後段のFFに出力する反転値接続経路を有することによって、スキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄を抑止することができる。一方、ユーザーは、スキャンチェーンに設けられた反転値接続経路の数及び設置位置を認識していることにより、当該反転値接続経路による値の変更を想定したデータパターンを生成すると共に、スキャンアウト端子SOに出力されたデータパターンを当該反転値接続経路による変更前の値に復元することができる。これにより、本実施の形態例におけるLSIは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報の改竄及び漏洩を抑止することができる。
【0046】
また、本実施の形態例におけるLSIは、第1の実施の形態例のように、接続経路に別途、論理演算回路(図4の論理演算回路I1)を設ける必要がない。これにより、本実施の形態例におけるLSIは、LSIのレイアウトパターンに基づいた、第3者によるスキャンチェーンの接続経路の解析をより困難にする。従って、本実施の形態例におけるLSIは、第3者による内部情報の改竄及び漏洩をより効果的に抑止することができる。
【0047】
なお、第1、2の実施の形態例において、接続経路が論理反転回路I1、または、反転値接続経路をひとつ有するLSIを例示した。しかし、スキャンチェーンは、論理反転回路、反転値接続経路のいずれかまたは両方を複数、組み合わせて有してもよい。
【0048】
図6は、論理反転回路及び反転値接続経路を複数有するスキャンチェーンの一例である。同図において、スキャンチェーンSC1は、3つの論理反転回路I2〜I4を有し、スキャンチェーンSC2は、論理反転値QXを出力する3つのスキャンFFsf11〜sff13を有する。そして、スキャンチェーンSC3は、2つの論理反転回路I5、I6と、論理反転値QXを出力するスキャンFFsf14とを組み合わせて有する。
【0049】
例えば、第3者は、任意のデータパターンをスキャンチェーンに入出力させ、前後のデータパターンの変移を分析することによって、スキャンチェーンに設けられた論理反転回路及び反転値接続経路の設置状態の解析(スキャンチェーンの接続経路の解析)を行う。しかし、膨大なFFを有するスキャンチェーンに論理反転回路及び反転値接続経路が、分散して複数、設置されることにより、データパターンの変移内容がより複雑化し、スキャンチェーンの解析がより困難になる。従って、本実施の形態例におけるLSIは、スキャンチェーンの接続経路に、論理反転回路及び反転値接続経路を分散して複数配置することにより、接続経路の解析をより困難にし、内部情報の改竄及び漏洩の抑止効果を向上させることができる。
【0050】
[第3の実施の形態例]
第3の実施の形態例におけるLSIは、複数のFFとを有するユーザー回路と、テストモード(以下、スキャンモード)時に複数のFFを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、複数のFFのうちいずれかのFFの非反転出力値と所定値とを入力とし、AND演算回路、OR演算回路、XOR演算回路、NAND演算回路、NOR演算回路、XNOR演算回路のいずれかの論理演算を行う論理演算回路を有する。なお、複数のFFのうち、他のFFについては、非反転出力値が論理演算されることなく後段のFFに出力される。
【0051】
これにより、LSIは、スキャンモード時、FFに入力されるデータパターンを変更させることができると共に、FFに保持された値を変更して出力させることができる。また、LSIは、第3者によるスキャンチェーンの解析を困難にし、内部情報の漏洩及び改竄をより効果的に抑止することができる。
【0052】
具体的に、本実施の形態例では、スキャンチェーンの接続経路が、FFf2からの出力値(非反転出力値)と擬似乱数値(所定値)との排他的論理和(以下、XOR)演算を行う論理演算回路を有する場合を例示する。ただし、論理演算回路の行う演算はXOR演算に限定されるものではなく、AND演算、OR演算、NAND演算、NOR演算、XNOR演算等のいずれかであってもよい。また、所定値についても擬似乱数値に限定されるものではなく、固定値や所定のパターンに基づく値であってもよい。
【0053】
図7は、FFf2の出力値(非反転出力値)と擬似乱数値(所定値)とのXOR演算を行う論理演算回路X1を有するスキャンチェーンの一例と、その波形図4A、4Bとを表す図である。このため、同図の論理演算回路X1は、擬似乱数値とFFf2の出力値とが同一である場合は「0」を、異なる場合は「1」を、FFf3に出力する。擬似乱数値は、擬似乱数生成回路LFによって生成され、論理演算回路X1に出力される。また、論理演算回路X1はスキャンチェーンの接続経路に設けられているため、スキャンモードの場合にのみ適用され、ユーザモードの処理には影響しない。
【0054】
図8は、擬似乱数生成回路LFの一例を表す図である。同図の擬似乱数生成回路LFは、複数のレジスタfx0〜fxfと、論理演算回路X11〜X13とを有する線形帰還シフトレジスタである。レジスタfx0〜fxfの取りうる状態は有限個であるため、周期的なパターンで乱数値(0または1)が出力される。これにより、ユーザーは、擬似乱数生成回路LFから出力される値の出力パターンを予め認識することができる。しかし、第3者が、擬似乱数生成回路LFから出力される乱数値のパターンを特定するには工数を要し、困難である。なお、擬似乱数生成回路LFは、同図の例に限定されるものではない。例えば、ユーザーは、出力される擬似乱数値のパターンの特定をより困難にするために、LSIに複数の擬似乱数生成回路LFを備え、適用する擬似乱数生成回路LFを定期的に切り替えてもよい。
【0055】
図7に戻り、波形図4Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図4BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。以下、波形図に基づいて具体的に説明する。
【0056】
まず、波形図4Aについて説明する。図3の波形図1Aと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、例えば、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(41x)。この状態で、スキャンイネーブル信号がHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、スキャンイン端子SIからデータパターン1010がFFf1〜f4に入力される。
【0057】
ただし、この例では、スキャンイネーブル信号がHレベルに変更された後3クロック目t1、FFf3には、論理演算回路X1による、FFf2から出力されたデータパターンの初めの値「1」と擬似乱数値「0」とのXOR演算結果値「1」が出力される。続く4クロック目t2では、FFf4には、前クロックでラッチした論理演算回路X1の結果値「1」がFFf3か出力されると共に、FFf3には、論理演算回路X1による、FFf2から出力されたデータパターンの2番目の値「0」と擬似乱数値「1」とのXOR演算結果値「1」が出力される。この結果、データパターンが全て入力された時、FFf3、f4にはデータパターンの初め2つの値と擬似乱数値との演算結果値が保持される(41y)。この例でも、論理演算回路X1がスキャンチェーンの途中に設置されていることにより、入力されたデータパターンの一部のみが論理演算結果値に変更される。
【0058】
このように、スキャンチェーンの接続経路に論理演算回路X1が設けられていることにより、FFf1〜f4にセットされた値は、データパターン1010から変更(1110)される。しかし、スキャンテストを行うユーザーは、FFf2とFFf3の間に論理演算回路X1が設けられていること、及び、その演算内容、擬似乱数値のパターンを予め認識していることから、論理演算回路X1による値の変更を予め想定したデータパターンを用意し、スキャンテストを行うことができる。
【0059】
その一方、第3者は、仮にスキャンチェーンの接続経路に論理演算回路X1が設けられていることを認識している場合であっても、論理演算回路X1の演算内容及び設置位置、擬似乱数値のパターンを特定し、論理演算回路X1による値の変更を予め想定したデータパターンを生成することは困難である。従って、本実施の形態例におけるLSIは、スキャンチェーンを構成するFFへの第3者による任意のデータパターンの入力をより困難にし、スキャンチェーンを悪用した内部情報の改竄等をより効果的に抑止することができる。
【0060】
次に、図7のFFf1〜f4に保持された値がスキャンアウト端子SOに出力される波形図4Bについて説明する。図3の波形図1Bと同様に、初め、スキャンイネーブル信号SEはLレベルに設定され、各FFf1〜f4には、前回のクロックの立ち上がり時に保持された組み合わせ回路からの出力値が保持されている(42x)。この状態で、スキャンイネーブル信号SEがHレベルに変更されると、クロックの立ち上がり毎に、図3と同様に、シフトレジスタ動作によって、FFf1〜f4に保持された値がスキャンアウト端子SOに出力される。
【0061】
ただし、この例では、スキャンイネーブル信号がHレベルに変更された後1クロック目t3、FFf3には、論理演算回路X1による、FFf2からの出力値「0」と擬似乱数値「0」とのXOR演算結果値「0」が出力される。続く2クロック目t4では、FFf4には、前クロックでラッチした論理演算回路X1の結果値「0」がFFf3から出力されると共に、FFf3には、論理演算回路X1による、FFf2からの出力値「1」と擬似乱数値「1」との演算結果値「0」が出力される。この結果、初め、FFf1〜f4に保持されていた値(42x)のうち、FFf1、f2に保持されていた値が演算結果値に変更されてスキャンアウト端子SOに出力される。この例でも、論理演算回路X1がスキャンチェーンの途中に設置されていることにより、一部のFFf1、f2に保持された値のみが演算結果値に変更されスキャンアウト端子SOに出力される。
【0062】
しかし、スキャンテストを行うユーザーは、FFf2とFFf3の間に論理演算回路X1が設けられていること、及び、その演算内容、擬似乱数値のパターンを予め認識していることから、スキャンアウト端子SOに出力されたデータパターンから、論理演算回路X1による変更前の各FFの値を復元することができる。そして、ユーザーは、復元後のデータパターンに基づいて、組み合わせ回路の処理が適切に行われたか否かを検証することができる。
【0063】
その一方、第3者は、仮にスキャンチェーンの接続経路に論理演算回路X1が設けられていることを認識している場合であっても、論理演算回路X1の演算内容及び設置位置、擬似乱数値のパターンを特定し、論理演算回路X1による変更前の各FFの値を復元することは困難である。従って、本実施の形態例におけるLSIは、スキャンチェーンを構成するFFに保持された内部情報の第3者による取得を困難にし、スキャンチェーンを悪用した内部情報の漏洩等をより効果的に抑止することができる。
【0064】
以上のようにして、本実施の形態例におけるLSIは、接続経路が、FFの出力値(非反転出力値)と所定値(擬似乱数値)とを論理演算して出力する論理演算回路を有することによって、スキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄の抑止効果を向上させることができる。一方、ユーザーは、接続経路における論理演算回路の設置状態を認識していることにより、当該論理演算回路による値の変更を想定したデータパターンを生成すると共に、スキャンアウト端子SOに出力されたデータパターンを当該論理演算回路による変更前の値に復元することができる。これにより、本実施の形態例におけるLSIは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報の改竄及び漏洩をより効果的に抑止することができる。
【0065】
[第4の実施の形態例]
第4の実施の形態例におけるLSIは、第1のクロックに同期して動作する複数のFFを有するユーザー回路と、テストモード時に、複数のFFを接続して第1のクロックに同期してシフト動作するスキャンチェーンを構成する接続経路と、所定値と第1のクロックとを論理演算し第2のクロックを出力するクロック生成回路とを有する。そして、複数のFFのうちいずれかのFFは、テストモード(以下、スキャンモード)時には第2のクロックに同期して動作し、ユーザモード時には第1のクロックに同期して動作する。なお、複数のFFのうち、他のFFについては、スキャンモード時についても、第1のクロックに同期して動作する。
【0066】
これにより、LSIは、スキャンモード時、FFに入力されるデータパターンの一部を省略または変更させることができると共に、FFに保持された値を一部省略または変更して出力させることができる。また、LSIは、第3者によるスキャンチェーンの解析を困難にし、内部情報の漏洩及び改竄をより効果的に抑止することができる。
【0067】
具体的に、本実施の形態例では、クロック生成回路が、第1のクロックと擬似乱数値(所定値)とをXOR演算(論理演算)した第2のクロックを出力する場合を例示する。ただし、論理演算は、XOR演算に限定されるものではなく、AND演算、OR演算、NAND演算、NOR演算、XNOR演算等のいずれかであってもよい。また、所定値についても擬似乱数値に限定されるものではなく、固定値や所定のパターンに基づく値であってもよい。
【0068】
図9は、クロック信号CK1(第1のクロック)とタイミングの異なるクロック信号CK2(第2のクロック)に同期して動作するFFf3を有するスキャンチェーンの一例である。同図において、他のFFf1、f2、f4は第1のクロック信号CK1に同期して動作する。また、同図のスキャンチェーンは、擬似乱数生成回路LFから出力された擬似乱数値と、クロック信号CK1とをXOR演算しクロック信号CK2を出力する論理演算回路X2(クロック生成回路)を有する。論理演算回路X2はスキャンチェーンの接続経路に設けられているため、FFf3は、ユーザモード時にはクロック信号CK1に同期して動作する。以下、波形図に基づいて具体的に説明する。
【0069】
図10は、図9のスキャンチェーンの波形図5A、5Bを表す図である。波形図5Aはスキャンイン端子SIからテスト用のデータパターンが入力される場合の波形図であり、波形図5BはFFf1〜f4が保持する値がスキャンアウト端子SOに出力される場合の波形図である。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0070】
まず、クロック信号CK2について説明する。この例において、論理演算回路X2は、クロック信号CK1と擬似乱数値とが異なる場合、Hレベルのクロック信号CK2をFFf3に出力する。例えば、図10のタイミングt5において、論理演算回路X2は、Lレベルのクロック信号CK1と擬似乱数値「1」とに基づいて、Hレベルのクロック信号CK2を出力する。続いて、タイミングt6では、クロック信号CK1がHレベルに遷移することにより、論理演算回路X2は、擬似乱数値「0」とのXOR演算に基づいてHレベルのクロック信号CK2を継続して出力する。そして、タイミングt7では、クロック信号CK1がLレベルに遷移することにより、擬似乱数値「0」とのXOR演算に基づいて、クロック信号CK2はLレベルに遷移する。このように、FFf3に供給されるクロック信号CK2は、クロック信号CK1と異なるタイミングで遷移する。
【0071】
図10の波形図5Aにおいて、具体的に、スキャンイネーブル信号がHレベルに変更された後、3回目のクロック信号の立ち上がり時t8、FFf2は、データパターンの初めの値「1」をFFf3に出力する。ただし、タイミングt8において、クロック信号CK2はLレベルであるため、FFf3はFFf2から出力された値「1」を取得しない。そして、タイミングt9でクロック信号CK2がHレベルに遷移すると、FFf3はFFf2からの出力値を取得する。しかし、FFf2からの出力値は、既にデータパターンの2番目の値「0」に遷移している。このため、FFf3は2番目の値「0」を取得することになり、データパターンの初めの値s1はスキップされることになる。そして、タイミングt10において、FFf4はデータパターンの初めの値ではなく2番目の値を取得することになる。
【0072】
このように、FFf3はクロック信号CK2に、他のFFf1、f2、f4はクロック信号CK1に同期して処理を行うため、データパターンの一部の値が省かれることにより変更されFFに入力されることがある。この例では、データパターンの初めの値s1が省かれ、FFf1〜f4にセットされた値は、データパターン1010から変更(0010)される(51y)。しかし、スキャンテストを行うユーザーは、各FFが同期するクロック信号CK1、CK2を認識しているため、データパターンの値の変更を認識することができる。このため、ユーザーは、値の変更を予め想定してデータパターンを用意し、スキャンテストを行うことができる。
【0073】
その一方、第3者は、仮にスキャンチェーンを構成する一部のFFが、その他のFFと異なるクロック信号に同期して処理を行うことを認識している場合であっても、当該クロック信号を生成する演算回路の内容、及び、擬似乱数値のパターンを特定し、値の変更を予め想定したデータパターンを生成することは困難である。従って、本実施の形態例におけるLSIは、スキャンチェーンを構成するFFへの第3者による任意のデータパターンの入力をより困難にし、スキャンチェーンを悪用した内部情報の改竄等をより効果的に抑止することができる。
【0074】
次に、図9のFFf1〜f4に保持された値をスキャンアウト端子SOに出力する波形図5Bについて説明する。具体的に、スキャンイネーブル信号がHレベルに変更された後1回目のクロック信号の立ち上がり時t11、FFf2は保持していた値「0」をFFf3に出力する。ただし、タイミングt8において、クロック信号CK2はLレベルであるため、FFf3はFFf2から出力された値「1」を取得しない。そして、タイミングt12でクロック信号CK2がHレベルに遷移すると、FFf3はFFf2からの出力値を取得する。しかし、FFf2からの出力値は、既に、FFf1に保持されていた値「1」に遷移している。このため、FFf3は、FFf1に保持されていた値「1」を取得することになり、FFf2に保持されていた値「0」s2はスキップされる。このように、FFf3が異なるクロック信号CK2と同期することにより、一部のFFに保持されていた値が出力されないことがある。
【0075】
しかし、スキャンテストを行うユーザーは、各FFが同期するクロック信号CK1、CK2を認識しているため、一部のFFに保持されていた値の省略による出力値の変更を認識することができる。このため、ユーザーは、いずれのFFの値が省略されたかを認識した上で、有効な値に基づいて組み合わせ回路の検証を行うことができる。
【0076】
その一方、第3者は、仮にスキャンチェーンを構成する一部のFFが、その他のFFと異なるクロック信号に同期して処理を行うことを認識している場合であっても、当該クロック信号を生成する演算回路の内容、及び、擬似乱数値のパターンを特定し、いずれのFFに保持された値が省略されるかを特定することは困難である。従って、本実施の形態例におけるLSIは、スキャンチェーンを構成するFFに保持された内部情報の第3者による取得をより困難にし、スキャンチェーンを悪用した内部情報の漏洩等をより効果的に抑止することができる。
【0077】
以上のようにして、本実施の形態例におけるLSIは、スキャンモード時に他のFFと異なるクロック信号に同期して動作するFFを有することによって、スキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄をより困難にし、抑止効果を向上させることができる。一方、ユーザーは、当該FFによる値の変更を予め想定したデータパターンを生成すると共に、スキャンアウト端子SOに出力されたデータパターンのうち省略された値を認識することができる。これにより、本実施の形態例におけるLSIは、スキャンテストを可能にしながら、スキャンチェーンの悪用による内部情報を改竄及び漏洩の抑止効果をさらに向上させることができる。
【0078】
なお、図9のスキャンチェーンに、さらに、ひとつまたは複数の論理演算回路が組み合わせて設けられていてもよい。これにより、本実施の形態例におけるLSIは、第3者によるスキャンチェーンの解析をより困難にすることができる。
【0079】
図11は、さらに、論理反転回路I10が設けられた図9のスキャンチェーンの一例を表す図である。同図において、異なるクロック信号CK2に同期するFFf3の出力値が論理反転を行う論理演算回路I10によってさらに論理反転されFFf4に出力される。
【0080】
図12は、図11のスキャンチェーンの波形図を表す図である。同図の波形図6Aように、FFf4は、クロックCK1の立ち上がり時t21に、FFf3に保持された値「0」の論理反転値「1」をラッチする。また、同図の波形図6Bにおいても同様に、FFf4は、クロックCK1の立ち上がり時、FFf3に保持された値の論理反転値をラッチする。これにより、第3者がスキャンチェーンの解析を目的として任意のデータパターンをFFに入出力して検証を行う場合、出力されるデータパターンがより複雑に変化する。この結果、スキャンチェーンの解析がより困難になり、内部情報を改竄及び漏洩の抑止効果が向上する。
【0081】
[第5の実施の形態例]
第5の実施の形態例におけるLSIは、複数のFFとを有するユーザー回路と、テストモード(以下、スキャンモード)時に複数のFFを接続してスキャンチェーンを構成する接続経路とを有する。そして、接続経路は、製品出荷前は第1の値と複数のFFのうちいずれかのFFの非反転出力値との論理演算値が当該非反転出力値に、製品出荷後は第2の値と非反転出力値との論理演算値が一定値になる論理演算を行う論理演算回路を有する。この所定値は、製品出荷前は第1の値に、製品出荷後は前記第1の値とは異なる第2の値に設定される。なお、複数のFFのうち、他のFFについては、非反転出力値が論理演算されることなく後段のFFに出力される。
【0082】
これにより、LSIは、製品出荷前のスキャンモード時は、データパターンのFFへの入力、及び、FFに保持された値の出力を可能にし、製品出荷後のスキャンモード時には、所定値との論理演算によって、データパターンのFFへの入力値、及び、FFに保持された値をリセットすることができる。これにより、LSIは、第3者のスキャンチェーンの悪用による内部情報の漏洩及び改竄を回避する。
【0083】
具体的に、本実施の形態例では、接続経路が、製品出荷前はHレベルの信号(第1の値)と前段のFFからの出力値との論理積(以下、AND)演算の結果、当該出力値を、製品出荷後はLレベルの信号(第2の値)と出力値とのAND演算の結果、値「0」(一定値)を出力する論理演算回路を有する場合を例示する。
【0084】
図13は、製品出荷後のスキャンモード時、データパターンの入力のFFへの入力値、及び、FFに保持された値をリセットする論理演算回路X3を有するスキャンチェーンの一例を表す図である。論理演算回路X3は、プルダウン回路PDから出力されたテスト信号TEとFFf2の出力値との論理積(以下、AND)演算を行う。この例において、プルダウン回路PDは、製品出荷前はHレベルの信号を、製品出荷後はLレベルの信号を出力する。従って、論理演算回路X3は、製品出荷前は、FFf2からの出力値とHレベルのテスト信号TEとのAND演算に基づいて常にFFf2から出力値を、製品出荷後には、FFf2からの出力値とLレベルのテスト信号TEとのAND演算に基づいて常に値「0」をFFf3に出力する。以下、波形図に基づいて具体的に説明する。
【0085】
図14は、図13のスキャンチェーンの波形図7A、7Bを表す図である。波形図7Aは製品出荷前、波形図7Bは製品出荷後におけるスキャンモード時、スキャンイン端子SIからデータパターンを入力する場合の波形図である。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0086】
図14の波形図7Aにおいて、製品出荷前のスキャンモード時、テスト信号TEはHレベルに、スキャンイネーブル信号SEはHレベルに設定される。そこで、論理演算回路X3は、クロックの立ち上がり毎に、FFf2から出力された値とHレベルのテスト信号TEとのAND演算の結果、FFf2からの出力値と同じ値をFFf3に出力する。これにより、製品出荷前のスキャンモード時、各FFf1〜f4にはスキャンイン端子SIからデータパターン1010が入力される(71y)。
【0087】
一方、波形図7Bにおいて、製品出荷後のスキャンモードとして、テスト信号TEはLレベルに、スキャンイネーブル信号SEはHレベルに設定される。そこで、論理演算回路X3は、クロックの立ち上がり毎に、FFf2から出力された値とLレベルのテスト信号TEとのAND演算の結果、値「0」をFFf3に出力する。これにより、製品出荷後のスキャンモード時、FFf3、f4には常に値「0」が入力される(72y)。
【0088】
なお、図14の波形図では、スキャンイン端子SIからデータパターンを入力する場合を例示したが、各FFf1〜f4に保持された値をスキャンアウト端子SOに出力する場合についても同様である。波形図7Aで前述したとおり、製品出荷前のスキャンモード時、論理演算回路X3は、常にFFf2から出力された値をFFf3に出力する。従って、FFf1〜f4に保持された値はリセットされることなく、スキャンアウト端子SOに出力される。一方、製品出荷後のスキャンモード時、論理演算回路X3は、常に値「0」をFFf3に出力する。従って、FFf1〜f4に保持された値のうち、FFf1、f2に保持された値は、値「0」にリセットされてスキャンアウト端子SOに出力される。
【0089】
また、本実施の形態例におけるリセットを行う論理演算回路は、AND演算回路に限定されるものではない。続いて、製品出荷後のスキャンモード時に、データパターンの入力のFFへの入力値、及び、FFに保持された値をリセットする別のスキャンチェーンを例示する。
【0090】
図15は、製品出荷のスキャンモード時、データパターンの入力のFFへの入力値、及び、FFに保持された値をリセットする別の論理演算回路X4を有するスキャンチェーンの一例を表す図である。論理演算回路X4は、プルアップ回路PUから出力されたテスト信号TEとFFf2の出力値との論理和(以下、OR)演算を行う。この例において、プルアップ回路PUは、製品出荷前はLレベルの信号を、製品出荷後はHレベルの信号を出力する。従って、論理演算回路X4は、製品出荷前は、FFf2からの出力値とLレベルのテスト信号TEとのOR演算により常にFFf2から出力値を、製品出荷後は、FFf2からの出力値とHレベルのテスト信号TEとのOR演算に基づいて常に値「1」をFFf3に出力する。以下、波形図に基づいて具体的に説明する。
【0091】
図16は、図15のスキャンチェーンの波形図8A、8Bを表す図である。波形図8Aは製品出荷前、波形図8Bは製品出荷後におけるスキャンモード時、スキャンイン端子SIからデータパターンを入力する場合の波形図である。図3の波形図と同様に、スキャンチェーンは4つのスキャンFFsf1〜sf4を有し、入力されるデータパターンは1010である。
【0092】
図16の波形図8Aにおいて、製品出荷前のスキャンモードとして、テスト信号TEはLレベルに、スキャンイネーブル信号SEはHレベルに設定される。そこで、論理演算回路X4は、クロックの立ち上がり毎に、FFf2から出力された値とLレベルに固定されたテスト信号TEとのOR演算の結果、FFf2からの出力値と同じ値をFFf3に出力する。これにより、製品出荷前のスキャンモード時、各FFf1〜f4にはスキャンイン端子SIからデータパターン1010が入力される(81y)。
【0093】
一方、波形図8Bにおいて、製品出荷後のスキャンモードとして、テスト信号TEはHレベルに、スキャンイネーブル信号SEはHレベルに設定される。そこで、論理演算回路X4は、クロックの立ち上がり毎に、FFf2から出力された値とLレベルに固定されたテスト信号TEとをOR演算の結果、値「1」をFFf3に出力する。この結果、製品出荷後のスキャンモード時、FFf3、f4には常に値「1」が入力される(82y)。
【0094】
このように、本実施の形態例におけるLSIは、製品出荷前のスキャンモード時には、接続経路に設けられた論理演算回路に前段のFFからの出力値を出力させることによって、データパターンのFFへの入力、及び、FFに保持された値の出力を可能にし、スキャンテストを可能にする。その一方、製品出荷後のスキャンモード時には、本実施の形態例におけるLSIは、接続経路に設けられた論理演算回路に一定値を出力させることによって、データパターンのFFへの入力値、及び、FFに保持された値をリセットする。これにより、第3者は、任意のデータパターンをスキャンFFに入力することができず、スキャンFFに保持された値を出力することができない。従って、本実施の形態例におけるLSIは、製品出荷前は前段のFFからの出力値を、製品出荷後は固定値を出力する論理演算回路を有することによって、製品出荷前にスキャンテストを可能にしながら、製品出荷後はスキャンチェーンを利用した第3者によるLSIの内部情報の漏洩及び改竄を回避する。
【0095】
以上の実施の形態をまとめると、次の付記のとおりである。
【0096】
(付記1)
複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【0097】
(付記2)
付記1において、
前記論理演算回路は、論理否定回路である半導体装置。
【0098】
(付記3)
付記1において、
前記接続経路は、前記論理演算回路、または、前記反転値出力経路のいずれかまたは両方を分散して複数有する半導体装置。
【0099】
(付記4)
付記1において、
前記論理演算回路は、前記フリップフロップの非反転出力値と所定値とを入力とし、AND演算回路、OR演算回路、XOR演算回路、NAND演算回路、NOR演算回路、XNOR演算回路のいずれかである半導体装置。
【0100】
(付記5)
付記4において、
前記所定値は、擬似乱数値である半導体装置。
【0101】
(付記6)
付記4において、
前記所定値は、製品出荷前は第1の値に、製品出荷後は前記第1の値とは異なる第2の値に設定され、
前記論理演算回路は、前記製品出荷前は前記第1の値と前記非反転出力値との論理演算値が当該非反転出力値に、前記製品出荷後は前記第2の値と前記非反転出力値との論理演算値が一定値になる論理演算を行う半導体装置。
【0102】
(付記7)
第1のクロックに同期して動作する複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続して前記第1のクロックに同期してシフト動作するスキャンチェーンを構成する接続経路と、
所定値と前記第1のクロックとを論理演算し第2のクロックを出力するクロック生成回路とを有し、
前記複数のフリップフロップのうちいずれかの前記フリップフロップは、テストモード時には前記第2のクロックに同期して動作し、ユーザモード時には前記第1のクロックに同期して動作する半導体装置。
【0103】
(付記8)
付記7において、
前記クロック生成回路の前記論理演算は、AND演算、OR演算、XOR演算、NAND演算、NOR演算、XNOR演算のいずれかである半導体装置。
【0104】
(付記9)
付記7または8において、
前記所定値は、擬似乱数値である半導体装置。
【0105】
(付記10)
付記7乃至9のいずれかにおいて、さらに、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【符号の説明】
【0106】
SI:スキャンイン端子、SO:スキャンアウト端子、UI:入力端子、UO:出力端子、SE:スキャンイネーブル信号、sf1〜sff:スキャンフリップフロップ、c1〜c3:組み合わせ回路、m1〜m4:マルチプレクサ、f1〜f4:フリップフロップ
【特許請求の範囲】
【請求項1】
複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【請求項2】
請求項1において、
前記論理演算回路は、論理否定回路である半導体装置。
【請求項3】
請求項1において、
前記接続経路は、前記論理演算回路、または、前記反転値出力経路のいずれかまたは両方を分散して複数有する半導体装置。
【請求項4】
請求項1において、
前記論理演算回路は、前記フリップフロップの非反転出力値と所定値とを入力とし、AND演算回路、OR演算回路、XOR演算回路、NAND演算回路、NOR演算回路、XNOR演算回路のいずれかである半導体装置。
【請求項5】
第1のクロックに同期して動作する複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続して前記第1のクロックに同期してシフト動作するスキャンチェーンを構成する接続経路と、
所定値と前記第1のクロックとを論理演算し第2のクロックを出力するクロック生成回路とを有し、
前記複数のフリップフロップのうちいずれかの前記フリップフロップは、テストモード時には前記第2のクロックに同期して動作し、ユーザモード時には前記第1のクロックに同期して動作する半導体装置。
【請求項6】
請求項5において、さらに、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【請求項1】
複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続してスキャンチェーンを構成する接続経路とを有し、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【請求項2】
請求項1において、
前記論理演算回路は、論理否定回路である半導体装置。
【請求項3】
請求項1において、
前記接続経路は、前記論理演算回路、または、前記反転値出力経路のいずれかまたは両方を分散して複数有する半導体装置。
【請求項4】
請求項1において、
前記論理演算回路は、前記フリップフロップの非反転出力値と所定値とを入力とし、AND演算回路、OR演算回路、XOR演算回路、NAND演算回路、NOR演算回路、XNOR演算回路のいずれかである半導体装置。
【請求項5】
第1のクロックに同期して動作する複数のフリップフロップを有するユーザー回路と、
テストモード時に、前記複数のフリップフロップを接続して前記第1のクロックに同期してシフト動作するスキャンチェーンを構成する接続経路と、
所定値と前記第1のクロックとを論理演算し第2のクロックを出力するクロック生成回路とを有し、
前記複数のフリップフロップのうちいずれかの前記フリップフロップは、テストモード時には前記第2のクロックに同期して動作し、ユーザモード時には前記第1のクロックに同期して動作する半導体装置。
【請求項6】
請求項5において、さらに、
前記接続経路は、前記複数のフリップフロップのうちいずれかの前記フリップフロップの非反転出力値を論理演算して出力する論理演算回路、または、前記複数のフリップフロップのうちいずれかの前記フリップフロップの反転出力値を後段のフリップフロップに出力する反転値接続経路を有する半導体装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2013−2848(P2013−2848A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−131544(P2011−131544)
【出願日】平成23年6月13日(2011.6.13)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願日】平成23年6月13日(2011.6.13)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]