JP2010266417A - 半導体集積回路、情報処理装置、および情報処理方法、並びにプログラム - Google Patents
半導体集積回路、情報処理装置、および情報処理方法、並びにプログラム Download PDFInfo
- Publication number
- JP2010266417A JP2010266417A JP2009120411A JP2009120411A JP2010266417A JP 2010266417 A JP2010266417 A JP 2010266417A JP 2009120411 A JP2009120411 A JP 2009120411A JP 2009120411 A JP2009120411 A JP 2009120411A JP 2010266417 A JP2010266417 A JP 2010266417A
- Authority
- JP
- Japan
- Prior art keywords
- data
- flip
- integrated circuit
- value
- scan chain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318544—Scanning methods, algorithms and patterns
- G01R31/318547—Data generators or compressors
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C29/30—Accessing single arrays
- G11C29/32—Serial access; Scan testing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Tests Of Electronic Circuits (AREA)
- Semiconductor Integrated Circuits (AREA)
Abstract
【課題】集積回路の既存のフリップフロップを利用して乱数やID生成を行う構成を実現する。
【解決手段】LSIなどの集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップから、電源投入時のフリップフロップ設定値を入力するデータ収集部を設けた。データ収集部は、スキャンチェーンまたは独立の接続パスを経由して電源投入時のフリップフロップ設定値を入力し、入力値に基づく乱数または固定データとしてのID生成処理を実行する。この構成により、LSI等の集積回路に形成された既存のフリップフロップをそのまま利用して乱数やIDの生成を行うことが可能となる。
【選択図】図5
【解決手段】LSIなどの集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップから、電源投入時のフリップフロップ設定値を入力するデータ収集部を設けた。データ収集部は、スキャンチェーンまたは独立の接続パスを経由して電源投入時のフリップフロップ設定値を入力し、入力値に基づく乱数または固定データとしてのID生成処理を実行する。この構成により、LSI等の集積回路に形成された既存のフリップフロップをそのまま利用して乱数やIDの生成を行うことが可能となる。
【選択図】図5
Description
本発明は、半導体集積回路、情報処理装置、および情報処理方法、並びにプログラムに関する。さらに詳細には、乱数あるいはIDなどのデータ生成処理を実行する半導体集積回路、情報処理装置、および情報処理方法、並びにプログラムに関する。
電子機器におけるデジタル回路にはビット値の保持や転送処理回路としてのフリップフロップ(FF)が多数利用されている。フリップフロップ(FF)は、ビット値(0,1)を保持し、ビット値入出力を高速に行うことが可能であり、例えばキャッシュメモリやレジスタ、その他の電子回路を構成する素子として多く利用されている。なお、以下、本明細書においてフリップフロップをFFとして略して表現する場合がある。
フリップフロップ(FF)は、0または1のビット値を設定することが可能であるが、電源投入時に設定される値は、多くの場合0または1のいずれか一方に定まるものではなく不確定値になることが知られている。
非特許文献1は、このフリップフロップ(FF)の電源投入時の設定値の不確定性を利用した乱数生成器を開示している。非特許文献1は、線形帰還シフトレジスタ(LFSR:linear feedback register)や、セルオートマトンシフトレジスタ(CASR:cellular automata shift register)を構成するフリップフロップ(FF)を用いた乱数生成器を開示している。LFSRやCASRを動作させるためには、本来、初期値が必要である。非特許文献1に開示された乱数生成器は、状態を保持するFFの電源投入時の不確定値を保持することによって、LFSRやCASRの初期値を電源投入ごとに変動させる構成としている。
また、非特許文献1に記載されたフリップフロップ(FF)と類似する構造をもつ素子としてSRAMのメモリセルがある。SRAMのメモリセルも電源投入時の多くのセルの設定値が不確定値になることが知られている。非特許文献2ではこのSRAMの電源投入時の性質を利用して、不確定値になるセルのうち、ランダムに変動するセルを乱数生成に利用、固定値を示すセルをチップID生成として利用する方法を提案している。
不確定値の生成原理について
上記の非特許文献1,2に開示されているように、FFおよびSRAMメモリセルが電源投入時に不確定値になることはよく知られた事実である。以下、図を参照して不確定値の生成原理について簡単に説明する。
上記の非特許文献1,2に開示されているように、FFおよびSRAMメモリセルが電源投入時に不確定値になることはよく知られた事実である。以下、図を参照して不確定値の生成原理について簡単に説明する。
両者の素子が電源投入時に不確定な値を示すことは、素子の構造に起因している。
図1はD型フリップフロップ(D−FF)の構造を示した図である。図1(a)が全体構造、図1(b)が詳細構造を示している。
図2はSRAMのメモリセルの構造を示した図である。図2(a)が全体構造、図2(b)が1つのメモリセルの詳細構造を示している。
両者ともビット情報0、1を記憶するために、2つのインバータが相互に接続された構造を持っている。図1のインバータ11,12、図2のインバータ21,22である。
図1はD型フリップフロップ(D−FF)の構造を示した図である。図1(a)が全体構造、図1(b)が詳細構造を示している。
図2はSRAMのメモリセルの構造を示した図である。図2(a)が全体構造、図2(b)が1つのメモリセルの詳細構造を示している。
両者ともビット情報0、1を記憶するために、2つのインバータが相互に接続された構造を持っている。図1のインバータ11,12、図2のインバータ21,22である。
図3(a)はフリップフロップ(FF)と、SRAMセルに共通する構造であるインバータ31,32が相互に接続された構造を切り出して示した図である。図3(a)に示すインバータ接続構造において、A、Bそれぞれの電位が(H,L)もしくは(L,H)の2つの安定な状態を持つことができる。FFおよびSRAMセルは、この2つの安定状態を、それぞれをデジタルデータの1と0に対応させることでFF設定値データとして記憶している。
通常動作時はどちらかの安定状態にFF設定値を確定させるため、外部から継続的な電圧印加などの制御が行われるので不確定な値になることはない。しかし、電源投入時の初期的な設定値はトランジスタの製造ばらつきや電圧変動、ノイズなどによって決まるため、どちらの値で安定になるかは素子ごとに異なる。
図3(b)は、図3(a)に示す素子をMOSFETのレベルで表現した図である。この図3(b)において、電源投入時の初期状態、つまり図3(b)に示す構造中の部位[X]の電圧が0からVddへ変化する過程を考える。部位[X]の電圧が0の場合、PMOS41,42ともにONの状態にあるため、A、Bの電位は0である。
電源が投入されると、A、Bの電位も上昇していくが、PMOS41,42の閾値は完全に一致しない場合、閾値の低いPMOS側が先にOFFの状態になる。この場合、AもしくはBのどちらかのOFFになったPMOS側の電位は0に低下していき、最終的にA、Bは(Vdd、0)もしくは(0、Vdd)のどちらかの安定状態に落ち着く。一般に、MOSトランジスタの閾値はトランジスタの製造ばらつきや電圧変動、ノイズなどによって一致しないため、電源投入時の安定値は物理的条件によって決まるため、素子ごとに異なり、不確定になる。
なお、この初期的な設定値は、個々のFFやSRAMセルごとに特性が異なり、電源投入の度に異なる値を示す素子もあり、常に固定の値を示す素子に分けることができる。これは双方のPMOSの閾値と物理的条件によって決まってくる。
このように各FFの値は電源投入の度にランダムな値を示すものと固定の値を示すものとに分かれる。上記の[非特許文献1]の方式ではFFが高々40個程度のFFしか用いていないため、固定値を示すFFが多く含まれるような状況では、十分に乱数を取得できない可能性がある。なお、[非特許文献3]においても同様の問題点の指摘がなされている。この対策としてFFの数を増やすことも考えられるが、実装面積の増大を招くために現実的には厳しい。
[非特許文献2]の構成はFFの代わりにSRAMメモリセルを利用するため、ランダムに変動する不確定なセルを豊富に確保することができる。[非特許文献2]では実験により128bitのランダムビットを取得するために2048bitのメモリセルのデータを必要としたとの結果が示されている。従って従来技術2[非特許文献2]に開示されたメモリセルを用いた構成は、十分なビット数の確保が可能となり、上述した従来技術1[非特許文献1]の問題点は解決される。
しかし、FF、SRAMのメモリセル、いずれの構成を用いた場合でも、これらの構成を利用して生成するデータを暗号処理における乱数や、あるいは演算用データ、認証用データなどに利用する場合、これらのデータは秘密情報であることが多い。従って、生成データは容易に外部に漏洩されない構成とすることが必要となる。従って、上記の各非特許文献に示すような処理構成を利用して、FFやSRAMのメモリセルを利用した乱数取得用の専用回路を設定し、かつこの専用回路を外部にデータが漏洩しないようなセキュア回路とすると、集積回路上の面積の増加やコストアップを引き起こすことになる。
T.E.Tkacik,"A Hardware Random Number Generator",CHES2002,LNCS vol.2523,Springer−Verlag,2003,pp.450−453.
D.E.Holcomb,W.P.Burleson,and K.Fu.,"Initial SRAM state as a fingerprint and source of true random numbers for RFID tags",Conference on RFID Security 07,July 11−13,2007.
M.Dichtl,"How to predict the Output of a Hardware Random Number Generator",CHES2003,LNCS vol.2779,Springer−Verlag,2003,pp.181−188.
本発明は、例えば上述の状況に鑑みてなされたものであり、新たなフリップフロップ(FF)回路を設定することなく、既存のデバイス内のフリップフロップ(FF)を利用した乱数やIDなどのデータ生成を可能とした半導体集積回路、情報処理装置、および情報処理方法、並びにプログラムを提供することを目的とする。
本発明の第1の側面は、
集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップと、
前記スキャンチェーンに接続された複数のフリップフロップの設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集部を有し、
前記データ収集部は、
前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値を入力して、入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行する半導体集積回路にある。
集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップと、
前記スキャンチェーンに接続された複数のフリップフロップの設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集部を有し、
前記データ収集部は、
前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値を入力して、入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行する半導体集積回路にある。
さらに、本発明の半導体集積回路の一実施態様において、前記半導体集積回路は、前記スキャンチェーンを介したスキャンテストを実行するスキャンテストモードと、前記スキャンチェーンを介したデータ収集を実行するデータ収集モードとの切り替え制御を実行する制御部を有し、前記データ収集部は、前記制御部におけるデータ収集モードへの切り替えに応じて、フリップフロップ設定値を入力する。
さらに、本発明の半導体集積回路の一実施態様において、前記制御部は、前記スキャンチェーンに接続された複数のフリップフロップに先行して電源供給可能な構成を有し、前記制御部の制御の下に前記複数のフリップフロップに対する電源投入処理が行われる。
さらに、本発明の半導体集積回路の一実施態様において、前記データ収集部は、電源投入時の複数のフリップフロップの設定値から、特定のフリップフロップ対応の設定値を選択して前記固定データを生成する。
さらに、本発明の半導体集積回路の一実施態様において、前記データ収集部は、電源投入時に固定的な設定値を保持する固定値設定フリップフロップと、電源投入時に不確定な設定値を保持する不確定値設定フリップフロップを識別するフリップフロップ判別データを生成または保持し、前記データ収集部は、前記フリップフロップ判別データを適用して、電源投入時の複数のフリップフロップの設定値から、固定値設定フリップフロップの設定値のみを選択的に取得して、取得データから前記固定データを生成する。
さらに、本発明の半導体集積回路の一実施態様において、前記データ収集部は、前記固定データを、半導体集積回路対応の識別情報(ID)として生成する。
さらに、本発明の半導体集積回路の一実施態様において、前記データ収集部は、前記フリップフロップ設定値を入力して生成した値を、前記集積回路に含まれるデータ処理部に提供する処理を行う。
さらに、本発明の第2の側面は、
前記請求項1〜6いずれかに記載の半導体集積回路を備えた情報処理装置にある。
前記請求項1〜6いずれかに記載の半導体集積回路を備えた情報処理装置にある。
さらに、本発明の第3の側面は、
情報処理装置において実行する情報処理方法であり、
データ収集部が、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集ステップと、
前記データ収集部が、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行するデータ生成ステップと、
を有する情報処理方法にある。
情報処理装置において実行する情報処理方法であり、
データ収集部が、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集ステップと、
前記データ収集部が、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行するデータ生成ステップと、
を有する情報処理方法にある。
さらに、本発明の第4の側面は、
情報処理装置において情報処理を実行させるプログラムであり、
データ収集部に、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力させるデータ収集ステップと、
前記データ収集部に、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行させるデータ生成ステップと、
を有するプログラムにある。
情報処理装置において情報処理を実行させるプログラムであり、
データ収集部に、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力させるデータ収集ステップと、
前記データ収集部に、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行させるデータ生成ステップと、
を有するプログラムにある。
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な画像処理装置やコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、画像処理装置やコンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の一実施例によれば、LSIなどの集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップから、電源投入時のフリップフロップ設定値を入力するデータ収集部を設けた。データ収集部は、スキャンチェーンまたは独立の接続パスを経由して電源投入時のフリップフロップ設定値を入力し、入力値に基づく乱数または固定データとしてのID生成処理を実行する。この構成により、LSI等の集積回路に形成された既存のフリップフロップをそのまま利用して乱数やIDの生成を行うことが可能となる。
以下、図面を参照しながら本発明の半導体集積回路、情報処理装置、および情報処理方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。
1.半導体集積回路におけるスキャンテストについて
2.本発明の半導体集積回路の一実施例について
3.データ生成処理シーケンスについて
4.乱数およびID情報の生成処理、利用処理例について
5.データ収集部の詳細構成について
6.その他の構成例について
6−1.スキャンチェーンと異なるFF接続パスを利用した例
6−2.電源供給構成を変更した実施例
1.半導体集積回路におけるスキャンテストについて
2.本発明の半導体集積回路の一実施例について
3.データ生成処理シーケンスについて
4.乱数およびID情報の生成処理、利用処理例について
5.データ収集部の詳細構成について
6.その他の構成例について
6−1.スキャンチェーンと異なるFF接続パスを利用した例
6−2.電源供給構成を変更した実施例
[1.半導体集積回路におけるスキャンテストについて]
図4には、半導体集積回路の一例としてのLSI100を示している。LSI100は、演算などのデータ処理を実行する様々な回路素子によって構成された組み合わせ回路112を有し、さらにレジスタやキャッシュメモリなどに利用される多数のフリップフロップ(FF)111が形成されている。
図4には、半導体集積回路の一例としてのLSI100を示している。LSI100は、演算などのデータ処理を実行する様々な回路素子によって構成された組み合わせ回路112を有し、さらにレジスタやキャッシュメモリなどに利用される多数のフリップフロップ(FF)111が形成されている。
半導体集積回路としてのLSIチップやICチップには、図4に示すように、チップ内部に形成された多数のフリップフロップ(FF)111を実用上の結線とは無関係の接続線で結んだスキャンチェーン110が形成される。フリップフロップ(FF)111の接続構成として構成されるスキャンチェーン110を利用してFF間でデータを転送させることで、FFの状態を直接制御、観測し、回路上の物理的故障を検出することが可能となる。このように、スキャンチェーンは、LSIやICチップの製造や設計段階でのテスト用回路として利用されている。
スキャンチェーン110によって接続されているFF111は一つの大きなシフトレジスタとして動作させることができるため、入力部(SCAN_IN)101から故障を検出したいノードが接続されている各FFへテストパターンを入力(スキャンイン)し、次にシステムクロックで回路を動作させ、状態の変化したFFの期待値を出力部(SCAN_OUT)102から出力(スキャンアウト)することができる。この出力値を検証することで故障部位を判定するといった回路テストが可能となる。
スキャンチェーン110は、回路の検証という目的から、LSIが含むほぼすべてのFFが接続される。なお、以下では、半導体集積回路の一例としてLSIを利用した例について説明するが、本発明は、LSIに限らず、複数のFFが形成されたICチップ、半導体集積回路に適用可能である。
スキャンチェーンに接続されているFFの数はLSIの規模と実装によるため具体的に示すことは難しいが、100万ゲート規模のLSIが存在する現状から、内部に含まれるFFの数も非常に多いことが容易に想像できる。なお、非常に長いスキャンチェーンはテストの時間を増大させるため、複数本に分割されたスキャンチェーンを実装することもある。
[2.本発明の半導体集積回路の一実施例について]
図4に示す回路は、デジタル回路における一般的な回路構成である。入力部(SCAN_IN)101から出力部(SCAN_OUT)102までの接続構成がスキャンチェーン110を表している。
図4に示す回路は、デジタル回路における一般的な回路構成である。入力部(SCAN_IN)101から出力部(SCAN_OUT)102までの接続構成がスキャンチェーン110を表している。
図5を参照して本発明の半導体集積回路の一構成例について説明する。図5に示すLSI120において、回路部130は先に図4を参照して説明したと同様の回路構成を持つ。すなわち、データ処理を実行する様々な回路素子によって構成された組み合わせ回路133を有し、さらにレジスタやキャッシュメモリなどに利用される多数のフリップフロップ(FF)131を有する。多数のフリップフロップ(FF)131は結線されスキャンチェーン132を構成している。集積回路のテスト用パスとして設定されたスキャンチェーン132である。
本発明のLSI120は、スキャンチェーン132の途中、もしくは最終出力部にスキャンチェーン132で接続されたFFの値を収集するためのデータ収集部141を持つ。さらに、スキャン動作(スキャンモード)と通常LSI動作(LSI動作モード)との配線の切り替えの制御、およびデータ収集部141の動作を制御するための制御部142を有する。
スキャンチェーン132を利用したテスト処理は、先に説明した図4に示す回路と同様、入力部(SCAN_IN)121から故障を検出したい各FFへテストパターンを入力(スキャンイン)し、次にシステムクロックで回路を動作させ、状態の変化したFFの期待値を出力部(SCAN_OUT)122から出力(スキャンアウト)することで故障を検証することができる。
図5に示す構成では、データ収集部141をスキャンチェーン132の最終出力部に設定した例である。すなわち出力部(SCAN_OUT)122の手前にデータ収集部141を構成している。
データ収集部141は、スキャンチェーン132を介して、LSI120内のスキャンチェーン132で接続されたFF131の値を取得する。例えば電源投入時のFF設定値を収集する。電源投入時のFF設定値には多くの不確定値が含まれる。先に説明したように、フリップフロップ(FF)は電源投入時には1または0いずれの値に設定されるかが固定されずランダムな値となる場合がある。データ収集部141は、例えば、このような電源投入時の複数のフリップフロップ(FF)の設定値を、スキャンチェーンを介して収集する。収集した値を乱数やIDとして利用する。
先に説明したように、フリップフロップ(FF)は、個々に素子特性が異なり、電源投入時の初期的な設定値の態様に応じて以下の2種類の素子に区分することができる。
(a)ランダムな不確定値を示す素子:不確定値設定素子(不確定値設定FF)
(b)常に固定値を示す素子:固定値設定素子(固定値設定FF)
これらの2種類の素子に分けることができる。
これは双方のPMOSの閾値と物理的条件によって決まってくる。
(a)ランダムな不確定値を示す素子:不確定値設定素子(不確定値設定FF)
(b)常に固定値を示す素子:固定値設定素子(固定値設定FF)
これらの2種類の素子に分けることができる。
これは双方のPMOSの閾値と物理的条件によって決まってくる。
電源投入の度に異なる設定値を示す不確定値設定素子(不確定値設定FF)から取得される値は、例えば演算処理や暗号処理などに適用する乱数として利用することが可能である。
また、電源投入の度に固定値を示す固定値設定素子(固定値設定FF)から取得される値は、例えばLSIチップ対応のIDなどに設定して利用することが可能である。
また、電源投入の度に固定値を示す固定値設定素子(固定値設定FF)から取得される値は、例えばLSIチップ対応のIDなどに設定して利用することが可能である。
なお、データ収集部141において収集した値を乱数や、LSIチップ対応のIDとして用いる場合などには、データ収集部141が取得した値を、LSI120内部の演算回路やメモリなどに出力して利用するといった処理が行われる。この処理構成については後述する。
スキャンチェーンにはLSIチップ内の非常に多くのFFが接続されているため、チップ面積を増やすことなく十分なビット数のデータを取得できる。例えば数十〜数千ビットのビット列からなる値を取得することが可能であり、この取得値を利用して乱数やIDを生成して利用することができる。
データ収集部141とスキャンチェーン132との接続方法は、様々な設定が可能である。図5に示す例では、1本のスキャンチェーンをデータ収集部141に入力する構成である。例えば、テストを効率的に実施するためにスキャンチェーンが複数本配線される場合もある。LSIに複数のスキャンチェーンが設定されている場合は、データ収集部は、複数のスキャンチェーンのデータを並列もしくは選択的に収集する構成としてもよい。データ収集部に、複数のスキャンチェーンのデータを入力する構成とした場合、データ収集部の内部にマージ処理部を設定し、各スキャンチェーンの入力データをマージしてそのマージ結果を乱数やIDとして利用することができる。
[3.データ生成処理シーケンスについて]
次に、例えば図5に示す構成を持つ本発明の半導体集積回路を適用したデータ生成処理シーケンスについて図6に示すフローチャートを参照して説明する。
次に、例えば図5に示す構成を持つ本発明の半導体集積回路を適用したデータ生成処理シーケンスについて図6に示すフローチャートを参照して説明する。
ステップS101において、LSI120の電源をオンにする。各FFはそれぞれの物理的な条件の違いによって、初期設定値[0]または[1]をFF内部に保持する。
ステップS102において、制御部142の動作を開始する。制御部142はスキャンチェーン132が利用できるように、FFのモードをスキャンモードに変更する。
ステップS102において、制御部142の動作を開始する。制御部142はスキャンチェーン132が利用できるように、FFのモードをスキャンモードに変更する。
ステップS103において、スキャンチェーン132に接続されたフリップフロップ(FF)の保持データを、スキャンチェーン132を介してデータ収集部141に入力する。データ収集部141は、乱数生成/ID生成いずれかの目的に応じて内部で必要な処理が実施された後、データとして出力または保持する。
ステップS104において、データ収集部141によるデータ収集の後、制御部142はスキャンモードを解除し、リセットをかけてFFを初期化し、通常のLSI動作モードに変更する。
ステップS105では、LSI動作モードに設定された状態において、ステップS104でデータ収集部が取得したデータをLSI120内部のセキュリティブロックへ供給し、乱数、あるいは乱数生成用のデータ、あるいはID、例えばLSIチップ識別子などに適用する固有の値(ID)などに利用する。
なお、先に説明したように、フリップフロップ(FF)は個々に素子特性が異なり、電源投入時の初期的な設定値がランダムとなる素子と固定となる素子、すなわち、
(a)ランダムな不確定値を示す素子:不確定値設定素子(不確定値設定FF)
(b)常に固定値を示す素子:固定値設定素子(固定値設定FF)
これらの2種類の素子がある。
データ収集部が取得したデータを乱数として適用する場合は、上記2種類の素子の出力値の混在データを利用することが可能であるが、IDとして利用する場合には、常に固定されたデータである必要があり、特定の固定値設定素子(固定値設定FF)から取得したデータを選択して利用することが必要となる。この処理については後述する。
(a)ランダムな不確定値を示す素子:不確定値設定素子(不確定値設定FF)
(b)常に固定値を示す素子:固定値設定素子(固定値設定FF)
これらの2種類の素子がある。
データ収集部が取得したデータを乱数として適用する場合は、上記2種類の素子の出力値の混在データを利用することが可能であるが、IDとして利用する場合には、常に固定されたデータである必要があり、特定の固定値設定素子(固定値設定FF)から取得したデータを選択して利用することが必要となる。この処理については後述する。
[4.乱数およびID情報の生成処理、利用処理例について]
次に、図6を参照して説明した処理におけるステップS105の乱数やIDの生成、利用処理の具体例について、図7以下を参照して説明する。
次に、図6を参照して説明した処理におけるステップS105の乱数やIDの生成、利用処理の具体例について、図7以下を参照して説明する。
(4−1.乱数生成処理および利用処理について)
まず、図7、図8を参照して乱数生成処理と利用処理について説明する。図7に示すLSI120は、図5に示すLSI120と同一のLSIである。乱数生成処理に関連する構成部のみを示している。
まず、図7、図8を参照して乱数生成処理と利用処理について説明する。図7に示すLSI120は、図5に示すLSI120と同一のLSIである。乱数生成処理に関連する構成部のみを示している。
データ収集部141は、スキャンチェーン132を介してLSI120に対する電源投入時のFF設定値を入力する。スキャンチェーンに接続されたFFの個数分のビット長のデータがデータ収集部141に入力される。例えば100個のFFがスキャンチェーンに接続されている場合100ビットデータがデータ収集部141に入力される。
データ収集部141はスキャンチェーン132から入力したデータを、セキュリティデータ処理部150に入力する。セキュリティデータ処理部150は、乱数生成処理を行う擬似乱数生成部(PRNG:Pseudo−Random Number Generator)151を有している。セキュリティデータ処理部150は、データ収集部141からの入力データを擬似乱数生成部(PRNG)151に入力して乱数生成処理を行い、生成した乱数をデータ処理部160に出力する。データ処理部160は、例えば、データ処理部160は、例えば公開鍵暗号やデジタル署名のアルゴリズム、あるいは認証プロトコルなどの処理を行う。
擬似乱数生成部(PRNG)151の構成および処理について図8を参照して説明する。擬似乱数生成部(PRNG)151のシード入力部152は、データ収集部141からの入力ビット列から乱数生成に利用するシードを入力する。
乱数出力部153は、シード入力部152からシードを入力して、予め定められた擬似乱数生成アルゴリズムを適用して、所定ビット数の乱数を生成して出力する。例えばシードを初期値として、予め定められた所定のアルゴリズムに従って内部状態(internal state)を更新して、乱数ビット列(random bit sequence)を連続的に生成してデータ処理部160に出力する。
(4−2.ID生成処理および利用処理について)
次に、図9を参照してID生成処理と利用処理について説明する。データ収集部がスキャンチェーンを介して複数のFFから取得したデータをIDとして利用する処理例について説明する。なお、IDとして利用する場合は、常に固定されたデータである必要があり、特定の固定値設定素子(固定値設定FF)から取得したデータを選択して利用する。この処理については後述する。まず、IDの利用例について、図9を参照して説明する。
次に、図9を参照してID生成処理と利用処理について説明する。データ収集部がスキャンチェーンを介して複数のFFから取得したデータをIDとして利用する処理例について説明する。なお、IDとして利用する場合は、常に固定されたデータである必要があり、特定の固定値設定素子(固定値設定FF)から取得したデータを選択して利用する。この処理については後述する。まず、IDの利用例について、図9を参照して説明する。
IDは、例えばLSI固有の識別子(ID)として、各LSIに対応付けて設定され、図9に示すようにLSI管理データベース210にIDと製造情報などを対応付けて管理される。このデータは、例えばLSI製造工場などにおける管理情報として利用可能である。
図9に示す例は、LSI製造工場において、LSI管理データベース210に図9(a)に示すようにLSIチップ対応のIDと、製造情報とを対応付けたLSI個別の管理情報を生成して管理する例である。図9(b)に示すように多数のLSIチップが製造され、それぞれのLSIチップ内のFFを接続したスキャンチェーン132を介してデータ収集部141が収集したFFの設定値からなるビット列をLSIチップIDとする。このIDをデータベース210に製造情報に対応付けて格納する。
このようにLSI対応のIDをLSI製造時に取得し、製造情報とひも付けすることによって、チップ出荷後の不良解析に活用することができる。また別の利用方法として、IDをチップ毎の秘密情報の暗号化や認証のための鍵として利用することも可能である。さらに、例えばLSIを装着したPCなどに対してアプリケーションプログラムを提供する場合のライセンス情報として利用することも可能である。すなわちハードウェア固有情報として利用することもできる。
[5.データ収集部の詳細構成について]
次に、図5に示すデータ収集部141の構成と処理の詳細について説明する。データ収集部141の構成例を図10に示す。
データ収集部141は、図10に示すように、切り替え部221、データ抽出部222、後処理部223、データ格納部224を有する。
次に、図5に示すデータ収集部141の構成と処理の詳細について説明する。データ収集部141の構成例を図10に示す。
データ収集部141は、図10に示すように、切り替え部221、データ抽出部222、後処理部223、データ格納部224を有する。
切り替え部221は、制御部142からのモード切り替え信号を入力して、モードに応じて、スキャンチェーン132のからの入力データの出力先を切り替える。
すなわち、データ収集モードに設定されている場合は、スキャンチェーン132のからの入力データをデータ抽出部222側に出力する。
スキャンテストモードに設定されている場合は、スキャンチェーン132のからの入力データを出力部(SCAN_OUT)122に出力する。
切り替え部221は、データ収集モードに設定されている場合は、収集データが出力部(SCAN_OUT)122を経由して外部から観測できないようにモード切り替えに応じた出力制御を行う。
すなわち、データ収集モードに設定されている場合は、スキャンチェーン132のからの入力データをデータ抽出部222側に出力する。
スキャンテストモードに設定されている場合は、スキャンチェーン132のからの入力データを出力部(SCAN_OUT)122に出力する。
切り替え部221は、データ収集モードに設定されている場合は、収集データが出力部(SCAN_OUT)122を経由して外部から観測できないようにモード切り替えに応じた出力制御を行う。
データ収集モードに設定されている場合、切り替え部221はスキャンチェーン132のからの入力データをデータ抽出部222側に出力する。
データ抽出部222はスキャンチェーン132を介して送られてくるビット列から、必要なデータを取得するブロックである。
後処理部223はスキャンチェーン132を介して収集されるデータシーケンスから乱数生成もしくはチップID生成のために必要なデータへ加工する機能を有するブロックである。すなわち、スキャンチェーン132に接続された順番のFFの設定値から構成されるビット列からなるデータシーケンスから乱数生成もしくはチップID生成のために必要なデータへ加工する処理を行う。
またデータ格納部224は後処理部223で処理したデータ、すなわち乱数やIDを保持する機能を有する。データ格納部224は例えば、取得に必要なデータ量に対応してリセットのないFFや揮発性メモリ、不揮発性メモリを用いて保持する機能を有する。
データ抽出部222はスキャンチェーン132を介して送られてくるビット列から、必要なデータを取得するブロックである。
後処理部223はスキャンチェーン132を介して収集されるデータシーケンスから乱数生成もしくはチップID生成のために必要なデータへ加工する機能を有するブロックである。すなわち、スキャンチェーン132に接続された順番のFFの設定値から構成されるビット列からなるデータシーケンスから乱数生成もしくはチップID生成のために必要なデータへ加工する処理を行う。
またデータ格納部224は後処理部223で処理したデータ、すなわち乱数やIDを保持する機能を有する。データ格納部224は例えば、取得に必要なデータ量に対応してリセットのないFFや揮発性メモリ、不揮発性メモリを用いて保持する機能を有する。
なお、データ抽出部222と、後処理部223と、データ格納部224は、スキャンチェーン132を介して収集するデータを乱数として利用するかあるいはIDとして利用するかに応じて異なる処理を行う場合がある。データ抽出部222と、後処理部223と、データ格納部224は、制御部142からの取得データ識別信号を入力して処理態様を変更する。なお、LSIチップに応じて、いずれか一方の処理、すなわち乱数生成、あるいは固定データとしてのID取得、いずれか一方の処理のみを行う設定としてもよい、このような設定の場合は、データ抽出部222と、後処理部223と、データ格納部224は固定された処理を行うことが可能であり、制御部142からの取得データ識別信号は不要である。
以下、データ抽出部222と、後処理部223と、データ格納部224の処理の具体例について説明する。
(データ抽出部222の処理)
データ抽出部222はスキャンチェーン132を介して送られてくるビット列から、必要なデータを取得するブロックである。
データ抽出部222はスキャンチェーン132を介して送られてくるビット列から、必要なデータを取得するブロックである。
先に説明したように、フリップフロップ(FF)は個々に素子特性が異なり、電源投入時の初期的な設定値がランダムとなる素子と固定となる素子、すなわち、
(a)ランダムな不確定値を示す素子:不確定値設定素子(不確定値設定FF)
(b)常に固定値を示す素子:固定値設定素子(固定値設定FF)
これらの2種類の素子がある。
データ収集部が取得したデータを乱数として適用する場合は、上記2種類の素子の出力値の混在データを利用することが可能であるが、IDとして利用する場合には、常に固定されたデータである必要があり、特定の固定値設定素子(固定値設定FF)から取得したデータを選択して利用することが必要となる。
(a)ランダムな不確定値を示す素子:不確定値設定素子(不確定値設定FF)
(b)常に固定値を示す素子:固定値設定素子(固定値設定FF)
これらの2種類の素子がある。
データ収集部が取得したデータを乱数として適用する場合は、上記2種類の素子の出力値の混在データを利用することが可能であるが、IDとして利用する場合には、常に固定されたデータである必要があり、特定の固定値設定素子(固定値設定FF)から取得したデータを選択して利用することが必要となる。
データ抽出部222はスキャンチェーン132に接続された順番にFFの設定値を並べたビット列からなるデータシーケンスを受け取る。このデータシーケンスは、不確定値設定素子(不確定値設定FF)と固定値設定素子(固定値設定FF)のビット値が混在したデータ列である。
乱数を取得または生成するする場合は、不確定値設定素子(不確定値設定FF)と固定値設定素子(固定値設定FF)のビット値の混在データを利用可能であるが、IDを取得する場合は、固定値設定素子(固定値設定FF)のビット値のみを選択して取得する処理が必要になる。
従って、データ抽出部222は、取得データを乱数生成などに利用する場合は、スキャンチェーン132から取得するデータを選別することなく、必要なビット数分のデータを抽出して、後処理部223に出力する。
一方、取得データをIDなどに利用する場合は、スキャンチェーン132から取得するデータから、固定値設定素子(固定値設定FF)のビット値のみを選択して取得して、後処理部223に出力する。
一方、取得データをIDなどに利用する場合は、スキャンチェーン132から取得するデータから、固定値設定素子(固定値設定FF)のビット値のみを選択して取得して、後処理部223に出力する。
データ抽出部222は、取得データに応じてこの2つの異なる処理のいずれかを行う。以下、図11、図12を参照してこの2つの処理の具体例について説明する。
図11は、取得データを乱数生成などに利用する場合のデータ抽出部222の処理例を示す図である。すなわち、スキャンチェーン132から取得するデータを選別することなく、必要なビット数分のデータを抽出して、後処理部223に出力する。
図11(a)はスキャンチェーン132から取得するデータシーケンスの例を示している。0/1の連続するビット列を表しており、黒いセルが1、白いセルが0を表している。右端がスキャンチェーンの先頭ビットであり、左端がスキャンチェーンの最終ビットである。
この例では、スキャンチェーン132から取得するデータシーケンスから、不確定値設定素子(不確定値設定FF)のビット値と、固定値設定素子(固定値設定FF)のビット値とを選別する必要がない。抽出ブロックは、単純に設計者が決めたビット値取得開始位置(S)から後段の後処理ブロックで必要なビットサイズ(W)だけ切り出す処理を行う。
切り出し処理は、例えば図11(a)に示すように、ビット列の1つのスタート位置から集めてもよいし、図11(b)に示すように、ビット列の複数のスタート位置から集めてもよい。
また、先に説明したように、LSI内に複数の独立したスキャンチェーンが設定されている場合もある。この場合は、図11(c)のように、複数のスキャンパスの中から、取得ビット列を選択的に抽出してもよい。また(a),(b),(c)を適宜、組み合わせで抽出する構成としてもよい。このようにして抽出されたビットサイス(W)のビット列が後処理部223に出力される。
次に、図12を参照して、スキャンチェーンからの入力値から固定データ、例えばIDを生成する場合の処理について説明する。この場合、データ抽出部222は、スキャンチェーンからの入力値から固定値設定素子(固定値設定FF)のビット値のみを選択する処理を実行する。
この処理を行う場合には、事前の処理として、例えばLSIチップ製造時などに、複数回の電源ON処理を実行して、電源ON処理ごとに固定の値を示すFFからのデータがどの位置にあるかの検証処理を行う。すなわち、スキャンチェーンに接続された複数のFFが、固定値設定素子(固定値設定FF)であるか否かを検出する処理を行っておく。この固定値設定FF位置データを不揮発性メモリなどに保持しておく。
図12(a)に示すデータが、この事前処理によって生成したマスクデータである。すなわち、
電源投入時に固定的な設定値を保持する固定値設定フリップフロップと、
電源投入時に不確定な設定値を保持する不確定値設定フリップフロップを識別するフリップフロップ判別データである。
マスクデータは、固定値設定FFの位置を[白]、不確定値設定FFの位置を[斜線]として示している。このマスクデータは、データ抽出部222内の揮発性メモリなどに保持しておく。
電源投入時に固定的な設定値を保持する固定値設定フリップフロップと、
電源投入時に不確定な設定値を保持する不確定値設定フリップフロップを識別するフリップフロップ判別データである。
マスクデータは、固定値設定FFの位置を[白]、不確定値設定FFの位置を[斜線]として示している。このマスクデータは、データ抽出部222内の揮発性メモリなどに保持しておく。
図12(b)は、IDを取得する場合に、スキャンチェーン132から入力したビットシーケンスを示している。データ抽出部222は、この入力ビットシーケンスから、固定値設定FFの位置のビット値のみを選択する。この選択処理に、(a)に示すマスクデータを利用する。(a)に示すマスクデータの白い部分が、固定値設定FFの位置であり、この部分の値のみを利用すれば固定値データが得られる。
結果として、図12(c)に示す有効領域のみのデータを取得する。この有効領域データは、固定値設定FFの位置にあるビットデータである。従って、常に固定されたビット値からなるデータが取得できる。なお、例えば取得データをIDとして利用する場合、固定されたスタート位置から固定されたビット長のデータを図12(c)の有効領域から選択する、
この処理によって、常に同一の固定ビット列を取得することが可能となり、例えばLSIチップのIDとして利用することができる。
なお、図12の例は固定値設定FFの位置にあるビットデータのみを選択してIDとして利用する例であるが、逆に不確定値設定FFのみのデータを選択して乱数として利用する構成も可能である。この場合、図12(a)に示すマスクデータと逆のパターンのマスクデータを利用して不確定値設定FFのみのデータを選択する。先に図11を参照して説明した例では、固定値設定FFと不確定値設定FFのデータを混在させて乱数として利用する例であるが、このような設定とすることで、固定値設定FFの固定ビットを含まない不確定値設定FFのみの不確定ビットデータのみからなる乱数を生成することができる。
(後処理部223の処理)
次に、データ収集部141内の後処理部223の処理について説明する。後処理部223は、データ抽出部222の生成した乱数用データ、またはID用データのいずれかを、データ抽出部222から入力する。後処理部223の処理は、乱数生成用途とID生成用途では異なる処理となる。以下、乱数生成の場合と、ID生成の場合の処理について、順次説明する。
次に、データ収集部141内の後処理部223の処理について説明する。後処理部223は、データ抽出部222の生成した乱数用データ、またはID用データのいずれかを、データ抽出部222から入力する。後処理部223の処理は、乱数生成用途とID生成用途では異なる処理となる。以下、乱数生成の場合と、ID生成の場合の処理について、順次説明する。
(乱数生成処理の場合)
乱数生成を行う場合、生成した乱数は、その後、LSI内部の演算処理部に提供され、例えば暗号処理などの演算に適用されることになる。従って必要となる乱数のビット数は、LSI内部において実行されるアルゴリズムに応じたビット数となる。
乱数生成を行う場合、生成した乱数は、その後、LSI内部の演算処理部に提供され、例えば暗号処理などの演算に適用されることになる。従って必要となる乱数のビット数は、LSI内部において実行されるアルゴリズムに応じたビット数となる。
予め演算処理に必要となるビット数分の乱数をスキャンチェーンからの入力ビットのみで構成して、データ収集部141内のデータ格納部224に格納しておいてもよい。この場合には、後処理部223は、データ抽出部222の取得したビット長(W)のビット列に対して処理を行うことなく、データ格納部224に格納すればよい。
ただし、例えばLSI内部における実行アルゴリズムにおいて利用する乱数のビットサイズが大きい場合などには、データ格納部224に格納できない場合もある。また、LSI内部における実行アルゴリズムが複数の異なる乱数を利用する場合なども想定される。
このような場合には、スキャンチェーンからの入力ビットによって構成されるビットシーケンスを擬似乱数生成用のシードデータとして利用する構成が有効である。以下、このシード生成を伴う擬似乱数生成構成について説明する。
例えば、疑似乱数生成(PRNG)アルゴリズムのための初期値である160ビット程度のシードをスキャンチェーンからの入力ビットによって生成する。図13に、このシード生成処理を行う後処理部223の構成例を示す。
後処理部223は、図13に示すように、データ抽出部222らの出力に対して、バイアス平滑処理を行うバイアス平滑部(bias corrector)301、バイアス平滑部301の出力の統計的な性質をより改善するためのミキシング部(mixing function)302を有する。
バイアス平滑部301は、データ抽出部222らの出力する所定サイズ(W)のビット列に基づいて所定サイズ(W2)のビット列のデータを生成する処理を実行する。ビットサイズは縮小、拡大居擦れの場合もあり得る。このビットサイズ変換処理には様々なアルゴリズムが適用可能である。例えば、既存のフォンノイマンアルゴリズムを適用した処理を行う構成とすることができる。
さらに、ミキシング部302は、バイアス平滑部301から出力するビットサイズ(W2)のデータ列に対して、ハッシュ関数やブロック暗号を使ってビットサイズを圧縮して予め設定されたシードに対応したビットサイズ(W3)のビット列を生成する。この処理には、例えば、以下の文献に記載された処理が適用できる。[A.Soohoo,"Lockdown Random Numbers Secure Network SoC Designs",CommsDesign.com,www.commsdesign.com,April 01,2003.]
なお、図13に示す後処理部223の構成例は一例であり、データ抽出部222から根の入力ビット列に基づいて所定のビットサイズのシードを生成できる構成であればその他の構成としてもよい。例えば、バイアス平滑部301のみの構成、ミキシング部302のみの構成といった構成としてもよい。
また、後処理部223の構成としては、図14に示すように、データ抽出部222からの出力データの品質をチェックするためにオンラインテスト部303を追加した構成としてもよい。
オンラインテストは設計者が設定したテスト項目を実装したブロックであり、このテストをパスしたものを選択部304において選択し、シード(seed)値として採用する。テスト項目の例としては、データ列のビットの0/1の偏りを観測したり、データ列に同じ値が連続して続いていないかなどを観測する処理などである。予め設定したテスト結果に合格したビット列が設定されている場合にのみシード値として出力する。
(ID等の固定データ生成処理の場合)
次に、ID等の固定データを生成する場合のデータ収集部141内の後処理部223の処理について説明する。IDのように固定したビット列を生成する用途の場合、例えばノイズなどによって誤ったビット列が生成されないような処理を行うことが必要となる。
次に、ID等の固定データを生成する場合のデータ収集部141内の後処理部223の処理について説明する。IDのように固定したビット列を生成する用途の場合、例えばノイズなどによって誤ったビット列が生成されないような処理を行うことが必要となる。
具体的には、例えば入力ビット値に対するエラー訂正を行う必要がある。ID等の固定データ生成処理を実行する後処理部223の構成例を図15に示す。図15に示す後処理部223は、エラー訂正部(ECC decoding)305を有する。
エラー訂正部305は、データ抽出部222からの出力に対して、エラー訂正による復号処理(ECC decoding)を行うブロックである。エラー訂正部305においてエラー訂正を行った後にIDとして出力する。またエラー訂正を行うためのパリティをチップ製造時などの事前の段階において設定し、データ格納部224に格納する。あるいはその他の不揮発性メモリなどによって構成されるメモリに格納する。
[6.その他の構成例について]
(6−1.スキャンチェーンと異なるFF接続パスを利用した例)
これまでテスト容易化設計技術におけるスキャンチェーンを利用した方式について説明を行ってきたが、既存のスキャンチェーンを利用しない方式とすることも可能である。
(6−1.スキャンチェーンと異なるFF接続パスを利用した例)
これまでテスト容易化設計技術におけるスキャンチェーンを利用した方式について説明を行ってきたが、既存のスキャンチェーンを利用しない方式とすることも可能である。
例えば、図16に示すLSI400のように、既存のスキャンチェーン401と利用しない構成としてもよい。特定のフリップフロップ(FF)を含むFF回路ブロック402を設定し、FF回路ブロック402内のFFを接続したFF接続パス405を設定し、FF接続パス405をデータ収集部410に接続する。この構成により、FF回路ブロック402内のFFの設定値(電源入力時の設定値)を入力することが可能となる。
なお、図16に示す構成では制御部が設けられていないが、データ処理部410は電源投入時にのみ処理を行う。あるいは、先に図5を参照して説明した構成と同様の制御部を設定して、制御部の制御に従って、モード切り替え信号を入力してモード切り替えに応じて処理を行う構成としてもよい。
(6−2.電源供給構成を変更した実施例)
前述したように、図5以下を参照して説明したLSIでは、データ収集部141において、LSI120に対する電源供給開始時のFFの設定値をスキャンチェーンを介して収集する構成となっている。しかしながら、LSI120の電源供給開始タイミングとほぼ同時にデータ収集部141のデータ収集処理が実行されることになり、また、データ収集タイミングに併せて、あるいは開始前に制御部142からの制御信号をデータ収集部141などに入力することが必要となる場合がある。しかし、制御部142に対する電力供給も併せて行われると、正しい制御が実行されない恐れがある。
前述したように、図5以下を参照して説明したLSIでは、データ収集部141において、LSI120に対する電源供給開始時のFFの設定値をスキャンチェーンを介して収集する構成となっている。しかしながら、LSI120の電源供給開始タイミングとほぼ同時にデータ収集部141のデータ収集処理が実行されることになり、また、データ収集タイミングに併せて、あるいは開始前に制御部142からの制御信号をデータ収集部141などに入力することが必要となる場合がある。しかし、制御部142に対する電力供給も併せて行われると、正しい制御が実行されない恐れがある。
そこで、これを解決するために、図17に示すように、LSI520に対する電力供給構成を設定する。スキャンチェーン532とデータ収集部541を含む回路部A511に対する電源と、制御部542を含む回路部B512に対する電源を異なる電源とする。すなわち電源を2系統設定し、制御部542に対応する回路部B512に対して先行して電力供給を実行し、制御部542の制御が確実に実行可能な状態に移行した後、回路部A511に対する電力供給を介してスキャンチェーン532からのデータ収集処理を開始する。
この構成に従った処理シーケンスについて、図18に示すフローチャートを参照して説明する。
ステップS201において、制御部542を含む制御ブロックの電源をオンにする。
次に、ステップS202において、制御部542が、回路部A511の電源をオフに設定、あるいは、オフに設定されていることを確認した後、回路部A511の電源をオンにする。この動作によって、回路部A511に含まれる各FFはそれぞれの物理的な条件の違いによって、初期設定値[0]または[1]をFF内部に保持する。
次に、ステップS202において、制御部542が、回路部A511の電源をオフに設定、あるいは、オフに設定されていることを確認した後、回路部A511の電源をオンにする。この動作によって、回路部A511に含まれる各FFはそれぞれの物理的な条件の違いによって、初期設定値[0]または[1]をFF内部に保持する。
ステップS203において、制御部542はスキャンチェーン532が利用できるように、FFのモードをスキャンモードに変更する。
ステップS204において、スキャンチェーン532に接続されたフリップフロップ(FF)の保持データを、スキャンチェーン532を介してデータ収集部541に入力する。データ収集部541は、乱数生成/ID生成いずれかの目的に応じて内部で必要な処理が実施された後、データとして出力または保持する。
ステップS204において、スキャンチェーン532に接続されたフリップフロップ(FF)の保持データを、スキャンチェーン532を介してデータ収集部541に入力する。データ収集部541は、乱数生成/ID生成いずれかの目的に応じて内部で必要な処理が実施された後、データとして出力または保持する。
ステップS205において、データ収集部541によるデータ収集の後、制御部542はスキャンモードを解除し、リセットをかけてFFを初期化し、通常のLSI動作モードに変更する。
ステップS206では、LSI動作モードに設定された状態において、ステップS204でデータ収集部が取得したデータをLSI520内部のセキュリティブロックへ供給し、乱数、あるいは乱数生成用のデータ、あるいはID、例えばLSIチップ識別子などに適用する固有の値(ID)などに利用する。
図17、図18を参照して説明した構成では、制御部542に先行して電力供給がなされ、制御部542の動作が安定した後、スキャンチェーンの各FFに対する電力供給が開始されるので、制御部542の安定した制御の下で、確実に電源投入時のFFの設定値を収集することが可能となる。
以上、説明したように、本発明の構成では、LSIチップ上に搭載されたFFをそのまま利用して、専用のFFを追加することなく、乱数生成処理やID生成処理を行うことが可能となり、チップ面積の増加やコストの増加を抑えた構成を実現できる。また、データ収集部の収集データは、LSI内部において演算回路に提供可能であり、外部に誤って出力される可能性はなく機密を保持した処理が可能となる。本発明を用いることによって、様々なデジタル回路での乱数生成やチップIDを生成することが可能になる。
なお、上記実施例においては集積回路の構成を中心として説明したが、上記の実施例において説明した半導体集積回路を例えばPC等の情報処理装置に装着し、情報処理装置内において乱数生成や、ID生成処理などを実行することが可能である。この処理制御は、上記の実施例において説明したLSIチップ内部の制御部において、LSIチップ内のメモリに格納したプログラムを利用して実行することが可能である。あるいは、情報処理装置内のLSIチップと接続された他のLSI素子などに形成された制御部やメモリを利用して、プログラムを実行して上記の構成を持つLSIチップにコマンドを入力して乱数生成やID生成処理を実行させる構成としてもよい。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
以上、説明したように、本発明の一実施例構成によれば、LSIなどの集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップから、電源投入時のフリップフロップ設定値を入力するデータ収集部を設けた。データ収集部は、スキャンチェーンまたは独立の接続パスを経由して電源投入時のフリップフロップ設定値を入力し、入力値に基づく乱数または固定データとしてのID生成処理を実行する。この構成により、LSI等の集積回路に形成された既存のフリップフロップをそのまま利用して乱数やIDの生成を行うことが可能となる。
11,12 インバータ
21,22 インバータ
31,32 インバータ
41,42 PMOS
100 LSI
101 入力部
102 出力部
110 スキャンチェーン
111 フリップフロップ(FF)
112 組み合わせ回路
120 LSI
121 入力部
122 出力部
131 フリップフロップ(FF)
132 スキャンチェーン
133 組み合わせ回路
141 データ収集部
142 制御部
150 セキュリティデータ処理部
151 擬似乱数生成部
152 シード入力部
153 乱数出力部
160 データ処理部
210 LSI管理データベース
221 切り替え部
222 データ抽出部
223 後処理部
224 データ格納部
301 バイアス平滑部
302 ミキシング部
303 オンラインテスト部
304 選択部
305 エラー訂正部
400 LSI
401 スキャンチェーン
402 FF回路ブロック
405 FF接続パス
410 データ収集部
511 回路部A
512 回路部B
520 LSI
532 スキャンチェーン
541 データ収集部
542 制御部
21,22 インバータ
31,32 インバータ
41,42 PMOS
100 LSI
101 入力部
102 出力部
110 スキャンチェーン
111 フリップフロップ(FF)
112 組み合わせ回路
120 LSI
121 入力部
122 出力部
131 フリップフロップ(FF)
132 スキャンチェーン
133 組み合わせ回路
141 データ収集部
142 制御部
150 セキュリティデータ処理部
151 擬似乱数生成部
152 シード入力部
153 乱数出力部
160 データ処理部
210 LSI管理データベース
221 切り替え部
222 データ抽出部
223 後処理部
224 データ格納部
301 バイアス平滑部
302 ミキシング部
303 オンラインテスト部
304 選択部
305 エラー訂正部
400 LSI
401 スキャンチェーン
402 FF回路ブロック
405 FF接続パス
410 データ収集部
511 回路部A
512 回路部B
520 LSI
532 スキャンチェーン
541 データ収集部
542 制御部
Claims (10)
- 集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップと、
前記スキャンチェーンに接続された複数のフリップフロップの設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集部を有し、
前記データ収集部は、
前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値を入力して、入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行する半導体集積回路。 - 前記半導体集積回路は、
前記スキャンチェーンを介したスキャンテストを実行するスキャンテストモードと、前記スキャンチェーンを介したデータ収集を実行するデータ収集モードとの切り替え制御を実行する制御部を有し、
前記データ収集部は、
前記制御部におけるデータ収集モードへの切り替えに応じて、フリップフロップ設定値を入力する請求項1に記載の半導体集積回路。 - 前記制御部は、前記スキャンチェーンに接続された複数のフリップフロップに先行して電源供給可能な構成を有し、前記制御部の制御の下に前記複数のフリップフロップに対する電源投入処理が行われる請求項2に記載の半導体集積回路。
- 前記データ収集部は、
電源投入時の複数のフリップフロップの設定値から、特定のフリップフロップ対応の設定値を選択して前記固定データを生成する請求項1に記載の半導体集積回路。 - 前記データ収集部は、
電源投入時に固定的な設定値を保持する固定値設定フリップフロップと、
電源投入時に不確定な設定値を保持する不確定値設定フリップフロップを識別するフリップフロップ判別データを生成または保持し、
前記データ収集部は、
前記フリップフロップ判別データを適用して、電源投入時の複数のフリップフロップの設定値から、固定値設定フリップフロップの設定値のみを選択的に取得して、取得データから前記固定データを生成する請求項4に記載の半導体集積回路。 - 前記データ収集部は、
前記固定データを、半導体集積回路対応の識別情報(ID)として生成する請求項4または5に記載の半導体集積回路。 - 前記データ収集部は、
前記フリップフロップ設定値を入力して生成した値を、前記集積回路に含まれるデータ処理部に提供する処理を行う請求項1〜6に記載の半導体集積回路。 - 前記請求項1〜7いずれかに記載の半導体集積回路を備えた情報処理装置。
- 情報処理装置において実行する情報処理方法であり、
データ収集部が、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集ステップと、
前記データ収集部が、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行するデータ生成ステップと、
を有する情報処理方法。 - 情報処理装置において情報処理を実行させるプログラムであり、
データ収集部に、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力させるデータ収集ステップと、
前記データ収集部に、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行させるデータ生成ステップと、
を有するプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009120411A JP2010266417A (ja) | 2009-05-18 | 2009-05-18 | 半導体集積回路、情報処理装置、および情報処理方法、並びにプログラム |
US12/776,925 US20100293424A1 (en) | 2009-05-18 | 2010-05-10 | Semiconductor integrated circuit, information processing apparatus and method, and program |
CN2010101823421A CN101957740A (zh) | 2009-05-18 | 2010-05-18 | 半导体集成电路、信息处理设备和方法、以及程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009120411A JP2010266417A (ja) | 2009-05-18 | 2009-05-18 | 半導体集積回路、情報処理装置、および情報処理方法、並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010266417A true JP2010266417A (ja) | 2010-11-25 |
Family
ID=43069487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009120411A Withdrawn JP2010266417A (ja) | 2009-05-18 | 2009-05-18 | 半導体集積回路、情報処理装置、および情報処理方法、並びにプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20100293424A1 (ja) |
JP (1) | JP2010266417A (ja) |
CN (1) | CN101957740A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014010867A (ja) * | 2012-06-29 | 2014-01-20 | Fujitsu Semiconductor Ltd | データ生成回路、半導体装置及び判定方法 |
JP2014510354A (ja) * | 2011-04-05 | 2014-04-24 | イントリンシツク・イー・デー・ベー・ベー | メモリスタートアップ時のノイズに基づいた乱数生成システム |
JP2016174279A (ja) * | 2015-03-17 | 2016-09-29 | 株式会社東芝 | データ生成装置および認証システム |
JP2019501609A (ja) * | 2016-01-11 | 2019-01-17 | エスティーシー. ユーエヌエムStc.Unm | プライバシー保護相互pufベース認証プロトコル |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5793978B2 (ja) * | 2011-06-13 | 2015-10-14 | 富士通セミコンダクター株式会社 | 半導体装置 |
US10168387B2 (en) * | 2012-07-03 | 2019-01-01 | Infineon Technologies Austria Ag | Integrated defect detection and location systems and methods in semiconductor chip devices |
ES2548792B1 (es) * | 2014-03-20 | 2016-07-28 | Universidad De Sevilla | Método y dispositivo para generar identificadores y números verdaderamente aleatorios |
US10026498B1 (en) | 2017-04-10 | 2018-07-17 | International Business Machines Corporation | Simultaneous scan chain initialization with disparate latches |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5416783A (en) * | 1993-08-09 | 1995-05-16 | Motorola, Inc. | Method and apparatus for generating pseudorandom numbers or for performing data compression in a data processor |
US6513144B1 (en) * | 1999-04-22 | 2003-01-28 | Synopsys, Inc. | Method and apparatus for random stimulus generation |
EP1087233A1 (de) * | 1999-09-23 | 2001-03-28 | Infineon Technologies AG | Verfahren und Anordnung zum datenschützenden Selbsttest für Microcontroller |
CN100416492C (zh) * | 2001-07-17 | 2008-09-03 | 富士电气化学株式会社 | 随机数发生装置和概率发生装置 |
US7096397B2 (en) * | 2001-09-17 | 2006-08-22 | Intel Corporation | Dft technique for avoiding contention/conflict in logic built-in self-test |
US7076663B2 (en) * | 2001-11-06 | 2006-07-11 | International Business Machines Corporation | Integrated system security method |
US7185249B2 (en) * | 2002-04-30 | 2007-02-27 | Freescale Semiconductor, Inc. | Method and apparatus for secure scan testing |
JP3696209B2 (ja) * | 2003-01-29 | 2005-09-14 | 株式会社東芝 | シード生成回路、乱数生成回路、半導体集積回路、icカード及び情報端末機器 |
FR2857535A1 (fr) * | 2003-07-09 | 2005-01-14 | Atmel Corp | Procede et systeme pour brouiller le contenu d'une cellule dans un circuit integre. |
JP2006215824A (ja) * | 2005-02-03 | 2006-08-17 | Sanyo Electric Co Ltd | 乱数生成回路 |
US7610527B2 (en) * | 2005-03-16 | 2009-10-27 | Nec Laboratories America, Inc. | Test output compaction with improved blocking of unknown values |
WO2006132329A1 (ja) * | 2005-06-10 | 2006-12-14 | International Business Machines Corporation | マイクロコンピュータ及びそのテスト方法 |
ATE427501T1 (de) * | 2005-08-10 | 2009-04-15 | Nxp Bv | Prufen einer integrierten schaltung, die geheiminformationen enthalt |
JP4839856B2 (ja) * | 2006-01-23 | 2011-12-21 | 富士通株式会社 | スキャンチェーン抽出プログラム、スキャンチェーン抽出方法及び試験装置 |
JP4808051B2 (ja) * | 2006-03-14 | 2011-11-02 | ルネサスエレクトロニクス株式会社 | 半導体集積回路装置とそのテスト方法 |
CN101144847B (zh) * | 2006-09-14 | 2012-05-23 | 国际商业机器公司 | 集成电路和指定集成电路的方法 |
JP4815326B2 (ja) * | 2006-10-31 | 2011-11-16 | 富士通株式会社 | 集積回路のタイミング不良改善装置、並びに、集積回路のタイミング不良診断装置および方法、並びに、集積回路 |
US7739568B1 (en) * | 2006-11-14 | 2010-06-15 | Marvell International Ltd. | Scan testing system for circuits under test |
US7840865B2 (en) * | 2007-03-23 | 2010-11-23 | Mentor Graphics Corporation | Built-in self-test of integrated circuits using selectable weighting of test patterns |
EP2133705A4 (en) * | 2007-03-29 | 2011-03-30 | Fujitsu Ltd | ERROR LOCALIZATION DEVICE, ERROR LOCALIZATION PROCEDURE AND INTEGRATED CIRCUIT |
JP2008262630A (ja) * | 2007-04-11 | 2008-10-30 | Matsushita Electric Ind Co Ltd | 半導体集積回路及びメモリ検査方法 |
US7975307B2 (en) * | 2007-09-07 | 2011-07-05 | Freescale Semiconductor, Inc. | Securing proprietary functions from scan access |
JP5256840B2 (ja) * | 2008-04-30 | 2013-08-07 | 富士通セミコンダクター株式会社 | 論理回路 |
JP4309949B1 (ja) * | 2008-05-28 | 2009-08-05 | 株式会社東芝 | 半導体集積装置及び半導体集積装置のテスト方法 |
US8219857B2 (en) * | 2008-06-26 | 2012-07-10 | International Business Machines Corporation | Temperature-profiled device fingerprint generation and authentication from power-up states of static cells |
US7934135B2 (en) * | 2008-08-21 | 2011-04-26 | International Business Machines Corporation | Providing pseudo-randomized static values during LBIST transition tests |
WO2010058248A1 (en) * | 2008-11-24 | 2010-05-27 | Freescale Semiconductor, Inc. | Logic built-in self-test system and method for applying a logic built-in self-test to a device under test |
-
2009
- 2009-05-18 JP JP2009120411A patent/JP2010266417A/ja not_active Withdrawn
-
2010
- 2010-05-10 US US12/776,925 patent/US20100293424A1/en not_active Abandoned
- 2010-05-18 CN CN2010101823421A patent/CN101957740A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014510354A (ja) * | 2011-04-05 | 2014-04-24 | イントリンシツク・イー・デー・ベー・ベー | メモリスタートアップ時のノイズに基づいた乱数生成システム |
US9383969B2 (en) | 2011-04-05 | 2016-07-05 | Intrinsic Id B.V. | Random number generating system based on memory start-up noise |
JP2014010867A (ja) * | 2012-06-29 | 2014-01-20 | Fujitsu Semiconductor Ltd | データ生成回路、半導体装置及び判定方法 |
JP2016174279A (ja) * | 2015-03-17 | 2016-09-29 | 株式会社東芝 | データ生成装置および認証システム |
JP2019501609A (ja) * | 2016-01-11 | 2019-01-17 | エスティーシー. ユーエヌエムStc.Unm | プライバシー保護相互pufベース認証プロトコル |
JP7003059B2 (ja) | 2016-01-11 | 2022-01-20 | ユーエヌエム レインフォレスト イノベーションズ | プライバシー保護相互pufベース認証プロトコル |
Also Published As
Publication number | Publication date |
---|---|
US20100293424A1 (en) | 2010-11-18 |
CN101957740A (zh) | 2011-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shamsi et al. | IP protection and supply chain security through logic obfuscation: A systematic overview | |
JP2010266417A (ja) | 半導体集積回路、情報処理装置、および情報処理方法、並びにプログラム | |
EP2191410B1 (en) | Identification of devices using physically unclonable functions | |
Cui et al. | A robust FSM watermarking scheme for IP protection of sequential circuit design | |
Engels et al. | The end of logic locking? a critical view on the security of logic locking | |
JP2018503328A (ja) | 信頼性を高めた物理的クローン不能関数ビットストリーム生成方法 | |
US10771062B1 (en) | Systems and methods for enhancing confidentiality via logic gate encryption | |
Shakya et al. | Introduction to hardware obfuscation: Motivation, methods and evaluation | |
Hussain et al. | BIST-PUF: Online, hardware-based evaluation of physically unclonable circuit identifiers | |
US20160072632A1 (en) | Methods and Systems for Achieving System-Level Counterfeit Protection in Integrated Chips | |
McDonald et al. | Functional polymorphism for intellectual property protection | |
Kumar et al. | Secure split test techniques to prevent IC piracy for IoT devices | |
Dunbar et al. | Satisfiability don't care condition based circuit fingerprinting techniques | |
Sun et al. | A new pay-per-use scheme for the protection of FPGA IP | |
Majzoobi et al. | FPGA-oriented Security | |
Azriel et al. | Using scan side channel to detect IP theft | |
Thiemann et al. | On integrating lightweight encryption in reconfigurable scan networks | |
Guo et al. | Obfuscation-based protection framework against printed circuit boards unauthorized operation and reverse engineering | |
Rai et al. | Design and analysis of reconfigurable cryptographic primitives: TRNG and PUF | |
Yamashita et al. | Redshift: Manipulating signal propagation delay via continuous-wave lasers | |
Paul et al. | Rihann: Remote iot hardware authentication with intrinsic identifiers | |
JP2011107930A (ja) | 半導体集積回路、情報処理装置、およびデータ処理方法、並びにプログラム | |
Xu et al. | Bimodal oscillation as a mechanism for autonomous majority voting in PUFs | |
Qu et al. | Digital fingerprint: A practical hardware security primitive | |
Yu et al. | On designing PUF-based TRNGs with known answer tests |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20120807 |