(57)【要約】【課題】集積回路の既存のフリップフロップを利用して乱数やＩＤ生成を行う構成を実現する。【解決手段】ＬＳＩなどの集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップから、電源投入時のフリップフロップ設定値を入力するデータ収集部を設けた。データ収集部は、スキャンチェーンまたは独立の接続パスを経由して電源投入時のフリップフロップ設定値を入力し、入力値に基づく乱数または固定データとしてのＩＤ生成処理を実行する。この構成により、ＬＳＩ等の集積回路に形成された既存のフリップフロップをそのまま利用して乱数やＩＤの生成を行うことが可能となる。【選択図】図５
2010266417.tif 000002
【特許請求の範囲】
【請求項１】
集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップと、
前記スキャンチェーンに接続された複数のフリップフロップの設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集部を有し、
前記データ収集部は、
前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値を入力して、入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行する半導体集積回路。
【請求項２】
前記半導体集積回路は、
前記スキャンチェーンを介したスキャンテストを実行するスキャンテストモードと、前記スキャンチェーンを介したデータ収集を実行するデータ収集モードとの切り替え制御を実行する制御部を有し、
前記データ収集部は、
前記制御部におけるデータ収集モードへの切り替えに応じて、フリップフロップ設定値を入力する請求項１に記載の半導体集積回路。
【請求項３】
前記制御部は、前記スキャンチェーンに接続された複数のフリップフロップに先行して電源供給可能な構成を有し、前記制御部の制御の下に前記複数のフリップフロップに対する電源投入処理が行われる請求項２に記載の半導体集積回路。
【請求項４】
前記データ収集部は、
電源投入時の複数のフリップフロップの設定値から、特定のフリップフロップ対応の設定値を選択して前記固定データを生成する請求項１に記載の半導体集積回路。
【請求項５】
前記データ収集部は、
電源投入時に固定的な設定値を保持する固定値設定フリップフロップと、
電源投入時に不確定な設定値を保持する不確定値設定フリップフロップを識別するフリップフロップ判別データを生成または保持し、
前記データ収集部は、
前記フリップフロップ判別データを適用して、電源投入時の複数のフリップフロップの設定値から、固定値設定フリップフロップの設定値のみを選択的に取得して、取得データから前記固定データを生成する請求項４に記載の半導体集積回路。
【請求項６】
前記データ収集部は、
前記固定データを、半導体集積回路対応の識別情報（ＩＤ）として生成する請求項４または５に記載の半導体集積回路。
【請求項７】
前記データ収集部は、
前記フリップフロップ設定値を入力して生成した値を、前記集積回路に含まれるデータ処理部に提供する処理を行う請求項１〜６に記載の半導体集積回路。
【請求項８】
前記請求項１〜７いずれかに記載の半導体集積回路を備えた情報処理装置。
【請求項９】
情報処理装置において実行する情報処理方法であり、
データ収集部が、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集ステップと、
前記データ収集部が、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行するデータ生成ステップと、
を有する情報処理方法。
【請求項１０】
情報処理装置において情報処理を実行させるプログラムであり、
データ収集部に、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力させるデータ収集ステップと、
前記データ収集部に、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行させるデータ生成ステップと、
を有するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路、情報処理装置、および情報処理方法、並びにプログラムに関する。さらに詳細には、乱数あるいはＩＤなどのデータ生成処理を実行する半導体集積回路、情報処理装置、および情報処理方法、並びにプログラムに関する。
【背景技術】
【０００２】
電子機器におけるデジタル回路にはビット値の保持や転送処理回路としてのフリップフロップ（ＦＦ）が多数利用されている。フリップフロップ（ＦＦ）は、ビット値（０，１）を保持し、ビット値入出力を高速に行うことが可能であり、例えばキャッシュメモリやレジスタ、その他の電子回路を構成する素子として多く利用されている。なお、以下、本明細書においてフリップフロップをＦＦとして略して表現する場合がある。
【０００３】
フリップフロップ（ＦＦ）は、０または１のビット値を設定することが可能であるが、電源投入時に設定される値は、多くの場合０または１のいずれか一方に定まるものではなく不確定値になることが知られている。
【０００４】
非特許文献１は、このフリップフロップ（ＦＦ）の電源投入時の設定値の不確定性を利用した乱数生成器を開示している。非特許文献１は、線形帰還シフトレジスタ（ＬＦＳＲ：ｌｉｎｅａｒ  ｆｅｅｄｂａｃｋ  ｒｅｇｉｓｔｅｒ）や、セルオートマトンシフトレジスタ（ＣＡＳＲ：ｃｅｌｌｕｌａｒ  ａｕｔｏｍａｔａ  ｓｈｉｆｔ  ｒｅｇｉｓｔｅｒ）を構成するフリップフロップ（ＦＦ）を用いた乱数生成器を開示している。ＬＦＳＲやＣＡＳＲを動作させるためには、本来、初期値が必要である。非特許文献１に開示された乱数生成器は、状態を保持するＦＦの電源投入時の不確定値を保持することによって、ＬＦＳＲやＣＡＳＲの初期値を電源投入ごとに変動させる構成としている。
【０００５】
また、非特許文献１に記載されたフリップフロップ（ＦＦ）と類似する構造をもつ素子としてＳＲＡＭのメモリセルがある。ＳＲＡＭのメモリセルも電源投入時の多くのセルの設定値が不確定値になることが知られている。非特許文献２ではこのＳＲＡＭの電源投入時の性質を利用して、不確定値になるセルのうち、ランダムに変動するセルを乱数生成に利用、固定値を示すセルをチップＩＤ生成として利用する方法を提案している。
【０００６】
不確定値の生成原理について
上記の非特許文献１，２に開示されているように、ＦＦおよびＳＲＡＭメモリセルが電源投入時に不確定値になることはよく知られた事実である。以下、図を参照して不確定値の生成原理について簡単に説明する。
【０００７】
両者の素子が電源投入時に不確定な値を示すことは、素子の構造に起因している。
図１はＤ型フリップフロップ（Ｄ−ＦＦ）の構造を示した図である。図１（ａ）が全体構造、図１（ｂ）が詳細構造を示している。
図２はＳＲＡＭのメモリセルの構造を示した図である。図２（ａ）が全体構造、図２（ｂ）が１つのメモリセルの詳細構造を示している。
両者ともビット情報０、１を記憶するために、２つのインバータが相互に接続された構造を持っている。図１のインバータ１１，１２、図２のインバータ２１，２２である。
【０００８】
図３（ａ）はフリップフロップ（ＦＦ）と、ＳＲＡＭセルに共通する構造であるインバータ３１，３２が相互に接続された構造を切り出して示した図である。図３（ａ）に示すインバータ接続構造において、Ａ、Ｂそれぞれの電位が（Ｈ，Ｌ）もしくは（Ｌ，Ｈ）の２つの安定な状態を持つことができる。ＦＦおよびＳＲＡＭセルは、この２つの安定状態を、それぞれをデジタルデータの１と０に対応させることでＦＦ設定値データとして記憶している。
【０００９】
通常動作時はどちらかの安定状態にＦＦ設定値を確定させるため、外部から継続的な電圧印加などの制御が行われるので不確定な値になることはない。しかし、電源投入時の初期的な設定値はトランジスタの製造ばらつきや電圧変動、ノイズなどによって決まるため、どちらの値で安定になるかは素子ごとに異なる。
【００１０】
図３（ｂ）は、図３（ａ）に示す素子をＭＯＳＦＥＴのレベルで表現した図である。この図３（ｂ）において、電源投入時の初期状態、つまり図３（ｂ）に示す構造中の部位［Ｘ］の電圧が０からＶｄｄへ変化する過程を考える。部位［Ｘ］の電圧が０の場合、ＰＭＯＳ４１，４２ともにＯＮの状態にあるため、Ａ、Ｂの電位は０である。
【００１１】
電源が投入されると、Ａ、Ｂの電位も上昇していくが、ＰＭＯＳ４１，４２の閾値は完全に一致しない場合、閾値の低いＰＭＯＳ側が先にＯＦＦの状態になる。この場合、ＡもしくはＢのどちらかのＯＦＦになったＰＭＯＳ側の電位は０に低下していき、最終的にＡ、Ｂは（Ｖｄｄ、０）もしくは（０、Ｖｄｄ）のどちらかの安定状態に落ち着く。一般に、ＭＯＳトランジスタの閾値はトランジスタの製造ばらつきや電圧変動、ノイズなどによって一致しないため、電源投入時の安定値は物理的条件によって決まるため、素子ごとに異なり、不確定になる。
【００１２】
なお、この初期的な設定値は、個々のＦＦやＳＲＡＭセルごとに特性が異なり、電源投入の度に異なる値を示す素子もあり、常に固定の値を示す素子に分けることができる。これは双方のＰＭＯＳの閾値と物理的条件によって決まってくる。
【００１３】
このように各ＦＦの値は電源投入の度にランダムな値を示すものと固定の値を示すものとに分かれる。上記の［非特許文献１］の方式ではＦＦが高々４０個程度のＦＦしか用いていないため、固定値を示すＦＦが多く含まれるような状況では、十分に乱数を取得できない可能性がある。なお、［非特許文献３］においても同様の問題点の指摘がなされている。この対策としてＦＦの数を増やすことも考えられるが、実装面積の増大を招くために現実的には厳しい。
【００１４】
［非特許文献２］の構成はＦＦの代わりにＳＲＡＭメモリセルを利用するため、ランダムに変動する不確定なセルを豊富に確保することができる。［非特許文献２］では実験により１２８ｂｉｔのランダムビットを取得するために２０４８ｂｉｔのメモリセルのデータを必要としたとの結果が示されている。従って従来技術２［非特許文献２］に開示されたメモリセルを用いた構成は、十分なビット数の確保が可能となり、上述した従来技術１［非特許文献１］の問題点は解決される。
【００１５】
しかし、ＦＦ、ＳＲＡＭのメモリセル、いずれの構成を用いた場合でも、これらの構成を利用して生成するデータを暗号処理における乱数や、あるいは演算用データ、認証用データなどに利用する場合、これらのデータは秘密情報であることが多い。従って、生成データは容易に外部に漏洩されない構成とすることが必要となる。従って、上記の各非特許文献に示すような処理構成を利用して、ＦＦやＳＲＡＭのメモリセルを利用した乱数取得用の専用回路を設定し、かつこの専用回路を外部にデータが漏洩しないようなセキュア回路とすると、集積回路上の面積の増加やコストアップを引き起こすことになる。
【先行技術文献】
【非特許文献】
【００１６】
【非特許文献１】Ｔ．Ｅ．Ｔｋａｃｉｋ，"Ａ  Ｈａｒｄｗａｒｅ  Ｒａｎｄｏｍ  Ｎｕｍｂｅｒ  Ｇｅｎｅｒａｔｏｒ"，ＣＨＥＳ２００２，ＬＮＣＳ  ｖｏｌ．２５２３，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，２００３，ｐｐ．４５０−４５３．
【非特許文献２】Ｄ．Ｅ．Ｈｏｌｃｏｍｂ，Ｗ．Ｐ．Ｂｕｒｌｅｓｏｎ，ａｎｄ  Ｋ．Ｆｕ．，"Ｉｎｉｔｉａｌ  ＳＲＡＭ  ｓｔａｔｅ  ａｓ  ａ  ｆｉｎｇｅｒｐｒｉｎｔ  ａｎｄ  ｓｏｕｒｃｅ  ｏｆ  ｔｒｕｅ  ｒａｎｄｏｍ  ｎｕｍｂｅｒｓ  ｆｏｒ  ＲＦＩＤ  ｔａｇｓ"，Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  ＲＦＩＤ  Ｓｅｃｕｒｉｔｙ  ０７，Ｊｕｌｙ  １１−１３，２００７．
【非特許文献３】Ｍ．Ｄｉｃｈｔｌ，"Ｈｏｗ  ｔｏ  ｐｒｅｄｉｃｔ  ｔｈｅ  Ｏｕｔｐｕｔ  ｏｆ  ａ  Ｈａｒｄｗａｒｅ  Ｒａｎｄｏｍ  Ｎｕｍｂｅｒ  Ｇｅｎｅｒａｔｏｒ"，ＣＨＥＳ２００３，ＬＮＣＳ  ｖｏｌ．２７７９，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，２００３，ｐｐ．１８１−１８８．
【発明の概要】
【発明が解決しようとする課題】
【００１７】
本発明は、例えば上述の状況に鑑みてなされたものであり、新たなフリップフロップ（ＦＦ）回路を設定することなく、既存のデバイス内のフリップフロップ（ＦＦ）を利用した乱数やＩＤなどのデータ生成を可能とした半導体集積回路、情報処理装置、および情報処理方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明の第１の側面は、
集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップと、
前記スキャンチェーンに接続された複数のフリップフロップの設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集部を有し、
前記データ収集部は、
前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値を入力して、入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行する半導体集積回路にある。
【００１９】
さらに、本発明の半導体集積回路の一実施態様において、前記半導体集積回路は、前記スキャンチェーンを介したスキャンテストを実行するスキャンテストモードと、前記スキャンチェーンを介したデータ収集を実行するデータ収集モードとの切り替え制御を実行する制御部を有し、前記データ収集部は、前記制御部におけるデータ収集モードへの切り替えに応じて、フリップフロップ設定値を入力する。
【００２０】
さらに、本発明の半導体集積回路の一実施態様において、前記制御部は、前記スキャンチェーンに接続された複数のフリップフロップに先行して電源供給可能な構成を有し、前記制御部の制御の下に前記複数のフリップフロップに対する電源投入処理が行われる。
【００２１】
さらに、本発明の半導体集積回路の一実施態様において、前記データ収集部は、電源投入時の複数のフリップフロップの設定値から、特定のフリップフロップ対応の設定値を選択して前記固定データを生成する。
【００２２】
さらに、本発明の半導体集積回路の一実施態様において、前記データ収集部は、電源投入時に固定的な設定値を保持する固定値設定フリップフロップと、電源投入時に不確定な設定値を保持する不確定値設定フリップフロップを識別するフリップフロップ判別データを生成または保持し、前記データ収集部は、前記フリップフロップ判別データを適用して、電源投入時の複数のフリップフロップの設定値から、固定値設定フリップフロップの設定値のみを選択的に取得して、取得データから前記固定データを生成する。
【００２３】
さらに、本発明の半導体集積回路の一実施態様において、前記データ収集部は、前記固定データを、半導体集積回路対応の識別情報（ＩＤ）として生成する。
【００２４】
さらに、本発明の半導体集積回路の一実施態様において、前記データ収集部は、前記フリップフロップ設定値を入力して生成した値を、前記集積回路に含まれるデータ処理部に提供する処理を行う。
【００２５】
さらに、本発明の第２の側面は、
前記請求項１〜６いずれかに記載の半導体集積回路を備えた情報処理装置にある。
【００２６】
さらに、本発明の第３の側面は、
情報処理装置において実行する情報処理方法であり、
データ収集部が、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力するデータ収集ステップと、
前記データ収集部が、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行するデータ生成ステップと、
を有する情報処理方法にある。
【００２７】
さらに、本発明の第４の側面は、
情報処理装置において情報処理を実行させるプログラムであり、
データ収集部に、集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップの電源投入時の設定値を、前記スキャンチェーンまたは独立の接続パスを経由して入力させるデータ収集ステップと、
前記データ収集部に、前記複数のフリップフロップに対する電源投入時のフリップフロップ設定値からなる入力値に基づく乱数または乱数生成用データまたは固定データの生成処理を実行させるデータ生成ステップと、
を有するプログラムにある。
【００２８】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な画像処理装置やコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、画像処理装置やコンピュータ・システム上でプログラムに応じた処理が実現される。
【００２９】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００３０】
本発明の一実施例によれば、ＬＳＩなどの集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップから、電源投入時のフリップフロップ設定値を入力するデータ収集部を設けた。データ収集部は、スキャンチェーンまたは独立の接続パスを経由して電源投入時のフリップフロップ設定値を入力し、入力値に基づく乱数または固定データとしてのＩＤ生成処理を実行する。この構成により、ＬＳＩ等の集積回路に形成された既存のフリップフロップをそのまま利用して乱数やＩＤの生成を行うことが可能となる。
【図面の簡単な説明】
【００３１】
【図１】Ｄ型フリップフロップ（Ｄ−ＦＦ）の構造を示す図である。
【図２】ＳＲＡＭのメモリセルの構造を示す図である。
【図３】フリップフロップ（ＦＦ）と、ＳＲＡＭセルに共通する構造であるインバータが相互に接続された構造について説明する図である。
【図４】半導体集積回路の一例としてのＬＳＩの構成例について説明する図である。
【図５】本発明の半導体集積回路の一構成例について説明する図である。
【図６】本発明の半導体集積回路を適用したデータ生成処理シーケンスについて説明するフローチャートを示す図である。
【図７】乱数やＩＤの生成、利用処理の具体例について説明する図である。
【図８】擬似乱数生成部の構成および処理の一例について説明する図である。
【図９】ＩＤ生成処理と利用処理について説明する図である。
【図１０】データ収集部の構成例について説明する図である。
【図１１】データ収集部のデータ抽出部が実行する処理の具体例について説明する図である。
【図１２】データ収集部のデータ抽出部が実行する処理の具体例について説明する図である。
【図１３】データ収集部の後処理部の構成と実行する処理の具体例について説明する図である。
【図１４】データ収集部の後処理部の構成と実行する処理の具体例について説明する図である。
【図１５】データ収集部の後処理部の構成と実行する処理の具体例について説明する図である。
【図１６】本発明の半導体集積回路の一構成例について説明する図である。
【図１７】本発明の半導体集積回路の一構成例について説明する図である。
【図１８】本発明の半導体集積回路を適用したデータ生成処理シーケンスについて説明するフローチャートを示す図である。
【発明を実施するための形態】
【００３２】
以下、図面を参照しながら本発明の半導体集積回路、情報処理装置、および情報処理方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。
１．半導体集積回路におけるスキャンテストについて
２．本発明の半導体集積回路の一実施例について
３．データ生成処理シーケンスについて
４．乱数およびＩＤ情報の生成処理、利用処理例について
５．データ収集部の詳細構成について
６．その他の構成例について
６−１．スキャンチェーンと異なるＦＦ接続パスを利用した例
６−２．電源供給構成を変更した実施例
【００３３】
［１．半導体集積回路におけるスキャンテストについて］
図４には、半導体集積回路の一例としてのＬＳＩ１００を示している。ＬＳＩ１００は、演算などのデータ処理を実行する様々な回路素子によって構成された組み合わせ回路１１２を有し、さらにレジスタやキャッシュメモリなどに利用される多数のフリップフロップ（ＦＦ）１１１が形成されている。
【００３４】
半導体集積回路としてのＬＳＩチップやＩＣチップには、図４に示すように、チップ内部に形成された多数のフリップフロップ（ＦＦ）１１１を実用上の結線とは無関係の接続線で結んだスキャンチェーン１１０が形成される。フリップフロップ（ＦＦ）１１１の接続構成として構成されるスキャンチェーン１１０を利用してＦＦ間でデータを転送させることで、ＦＦの状態を直接制御、観測し、回路上の物理的故障を検出することが可能となる。このように、スキャンチェーンは、ＬＳＩやＩＣチップの製造や設計段階でのテスト用回路として利用されている。
【００３５】
スキャンチェーン１１０によって接続されているＦＦ１１１は一つの大きなシフトレジスタとして動作させることができるため、入力部（ＳＣＡＮ＿ＩＮ）１０１から故障を検出したいノードが接続されている各ＦＦへテストパターンを入力（スキャンイン）し、次にシステムクロックで回路を動作させ、状態の変化したＦＦの期待値を出力部（ＳＣＡＮ＿ＯＵＴ）１０２から出力（スキャンアウト）することができる。この出力値を検証することで故障部位を判定するといった回路テストが可能となる。
【００３６】
スキャンチェーン１１０は、回路の検証という目的から、ＬＳＩが含むほぼすべてのＦＦが接続される。なお、以下では、半導体集積回路の一例としてＬＳＩを利用した例について説明するが、本発明は、ＬＳＩに限らず、複数のＦＦが形成されたＩＣチップ、半導体集積回路に適用可能である。
【００３７】
スキャンチェーンに接続されているＦＦの数はＬＳＩの規模と実装によるため具体的に示すことは難しいが、１００万ゲート規模のＬＳＩが存在する現状から、内部に含まれるＦＦの数も非常に多いことが容易に想像できる。なお、非常に長いスキャンチェーンはテストの時間を増大させるため、複数本に分割されたスキャンチェーンを実装することもある。
【００３８】
［２．本発明の半導体集積回路の一実施例について］
図４に示す回路は、デジタル回路における一般的な回路構成である。入力部（ＳＣＡＮ＿ＩＮ）１０１から出力部（ＳＣＡＮ＿ＯＵＴ）１０２までの接続構成がスキャンチェーン１１０を表している。
【００３９】
図５を参照して本発明の半導体集積回路の一構成例について説明する。図５に示すＬＳＩ１２０において、回路部１３０は先に図４を参照して説明したと同様の回路構成を持つ。すなわち、データ処理を実行する様々な回路素子によって構成された組み合わせ回路１３３を有し、さらにレジスタやキャッシュメモリなどに利用される多数のフリップフロップ（ＦＦ）１３１を有する。多数のフリップフロップ（ＦＦ）１３１は結線されスキャンチェーン１３２を構成している。集積回路のテスト用パスとして設定されたスキャンチェーン１３２である。
【００４０】
本発明のＬＳＩ１２０は、スキャンチェーン１３２の途中、もしくは最終出力部にスキャンチェーン１３２で接続されたＦＦの値を収集するためのデータ収集部１４１を持つ。さらに、スキャン動作（スキャンモード）と通常ＬＳＩ動作（ＬＳＩ動作モード）との配線の切り替えの制御、およびデータ収集部１４１の動作を制御するための制御部１４２を有する。
【００４１】
スキャンチェーン１３２を利用したテスト処理は、先に説明した図４に示す回路と同様、入力部（ＳＣＡＮ＿ＩＮ）１２１から故障を検出したい各ＦＦへテストパターンを入力（スキャンイン）し、次にシステムクロックで回路を動作させ、状態の変化したＦＦの期待値を出力部（ＳＣＡＮ＿ＯＵＴ）１２２から出力（スキャンアウト）することで故障を検証することができる。
【００４２】
図５に示す構成では、データ収集部１４１をスキャンチェーン１３２の最終出力部に設定した例である。すなわち出力部（ＳＣＡＮ＿ＯＵＴ）１２２の手前にデータ収集部１４１を構成している。
【００４３】
データ収集部１４１は、スキャンチェーン１３２を介して、ＬＳＩ１２０内のスキャンチェーン１３２で接続されたＦＦ１３１の値を取得する。例えば電源投入時のＦＦ設定値を収集する。電源投入時のＦＦ設定値には多くの不確定値が含まれる。先に説明したように、フリップフロップ（ＦＦ）は電源投入時には１または０いずれの値に設定されるかが固定されずランダムな値となる場合がある。データ収集部１４１は、例えば、このような電源投入時の複数のフリップフロップ（ＦＦ）の設定値を、スキャンチェーンを介して収集する。収集した値を乱数やＩＤとして利用する。
【００４４】
先に説明したように、フリップフロップ（ＦＦ）は、個々に素子特性が異なり、電源投入時の初期的な設定値の態様に応じて以下の２種類の素子に区分することができる。
（ａ）ランダムな不確定値を示す素子：不確定値設定素子（不確定値設定ＦＦ）
（ｂ）常に固定値を示す素子：固定値設定素子（固定値設定ＦＦ）
これらの２種類の素子に分けることができる。
これは双方のＰＭＯＳの閾値と物理的条件によって決まってくる。
【００４５】
電源投入の度に異なる設定値を示す不確定値設定素子（不確定値設定ＦＦ）から取得される値は、例えば演算処理や暗号処理などに適用する乱数として利用することが可能である。
また、電源投入の度に固定値を示す固定値設定素子（固定値設定ＦＦ）から取得される値は、例えばＬＳＩチップ対応のＩＤなどに設定して利用することが可能である。
【００４６】
なお、データ収集部１４１において収集した値を乱数や、ＬＳＩチップ対応のＩＤとして用いる場合などには、データ収集部１４１が取得した値を、ＬＳＩ１２０内部の演算回路やメモリなどに出力して利用するといった処理が行われる。この処理構成については後述する。
【００４７】
スキャンチェーンにはＬＳＩチップ内の非常に多くのＦＦが接続されているため、チップ面積を増やすことなく十分なビット数のデータを取得できる。例えば数十〜数千ビットのビット列からなる値を取得することが可能であり、この取得値を利用して乱数やＩＤを生成して利用することができる。
【００４８】
データ収集部１４１とスキャンチェーン１３２との接続方法は、様々な設定が可能である。図５に示す例では、１本のスキャンチェーンをデータ収集部１４１に入力する構成である。例えば、テストを効率的に実施するためにスキャンチェーンが複数本配線される場合もある。ＬＳＩに複数のスキャンチェーンが設定されている場合は、データ収集部は、複数のスキャンチェーンのデータを並列もしくは選択的に収集する構成としてもよい。データ収集部に、複数のスキャンチェーンのデータを入力する構成とした場合、データ収集部の内部にマージ処理部を設定し、各スキャンチェーンの入力データをマージしてそのマージ結果を乱数やＩＤとして利用することができる。
【００４９】
［３．データ生成処理シーケンスについて］
次に、例えば図５に示す構成を持つ本発明の半導体集積回路を適用したデータ生成処理シーケンスについて図６に示すフローチャートを参照して説明する。
【００５０】
ステップＳ１０１において、ＬＳＩ１２０の電源をオンにする。各ＦＦはそれぞれの物理的な条件の違いによって、初期設定値［０］または［１］をＦＦ内部に保持する。
ステップＳ１０２において、制御部１４２の動作を開始する。制御部１４２はスキャンチェーン１３２が利用できるように、ＦＦのモードをスキャンモードに変更する。
【００５１】
ステップＳ１０３において、スキャンチェーン１３２に接続されたフリップフロップ（ＦＦ）の保持データを、スキャンチェーン１３２を介してデータ収集部１４１に入力する。データ収集部１４１は、乱数生成／ＩＤ生成いずれかの目的に応じて内部で必要な処理が実施された後、データとして出力または保持する。
【００５２】
ステップＳ１０４において、データ収集部１４１によるデータ収集の後、制御部１４２はスキャンモードを解除し、リセットをかけてＦＦを初期化し、通常のＬＳＩ動作モードに変更する。
【００５３】
ステップＳ１０５では、ＬＳＩ動作モードに設定された状態において、ステップＳ１０４でデータ収集部が取得したデータをＬＳＩ１２０内部のセキュリティブロックへ供給し、乱数、あるいは乱数生成用のデータ、あるいはＩＤ、例えばＬＳＩチップ識別子などに適用する固有の値（ＩＤ）などに利用する。
【００５４】
なお、先に説明したように、フリップフロップ（ＦＦ）は個々に素子特性が異なり、電源投入時の初期的な設定値がランダムとなる素子と固定となる素子、すなわち、
（ａ）ランダムな不確定値を示す素子：不確定値設定素子（不確定値設定ＦＦ）
（ｂ）常に固定値を示す素子：固定値設定素子（固定値設定ＦＦ）
これらの２種類の素子がある。
データ収集部が取得したデータを乱数として適用する場合は、上記２種類の素子の出力値の混在データを利用することが可能であるが、ＩＤとして利用する場合には、常に固定されたデータである必要があり、特定の固定値設定素子（固定値設定ＦＦ）から取得したデータを選択して利用することが必要となる。この処理については後述する。
【００５５】
［４．乱数およびＩＤ情報の生成処理、利用処理例について］
次に、図６を参照して説明した処理におけるステップＳ１０５の乱数やＩＤの生成、利用処理の具体例について、図７以下を参照して説明する。
【００５６】
（４−１．乱数生成処理および利用処理について）
まず、図７、図８を参照して乱数生成処理と利用処理について説明する。図７に示すＬＳＩ１２０は、図５に示すＬＳＩ１２０と同一のＬＳＩである。乱数生成処理に関連する構成部のみを示している。
【００５７】
データ収集部１４１は、スキャンチェーン１３２を介してＬＳＩ１２０に対する電源投入時のＦＦ設定値を入力する。スキャンチェーンに接続されたＦＦの個数分のビット長のデータがデータ収集部１４１に入力される。例えば１００個のＦＦがスキャンチェーンに接続されている場合１００ビットデータがデータ収集部１４１に入力される。
【００５８】
データ収集部１４１はスキャンチェーン１３２から入力したデータを、セキュリティデータ処理部１５０に入力する。セキュリティデータ処理部１５０は、乱数生成処理を行う擬似乱数生成部（ＰＲＮＧ：Ｐｓｅｕｄｏ−Ｒａｎｄｏｍ  Ｎｕｍｂｅｒ  Ｇｅｎｅｒａｔｏｒ）１５１を有している。セキュリティデータ処理部１５０は、データ収集部１４１からの入力データを擬似乱数生成部（ＰＲＮＧ）１５１に入力して乱数生成処理を行い、生成した乱数をデータ処理部１６０に出力する。データ処理部１６０は、例えば、データ処理部１６０は、例えば公開鍵暗号やデジタル署名のアルゴリズム、あるいは認証プロトコルなどの処理を行う。
【００５９】
擬似乱数生成部（ＰＲＮＧ）１５１の構成および処理について図８を参照して説明する。擬似乱数生成部（ＰＲＮＧ）１５１のシード入力部１５２は、データ収集部１４１からの入力ビット列から乱数生成に利用するシードを入力する。
【００６０】
乱数出力部１５３は、シード入力部１５２からシードを入力して、予め定められた擬似乱数生成アルゴリズムを適用して、所定ビット数の乱数を生成して出力する。例えばシードを初期値として、予め定められた所定のアルゴリズムに従って内部状態（ｉｎｔｅｒｎａｌ  ｓｔａｔｅ）を更新して、乱数ビット列（ｒａｎｄｏｍ  ｂｉｔ  ｓｅｑｕｅｎｃｅ）を連続的に生成してデータ処理部１６０に出力する。
【００６１】
（４−２．ＩＤ生成処理および利用処理について）
次に、図９を参照してＩＤ生成処理と利用処理について説明する。データ収集部がスキャンチェーンを介して複数のＦＦから取得したデータをＩＤとして利用する処理例について説明する。なお、ＩＤとして利用する場合は、常に固定されたデータである必要があり、特定の固定値設定素子（固定値設定ＦＦ）から取得したデータを選択して利用する。この処理については後述する。まず、ＩＤの利用例について、図９を参照して説明する。
【００６２】
ＩＤは、例えばＬＳＩ固有の識別子（ＩＤ）として、各ＬＳＩに対応付けて設定され、図９に示すようにＬＳＩ管理データベース２１０にＩＤと製造情報などを対応付けて管理される。このデータは、例えばＬＳＩ製造工場などにおける管理情報として利用可能である。
【００６３】
図９に示す例は、ＬＳＩ製造工場において、ＬＳＩ管理データベース２１０に図９（ａ）に示すようにＬＳＩチップ対応のＩＤと、製造情報とを対応付けたＬＳＩ個別の管理情報を生成して管理する例である。図９（ｂ）に示すように多数のＬＳＩチップが製造され、それぞれのＬＳＩチップ内のＦＦを接続したスキャンチェーン１３２を介してデータ収集部１４１が収集したＦＦの設定値からなるビット列をＬＳＩチップＩＤとする。このＩＤをデータベース２１０に製造情報に対応付けて格納する。
【００６４】
このようにＬＳＩ対応のＩＤをＬＳＩ製造時に取得し、製造情報とひも付けすることによって、チップ出荷後の不良解析に活用することができる。また別の利用方法として、ＩＤをチップ毎の秘密情報の暗号化や認証のための鍵として利用することも可能である。さらに、例えばＬＳＩを装着したＰＣなどに対してアプリケーションプログラムを提供する場合のライセンス情報として利用することも可能である。すなわちハードウェア固有情報として利用することもできる。
【００６５】
［５．データ収集部の詳細構成について］
次に、図５に示すデータ収集部１４１の構成と処理の詳細について説明する。データ収集部１４１の構成例を図１０に示す。
データ収集部１４１は、図１０に示すように、切り替え部２２１、データ抽出部２２２、後処理部２２３、データ格納部２２４を有する。
【００６６】
切り替え部２２１は、制御部１４２からのモード切り替え信号を入力して、モードに応じて、スキャンチェーン１３２のからの入力データの出力先を切り替える。
すなわち、データ収集モードに設定されている場合は、スキャンチェーン１３２のからの入力データをデータ抽出部２２２側に出力する。
スキャンテストモードに設定されている場合は、スキャンチェーン１３２のからの入力データを出力部（ＳＣＡＮ＿ＯＵＴ）１２２に出力する。
切り替え部２２１は、データ収集モードに設定されている場合は、収集データが出力部（ＳＣＡＮ＿ＯＵＴ）１２２を経由して外部から観測できないようにモード切り替えに応じた出力制御を行う。
【００６７】
データ収集モードに設定されている場合、切り替え部２２１はスキャンチェーン１３２のからの入力データをデータ抽出部２２２側に出力する。
データ抽出部２２２はスキャンチェーン１３２を介して送られてくるビット列から、必要なデータを取得するブロックである。
後処理部２２３はスキャンチェーン１３２を介して収集されるデータシーケンスから乱数生成もしくはチップＩＤ生成のために必要なデータへ加工する機能を有するブロックである。すなわち、スキャンチェーン１３２に接続された順番のＦＦの設定値から構成されるビット列からなるデータシーケンスから乱数生成もしくはチップＩＤ生成のために必要なデータへ加工する処理を行う。
またデータ格納部２２４は後処理部２２３で処理したデータ、すなわち乱数やＩＤを保持する機能を有する。データ格納部２２４は例えば、取得に必要なデータ量に対応してリセットのないＦＦや揮発性メモリ、不揮発性メモリを用いて保持する機能を有する。
【００６８】
なお、データ抽出部２２２と、後処理部２２３と、データ格納部２２４は、スキャンチェーン１３２を介して収集するデータを乱数として利用するかあるいはＩＤとして利用するかに応じて異なる処理を行う場合がある。データ抽出部２２２と、後処理部２２３と、データ格納部２２４は、制御部１４２からの取得データ識別信号を入力して処理態様を変更する。なお、ＬＳＩチップに応じて、いずれか一方の処理、すなわち乱数生成、あるいは固定データとしてのＩＤ取得、いずれか一方の処理のみを行う設定としてもよい、このような設定の場合は、データ抽出部２２２と、後処理部２２３と、データ格納部２２４は固定された処理を行うことが可能であり、制御部１４２からの取得データ識別信号は不要である。
【００６９】
以下、データ抽出部２２２と、後処理部２２３と、データ格納部２２４の処理の具体例について説明する。
【００７０】
（データ抽出部２２２の処理）
データ抽出部２２２はスキャンチェーン１３２を介して送られてくるビット列から、必要なデータを取得するブロックである。
【００７１】
先に説明したように、フリップフロップ（ＦＦ）は個々に素子特性が異なり、電源投入時の初期的な設定値がランダムとなる素子と固定となる素子、すなわち、
（ａ）ランダムな不確定値を示す素子：不確定値設定素子（不確定値設定ＦＦ）
（ｂ）常に固定値を示す素子：固定値設定素子（固定値設定ＦＦ）
これらの２種類の素子がある。
データ収集部が取得したデータを乱数として適用する場合は、上記２種類の素子の出力値の混在データを利用することが可能であるが、ＩＤとして利用する場合には、常に固定されたデータである必要があり、特定の固定値設定素子（固定値設定ＦＦ）から取得したデータを選択して利用することが必要となる。
【００７２】
データ抽出部２２２はスキャンチェーン１３２に接続された順番にＦＦの設定値を並べたビット列からなるデータシーケンスを受け取る。このデータシーケンスは、不確定値設定素子（不確定値設定ＦＦ）と固定値設定素子（固定値設定ＦＦ）のビット値が混在したデータ列である。
【００７３】
乱数を取得または生成するする場合は、不確定値設定素子（不確定値設定ＦＦ）と固定値設定素子（固定値設定ＦＦ）のビット値の混在データを利用可能であるが、ＩＤを取得する場合は、固定値設定素子（固定値設定ＦＦ）のビット値のみを選択して取得する処理が必要になる。
【００７４】
従って、データ抽出部２２２は、取得データを乱数生成などに利用する場合は、スキャンチェーン１３２から取得するデータを選別することなく、必要なビット数分のデータを抽出して、後処理部２２３に出力する。
一方、取得データをＩＤなどに利用する場合は、スキャンチェーン１３２から取得するデータから、固定値設定素子（固定値設定ＦＦ）のビット値のみを選択して取得して、後処理部２２３に出力する。
【００７５】
データ抽出部２２２は、取得データに応じてこの２つの異なる処理のいずれかを行う。以下、図１１、図１２を参照してこの２つの処理の具体例について説明する。
【００７６】
図１１は、取得データを乱数生成などに利用する場合のデータ抽出部２２２の処理例を示す図である。すなわち、スキャンチェーン１３２から取得するデータを選別することなく、必要なビット数分のデータを抽出して、後処理部２２３に出力する。
【００７７】
図１１（ａ）はスキャンチェーン１３２から取得するデータシーケンスの例を示している。０／１の連続するビット列を表しており、黒いセルが１、白いセルが０を表している。右端がスキャンチェーンの先頭ビットであり、左端がスキャンチェーンの最終ビットである。
【００７８】
この例では、スキャンチェーン１３２から取得するデータシーケンスから、不確定値設定素子（不確定値設定ＦＦ）のビット値と、固定値設定素子（固定値設定ＦＦ）のビット値とを選別する必要がない。抽出ブロックは、単純に設計者が決めたビット値取得開始位置（Ｓ）から後段の後処理ブロックで必要なビットサイズ（Ｗ）だけ切り出す処理を行う。
【００７９】
切り出し処理は、例えば図１１（ａ）に示すように、ビット列の１つのスタート位置から集めてもよいし、図１１（ｂ）に示すように、ビット列の複数のスタート位置から集めてもよい。
【００８０】
また、先に説明したように、ＬＳＩ内に複数の独立したスキャンチェーンが設定されている場合もある。この場合は、図１１（ｃ）のように、複数のスキャンパスの中から、取得ビット列を選択的に抽出してもよい。また（ａ），（ｂ），（ｃ）を適宜、組み合わせで抽出する構成としてもよい。このようにして抽出されたビットサイス（Ｗ）のビット列が後処理部２２３に出力される。
【００８１】
次に、図１２を参照して、スキャンチェーンからの入力値から固定データ、例えばＩＤを生成する場合の処理について説明する。この場合、データ抽出部２２２は、スキャンチェーンからの入力値から固定値設定素子（固定値設定ＦＦ）のビット値のみを選択する処理を実行する。
【００８２】
この処理を行う場合には、事前の処理として、例えばＬＳＩチップ製造時などに、複数回の電源ＯＮ処理を実行して、電源ＯＮ処理ごとに固定の値を示すＦＦからのデータがどの位置にあるかの検証処理を行う。すなわち、スキャンチェーンに接続された複数のＦＦが、固定値設定素子（固定値設定ＦＦ）であるか否かを検出する処理を行っておく。この固定値設定ＦＦ位置データを不揮発性メモリなどに保持しておく。
【００８３】
図１２（ａ）に示すデータが、この事前処理によって生成したマスクデータである。すなわち、
電源投入時に固定的な設定値を保持する固定値設定フリップフロップと、
電源投入時に不確定な設定値を保持する不確定値設定フリップフロップを識別するフリップフロップ判別データである。
マスクデータは、固定値設定ＦＦの位置を［白］、不確定値設定ＦＦの位置を［斜線］として示している。このマスクデータは、データ抽出部２２２内の揮発性メモリなどに保持しておく。
【００８４】
図１２（ｂ）は、ＩＤを取得する場合に、スキャンチェーン１３２から入力したビットシーケンスを示している。データ抽出部２２２は、この入力ビットシーケンスから、固定値設定ＦＦの位置のビット値のみを選択する。この選択処理に、（ａ）に示すマスクデータを利用する。（ａ）に示すマスクデータの白い部分が、固定値設定ＦＦの位置であり、この部分の値のみを利用すれば固定値データが得られる。
【００８５】
結果として、図１２（ｃ）に示す有効領域のみのデータを取得する。この有効領域データは、固定値設定ＦＦの位置にあるビットデータである。従って、常に固定されたビット値からなるデータが取得できる。なお、例えば取得データをＩＤとして利用する場合、固定されたスタート位置から固定されたビット長のデータを図１２（ｃ）の有効領域から選択する、
【００８６】
この処理によって、常に同一の固定ビット列を取得することが可能となり、例えばＬＳＩチップのＩＤとして利用することができる。
【００８７】
なお、図１２の例は固定値設定ＦＦの位置にあるビットデータのみを選択してＩＤとして利用する例であるが、逆に不確定値設定ＦＦのみのデータを選択して乱数として利用する構成も可能である。この場合、図１２（ａ）に示すマスクデータと逆のパターンのマスクデータを利用して不確定値設定ＦＦのみのデータを選択する。先に図１１を参照して説明した例では、固定値設定ＦＦと不確定値設定ＦＦのデータを混在させて乱数として利用する例であるが、このような設定とすることで、固定値設定ＦＦの固定ビットを含まない不確定値設定ＦＦのみの不確定ビットデータのみからなる乱数を生成することができる。
【００８８】
（後処理部２２３の処理）
次に、データ収集部１４１内の後処理部２２３の処理について説明する。後処理部２２３は、データ抽出部２２２の生成した乱数用データ、またはＩＤ用データのいずれかを、データ抽出部２２２から入力する。後処理部２２３の処理は、乱数生成用途とＩＤ生成用途では異なる処理となる。以下、乱数生成の場合と、ＩＤ生成の場合の処理について、順次説明する。
【００８９】
（乱数生成処理の場合）
乱数生成を行う場合、生成した乱数は、その後、ＬＳＩ内部の演算処理部に提供され、例えば暗号処理などの演算に適用されることになる。従って必要となる乱数のビット数は、ＬＳＩ内部において実行されるアルゴリズムに応じたビット数となる。
【００９０】
予め演算処理に必要となるビット数分の乱数をスキャンチェーンからの入力ビットのみで構成して、データ収集部１４１内のデータ格納部２２４に格納しておいてもよい。この場合には、後処理部２２３は、データ抽出部２２２の取得したビット長（Ｗ）のビット列に対して処理を行うことなく、データ格納部２２４に格納すればよい。
【００９１】
ただし、例えばＬＳＩ内部における実行アルゴリズムにおいて利用する乱数のビットサイズが大きい場合などには、データ格納部２２４に格納できない場合もある。また、ＬＳＩ内部における実行アルゴリズムが複数の異なる乱数を利用する場合なども想定される。
【００９２】
このような場合には、スキャンチェーンからの入力ビットによって構成されるビットシーケンスを擬似乱数生成用のシードデータとして利用する構成が有効である。以下、このシード生成を伴う擬似乱数生成構成について説明する。
【００９３】
例えば、疑似乱数生成（ＰＲＮＧ）アルゴリズムのための初期値である１６０ビット程度のシードをスキャンチェーンからの入力ビットによって生成する。図１３に、このシード生成処理を行う後処理部２２３の構成例を示す。
【００９４】
後処理部２２３は、図１３に示すように、データ抽出部２２２らの出力に対して、バイアス平滑処理を行うバイアス平滑部（ｂｉａｓ  ｃｏｒｒｅｃｔｏｒ）３０１、バイアス平滑部３０１の出力の統計的な性質をより改善するためのミキシング部（ｍｉｘｉｎｇ  ｆｕｎｃｔｉｏｎ）３０２を有する。
【００９５】
バイアス平滑部３０１は、データ抽出部２２２らの出力する所定サイズ（Ｗ）のビット列に基づいて所定サイズ（Ｗ２）のビット列のデータを生成する処理を実行する。ビットサイズは縮小、拡大居擦れの場合もあり得る。このビットサイズ変換処理には様々なアルゴリズムが適用可能である。例えば、既存のフォンノイマンアルゴリズムを適用した処理を行う構成とすることができる。
【００９６】
さらに、ミキシング部３０２は、バイアス平滑部３０１から出力するビットサイズ（Ｗ２）のデータ列に対して、ハッシュ関数やブロック暗号を使ってビットサイズを圧縮して予め設定されたシードに対応したビットサイズ（Ｗ３）のビット列を生成する。この処理には、例えば、以下の文献に記載された処理が適用できる。［Ａ．Ｓｏｏｈｏｏ，"Ｌｏｃｋｄｏｗｎ  Ｒａｎｄｏｍ  Ｎｕｍｂｅｒｓ  Ｓｅｃｕｒｅ  Ｎｅｔｗｏｒｋ  ＳｏＣ  Ｄｅｓｉｇｎｓ"，ＣｏｍｍｓＤｅｓｉｇｎ．ｃｏｍ，ｗｗｗ．ｃｏｍｍｓｄｅｓｉｇｎ．ｃｏｍ，Ａｐｒｉｌ  ０１，２００３．］
【００９７】
なお、図１３に示す後処理部２２３の構成例は一例であり、データ抽出部２２２から根の入力ビット列に基づいて所定のビットサイズのシードを生成できる構成であればその他の構成としてもよい。例えば、バイアス平滑部３０１のみの構成、ミキシング部３０２のみの構成といった構成としてもよい。
【００９８】
また、後処理部２２３の構成としては、図１４に示すように、データ抽出部２２２からの出力データの品質をチェックするためにオンラインテスト部３０３を追加した構成としてもよい。
【００９９】
オンラインテストは設計者が設定したテスト項目を実装したブロックであり、このテストをパスしたものを選択部３０４において選択し、シード（ｓｅｅｄ）値として採用する。テスト項目の例としては、データ列のビットの０／１の偏りを観測したり、データ列に同じ値が連続して続いていないかなどを観測する処理などである。予め設定したテスト結果に合格したビット列が設定されている場合にのみシード値として出力する。
【０１００】
（ＩＤ等の固定データ生成処理の場合）
次に、ＩＤ等の固定データを生成する場合のデータ収集部１４１内の後処理部２２３の処理について説明する。ＩＤのように固定したビット列を生成する用途の場合、例えばノイズなどによって誤ったビット列が生成されないような処理を行うことが必要となる。
【０１０１】
具体的には、例えば入力ビット値に対するエラー訂正を行う必要がある。ＩＤ等の固定データ生成処理を実行する後処理部２２３の構成例を図１５に示す。図１５に示す後処理部２２３は、エラー訂正部（ＥＣＣ  ｄｅｃｏｄｉｎｇ）３０５を有する。
【０１０２】
エラー訂正部３０５は、データ抽出部２２２からの出力に対して、エラー訂正による復号処理（ＥＣＣ  ｄｅｃｏｄｉｎｇ）を行うブロックである。エラー訂正部３０５においてエラー訂正を行った後にＩＤとして出力する。またエラー訂正を行うためのパリティをチップ製造時などの事前の段階において設定し、データ格納部２２４に格納する。あるいはその他の不揮発性メモリなどによって構成されるメモリに格納する。
【０１０３】
［６．その他の構成例について］
（６−１．スキャンチェーンと異なるＦＦ接続パスを利用した例）
これまでテスト容易化設計技術におけるスキャンチェーンを利用した方式について説明を行ってきたが、既存のスキャンチェーンを利用しない方式とすることも可能である。
【０１０４】
例えば、図１６に示すＬＳＩ４００のように、既存のスキャンチェーン４０１と利用しない構成としてもよい。特定のフリップフロップ（ＦＦ）を含むＦＦ回路ブロック４０２を設定し、ＦＦ回路ブロック４０２内のＦＦを接続したＦＦ接続パス４０５を設定し、ＦＦ接続パス４０５をデータ収集部４１０に接続する。この構成により、ＦＦ回路ブロック４０２内のＦＦの設定値（電源入力時の設定値）を入力することが可能となる。
【０１０５】
なお、図１６に示す構成では制御部が設けられていないが、データ処理部４１０は電源投入時にのみ処理を行う。あるいは、先に図５を参照して説明した構成と同様の制御部を設定して、制御部の制御に従って、モード切り替え信号を入力してモード切り替えに応じて処理を行う構成としてもよい。
【０１０６】
（６−２．電源供給構成を変更した実施例）
前述したように、図５以下を参照して説明したＬＳＩでは、データ収集部１４１において、ＬＳＩ１２０に対する電源供給開始時のＦＦの設定値をスキャンチェーンを介して収集する構成となっている。しかしながら、ＬＳＩ１２０の電源供給開始タイミングとほぼ同時にデータ収集部１４１のデータ収集処理が実行されることになり、また、データ収集タイミングに併せて、あるいは開始前に制御部１４２からの制御信号をデータ収集部１４１などに入力することが必要となる場合がある。しかし、制御部１４２に対する電力供給も併せて行われると、正しい制御が実行されない恐れがある。
【０１０７】
そこで、これを解決するために、図１７に示すように、ＬＳＩ５２０に対する電力供給構成を設定する。スキャンチェーン５３２とデータ収集部５４１を含む回路部Ａ５１１に対する電源と、制御部５４２を含む回路部Ｂ５１２に対する電源を異なる電源とする。すなわち電源を２系統設定し、制御部５４２に対応する回路部Ｂ５１２に対して先行して電力供給を実行し、制御部５４２の制御が確実に実行可能な状態に移行した後、回路部Ａ５１１に対する電力供給を介してスキャンチェーン５３２からのデータ収集処理を開始する。
【０１０８】
この構成に従った処理シーケンスについて、図１８に示すフローチャートを参照して説明する。
【０１０９】
ステップＳ２０１において、制御部５４２を含む制御ブロックの電源をオンにする。
次に、ステップＳ２０２において、制御部５４２が、回路部Ａ５１１の電源をオフに設定、あるいは、オフに設定されていることを確認した後、回路部Ａ５１１の電源をオンにする。この動作によって、回路部Ａ５１１に含まれる各ＦＦはそれぞれの物理的な条件の違いによって、初期設定値［０］または［１］をＦＦ内部に保持する。
【０１１０】
ステップＳ２０３において、制御部５４２はスキャンチェーン５３２が利用できるように、ＦＦのモードをスキャンモードに変更する。
ステップＳ２０４において、スキャンチェーン５３２に接続されたフリップフロップ（ＦＦ）の保持データを、スキャンチェーン５３２を介してデータ収集部５４１に入力する。データ収集部５４１は、乱数生成／ＩＤ生成いずれかの目的に応じて内部で必要な処理が実施された後、データとして出力または保持する。
【０１１１】
ステップＳ２０５において、データ収集部５４１によるデータ収集の後、制御部５４２はスキャンモードを解除し、リセットをかけてＦＦを初期化し、通常のＬＳＩ動作モードに変更する。
【０１１２】
ステップＳ２０６では、ＬＳＩ動作モードに設定された状態において、ステップＳ２０４でデータ収集部が取得したデータをＬＳＩ５２０内部のセキュリティブロックへ供給し、乱数、あるいは乱数生成用のデータ、あるいはＩＤ、例えばＬＳＩチップ識別子などに適用する固有の値（ＩＤ）などに利用する。
【０１１３】
図１７、図１８を参照して説明した構成では、制御部５４２に先行して電力供給がなされ、制御部５４２の動作が安定した後、スキャンチェーンの各ＦＦに対する電力供給が開始されるので、制御部５４２の安定した制御の下で、確実に電源投入時のＦＦの設定値を収集することが可能となる。
【０１１４】
以上、説明したように、本発明の構成では、ＬＳＩチップ上に搭載されたＦＦをそのまま利用して、専用のＦＦを追加することなく、乱数生成処理やＩＤ生成処理を行うことが可能となり、チップ面積の増加やコストの増加を抑えた構成を実現できる。また、データ収集部の収集データは、ＬＳＩ内部において演算回路に提供可能であり、外部に誤って出力される可能性はなく機密を保持した処理が可能となる。本発明を用いることによって、様々なデジタル回路での乱数生成やチップＩＤを生成することが可能になる。
【０１１５】
なお、上記実施例においては集積回路の構成を中心として説明したが、上記の実施例において説明した半導体集積回路を例えばＰＣ等の情報処理装置に装着し、情報処理装置内において乱数生成や、ＩＤ生成処理などを実行することが可能である。この処理制御は、上記の実施例において説明したＬＳＩチップ内部の制御部において、ＬＳＩチップ内のメモリに格納したプログラムを利用して実行することが可能である。あるいは、情報処理装置内のＬＳＩチップと接続された他のＬＳＩ素子などに形成された制御部やメモリを利用して、プログラムを実行して上記の構成を持つＬＳＩチップにコマンドを入力して乱数生成やＩＤ生成処理を実行させる構成としてもよい。
【０１１６】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【０１１７】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１１８】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１１９】
以上、説明したように、本発明の一実施例構成によれば、ＬＳＩなどの集積回路のテスト用パスとして設定されたスキャンチェーンに接続された複数のフリップフロップから、電源投入時のフリップフロップ設定値を入力するデータ収集部を設けた。データ収集部は、スキャンチェーンまたは独立の接続パスを経由して電源投入時のフリップフロップ設定値を入力し、入力値に基づく乱数または固定データとしてのＩＤ生成処理を実行する。この構成により、ＬＳＩ等の集積回路に形成された既存のフリップフロップをそのまま利用して乱数やＩＤの生成を行うことが可能となる。
【符号の説明】
【０１２０】
１１，１２  インバータ
２１，２２  インバータ
３１，３２  インバータ
４１，４２  ＰＭＯＳ
１００  ＬＳＩ
１０１  入力部
１０２  出力部
１１０  スキャンチェーン
１１１  フリップフロップ（ＦＦ）
１１２  組み合わせ回路
１２０  ＬＳＩ
１２１  入力部
１２２  出力部
１３１  フリップフロップ（ＦＦ）
１３２  スキャンチェーン
１３３  組み合わせ回路
１４１  データ収集部
１４２  制御部
１５０  セキュリティデータ処理部
１５１  擬似乱数生成部
１５２  シード入力部
１５３  乱数出力部
１６０  データ処理部
２１０  ＬＳＩ管理データベース
２２１  切り替え部
２２２  データ抽出部
２２３  後処理部
２２４  データ格納部
３０１  バイアス平滑部
３０２  ミキシング部
３０３  オンラインテスト部
３０４  選択部
３０５  エラー訂正部
４００  ＬＳＩ
４０１  スキャンチェーン
４０２  ＦＦ回路ブロック
４０５  ＦＦ接続パス
４１０  データ収集部
５１１  回路部Ａ
５１２  回路部Ｂ
５２０  ＬＳＩ
５３２  スキャンチェーン
５４１  データ収集部
５４２  制御部
【図１】
2010266417.tif 000003
【図２】
2010266417.tif 000004
【図３】
2010266417.tif 000005
【図４】
2010266417.tif 000006
【図５】
2010266417.tif 000007
【図６】
2010266417.tif 000008
【図７】
2010266417.tif 000009
【図８】
2010266417.tif 000010
【図９】
2010266417.tif 000011
【図１０】
2010266417.tif 000012
【図１１】
2010266417.tif 000013
【図１２】
2010266417.tif 000014
【図１３】
2010266417.tif 000015
【図１４】
2010266417.tif 000016
【図１５】
2010266417.tif 000017
【図１６】
2010266417.tif 000018
【図１７】
2010266417.tif 000019
【図１８】
2010266417.tif 000020