(57)【要約】【課題】半導体装置そのものを用いて行う低コストの半導体装置の識別方法と、その識別方法に用いる識別コードとを提供することにある。【解決手段】フリップフロップ、ＲＡＭあるいはＳＲＡＭ等のメモリセルを有する半導体装置の電源をオンにして、各メモリセルから最初に出力されるＨｉまたはＬｏの論理信号を取得する。そして、その論理信号の組み合わせを固有の識別コードとして、半導体装置の識別に使用する。【選択図】図１
2006060109.tif 000002
【特許請求の範囲】
【請求項１】
論理値を出力する複数の単位を有する回路を有する半導体装置の識別コード作成方法であって、
前記回路に電源を投入したときに、前記単位のそれぞれから出力される論理値を取得するステップ（ａ）と、
前記論理値を用いて前記半導体装置の識別コードを作成するステップ（ｂ）とを備えることを特徴とする半導体装置の識別コード作成方法。
【請求項２】
前記ステップ（ａ）の後に、前記回路に再度電源を投入し、前記単位のそれぞれから出力される論理値を取得するステップ（ｃ）をさらに備え、
前記ステップ（ｂ）では、前記識別コードのうちの１つとして、前記複数の単位のうち前記ステップ（ａ）および前記ステップ（ｃ）において論理値が変動する不安定単位をマスクした固有コードを作成することを特徴とする請求項１に記載の半導体装置の識別コード作成方法。
【請求項３】
前記工程（ｂ）では、前記識別コードの１つとして、前記単位のうち前記不安定単位の論理値のみが「０」となるマスクコードも作成することを特徴とする請求項２に記載の半導体装置の識別コード作成方法。
【請求項４】
前記ステップ（ａ）の前には、前記複数の単位の全てに「０」または「１」を書き込んだ後に前記電源を切断し、
前記ステップ（ｃ）の前にも、前記複数の単位の全てに「０」または「１」を書き込んだ後に前記電源を切断することを特徴とする請求項２に記載の半導体装置の識別コード作成方法。
【請求項５】
前記ステップ（ｂ）では、前記ステップ（ａ）で得られる論理値と前記ステップ（ｃ）で得られる論理値とのうち、「１」の割合が所定値以上である論理値のみを用いて前記固有コードを作成することを特徴とする請求項２に記載の半導体装置の識別コード作成方法。
【請求項６】
前記ステップ（ａ）を行った後で前記ステップ（ｃ）を行う前に、前記ステップ（ａ）で得られた論理値を用いて中間識別コードを作成するステップ（ｅ）をさらに備え、
前記ステップ（ｂ）では、前記ステップ（ｃ）で得られた論理値と前記中間識別コードとのハミング距離が所定値以下であれば、前記ステップ（ｃ）で得られた論理値を用いて前記識別コードを作成することを特徴とする請求項２に記載の半導体装置の識別コード作成方法。
【請求項７】
前記ステップ（ｃ）の後に、前記ステップ（ｃ）で得られた論理値を用いて中間識別情報を作成するステップ（ｆ）をさらに備え、
前記ステップ（ｂ）では、前記中間識別情報と前記ステップ（ａ）で得られた論理値とのハミング距離が所定値以下であれば、前記ステップ（ａ）で得られた論理値を用いて前記識別情報を作成することを特徴とする請求項２に記載の半導体装置の識別コード作成方法。
【請求項８】
前記回路は、電源を切ることによって保持していた論理値が消去される回路であることを特徴とする請求項１に記載の半導体装置の識別コード作成方法。
【請求項９】
前記回路は、フリップフロップまたはＳＲＡＭであることを特徴とする請求項８に記載の半導体装置の識別コード作成方法。
【請求項１０】
請求項３に記載の半導体装置の識別コード作成方法により作成された前記識別コードを用いた半導体装置の識別方法であって、
識別の対象となる半導体装置において取得した前記固有コードと比較用マスクコードとをＡＮＤ演算した第１の値と、識別の対象となる半導体装置において取得した前記マスクコードと比較用固有コードとをＡＮＤ演算した第２の値とを比較することにより識別することを特徴とする半導体装置の識別方法。
【請求項１１】
前記第１の値と前記第２の値とが完全に一致するか否かで識別することを特徴とする請求項１０に記載の半導体装置の識別方法。
【請求項１２】
前記第１の値と前記第２の値とのハミング距離が所定の値以下であるか否かで識別することを特徴とする請求項１０に記載の半導体装置の識別方法。
【請求項１３】
論理値を出力する複数の単位を有する論理値出力回路と、
前記論理値出力回路に電源を投入したときに、前記単位のそれぞれから出力される論理値を取得して、前記論理値出力回路の識別情報を作成する識別情報生成回路とを備えることを特徴とする半導体装置。
【請求項１４】
前記複数の単位のうち前記論理値が前記論理値出力回路から出力されるごとに変動する不安定単位をマスクするマスク回路をさらに備えることを特徴とする請求項１３に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数のフリップフロップあるいはＲＡＭ（Randam Access Memory）といったＨｉ／Ｌｏの２値を出力する回路を基板上に形成してなる半導体装置の識別コード作成方法および半導体装置の識別方法並びに半導体装置に関するものである。
【背景技術】
【０００２】
半導体集積回路の製造工程を管理する場合やその不良解析を行う場合などでは、半導体基板から形成される個々のダイ（チップ）を識別することが必要になる。例えば、集積回路の出荷後の不良に関して、その原因を解析して対策を行うためには、半導体製造工程あるいは組み立て実装工程の履歴までさかのぼって調べる必要がある。また、拡散工程に原因を求める場合は、その不良になったチップが製造された期間、ロット、ウエハーおよびウエハーにおける位置まで特定することによって、そのチップが受けた各プロセス処理条件を特定することができるのである。このような識別を可能とするために、出荷前に個々の半導体装置（チップ、ダイ）に特有の識別番号や記号を付与することが行われている。
【０００３】
従来の半導体装置の識別方法としては、レーザートリマーを用いて、半導体チップの上に形成されたデバイス認識用パターンに識別情報を記憶させる方法や、半導体チップに内蔵された不揮発性メモリにそのチップの識別情報を書き込む方法があった。また、特許文献１には、絶縁表面を有する基板上に形成されたＴＦＴの特性ばらつきを利用して識別番号を生成する方法が記載されている。この方法は、ＴＦＴの特性ばらつきに基づいて１ビット乱数を出力する固有ビット生成回路を含む基板識別回路をチップの上に形成しておき、１ビット乱数を発生させてチップに固有の数値を生じさせ、それを識別番号として使用するものである。
【特許文献１】特開２００３−２０３８３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、レーザートリマーを用いて個々の半導体装置の識別情報を記憶させる方法ではレーザートリマー装置の導入が必要であるとともに情報書き込み操作が複雑になる。また、不揮発性メモリを用いる方法では、不揮発性メモリを本来必要としない半導体装置においてもそのプロセスの追加を行わなければならず、いずれにしても時間とコストがかかるという欠点があった。
【０００５】
また、特許文献１に記載される方法は、半導体装置が本来有するＴＦＴを利用するものであるから低コストではあるが、この方法で識別できるのは絶縁表面を有する基板に形成されたＴＦＴを有する半導体装置に限定される。そのため、シリコン基板に形成されたＭＯＳ型トランジスタやバイポーラトランジスタで構成される一般的な半導体装置の識別方法としては使用できないという欠点があった。
【０００６】
本発明の目的は、前記課題を解決するものであり、半導体装置そのものを用いて行う低コストの半導体装置の識別方法と、その識別方法に用いる識別コードとを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の半導体装置の識別コード作成方法は、論理値を出力する複数の単位を有する回路を有する半導体装置の識別コード作成方法であって、前記回路に電源を投入したときに、前記単位のそれぞれから出力される論理値を取得するステップ（ａ）と、前記論理値を用いて前記半導体装置の識別コードを作成するステップ（ｂ）とを備えることを特徴とする。
【０００８】
半導体装置に電源を投入して最初に出力される論理値には定常動作時と比較して半導体装置の製造ばらつきが大きく反映される。したがって、回路を構成する各単位に固有の論理値を得ることができるため、より正確に半導体装置の識別を行うことができる識別コードを得ることができる。また、半導体装置そのものを用いて識別コードを得ることができるので、識別の簡略化および低コスト化が可能である。また、得られた識別コードは、その半導体装置にもともと備わっているトランジスタ特性のばらつきに基づいたものであるため、ウエハー状態、組立後のパッケージ状態およびチップ状態のいずれの状態であっても容易に識別情報を採取可能である。
【０００９】
前記ステップ（ａ）の後に、前記回路に再度電源を投入し、前記単位のそれぞれから出力される論理値を取得するステップ（ｃ）をさらに備え、前記ステップ（ｂ）では、前記識別コードのうちの１つとして、前記複数の単位のうち前記ステップ（ａ）および前記ステップ（ｃ）において論理値が変動する不安定単位をマスクした固有コードを作成してもよい。ここで、「マスクする」とは、不安定単位の出力を「０」とすることをいい、固有コードでは、常に「０」が出力される単位と不安定単位との論理値が「０」になる。この場合には、固有コードに不安定な単位からの出力値が反映されないため、特性がばらつく不安定な単位を有する半導体装置であってもより正確に識別することができる識別コードを得ることができる。
【００１０】
前記工程（ｂ）では、前記識別コードの１つとして、前記単位のうち前記不安定単位の論理値のみが「０」となるマスクコードも作成してもよい。この場合には、固有コードとマスクコードとを用いてより正確な識別を行うことができるようになる。具体的には、識別の対象となる半導体装置の固有コード（対象固有コード）と、比較のためのマスクコード（比較マスクコード）とをＡＮＤ演算し、識別の対象となるマスクコード（対象マスクコード）と、比較のための固有コード（比較固有コード）とをＡＮＤ演算する。そして、これら２つの値を比較することにより、より正確に半導体装置の識別を行うことができる。
【００１１】
前記ステップ（ａ）の前には、前記複数の単位の全てに「０」または「１」を書き込んだ後に前記電源を切断し、前記ステップ（ｃ）の前にも、前記複数の単位の全てに「０」または「１」を書き込んだ後に前記電源を切断してもよい。この場合には、ステップ（ａ）において、不安定な単位は初期化したときの残留電荷の影響を受けて、「０」を書き込んだ場合には「０」を、「１」を書き込んだ場合には「１」を出力する。これにより、不安定な単位をより確実に検出することができる。
【００１２】
前記ステップ（ｂ）では、前記ステップ（ａ）で得られる論理値と前記ステップ（ｃ）で得られる論理値とのうち、「１」の割合が所定値以上である論理値のみを用いて前記固有コードを作成してもよい。この場合には、電源を投入しても単位がデータを読み出すモードに入っていないような場合に得られる「０」の多い論理値を用いずに固有コードを作成することができる。したがって、最終的に得られる固有コードに「０」のデータが多くなるのを防止することができる。
【００１３】
前記ステップ（ａ）を行った後で前記ステップ（ｃ）を行う前に、前記ステップ（ａ）で得られた論理値を用いて中間識別コードを作成するステップ（ｅ）をさらに備え、前記ステップ（ｂ）では、前記ステップ（ｃ）で得られた論理値と前記中間識別コードとのハミング距離が所定値以下であれば、再度、前記ステップ（ｃ）を実行して得られた論理値を用いて前記識別コードを作成してもよい。この場合には、他の論理値との違いが大きい論理値を用いずに識別コードを作成することができるため、より正確な識別コードを得ることができる。
【００１４】
なお、前記ステップ（ｃ）の後に、前記ステップ（ｃ）で得られた論理値を用いて中間識別情報を作成するステップ（ｆ）をさらに備え、前記ステップ（ｂ）では、前記中間識別情報と前記ステップ（ａ）で得られた論理値とのハミング距離が所定値以下であれば、前記ステップ（ａ）で得られた論理値を用いて前記識別情報を作成してもよい。この場合には、他の論理値との違いが大きい論理値を用いずに識別コードを作成することができるため、より正確な識別コードを得ることができる。
【００１５】
前記回路は、電源を切ることによって保持していた論理値が消去される回路であることが好ましい。
【００１６】
前記回路は、フリップフロップまたはＳＲＡＭであってもよい。
【００１７】
本発明の半導体装置の識別方法は、上述の半導体装置の識別コード作成方法により作成された前記識別コードを用いた半導体装置の識別方法であって、識別の対象となる半導体装置において取得した前記固有コードと比較用マスクコードとをＡＮＤ演算した第１の値と、識別の対象となる半導体装置において取得した前記マスクコードと比較用固有コードとをＡＮＤ演算した第２の値とを比較することにより識別する。
【００１８】
この方法により識別を行うと、半導体装置が正確に識別される率を極めて高くすることができる。
【００１９】
前記第１の値と前記第２の値とが完全に一致するか否かで識別してもよい。
【００２０】
前記第１の値と前記第２の値とのハミング距離が所定の値以下であるか否かで識別してもよい。
【００２１】
本発明の半導体装置は、論理値を出力する複数の単位を有する論理値出力回路と、前記論理値出力回路に電源を投入したときに、前記単位のそれぞれから出力される論理値を取得して、前記論理値出力回路の識別情報を作成する識別情報生成回路とを備えていてもよい。
【００２２】
半導体装置に電源を投入して最初に出力される論理値には定常動作時と比較して半導体装置の製造ばらつきが大きく反映される。したがって、この識別情報生成回路では、回路を構成する各単位に固有の論理値を得ることができる。これにより、本発明の半導体装置では、より正確に識別を行うことができる。
【００２３】
前記複数の単位のうち前記論理値が前記論理値出力回路から出力されるごとに変動する不安定単位をマスクするマスク回路をさらに備えていてもよい。
【発明の効果】
【００２４】
以上のように、本発明によれば、より正確にかつより簡便に半導体装置の識別を行うことができる。
【発明を実施するための最良の形態】
【００２５】
以下に、本発明実施の形態について、図面を参照しながら説明する。
【００２６】
（第１の実施形態）
本発明による半導体装置（チップ）の識別方法は、次のような考え方に基づいている。一般に、論理回路を含むＬＳＩやシステムＬＳＩと呼ばれる半導体集積回路には、ＭＯＳプロセスやＣＭＯＳプロセスで形成された多数のフリップフロップ、ＲＡＭまたはＳＲＡＭ（Static Random Access Memory）が配置している。これらの回路は複数のＭＯＳトランジスタで構成されており、製造条件が時間によってばらつくので、ロットにおける複数のウェハのそれぞれや、１枚のウエハ内の位置によって、トランジスタパターン寸法や不純物拡散濃度にばらつきが生じる。このような製造工程におけるばらつきが反映されて、同一に設計されたトランジスタであっても、しきい値のばらつきなどの動作出力特性のばらつきを有している。
【００２７】
本発明は、フリップフロップ、ＲＡＭあるいはＳＲＡＭなどのようなハイ（Ｈｉ）／ロー（Ｌｏ）（あるいは１／０）の２値出力を行う回路を搭載した半導体装置において、動作出力ばらつきをチップ識別に利用するものである。具体的には、半導体装置の電源をオンにしたときに複数のビットから最初に出力される信号の組み合わせの乱数パターンを識別情報として利用する。半導体装置の電源をオンにした直後の出力信号を利用するのは、定常動作時と比較して製造ばらつきが大きく反映されるためである。
【００２８】
本発明では出力信号の乱数パターンを識別情報とするのであるから、フリップフロップ、ＲＡＭあるいはＳＲＡＭ等のメモリセルを構成する回路は、ＨｉとＬｏとの信号をいずれかに偏らず同程度の確率で出力することが好ましい。したがって、これらの回路は、電気的に対称になるようにトランジスタなどの素子が組まれたものであることが好ましい。また、電源をオフにすることによって、それまで保持していた情報が直ちに消去される回路であることが好ましい。以下では、半導体装置にＳＲＡＭが搭載された場合を例にして説明を進めることにする。
【００２９】
図１は、ＳＲＡＭを有する半導体装置に外部電源を投入してから最初に出力された信号を配列した初期パターンコードの例を示す図である。初期パターンコードは、半導体装置のうちＳＲＡＭを指定する特定アドレスのメモリーセル（ビット）から出力される。また、図１において、横方向には３２個のメモリーセル（ビット）が配置し、縦方向には２個のメモリーセル（ワード）が配置している。つまり、この初期パターンコードは、ＳＲＡＭの３２ビット２ワードで形成されたものである。
【００３０】
図１において、「Ｈ」はＨｉ（１）データを示し、空白はＬｏ（０）データを示す。この組み合わせが半導体装置それぞれに固有の識別情報となる。この識別情報を得るための操作は、例えば、拡散工程終了後にウエハー状態でＬＳＩテスタを用いて通常のプロービング検査を行う時に、付加的に行えばよい。より具体的には、通常のプロービング検査を行った後などに、あらかじめ決めておいたＳＲＡＭの指定アドレスのデータを出力させることで、初期パターンコードを採取すればよい。このように、識別情報を得るための操作を通常の検査に付加的に行う場合には、専用の装置や工程など特別な準備は不用であるという利点がある。なお、図１では、３２ビット２ワードでパターンコードを構成したが、本実施形態はこれに限ることなく、ＨｉとＬｏのデータを組み合わせた他の形式のパターンコードを構築してもよい。
【００３１】
図２は、図１に示すＳＲＡＭ初期パターンコードを１６進数化した値を示す図である。図２に示すように、Ｈｉ、Ｌｏで構成される初期パターンコードを１６進数化することで、識別情報データ容量を縮小することが可能となる。上述のように、プロービング検査時に初期パターンコードを取得した場合には、初期パターンコードは１６進数化した形態でプロービング検査データと共にチップのそれぞれにおいて保存される。
【００３２】
本実施形態では、半導体装置に電源を投入して最初に出力される初期パターンコードを取得して識別コードとする。初期パターンコードには、定常動作時と比較して半導体装置の製造ばらつきが大きく反映される。これにより、回路を構成する各単位に固有の識別コードを得ることができるため、より正確に半導体装置の識別を行うことができる。なお、本実施形態では、半導体装置そのものを用いて識別を行うことができるので、識別の簡略化および低コスト化が可能である。また、得られた初期パターンコードは、その半導体装置にもともと備わっているトランジスタ特性のばらつきに基づいたものであるため、ウエハー状態、組立後のパッケージ状態およびチップ状態のいずれの状態であっても容易に識別情報を採取可能である。
【００３３】
（第２の実施形態）
第１の実施形態で説明したように、本発明のチップ識別コード作成方法は、電源投入時にＳＲＡＭの指定アドレスに出力される信号から初期パターンコードを取得し、それを識別コードとするものである。しかしながら、電源投入時に、指定アドレスから常に同じ信号（データ）が出力されるとは限らない。特に、トランジスタ特性やメモリーセル電気特性等がばらつく不安定なビットでは、出力がばらつく場合があり、電源投入ごとにＨｉ／Ｌｏの出力が変動するものがある。そこで、本実施形態では、不安点なビットを有するチップでも確実に識別できる方法を提供する。
【００３４】
図３は、不安定なビットを有するＳＲＡＭにおいて、第１の実施形態で述べた方法でＳＲＡＭの初期パターンコードをｎ回繰返して取得した結果を示す表図である。図３に示すｎ回目までの初期パターンコードには、完全に一致するものは無いことがわかる。本実施形態では、このような初期パターンコードに対して論理演算を行う。より具体的には、ｎ回目までの各回のパターンコードの各ビットごとにＡＮＤ演算を行い不安定なビットのコードをＬｏとして除去するのである。
【００３５】
図４は、ｎ回繰返し取得した初期パターンコードを論理演算（ＡＮＤ）によって処理した後の結果を示す表図である。図４に示す結果は、図３に示す初期パターンコードにおける各ビットに対して、１回目〜ｎ回目までの値のＡＮＤ演算を行う。そして、１回目〜ｎ回目までで１回でも異なる値があると、そのビットにおける演算結果はＬｏとなる。演算結果がＬｏとなったビットは、図４では「Ｄ」で示されており、パターンコード不一致ビットとなっている。その後、図５に示すように、パターンコード不安定ビットを除去する操作を行って、これを半導体装置（チップ）固有のパターンコード（以下では「固有コード」と呼ぶ）とする。図５は、チップの固有コードを示す表図である。
【００３６】
以上の方法により固有コードを求める操作は、図６に示す論理回路によって実現される。図６は、固有コードを求める操作を実現する論理回路を示す回路図である。図６に示す回路では、固有コードが求められるだけでなく、「マスクコード」と呼ぶ付随的なコードも同時に生成される。「マスクコード」は、固有コードと同様の３２ビット２ワードのコードであり、図４においてパターンコード不一致データ「Ｄ」が出力された不安定ビットのコードのみがＬｏであり、それ以外のコードがＨｉとなった構成を有する。
【００３７】
図６に示す回路は、各ビットからの１回目〜ｎ回目までのデータを受けるＡＮＤ回路１１およびＯＲ回路１２と、ＡＮＤ回路１１からの出力を受けるＡＮＤレジスタ１３と、ＯＲ回路１２からの出力を受けるＯＲレジスタ１４と、ＡＮＤレジスタ１３およびＯＲレジスタ１４からの出力を受けるＥｘｃｌｕｓｉｖｅＮＯＲ回路１５と、ＡＮＤレジスタ１３からの出力を固有コードとして保持する固有コード保持部１６と、ＥｘｃｌｕｓｉｖｅＮＯＲ回路１５からの出力を受けるマスクレジスタ１７と、マスクレジスタ１７からの出力をマスクコードとして保持するマスクコード保持部１８とを有してる。なお、図６には、ＡＮＤ回路１１およびＯＲ回路１２の入力としてそれぞれ１つの入力しか記載していないが、実際には、各ビットにおいて１回〜ｎ回目までのｎ個のデータが入力される。
【００３８】
図６に示す論理回路では、ＡＮＤ回路１１にデータを入力すると共に、ＯＲ回路１２にもデータを入力する。そして、ＡＮＤ回路１１から出力されたデータは、ＡＮＤレジスタ１３を介して固有コード保持部１６に出力されると共に、ＥｘｃｌｕｓｉｖｅＮＯＲ回路１５に出力される。このとき、固有コード保持部１６には、図５に示す固有コードが保持される。一方、ＯＲ回路１２に入力されたデータは、ＯＲレジスタ１４を介してＥｘｃｌｕｓｉｖｅＮＯＲ回路１５に入力される。ＥｘｃｌｕｓｉｖｅＮＯＲ回路１５では、ＡＮＤ回路１１からの出力とＯＲ回路１２からの出力とが同一である場合にはＨｉが出力され、異なる場合にはＬｏが出力される。その結果、ＥｘｃｌｕｓｉｖｅＮＯＲ回路１５からの出力でＬｏ（空白）となるビットは、図４においてパターンコード不一致データ「Ｄ」が出力されたビットと一致する。つまり、図７に示すように、ＥｘｃｌｕｓｉｖｅＮＯＲ回路からの出力であるマスクコードは、初期パターンコードが不安定であるビットではＬｏとなり、それ以外のビットではＨｉとなる。図７は、各チップのマスクコードを示す表図である。このマスクコードは、実際に半導体装置が特定の固有コードを有しているか否か照合する補助コードであるが、これの用い方については後に詳述する。なお、実際に半導体装置を識別するときに用いられるコードは、固有コードとマスクコードの組からなり、本明細書では、この組を「ＩＤコード」と呼ぶ。
【００３９】
図６に示す回路は、例えば、初期パターンコードを取得するためのＬＳＩテスタ内にＩＤコード生成用のプログラムを組んで実現することができる。あるいは、図６に示す回路を個々の半導体装置の上に形成し、半導体装置から出力された初期パターンコード（ＨｉまたはＬｏ）をその上に配置する回路に入力してもよい。また、図６に示す回路を半導体装置とは別のボードに作成してもよい。
【００４０】
図８は、図６に示す回路において、半導体装置の各ビットからの出力（ＡＮＤ回路１１およびＯＲ回路１２の入力）と、ＡＮＤレジスタ１３およびＯＲレジスタ１４の出力と、固有コードおよびマスクコードとのそれぞれの真理値を示す表図である。この結果は、０ビット目から３ビット目までの４つのビットから、５回識別情報を読み出したものである。０ビット目の事例では、５回の読み出しのうちいずれの回も「０」が出力されており、この場合には、固有コードが「０」、マスクコードが「１」となる。１ビット目、２ビット目の事例では、５回の読み出しにおいて「１」および「０」の両方が出力された場合であり、この場合には固有コードが「０」、マスクコードが「０」となる。なお、表中において、１ビット目と２ビット目では、２回目から４回目までの出力として「Ｘ」が記載されており、これは「Ｄｏｎ’ｔ  Ｃａｒｅ（１でも０でも良い）」の意味を示す。１ビット目および２ビット目では、１回目と５回目の出力が異なっているため、ＡＮＤレジスタ１３およびＯＲレジスタ１４の出力はこれだけで決定される。つまり、２回目から４回目までの出力は考慮しなくても結果に影響はないため、実際には「０」または「１」のどちらかが出力されているが、その記録を省略しているのである。次に、３ビット目の事例では、５回の読み出しのうちのいずれの回も「１」が出力されており、この場合は、固有コードが「１」、マスクコードが「１」となる。
【００４１】
次に、上述の方法により得られたＩＤコードを用いて、実際に半導体の識別（デバイス識別）を実施する方法を述べる。図９は、半導体装置が特定のＩＤコードを有しているかどうかを自動的に識別するための固有コード比較回路の例を示す回路図である。
【００４２】
図９に示す固有コード比較回路は、対象固有コードと比較マスクコードとが入力されるＡＮＤ回路２１と、対象マスクコードと対象固有コードとが入力されるＡＮＤ回路２２と、ＡＮＤ回路２１, ２２の出力を受ける判定回路２３とからなる。図９に示す固有コード比較回路では、まず識別しようとする半導体装置のＩＤコード（対象固有コード、対象マスクコードと呼ぶ）をすでに述べた方法によって取得する。次に、ＡＮＤ回路２１において、得られた対象固有コードと、基準となる比較マスクコードとのＡＮＤ処理を行い、ＡＮＤ回路２２において、得られた対象マスクコードと、基準となる比較固有コードとのＡＮＤ回路処理を行う。その後、判定回路２３において、ＡＮＤ回路２１とＡＮＤ回路２２との出力値の比較照合を行う。図９に示す判定回路２３は、いわゆるハミング距離の演算を行う回路である。判定回路２３では、ハミング距離の値が０である場合には、半導体装置が比較固有コードと同じＩＤコードを有していると判断され、ハミング距離が０でない場合には、半導体装置は比較固有コードと同じＩＤコードを有していないと判断される。
【００４３】
ここでハミング距離について説明する。図１０はハミング距離の概念を説明するための図である。ＡＮＤ回路２１からの出力の値をＡとし、ＡＮＤ回路２２からの出力の値をＢとしたときに、これらの出力についてＡがＢに変化する度合いとして、符号Ａ, Ｂの距離（ハミング距離）として表すことができる。ここでは、ハミング距離は、符号Ａと符号Ｂとを比べた場合に値が異なっているビットの数と定義する。ｎビットで構成されているメモリセルにおける符号Ａ，Ｂ間のハミング距離ｄは下記（１）式で表すことができる。
【００４４】
【数１】
2006060109.tif 000003
【００４５】
図１０は、ｎ＝８ビットの場合の符号Ａ，Ｂ間のハミング距離を示している。ａｉはＡＮＤ回路２１からの出力の値を示し、ｂｉはＡＮＤ回路２２からの出力の値を示している。（１）式に図１０に示すａｉ, ｂｉの値を当てはめて計算すると、この場合のハミング距離は３となる。
【００４６】
図１１は、図９に示した回路を用いて半導体装置を識別する場合において、対象固有コード、対象マスクコード、比較固有コード、対象マスクコードおよびハミング距離値の真理値を示す表図である。対象固有コードと対象マスクコードとの組み合わせは、（０, ０）（０, １）（１, １）の３通りであり、比較固有コードと比較マスクコードとの組み合わせも同様に３通りしかないので、これら３種のコードの組み合わせは９通りとなる。図１１ではこれら９種全ての組み合わせを示している。なお、図１１に示すハミング距離は、１ビットの出力の値を用いて判定しているので、前記（１）式においてはｉ＝１, ｎ＝１となる。
【００４７】
図１１における１段目に示す場合では、対象固有コードが「０」であって比較マスクコードが「０」であるので、ＡＮＤ回路２１（図９に示す）におけるＡＮＤ処理は「０」となり、対象マスクコードが「０」であって比較固有コードが「０」であるので、ＡＮＤ回路２２（図９に示す）におけるＡＮＤ処理は「０」となる。ＡＮＤ回路２１, ２２の出力は共に「０」であるため、前記（１）式にａｉ＝０, ｂｉ＝０を代入すると、このときのハミング距離は「０」となる。ハミング距離が「０」である場合には、識別の対象となる半導体装置の対象コードは、比較コードと一致したと判断される。図１１における１段目においては、確かに対象コードと比較コードとが一致している。図１１における２段目から５段目までと７段目ではＡＮＤ回路２１, ２２の出力は共に「０」であるため、ハミング距離が「０」となり、半導体装置の対象コードと比較コードとが一致したと判断される。また、図１１における９段目では、ＡＮＤ回路２１, ２２の出力は共に「１」であるため、前記（１）式にハミング距離が「０」となり、半導体装置の対象コードと比較コードとが一致したと判断される。
【００４８】
一方、図１１における６段目に示す場合では、対象固有コードが「０」であって比較マスクコードが「１」であるので、ＡＮＤ回路２１（図９に示す）におけるＡＮＤ処理は「０」となり、対象マスクコードが「１」であって比較固有コードが「１」であるのでＡＮＤ回路２２（図９に示す）におけるＡＮＤ処理は「１」となる。前記（１）式にａｉ＝０, ｂｉ＝１を代入すると、両者のハミング距離は「１」となる。ハミング距離が「１」である場合には、識別の対象となる半導体装置の対象コードは、比較コードと一致しないと判断される。図１１における８段目では、ＡＮＤ回路２１における出力が「１」となり、ＡＮＤ回路２２における出力が「０」となるため、ハミング距離が「１」となり、半導体装置の対象コードと比較コードとは不一致であると判断される。
【００４９】
なお、上述した方法では、ハミング距離が０となった場合のみ、つまり対象ＩＤコードと比較ＩＤコードが完全に一致したときに半導体装置が比較ＩＤコードと同じコードを有していると判定される。しかし、製造や実装の工程を経ることにより、ＩＤコードの一部のビットが変化する場合がある。特に、実装時にはチップが高温に加熱されてストレスもかかるため、フリップフロップやＳＲＡＭを構成する素子特性が変化しやすい。例えば、半導体基板に拡散層を形成する工程が終了した後の特性機能検査時にＩＤコードを取得して、チップの実装後に半導体装置を識別するためにＩＤコードの識別を行うと、ハミング距離が完全に一致しないおそれがある。このような不具合を解決するためには、ＩＤコードが一致していると考えてよいハミング距離の所定の範囲を決定し、一致しないハミング距離がその範囲内にある場合には一致したと判定すればよい。例えば、ＩＤコードが６４個のビットを有するときに、判定基準をハミング距離がＩＤコードを構成するビット数の１０％以下の値の時に一致するとすれば、図９に示す回路において算出されるハミング距離の値が６以下であれば一致していると判定する。
【００５０】
本実施形態では、複数の初期パターンコードから固有コードを作成することにより、不安定ビットを「０」またはＬｏとして固有コードから除外することができる。したがって、たとえ不安定なビットを有するチップであってもより確実に識別することが可能となる。
【００５１】
また、対象固有コードと比較マスクコードとをＡＮＤ演算し、対象マスクコードと比較固有コードとをＡＮＤ演算して、これらの値のハミング距離を計算することにより、半導体装置が正確に識別される率を極めて高くすることができる。例えば、対象固有コードと比較固有コードとをＡＮＤ処理し、対象マスクコードと比較マスクコードとをＡＮＤ処理して、これらの結果のハミング距離を求めた場合には、半導体装置が正確に識別される率は９０〜９５％程度と低かった。これに対し、図１１に示す方法で対象固有コードと比較マスクコードとを比較し、対象マスクコードと比較固有コードとを比較した場合には、半導体装置が正確に識別される率が極めて高くなる。このように、図１１に示す回路によれば、数百個、数千個という大量の半導体チップから特定のＩＤコードを有する半導体チップを自動的に選び出すことができる。
【００５２】
（第３の実施形態）
本実施形態では、最初にＩＤコードを取得してから実装など各種の処理工程が行われてフリップフロップやＳＲＡＭといった素子のビットが変動しても、安定したＩＤコードを確実に作成する方法を提供する。
【００５３】
本実施形態では、まずＩＤコードを取得するセルの全ビットを「１」および「０」のうちいずれかの状態に初期化した後に電源を一度切って再び入れ直すことを繰り返し、図３に例示したような初期パターンコードを複数回取得する。この方法を行うと、不安定なビットは初期化したときの残留電荷の影響を受け、全ビットを「１」で初期化した場合は「１」を、全ビットを「０」で初期化した場合は「０」を出力する。そして、複数回取得した初期パターンコードに対して図６に示す回路を用いて演算を行うと、不安定ビットがＬｏとなって除去された固有コードが生成される。この方法では、不安定なビットをより確実に検出することができる。
【００５４】
ところで、取得した初期パターンコードの中にＬｏデータが非常に多く含まれるものが出現することがある。この原因としては、電源を投入してもセルにおけるビットがデータを読み出すモード（テストモード）状態に入っていないことが考えられる。複数の初期パターンコードの中にＬｏデータが多い初期パターンコードが含まれると最終的に得られる固有コードにおいてもＬｏデータが多くなってしまい、半導体チップの比較照合が困難となる。
【００５５】
このような不具合を回避するためには、ｎ回繰り返し取得した初期パターンコードに対して図６の回路の演算を行うときに、Ｈｉの数が一定数以下の初期パターンコード（最終的に初期パターンコードとならない中間パターンコード）は採用せず、新たに取得しなおした初期パターンコードを用いればよい。また、さらに次のような演算、操作を導入してもよい。即ち、ｎ個の初期パターンコードを取得する予定の場合に、ｉ個（ｉ＜ｎ）の初期パターンコードを取得した時点で図６に示す回路を用いて演算を行うことにより中間の固有コードを取得する。その後、ｉ＋１番目に取得した初期パターンコードと前記中間のＩＤコードを比較して両者のハミング距離が一定以上大きいとき、その初期パターンコードを除外する。このようにして、ハミング距離が一定の値以下である初期パターンコードだけを採用して図６に示す回路を用いた演算を行うことにより最終固有コードを取得する。この場合には、他の論理値との違いが大きい論理値を用いずに固有コードを作成することができるため、より正確な固有コードを得ることができる。この方法の変形例として、取得中の初期パターンコードを中間のＩＤコードと比較する代わりに、それまでに取得したｉ個の初期パターンコードと、ｉ＋１個目の初期パターンコードを用いて算出されたハミング距離とを比較してもよい。
【００５６】
ここで、以上に述べた方法を具体的に行うステップについて、図面を参照しながら説明する。図１２は、正確に半導体装置の識別を行うことができる固有コードを取得するためのステップを示すフローチャート図である。ここでは、固有コードをＳＲＡＭから取得する場合について説明する。図１２に示すように、まず、ステップＳｔ１において半導体装置に電源をＯＮにし、ステップＳｔ２においてＳＲＡＭのビットのうちコードを取得する所定ビットの全部、例えば３２ビット２ワードの計６４ビットに「０」を書き込んで初期化する。その後、ステップＳｔ３において電源を切る。続いて、ステップＳｔ４において再び電源を投入し、ステップＳｔ５においてＳＲＡＭの初期パターンコードのデータを読み出した後、ステップＳｔ６において再度電源を切る。次に、ステップＳｔ７において全ビットのうち読み出した初期パターンコードの値がＨｉまたは「１」となっているものの割合を調べ、それが２４／６４以上であるかどうかを判定する。２４／６４未満であれば再度最初に戻って操作を繰り返す。割合が２４／６４以上であれば、ステップＳｔ８において、前回までに取得した初期パターンコード全てを用いて得られている中間固有コードと、今回取得した初期パターンコードとを比較し、両者のハミング距離を算出する。そして、ハミング距離が１０以下であるか否かを判定し、ハミング距離が１０より大きければステップＳｔ１に戻って再度初期パターンコードを取得する。ハミング距離が１０以下であればこれを初期パターンとしてステップＳｔ９に進む。ステップＳｔ９では、初期パターンコードが１０個取得されたか否かを判定し、取得されていなければステップＳｔ１に戻って次の初期パターンコードを取得する。１０個取得されれば、次のステップＳｔ１０に進む。
【００５７】
ステップＳｔ１０では半導体装置の電源をＯＮにする。続いて、ステップＳｔ１１においてＳＲＡＭのビットのうちコードを取得する所定ビットの全部に「１」を書き込んで初期化する。その後、ステップＳｔ３〜ステップＳｔ９と同様の方法でステップＳｔ１２〜ステップＳｔ１８を行うことにより１０個の初期パターンコードを取得する。なお、ステップＳｔ１２〜ステップＳｔ１８についての説明は、ステップＳｔ３〜ステップＳｔ９と同様であるので省略する。以上のステップにより合計２０個の初期パターンを取得し、最後に図６に示す回路で論理演算を行って最終的なＩＤコードを得る。本実施形態で得られるＩＤコードでは、不安定な要素を含んでいるビットがさらに厳密に除かれているため、より正確に半導体装置の識別を行うことができる。
【００５８】
次に、多数の半導体装置（チップ）のＩＤコードを特定のＩＤコード（前記の比較ＩＤコード）と照合するときは、各半導体装置のＩＤを図１２に示す方法で取得し、図９に示す回路による演算を施して比較照合する。このとき、判定回路２３における一致・不一致の判定はハミング距離が０のとき一致としてもよいし、ハミング距離が固有コードのビット数の１０％以下の値となったとき一致と判断してもよい。
【００５９】
以上のように、本発明によれば、ＴＦＴのような特殊なデバイスを搭載せず、通常のフリップフロップやＳＲＡＭなど「０（またはＬｏ）」および「１（またはＨｉ）」の論理値を出力する回路が搭載されている半導体装置において、個々のデバイスのＩＤコードを特別な回路なしに作成することができ、また、その識別をすることができる。
【産業上の利用可能性】
【００６０】
本発明にかかる半導体装置の識別コード作成方法とそれを用いた識別方法は、特別に半導体チップ認識用パターンや回路を準備しなくとも、フリップフロップやＳＲＡＭといった「０」と「１」の論理値を出力する回路が搭載されているデバイスの識別を行うことができる点で有用である。
【図面の簡単な説明】
【００６１】
【図１】ＳＲＡＭを有する半導体装置に外部電源を投入してから最初に出力された進行を配列した初期パターンコードの例を示す図である。
【図２】図１に示すＳＲＡＭ初期パターンコードを１６進数化した値を示す図である。
【図３】不安定なビットを有するＳＲＡＭにおいて、第１の実施形態で述べた方法でＳＲＡＭの初期パターンコードをｎ回繰返して取得した結果を示す表図である。
【図４】ｎ回繰返し取得した初期パターンコードを論理演算（ＡＮＤ）によって処理した後の結果を示す表図である。
【図５】チップの固有コードを示す表図である。
【図６】固有コードを求める操作を実現する論理回路を示す回路図である。
【図７】各チップのマスクコードを示す表図である。
【図８】図６に示す回路において、半導体装置の各ビットからの出力（ＡＮＤ回路１１およびＯＲ回路１２の入力）と、ＡＮＤレジスタ１３およびＯＲレジスタ１４の出力と、固有コードおよびマスクコードとのそれぞれの真理値を示す表図である。
【図９】半導体装置が特定のＩＤコードを有しているかどうかを自動的に識別するための固有コード比較回路の例を示す回路図である。
【図１０】ハミング距離の概念を説明するための図である。
【図１１】図９に示した回路を用いて半導体装置を識別する場合において、対象固有コード、対象マスクコード、比較固有コード、対象マスクコードおよびハミング距離値の真理値を示す表図である。
【図１２】正確に半導体装置の識別を行うことができる固有コードを取得するためのステップを示すフローチャート図である。
【符号の説明】
【００６２】
１１      ＡＮＤ回路
１２      ＯＲ回路
１３      ＡＮＤレジスタ
１４      ＯＲレジスタ
１５      ＥｘｃｌｕｓｉｖｅＮＯＲ回路
１６      固有コード保持部
１７      マスクレジスタ
１８      マスクコード保持部
２１      ＡＮＤ回路
２２      ＡＮＤ回路
２３      判定回路
【図１】
2006060109.tif 000004
【図２】
2006060109.tif 000005
【図３】
2006060109.tif 000006
【図４】
2006060109.tif 000007
【図５】
2006060109.tif 000008
【図６】
2006060109.tif 000009
【図７】
2006060109.tif 000010
【図８】
2006060109.tif 000011
【図９】
2006060109.tif 000012
【図１０】
2006060109.tif 000013
【図１１】
2006060109.tif 000014
【図１２】
2006060109.tif 000015