(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵに接続され、論理検証のための前記エラー発生条件として、アクセスアドレス、アクセスデータ、アクセスタイプ、発生時間間隔、保持期間、及び発生アドレスに関する情報を保持するエラー制御用メモリと
を具備し、
前記ＣＰＵは、
ＣＰＵコアと、
前記ＣＰＵコアとバスを介して接続される内部メモリと、
論理検証実行中、前記エラー発生条件と、前記ＣＰＵのバスアクセスの状態とに基づき、エラー発生信号を出力するエラー発生制御回路と、
前記エラー発生信号の内容に応じたバスエラーを発生させるエラー発生回路と
を具備し、
前記エラー発生制御回路は、
論理検証実行中に前記エラー制御用メモリの値をプローブするメモリプローブ部と、
前記メモリプローブ部でプローブされたデータと、前記ＣＰＵコアから前記内部メモリに出力するデータとを比較し、前記ＣＰＵコアから前記内部メモリへのアクセスの条件と、前記エラー発生条件とが一致した場合に、前記エラー発生信号を前記エラー発生回路に出力するエラー発生条件チェック部と
を具備し、
前記エラー発生条件チェック部は、前記発生時間間隔で示される範囲内の乱数に基づきエラー発生までの第１クロック数を設定し、前記保持期間で示される範囲内の乱数に基づきエラー発生が継続する第２クロック数を設定し、前記発生アドレスで示される範囲内の乱数に基づきエラー発生対象となるアドレスを設定し、前記第１クロック数をクロック毎に１ずつ減算し、前記第１クロック数が０になったら前記第２クロック数をクロック毎に１ずつ減算し、アクセスタイプをチェックし、
前記エラー発生回路は、前記第１クロック数が０になったらエラーを発生させ、アクセスタイプがＲｅａｄであれば前記第２クロック数が０になるまでの間、前記エラー発生回路から前記ＣＰＵコアへの読み出しデータパスにエラー内容に応じたエラーを発生させ、アクセスタイプがＷｒｉｔｅであれば前記アドレスに対し、エラー内容に応じたエラーを発生させ、前記内部メモリに書き込む
論理検証装置。
【請求項２】
請求項１に記載の論理検証装置であって、
前記内部メモリが、複数である場合、
前記エラー制御用メモリは、前記複数の内部メモリ毎に前記エラー発生条件を保持し、
前記エラー発生制御回路及び前記エラー発生回路は、前記複数の内部メモリ毎に設けられている
論理検証装置。
【請求項３】
請求項１又は２に記載の論理検証装置であって、
前記エラー制御用メモリは、ランダムなバスエラーを発生させるためのランダムエラー発生条件を保持し、
前記エラー発生回路は、前記ランダムエラー発生条件に基づき、ランダムなタイミング及びアドレスを用いてバスエラーを発生させる
論理検証装置。
【請求項４】
請求項１乃至３のいずれか一項に記載の論理検証装置であって、
前記エラー発生回路は、前記エラー発生信号の内容に応じてデータの反転処理を行い、前記ＣＰＵコアにエラー付きデータを渡す
論理検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理検証装置に関し、特に半導体集積回路の論理検証装置に関する。
【背景技術】
【０００２】
近年、プロセスの微細化、低電圧化に伴い、トランジスタのばらつき、電源ノイズ、配線のクロストーク、中性子線など、メモリに保持するデータが化ける可能性が高まっている。
【０００３】
従って、高信頼性が求められる分野では、エラー発生を抑えると同時に、発生したデータを検出し、システムとして誤動作しないように制御する必要がある。
【０００４】
また、マイクロプロセッサのうち、特に高信頼性を求められる製品に採用されるものは、プロセッサ内の各種データ信号に対し、パリティを付加し、データ保護を行う。パリティエラー等のエラーが発生した時には、そのエラーを見逃さずプロセッサ外に通知し、システム全体のチェックを行うなど特別な動作をすることが求められる。更に、論理シミュレーション時にエラーが発生した場合の動作を検証するためには、実際に信号に正しくないデータを載せる必要がある。
【０００５】
関連する技術として、特開２００１−１３４６２９号公報（特許文献１）にシミュレーション方法及びシミュレーション装置が開示されている。この公知技術では、メモリモデルにアクセスするためのアドレスのうち、有効なメモリアドレス（下位）と無効なメモリアドレス（上位）を持つ。無効なメモリアドレスにエラー発生のためのアドレスを乗せ、メモリモジュール内部に存在するエラー制御モジュールはその内容に基づき、メモリのＲｅａｄ（読み出し）／Ｗｒｉｔｅ（書き込み）データに所望のエラーを発生させる。この公知技術では、実際に読み書きするメモリモジュール領域を限定することで無効なアドレスビットを作り出し、その無効なアドレスビットをエラー制御に使用している。このような処理を行うことで、ＬＳＩモデルによるメモリへのアクセス時に、任意のアドレスやデータに対し、所望のエラーを発生させることができる。そして、エラー発生の検出などの動作検証を行うことができる。
【０００６】
【特許文献１】特開２００１−１３４６２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
先に説明した公知技術では、メモリモジュールのアドレスの無効な部分を使ってエラー発生の制御を行っているため、無効なアドレスの存在しないメモリでは、そもそもエラーの発生を制御することができない。公知技術では、実際に読み書きするメモリモジュール領域を限定することで無効なアドレスビットを作り出しており、その無効なアドレスビットをエラー制御に使用している。
【課題を解決するための手段】
【０００８】
以下に、［発明を実施するための最良の形態］で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。但し、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００９】
本発明の論理検証装置は、ＣＰＵ（１０）と、ＣＰＵ（１０）に接続され、論理検証のためのエラー発生条件を保持するエラー制御用メモリ（２１）と、ＣＰＵ（１０）内に設けられ、論理検証実行中、エラー発生条件と、ＣＰＵ（１０）のバスアクセスの状態とに基づき、エラー発生信号を出力するエラー発生制御回路（１２２）と、ＣＰＵ（１０）内に設けられ、エラー発生信号の内容に応じたバスエラーを発生させるエラー発生回路（１２３）とを具備する。
【００１０】
このように、論理検証用のエラー発生条件を格納したエラー制御用メモリをＣＰＵの外、エラー発生制御回路とエラー発生回路をＣＰＵ内部のハードマクロ（メモリ）論理シミュレーション用機能モデル内に設ける。これらを一つの論理シミュレーション環境内に設けることで、ＣＰＵコアからハードマクロ（メモリ）論理シミュレーション用機能モデルへのアドレスをフルに利用したシミュレーション実行中にエラーの発生をプログラム上でコントロールできる。
【発明の効果】
【００１１】
メモリモデルのどこにアクセスしてもエラーを発生させることが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下に、本発明の第１実施例について添付図面を参照して説明する。
図１は、本発明の対象となる論理シミュレーション環境を示す。なお、この論理シミュレーション環境は、本発明に係る論理検証装置のシステム構成を示す。
論理シミュレーション環境（論理検証装置）１は、ＣＰＵ１０と、外部メモリ２０を含む。ＣＰＵ１０と外部メモリ２０は、メモリＲ／Ｗ用バス３０で接続されている。なお、Ｒ／Ｗは、Ｒｅａｄ／Ｗｒｉｔｅを示す。
【００１３】
論理シミュレーション環境１は、検証者によって作成された検証用プログラムを実行することで、ＣＰＵ１０が仕様に適合しているかどうかをチェックする。すなわち、正しく機能するか論理検証する。期待通りの動作をすればＯＫ、期待と異なる動作をすればＮＧと判定する。
【００１４】
ＣＰＵ１０は、論理検証の対象となる半導体集積回路であり、メモリＲ／Ｗ用バス３０を介して、外部メモリ２０にＲｅａｄ／Ｗｒｉｔｅアクセスをすることで、外部メモリ２０内の命令コードやデータの読み出し、命令の実行、結果の書き込み等を行う。
【００１５】
ＣＰＵ１０は、ＣＰＵコア１１と、ハードマクロ（メモリ）論理シミュレーション用機能モデル１２を備える。
【００１６】
ＣＰＵコア１１は、論理検証の対象となる部分であるＣＰＵ内部ロジックを管理し、エラー付きデータを受け取ると仕様に基づいてパリティエラー等のエラーの検出、処理を行う。ここでは、パリティエラーを例に説明するが、実際にはパリティエラーに限定されない。
【００１７】
ハードマクロ（メモリ）論理シミュレーション用機能モデル１２は、実際のデバイス内に存在するハードマクロ（メモリ）の動作と等価なシミュレーション用モデルである。
【００１８】
外部メモリ２０は、エラー制御用メモリ領域２１と、命令・データ用メモリ領域２２を有する。エラー制御用メモリ領域２１と命令・データ用メモリ領域２２は、それぞれ物理的に独立したメモリであっても良い。
【００１９】
エラー制御用メモリ領域２１は、ＣＰＵ１１からのＲｅａｄ／Ｗｒｉｔｅアクセスによって読み書き可能な領域である。これにより、エラーの発生を制御することができる。
【００２０】
命令・データ用メモリ領域２２は、論理検証のための検証用プログラムや、期待値のデータを格納する。
【００２１】
図１では、検証用プログラムとして、テストパタンファイル４０が示されている。
テストパタンファイル４０は、ＣＰＵ１０の命令セットに基づいて作成された検証用テストプログラムをアセンブラ等で変換したものである。メモリイメージとして命令・データ用メモリ領域２２に格納される。ハードマクロ（メモリ）論理シミュレーション用機能モデル１２が複数の場合、それぞれのハードマクロ（メモリ）論理シミュレーション用機能モデルに対し、エラー制御用メモリ領域２１の番地を設定することで、独立してエラーの発生を制御することができる。
【００２２】
なお、図１では、ハードマクロ（メモリ）を一つしか図示していないが、ＣＰＵ１０の内部構成によっては複数メモリが存在する。ハードマクロ（メモリ）論理シミュレーション用機能モデル１２は、機能が異なるハードマクロ（メモリ）毎に存在する。図２は、複数のハードマクロ（メモリ）論理シミュレーション用機能モデル１２（１２−ｉ、ｉ＝１〜ｎ：ｎは任意）が存在している場合を示す。
【００２３】
ハードマクロ（メモリ）論理シミュレーション用機能モデル１２は、メモリ本体１２１と、エラー発生制御回路１２２と、エラー発生回路１２３を備える。エラー発生制御回路１２２とエラー発生回路１２３は、メモリ本体１２１に接続されたＣＰＵ内部バス上の任意の場所に設置可能である。
【００２４】
メモリ本体１２１は、ハードマクロ（メモリ）論理シミュレーション用機能モデル１２の内部にあるハードマクロ（メモリ）である。
【００２５】
エラー発生制御回路１２２は、論理シミュレーション実行中、エラー制御用メモリ領域２１のデータをプローブしている。エラー制御用メモリ領域２１の値から生成される条件と、ＣＰＵコア１１からのバスアクセスの条件がマッチ（適合）した時、エラー発生回路１２３にエラー発生信号を出力する。
【００２６】
エラー発生回路１２３は、エラー発生制御回路１２２からのエラー発生信号を受けて、その内容に応じたバスエラーを発生させ、ＣＰＵコア１１へエラー付きデータを返す。若しくは、メモリ本体１２１にエラー付きデータを格納する。
【００２７】
次に、図３を参照して、本発明における全体的な動作について説明する。
（１）ステップＳ１０１
検証者等によって記述されたテストプログラムは、図４に示すように、アセンブラ等によりテストパタンファイル４０に変換され、メモリイメージとして命令・データ用メモリ領域２２に格納される。
（２）ステップＳ１０２
ＣＰＵ１０は、リセットが解除されたら外部メモリ２０から命令を読み出し、命令に応じた処理を行う。
（３）ステップＳ１０３
テストプログラムによっては、エラー制御用メモリ領域２１にＲｅａｄ／Ｗｒｉｔｅする記述になっている場合がある。エラー制御用メモリ領域２１に書き込まれた内容によっては、エラー発生制御回路１２２によりハードマクロ（メモリ）論理シミュレーション用機能モデル１２の書き込みデータ、読み出しデータにエラーを発生させる場合がある。エラー発生時、ＣＰＵコア１１は、エラー検出時の仕様に基づいた例外処理を行い、その後再び通常の処理を行う。
（４）ステップＳ１０４
テストパタンファイル４０に記述された一連の動作を行うと正常終了となる。
（５）ステップＳ１０５
仕様に反した動作を行うと異常終了となる。
【００２８】
図５を参照して、論理シミュレーションの流れを説明する。なお、ここではパリティエラーを例に説明しているが、実際には、パリティエラーに限定されない。
（ａ）パリティエラーが発生しない場合
シミュレーション開始後、リセットが解除されると、ＣＰＵ１０は、テストプログラムに書かれた命令を処理し続ける。この間、外部メモリ２０へのＲｅａｄ／Ｗｒｉｔｅ、ハードマクロ（メモリ）論理シミュレーション用機能モデル１２へのＲｅａｄ／Ｗｒｉｔｅを行う。処理実行中に仕様違反が発生すれば、シミュレーションは異常終了となる。仕様違反が発生することなく一連の動作を行えば、シミュレーションは正常終了となる。
（ｂ）パリティエラーが発生する場合
シミュレーション開始後、エラー制御用メモリ領域２１に書き込むことでパリティエラー発生条件を設定する。設定された条件に基づいてパリティエラーの検出を行う。パリティエラーが検出できなければ、シミュレーションは異常終了となる。パリティエラーが検出されれば、パリティエラー検出時の仕様に基づいた例外処理を行う。例外処理中であっても仕様違反が発生すれば、シミュレーションは異常終了となる。
【００２９】
次に、図６を参照して、エラー制御用メモリ領域２１の詳細について説明する。
【００３０】
図６は、ハードマクロ（メモリ）Ｎに対し、アドレス０ｘ２番地へのＲｅａｄアクセス発生時、読み出しデータが０ｘｆｆｆｆ＿ｆｆ００だった場合、データの０ｂｉｔ目が反転し、エラーを発生するという条件を設定した例である。
【００３１】
図６に示した例では、ＣＰＵ１０が、エラー制御用メモリ領域２１に対し、ハードマクロ（メモリ）の数（Ｎ）に分割してハードマクロ（メモリ）１〜Ｎ用領域を設定する。更に、一つのハードマクロ（メモリ）Ｎ用領域（ベースアドレス０ｘ０１００）は、アクセスアドレス（オフセット０ｘ０）、アクセスデータ（オフセット０ｘ８）、アクセスタイプ（オフセット０ｘ１０）、エラー内容（オフセット０ｘ１８）という内容を保持する。論理シミュレーション実施中は、ＣＰＵコアからのＬｏａｄ（読み込み）／Ｓｔｏｒｅ（格納）命令により読み書き可能である。
【００３２】
次に、図７を参照して、エラー発生制御回路１２２とエラー発生回路１２３の詳細について説明する。
【００３３】
図７は、図６の設定をした時、アドレス０ｘ２番地へのＲｅａｄアクセス時、読み出しデータが０ｘｆｆｆｆ＿ｆｆ００の時、データの０ｂｉｔ目を反転するためのエラー発生信号をエラー発生回路に通知する場合の例である。
【００３４】
図７に示すように、エラー発生制御回路１２２は、メモリプローブ部１２２１と、エラー発生条件チェック部１２２２を備える。
【００３５】
メモリプローブ部１２２１は、エラー制御用メモリ領域２１の値を論理シミュレーション中にプローブしている。エラー発生制御回路１２２は、メモリプローブ部１２２１においてクロックの立ち上がりに同期して毎サイクル、外部メモリ２０の情報と、ＣＰＵコア１１からのアクセスアドレス、アクセスタイプ、アクセスデータ（書き込みデータ）を監視している。
【００３６】
エラー発生条件チェック部１２２２は、メモリプローブ部１２２１で読み取ってきたデータと、ＣＰＵコア１１が出力するアクセスアドレス、アクセスタイプ、書き込みデータ、読み出しデータをチェックし、条件にマッチしているか判定する。判定は、プログラム等により実施しても良い。
【００３７】
例えば、Ｖｅｒｉｌｏｇ  ＨＤＬ（ハードウェア記述言語）では、ＰＬＩ等を使用することや、階層を指定したａｓｓｉｇｎ文などで実装することができる。
【００３８】
説明のため、以下にＶｅｒｉｌｏｇ  ＨＤＬによる記述のイメージを示す。但し、実際には、この例に限定されない。
＜記述例＞
ａｓｓｉｇｎ．ＴａｒｇｅｔＡｄｄｒ＝ｂｏａｒｄ．ＥｘｔＭｅｍ．ＰＥｒｒＡｄｒ；
ａｓｓｉｇｎ．ＴａｒｇｅｔＴｙｐｅ＝ｂｏａｒｄ．ＥｘｔＭｅｍ．ＰＥｒｒＴｙｐ；
ａｓｓｉｇｎ．ＴａｒｇｅｔＤａｔａ＝ｂｏａｒｄ．ＥｘｔＭｅｍ．ＰＥｒｒＤａｔ；
ａｌｗａｙｓ  ＠（ｐｏｓｅｄｇｅ  ｃｌｋ）ｂｅｇｉｎ
Ｍａｔｃｈ＝（ＴａｒｇｅｔＡｄｄｒ＝＝ＭｅｍＡｄｄｒ）
＆（ＴａｒｇｅｔＴｙｐｅ＝＝ＭｅｍＴｙｐｅ）
＆（ＴａｒｇｅｔＤａｔａ＝＝ＭｅｍＤａｔａ）；
ｅｎｄ
【００３９】
ここで、「ａｓｓｉｇｎ」は、継続的代入を示す。例えば電気回路の配線接続に相当する。「ＴａｒｇｅｔＡｄｄｒ」は、条件となるアクセスアドレスを示す。「ＴａｒｇｅｔＴｙｐｅ」は、条件となるアクセスタイプを示す。「ＴａｒｇｅｔＤａｔａ」は、条件となるアクセスデータを示す。「ｂｏａｒｄ」は、基盤となる半導体集積回路を示す。ここでは、論理シミュレーション環境（論理検証装置）１を示す。「ＥｘｔＭｅｍ」は、外部メモリ２０を示す。ここでは、特にエラー制御用メモリ領域２１を示す。すなわち、「ｂｏａｒｄ．ＥｘｔＭｅｍ．ＰＥｒｒＡｄｒ」は、エラー制御用メモリ領域２１の値であるアクセスアドレスを示す。同様に、「ｂｏａｒｄ．ＥｘｔＭｅｍ．ＰＥｒｒＴｙｐ」は、エラー制御用メモリ領域２１の値であるアクセスタイプを示す。「ｂｏａｒｄ．ＥｘｔＭｅｍ．ＰＥｒｒＤａｔ」は、エラー制御用メモリ領域２１の値であるアクセスデータを示す。「ａｌｗａｙｓ  ＠（イベント式）」は、イベント式にあるイベントが発生するたびに実行されるブロックである。「ｐｏｓｅｄｇｅ  ｃｌｋ」は、クロック信号が０から１に変化した場合を指定する。すなわち、クロック信号の立ち上がりエッジに同期する。「ｂｅｇｉｎ  ．．．  ｅｎｄ」は、汎用のブロック範囲である。「ＭｅｍＡｄｄｒ」は、ＣＰＵコア１１からのアクセスアドレスを示す。「ＭｅｍＴｙｐｅ」は、ＣＰＵコア１１からのアクセスタイプを示す。「ＭｅｍＤａｔａ」は、ＣＰＵコア１１からのアクセスデータを示す。「Ｍａｔｃｈ＝（ＴａｒｇｅｔＡｄｄｒ＝＝ＭｅｍＡｄｄｒ）＆（ＴａｒｇｅｔＴｙｐｅ＝＝ＭｅｍＴｙｐｅ）＆（ＴａｒｇｅｔＤａｔａ＝＝ＭｅｍＤａｔａ）；」は、条件にマッチしているか否かの判定を示す。ここでは、アクセスアドレス、アクセスタイプ、アクセスデータが全て一致すれば条件にマッチしていると判断する。但し、実際には、アクセスアドレス、アクセスタイプ、アクセスデータのいずれかが一致すれば条件にマッチしていると判断するようにしても良い。
【００４０】
エラー発生条件チェック部１２２２は、条件にマッチすればエラー発生回路１２３にエラー発生信号を出力する。
【００４１】
エラー発生回路１２３は、エラー発生信号の内容に応じてデータの反転処理を行う。
【００４２】
次に、図８を参照して、論理シミュレーション実施中にＣＰＵ１０からハードマクロ（メモリ）Ｎ用領域に対し、アクセスアドレス（０ｘ２）、アクセスデータ（０ｘｆｆｆｆ＿ｆｆ００）、アクセスタイプ（０ｘ１）、エラー内容（０ｘ１）が書き込まれた場合の動作について説明する。すなわち、０ｘ２番地からの読み出しデータが０ｘｆｆｆｆ＿ｆｆ００の時にデータの０ｂｉｔ目を反転するという設定である。
【００４３】
（１）ステップＳ２０１
エラー発生制御回路１２２内のメモリプローブ部１２２１は、ハードマクロ（メモリ）用領域の値をプローブしている。
（２）ステップＳ２０２
エラー発生制御回路１２２内のエラー発生条件チェック部１２２２は、ＣＰＵコア１１からのアクセスアドレス、アクセスタイプ、書き込みデータ、メモリ本体１２１からの読み出しデータという実際のアクセスと、メモリプローブ部１２２１の値を比較し、条件にマッチしたらエラー発生信号を出力する。ここでは、読み出しデータの０ｂｉｔ目を反転させるための信号を生成する。
（３）ステップＳ２０３
エラー発生回路１２３は、エラー発生制御回路１２２からのエラー発生信号を受け、読み出しデータの０ｂｉｔ目を反転させ、ＣＰＵコア１１に読み出しデータとしてエラー付きデータを渡す。
（４）ステップＳ２０４
ＣＰＵコア１１は、エラー付きデータを受け取り、仕様に定められた動作を行う。
【００４４】
以上のように、本発明では、エラー制御用メモリ領域をＣＰＵの外、エラー発生制御回路とエラー発生回路をハードマクロ（メモリ）論理シミュレーション用機能モデル内に設ける。これらを一つの論理シミュレーション環境内に設けることで、ＣＰＵコアからハードマクロ（メモリ）論理シミュレーション用機能モデルへのアドレスをフルに利用したシミュレーション実行中にパリティエラーの発生をプログラム上でコントロールできる。公知技術では、メモリモデルの限定された領域でしかエラーの発生を制御できなかったが、本発明では、この問題を解決することができる。  
【００４５】
本発明により、パリティエラーの発生タイミングを考慮した論理シミュレーションが可能となる。また、メモリモデルのどこにアクセスしてもエラーを発生させることが可能となる。なお、パリティをＥＣＣに置き換えて動作させることも可能である。また、メモリ毎にパリティエラーの発生を制御できるので、例えば、複数メモリでの同時エラー発生といった、普通では起き得ないようなケースなども検証可能となる。更に、実機でパリティエラー起因と思われる不良品の解析をシミュレーションで行うような場合の解析を容易にする。
【００４６】
以下に、本発明の第２実施例について説明する。
背景技術において説明した公知技術では、アクセスすることがトリガ（契機）となってエラーが制御されているので、ランダムなタイミングでエラーが発生するようなケース（事例）には対応できないと考えられる。
【００４７】
本実施例における論理シミュレーション環境（論理検証装置）の基本構成は、第１実施例と同様である。本実施例では、Ｒｅａｄ（読み出し）／Ｗｒｉｔｅ（書き込み）の処理に特徴がある。
【００４８】
まず、Ｒｅａｄ（読み出し）の処理について説明する。
本実施例では、ｒｅａｄ要求がない時でも、エラー制御用メモリ領域２１のアクセスタイプに「ｒｅａｄ」を設定し、エラー発生条件チェック部１２２２においてランダムエラー発生条件にマッチしていれば、エラー発生回路１２３とＣＰＵコア１１間の読み出しデータバスにエラーを発生させる。これは、メモリが出しているデータ（例えば前のｒｅａｄ時のデータ）に対し、ＣＰＵコア１１がエラーを誤検出しないという動作をチェックするために行っている。
【００４９】
次に、Ｗｒｉｔｅ（書き込み）の処理について説明する。
本実施例では、ｗｒｉｔｅ要求がない時でも、エラー制御用メモリ領域２１のアクセスタイプに「ｗｒｉｔｅ」を設定し、エラー発生条件チェック部１２２２においてランダムエラー発生条件にマッチしていれば、エラー発生回路１２３からメモリ本体１２１への書き込みデータにエラーを発生させ、実際にエラー付きのデータをメモリ本体に書き込む。
【００５０】
例えば、メモリ本体を４セット（ｗａｙ）のキャッシュメモリと想定した場合、同じｒｅａｄアドレスに対し、４セット（ｗａｙ）のｒｅａｄデータを出力する。ＣＰＵコア１１では、読み出してきた４セットのデータから必要なデータを１セット選択し、使用する。
【００５１】
エラー付きのデータをメモリ本体にランダムに書き込むことによって、本来必要でないセット（ｗａｙ）のデータにエラーが発生していてもＣＰＵコア１１がエラーを誤検出しないという動作をチェックする。
【００５２】
ｒｅａｄ時に必要でないセット（ｗａｙ）のデータに対し、ＣＰＵコア１１からのｗｒｉｔｅアクセスを発生させエラーつきで書き込んだ上で再び読み出すという手順を省くことができる。
【００５３】
図９を参照して、本実施例におけるエラー制御用メモリ領域２１の詳細について説明する。
【００５４】
本実施例では、ハードマクロ（メモリ）Ｎに対し、ランダムにエラーが発生するように変更している。図９は、発生時間間隔が０ｘ０００００１００〜０ｘ００００ｆｆ００の範囲、保持期間が０ｘ０００００００１〜０ｘ００００００ｆｆの範囲、発生アドレスが０ｘ００〜０ｘｆｆの範囲で、Ｒｅａｄデータ、Ｗｒｉｔｅデータにデータの０ｂｉｔ目が反転し、エラーを発生するという条件を設定した例である。
【００５５】
図９に示した例では、一つのハードマクロ（メモリ）Ｎ用領域（ベースアドレス０ｘ０１００）は、発生アドレス（オフセット０ｘ０）、発生時間間隔データ（オフセット０ｘ８）、アクセスタイプ（オフセット０ｘ１０）、エラー内容（オフセット０ｘ１８）という内容を保持する。図６と図９を比較すると、「アクセスアドレス」と「アクセスデータ」の代わりに、「発生アドレス」と「発生時間間隔データ」が保持されている。すなわち、「アクセスアドレス」として「発生アドレス」を保持し、「アクセスデータ」として「発生時間間隔データ」を保持する。なお、「発生時間間隔データ」の上位３２ｂｉｔを「保持期間」とし、「発生時間間隔データ」の下位３２ｂｉｔを「発生時間間隔」とする。
【００５６】
次に、図１０を参照して、本実施例におけるエラー発生制御回路１２２とエラー発生回路１２３の詳細について説明する。
【００５７】
図１０は、基本的に図７と同様であるが、本実施例では、ランダム設定時にはＣＰＵコア１１からのアクセスアドレス、アクセスタイプ、アクセスデータ（書き込みデータ）を監視しない。
【００５８】
図１１を参照して、ランダム設定時の動作について説明する。
エラー発生制御回路１２２内のエラー発生条件チェック部１２２２や、エラー発生回路１２３は、以下のような動作を行い、ランダムなエラーを発生する。
【００５９】
（１）ステップＳ３０１
エラー発生回路１２３は、発生時間間隔で示される範囲内の乱数を発生させる。これをエラー発生までのクロック数（Ａ）とする。
（２）ステップＳ３０２
エラー発生回路１２３は、保持期間で示される範囲内の乱数を発生させる。これをエラー発生が継続するクロック数（Ｂ）とする。
（３）ステップＳ３０３
エラー発生回路１２３は、発生アドレスで示される範囲内の乱数を発生させる。これをエラー発生対象となるアドレス（Ｃ）とする。
（４）ステップＳ３０４
エラー発生条件チェック部１２２２は、クロック数（Ａ）をクロック毎に１ずつ減算する。
（５）ステップＳ３０５
エラー発生回路１２３は、クロック数（Ａ）が０になったらエラーを発生させる。
（６）ステップＳ３０６
エラー発生条件チェック部１２２２は、クロック数（Ａ）が０になったらクロック数（Ｂ）をクロック毎に１ずつ減算する。
（７）ステップＳ３０７
エラー発生条件チェック部１２２２は、アクセスタイプをチェックする。
（８）ステップＳ３０８
エラー発生回路１２３は、アクセスタイプがＲｅａｄであればクロック数（Ｂ）が０になるまでの間、読み出しアクセスが発生するしないにかかわらず、エラー発生回路１２３からＣＰＵコア１１への読み出しデータパスにエラー内容に応じたエラーを発生させる。
（９）ステップＳ３０９
エラー発生回路１２３は、アクセスタイプがＷｒｉｔｅであればアドレス（Ｃ）に対し、エラー内容に応じたエラーを発生させ、メモリ本体に書き込む。
【００６０】
以上の動作を繰り返す。
【００６１】
本実施例では、ランダム設定に基づき発生するエラーのタイミングをＣＰＵコア１１からのメモリアクセスのタイミングと分離する。すなわち、トリガとしない。
【００６２】
以下に、本発明の第３実施例について説明する。
本実施例では、ＣＰＵ、メモリ、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）をつなぐ内部共通バス上でエラーを発生させる。
【００６３】
図１２を参照して、本実施例におけるＣＰＵの構成について説明する。
本実施例では、ＣＰＵ１０は、ＣＰＵコア１１と、ハードマクロ（メモリ）論理シミュレーション用機能モデル１２と、Ｉ／Ｏ１３と、メモリＩ／Ｆ（インタフェース）１４と、内部共通バス１５を備える。
【００６４】
ＣＰＵコア１１（１１−ｊ、ｊ＝１〜ｍ：ｍは任意）は、複数でも良い。すなわち、ＣＰＵ１０は、少なくとも１つのＣＰＵコア１１を備えている。図１２では、例として、ＣＰＵコア１１−１と、ＣＰＵコア１１−２を示している。ハードマクロ（メモリ）論理シミュレーション用機能モデル１２は、メモリ本体１２１と、エラー発生制御回路１２２と、エラー発生回路１２３を備える。Ｉ／Ｏ１３は、各種の入出力ポートである。メモリＩ／Ｆ１４は、外部メモリ２０と接続するためのインタフェースである。内部共通バス１５は、ＣＰＵコア１１と、ハードマクロ（メモリ）論理シミュレーション用機能モデル１２と、Ｉ／Ｏ１３と、メモリＩ／Ｆ１４を相互に接続するための内部バスである。
【００６５】
ＣＰＵ１０と外部メモリ２０は、メモリＲ／Ｗ用バス３０で接続されている。外部メモリ２０は、エラー制御用メモリ領域２１と、命令・データ用メモリ領域２２を有する。エラー制御用メモリ領域２１は、エラー発生制御回路１２２にデータを提供する。
【００６６】
このような構成にすることにより、ハードマクロ（メモリ）論理シミュレーション用機能モデル１２から内部共通バス１５上に読み出されたデータ、若しくは内部共通バス１５を介してハードマクロ（メモリ）論理シミュレーション用機能モデル１２に書き込まれるデータに、エラーを発生させることができる。
【００６７】
最後に、本発明の特徴について説明する。
本発明では、ＣＰＵの外側にあるエラー制御用メモリ領域のデータをもとに、エラー発生制御回路がエラー発生回路を制御し、パリティエラーを発生させる。また、エラー発生制御回路とエラー発生回路が、論理合成されないハードマクロ（メモリ）論理シミュレーション用機能モデルの全アドレスに対し、エラーを制御する。そのため、ＣＰＵコアに特別なアドレスのビット幅拡張などのための回路を必要としない。更に、エラー発生制御回路とエラー発生回路を変更すれば、エラーの発生方法を自由に変更することができる。プロセッサがテープアウトした後でも可能である。
【００６８】
このように、本発明は、シミュレーション時のエラーの発生をプロセッサ内のリソースを増やすことなく実現し、動作の検証を行うことを容易にする。或いは、実機評価などでエラーが発生した時にシミュレーション上で状況を再現するための手助けになる。
【００６９】
本発明は、高信頼性を求められるマイクロプロセッサの論理検証分野に適用することが可能である。
【図面の簡単な説明】
【００７０】
【図１】図１は、本発明の対象となる論理シミュレーション環境（論理検証装置）の構成図である。
【図２】図２は、ＣＰＵ内に複数のメモリが存在する場合の例を示す図である。
【図３】図３は、本発明における動作を示すフローチャートである。
【図４】図４は、テストプログラムの例を示す図である。
【図５】図５は、論理シミュレーションの流れを説明するための図である。
【図６】図６は、第１実施例におけるエラー制御用メモリ領域の説明のための図である。
【図７】図７は、第１実施例におけるエラー発生制御回路とエラー発生回路の説明のための図である。
【図８】図８は、論理シミュレーション実施中にＣＰＵからハードマクロ（メモリ）用領域に各種データがが書き込まれた場合の動作を示すフローチャートである。
【図９】図９は、第２実施例におけるエラー制御用メモリ領域の説明のための図である。
【図１０】図１０は、第２実施例におけるエラー発生制御回路とエラー発生回路の説明のための図である。
【図１１】図１１は、ランダム設定時の動作を示すフローチャートである。
【図１２】図１２は、第３実施例におけるＣＰＵの説明のための図である。
【符号の説明】
【００７１】
１…  論理シミュレーション環境（論理検証装置）
１０…  ＣＰＵ
１１…  ＣＰＵコア
１２…  ハードマクロ（メモリ）論理シミュレーション用機能モデル
１２１…  メモリ本体（ハードマクロ（メモリ））
１２２…  エラー発生制御回路
１２２１…  メモリプローブ部
１２２２…  エラー発生条件チェック部
１２３…  エラー発生回路
２０…  外部メモリ
２１…  エラー制御用メモリ領域
２２…  命令・データ用メモリ領域
【図１】
0005006121.tif 000002
【図２】
0005006121.tif 000003
【図３】
0005006121.tif 000004
【図４】
0005006121.tif 000005
【図５】
0005006121.tif 000006
【図６】
0005006121.tif 000007
【図７】
0005006121.tif 000008
【図８】
0005006121.tif 000009
【図９】
0005006121.tif 000010
【図１０】
0005006121.tif 000011
【図１１】
0005006121.tif 000012
【図１２】
0005006121.tif 000013