(58)【調査した分野】(Int.Cl.,DB名)
共通に接続されたセット入力及びリセット入力を有し、前記共通に接続されたセット入力及びリセット入力に所定の入力信号を入力した時に、ビット列を出力するラッチ回路であって、イオン濃度を調整することにより閾値が設定されたトランジスタを有し、前記ラッチ回路を駆動する電圧が動作電圧とは異なる電圧である状態において、前記入力信号に応じて第1の出力状態をラッチして出力し、前記ラッチ回路を駆動する電圧が前記動作電圧である状態において、前記入力信号に応じて前記設定された閾値に基づく第2の出力状態をラッチして出力するラッチ回路と、
前記ラッチ回路が出力する前記ビット列を入力し、1ビット目のデータと2ビット目以降のデータとを比較して、2ビット目以降のデータが一致しており且つ2ビット目以降のデータが1ビット目のデータを反転したデータであるかを判定する判定回路と、
を備え、
前記判定回路の判定結果に基づいて出力データを生成するデータ生成回路。
前記電圧変動回路は、前記ラッチ回路を駆動する電圧を、前記動作電圧よりも低い第1電圧未満の電圧に低下させた後、前記動作電圧に変化させる請求項2に記載のデータ生成回路。
前記電圧変動回路は、前記ラッチ回路を駆動する電圧を、動作電圧よりも高い第2電圧よりも高い電圧に上昇させた後、前記動作電圧に変化させる請求項2に記載のデータ生成回路。
共通に接続されたセット入力及びリセット入力を有し、前記共通に接続されたセット入力及びリセット入力に所定の入力信号を入力した時に、ビット列を出力するラッチ回路であって、イオン濃度を調整することにより閾値が設定されたトランジスタを有し、前記ラッチ回路を駆動する電圧が動作電圧とは異なる電圧である状態において、前記入力信号に応じて第1の出力状態をラッチして出力し、前記ラッチ回路を駆動する電圧が前記動作電圧である状態において、前記入力信号に応じて前記設定された閾値に基づく第2の出力状態をラッチして出力するラッチ回路と、
前記ラッチ回路が出力する前記ビット列を入力し、1ビット目のデータと2ビット目以降のデータとを比較して、2ビット目以降のデータが一致しており且つ2ビット目以降のデータが1ビット目のデータを反転したデータであるかを判定する判定回路と、
を備え、
前記判定回路の判定結果に基づいて出力データを生成するデータ生成回路を備える半導体装置。
共通に接続されたセット入力及びリセット入力を有するラッチ回路であって、イオン濃度を調整することにより閾値が設定されたトランジスタを有するラッチ回路を用いて、
前記ラッチ回路を駆動する電圧が動作電圧とは異なる電圧である状態において、前記共通に接続されたセット入力及びリセット入力に所定の入力信号を入力して第1の出力状態をラッチさせて1ビット目のデータを出力させ、
続いて前記ラッチ回路を駆動する電圧が前記動作電圧である状態において、前記共通に接続されたセット入力及びリセット入力に所定の入力信号を入力して前記設定された閾値に基づく第2の出力状態をラッチさせて2ビット目以降のデータを出力させ、
前記ラッチ回路が出力する前記1ビット目のデータと前記2ビット目以降のデータとを比較して、2ビット目以降のデータが一致しており且つ2ビット目以降のデータが1ビット目のデータを反転したデータであるかを判定する判定方法。
前記ラッチ回路と、前記ラッチ回路へ電力を供給する電源との間に可変抵抗を配置して、前記ラッチ回路が前記2ビット目以降のデータを生成する時に、前記可変抵抗の抵抗値を、前記ラッチ回路が前記1ビット目を生成した時よりも大きくする請求項7又は8に記載の判定方法。
【発明を実施するための形態】
【0023】
以下、本明細書で開示する半導体装置の好ましい実施形態を、図を参照して説明する。但し、本発明の技術範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【0024】
図1は、本明細書に開示する半導体装置の第1実施形態を示す図である。
【0025】
本実施形態の半導体装置10は、乱数及び固定値等のデータを生成する装置である。半導体装置10が生成した乱数のデータは、そのデータを乱数として用いても良いし、又は、そのデータに基づいて新たな乱数が生成されても良い。同様に、半導体装置10が生成した固定値のデータは、そのデータを固定値として用いても良いし、又は、そのデータに基づいて新たな固定値が生成されても良い。この固定値は、例えば、ID等のデータとして使用され得る。
【0026】
半導体装置10は、ビット列を生成して出力するビット列生成回路ブロック20Aと、ビット列生成回路ブロック20Aからビット列を入力して、ビット列が期待されたように生成されたかを判定する判定回路ブロック30Aとを備える。
【0027】
ビット列生成回路ブロック20Aは、複数のビット列生成回路20を有する。各ビット列生成回路20は、システムクロックに基づいて生成された合成クロックSCKを入力してビット列を生成し、生成したビット列を判定回路ブロック30Aに出力する。
【0028】
判定回路ブロック30Aは、複数の判定回路30を有する。各判定回路30は、対応するビット列生成回路20からビット列を入力し、ビット列が期待されたように生成されたことを判定した判定結果を出力する。
【0029】
各判定回路30が出力する判定結果は、ビット列が期待されたように生成されたことを示すフラグJと、ビット列の内の1ビット目のデータB1と、ビット列の内の2ビット目以降のデータが一致していることを示すフラグB2とを有する。
【0030】
フラグJは、ビット列が期待されたように生成された場合には、1の値を有する。一方、フラグJは、ビット列が期待されたように生成されていない場合には、0の値を有する。
【0031】
ビット列が期待されたように生成された場合には、1ビット目のデータB1は、乱数であると判定される。
【0032】
また、ビット列が期待されたように生成された場合には、2ビット目以降のデータは一致しており且つ2ビット目以降のデータは1ビット目のデータを反転したデータとなる。そして、ビット列が期待されたように生成された場合には、2ビット目以降のデータは固定値であると判定される。
【0033】
また、2ビット目以降のデータが一致している場合には、フラグB2は0の値を有する。一方、2ビット目以降のデータが一致していない場合には、フラグB2は1の値を有する。
【0034】
図1に示す例では、ビット列は、6個のビットにより形成されるが、ビット列は、3個以上のビットを有していれば6個に限定されるものではない。
【0035】
また、ビット列生成回路ブロック20A内に配置されるビット列生成回路20の数は、生成すべき乱数及び固定値の数に応じて適宜設定される。
【0036】
次に、ビット列生成回路20について、更に以下に説明する。
【0037】
図2は、ビット列生成回路を説明する図である。
【0038】
本実施形態のビット列生成回路20は、共通に接続されたセット入力及びリセット入力を有し、共通に接続されたセット入力及びリセット入力に所定の信号を入力した時に、ビット列を出力するRSラッチである。本実施形態では、所定の信号として、合成クロックSCKを用いる。この合成クロックSCKの詳しい説明は後述する。
【0039】
ビット列生成回路20は、セット入力及びリセット入力に接続された共通入力21と、相互に接続された2つのNAND回路22,23と、非反転出力24と、反転出力25とを有する。
【0040】
ビット列生成回路20は、イオン濃度を調整することにより閾値が設定されたトランジスタを有する。ここで、イオン濃度を調整することは、単位体積当たりのイオン数又は深さ方向のイオン濃度の分布を含む意味である。
【0041】
所定の動作電圧が供給されるビット列生成回路20は、入力される所定の信号が、安定な出力状態を与える信号から不定な出力状態を与える信号へ変化した時に、設定された閾値に基づいた出力状態に遷移する。
【0042】
ビット列生成回路20は、入力A=0の時には、出力(B,C)=(1,1)で安定な出力状態となる。
【0043】
そして、入力をA=0からA=1に変化させた時には、設定された閾値に基づいて、出力(B,C)=(1,0)又は(B,C)=(0,1)の出力状態に遷移する。
【0044】
通常のRSラッチでは、NAND回路を形成するトランジスタの閾値は同様に調整されており、上述したように入力をA=0からA=1に変化させた時には、出力状態は不定になる。
【0045】
一方、本実施形態のビット列生成回路20は、NAND回路を形成するトランジスタの閾値を調整することにより駆動能力に差をつけて、入力をA=0からA=1に変化させた時に意図した状態に遷移するように重み付けがなされている。
【0046】
ビット列生成回路20は、所定の動作電圧が供給されて、ビット列の内の2ビット目以降のデータを生成する。ビット列生成回路20は、2ビット目以降のデータとして、トランジスタの設定された閾値に基づいて1又は0の固定値を生成する。
【0047】
ビット列生成回路20を形成するトランジスタはイオン濃度を調整することにより閾値が設定されており、各ビット列生成回路20が生成する固定値が決定される。
【0048】
ビット列生成回路20は、合成クロックSCKを入力し、合成クロックSCKと同期してビットデータを生成し、生成したビットデータを対応する判定回路30に出力する。
【0049】
正常なビット列生成回路20は、2ビット目以降のデータが一致したビット列を生成する。一方、
図1に示す例のように、ビット列生成回路20は、製造工程の不具合等に起因して、2ビット目以降のデータが一致しないビット列を生成する場合もある。このようなビット列は、判定回路30によって、ビット列が期待されたように生成されていないと判定されるので、乱数又は固定値として使用されない。
【0050】
また、ビット列生成回路20は、所定の動作電圧よりも低く且つノイズを有する電圧が供給されて、ビット列の内の1ビット目のデータを生成する。そして、ビット列生成回路20を形成するトランジスタ等の素子が正常に動作しない場合には、ビット列生成回路20は、固定値を反転したデータをランダムに生成する。そこで、半導体装置10は、ビット列の内の1ビット目のデータが固定値を反転したデータである場合には、1ビット目のデータを乱数として使用する。所定の動作電圧よりも低く且つノイズを有する電圧が供給されたビット列生成回路20が、1ビット目のデータとして乱数を生成することの詳しい説明は後述する。
【0051】
次に、判定回路30について、更に以下に説明する。
【0052】
図3は、判定回路を説明する図である。
【0053】
判定回路30は、ビット列生成回路20からビット列の信号ORSを入力する。判定回路30は、ビット列の1ビット目のデータと2ビット目以降のデータとを比較して、2ビット目以降のデータが一致しており且つ2ビット目以降のデータが1ビット目のデータを反転したデータであるかを判定する。
【0054】
図3に示す例では、判定回路30は、ビット列000001を入力する。ビット列は、最下位ビットLSBとして1を有し、最上位ビットMSBとして0を有する。ビット列の1ビット目のデータは、LSBである1であり、2ビット目以降のデータは、MSBを含む00000である。
【0055】
判定回路30は、ビット列生成回路20からビット列の信号ORSを入力するシフトレジスタ31を有する。シフトレジスタ31は、直列に接続された6個のD型フリップフロップDFF0〜DFF5を有する。各D型フリップフロップは、合成クロックSCKと同期して、ビット列生成回路20からのデータを1ビットずつシフトしていく。
【0056】
図3には、6個のD型フリップフロップDFF0〜DFF5それぞれにビット列000001の各ビットデータが保持された状態が示されている。
【0057】
D型フリップフロップDFF0〜DFF4は、保持するデータを端子Q0〜Q4からXOR回路32に出力する。また、D型フリップフロップDFF4、DFF5は、保持するデータを端子Q4、Q5からXOR回路33に出力する。更に、D型フリップフロップDFF5は、保持するデータを端子Q5から1ビット目のデータB1として出力する。
【0058】
XOR回路32は、入力した2ビット目以降のデータのXOR論理値を生成して、NAND回路36の一方の入力に出力すると共に、XOR論理値をフラグB2として出力する。
【0059】
図3に示す例では、XOR回路32は、XOR(0,0,0,0,0)=0を、NAND回路36に出力すると共に、フラグB2として出力する。
【0060】
XOR回路33は、入力した1ビット目のデータと2ビット目のデータとのXOR論理値を生成して、NAND回路37の一方の入力に出力する。
【0061】
図3に示す例では、XOR回路33は、XOR(0,1)=1を、NAND回路37に出力する。
【0062】
また、判定回路30は、3ビットカウンタ34と、3ビットカウンタ34の出力の論理積を生成するAND回路35とを有する。3ビットカウンタ34とAND回路35とは、3本のビット線によって接続される。
【0063】
図4は、3ビットカウンタを説明する図である。
【0064】
3ビットカウンタ34は、システムクロックCKを入力してクロック数をカウントし、カウント数をAND回路35に出力する。
【0065】
3ビットカウンタ34は、7番目のクロックを入力すると、3本のビット線の全てから1をAND回路35に出力する。
【0066】
3本のビット線の全てから1を入力したAND回路35は、その論理積であるAND(1,1,1)=1を、NAND回路36の他方の入力及びNAND回路37の他方の入力に出力する。
【0067】
NAND回路36は、AND回路35から1を入力し且つXOR回路32から0を入力すると、NAND論理値である1を、AND回路39の一方の入力に出力する。
【0068】
また、NAND回路37は、AND回路35から1を入力し且つXOR回路33から1を入力すると、NAND論理値である0を、インバータ38に出力する。インバータ38は、NAND論理値である0を反転した反転値1をAND回路39の他方の入力に出力する。
【0069】
一方及び他方の入力それぞれから1を入力したAND回路39は、フラグJとして1を出力する。
【0070】
このようにして、ビット列000001を入力した判定回路30は、入力したビット列が期待されたように生成されたことを示すフラグJとして1を出力する。また、ビット列000001を入力した判定回路30は、1ビット目のデータB1として1を出力する。更に、ビット列000001を入力した判定回路30は、2ビット目以降のデータが一致していることを示すフラグB2として0を出力する。
【0071】
次に、合成クロックSCKについて、以下に更に説明する。
【0072】
図5は、合成クロックSCKを説明する図である。
【0073】
SCK信号生成回路50は、初期リセットパルスIRSTと、システムクロックCKと、パワーオンリセット(Power On Reset:POR)信号に基づいて、合成クロックSCKを生成する。
【0074】
POR信号は、半導体装置10の電源が投入された時、半導体装置10が有する回路の状態を初期化するための信号である。POR信号は、例えば、電源の電圧が、動作電圧の50〜70%程度に上昇した時点で出力される。
【0075】
初期リセットパルスIRSTは、IRST信号生成回路40により生成される。
【0076】
IRST信号生成回路40は、POR信号を入力する遅延回路41と、遅延回路41の出力に接続するインバータ42と、インバータ42の出力及びPOR信号を入力するNAND回路43と、NAND回路43の出力に接続するインバータ44とを有する。
【0077】
POR信号は、所定の期間に亘ってハイ状態を有する信号なので、IRST信号生成回路40は、遅延回路41等を用いて、初期リセットパルスIRSTを生成する。
【0078】
SCK信号生成回路50は、システムクロックCK及びPOR信号を入力するAND回路51と、AND回路51の出力と初期リセットパルスIRSTとの論理和を生成して合成クロックSCKを出力するOR回路52とを有する。
【0079】
AND回路51は、POR信号とシステムクロックCKとの論理積をとることにより、電源の起動時にシステムクロックCKに含まれるノイズNを除去する。
【0080】
図6は、半導体装置の動作を説明するタイミングチャートである。
【0081】
図6に示す例は、判定回路30がビット列000001を入力しており、
図3に示す判定回路の動作を説明するものである。
【0082】
まず、POR信号を入力したIRST信号生成回路40は、初期リセットパルスIRSTを生成する。そして、初期リセットパルスIRSTを入力したSCK信号生成回路50は、合成クロックSCKを生成する。初期リセットパルスIRSTは、合成クロックSCKが出力する最初の合成クロックとなる。
【0083】
そして、最初の合成クロックSCKを入力したビット列生成回路20は、所定の動作電圧よりも低く且つノイズを有する電圧が供給されており、入力信号が0から1へ立ち上がるのと共に、固定値を反転したデータである1を出力する状態へ遷移する。ビット列生成回路20は、ORS信号として1ビット目のデータを出力する。
【0084】
次に、電源の電圧が上昇して動作電圧となり、1番目のシステムクロックCKが生成される。システムクロックCKを入力したSCK信号生成回路50は、システムクロックCKを合成クロックSCKとして出力する。
【0085】
1番目のシステムクロックCKを入力したシフトレジスタ31は、ビット列生成回路20から入力した1ビット目のデータを保持する。
【0086】
また、1番目のシステムクロックCKを入力したビット列生成回路20は、所定の動作電圧が供給されているので、固定値である0を出力する状態に遷移する。
【0087】
所定の動作電圧が供給されているビット列生成回路20は、合成クロックSCKとしての2番目以降のシステムクロックCKを入力しても、固定値である0を出力する状態を維持する。
【0088】
シフトレジスタ31が有する6個のD型フリップフロップDFF0〜DFF5は、合成クロックSCKと同期して、ビット列生成回路20からのデータを1ビットずつシフトしていく。
【0089】
7番目のクロックを入力した3ビットカウンタ34は、3本のビット線の全てから1をAND回路35に出力する。AND回路35は、論理積である1を、NAND回路36の他方の入力及びNAND回路37の他方の入力に出力する。
【0090】
そして、判定回路30は、フラグJとして1を出力し、1ビット目のデータB1として1を出力し、フラグB2として0を出力する。
【0091】
次に、他のビット列を入力した判定回路30の例を以下に説明する。
【0092】
図7は、判定回路30が、ビット列111110を入力した例である。
【0093】
ビット列111110は、2ビット目以降のデータが一致しており且つ2ビット目以降のデータが1ビット目のデータを反転したデータであるので、期待されたように生成されている。
【0094】
そこで、判定回路30は、フラグJとして1を出力し、1ビット目のデータB1として0を出力し、フラグB2として0を出力する。
【0095】
図8は、判定回路30が、ビット列000000を入力した例である。
【0096】
ビット列000000は、2ビット目以降のデータが一致しているが、2ビット目以降のデータが1ビット目のデータを反転したデータではないので、期待されたように生成されてはいない。即ち、2ビット目以降のデータは、固定値となっているが、1ビット目のデータを反転したデータとはなっていない。1ビット目のデータは、ビット列生成回路20が所定の動作電圧よりも低く且つノイズを有する電圧が供給されて生成されている。このように、ビット列生成回路20を形成するトランジスタ等の素子が正常に動作しない場合でも、ビット列生成回路20が固定値を生成する場合がある。しかし、この情報のみからは、ビット列生成回路20が不具合を有していることを除外できないので、半導体装置10は、このようなビット列は期待されたように生成されてはいないと判定する。
【0097】
そこで、判定回路30は、フラグJとして0を出力し、1ビット目のデータB1として0を出力し、フラグB2として0を出力する。
【0098】
図9は、判定回路30が、ビット列111111を入力した例である。
【0099】
ビット列111111は、2ビット目以降のデータが一致しているが、2ビット目以降のデータが1ビット目のデータを反転したデータではないので、期待されたように生成されてはいない。
【0100】
そこで、判定回路30は、フラグJとして0を出力し、1ビット目のデータB1として1を出力し、フラグB2として0を出力する。
【0101】
図10は、判定回路30が、ビット列001001を入力した例である。
【0102】
ビット列001001は、2ビット目以降のデータが一致していないので、期待されたように生成されてはいない。即ち、2ビット目以降のデータは、固定値ではない。
【0103】
そこで、判定回路30は、フラグJとして0を出力し、1ビット目のデータB1として1を出力し、フラグB2として1を出力する。
【0104】
図11は、判定回路30が、ビット列110110を入力した例である。
【0105】
ビット列110110は、2ビット目以降のデータが一致していないので、期待されたように生成されてはいない。即ち、2ビット目以降のデータは、固定値ではない。
【0106】
そこで、判定回路30は、フラグJとして0を出力し、1ビット目のデータB1として0を出力し、フラグB2として1を出力する。
【0107】
図12は、判定回路30が、ビット列001を入力した例である。
【0108】
ビット列は、3個以上のビットを有していれば、6個に限定されるものではない。シフトレジスタ31は、入力するビット列のビット数に対応して、3個のD型フリップフロップDFF0〜DFF2を有する。
【0109】
D型フリップフロップDFF0、DFF1は、保持するデータを端子Q0、Q1からXOR回路32に出力する。また、D型フリップフロップDFF1,DFF2は、保持するデータを端子Q1、Q2からXOR回路33に出力する。更に、D型フリップフロップDFF2は、保持するデータを端子Q2から1ビット目のデータB1として出力する。
【0110】
ビット列001は、2ビット目以降のデータが一致しており且つ2ビット目以降のデータが1ビット目のデータを反転したデータであるので、期待されたように生成されている。
【0111】
そこで、判定回路30は、フラグJとして1を出力し、1ビット目のデータB1として1を出力し、フラグB2として0を出力する。
【0112】
ビット列のビット数が多い程、2ビット目以降のデータが固定値であること及び1ビット目のデータが乱数であることの信頼性が増す。ビット列のビット数は、乱数又は固定値に対して求められる精度によって決定することが好ましい。
【0113】
次に、所定の動作電圧よりも低く且つノイズを有する電圧が供給されたビット列生成回路20が、1ビット目のデータとして乱数を生成することの説明を以下に述べる。
【0114】
まず、電源の起動時の電圧波形にはノイズが含まれることを説明する。
【0115】
図13は、ビット列生成回路に電力を供給する電源の起動時の電圧波形を説明する図である。
【0116】
ビット列生成回路20に電力を供給する電源の電圧は、起動時には時間の経過と共に上昇した後、動作電圧VDDで一定となるように制御される。
【0117】
ここで、起動時の上昇途中の電圧波形L1を拡大して示すと、実際には上下に変動するノイズを有しており、鎖線で示すようにノイズを有さない波形L2とは成っていない。ノイズが発生する理由は、起動時における電源の電圧供給能力が変動し、また、起動時におけるビット列生成回路20内の各負荷が変動することによる。
【0118】
このように、動作電圧VDDよりも低く且つノイズを有する電圧が供給されたビット列生成回路20は、固定値を反転したデータを生成する確率が高くなる。
【0119】
このような観点から、ビット列生成回路20へ電力を供給する電源の起動時に、動作電圧VDDよりも低い電圧V1以上であり且つ動作電圧VDDよりも低い電圧V2未満の電圧をビット列生成回路20に供給して、ビット列生成回路20に1ビット目のデータを生成させることが好ましい。また、動作電圧VDDの電圧をビット列生成回路20に供給して、ビット列生成回路20に2ビット目以降のデータを生成させることが好ましい。
【0120】
動作電圧VDDは、通常、±10%程度の変動を有する。また、POR信号は、通常、電源の電圧が、動作電圧VDDの50〜70%程度に上昇した時点で出力される。
【0121】
従って、動作電圧VDDよりも低い電圧V1としては、動作電圧VDDの50〜70%程度の値とすることができる。また、動作電圧VDDよりも低い電圧V2としては、動作電圧VDDの80〜90%程度の値とすることができる。
【0122】
次に、動作電圧VDDよりも低く且つノイズを有する電圧が供給されたビット列生成回路20が、1又は0の2つの値にランダムに遷移することを説明する。
【0123】
図14は、RSラッチの動作を説明する図である。
【0124】
共通に接続されたセット入力及びリセット入力を有するRSラッチであるビット列生成回路20は、2つのNAND回路が相互に接続された構造を有する。ここで、入力A及び入力Bを有するNAND回路は、入力Aが1に固定された時、入力Bに対するインバータとし働く。
【0125】
従って、1が入力されたビット列生成回路20は、2つのインバータが相互に接続された構造とみなすことができる。
【0126】
図15は、2つのインバータが相互に接続された構造の回路図である。また、
図15には、VDDが供給された時の出力電圧V1及びV2の関係が示されている。
【0127】
2つのインバータが相互に接続された構造は、2つの安定点S1、S2を有しており、1が入力されたビット列生成回路20の出力状態は、2つの安定点S1、S2のどちらかに対応する。具体的には、2つの安定点S1、S2は、1又は0の値に対応する。
【0128】
一方、0が入力されたビット列生成回路20の出力状態は、不安定点Mに対応する。
【0129】
ビット列生成回路20に電力を供給する電源の起動時には、上述したように、動作電圧VDDよりも低く且つノイズを有する電圧がビット列生成回路20に供給される。
【0130】
ビット列生成回路20に動作電圧VDDよりも低く且つノイズを有する電圧が供給されると、
図15に示すカーブCは、上下又は左右の方向に変動する。そして、入力が0から1へと変化したビット列生成回路20の出力状態は、不安定点Mから2つの安定点S1、S2のどちらかに遷移する。ここで、
図15に示すカーブCの変動はランダムな性質を有するので、ビット列生成回路20の出力状態は、不安定点Mから2つの安定点S1、S2のどちらかにランダムに遷移することになる。以上が、ビット列生成回路20が、1ビット目のデータとして乱数を生成することの説明である。
【0131】
ビット列生成回路20が1ビット目のデータを生成する際には、ビット列生成回路20に対してノイズを有する電圧が供給されることが好ましい。一方、ビット列生成回路20が2ビット目以降のデータを生成する際には、ビット列生成回路20に対してノイズを有さない電圧が供給されることが好ましい。
【0132】
そこで、半導体装置10は、ビット列生成回路20と、ビット列生成回路20へ電力を供給する電源との間に、電源のノイズを除去するフィルタが配置される。
【0133】
図16は、電源電圧のノイズを除去するフィルタを説明する図である。
【0134】
電源60とビット列生成回路ブロック20Aとの間には、フィルタ63が配置される。
【0135】
フィルタ63は、可変抵抗64とコンデンサ65とを有する。
【0136】
電源60は、配線61を用いてビット列生成回路ブロック20Aに電力を供給する。また、ビット列生成回路ブロック20Aは、配線62を用いてVSSに接地される。
【0137】
可変抵抗64は、電源60とコンデンサ65との間に配置される。
【0138】
コンデンサ65は、配線61と配線62との間に配置される。
【0139】
電源60のノイズを除去する観点から、ビット列生成回路20が2ビット目以降のデータを生成する時に、可変抵抗64の抵抗値を、ビット列生成回路20が1ビット目を生成した時よりも大きくすることが好ましい。
【0140】
図17は、可変抵抗を説明する図である。
【0141】
可変抵抗64は、電源60と配線61との間に配置されるスイッチング素子T1、T2、Tnを有する。スイッチング素子T1、T2、Tnとしては、例えば、PMOSトランジスタを用いることができる。
【0142】
スイッチング素子T1、T2、Tnのゲートには、AND回路A1、A2、Anの出力が接続される。
【0143】
AND回路A1、A2、Anの一方の入力には、POR信号が入力する。また、AND回路A1、A2、Anの他方の入力には、制御信号VCTL0,VCTL1、VCTLnが入力する。
【0144】
スイッチング素子T1、T2、Tnは、POR信号を入力するまでは、オン状態となり、電源60のノイズが、配線61を介してビット列生成回路ブロック20Aに伝わり易い状態にある。
【0145】
従って、ビット列生成回路20が1ビット目を生成する時点では、電源60のノイズがビット列生成回路ブロック20Aに伝わり易い状態にある。
【0146】
一方、POR信号が入力されたスイッチング素子T1、T2、Tnのスイッチング状態は、制御信号VCTL0,VCTL1、VCTLnによって制御される。制御信号VCTL0,VCTL1、VCTLnがハイ状態のスイッチング素子T1、T2、Tnは、オフ状態となり、電源60のノイズがフィルタ63により除去されて、配線61を介してビット列生成回路ブロック20Aに伝わることが抑制される。
【0147】
従って、ビット列生成回路20が2ビット目以降のデータを生成する時には、制御信号VCTL0,VCTL1、VCTLnを制御することにより、電源60のノイズがビット列生成回路ブロック20Aに伝わることを抑制することができる。
【0148】
上述した本実施形態の半導体装置10によれば、乱数及び固定値を有するビット列を生成することができる。そして、ビット列が期待されたように生成されたものであることを判定することができる。
【0149】
また、半導体装置10のビット列生成回路20は、イオン濃度を調整することにより閾値が設定されたトランジスタを有するので、リバースエンジニアリングにより光学的に複製することが防止される。従って、半導体装置10が生成する固定値を複製することが防止される。
【0150】
また、仮にリバースエンジニアリングにより半導体装置10が光学的に複製された回路は、トランジスタの閾値の設定が複製されていないので、ビット列生成回路が生成したビット列を、判定回路が期待されたように生成されていないと判定することにより、正常に動作することが防止される。
【0151】
次に、上述した半導体装置10の変型例を以下に説明する。
【0152】
図18は、第1実施形態の半導体装置の変型例1を示す図である。
【0153】
変型例1の半導体装置は、フィルタ63とビット列生成回路ブロック20Aとの間に、ビット列生成回路20を駆動する電圧を変動させる電圧変動回路70を備える。
【0154】
電圧変動回路70は、ビット列生成回路ブロック20Aへ電力を供給する電源60が起動している時に、ビット列生成回路20に乱数を生成させる際に用いられる。
【0155】
電圧変動回路70は、端子72aと、端子72b又は端子72cとを接続するスイッチング素子72と、端子72aと配線62との間に配置されるコンデンサ71とを有する。
【0156】
端子72bは、配線62と接続する。また、端子72cは、配線61と接続する。
【0157】
通常、スイッチング素子72は、端子72aと端子72bとを接続する。
【0158】
スイッチング素子72が、端子72aと端子72bとを接続している時には、コンデンサ71の両端はVSSに接地されており、電圧変動回路70はビット列生成回路20を駆動する電圧に影響を与えない。
【0159】
一方、電圧変動回路70がビット列生成回路20を駆動する電圧を変動させる時には、スイッチング素子72は、端子72aと端子72cとを接続するように切り替えられる。
【0160】
図示しない制御回路からのトリガ信号TSがスイッチング素子72に入力すると、スイッチング素子72は、端子72aと端子72cとを接続するように切り替わる。そして、電源60の電力がコンデンサ71を充電するために使用されるので、電源60の電圧は、
図18に示すように、動作電圧VDDよりも低い電圧V2未満の電圧に一時的に低下する。ビット列生成回路20を駆動する電圧が、電圧V2未満に低下すると、
図13に示すようなノイズが電圧に発生する。
【0161】
従って、半導体装置10は、ビット列生成回路20へ電力を供給する電源60が起動している時に新たに乱数を生成する際には、以下のような動作を行う。
【0162】
まず、電圧変動回路70は、ビット列生成回路20を駆動する電圧を、動作電圧VDDよりも低い電圧V2未満の電圧に低下させて、ビット列生成回路20に1ビット目のデータを生成させる。
【0163】
次に、電圧変動回路70は、ビット列生成回路20を駆動する電圧を、動作電圧VDDに上昇させて、ビット列生成回路20に2ビット目以降のデータを生成させる。
【0164】
ビット列生成回路20へ電力を供給する電源60が起動している時に新たに乱数を生成する際には、上述したトリガ信号TSは、3ビットカウンタ34をリセットする信号としても用いられる。また、トリガ信号TSは、POR信号としても用いられる。
【0165】
図19は、第1実施形態の半導体装置の変型例2を示す図である。
【0166】
変型例2の半導体装置も、変型例1と同様に、フィルタ63とビット列生成回路ブロック20Aとの間に、ビット列生成回路20を駆動する電圧を変動させる電圧変動回路80を備える。
【0167】
電圧変動回路80は、コンデンサ81と、コンデンサ81の一方の端子82と、コンデンサ81の他方の端子83とを有する。
【0168】
コンデンサ81の他方の端子83は、配線61と接続する。
【0169】
図示しない制御回路からのトリガ信号TSがコンデンサ81の一方の端子82に入力すると、電源60から供給される電圧とトリガ信号TSが容量カップリングして、ビット列生成回路20を駆動する電圧を変動させる。
【0170】
トリガ信号TSとしては、例えば、
図19に示すように、電圧が立ち上がるパルスP1又は電圧が立ち下がるパルスP2を用いることができる。
【0171】
トリガ信号TSとして、パルスP1を用いた場合には、ビット列生成回路20を駆動する電圧の波形は、波形C1のような変動を示す。一方、トリガ信号TSとして、パルスP2を用いた場合には、ビット列生成回路20を駆動する電圧の波形は、波形C2のような変動を示す。ビット列生成回路20を駆動する電圧が、急激に上昇又は低下すると、
図13に示すようなノイズが電圧に発生する。
【0172】
従って、半導体装置10は、ビット列生成回路20へ電力を供給する電源60が起動している時に新たに乱数を生成する際には、以下のような動作を行う。
【0173】
まず、トリガ信号TSとしてパルスP1を用いる場合には、電圧変動回路70は、ビット列生成回路20を駆動する電圧を、動作電圧VDDよりも高い電圧V3よりも高い電圧に上昇させて、ビット列生成回路20に1ビット目のデータを生成させる。
【0174】
次に、電圧変動回路70は、ビット列生成回路20を駆動する電圧を、動作電圧VDDに低下させて、ビット列生成回路20に2ビット目以降のデータを生成させる。
【0175】
また、トリガ信号TSとしてパルスP2を用いる場合には、電圧変動回路70は、ビット列生成回路20を駆動する電圧を、動作電圧VDDよりも低い電圧V2未満の電圧に低下させて、ビット列生成回路20に1ビット目のデータを生成させる。
【0176】
次に、電圧変動回路70は、ビット列生成回路20を駆動する電圧を、動作電圧VDDに上昇させて、ビット列生成回路20に2ビット目以降のデータを生成させる。
【0177】
ビット列生成回路20へ電力を供給する電源60が起動している時に新たに乱数を生成する際には、上述したトリガ信号TSは、3ビットカウンタ34をリセットする信号としても用いられる。また、トリガ信号TSは、POR信号としても用いられる。
【0178】
次に、上述した半導体装置の第2実施形態を、
図20及び
図21を参照しながら以下に説明する。第2実施形態について特に説明しない点については、上述の第1実施形態に関して詳述した説明が適宜適用される。また、同一の構成要素には同一の符号を付してある。
【0179】
図20は、本明細書に開示する半導体装置の第2実施形態を示す図である。
【0180】
本実施形態の半導体装置10は、ビット列生成回路ブロック20A及び判定回路ブロック30Aを有する複数の冗長化ブロック100と、各冗長化ブロック100と接続する多数決回路ブロック90Aとを有する。
【0181】
冗長化ブロック100のビット列生成回路ブロック20Aは、3つのビット列生成回路20を有する。同じビット列生成回路ブロック20Aに配置されるビット列生成回路20であるRSラッチのトランジスタの閾値は、イオン濃度を調整することにより同じように設定されている。
【0182】
冗長化ブロック100の判定回路ブロック30Aは、ビット列生成回路ブロック20Aの各ビット列生成回路20に対応する3つの判定回路30を有する。
【0183】
判定回路30は、対応するビット列生成回路20からビット列を入力して、ビット列が期待されたように生成されたかを判定した判定結果を多数決回路ブロック90Aに出力する。
【0184】
具体的には、判定回路30は、第1実施形態と同様に、ビット列が期待されたように生成されたことを示すフラグJと、ビット列の内の1ビット目のデータB1と、ビット列の内の2ビット目以降のデータが一致していることを示すフラグB2を出力する。
【0185】
多数決回路ブロック90Aは、第1多数決回路91と、第2多数決回路92と、第3多数決回路93と、を有する。
【0186】
第1多数決回路91は、3つの判定回路30が判定した結果であるフラグJの多数決に基づいて、フラグJの多数決による判断を行う。フラグJの多数決の判断結果が1であることは、ビット列が期待されたように生成されていることを保証する。一方、フラグJの多数決の判断結果が0であることは、ビット列が期待されたように生成されていないことを意味する。
【0187】
図20に示す上段の多数決回路ブロック90Aでは、3つの判定回路30が出力するフラグJは1と0と1なので、第1多数決回路91は、フラグJの多数決の判断結果として1を出力する。
【0188】
第2多数決回路92は、3つの判定回路30が判定した結果であるデータB1の多数決に基づいて、データB1の多数決による判断を行う。データB1の多数決の判断結果が1であることは、乱数として1の生成が支配的であることを意味する。一方、データB1の多数決の判断結果が0であることは、乱数として0の生成が支配的であることを意味する。
【0189】
図20に示す上段の多数決回路ブロック90Aでは、3つの判定回路30が出力するデータB1は1と0と1なので、第2多数決回路92は、データB1のの多数決の判断結果として1を出力する。
【0190】
第3多数決回路93は、3つの判定回路30が判定した結果であるフラグB2の多数決に基づいて、フラグB2の多数決による判断を行う。フラグB2の多数決の判断結果が0であることは、固定値の生成が支配的であることを意味する。一方、フラグB2の多数決の判断結果が1であることは、固定値の生成が支配的でないことを意味する。
【0191】
図20に示す上段の多数決回路ブロック90Aでは、3つの判定回路30が出力するフラグB2は0と1と0なので、第3多数決回路93は、フラグB2のの多数決の判断結果として0を出力する。
【0192】
上述した説明では、ビット列生成回路ブロック20Aは、3つのビット列生成回路20を有していたが、ビット列生成回路20の数は2つ以上であれば、求める冗長化に対する要求に応じてビット列生成回路20の数を適宜変更することができる。
【0193】
また、冗長化ブロック100の数は、生成すべき乱数及び固定値の数に応じて適宜設定される。
【0194】
本実施形態によれば、複数のビット列生成回路20が生成したビット列の判定結果に基づいて、多数決回路が多数決による判断を行うので、1つの多数決回路ブロック90Aが出力する判断結果の再現性を向上することができる。
【0195】
図21は、多数決回路を説明する図である。
【0196】
図21は、
図20に示す3入力の多数決回路の回路図を、真理値表と共に示す。
【0197】
本実施形態では、多数決回路を用いて多数決の判断を行っているが、多数決回路の代わりにError Checked and Correction(ECC)回路を用いても良い。
【0198】
本発明では、上述した実施形態のデータ生成回路、半導体装置及び判定方法は、本発明の趣旨を逸脱しない限り適宜変更が可能である。また、一の実施形態が有する構成要件は、他の実施形態にも適宜適用することができる。
【0199】
例えば、上述した各実施形態では、ビット列生成回路として、イオン濃度を意図的に調整することにより閾値が設定されたトランジスタを有するRSラッチを用いていた。しかし、ビット列生成回路が有するトランジスタは、イオン濃度を意図的に調整することにより閾値が設定されていなくても良い。
【0200】
また、上述した各実施形態では、ビット列生成回路としてRSラッチを用いていたが、ビット列生成回路は、ビット列を生成するものであれば、他の回路を用いても良い。
【0201】
ここで述べられた全ての例及び条件付きの言葉は、読者が、発明者によって寄与された発明及び概念を技術を深めて理解することを助けるための教育的な目的を意図する。ここで述べられた全ての例及び条件付きの言葉は、そのような具体的に述べられた例及び条件に限定されることなく解釈されるべきである。また、明細書のそのような例示の機構は、本発明の優越性及び劣等性を示すこととは関係しない。本発明の実施形態は詳細に説明されているが、その様々な変更、置き換え又は修正が本発明の精神及び範囲を逸脱しない限り行われ得ることが理解されるべきである。
【0202】
以上の上述した各実施形態に関し、更に以下の付記を開示する。
【0203】
(付記1)
共通に接続されたセット入力及びリセット入力を有し、前記共通に接続されたセット入力及びリセット入力に所定の入力信号を入力した時に、ビット列を出力するラッチ回路であって、イオン濃度を調整することにより閾値が設定されたトランジスタを有し、前記ラッチ回路を駆動する電圧が動作電圧とは異なる電圧である状態において、前記入力信号に応じて第1の出力状態をラッチして出力し、前記ラッチ回路を駆動する電圧が前記動作電圧である状態において、前記入力信号に応じて前記設定された閾値に基づく第2の出力状態をラッチして出力するラッチ回路と、
前記ラッチ回路が出力する前記ビット列を入力し、1ビット目のデータと2ビット目以降のデータとを比較して、2ビット目以降のデータが一致しており且つ2ビット目以降のデータが1ビット目のデータを反転したデータであるかを判定する判定回路と、
を備え、
前記判定回路の判定結果に基づいて出力データを生成するデータ生成回路。
【0204】
(付記2)
前記ラッチ回路を駆動する電圧を変動させる電圧変動回路を備える付記1に記載のデータ生成回路。
【0205】
(付記3)
前記電圧変動回路は、前記ラッチ回路を駆動する電圧を、前記動作電圧よりも低い第1電圧未満の電圧に低下させた後、前記動作電圧に変化させる付記2に記載のデータ生成回路。
【0206】
(付記4)
前記電圧変動回路は、前記ラッチ回路を駆動する電圧を、動作電圧よりも高い第2電圧よりも高い電圧に上昇させた後、前記動作電圧に変化させる付記2に記載のデータ生成回路。
(付記5)
複数の前記判定回路が判定した結果の多数決に基づいて、多数決による判断を行う多数決回路を備える付記1〜4の何れか一項に記載のデータ生成回路。
【0207】
(付記6)
共通に接続されたセット入力及びリセット入力を有し、前記共通に接続されたセット入力及びリセット入力に所定の入力信号を入力した時に、ビット列を出力するラッチ回路であって、イオン濃度を調整することにより閾値が設定されたトランジスタを有し、前記ラッチ回路を駆動する電圧が動作電圧とは異なる電圧である状態において、前記入力信号に応じて第1の出力状態をラッチして出力し、前記ラッチ回路を駆動する電圧が前記動作電圧である状態において、前記入力信号に応じて前記設定された閾値に基づく第2の出力状態をラッチして出力するラッチ回路と、
前記ラッチ回路が出力する前記ビット列を入力し、1ビット目のデータと2ビット目以降のデータとを比較して、2ビット目以降のデータが一致しており且つ2ビット目以降のデータが1ビット目のデータを反転したデータであるかを判定する判定回路と、
を備え、
前記判定回路の判定結果に基づいて出力データを生成するデータ生成回路を備える半導体装置。
【0208】
(付記7)
複数の前記判定回路が判定した結果の多数決に基づいて、多数決による判断を行う多数決回路を備える付記6に記載の半導体装置。
【0209】
(付記8)
共通に接続されたセット入力及びリセット入力を有するラッチ回路であって、イオン濃度を調整することにより閾値が設定されたトランジスタを有するラッチ回路を用いて、
前記ラッチ回路を駆動する電圧が動作電圧とは異なる電圧である状態において、前記共通に接続されたセット入力及びリセット入力に所定の入力信号を入力して第1の出力状態をラッチさせて1ビット目のデータを出力させ、
続いて前記ラッチ回路を駆動する電圧が前記動作電圧である状態において、前記共通に接続されたセット入力及びリセット入力に所定の入力信号を入力して前記設定された閾値に基づく第2の出力状態をラッチさせて2ビット目以降のデータを出力させ、
前記ラッチ回路が出力する前記1ビット目のデータと前記2ビット目以降のデータとを比較して、2ビット目以降のデータが一致しており且つ2ビット目以降のデータが1ビット目のデータを反転したデータであるかを判定する判定方法。
【0210】
(付記9)
前記ラッチ回路へ電力を供給する電源の起動時に、
前記動作電圧よりも低い第3電圧以上であり且つ前記動作電圧よりも低い第4電圧未満の電圧を前記ラッチ回路に供給して、前記ラッチ回路に前記1ビット目のデータを生成させ、
前記動作電圧を前記ラッチ回路に供給して、前記ラッチ回路に前記2ビット目以降のデータを生成させる付記8に記載の判定方法。
【0211】
(付記10)
前記ラッチ回路へ電力を供給する電源が起動している時に、
前記ラッチ回路を駆動する電圧を、前記動作電圧よりも低い第5電圧未満の電圧に低下させて、前記ラッチ回路に前記1ビット目のデータを生成させ、
前記ラッチ回路を駆動する電圧を、前記動作電圧に上昇させて、前記ラッチ回路に前記2ビット目以降のデータを生成させる付記8又は9に記載の判定方法。
【0212】
(付記11)
前記ラッチ回路へ電力を供給する電源が起動している時に、
前記ラッチ回路を駆動する電圧を、前記動作電圧よりも高い第6電圧よりも高い電圧に上昇させて、前記ラッチ回路に前記1ビット目のデータを生成させ、
前記ラッチ回路を駆動する電圧を、前記動作電圧に低下させて、前記ラッチ回路に前記2ビット目以降のデータを生成させる付記8又は9に記載の判定方法。
【0213】
(付記12)
前記ラッチ回路と、前記ラッチ回路へ電力を供給する電源との間に可変抵抗を配置して、前記ラッチ回路が前記2ビット目以降のデータを生成する時に、前記可変抵抗の抵抗値を、前記ラッチ回路が前記1ビット目を生成した時よりも大きくする付記8〜11の何れか一項に記載の判定方法。