(57)【要約】【課題】従来の評価システムでは、記憶装置で発生するエラーを忠実に再現することができない問題があった。【解決手段】本発明にかかる評価システムは、読出しクロックに基づき読出しデータを出力する記憶装置３０と、記憶装置３０に対して、読出しアドレスを出力し、読出し処理を実行するマイクロコンピュータ１０と、記憶装置３０とマイクロコンピュータ１０との間で送受信される読出しアドレス及びモード信号に基づきエラー信号を生成し、エラー信号を出力するエラー発生回路２０とを有し、マイクロコンピュータ１０は、エラー信号が読出しデータの誤りを示す状態において、記憶装置３０から受信した読出しデータに関わらず読出しデータを誤りと判定するものである。【選択図】図１
2008009721.tif 000002
【特許請求の範囲】
【請求項１】
読出しクロックに基づき読出しデータを出力する記憶装置と、
前記記憶装置に対して、前記読出しアドレスを出力し、読出し処理を実行するマイクロコンピュータと、
前記記憶装置と前記マイクロコンピュータとの間で送受信されるモード信号及び前記読出しアドレスに基づきエラー信号を生成し、前記エラー信号を出力するエラー発生回路とを有し、
前記マイクロコンピュータは、前記エラー信号が前記読出しデータの誤りを示す状態において、前記記憶装置から受信した前記読出しデータに関わらず当該読出しデータを誤りと判定することを特徴とする評価システム。
【請求項２】
前記エラー発生回路は、前記エラー信号を生成する前記記憶装置へのアクセス条件を設定するエラー設定レジスタと、前記エラー設定レジスタに設定された値と前記読出しアドレスの値あるいは前記モード信号の値とを比較する比較回路と、を有することを特徴とする請求項１に記載の評価システム。
【請求項３】
前記エラー設定レジスタは、前記エラー信号を生成する前記モード信号の値を記憶するエラー発生モード設定レジスタと、前記エラー信号を生成する前記読出しアドレスの値を記憶するエラー発生アドレス設定レジスタとの組を少なくとも１つ以上有していることを特徴とする請求項２に記載の評価システム。
【請求項４】
前記エラー発生回路は、前記比較回路の出力に応じて前記エラー信号を出力するエラー出力回路を有し、前記エラー出力回路は、前記読出しクロックに同期して前記エラー信号のエラー状態を設定し、前記比較回路の出力に基づき前記エラー信号のエラー状態を解除することを特徴とする請求項２に記載の評価システム。
【請求項５】
前記マイクロコンピュータは、前記記憶装置から読出した前記読出しデータと当該読出しデータに対する期待値とを比較する期待値比較器を有し、前記エラー信号が前記読出しデータに誤りがない状態を示す場合に、前記期待値比較器の出力に基づいて、前記読出しデータの誤りを検出することを特徴とする請求項１に記載の評価システム。
【請求項６】
前記記憶装置には、前記記憶装置を制御するプログラムを含む被評価プログラムが格納されることを特徴とする請求項１に記載の評価システム。
【請求項７】
前記記憶装置は、被評価プログラムの検証においてのみ用いられる代替ＲＡＭであることを特徴とする請求項１に記載の評価システム。
【請求項８】
被評価プログラムをマイクロコンピュータで実行し、前記被評価プログラムの動作を検証するプログラムの評価方法であって、
前記マイクロコンピュータから出力される読出しクロックに基づき記憶装置から読出しデータを受信し、
前記記憶装置と前記マイクロコンピュータとの間で送受信されるモード信号及び前記読出しアドレスに基づき生成されるエラー信号を出力し、
前記マイクロコンピュータは、前記エラー信号が前記読出しデータの誤りを示す状態において、前記記憶装置からの前記読出しデータに関わらず前記読出しデータを誤りと判定することを特徴とするプログラムの評価方法。
【請求項９】
記憶装置と、
前記記憶装置に対して、読出しアドレスを出力し、読出し処理を実行するマイクロコンピュータとを備え、
前記マイクロコンピュータは、前記記憶装置から出力される読出しデータと該読出しデータの期待値とを比較して前記読出しデータの誤りを検出するベリファイ処理を行う評価システムであって、
前記読出しアドレスに基づいてエラー信号を生成するエラー発生回路を有し、
前記マイクロコンピュータは、前記エラー信号が第１の状態を示すときには、前記ベリファイ処理の結果に関わらず、前記読出しデータを誤りと判断することを特徴とする評価システム。
【請求項１０】
前記エラー発生回路は、前記エラー信号を生成する前記記憶装置へのアクセス条件を設定するエラー設定レジスタと、前記エラー設定レジスタに設定された値と前記読出しアドレスの値あるいは前記記憶装置へのアクセスモードを指定するモード信号の値とを比較する比較回路と、を有することを特徴とする請求項９に記載の評価システム。
【請求項１１】
前記マイクロコンピュータは、条件設定レジスタを有し、前記条件設定レジスタに設定された値に基づいて前記エラー設定レジスタの値を設定することを特徴とする請求項１０に記載の評価システム。
【請求項１２】
前記エラー設定レジスタは、前記エラー信号を生成する前記モード信号の値を記憶するエラー発生モード設定レジスタと、前記エラー信号を生成する前記読出しアドレスの値を記憶するエラー発生アドレス設定レジスタとの組を少なくとも１つ以上有していることを特徴とする請求項１０又は１１に記載の評価システム。
【請求項１３】
前記エラー発生回路は、前記エラー発生モード設定レジスタの値と前記マイクロコンピュータが出力する前記モード信号とを比較するモード比較器と、前記エラー発生アドレス設定レジスタに値と前記読出しアドレスとを比較するアドレス比較器と、を有することを特徴とする請求項１２に記載の評価システム。
【請求項１４】
前記エラー発生回路は、前記モード比較器と前記アドレス比較器との出力に基づきエラー信号を生成するエラー信号出力回路を有することを特徴とする請求項１３に記載の評価システム。
【請求項１５】
前記エラー発生回路は、前記エラー設定レジスタに設定された値によって指定される条件へのアクセス回数をカウントするアクセスカウンタを有し、前記エラー発生回路は、前記アクセス回数が所定の値に達した場合に前記エラー信号を第２の状態とすることを特徴とする請求項１０に記載の評価システム。
【請求項１６】
前記エラー発生回路は、前記読出しアドレスに対応したアドレスのそれぞれに前記エラー信号を生成する前記記憶装置へのアクセスモードを指定するモード信号の値が記憶されるエラー設定ＲＡＭを有することを特徴とする請求項９に記載の評価システム。
【請求項１７】
前記エラー設定ＲＡＭは、前記記憶装置のアドレスと同数のアドレスを有することを特徴とする請求項１６に記載の評価システム。
【請求項１８】
前記記憶装置には、被評価プログラムが格納され、前記マイクロコンピュータは、前記被評価プログラムを読出して実行することにより、前記記憶装置に対する読出し処理と前記ベリファイ処理を行うことを特徴とする請求項９に記載の評価システム。
【請求項１９】
前記記憶装置は、被評価プログラムの検証においてのみ用いられる代替ＲＡＭであることを特徴とする請求項９に記載の評価システム。
【請求項２０】
マイクロコンピュータは、エラーアドレスを設定し、
記憶装置に対して前記マイクロコンピュータから出力される読出しアドレスと前記エラーアドレスとを比較し、
前記比較の結果、前記読出しアドレスと前記エラーアドレスとが一致する場合には、エラー信号を生成し、
前記マイクロコンピュータは、前記エラー信号に基づいて、前記記憶装置の前記読出しアドレスから読出した読出しデータをエラーと判断することを特徴とするエラー発生方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は評価システム及びその評価方法に関し、特に半導体装置が用いる記憶装置で発生するエラーを擬似的に再現するエラー発生回路を有する評価システム及びその評価方法に関する。
【背景技術】
【０００２】
マイクロコンピュータ（以下、マイコンと称す）では、制御プログラムやユーザープログラムなどを格納するために記憶装置を搭載するものがある。近年、この記憶装置として、フラッシュメモリが多く用いられている。フラッシュメモリは、半導体装置の製造後であっても格納するプログラムを変更することが可能であるため、半導体装置の少量多品種生産において有効である。
【０００３】
また、フラッシュメモリは、電源を切っても記憶された情報が消去されないことから、
ユーザープログラム等に加えてデータを保存する用途でも用いられることがある。この場合、制御プログラムとして、フラッシュメモリの書込み及び消去を制御するフラッシュファームウェア等の制御ソフトを予めマイコン内のフラッシュメモリに書込む必要がある。
【０００４】
このフラッシュファームウェアを作成する場合には、プログラムの不具合を修正するデバッグ作業が必要になる。このデバッグ作業においては、頻繁にプログラムを書き換えてプログラムの修正を行う。しかしながら、フラッシュメモリには書き換え回数の制限がある。そのためこの書き換え回数が制限となり、十分なデバッグ作業が行えない場合がある。
【０００５】
そこで、このフラッシュメモリに代えて代替ＲＡＭ（Random Access Memory）を搭載したインサーキットエミュレータ（ICE：In Circuit Emulator）を用いてプログラムのデバッグを行う。ＩＣＥを用いてプログラムのデバッグを行う技術の一例が特許文献１に開示されている。
【０００６】
この従来例にかかる評価システムのブロック図を図１６に示す。従来の評価システムは、評価用マイコン１００と代替ＲＡＭ１０８を有している。評価用マイコン１００は、ＣＰＵ（中央処理装置）１０１、制御レジスタ１０３、支援回路１０５を有している。ＣＰＵ１０１は、代替ＲＡＭ１０８に格納されたユーザープログラムを読み込んで実行する。このユーザープログラムを実行することで、代替ＲＡＭ１０８に対するアクセス制御が行われる。制御レジスタ１０３は、フラッシュメモリへのデータの書込みやデータの消去等の動作を示すデータが設定される。このデータに基づいて、支援回路１０５は、ＣＰＵ１０１による消去や書込み制御の規則違反を検出する。つまり、従来の評価システムでは、この検出結果に基づいてユーザープログラムのデバッグを行うことが可能である。
【０００７】
一方、特許文献２に開示されるような、代替ＲＡＭを用いたプログラムのデバッグ方法もある。
【特許文献１】特開平０９−２４４９１５号公報
【特許文献２】特開平１１−１１０２４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、フラッシュメモリは、動作電圧や使用温度等の条件によって正常にデータの書込みが行われない場合がある。従って、フラッシュファームウェアの動作には、書込み処理とベリファイ処理がある。書込み処理では、フラッシュメモリへのデータの書込みが行われ、ベリファイ処理では、読出しデータとその読出しデータの期待値とを比較し、読出しデータが正しいものかを確認する。フラッシュメモリでは、ベリファイ処理によって、エラーが検出された場合に、同じ領域に再度書込みを行う、あるいは、データの書込み箇所を他の領域に移し再度書込みを行う等のエラー処理が行われる。
【０００９】
このフラッシュファームウェアの動作のフローチャートを図１７に示す。図１７に示すように、フラッシュファームウェアが実行されると、まず制御レジスタに書込み処理を示す制御データがセットされる（ステップＳ１０１）。続いて、書込みコマンド１を実行する（ステップＳ１０２）。そして、書込み結果のベリファイ処理を行う（ステップＳ１０３）。このベリファイ処理の結果エラーがなければ、次の書込みコマンド２を実行する。（ステップＳ１０５）。一方、ベリファイ処理においてエラーが検出された場合にはエラー処理を行う（ステップＳ１０８）。このようにして、例えば書込みコマンド１〜３を実行し、その結果の検証を行う。
【００１０】
しかしながら、フラッシュメモリで発生する書込みエラーは、条件によって発生するものであって、必ず発生するものではない。従って、従来の評価システムにおいては、例えば、書込み処理とベリファイ処理とを行うステップＳ１０１〜Ｓ１０７（以降、処理Ａと称す）と、エラー処理を行うステップＳ１０８〜Ｓ１１０（以降、処理Ｂ）とをそれぞれに実行し、検証する必要がある。
【００１１】
処理Ａと処理Ｂとを検証する場合には、処理Ａと処理Ｂとを個別に実行する場合と、処理Ａと処理Ｂとを１つのプログラムとして実行する場合とがある。処理Ａと処理Ｂとを個別に実行する場合、処理Ａに対するデバッグ作業と処理Ｂに対するデバッグ作業を個別に行わなければならず、また処理Ａと処理Ｂとを結合しなければならないため手順が煩雑になる問題がある。また、処理Ａにかかるプログラムと処理Ｂにかかるプログラムとを結合する場合には、処理Ａと処理Ｂとの結合部分の検証ができないためにヒューマンエラー等が発生し、プログラムの信頼性を損ねる問題がある。
【００１２】
また、処理Ａと処理Ｂとを１つのプログラムとして実行する場合、書込みエラーが発生するまでプログラムを実行し続けるか、代替ＲＡＭから読出したデータを評価システムの外部から操作し、強制的にエラーが発生した状態を再現する必要がある。書込みエラーが発生するまでプログラムを実行し続けた場合、エラーの発生がどのタイミングで発生するかが不明であるため、作業効率は極端に悪化する。また、強制的にエラーが発生した状態を再現する場合、例えば代替ＲＡＭからの読出しデータを評価システムの外部に読出し、その読出しデータを書き換え、書き換え後の読出しデータを用いて評価システムはベリファイ処理を行う。つまり、この場合においても、評価システム上でのベリファイ処理を忠実に再現できるわけではないため、プログラムの正確なデバッグを行うことができず、プログラムの信頼性を損ねる問題がある。
【課題を解決するための手段】
【００１３】
本発明にかかる評価システムは、読出しクロックに基づき読出しデータを出力する記憶装置と、前記記憶装置に対して、前記読出しアドレスを出力し、読出し処理を実行するマイクロコンピュータと、前記記憶装置と前記マイクロコンピュータとの間で送受信されるモード信号及び前記読出しアドレスに基づきエラー信号を生成し、前記エラー信号を出力するエラー発生回路とを有し、前記マイクロコンピュータは、前記エラー信号が前記読出しデータの誤りを示す状態において、前記記憶装置から受信した前記読出しデータに関わらず当該読出しデータを誤りと判定するものである。
【００１４】
本発明にかかる評価システムによれば、エラー発生回路が、読出しアドレス及びモード信号に基づきエラー信号を生成する。つまり、エラー発生回路は、プログラムの実行中に擬似的なエラー信号を生成する。これによって、生成されるエラー信号は、本来記憶装置でエラーが発生するタイミングと同様のタイミングでマイクロコンピュータに送信される。従って、マイクロコンピュータは、エラー信号に基づいた疑似エラーの検出を、本来記憶装置で発生するエラーの検出手順と同様の手順で行うことが可能である。
【００１５】
また、エラー信号は、プログラムを実行中に適宜発生させることが可能であるため、本発明にかかるプログラムの評価システムは、従来例のように処理Ａと処理Ｂとを個別のプログラムとして実行する必要がない。つまり、被評価プログラムを１つのプログラムとして実行することが可能である。
【００１６】
一方、本発明にかかるプログラムの評価方法は、被評価プログラムをマイクロコンピュータで実行し、前記被評価プログラムの動作を検証するプログラムの評価方法であって、前記マイクロコンピュータから出力される読出しクロックに基づき記憶装置から読出しデータを受信し、前記記憶装置と前記マイクロコンピュータとの間で送受信されるモード信号及び前記読出しアドレスに基づき生成されるエラー信号を出力し、前記マイクロコンピュータは、前記エラー信号が前記読出しデータの誤りを示す状態において、前記記憶装置からの前記読出しデータに関わらず前記読出しデータを誤りと判定するものである。
【００１７】
本発明にかかるプログラムの評価方法は、上記評価システムにおけるプログラムの実行方法であって、上記評価システムと同様に、マイクロコンピュータは、エラー信号に基づいた疑似エラーの検出を、本来記憶装置で発生するエラーの検出手順と同様の手順で行うことが可能である。
【発明の効果】
【００１８】
本発明にかかる評価システム及びその評価方法によれば、記憶装置で発生するエラーの忠実な再現と、プログラムの信頼性の向上が可能である。
【発明を実施するための最良の形態】
【００１９】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。本発明にかかる評価システムは、例えばフラッシュファームウェア等のプログラムの実行と評価を行うものである。プログラムの評価とは、被評価プログラムの不具合の発見及び修正を行う工程であって、以下の説明においてはデバッグ作業とも称する。また、この評価システム１は、インサーキットシミュレータとも称され、複数の半導体装置が評価基板上に配置されるものである。本発明においては、半導体装置として評価用マイクロコンピュータ（以下、評価用マイコンと称す）、エラー発生回路、代替ＲＡＭ、外部アクセス回路が配置される。
【００２０】
図１に実施の形態１にかかる評価システム１のブロック図を示す。図１に示すように、評価システム１は、評価用マイコン１０、エラー発生回路２０、代替ＲＡＭ３０、外部アクセス回路４０を有している。評価用マイコン１０は、代替ＲＡＭ３０からプログラムを読出して、それを実行する。エラー発生回路２０は、代替ＲＡＭ３０で発生する読出しデータのエラーを擬似的に生成する。代替ＲＡＭ３０は、例えば出荷製品に搭載されるフラッシュメモリに代えて搭載される記憶装置であって、被評価プログラムの格納と評価用マイコン１０から送信されるデータとを記憶する。外部アクセス回路４０は、エラー発生回路２０と図示しない外部の装置とを接続するインタフェース回路である。
【００２１】
ここで、評価用マイコン１０について詳細に説明する。評価用マイコン１０は、ＣＰＵ１１、内蔵ＲＡＭ１２、周辺回路１３、条件設定レジスタ１４、メモリアクセス制御回路１５、エミュレータインタフェース１６を有している。ＣＰＵ１１は、プログラムの実行や各種演算処理を行う。内蔵ＲＡＭ１２は、ＣＰＵ１１が処理するデータの一時記憶を行う。周辺回路１３は、例えば図示しない装置とＣＰＵ１１との間のインタフェース回路など、ＣＰＵ１１によって制御される回路群である。
【００２２】
条件設定レジスタ１４は、ＣＰＵ１１が直接制御可能なデータの記憶領域である。条件設定レジスタ１４は、アドレス設定レジスタ１４１及びデータ設定レジスタ１４２を有している。条件設定レジスタ１４は、これらのレジスタに格納される値に基づき、エラー発生回路がエラー信号を生成するための条件を設定する。条件設定レジスタ１４の詳細については後述する。
【００２３】
メモリアクセス制御回路１５は、例えば代替ＲＡＭ３０のアクセスモードの制御と読出しデータのベリファイ処理を行う。ここで、ベリファイ処理とは、読出しデータとその読出しデータの期待値とを比較し、読出しデータが正しいものかを確認する処理である。メモリアクセス制御回路１５の詳細については後述する。エミュレータインタフェース１６は、ＣＰＵ１１とエラー発生回路２０及び代替ＲＡＭ３０との間のインタフェースである。
【００２４】
また、エラー発生回路２０について詳細に説明する。エラー発生回路２０は、エラー出力回路２１、比較回路２２、エラー設定レジスタ２３を有している。エラー出力回路２１は、エラー信号を評価用マイコン１０に出力する。ここで、エラー信号とは、評価用マイコン１０に読出しデータがエラーであったことを通知する信号であるが、読出しデータの成否とは関係なく、評価用マイコン１０によって設定された条件設定レジスタ１４が生成する読出しアドレスとモード信号（例えば、ベリファイ用読出しモード信号）とに基づき生成されるものである。
【００２５】
比較回路２２は、エラー設定レジスタ２３に格納された値と、評価用マイコン１０から出力される読出しアドレスとを比較する。また、比較回路２２は、エラー設定レジスタ２３に格納された値とモード信号とを比較する。そして、２つの比較結果に基づいてエラー出力回路２１に条件一致信号を出力する。エラー設定レジスタ２３は、エラー発生モード設定レジスタ２３１とエラー発生アドレス設定レジスタ２３２とを有している。このエラー発生モード設定レジスタ２３１とエラー発生アドレス設定レジスタ２３２とには、エラー信号を出力する場合の読出しアドレスとモード信号に対応した値とがそれぞれ格納される。
【００２６】
ここで、条件設定レジスタ１４とエラー設定レジスタ２３とについて詳細に説明する。条件設定レジスタ１４とエラー設定レジスタ２３との関係を図２に示す。図２に示すように、条件設定レジスタ１４のアドレス設定レジスタ１４１とデータ設定レジスタ１４２とは、ＣＰＵ１１のアドレスマップ上において、未使用・予約領域に定義されるレジスタである。つまり、アドレス設定レジスタ１４１とデータ設定レジスタ１４２とは、ＣＰＵ１１から直接制御可能なレジスタである。このアドレス設定レジスタ１４１には、ＣＰＵ１１から制御データを格納するエラー設定レジスタ２３上の領域を指定するアドレスが格納される。つまり、アドレス設定レジスタ１４１が１６ビットのデータ格納領域を有している場合、エラー設定レジスタ２３上のアドレス"００００ｈ"から"ＦＦＦＦｈ"までの領域を指定することが可能である。また、データ設定レジスタ１４２には、ＣＰＵ１１からエラー設定レジスタ２３に格納する制御データが格納される。
【００２７】
また、エラー設定レジスタ２３は、エラー発生モード設定レジスタとエラー発生アドレス設定レジスタとを１組のレジスタとし、この組になったレジスタを複数有している。本実施の形態においては、エラー設定レジスタ２３上のアドレス"００００ｈ"にエラー発生モード設定レジスタ１が設定され、エラー設定レジスタ２３上のアドレス"０００１ｈ"にエラー発生アドレス設定レジスタ１が設定される。また、エラー設定レジスタ２３上のアドレス"０００２ｈ"にエラー発生モード設定レジスタ２が設定され、エラー設定レジスタ２３上のアドレス"０００４ｈ"にエラー発生アドレス設定レジスタ２が設定される。なお、図１では、図面の簡単化のために、エラー設定レジスタ２３のエラー発生モード設定レジスタとエラー発生アドレス設定レジスタとの組を１組のみ示した。しかし、エラー発生モード設定レジスタとエラー発生アドレス設定レジスタとの組は、エラー設定レジスタ２３のアドレスの上限まで増加させることが可能である。
【００２８】
アドレス設定レジスタ１４１とデータ設定レジスタ１４２とに格納された値に基づき、エラー設定レジスタ２３に値が格納される。この動作について説明する。一例として、エラー発生モード設定レジスタ１とエラー発生アドレス設定レジスタ１とに値を設定する場合について説明する。この場合、まずＣＰＵ１１が、アドレス設定レジスタ１４１に値"００００ｈ"を格納する。続いて、データ設定レジスタ１４２にベリファイ用読出しモードに対応した値が格納される。ベリファイ用読出しモードに対応した値は、例えば、ベリファイ用読出しモードとして４つのモードを持っている場合、４ビットの値として与えられる。４ビットの信号は、例えば、モード１に対して値"０００１ｈ"、モード２に対して値"０００２ｈ"、モード３に対して値"０００４ｈ"、モード４に対して値"０００８ｈ"を設定する。それぞれのモードを１ビットの信号として扱い、４本のビット線のそれぞれに対応させて各モードを定義することで、１つのモードがアクティブの場合に他のモードは非アクティブとなる。また、このように多ビットの信号線のそれぞれに各モードを対応させることで、比較回路２２におけるモード比較が容易になる。
【００２９】
そして、データ設定レジスタ１４２に値が格納されたのに応じて、エラー発生モード設定レジスタ１（アドレス"００００ｈ"）が選択される。その後エラー発生モード設定レジスタ１にモード設定値が格納される。
【００３０】
続いて、ＣＰＵ１１が、アドレス設定レジスタ１４１に値"０００１ｈ"を格納する。その後、データ設定レジスタ１４２にエラーを発生させる読出しデータが格納される代替ＲＡＭ３０上のアドレス（読出しアドレス）を格納する。そして、データ設定レジスタ１４２に値が格納されたのに応じて、エラー発生アドレス設定レジスタ１（アドレス"０００１ｈ"）が選択され、エラー発生モード設定レジスタ１にエラーを発生させる読出しデータが格納される代替ＲＡＭ３０上のアドレスが格納される。その他のエラー発生モード設定レジスタとエラー発生アドレス設定レジスタとにも、上記手順と同様の手順で値が格納される。
【００３１】
ここで、メモリアクセス制御回路１５とエラー発生回路２０とについて詳細に説明し、評価システム１の動作について説明する。図３にメモリアクセス制御回路１５とエラー発生回路２０とについての詳細なブロック図を示す。図３に示すように、メモリアクセス制御回路１５は、アクセス制御レジスタ１５１と、エラーフラグ生成回路１５５とを有している。
【００３２】
アクセス制御レジスタ１５１は、エラーフラグ格納レジスタ１５２、期待値レジスタ１５３、アクセスモード格納レジスタ１５４を有している。エラーフラグ格納レジスタ１５２には、読出しデータが期待値と一致していれば"１"が格納され、不一致であれば"０"が格納される。なお、エラーフラグ格納レジスタ１５２の値は、エラーフラグ生成回路１５５から入力される。また、エラーフラグ格納レジスタ１５２に格納された値は、ＣＰＵ１１によって読出され、ベリファイ処理の結果とされる。期待値レジスタ１５３は、ＣＰＵ１１から入力される読出しデータに対する期待値を保持する。また、この期待値は、エラーフラグ生成回路１５５に送信される。アクセスモード格納レジスタ１５４は、ＣＰＵ１１から送信されるモード信号に対応した値を保持する。モード信号に対応した値とは、例えば代替ＲＡＭ３０の書込み、消去、読出し等の各動作に対して与えられる値であって、この値は、モード信号としてエミュレータインタフェース１６を介して代替ＲＡＭ３０に与えられる。代替ＲＡＭ３０は、モード信号の値に基づき各種の動作を行う。
【００３３】
エラーフラグ生成回路１５５は、期待値比較器１５６、ＡＮＤ回路１５７を有している。期待値比較器１５６は、期待値レジスタ１５３に格納された期待値と、代替ＲＡＭ３０から読み出されエミュレータインタフェース１６を介して入力される読出しデータとを比較し、ベリファイ結果を出力する。ベリファイ結果は、期待値と読出しデータとが一致した場合にハイレベルとなり、不一致だった場合にロウレベルとなる。
【００３４】
ＡＮＤ回路１５７には、ベリファイ結果とエミュレータインタフェース１６を介してエラー発生回路から入力されるエラー信号とが入力される。ＡＮＤ回路１５７は、ベリファイ結果とエラー信号の反転論理との論理積を出力する。このＡＮＤ回路１５７の出力がエラーフラグ生成回路１５５の出力となる。つまり、エラーフラグ生成回路１５５は、エラー信号が第１の状態（例えば、ハイレベルであって、エラー発生状態を示す論理値）の場合にエラーフラグ格納レジスタ１５２に"０"を格納し、第２の状態（例えば、ロウレベルであって、エラーが発生していない状態を示す論理値）の場合は、期待値比較器１５６の出力に基づいた値をエラーフラグ格納レジスタ１５２に格納する。
【００３５】
エラー発生回路は、エラー出力回路２１、比較回路２２、エラー設定レジスタ２３を有している。エラー設定レジスタ２３は、エラー発生モード設定レジスタ２３１とエラー発生アドレス設定レジスタ２３２を有している。エラー発生モード設定レジスタ２３１は、格納された値に基づきエラー信号を発生させるアクセスモードに対応したエラー発生モード信号を出力する。エラー発生アドレス設定レジスタ２３２は、格納された値に基づきエラー信号を発生させる読出しデータが格納される代替ＲＡＭ３０上のアドレスを示すエラー発生アドレスを出力する。
【００３６】
比較回路２２は、モード比較器２２１、アドレス比較器２２２、ＡＮＤ回路２２３を有している。モード比較器２２１は、エラー発生モード設定レジスタ２３１に格納されたエラー発生モード値と、エミュレータインタフェース１６から代替ＲＡＭ３０に送信されるモード信号の値とを比較し、モード比較結果Ｍｃｏｍｐを出力する。モード比較結果Ｍｃｏｍｐは、エラー発生モード値とモード信号の値とが一致した場合にハイレベルとなり、不一致だった場合にロウレベルとなる。アドレス比較器２２２は、エラー発生アドレス設定レジスタ２３２に格納されたエラー発生アドレスと、エミュレータインタフェース１６から代替ＲＡＭ３０に送信される読出しアドレスとを比較し、アドレス比較結果Ａｃｏｍｐを出力する。アドレス比較結果Ａｃｏｍｐは、エラー発生アドレスと読出しアドレスとが一致した場合にハイレベルとなり、不一致だった場合にロウレベルとなる。ＡＮＤ回路２２３は、モード比較結果Ｍｃｏｍｐと、アドレス比較結果Ａｃｏｍｐとの論理積を出力する。ＡＮＤ回路２２３は、比較回路２２の出力であって、この出力を条件一致信号と称す。なお、エラー発生モード設定レジスタ２３１とエラー発生アドレス設定レジスタ２３２とは、上述したエラー設定レジスタ２３のレジスタである。
【００３７】
なお、図３では、簡単化のため、エラー発生モード設定レジスタとエラー発生アドレス設定レジスタとは、１組のみを示した。複数組のエラー発生モード設定レジスタとエラー発生アドレス設定レジスタとを用いる場合、複数のレジスタの組のそれぞれに対して比較回路２２が準備される。そして、複数の比較回路２２の出力の論理和をエラー出力回路２１に入力する。
【００３８】
エラー出力回路２１は、ＡＮＤ回路２１１、ラッチ回路２１２を有している。ＡＮＤ回路２１１は、一方の入力にシステムリセット信号が入力され、他方の入力に条件一致信号が入力されている。ＡＮＤ回路２１１は、この２つの入力の論理積を出力する。ラッチ回路２１２は、例えばＤラッチ回路であって、データ入力端子Ｄはハイレベル（１'ｂ１）に固定されている。また、ラッチ回路２１２のリセット入力端子ＲＳＴには、ＡＮＤ回路２１１が接続されており、ＡＮＤ回路２１１の出力がロウレベルの状態でラッチ回路２１２はリセット状態となる。ラッチ回路２１２は、リセット状態では、出力端子Ｑからロウレベルを出力し、リセット解除状態（ＡＮＤ回路２１１の出力がハイレベル）では、読出しクロックの立ち上がりに応じてデータ入力端子Ｄに入力されるハイレベルを出力する。このラッチ回路２１２の出力はエラー信号となる。つまり、エラー出力回路２１は、読出しクロックに同期してエラー信号のエラー状態（例えば、読出しデータの誤り状態）を設定し、比較回路２２の出力に基づきエラー信号のエラー状態を解除する。なお、システムリセット信号は、例えば、エラー発生回路２０の外部から入力される信号であって、エラー発生回路２０を動作させるか否かを設定する信号である。
【００３９】
本実施の形態にかかる評価システム１の動作について説明する。以下の説明では、動作の一例として、読出しデータのベリファイ処理について説明する。このベリファイ処理には、読出しデータにエラーがない状態での動作と、読出しデータにエラーが発生した場合の動作とがある。
【００４０】
まず、読出しデータにエラーがない状態での動作について説明する。なお、この状態では、システムリセット信号がロウレベルであって、エラー発生回路２０はエラー信号をロウレベルとする。図４に読出しデータにエラーがない状態における動作のタイミングチャートを示す。この場合、まず、タイミングＴ４でベリファイ処理モードを示すＷｒｉｔｅＥｒｒＣｈｅｃｋＭｏｄｅがモード信号として評価用マイコン１０から出力される。続いて、タイミングＴ５でアドレス"１２３４ｈ"を示す読出しアドレスが評価用マイコン１０から出力され、タイミングＴ６で期待値レジスタ１５３に読出しデータの期待値"ＦＦ００ｈ"が設定される。次に、タイミングＴ７で、読出しクロックが評価用マイコン１０から出力され、これに応じて読出しデータ"ＦＦ００ｈ"が代替ＲＡＭ３０から出力される。代替ＲＡＭ３０から出力された読出しデータは、期待値比較器１５６で期待値と比較される。このとき、期待値と読出しデータとの値が一致しているため、ベリファイ結果はハイレベルとなる。ここで、エラー信号はロウレベルであるため、ＡＮＤ回路１５７の出力は、ベリファイ結果と同じ論理レベルとなる。つまり、エラーフラグ格納レジスタ１５２には"１"が格納される。評価用マイコン１０は、このエラーフラグ値をタイミングＴ９のＣＰＵクロックの立ち上がりで読み込むことで、読出しデータが正しいことを認識する。
【００４１】
次に、読出しデータにエラーが発生した場合の動作について説明する。なお、この状態では、システムリセット信号がロウレベルであって、エラー発生回路２０はエラー信号をロウレベルとする。図５に読出しデータにエラーが発生した状態における動作のタイミングチャートを示す。この場合、まず、タイミングＴ４でベリファイ処理モードを示すＷｒｉｔｅＥｒｒＣｈｅｃｋＭｏｄｅがモード信号として評価用マイコン１０から出力される。続いて、タイミングＴ５でアドレス"１２３４ｈ"を示す読出しアドレスが評価用マイコン１０から出力され、タイミングＴ６で期待値レジスタ１５３に読出しデータの期待値"ＦＦ００ｈ"が設定される。次に、タイミングＴ７で、読出しクロックが評価用マイコン１０から出力され、これに応じて読出しデータ"Ｆ０Ｆ０ｈ"が代替ＲＡＭ３０から出力される。代替ＲＡＭ３０から出力された読出しデータは、期待値比較器１５６で期待値と比較される。このとき、期待値と読出しデータとの値が一致しないため、ベリファイ結果はロウレベルとなる。ここで、エラー信号はロウレベルであるため、ＡＮＤ回路１５７の出力は、ベリファイ結果と同じ論理レベルとなる。つまり、エラーフラグ格納レジスタ１５２には"０"が格納される。評価用マイコン１０は、このエラーフラグ値をタイミングＴ９のＣＰＵクロックの立ち上がりで読み込むことで、読出しデータが誤りであることを認識する。
【００４２】
一方、エラー信号に基づき読出しデータがエラー状態となった場合の動作について説明する。図６にエラー信号に基づき読出しデータがエラー状態となった場合におけるタイミングチャートを示す。この場合、まず、タイミングＴ０でエラー発生モード設定レジスタ２３１にエラーを発生させるモード信号の値を設定する。ここでは、モード信号の値としてＷｒｉｔｅＥｒｒＣｈｅｃｋＭｏｄｅが設定される。次に、タイミングＴ１で、エラー発生アドレス設定レジスタ２３２にエラーを発生させる読出しデータが格納される代替ＲＡＭ３０のアドレスを設定する。ここでは、このアドレスとして"１２３４ｈ"が設定される。
【００４３】
そして、タイミングＴ４でベリファイ処理モードを示すＷｒｉｔｅＥｒｒＣｈｅｃｋＭｏｄｅがモード信号として評価用マイコン１０から出力される。これによって、エラー発生モードの値とモード信号との値が一致するため、モード比較結果Ｍｃｏｍｐがハイレベルになる。続いて、タイミングＴ５でアドレス"１２３４ｈ"を示す読出しアドレスが評価用マイコン１０から出力される。これによって、エラー発生アドレスの値と読出しアドレスの値とが一致するため、アドレス比較結果Ａｃｏｍｐがハイレベルになる。また、モード比較結果Ｍｃｏｍｐとアドレス比較結果Ａｃｏｍｐとが共にハイレベルとなるため、条件一致信号がハイレベルとなる。条件一致信号は、モード比較結果Ｍｃｏｍｐとアドレス比較結果Ａｃｏｍｐとのうちいずれか一方がロウレベルとなるまでハイレベルを維持する。
【００４４】
その後、タイミングＴ６で期待値レジスタ１５３に読出しデータの期待値"ＦＦ００ｈ"が設定される。そして、タイミングＴ７で、読出しクロックが評価用マイコン１０から出力され、これに応じて読出しデータ"ＦＦ００ｈ"が代替ＲＡＭ３０から出力される。代替ＲＡＭ３０から出力された読出しデータは、期待値比較器１５６で期待値と比較される。このとき、期待値と読出しデータとの値が一致するため、ベリファイ結果はハイレベルとなる。しかしながら、条件一致信号がハイレベルであるため、エラー出力回路２１が出力するエラー信号は、読出しクロックに基づきハイレベルとなる。従って、ＡＮＤ回路１５７の出力は、ベリファイ結果に関わらずロウレベルとなる。つまり、エラーフラグ格納レジスタ１５２には"０"が格納される。評価用マイコン１０は、このエラーフラグ値をタイミングＴ９のＣＰＵクロックの立ち上がりで読み込むことで、読出しデータが誤りであることを認識する。
【００４５】
なお、タイミングＴ１１からＴ１２の間で一時的にエラーフラグ値がハイレベルとなる。これは、タイミングＴ１１で読出しアドレスが変化するために、エラー信号がハイレベルからロウレベルに変化し、ベリファイ結果のマスクが一時的に解除されるためである。しかし、エラーフラグ値はタイミングＴ９で評価用マイコン１０に取り込まれているため、この変化はベリファイ処理の結果には影響しない。
【００４６】
上記説明より、本実施の形態の評価システム１は、エラー発生回路２０がモード信号と読出しアドレスとに基づき、エラー信号を生成し、読出しクロックに基づき出力する。また、このエラー信号によって、読出しデータの期待値と読出しデータとに基づき生成されるベリファイ結果をマスクし、エラーフラグ格納レジスタ１５２に読出しエラーが発生した状態を示すエラーフラグを格納する。これによって、評価用マイコン１０は、読出しエラーの有無に関係なく、同じ手順でベリファイ処理の結果をＣＰＵ１１で読出すことができる。また、ＣＰＵ１１は、エラーの発生を確実に認識することが可能である。一方、従来の評価システムでは、代替ＲＡＭからの読出しデータを評価システムの外部に読出し、その読出しデータを書き換え、書き換え後の読出しデータを用いてベリファイ処理によるエラー判定を行う必要があった。しかしながら、本実施の形態の評価システム１は読出しデータのベリファイ結果をマスクするのみであって、読出しデータを書き換える手順を必要としない。従って、評価システム１は、本来発生する読出しエラーを忠実に再現することが可能である。
【００４７】
また、従来の評価システムでは、フラッシュメモリ等で偶発的に発生するエラーの再現は困難であったが、評価システム１では、強制的に発生させたエラー信号によってエラーの検出を忠実に再現することが可能である。一方、評価システム１のエラー発生回路の接続先を変更し、適宜エラー設定レジスタの値を設定することで、代替ＲＡＭだけではなく、不揮発性メモリに対するエラー信号を生成することも可能である。つまり、不揮発性メモリにおいて偶発的にしか発生しないエラーをエラー発生回路によって生成することが可能である。これによって、不揮発性メモリの制御において行わなければならないエラー処理に関するプログラムを効率よくデバッグすることが可能になる。
【００４８】
さらに、本実施の形態の評価システム１ではエラー発生モード設定レジスタ２３１とエラー発生アドレス設定レジスタ２３２の値を変更することで、任意の状態及び読出しアドレスにおいてエラーを再現することが可能である。また、エラー発生モード設定レジスタ２３１、エラー発生アドレス設定レジスタ２３２、比較回路２２の組を複数用意することで、複数の条件において発生する読出しエラーを再現することが可能である。これによって、例えば、全ての読出しアドレスでエラーが発生する状態を設定することも可能である。このような条件において、被評価プログラムを実行することで、あるアドレスで発生するエラーのみを検出できない不具合を発見することが容易になる。つまり、本実施の形態の評価システム１で被評価プログラムの評価を行うことで、被評価プログラムの信頼性を向上させることが可能である。
【００４９】
ここで、評価システム１を用いたフラッシュファームウェアのデバッグ作業について説明する。フラッシュファームウェアは、例えば、ユーザープログラムが記憶装置に対してデータの書込み等の操作を行う場合に呼び出され、ユーザープログラムの命令に従い記憶装置を制御するプログラムである。また、フラッシュファームウェアは、機能の一つとして、ベリファイ処理を行う。以下では、ユーザープログラムに代えて、フラッシュファームウェアのデバッグ用に準備されたデバッグ用プログラムを用いた場合のフラッシュファームウェアのデバッグ作業について説明する。つまり、以下の例では被評価プログラムはフラッシュファームウェアである。フラッシュファームウェアをデバッグする場合のフローチャートを図７に示す。
【００５０】
図７に示すように、フラッシュファームウェアをデバッグする場合、まずＣＰＵ１１が、デバッグ用プログラムを代替ＲＡＭ３０から読出し、デバッグ用プログラムを実行する（ステップＳ１）。エラー情報の設定ステップは、デバッグ用プログラムの先頭部分に記述されているため、ステップＳ１に続いてエラー情報の設定が行われる（ステップＳ２）。このステップＳ２では、デバッグ用プログラムによって定義される情報に基づいて、ＣＰＵ１１が条件設定レジスタ１４を介して、エラー設定レジスタ２３に格納される値を設定する。続いて、デバッグ用プログラムは、フラッシュファームウェアを代替ＲＡＭ３０から呼び出し、例えば内蔵ＲＡＭ１２に格納する（ステップＳ３）。そして、ＣＰＵ１１は、内蔵ＲＡＭ１２に格納されたフラッシュファームウェアを実行する（ステップＳ４）。
【００５１】
続いて、フラッシュファームウェアを用いて、ＣＰＵ１１は、代替ＲＡＭ３０を制御する（ステップＳ５）。このとき、制御に応じて、その動作にエラーが発生したか否かを判断する（ステップＳ６）。本実施の形態の評価システム１は、このステップＳ６において、エラー発生回路を用いて、エラー状態を生成することが可能である。ステップＳ６において、エラーが発生していないと判断された場合、ＣＰＵ１１は、例えば代替ＲＡＭ３０上の次のアドレスへのアクセスを行う等の次の処理へ進む（ステップＳ７）。
【００５２】
一方、読出しエラーが生じた場合、あるいはエラー発生回路２０によってエラー信号が生成された場合、読出しデータのエラーを示すエラーフラグがエラーフラグ格納レジスタ１５２に格納され、ＣＰＵ１１がエラーの発生状態を示すエラーステータスを生成する。（ステップＳ８）。このエラーステータスとは、例えばモード１でエラーが発生した場合には"１Ａｈ"、モード２でエラーが発生した場合には"１Ｂｈ"といった値である。また、フラッシュファームウェアが、例えばエラー発生時にエラーが発生したアドレスに再書込みを行う等のエラー処理機能を有している場合は、このようなエラー処理を行うステップを含んでいても良い。ステップＳ８に続いて、エラーステータスを内蔵ＲＡＭ１２に保持する（ステップＳ９）。その後、ＣＰＵ１１は、処理をステップＳ７に進める。
【００５３】
そして、ＣＰＵ１１は、フラッシュファームウェアの動作が全て完了したかを判断する（ステップＳ１０）。ステップＳ１０の判断によって、フラッシュファームウェアの実行が未完了であった場合は、ステップＳ５に戻る。一方、ステップＳ１０で、フラッシュファームウェアの実行が完了した場合は、ＣＰＵ１１は、内蔵ＲＡＭ１２に保持されているエラーステータスをデバッグ用プログラムに戻り値として返し、デバッグ用プログラムを実行するモードに動作を切り替える（ステップＳ１１）。
【００５４】
つまり、エラー発生回路２０によってエラー信号を生成することで、フラッシュファームウェアのエラー処理コードを実行し、実行後に生成されたエラーステータスが所望の値になっているか否かを判断することで、フラッシュファームウェアのデバッグが可能である。また、上記説明のように、評価システム１を用いることで、従来のようにエラー処理部分と書込み処理及びベリファイ処理部分のプログラムを個別に実行することなく、１つのプログラムとして実行可能である。これによって、分離されたプログラムを結合する際に起こる不具合の発生を防ぎ、プログラムの信頼性を向上させることが可能である。
【００５５】
一方、本実施の形態の評価システム１は、ユーザーが作成するユーザープログラムをデバッグする場合にも有効である。つまり、ここでは被評価プログラムはユーザープログラムである。ユーザープログラムをデバッグする手順の一例を説明する。以下では、ユーザープログラムは、フラッシュファームウェアを呼び出す機能を有しており、代替ＲＡＭ３０に格納されているものとする。ＣＰＵ１１は、代替ＲＡＭ３０に格納されるユーザープログラムを実行する。また、ＩＣＥにおいてユーザープログラムをデバッグする場合には、デバッグ用プログラムとしてスーパーバイザプログラムを用いる。スーパーバイザプログラムは、例えば代替ＲＡＭ３０内、あるいは代替ＲＡＭ３０とは異なる記憶装置内に格納されるプログラムである。ＩＣＥは、ＣＰＵ１１が実行中のプログラムを一時停止するブレーク機能を有している。スーパーバイザプログラムは、このブレーク機能によって、ユーザープログラムの動作が一時停止した状態で、ＣＰＵ１１がアクセス可能なレジスタ、あるいは記憶領域に格納されるデータを操作することができるプログラムである。
【００５６】
ユーザープログラムのデバッグを行う場合のフローチャートを図８に示す。この場合、まず、ＩＣＥのブレーク機能を実行することによって、スーパーバイザプログラムが起動する（ステップＳ２０）。続いて、スーパーバイザプログラムによって、エラー発生の設定処理が呼び出される（ステップＳ２１）。このステップＳ２１の動作に応じてＣＰＵ１１は、条件設定レジスタ１４を介して、エラー設定レジスタ２３に格納される値を設定する（ステップＳ２）。
【００５７】
その後、ＣＰＵ１１は、ＩＣＥのブレーク状態を解除し、ユーザープログラムを実行する（ステップＳ２２）。そして、ユーザープログラムは、フラッシュファームウェアを代替ＲＡＭ３０から呼び出す（ステップＳ３）ステップＳ３によって呼び出されたフラッシュファームウェアは、内蔵ＲＡＭ１２に格納され、ＣＰＵ１１は、このフラッシュファームウェアを用いて代替ＲＡＭ３０を制御する（ステップＳ４）。その後に行われるステップＳ５〜Ｓ１０のフラッシュファームウェアを用いた動作は図７に示すフラッシュファームウェアの動作と実施的に同じである。
【００５８】
続いて、フラッシュファームウェアによって生成されたエラーステータスは、ユーザープログラムにフラッシュファームウェアの実行結果として送信される。また、ＣＰＵ１１は、ユーザープログラムを実行するモードに切り替わる（ステップＳ１１）。続いて、ＣＰＵ１１は、ユーザープログラムを実行し、ステップＳ１１で受信したエラーステータスの判断を行う（ステップＳ２３）。ステップＳ２３の判断によって、エラーステータスがその後の処理を必要としないものであればユーザープログラムを終了する。一方、エラーステータスが、その後の処理においてエラー処理を必要とするものであれば、そのエラー処理を実行し、ユーザープログラムを終了する（ステップＳ２４）。ステップＳ２４において実行されるエラー処理とは、例えばエラーが発生した領域とは異なる領域へのデータの再書込みや、外部に接続される表示装置へのエラーステータスの表示などである。
【００５９】
上記説明より、本実施の形態の評価システム１を用いて、プログラムのデバッグを行うことで、プログラムの実行中に読出しデータ、あるいはエラーステータスを変更することなくプログラムのデバッグを行うことが可能である。つまり、本実施の形態の評価システム１によれば、ＩＣＥのブレーク機能やスーパーバイザプログラムを用いて任意のエラー発生条件を設定し、その任意の条件に基づいたエラー信号の生成が可能である。そして、このエラー信号に基づきフラッシュファームウェアのエラー処理コードを実行し、実行後に生成されたエラーステータスを用いてユーザープログラムをデバッグすることが可能である。これによって、プログラムのデバッグ作業を従来の評価システムよりもスムーズに行うことが可能である。従来の評価システムでは、例えばエラーを発生させる場合に、読出しデータを評価システムの外部に読出し、その読出しデータを書き換え、書き換え後の読出しデータを用いて評価システムにベリファイ処理を行わせる必要があった。そのため、デバッグ作業を効率よく進めることができない問題があった。
【００６０】
実施の形態２
実施の形態２にかかる評価システム２のブロック図を図９に示す。なお、図９において、実施の形態１と同じものについては、実施の形態１と同様の符号を付して説明を省略する。
【００６１】
実施の形態１にかかる評価システム１と実施の形態２にかかる評価システム２とでは、エラー発生回路が異なる。実施の形態１にかかるエラー発生回路２０は、モード信号と読出しアドレスとに基づいてエラー信号を生成していたのに対し、実施の形態２にかかるエラー発生回路５０は、モード信号と読出しアドレスと当該読出しアドレスへのアクセス回数とに基づいてエラー信号を生成する。
【００６２】
図９に示すように、エラー発生回路５０は、エラー発生回路２０に対して、アクセスカウンタ５４とアクセス回数設定レジスタ５３１を追加したものである。なお、アクセス回数設定レジスタ５３１は、エラー設定レジスタ５３内の領域に定義される。このエラー発生回路５０の詳細なブロック図を図１０に示す。
【００６３】
実施の形態２にかかるエラー発生回路５０は、エラー発生モード設定レジスタ２３１とエラー発生アドレス設定レジスタ２３２で設定される条件へのアクセスが所定の回数に達するまでは、エラー信号を出力する。また、この条件へのアクセスが所定の回数に達するとエラー信号を停止（エラー状態を解除）する。図１０に示すように、エラー発生回路５０は、エラー出力回路５１、比較回路５２、エラー設定レジスタ５３、アクセスカウンタ５４を有している。
【００６４】
アクセスカウンタ５４は、カウンタ５４１、ＡＮＤ回路５４２を有している。カウンタ５４１は、カウンタリセット信号がハイレベルである場合にリセット解除状態となり、リセット解除後の読出しクロックの数を計数してカウント値ＣＮＴとして出力する。また、カウンタリセット信号がロウレベルである場合、リセット状態となり、読出しクロックの計数を停止し、カウント値ＣＮＴを"０"にリセットする。カウンタリセット信号は、ＡＮＤ回路５４２が生成する信号である。ＡＮＤ回路５４２は、システムリセット信号がロウレベルである場合にはロウレベルを出力し、システムリセット信号がハイレベルである場合には条件一致信号と同じ論理レベルを出力する。つまり、カウンタリセット信号は、システムリセット信号がハイレベルである場合、条件一致信号と同じ論理レベルとなる。
【００６５】
エラー設定レジスタ５３は、実施の形態１にかかるエラー設定レジスタ２３に対して、アクセス回数設定レジスタ５３１を加えたものである。アクセス回数設定レジスタ５３１に格納される値は、エラー発生モード設定レジスタ２３１及びエラー発生アドレス設定レジスタ２３２と同様の手順で、評価用マイコン１０の条件設定レジスタ１４の値に基づき設定される。アクセス回数設定レジスタ５３１は、格納される値に基づいて比較カウント値ＲｅｆＣＮＴを出力する。
【００６６】
比較回路５２は、実施の形態１にかかる比較回路２２に対して、比較カウント値検出回路５２４、アクセス回数比較器５２５、ＡＮＤ回路５２６を追加したものである。比較カウント値検出回路５２４は、比較カウント値ＲｅｆＣＮＴが"０"を示す値であれば、ロウレベルを出力し、比較カウント値ＲｅｆＣＮＴが"０"以外を示す値であれば、ハイレベルを出力する。アクセス回数比較器５２５は、カウント値ＣＮＴと比較カウント値ＲｅｆＣＮＴとを比較する。アクセス回数比較器５２５は、カウント値ＣＮＴと比較カウント値ＲｅｆＣＮＴとが不一致である状態ではロウレベルを出力し、カウント値ＣＮＴと比較カウント値ＲｅｆＣＮＴとが一致した状態ではハイレベルを出力する。ＡＮＤ回路５２６は、比較カウント値検出回路５２４の出力と、アクセス回数比較器５２５の出力との論理積を出力する。つまり、比較カウント値検出回路５２４の出力がハイレベルである場合、ＡＮＤ回路５２６は、アクセス回数比較器５２５の出力と同じ論理レベルとなる。ＡＮＤ回路５２６の出力は、マスク信号としてエラー出力回路５１に出力される。
【００６７】
エラー出力回路５１は、実施の形態１にかかるエラー出力回路２１に対して、ＡＮＤ回路５１１を追加したものである。また、実施の形態２では、ラッチ回路２１２の出力をマスク前エラー信号と称する。ＡＮＤ回路５１１は、マスク信号の反転信号とマスク前エラー信号との論理積を出力する。つまり、ＡＮＤ回路５１１の出力は、マスク信号がロウレベルである場合、マスク前エラー信号と同じ論理レベルとなる。一方、マスク信号がハイレベルの場合、マスク前エラー信号の論理レベルに関わらずロウレベルを出力する。このＡＮＤ回路５１１の出力は、エラー信号となる。
【００６８】
ここで、実施の形態２のエラー発生回路５０の動作を説明する。図１１にエラー発生回路５０を動作させた場合の評価システム２の動作のタイミングチャートを示す。この場合、まず、タイミングＴ０でエラー発生モード設定レジスタ２３１にエラーを発生させるモード信号の値を設定する。ここでは、モード信号の値としてＷｒｉｔｅＥｒｒＣｈｅｃｋＭｏｄｅが設定される。次に、タイミングＴ１で、エラー発生アドレス設定レジスタ２３２にエラーを発生させる読出しデータが格納される代替ＲＡＭ３０上のアドレスを設定する。ここでは、このアドレス（読出しアドレス）として"１２３４ｈ"が設定される。また、タイミングＴ２で所定のカウント回数がカウント回数設定レジスタに設定される。本実施の形態においては、所定の回数として８回を示す"０００８ｈ"が設定される。
【００６９】
そして、タイミングＴ４でベリファイ処理モードを示すＷｒｉｔｅＥｒｒＣｈｅｃｋＭｏｄｅがモード信号として評価用マイコン１０から出力される。これによって、エラー発生モードの値とモード信号との値が一致するため、モード比較結果Ｍｃｏｍｐがハイレベルになる。続いて、タイミングＴ５でアドレス"１２３４ｈ"を示す読出しアドレスが評価用マイコン１０から出力される。これによって、エラー発生アドレスの値と読出しアドレスとの値が一致するため、アドレス比較結果Ａｃｏｍｐがハイレベルになる。また、モード比較結果Ｍｃｏｍｐとアドレス比較結果Ａｃｏｍｐとが共にハイレベルとなるため、条件一致信号がハイレベルとなる。条件一致信号は、モード比較結果Ｍｃｏｍｐとアドレス比較結果Ａｃｏｍｐとのうちいずれか一方がロウレベルとなるまでハイレベルを維持する。また、実施の形態２では、アクセス回数が所定の回数に達するまでは、モード信号と読出しアドレスとはそれぞれ値が維持されるものとする。また、条件一致信号がハイレベルとなるのに応じて、カウンタリセット信号がハイレベルとなる。これによって、カウンタ５４１は読出しクロックの計数が可能な状態となる。
【００７０】
その後、タイミングＴ６で期待値レジスタ１５３に読出しデータの期待値"ＦＦ００ｈ"が設定される。そして、タイミングＴ７で、読出しクロックが評価用マイコン１０から出力され、これに応じて読出しデータ"ＦＦ００ｈ"が代替ＲＡＭ３０から出力される。代替ＲＡＭ３０から出力された読出しデータは、期待値比較器１５６で期待値と比較される。このとき、期待値と読出しデータとの値が一致するため、ベリファイ結果はハイレベルとなる。また、条件一致信号がハイレベルであるため、ラッチ回路２１２が出力するマスク前エラー信号は、読出しクロックに基づきハイレベルとなる。一方、カウンタ５４１は、読出しクロックを計数し、値"０００１ｈ"を有するカウント値ＣＮＴを出力する。しかし、このカウント値は、比較カウント値ＲｅｆＣＮＴとは一致しないため、アクセス回数比較器５２５が出力するマスク信号はロウレベルとなる。従って、ＡＮＤ回路５１１の出力はマスク前エラー信号と同じハイレベルとなる。これによって、ＡＮＤ回路１５７の出力は、ベリファイ結果に関わらずロウレベルとなる。つまり、エラーフラグ格納レジスタ１５２には"０"が格納される。評価用マイコン１０は、このエラーフラグ値をタイミングＴ９のＣＰＵクロックの立ち上がりで読み込むことで、読出しデータが誤りであることを認識する。
【００７１】
続いて、タイミングＴ１３以降で条件のアクセスが繰り返され、カウント値ＣＮＴは"０００７ｈ"までカウントアップされる。また、その間エラー信号はロウレベルとなるため、エラーフラグ格納レジスタ１５２には"０"が格納される。その後、タイミングＴ１５で８回目の読出しクロックが入力されると、カウント値ＣＮＴは"０００８ｈ"となる。これによって、アクセス回数比較器５２５の出力がハイレベルとなるため、マスク信号がハイレベルになる。これによって、ＡＮＤ回路５１１が出力するエラー信号は、ロウレベルとなる。そして、ＡＮＤ回路１５７の出力は、ベリファイ結果と同じハイレベルとなり、エラーフラグ値が"１"となる。このエラーフラグ値はタイミングＴ１７のＣＰＵクロックの立ち上がりで読み込まれ、読出しデータが正常であることがＣＰＵ１１に認識される。
【００７２】
上記説明より、実施の形態２にかかる評価システム２によれば、エラーが発生した読出しアドレスに対して複数回のアクセスを試みて、所定の回数のアクセスを繰り返した後に書込みを成功させることが可能である。つまり、実施の形態２にかかる評価システムによれば、実施の形態１よりも複雑なエラー処理を再現することが可能である。これによって、様々なアクセスモード、あるいはエラーモードを再現できる評価システムを実現することが可能である。なお、実施の形態２にかかる評価システム２において、１回のアクセスに対してエラー信号を生成する場合、アクセス回数設定レジスタ５３１に、"０"を設定しておけば良い。これによって、比較カウント値検出回路の出力はロウレベルとなり、ＡＮＤ回路５２６が出力するマスク信号は、常にロウレベルとなる。これによって、エラー出力回路５１のＡＮＤ回路５１１の出力は、マスク前エラー信号と同じ論理となる。つまり、マスク前エラー信号のマスクが常に解除される状態となり、実施の形態１と同じ動作が可能である。
【００７３】
実施の形態３
実施の形態３にかかる評価システム２のブロック図を図１２に示す。なお、図１２において、実施の形態１と同じものについては、実施の形態１と同様の符号を付して説明を省略する。
【００７４】
実施の形態１にかかる評価システム１と実施の形態３にかかる評価システム３とでは、エラー発生回路が異なる。実施の形態１にかかるエラー発生回路２０は、エラーを発生させるエラー発生モードとエラー発生アドレスとを記憶するレジスタを有しているのに対し、実施の形態３にかかるエラー発生回路６０は、代替ＲＡＭ３０のアドレスの数と同じ個数のエラー発生モードの記憶領域を有するエラー設定ＲＡＭ６２を有している
【００７５】
図１２に示すように、エラー発生回路６０は、比較回路６１とエラー設定ＲＡＭ６２とを有している。まず、エラー設定ＲＡＭ６２について説明する。エラー設定ＲＡＭ６２に設定されるエラー発生モード記憶領域と代替ＲＡＭ３０上のアドレスとの関係を図１３に示す。図１３に示すように、例えば代替ＲＡＭ３０のアドレスが"００００ｈ"〜"ＦＦＦＦｈ"まで設定されていた場合、エラー設定ＲＡＭ６２にはこのアドレスに対応して"００００ｈ"〜"ＦＦＦＦｈ"までの領域（アドレス）が設定される。そして、エラー設定ＲＡＭ６２の各アドレスによって指定される領域にエラー設定モード値が格納される。
【００７６】
一方、このエラー発生回路６０の詳細なブロック図を図１４に示す。図１４に示すように、エラー設定ＲＡＭ６２には読出しアドレスと読出しクロックが入力される。エラー設定ＲＡＭ６２は、読出しクロックに同期して、読出しアドレスで指定されたエラー設定ＲＡＭ６２のアドレスのエラー発生モード値を出力する。また、比較回路６１は、モード比較器６１１を有しており、エラー発生モード値とモード信号との値を比較する。そして、２つの値が一致していれば、エラー状態（例えば、ハイレベル）を示すエラー信号を出力する。
【００７７】
実施の形態３にかかる評価システム３の動作のタイミングチャートを図１５に示し、評価システム３の動作について説明する。ここでは、エラー発生回路６０によってエラー信号が生成される場合の動作について説明する。この場合、まず、タイミングＴ４でベリファイ処理モードを示すＷｒｉｔｅＥｒｒＣｈｅｃｋＭｏｄｅがモード信号として評価用マイコン１０から出力される。続いて、タイミングＴ５でアドレス"１２３４ｈ"を示す読出しアドレスが評価用マイコン１０から出力され、タイミングＴ６で期待値レジスタ１５３に読出しデータの期待値"ＦＦ００ｈ"が設定される。
【００７８】
次に、タイミングＴ７で、読出しクロックが評価用マイコン１０から出力され、これに応じて読出しデータ"ＦＦ００ｈ"が代替ＲＡＭ３０から出力される。代替ＲＡＭ３０から出力された読出しデータは、期待値比較器１５６で期待値と比較される。このとき、期待値と読出しデータとの値が一致しているため、ベリファイ結果はハイレベルとなる。一方、タイミングＴ７の読出しクロック立ち上がりに応じて、読出しアドレスによって指定されたエラー設定ＲＡＭ６２に記憶されたエラー発生モードが出力される。このエラー発生モード値は、モード信号と同じＷｒｉｔｅＥｒｒＣｈｅｃｋＭｏｄｅである。従って、エラー信号がタイミングＴ７で立ち上がる。つまり、エラー信号はハイレベルとなるため、ＡＮＤ回路１５７の出力は、ベリファイ結果に関わらず強制的にロウレベルとなる。これによって、エラーフラグ格納レジスタ１５２には"０"が格納される。評価用マイコン１０は、このエラーフラグ値をタイミングＴ９のＣＰＵクロックの立ち上がりで読み込むことで、読出しデータがエラーであることを認識する。
【００７９】
上記説明より、実施の形態３にかかる評価システム３によれば、エラー設定レジスタ２３に代えて代替ＲＡＭ３０と同じアドレス数を有するエラー設定ＲＡＭ６２を用いることでも、実施の形態１と同様にエラーを再現することが可能である。また、エラー設定ＲＡＭ６２を用いることで、エラー発生アドレス設定レジスタへの値の設定が不要になるため、値設定にかかる手間を省略することが可能である。
【００８０】
また、実施の形態３の評価システム３では、エラー設定ＲＡＭ６２を装置の外部に接続することも可能である。この場合、代替ＲＡＭ３０の容量に応じてエラー設定ＲＡＭ６２の容量を設定できる。つまり、評価システム３に予め搭載された容量以上の代替ＲＡＭ３０に対して被評価プログラムを実行する場合であっても、外部に接続するエラー設定ＲＡＭ６２の容量を適宜選択することで、プログラムを実行することが可能である。
【００８１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、エラー信号は、読出しクロックに同期したものではなくＣＰＵクロックに同期したものであっても良い。また、実施の形態１、２では、エラー出力回路を用いて、読出しクロックに同期したエラー信号を出力したが、エラー出力回路を用いずに、比較回路の出力をエラー信号とすることも可能である。さらに、上記実施の形態では、フラッシュメモリの代わりに代替ＲＡＭを使用したが、本発明はメモリの種類に関係なく使用することが可能である。
【図面の簡単な説明】
【００８２】
【図１】実施の形態１にかかる評価システムのブロック図である。
【図２】実施の形態１にかかる条件設定レジスタとエラー設定レジスタとの関係を示す図である。
【図３】実施の形態１にかかるアクセス制御回路とエラー発生回路の詳細なブロック図である。
【図４】実施の形態１にかかる評価システムにおいて正常な読出しデータを扱う場合の動作のタイミングチャートである。
【図５】実施の形態１にかかる評価システムにおいて誤った読出しデータを扱う場合の動作のタイミングチャートである。
【図６】実施の形態１にかかる評価システムにおいてエラー発生回路で生成したエラー信号によって読出しデータをエラーデータとして扱う場合の動作のタイミングチャートである。
【図７】実施の形態１にかかる評価システムにおいてフラッシュファームウェアをデバッグする場合のフローチャートである。
【図８】実施の形態１にかかる評価システムにおいてユーザープログラムのデバッグを行う場合のフローチャートである。
【図９】実施の形態２にかかる評価システムのブロック図である。
【図１０】実施の形態２にかかるアクセス制御回路とエラー発生回路の詳細なブロック図である。
【図１１】実施の形態２にかかる評価システムにおいて誤った読出しデータを扱う場合の動作のタイミングチャートである。
【図１２】実施の形態３にかかる評価システムのブロック図である。
【図１３】実施の形態３にかかるエラー設定ＲＡＭと代替ＲＡＭのアドレスの関係を示す図である。
【図１４】実施の形態３にかかるアクセス制御回路とエラー発生回路の詳細なブロック図である。
【図１５】実施の形態２にかかる評価システムにおいて誤った読出しデータを扱う場合の動作のタイミングチャートである。
【図１６】従来の評価システムのブロック図である。
【図１７】従来の評価システムにおいてフラッシュファームウェアのデバッグを行う場合のフローチャートである。
【符号の説明】
【００８３】
１〜３    評価システム
１０    評価用マイコン
１１    ＣＰＵ
１２    内部ＲＡＭ
１３    周辺回路
１４    条件設定レジスタ
１５    メモリアクセス制御回路
１６    エミュレータインタフェース
２０、５０、６０    エラー発生回路
２１、５１    エラー出力回路
２２、５２、６１    比較回路
２３、５３    エラー設定レジスタ
３０    代替ＲＡＭ
４０    外部アクセス回路
５４    アクセスカウンタ
６２    エラー設定ＲＡＭ
１４１    アドレス設定レジスタ
１４２    データ設定レジスタ
１５１    アクセス制御レジスタ
１５２    エラーフラグ格納レジスタ
１５３    期待値レジスタ
１５４    アクセスモード格納レジスタ
１５５    エラーフラグ生成回路
１５６    期待値比較器
１５７、２１１、２２３、５１１、５２６、５４２    ＡＮＤ回路
２１２    ラッチ回路
２２１    モード比較器
２２２    アドレス比較器
２３１    エラー発生モード設定レジスタ
２３２    エラー発生アドレス設定レジスタ
５２４    比較カウント値検出回路
５２５    アクセス回数比較器
５３１    アクセス回数設定レジスタ
５４１    カウンタ
６１１    モード比較器
Ａｃｏｍｐ    アドレス比較結果
ＣＮＴ    カウント値
Ｍｃｏｍｐ    モード比較結果
ＲｅｆＣＮＴ    比較カウント値
【図１】
2008009721.tif 000003
【図２】
2008009721.tif 000004
【図３】
2008009721.tif 000005
【図４】
2008009721.tif 000006
【図５】
2008009721.tif 000007
【図６】
2008009721.tif 000008
【図７】
2008009721.tif 000009
【図８】
2008009721.tif 000010
【図９】
2008009721.tif 000011
【図１０】
2008009721.tif 000012
【図１１】
2008009721.tif 000013
【図１２】
2008009721.tif 000014
【図１３】
2008009721.tif 000015
【図１４】
2008009721.tif 000016
【図１５】
2008009721.tif 000017
【図１６】
2008009721.tif 000018
【図１７】
2008009721.tif 000019