(57)【要約】【課題】乱数発生回路に対して衝突が発生しない乱数を発生させるための動作時間の設定を簡単に行うことができる乱数発生回路用テスト回路及び乱数発生回路用テスト方法を提供する。【解決手段】リセット信号９の直後の乱数発生起動信号１０が印加されることにより、乱数を発生するまでに過渡的応答を示す乱数発生回路２は、初期状態から起動して乱数発生の動作を開始し、動作時間設定信号１３により設定される終了信号１５後のタイミングでその出力データをバッファメモリ６に取り込む。所定回数分、取り込まれた出力データ１６における２つを比較回路７により比較して、一致する組が１つでも存在した場合には動作時間を長くして、同様の動作を繰り返すことにより、衝突が発生しないで十分にランダムな乱数の発生ができる動作時間が算出される。【選択図】図１
2008242815.tif 000002
【特許請求の範囲】
【請求項１】
過渡的な乱数発生特性を有する乱数発生回路に対して、初期状態から乱数を発生させる起動信号を所定の時間間隔で複数回、印加する起動信号印加手段と、
各起動信号が印加された時間を基準時刻として、前記時間間隔より短く設定された動作時間後に前記乱数発生回路から出力される各出力データを、相互に比較し、一致する出力データが存在するか否かの判定を行う判定手段と、
を備えたことを特徴とする乱数発生回路用テスト回路。
【請求項２】
前記判定手段は、前記乱数発生回路から前記動作時間後に出力される各出力データを、一時記憶するメモリ回路と、前記メモリ回路に記憶された各出力データを相互に比較し、一致する出力データが存在するか否かの判定結果を出力する比較回路とから構成されることを特徴とする請求項１に記載の乱数発生回路用テスト回路。
【請求項３】
さらに前記判定手段により一致する出力データが存在しないと判定した場合には、前記動作時間の値を小さく設定して動作させ、前記判定手段により一致する出力データが存在すると判定した場合には、前記動作時間の値を大きく設定して動作させることにより、前記判定手段により一致する出力データと一致しない出力データの境界に対応する動作時間の境界値を算出することを特徴とする請求項１又は２に記載の乱数発生回路用テスト回路。
【請求項４】
前記乱数発生回路から出力される出力データのビット数をｎとした場合、前記ビット数ｎよりも小さい所定ビット数ｍ分のみで出力データの複数個を相互に比較し、一致するか否かの判定を行うことを特徴とする請求項１から３のいずれか１つの請求項に記載の乱数発生回路用テスト回路。
【請求項５】
過渡的な乱数発生特性を有する乱数発生回路に対して、初期状態から乱数を発生させるための起動信号を所定の時間間隔で複数回、印加する起動信号印加ステップと、
各起動信号が印加された時間を基準時刻として、前記時間間隔よりも短く設定された動作時間後に前記乱数発生回路から出力される各出力データを、相互に比較し、一致する出力データが存在するか否かの判定を行う判定ステップと、
を備えたことを特徴とする乱数発生回路用テスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数発生回路から出力される出力データが乱数になっているか否かの評価に使用される乱数発生回路用テスト回路及び乱数発生回路用テスト方法に関する。
【背景技術】
【０００２】
例えば、ネットワーク上の情報等の保護に関して、真性乱数又はこれに等価に近い擬似乱数が不可欠となりつつあり、その性質は、全くの不規則、平等な確率、前後が無関係、周期がないなどの特徴を有する。なお、真性乱数は、一般には物理現象を利用して生成されるものを指すが、本明細書においては、これに等価に近い擬似乱数の場合も含む意味で用いる。  
例えばＳｏＣ（システム・オン・ア・チップ）装置に搭載される乱数発生回路にはリセット解除後に種情報としてのＳｅｅｄを入力するものと、入力せずに自分で発生させるものがある。  
前者の場合、同じＳｅｅｄを入れるとリセット解除後の乱数出力が常に同じになるので、フラッシュメモリ等に値を格納しておき、リセット解除のたびに異なる値のＳｅｅｄを読み出して使用する。  
後者の場合、Ｓｅｅｄを入力する手間は不要だが、攪拌回路(ランダム性の源となる回路)を使用する。この攪拌回路のため、リセット解除してからランダム性の高い出力を出すまでに一定の時間としての動作時間が必要な場合がある。
【０００３】
後者のような攪拌回路を用いた場合、リセット解除後の乱数発生回路の起動において乱数発生回路の動作時間の設定が短いと、リセット解除後、数回の乱数出力が全く同じ値となる。こういう現象を衝突と呼ぶ。  
乱数出力の衝突が起きない乱数発生回路の動作時間の設定は、ノイズ等の環境(レイアウト条件、プログラムのレジスタアクセス頻度)により影響されるため、乱数発生回路を搭載したＳｏＣ装置毎に実機評価をして決めている。  
通常は、所定オーダーの衝突確率を考えて、1サンプルあたり１０００回程度の測定が行われる。また、個体差も考慮すると、さらに数サンプル程度の測定が必要となる。  
乱数発生回路の動作時間の設定を変化させながら、上記１０００回×数サンプルの実機評価を行い、衝突が発生しない動作時間の設定或いは取得するために、測定者或いはユーザは、多くの手間を必要とすると共に、多くのリソースを消費する。
【０００４】
一方、特許文献１には、乱数を連続して発生させ、出現する値が同じものを数え、数えた値がある閾値より多かった場合には、発生した乱数がランダムでないと判定する装置が開示されている。  
また、特許文献２には、特許文献１に類似して、チップ内に形成した装置が開示されている。この特許文献２には、乱数発生素子を組み込んだ半導体チップにおいて、乱数発生素子から発生した信号に基づく、任意のビット数の乱数を発生させ、所定の時間内に一定量のサンプルデータを取得し、各数値の乱数発生頻度等を調べて、閾値を超えるものを不良品と判定する装置が開示されている。  
このように特許文献１及び特許文献２も、上述した乱数発生回路における衝突が発生しないような乱数を発生させるための動作時間の設定を簡単に行う手段及び方法を開示するものでない。
【特許文献１】ＷＯ  ２００４／０８１７８６号公報
【特許文献２】特開２００３−１９６０８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は上述した点に鑑みてなされたもので、乱数発生回路に対して衝突が発生しない乱数を発生させるための動作時間の設定を簡単に行うことができる乱数発生回路用テスト回路及び乱数発生回路用テスト方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一実施形態に係る乱数発生回路用テスト回路は、過渡的な乱数発生特性を有する乱数発生回路に対して、初期状態から乱数を発生させる起動信号を所定の時間間隔で複数回、印加する起動信号印加手段と、各起動信号が印加された時間を基準時刻として、前記時間間隔より短く設定された動作時間後に前記乱数発生回路から出力される各出力データを、相互に比較し、一致する出力データが存在するか否かの判定を行う判定手段と、を備えたことを特徴とする。
【０００７】
本発明の一実施形態に係る乱数発生回路用テスト方法は、過渡的な乱数発生特性を有する乱数発生回路に対して、初期状態から乱数を発生させるための起動信号を所定の時間間隔で複数回、印加する起動信号印加ステップと、各起動信号が印加された時間を基準時刻として、前記時間間隔よりも短く設定された動作時間後に前記乱数発生回路から出力される各出力データを、相互に比較し、一致する出力データが存在するか否かの判定を行う判定ステップと、を備えたことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、乱数発生回路に対して衝突が発生しない乱数を発生させるための動作時間の設定を簡単に行うことができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明の各実施形態を説明する。  
（第１の実施形態）
図１は本発明の第１の実施形態に係る乱数発生回路用テスト回路（以下、テスト回路と略記）１の構成を示す。このテスト回路１は、乱数を発生する乱数発生回路２と接続して使用される。この乱数発生回路２は、過渡的な乱数発生特性を持つ。つまり、この乱数発生回路２は、初期状態から十分にランダムな擬似乱数（以下、単に乱数という）を発生するまでに必要となるある時間（以下、動作時間）を必要とする攪拌回路３を内蔵している。  
そして、このテスト回路１は、乱数発生回路２と共に、ＳｏＣ製品４に組み込まれ、このＳｏＣ製品４の初期評価や量産テスト時に、乱数発生回路２が真性乱数と見なすことができる乱数を発生するまでの上記の動作時間として推奨される値、つまり推奨値を出力する。
【００１０】
このテスト回路１は、各種のタイミング信号を発生するタイミング発生回路５を有する。また、このテスト回路１は、タイミング信号が印加される乱数発生回路２から出力される（動作時間後には乱数となる）出力データを一時格納（記憶）するメモリ回路としてのバッファメモリ６と、このバッファメモリ６からの２つの出力データを相互に一致しているか否かを比較する比較回路７とを有する。  
バッファメモリ６及び比較回路７は、乱数発生回路２が十分にランダムな乱数を発生しているか否かの判定を行う判定手段を形成している。  
タイミング発生回路５は、図示しないクロック発振器によるクロックに同期して、各種のタイミング信号の発生の制御を行うＣＰＵ８を有する。そして、タイミング発生回路５で発生された各種のタイミング信号としてのリセット信号９や乱数発生起動信号１０は乱数発生回路２に、所定の時間間隔で複数回印加される。
【００１１】
乱数発生回路２は、リセット信号９が印加されることにより、初期状態にリセットされ、リセット信号９直後に乱数発生起動信号１０が印加されることにより、乱数発生回路２は、内部の攪拌回路３の攪拌動作をソフトウェア的に開始させる制御動作を行う。  
このようにタイミング発生回路５は、過渡的な乱数発生特性を有する乱数発生回路２に対して初期状態から乱数を発生させる起動信号を所定の時間間隔で印加する起動信号印加手段を形成する。  
上記攪拌回路３は、例えば図２に示す構成である。図２では、１ビット分の攪拌回路３の例で示しているが、実際には複数個の攪拌回路３により、複数ビットの乱数を発生する。
【００１２】
この攪拌回路３は、２入力のＯＲ回路１１と、このＯＲ回路１１からの出力と２つの制御データＸ１，Ｘ２とが入力される３入力の排他的ＯＲ回路（ＸＯＲ回路と略記）１２とから構成され、ＸＯＲ回路１２の出力ＵはモードデータＹが入力されるＯＲ回路１１に入力される。なお、この３入力のＸＯＲ回路１２は、２入力のＸＯＲを調べ、その出力と残りの１つの入力間で、さらにＸＯＲの演算を行うものである。  
また、モードデータＹと制御データＸ１，Ｘ２のデジタル値（２値）は、乱数発生回路２内の図示しない制御手段により制御される。モードデータＹは、Ｙ＝０とした場合が攪拌動作に関係する攪拌用モードで、Ｙ＝１とした場合が攪拌動作には関係しない他のモードに用いられる。なお、Ｙ＝１の他のモードの時には、Ｘ１＝Ｘ２の時には、出力Ｕ＝１、Ｘ１≠Ｘ２の時には出力Ｕ＝０となる。
【００１３】
Ｙ＝０の攪拌用モードにおいては、攪拌動作を禁止する場合には、制御データＸ１，Ｘ２をＸ１＝Ｘ２とする。この場合には、攪拌回路３の出力Ｕは、Ｕ＝０或いは１の確定値となる。  
これに対して、攪拌動作を開始させる場合には、制御データＸ１，Ｘ２をＸ１≠Ｘ２とする。この場合には、この攪拌回路３は、非常に高い周波数で発振する。  
この非常に高い周波数での発振状態は、始動時においては攪拌機能に関して不安定な過渡応答特性を示すが、始動時から適度な時間、つまり動作時間の経過後には安定した攪拌動作状態となる。この安定した攪拌動作状態においては、出力Ｕがノイズ等によってランダムに変化する。そして、この攪拌回路３の出力Ｕは、乱数発生回路２の１ビット分の乱数発生用の出力データとして利用される。
【００１４】
本実施形態においては、攪拌回路３を乱数発生起動信号１０により起動させ、その乱数発生起動時間から動作時間後のタイミング（の後述する乱数発生終了信号１５）で乱数であるか否かを評価する出力データとしてを取り込むと共に、その乱数発生の動作を停止（終了）させる。  
リセット信号９と乱数発生起動信号１０は、ＣＰＵ８の制御下で、例えば図３に示すように複数の測定回数Ｍ、具体的には例えばＭ＝１０００、繰り返し発生される。  
上記のようにリセット信号９により、乱数発生回路２は初期状態に設定され、乱数発生起動信号１０が印加されることにより攪拌回路３の攪拌動作が開始する。なお、タイミング発生回路５は、リセット信号９と、その直後の乱数発生起動信号１０を１組の信号として、乱数発生回路２に印加するようにしても良い。
【００１５】
また、図３に示すようにＣＰＵ８は、乱数発生回路２の乱数発生の動作時間を設定する乱数発生回路動作時間設定信号（以下、単に動作時間設定信号と略記）１３を乱数発生回路２に出力する。  
図３に示すように乱数発生回路２は、乱数発生起動信号１０がアクティブになってから、動作時間設定信号１３により設定された動作時間後に、乱数発生の動作を終了する乱数発生終了信号（以下、単に終了信号と略記）１５を出力する。  
なお、図３では、乱数発生起動信号１０がＬからＨでアクティブになり、このタイミングから終了信号１５がＬからＨになるまでの時間間隔が動作時間として設定されているが、この定義に限定されるものでない。  
この終了信号１５は、乱数発生回路２から出力される出力データ１６と共に、バッファメモリ６に出力される。
【００１６】
バッファメモリ６は、乱数発生回路２から出力される出力データ１６を終了信号１５が例えばがアクティブになったタイミング（例えば図３に示す終了信号１５のパルスの立ち下がりエッジのタイミング）で、出力データ１６を取り込み、このバッファメモリ６内に一時格納する。  
なお、この終了信号１５により、攪拌回路３の動作が停止する。そして、この終了信号１５のタイミングで出力データ１６がバッファメモリ６内に一時格納された直後に、タイミング発生回路５から次のリセット信号９が出力される。そして、同様の動作が繰り返される。  
つまり、図３におけるリセット信号９から次のリセット信号との間で、乱数発生起動信号１０が印加されることにより乱数発生回路２はそれぞれ初期状態から起動し、同じ動作時間の経過後に、最初に乱数発生回路２から出力される出力データ１６がバッファメモリ６に順次格納される動作が繰り返されることになる。但し、後述するように一致する出力データ１６が得られてしまう場合には、動作時間が長くなるように変更される。
【００１７】
バッファメモリ６は、このバッファメモリ６内に複数の出力データ１６を格納すると、その内の２つの出力データを比較回路７に出力する。各出力データは、所定ビット数以上の複数ビットからなるデータである。  
例えば、バッファメモリ６から出力される２つの出力データを６ａ、６ｂとした場合、比較回路７は２つの出力データ６ａ、６ｂを各ビット単位で比較し、完全に一致するか否かの判定を行い、判定結果の判定信号１７を出力する。  
比較回路７により、出力データ１６全ての組み合わせで比較が行われる。例えば測定回数Ｍ＝１０００の場合、１０００×９９９通りの比較が行われる。  
比較回路７の判定信号１７は、例えばタイミング発生回路５（のＣＰＵ８）に出力される。ＣＰＵ８は、１度でも、一致した場合の判定信号１７が入力されると、動作時間設定信号１３の値（つまり動作時間）を長くして、乱数発生回路２に出力する。
【００１８】
そして、長くした動作時間設定信号１３により、乱数発生回路２は最初から出力データ１６を出力する動作を行う。  
これに対して、比較結果が全ての組み合わせにおいて、一致しないと判定された場合には、その場合の動作時間設定信号１３による動作時間がＳｏＣ製品４から出力される。そして、その動作時間が推奨値として乱数発生に使用することができる。  
実際にユーザが使用するときには、例えばソフトウエア（より具体的には、動作時間のレジスタライトの処理）により、この推奨値の動作時間を動作時間設定信号１３として使用することができる。
【００１９】
また、最初に動作時間設定信号１３による動作時間の初期値を設定する場合、動作時間設定入力手段としての例えばキーボード１８からの入力により、行うことができる。また、ユーザは、このキーボード１８から測定回数Ｍの値の設定や変更の入力を行うこともできる。  
図４は、本実施形態に係るテスト回路１による乱数発生の動作時間の推奨値を得る（評価する）ためのテスト方法のフローチャートを示す。以下、図４を参照して本実施形態の動作を説明する。
【００２０】
図１のＳｏＣ製品４の電源が投入されることにより、タイミング発生回路５のＣＰＵ８は、出力データ１６を得る測定回数Ｍ（ここでは例えばＭ＝１０００）の設定を行うと共に、その測定回数用のパラメータｉを初期値ｉ＝１にセットする。この測定回数Ｍは、例えば最初にユーザが設定することにより、以後はその値がデフォルト値として使用される。  次のステップＳ２においてＣＰＵ８は、図３に示すように乱数発生回路２に対して、例えばＨからＬになるパルス状のリセット信号９を出力して、リセット機能をアクティブにする。そして、このパルス状のリセット信号９により、乱数発生回路２は、初期状態にリセットされる。  
次のステップＳ３においてＣＰＵ８は、図３に示すように乱数発生回路２に対して、リセット信号９の直後に、例えばパルス状の乱数発生起動信号１０を出力する。この乱数発生起動信号１０が例えばＬからＨになると、乱数発生回路２は乱数発生の機能がアクティブになる。
【００２１】
そして、ステップＳ４に示すように乱数発生回路２は、乱数発生の動作が起動し、乱数発生の動作を開始する。そして、この乱数発生回路２は、発生した出力データ１６をバッファメモリ６に出力し始める。なお、ＣＰＵ８は、動作時間設定信号１３も乱数発生回路２に出力する。  
そして、次のステップＳ５において、バッファメモリ６は、乱数発生回路２から、終了信号１５が入力される（若しくはアクティブになる）のを待つ。  
換言すると、乱数発生回路２は、動作時間設定信号１３による動作時間後に終了信号１５を発生し、この終了信号１５を発生するまでの間、乱数発生の動作を継続する。終了信号１５がアクティブになると、そのタイミングで乱数の値が固定し、乱数発生の動作を停止（終了）する。
【００２２】
そして、ステップＳ６に示すように乱数発生回路２から、終了信号１５がアクティブになると、バッファメモリ６は、図３に示すように終了信号１５のパルスの例えば立ち上がりでバッファメモリ６のメモリセルにチップイネーブル信号を印加する。  
そして、その終了信号１５のタイミングで出力データ１６がバッファメモリ６のメモリセルに格納される。  
そして、図３に示すように、その直後（但し、動作時間は可変設定できるようになっているため、この可変幅のマージンを含む直後）に次のリセット信号９が乱数発生回路２に出力され、上述した同様の動作が繰り返される。  
そして、バッファメモリ６に複数の出力データ１６が格納される。すると、図４のステップＳ７に示すようにバッファメモリ６から２つの出力データ６ａ、６ｂの組が比較回路７に入力される。なお、図４のステップＳ６からＳ７への移行処理は、簡略的なもの（少なくとも複数の出力データ１６が得られた場合に、ステップＳ６からＳ７に移行する）となっている。
【００２３】
ステップＳ８に示すように比較回路７は、バッファメモリ６から入力される２つの出力データ６ａ、６ｂの組が一致しているか否かの判定を行う。その判定結果の判定信号１７は、タイミング発生回路５に出力される。  
そして、一致している場合には、タイミング発生回路５のＣＰＵ８は、ステップＳ９に示すように動作時間設定信号１３の動作時間の値を長くして、ステップＳ１に戻る。従って、この場合には、最初に設定された動作時間よりも長い（大きな）値に設定された動作時間設定信号１３により、ステップＳ１から繰り返し同じ動作を行うようになる。  
一方、ステップＳ８において一致していない場合には、ステップＳ１０に進む。このステップＳ１０においてＣＰＵ８は、測定回数用のパラメータｉがＭ未満かの判定を行う。そして、Ｍ未満の場合には、ステップＳ１１に示すようにパラメータｉを１つ大きくしてステップＳ２に戻る。
【００２４】
なお、図４のステップＳ７及びＳ８は簡略的な動作内容を示している。上述したように比較回路７は、バッファメモリ６に格納された出力データ１６における２つの出力データ６ａ、６ｂの組全ての組み合わせに対して一致しているか否かの判定を行う。  
そして、全ての組み合わせで一致していないと判定した場合には、ステップＳ１０のｉ＝Ｍを経てステップＳ１２に進む。そして、この場合の動作時間設定信号１３がタイミング発生回路５から出力され、この動作時間設定信号１３による動作時間の推奨値を設定する評価或いはテストが完了する。  
このように本実施形態は、自動的に所定の測定回数Ｍに対して乱数発生回路２から出力される出力データが１度も同じ出力データとならない、つまり衝突が発生しない条件に適合する十分にランダムな乱数を発生させることができる動作時間の推奨値を自動的に算出する。  
つまり、本実施形態は、上記のような動作時間の推奨値を自動的に算出して、その推奨値の動作時間を設定することを行う。
【００２５】
このため、ユーザによる従来例では手間を要していた動作時間の算出設定作業を大幅に低減できる。  
なお、図１の構成においては判定信号１７をタイミング発生回路５に入力して判定信号１７の判定結果により、動作時間の変更制御を行う構成にしている。これに対して、判定信号１７をタイミング発生回路５に入力しないで、所定回数Ｍの場合に対して、比較回路７による判定信号１７を得る構成とした場合においても、従来例に比べて簡単に動作時間の推奨値を得たり、評価することができるメリットがある。
【００２６】
（第２の実施形態）
次に本発明の第２の実施形態に係るテスト回路を説明する。このテスト回路は、図１に示したテスト回路１と同じ構成である。但し、タイミング発生回路５のＣＰＵ８による動作が、第１の実施形態と若干、異なる。  
第１の実施形態においては、例えば最初に動作時間設定信号１３として、乱数発生回路２に対して、適切な値の動作時間よりも長い動作時間を設定した場合には、その動作時間が最終的に設定或いは得られる動作時間となる。  
これに対して、本実施形態においては動作時間を変更する処理を少なくとも１回は行うことにより、より適切な動作時間に近い境界値を推奨値として算出若しくは設定する手段若しくは方法を備える。
【００２７】
そして、ＣＰＵ８は、上記の動作時間を変更する処理を少なくとも１回は行うことにより、動作時間としてより適切な値に近い境界値を算出する。  
図５は、本実施形態による動作の概略の一部を示すフローチャートである。図５は、図４と類似しており、図４と同じ処理部分を省略している。  
本実施形態は、図４のステップＳ１０とＳ１２との間にステップＳ２１を行う構成或いは方法となる。このステップＳ２１においてＣＰＵ８は、（ステップＳ１から）このステップＳ２１に至るまでに動作時間設定信号１３を長く設定する変更を行ったか否かの判定を行う。具体的には、図４の処理において、ステップＳ９による動作時間設定信号１３を長く設定する変更を行ったことが有るかの判定する。  
そして、この変更が行われている場合には、ステップＳ１２に進み、その変更により、最終的に変更された動作時間設定信号１３を境界値の動作時間とする。
【００２８】
従って、ステップＳ２１の判定において、動作時間設定信号１３を長く設定する変更有り、具体的には、図４の処理において、ステップＳ９による動作時間設定信号１３を長く設定する変更を行ったことが有る場合には、図４の場合の同様の動作時間を得る。  
この場合の動作時間は、この値よりも短くすると一致する出力データの組が出現するため、適切な動作時間の値に近い境界値である。  
一方、ステップＳ２１の判定において、動作時間設定信号１３を長く設定する変更が一度も行われていないと判定した場合には、ステップＳ２２に示すようにＣＰＵ８は、動作時間設定信号１３を短く設定する変更を行い、図４のステップＳ１に戻る。そして、ステップＳ１から図５の変更部分を除けば図４に示した処理を行うようになる。
【００２９】
この場合、図５に示すようにステップＳ８において一致する組が現れるまで、動作時間設定信号１３を順次短く設定する変更を行う。  
このようにして、ステップＳ８の一致する組が存在するか否かの判定を行い、一致する組が存在した場合には、ステップＳ２３に示すようにＣＰＵ８は、その一致する組が存在する直前に設定した動作時間設定信号１３を境界値の動作時間としてＣＰＵ８のレジスタ等に記憶する。そして、記憶した処理の後、ステップＳ１２に移り、その場合の動作時間設定信号１３を出力する。この動作時間も、この値より短くすると、一致する組が存在するため、適切な動作時間の値に近い境界値となる。  
ステップＳ２１の判定において、動作時間設定信号１３を長く設定する変更が一度も行われていないと判定した場合には、図５に示すようにステップＳ２２を経てステップＳ１に戻り、さらにステップＳ８において一致する出力データの組が有りとなるまで図５の処理を繰り返えす。そして、一致する出力データの組が有りとなる前の動作時間を境界値として得る。
【００３０】
このようにして、本実施形態により得られる動作時間の境界値は、この境界値よりも短くした場合には衝突が発生する。  
このため、本実施の形態によれば、第１の実施形態と同様の効果を有すると共に、さらにより適正な値に近い動作時間、換言するとより精度の高い動作時間を得ることができる。また、消費電力をより低減して乱数発生の動作を行えるようにできる。  
また、ユーザがソフトウェアなどで乱数発生動作時間の初期値を任意の値に設定しても、自動的に動作時間として適切な値に近い境界値を得ることができ、ユーザによる動作時間を評価する手間を大幅に軽減することができる。
【００３１】
なお、この場合に得られる動作時間の境界値をそのまま使用した場合には、マージンを含めた場合の動作時間よりも消費電力を低減できる。  
なお、さらにユーザは、例えばキーボード１８から動作時間設定信号１３による動作時間を長くしたり、短くしたりする場合の値を必要に応じて、自由に設定しても良い。  
また、最初は、この値を大きくして、境界値の概略値を算出し、その後により小さな値で動作時間を変更して、より精度の高い境界値を得るようにしても良い。
【００３２】
（第３の実施形態）
次に本発明の第３の実施形態を説明する。上述した実施形態においては、乱数発生回路２-で発生する出力データ１６のビット数や、バッファメモリ６で格納するビット数に関しては特に明確にしていなかったが、例えば２４ビットの数倍以上としている。  
そして、バッファメモリ６は乱数発生回路２-で発生する出力データ１６における全てのビット数を取り込むようにしている。  
これに対して、本実施形態は、乱数発生回路２の出力データ１６のビット数ｎが、ｎ>ｋ（例えばｋ＝２４）である場合、バッファメモリ６が格納するビット数や、比較回路７が比較するビット数をｎビットよりも小さい値にすることができるようにしている。或いは、乱数発生回路２で出力する出力データ１６のビット数を小さくする場合にも対応可能とするものである。
【００３３】
ビット数が大きい場合には、乱数発生回路２が真性乱数に近い乱数を発生する状態において、例えば１０００回程度の測定回数において乱数が衝突する衝突確率は十分に小さくなるため、実質的には衝突確率を無視する（つまり０とみなす）ことができる。これに対して、ビット数を小さくする場合、或いは小さい場合には、この衝突確率を考慮する必要がある。  
このため、乱数の衝突確率について、計算で求める方法を次に示す。  
ｎビットのランダムデータがある場合、そのデータの異なる組み合わせ総数は、２ｎ個となる。このため、それらの出現確率が一様である場合には、ｍ回の乱数取得の間に一つでも同一のデータが現れる確率Ｐは、１の値から同一のデータが現れない確率を引けばよいので、
Ｐ＝1−((２ｎ-１)/２ｎ)×((２ｎ-２/２ｎ)×……×((２ｎ−(ｍ−1))/２ｎ)  （１）
と計算される。
【００３４】
例えば、ｎ＝ｋ（＝２４）とした２４ビットのランダムデータでｍ＝１０００回の乱数取得の間に一つでも同一のデータが現れる確率を計算すると、（１）式は2.9334％となる。  
この場合には、乱数発生回路２がｎビットの真性乱数と等価な乱数を出力しているにもかかわらず、抜き出した２４ビットが一致して、ＮＧの判定信号１７が出力される確率が2.9334％ということ（大きな衝突確率）になる。  
このため、上記の条件のデータを例えば２組分得るようにして、２組分に対して同一のデータが連続して現れる確率は、0.029334の二乗で、十分に低い確率となる。つまり、ビット数が小さい場合でも、２回とも連続して一致するか否かを判定することにより、大きなビット数の場合において１回一致する組が有るかか否かを判定する場合の判定結果と実質的に同じような結果を得ることができる。
【００３５】
このため、例えば第１の実施形態で使用した図３のタイミング図において、動作時間設定信号１３で設定された動作時間付近で、乱数発生回路２からの出力データ１６を（その出力が異なる乱数として）２回取り込むように変更する。この場合、取り込む出力データ１６のビット数は、例えば２４ビットである。  
具体的には、第１の実施形態における動作時間からさらに異なる乱数発生が可能となる例えば１クロック分後に、終了信号１５が出力されるようにして、動作時間のタイミングと次の１クロック後とで２つの出力データをバッファメモリ６に格納するようにする。  
そして、動作時間のタイミングで得た出力データそれぞれで比較回路７で第１の実施形態と同様に比較すると共に、次の１クロック後で取り込んだ出力データに対しても同様の比較を行う。比較回路７は、２組とも一致したか否かの判定信号１７を出力する構成にする。
【００３６】
そして、比較回路７が一致した判定信号１７を出力した場合には動作時間を長くする。一方、一致した判定信号１７が出力されない動作時間を推奨値として得る。なお、一致した判定信号１７が出力されない場合には、さらに動作時間を短くして、第２の実施形態のように動作時間の境界値を得るようにしても良い。  
従って、本実施形態によれば、バッファメモリ６のメモリ容量を低減したり、比較回路７による比較処理の負担を低減することができる。また、乱数発生回路２による乱数発生のビット数を小さくすることもできる。このため、図１で示したテスト回路１や乱数発生回路２等の回路規模を低減でき、かつ低コスト化することができる。  
また、乱数発生回路２が２４ビットよりもさらに小さいビット数で乱数を発生する場合には、要求される衝突確率を実質的に満たすように例えば３組の出力データを取り込み、３回連続して一致した場合に判定信号を発生させるように変更することもできる。このように本実施形態は、要求される衝突確率に応じて比較等を行うビット数を低減することができる。
【００３７】
また、例えば乱数発生回路２が例えば２４ビットの８倍（１９２ビット）のように十分大きなビット数の出力データを発生する場合、真性乱数に等価な乱数を発生している状態において要求される衝突確率Ｐｒが分かっている場合には、例えば（１）式のｎを未知のビット数として
Ｐ＜Ｐｒ                                                              （２）
の条件を満たす最も小さいビット数ｎを算出するようにしても良い。そして、そのビット数で出力データの格納や比較の処理を行うようにしても良い。  
この場合には、要求される衝突確率に応じて比較等を行うビット数を低減することを適切に行え、処理時間等を低減できるため測定時間を短縮することができる。  
なお、上述した各実施形態等を部分的に組み合わせる等して構成される実施形態等も本発明に属する。
【図面の簡単な説明】
【００３８】
【図１】本発明の第１の実施形態に係る乱数発生回路用テスト回路の構成を示すブロック図。
【図２】攪拌回路の構成例を示す回路図。
【図３】第１の実施形態の動作を示すタイミング図。
【図４】第１の実施形態におけるテスト方法を示すフローチャート。
【図５】本発明の第２の実施形態に係るテスト方法の一部を示すフローチャート。
【符号の説明】
【００３９】
１…（乱数発生回路用）テスト回路
２…乱数発生回路
６…バッファメモリ
７…比較回路
１０…乱数発生起動信号
１６…出力データ
【図１】
2008242815.tif 000003
【図２】
2008242815.tif 000004
【図３】
2008242815.tif 000005
【図４】
2008242815.tif 000006
【図５】
2008242815.tif 000007