(57)【要約】【課題】ユーザーシステム上のデバッグ対象ＣＰＵの仕様の変更に柔軟に対応可能なエミュレータを提供する。【解決手段】エミュレータ（３０）は、デバッグ対象とされるユーザシステムに結合可能なユーザインタフェース（４０）と、上記ユーザシステムに搭載されるＣＰＵ論理機能を代行するためのＣＰＵ論理（８０）と、上記ユーザシステムのデバッグを可能とするデバッグ論理機能を有するデバッグ論理（９０）とを含む。上記ＣＰＵ論理と、上記デバッグ論理とを、それぞれ任意の論理を書込み可能なＦＰＧＡによって形成し、且つ、それらが互いに協調して動作可能に結合することで、ユーザーシステム上のデバッグ対象ＣＰＵの仕様の変更に柔軟に対応できるようにする。【選択図】図１
2010231607.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ対象とされるユーザシステムに結合可能なユーザインタフェースと、
上記ユーザシステムに搭載されるＣＰＵ論理機能を代行するためのＣＰＵ論理と、
上記ユーザシステムのデバッグを可能とするデバッグ論理機能を有するデバッグ論理と、を含み、
上記ＣＰＵ論理と、上記デバッグ論理とは、それぞれ任意の論理を書込み可能なＦＰＧＡによって形成され、且つ、それらが互いに協調して動作可能に結合されて成ることを特徴とするエミュレータ。
【請求項２】
上記ＣＰＵ論理と上記デバッグ論理とは、それぞれ別個のＦＰＧＡによって形成された請求項１記載のエミュレータ。
【請求項３】
上記ＣＰＵ論理と上記デバッグ論理とは、一つのＦＰＧＡ内に形成された請求項１記載のエミュレータ。
【請求項４】
上記ＣＰＵ論理又は上記デバッグ論理は、複数のＦＰＧＡによって形成された請求項１記載のエミュレータ。
【請求項５】
上記デバッグ用論理は、上記ＣＰＵ論理の内部状態をモニタ可能なモニタレジスタを含んで成る請求項１記載のエミュレータ。
【請求項６】
上記ＣＰＵ論理は、上記ＣＰＵ論理内のイベント検出を可能とするイベント検出回路を含み、
上記デバッグ用論理は、上記イベント検出回路の検出結果に基づいてエラー信号を形成するエラー発生回路を含んで成る請求項１記載のエミュレータ。
【請求項７】
上記ＣＰＵ論理は、乱数データを生成する乱数生成機能と、
上記乱数生成機能による乱数データの生成時間を設定可能な乱数生成時間設定レジスタと、
デバッグ対象とされるユーザプログラム及びデバッグ用のエミュレーションプログラムを実行可能なＣＰＵコアと、を含み、
上記ＣＰＵコアにより上記エミュレーションプログラムが実行されている状態で、上記乱数生成時間設定レジスタの設定情報の変更が可能とされる請求項１記載のエミュレータ。
【請求項８】
上記ＣＰＵ論理は、ＲＡＭエリアと、
ＲＡＭ二重化イネーブル信号を形成可能なＲＡＭ二重化制御回路と、
デバッグ対象とされるユーザプログラム及びデバッグ用のエミュレーションプログラムを実行可能なＣＰＵコアと、を含み、
上記デバッグ用論理は、上記ＣＰＵコアでユーザプログラムが実行され、上記ＲＡＭ二重化イネーブル信号がアサートされた状態で、上記ＲＡＭエリアに対してライトせずにリードが行われた場合をチェックするＲＡＭ二重化チェック回路を含む請求項１記載のエミュレータ。
【請求項９】
上記ＲＡＭ二重化チェック回路は、それぞれ上記ＲＡＭエリアにおけるバイト単位の記憶領域に対応する複数のフリップフロップ回路を含み、
上記複数のフリップフロップ回路は、リセット時に第１論理状態に初期化され、上記ＲＡＭエリアがライトされたとき、そのライトされた記憶領域に対応するフリップフロップ回路が第２論理状態にセットされ、上記ＲＡＭエリアからデータがリードされるとき、その記憶エリアに対応するフリップフロップ回路の状態が参照される請求項８記載のエミュレータ。
【請求項１０】
上記ＣＰＵ論理は、ＲＡＭエリアと、
デバッグ対象とされるユーザプログラム及びデバッグ用のエミュレーションプログラムを実行可能なＣＰＵコアと、を含み、
上記デバッグ用論理は、上記ＲＡＭエリアから転送された書込みデータが一時的に退避される書込みデータ一時退避エリアと、
上記ＣＰＵコアでブロック転送命令が実行され、それによって上記ＲＡＭエリアから上記書込みデータ一時退避エリアへのデータ転送が行われる際に、上記ブロック転送命令のパラメータ異常をチェック可能なレジスタチェック回路と、を含む請求項１記載のエミュレータ。
【請求項１１】
上記ＣＰＵ論理は、デバッグ対象とされるユーザプログラム及びデバッグ用のエミュレーションプログラムを実行可能なＣＰＵコアと、
上記ＣＰＵコアに供給されるクロック信号の周波数を検出可能な周波数検出器と、を含み、
上記周波数検出器は、上記ＣＰＵコアに供給されるクロック信号の上限値を設定可能な上限値設定レジスタと、上記ＣＰＵコアに供給されるクロック信号の下限値を設定可能な下限値設定レジスタと、を含み、
上記ＣＰＵコアに供給されるクロック信号の周波数が、上限値設定レジスタに設定された上限値を超えた場合、又は、上記ＣＰＵコアに供給されるクロック信号の周波数が、上記下限値設定レジスタに設定された下限値未満になった場合に、上記ＣＰＵコアに供給されるリセット信号がアサートされる請求項１記載のエミュレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータを搭載したユーザシステムの開発を、ソフトウェア、ハードウェアの両面からサポートするためのエミュレータに関する。
【背景技術】
【０００２】
演算処理を実行するＣＰＵ(Central Processing Unit)に加えて、入出力等の周辺回路、キャッシュメモリ、プログラムコードが書き込まれたメモリを単一のチップに集積してマイクロコンピュータが形成される。このようなマイクロコンピュータを搭載して成るマイクロコンピュータ応用システム（ユーザシステム）の開発を、ソフトウェア及びハードウェアの両面からサポートするためにエミュレータが用いられる。エミュレータとして、フルスペックエミュレータとオンチップエミュレータとを挙げることができる。
【０００３】
フルスペックエミュレータは、パーソナルコンピュータなどのシステム開発装置と、開発中のユーザシステムとの間に、ケーブル等を介して接続され、その応用システムに装着されるべきマイクロコンピュータの機能を代行しつつ、デバッガとしての機能を有し、ソフトウェアあるいはユーザシステムの開発を支援するものである。このマイクロコンピュータ開発装置には上記シングルチップマイクロコンピュータに対応したエバリュエーションチップと呼ばれる、評価用のエミュレーション用プロセッサが搭載されている。エミュレーション用プロセッサはシングルチップマイクロコンピュータを包含する機能に、マイクロコンピュータの内部状態を出力したり、マイクロコンピュータの動作を制御したりする専用の機能を追加することにより、マイクロコンピュータ開発装置の開発が容易にされる。
【０００４】
オンチップエミュレータは、開発中の応用システム（ユーザシステム）に設けられた端子とＪＴＡＧ（Joint Test Action Group）などのインタフェースケーブルを介して結合される。このインタフェースケーブルを介してオンチップエミュレータと開発中の応用システムとの間で通信が行われ、開発中の応用システムの内部レジスタや、内部バスに接続されたＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などのデバイスの情報が取得されることで、エミュレートが可能とされる。
【０００５】
特許文献１には、擬似ＣＰＵ回路、マスタ基板制御ＬＳＩ、スレーブ基板制御ＬＳＩを備えた汎用エミュレーション基板をＦＰＧＡ（Field Programmable Gate Array）で構成し、従来必要としていたＣＰＵ基板、デバッグ環境をなくすための技術が記載されている。
【０００６】
特許文献２では、ハードウェア記述言語で記述されたＣＰＵコアと、それ以外の検証対象回路とが、それぞれマッピングされてエミュレータに実装される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−４１３２１号公報
【特許文献２】特開２００７−５８８１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来のエミュレータについて本願発明者が検討したところ、次のような課題が見いだされた。
【０００９】
フルスペックエミュレータにおいて、エバリュエーションチップをシリコンウェハで製造する場合には、デバイスの仕様に応じてデバッグ機能を変更したい場合が生じても、ウェハの修正に時間と費用がかかるため、デバッグ機能の変更に柔軟に対応することができない。
【００１０】
また、オンチップエミュレータでは、開発中の応用システムにおける外部端子数に制限があり、開発中の応用システムとオンチップエミュレータとの間で多くの信号のやり取りが困難であることから、デバッグ機能が制限されてしまう。このため、デバッグ機能を拡張したくても、それを実現するのが困難とされる。
【００１１】
特許文献１によれば、汎用エミュレーション基板がＦＰＧＡで構成され、特許文献２によれば、ＣＰＵコアがハードウェア記述言語で記述されるが、ユーザーシステム上のデバッグ対象ＣＰＵの仕様の変更、特にデバッグ機能やクロック周波数などのばらつきチェック機能に対して柔軟に対応することができない。
【００１２】
本発明の目的は、ユーザーシステム上のデバッグ対象ＣＰＵの仕様変更に柔軟に対応可能なエミュレータを提供することにある。
【００１３】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１５】
すなわち、エミュレータは、デバッグ対象とされるユーザシステムに結合可能なユーザインタフェースと、上記ユーザシステムに搭載されるＣＰＵ論理機能を代行するためのＣＰＵ論理と、上記ユーザシステムのデバッグを可能とするデバッグ論理機能を有するデバッグ論理とを含む。上記ＣＰＵ論理と、上記デバッグ論理とを、それぞれ任意の論理を書込み可能なＦＰＧＡによって形成し、且つ、それらが互いに協調して動作可能に結合することで、ユーザシステム上のデバッグ対象ＣＰＵの仕様の変更に柔軟に対応できるようにする。
【発明の効果】
【００１６】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１７】
すなわち、ユーザシステムの仕様の変更に柔軟に対応可能なエミュレータを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明にかかるエミュレータの構成例ブロック図である。
【図２】上記エミュレータに含まれるＣＰＵ用ＦＰＧＡ及びデバッグ用ＦＰＧＡの別の構成例を示すブロック図である。
【図３】図２に示される構成を採用した場合における主要動作のタイミング図である。
【図４】図２に示される構成を採用した場合における主要動作のタイミング図である。
【図５】図２に示される構成を採用した場合における主要動作のタイミング図である。
【図６】図２に示される構成を採用した場合における主要動作のタイミング図である。
【図７】図２に示される構成におけるＥＥＰＲＯＭレジスタ書き込みチェック項目の説明図である。
【図８】図２に示される構成におけるＥＥＰＲＯＭレジスタ書き込みチェック項目の説明図である。
【図９】図２に示される構成を採用した場合における主要動作のタイミング図である。
【図１０】図２に示される構成を採用した場合における主要動作のタイミング図である。
【図１１】上記エミュレータの別の構成例を示すブロック図である。
【図１２】上記エミュレータの別の構成例を示すブロック図である。
【発明を実施するための形態】
【００１９】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２０】
〔１〕本発明の代表的な実施の形態に係るエミュレータ（３０）は、デバッグ対象とされるユーザシステムに結合可能なユーザインタフェース（４０）と、上記ユーザシステムに搭載されるＣＰＵ論理機能を代行するためのＣＰＵ論理（８０）と、上記ユーザシステムのデバッグを可能とするデバッグ論理機能を有するデバッグ論理（９０）とを含む。上記ＣＰＵ論理と、上記デバッグ論理とは、それぞれ任意の論理を書込み可能なＦＰＧＡによって形成され、且つ、それらが互いに協調して動作可能に結合されて成る。
【００２１】
上記の構成によれば、上記ＣＰＵ論理と、上記デバッグ論理とは、それぞれ任意の論理を書込み可能なＦＰＧＡによって形成され、且つ、それらが互いに協調して動作可能に結合されることにより、エミュレータによるデバッグ品質の向上を図ることができる。また、エバリュエーションチップをシリコンウェハで製造する場合に比べて、エミュレータ開発設計費用の削減、期間の短縮化を図ることができる。さらに、ユーザシステムに搭載される実チップの品種毎に必要であったデバッグ用ＣＰＵをシリコンウェハで製造する代わりに、ＦＰＧＡを使用することができるので、仕様変更などに対して容易に対応することができ、デバッグ用ＣＰＵのシリコンウェハの製作コストが不要となる。そして、安価な共通したエミュレータデバッグシステムで様々なアーキテクチャの実チップをＦＰＧＡ論理ファイル・ソフトの変更により、容易にサポートすることができる。
【００２２】
以上により、ユーザシステムの仕様の変更に柔軟に対応可能なエミュレータを提供することができる。
【００２３】
〔２〕上記〔１〕において、上記ＣＰＵ論理と上記デバッグ論理とは、それぞれ別個のＦＰＧＡによって形成することができる。
【００２４】
〔３〕上記〔１〕において、上記ＣＰＵ論理と上記デバッグ論理とは、一つのＦＰＧＡ内に形成することができる。
【００２５】
〔４〕上記〔１〕において、上記ＣＰＵ論理又は上記デバッグ論理は、複数のＦＰＧＡによって形成することができる。
【００２６】
〔５〕上記〔１〕において、上記デバッグ用論理は、上記ＣＰＵ論理の内部状態をモニタ可能なモニタレジスタ（９０４）を含んで構成することができる。
【００２７】
〔６〕上記〔１〕において、上記ＣＰＵ論理は、上記ＣＰＵ論理内のイベント検出を可能とするイベント検出回路（８１９）を含み、上記デバッグ用論理は、上記イベント検出回路の検出結果に基づいてエラー信号を形成するエラー発生回路（９１３）を含んで構成することができる。
【００２８】
〔７〕上記〔１〕において、上記ＣＰＵ論理は、乱数データを生成する乱数生成機能（８１４）と、上記乱数生成機能による乱数データの生成時間を設定可能な乱数生成時間設定レジスタ（８１２）と、デバッグ対象とされるユーザプログラム及びデバッグ用のエミュレーションプログラムを実行可能なＣＰＵコア（８０３）とを含んで構成することができる。このとき、上記ＣＰＵコアにより上記エミュレーションプログラムが実行されている状態で、上記乱数生成時間設定レジスタの設定情報の変更が可能にされる。
【００２９】
〔８〕上記〔１〕において、上記ＣＰＵ論理は、ＲＡＭエリア（８１５）と、ＲＡＭ二重化イネーブル信号を形成可能なＲＡＭ二重化制御回路（８１６）と、デバッグ対象とされるユーザプログラム及びデバッグ用のエミュレーションプログラムを実行可能なＣＰＵコア（８０３）とを含んで構成することができる。
【００３０】
また、上記デバッグ用論理は、上記ＣＰＵコアでユーザプログラムが実行され、上記ＲＡＭ二重化イネーブル信号がアサートされた状態で、上記ＲＡＭエリアに対してライトせずにリードが行われた場合をチェックするＲＡＭ二重化チェック回路（９１４）を含んで構成することができる。
【００３１】
ユーザシステムにおけるＲＡＭは初期化により何らかのデータがライトされる。このため、上記ＲＡＭ二重化チェック回路によるチェック機能は、一般のＲＡＭの未初期化チェックにも有効である。
【００３２】
〔９〕上記〔８〕において、上記ＲＡＭ二重化チェック回路は、それぞれ上記ＲＡＭエリアにおけるバイト単位の記憶領域に対応する複数のフリップフロップ回路を含んで構成することができる。上記複数のフリップフロップ回路は、リセット時に第１論理状態に初期化され、上記ＲＡＭエリアがライトされたとき、そのライトされた記憶領域に対応するフリップフロップ回路が第２論理状態にセットされ、上記ＲＡＭエリアからデータがリードされるとき、その記憶エリアに対応するフリップフロップ回路の状態が参照される。
【００３３】
かかる構成は、上記〔８〕の場合と同様に、一般のＲＡＭの未初期化チェックにも有効である。
【００３４】
〔１０〕上記〔１〕において、上記ＣＰＵ論理は、ＲＡＭエリア（８１５）と、デバッグ対象とされるユーザプログラム及びデバッグ用のエミュレーションプログラムを実行可能なＣＰＵコア（８０３）とを含んで構成することができる。上記デバッグ用論理は、上記ＲＡＭエリアから転送された書込みデータが一時的に退避される書込みデータ一時退避エリア（９１６）と、上記ＲＡＭエリアから上記書込みデータ一時退避エリアへのデータ転送が行われる際に、上記ブロック転送命令のパラメータ異常をチェック可能なレジスタチェック回路（９１５）とを含んで構成することができる。
【００３５】
また、書き込みデータ一時退避エリアには、ＥＥＰＲＯＭ又はそれ以外の不揮発性メモリ(フラッシュメモリ等)を適用することができる。
【００３６】
〔１１〕上記〔１〕において、上記ＣＰＵ論理は、デバッグ対象とされるユーザプログラム及びデバッグ用のエミュレーションプログラムを実行可能なＣＰＵコア（８０３）と、上記ＣＰＵコアに供給されるクロック信号の周波数を検出可能な周波数検出器（８２０）とを含んで構成することができる。上記周波数検出器は、上記ＣＰＵコアに供給されるクロック信号の上限値を設定可能な上限値設定レジスタと、上記ＣＰＵコアに供給されるクロック信号の下限値を設定可能な下限値設定レジスタとを含んで構成することができる。上記ＣＰＵコアに供給されるクロック信号の周波数が、上限値設定レジスタに設定された上限値を超えた場合、又は、上記ＣＰＵコアに供給されるクロック信号の周波数が、上記下限値設定レジスタに設定された下限値未満になった場合に、上記ＣＰＵコアに供給されるリセット信号がアサートされる。
【００３７】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３８】
図１には、本発明にかかるエミュレータが示される。
【００３９】
図１に示されるエミュレータ３０は、パーソナルコンピュータ（ＰＣ）２０と、開発中のユーザシステム１０との間に、ケーブル等を介して接続され、ユーザシステム１０に装着されるべきシングルチップマイクロコンピュータの機能を代行しつつ、デバッガとしての機能を有し、ソフトウェア或はユーザシステムの開発を支援するものである。
【００４０】
上記エミュレータ３０は、ユーザインタフェース（ＵＳＥＲ  Ｉ／Ｆ）４０、ＣＰＵ周辺回路５０、制御用ＣＰＵ６０、パーソナルコンピュータインタフェース（ＰＣ  Ｉ／Ｆ）７０、ＣＰＵ用ＦＰＧＡ８０、及びデバッグ用ＦＰＧＡ９０を含んで成る。ユーザインタフェース（ＵＳＥＲ  Ｉ／Ｆ）４０は、インタフェースケーブル等を介してユーザシステム１０に結合される。また、ユーザインタフェース４０は、上記ＣＰＵ周辺回路５０、上記ＣＰＵ用ＦＰＧＡ８０、及び上記デバッグ用ＦＰＧＡ９０に結合され、それらと、上記ユーザシステム１０との間で各種信号のやり取りが可能とされる。
【００４１】
パーソナルコンピュータ２０との間での各種信号のやり取りは、上記パーソナルコンピュータインタフェース７０を介して行われる。制御用ＣＰＵ６０は、信号線を介して上記パーソナルコンピュータインタフェース７０に結合される。また、制御用ＣＰＵ６０は、制御用バスＣ−ＢＵＳを介して上記デバッグ用ＦＰＧＡ９０に結合される。制御用バスＣ−ＢＵＳは、データバス１０３及びアドレスバス１０４を含む。制御用ＣＰＵ６０は、上記パーソナルコンピュータインタフェース７０や上記デバッグ用ＦＰＧＡ９０の動作を制御する。
【００４２】
上記ＣＰＵ用ＦＰＧＡ８０は、ユーザシステム１０に搭載されるＣＰＵ及びその周辺回路の論理機能を代行する。上記デバッグ用ＦＰＧＡ９０は、上記ＣＰＵ用ＦＰＧＡ８０で実行されるユーザプログラムのデバッグを可能とする。上記ＣＰＵ用ＦＰＧＡ８０と、上記デバッグ用ＦＰＧＡ９０とは、それらが互いに協調して動作可能に、デバッグ用バスＤＢ−ＢＵＳや各種信号線を介して結合されている。デバッグ用バスＤＢ−ＢＵＳは、データバス１０１及びアドレスバス１０２を含む。上記デバッグ機能８０４には、擬似的にエラーを発生させるための擬似エラー発生機能や、チップばらつきをエミュレーションするためのチップばらつきエミュレーション機能などが含まれる。このとき上記デバッグ用ＦＰＧＡ９０には、チップばらつきのエミュレーション結果や上記擬似エラーの発生に基づいて、上記ＣＰＵコア８０３をリセットしたり、上記ＣＰＵコア８０３でのユーザプログラムの実行を停止する機能が含まれる。これにより、上記ＣＰＵ用ＦＰＧＡ８０と上記デバッグ用ＦＰＧＡ９０とは互いに協調して動作することができる。
【００４３】
上記ＣＰＵ用ＦＰＧＡ８０及び上記デバッグ用ＦＰＧＡ９０は、それぞれＦＰＧＡ（Field Programmable Gate Array）によって形成されており、それらはエミュレータ３０における一つのプリント基板に搭載されるか、もしくは、別々の基板でコネクタ接続で構成される。ＦＰＧＡは、利用者が任意の論理を書き込むことのできるゲートアレイの一種であり、再書き換えが可能である。上記ＣＰＵ用ＦＰＧＡ８０や上記デバッグ用ＦＰＧＡ９０は、特に制限されないが、公知の半導体集積回路製造技術により単結晶シリコン基板などの一つの半導体基板に形成される。
【００４４】
上記ＣＰＵ用ＦＰＧＡ８０は、特に制限されないが、デバッグＲＡＭ８０１と論理部８０２とを含む。デバッグＲＡＭ８０１には、デバッグのためのエミュレーションプログラムが格納される。論理部８０２には、ＣＰＵコア８０３や、様々なデバッグ機能８０４及び内部論理８０５が形成される。内部論理８０５は、ユーザシステム１０に搭載されるＣＰＵコアの周辺に配置される各種回路に対応する。
【００４５】
ＣＰＵをＦＰＧＡで実現するに際して、ＦＰＧＡでは対応できない部分が存在する。例えばＰＬＬ（Phase Locked Loop）、ＦＰＧＡに電源を供給するための電源用レギュレータや、デバッグ対象とされるユーザプログラムが動作する大容量のＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などは、ＦＰＧＡでは対応し難い。そこで本例では、上記ＣＰＵ用ＦＰＧＡ８０とは別に、ＣＰＵ周辺回路５０が設けられ、このＣＰＵ周辺回路５０において、上記ＰＬＬ、電源用レギュレータ、大容量ＲＯＭ、大容量ＲＡＭなどを実現するようにしている。
【００４６】
上記デバッグ用ＦＰＧＡ９０は、デバッグ実現ブロック９０１と、ＦＰＧＡコンフィグレーション９０２とを含む。上記デバッグ実現ブロック９０１は、制御回路９０３及びモニタレジスタ９０４を含む。モニタレジスタ９０４は、内部論理８０５を介して論理部８０２における各部の論理状態をモニタするために設けられる。制御部９０３は、デバッグ実現ブロック９０１におけるデバッグ制御を行う。
【００４７】
ＦＰＧＡコンフィグレーション９０２は、パーソナルコンピュータ２０からＦＰＧＡファイルをダウンロードする機能を有する。ダウンロードされたＦＰＧＡファイルにより、上記デバッグ実現ブロック９０３や、上記ＣＰＵ用ＦＰＧＡ８０における論理部８０２の動作環境が設定される。この動作環境の設定は、パワーオンによりエミュレータ３０への電源供給が開始される毎に行われる。尚、上記ＣＰＵ用ＦＰＧＡ８０における論理部８０２の動作環境については、機密保護の見地から、ＦＰＧＡファイルを暗号化した状態でパーソナルコンピュータ２０からダウンロードし、復号機能８０６によって復号してから設定されるように構成することができる。
【００４８】
上記ＣＰＵコア８０３では、上記デバッグＲＡＭ８０１内のエミュレーションプログラムが実行される。ユーザプログラムの実行において所定のブレーク条件が成立した場合、ユーザプログラムからエミュレーションプログラムの実行に遷移される。エミュレーションプログラムの実行によりイベント設定等が行われる。そして、エミュレーションプログラムの所定命令（例えばＧＯ命令）が実行されることにより、それまでのエミュレーションプログラムからユーザプログラムの実行に遷移されるようになっている。
【００４９】
図１に示される構成によれば、以下の作用効果を得ることができる。
【００５０】
（１）内部論理８０５の出力信号をモニタレジスタ９０４に取り込むようにしているので、ＣＰＵの内部論理信号をエミュレータ３０側でモニタできる。一般にＦＰＧＡメーカの用意するモニタ信号は基板に事前に実装しておく必要があり本数に制限があるが、ＦＰＧＡ間では、任意にデバッグ信号を必要数追加可能である。このことから、内部論理８０５と、モニタレジスタ９０４間の専用線を必要数追加するのは容易である。
【００５１】
（２）ＦＰＧＡ用コンフィグレーション９０２により、ＦＰＧＡ用コンフィグレーションファイルダウンロードが可能であるため、必要に応じてこのＦＰＧＡ用コンフィグレーションファイルのダウンロードを行うことにより、複数種類のＣＰＵコアをサポートすることができる。ＦＰＧＡのピン配置を整合させることにより、他社メーカＣＰＵコアのサポートも可能となる。
【００５２】
図２には、上記ＣＰＵ用ＦＰＧＡ８０及び上記デバッグ用ＦＰＧＡ９０の別の構成例が示される。
【００５３】
図２に示されるＣＰＵ用ＦＰＧＡ８０は、デバッグＲＡＭ８０１、ＣＰＵコア８０３、ステータスレジスタ８１１、乱数生成時間設定レジスタ８１２、暗号化モジュール８１３、ＲＮＧ乱数生成機能部８１４、ＲＡＭエリア８１５、ＲＡＭ二重化制御回路８１６、選択回路８１７、ＯＳＣ設定レジスタ８１８、イベント検出回路８１９、周波数検出器８２０を含む。ステータスレジスタ８１１のビットは、エラー発生信号によって立てられる。ＣＰＵコア８０３は、リセット信号によってリセットされる。また、ＣＰＵコア８０３には、外部クロック信号及び内部クロック信号が選択的に供給されるようになっている。乱数生成時間設定レジスタ８１２には、乱数の発生時間が設定される。暗号化モジュール８１３は、ＤＥＳ／ＡＥＳ／ＲＳＡなど各周辺暗号モジュールで、元データから暗号化キーを用いて暗号化データを生成する機能を有する。ＲＮＧ乱数生成機能８１４は、ＲＮＧ(ランダムナンバジェネレータ)乱数を生成する。ＲＡＭエリア８１５にはデータが書き込まれる。ＲＡＭ二重化制御回路８１６はＲＡＭ二重化チェック動作を制御する。ＯＳＣ設定レジスタ８１８は、発振周波数の設定を可能とする。イベント検出回路８１９は、ユーザプログラムの実行状態から所定のイベントを検出することができる。周波数検出器８２０は、上記ＣＰＵコア８０３に入力されるクロック信号の周波数検出を可能とする。上記ＣＰＵコア８０３、乱数生成時間設定レジスタ８１２、暗号化モジュール８１３、ＲＮＧ乱数生成機能部８１４、ＲＡＭエリア８１５、ＲＡＭ二重化制御回路８１６、ＯＳＣ設定レジスタ８１８、イベント検出回路８１９、周波数検出器８２０は、デバッグ用バスＤＢ−ＢＵＳにおけるデータバス１０１に共通接続され、このデータバス１０１を介して各種データのやり取りが可能とされる。ＣＰＵコア８０３から出力されるアドレス信号は、アドレスバス１０２を介してデバッグ用ＦＰＧＡ９０に伝達可能とされる。
【００５４】
図２に示されるデバッグ用ＦＰＧＡ９０は、周波数設定レジスタ９１１、デコーダ９１２、エラー発生回路９１３、ＲＡＭ二重化チェック回路９１４、ＥＥＰＭＯＶレジスタチェック回路９１５、ＥＥＰＲＯＭ書込みデータ一時退避エリア９１６を含む。周波数設定レジスタ９１１には、ＰＬＬ５０１から出力されるクロック信号の発振周波数制御情報が設定される。この発振周波数制御情報は１６ビット情報とされる。デコーダ９１２は、ＯＳＣ設定レジスタ８１８の出力信号をデコードする。このデコーダ９１２のデコード結果は、発振周波数制御情報として上記周波数設定レジスタ９１１に設定される。エラー発生回路９１３は、イベント検出回路８１９からのイベント一致信号に応じてエラー信号をアサートする。尚、イベント検出回路８１９の検出チャンネルは、特に制限されないが、４チャンネルとされ、エラー発生回路９１３は、上記イベント検出回路８１９の何れかのチャンネルでイベント一致が検出された場合にエラー信号をアサートする。ＲＡＭ二重化チェック回路９１４は、上記ＣＰＵ用ＦＰＧＡ８０でのＲＡＭ二重化が正常か否かの判別を行う。ＥＥＰＭＯＶレジスタチェック回路９１５は、ＥＥＰＭＯＶレジスタ書き込みチェックする。ＥＥＰＲＯＭ書込みデータ一時退避エリア９１６には、ＥＥＰＲＯＭ書込みデータが一時的に退避される。
【００５５】
ＣＰＵコア８０３などのＣＰＵ論理をＦＰＧＡ化したことにより、その利便性を活かし、デバッグ機能をＣＰＵ用ＦＰＧＡ８０に組み込み、このＣＰＵ用ＦＰＧＡ８０とデバッグ用ＦＰＧＡ９０とを協調動作させる。
【００５６】
尚、図２に示される構成においても、ＣＰＵ用ＦＰＧＡ８０やデバッグ用ＦＰＧＡ９０以外は、図１に示されるのと同様である。また、図２に示される構成においても、図１に示されるのと同様に、ＦＰＧＡコンフィグレーション９０２によりダウンロードされたＦＰＧＡファイルにより、上記デバッグ実現ブロック９０３や、上記ＣＰＵ用ＦＰＧＡ８０における論理部８０２の動作環境が設定される。
【００５７】
次に、上記ＣＰＵ用ＦＰＧＡ８０に組み込まれたデバッグ機能について詳述する。
【００５８】
上記ＣＰＵ用ＦＰＧＡ８０に組み込まれたデバッグ機能として、（１）擬似エラー発生機能、（２）チップばらつきエミュレーション機能、（３）リアルタイムチェック機能、（４）デバッグ変更機能、を挙げることができる。以下、上記各機能について説明する。
【００５９】
（１）擬似エラー発生機能
擬似エラー発生機能は、エミュレータで発生できないデバッグ機能をＣＰＵ用ＦＰＧＡ８０に設定してデバッグすることができる機能であり、ＣＰＵコア８０３の状態が指定した状態と一致したときに、指定したエラーを擬似的に発生させる。
【００６０】
一般にユーザシステム１０に搭載される実チップでは、紫外線照射に対するセキュリティ対策のため、チップ表面に不当な紫外線などが浴びせられると、それを検出する光ディテクタ回路が働いてリセット状態に遷移される。エミュレータは、ユーザープログラマーに対して、ユーザシステム１０に搭載される実チップと同じ動作をすることが理想だが、上記光ディテクタ回路を装備するのは非常に困難である。そこで、本例では、ＣＰＵ用ＦＰＧＡ８０内にイベントを検出するためのイベント検出回路８１９が設けられ、デバッグ用ＦＰＧＡ９０内に、どのようなエラーを起こさせるかを設定可能なエラー発生回路９１３が設けられている。イベント検出は４チャンネル有する。各チャンネル毎に異なるイベント条件を設定することができ、各チャンネル毎にイベント発生を検出して、該当するチャンネルのイベント一致信号がアサートされるようになっている。上記イベント一致信号がアサートされた場合、エラー発生回路９１３により、ＣＰＵコア８０３に対するリセット信号や、ユーザプログラムの実行を停止するためのブレーク信号をアサートすることができる。エラー発生回路９１３は、ユーザシステム１０に搭載される実チップにおける光ディテクタ及び他のエラー検出回路に対応する。
【００６１】
図３には、擬似エラー発生機能が発揮されるデバッグシーケンス例が示される。
【００６２】
ＣＰＵパワーＯＮによりＣＰＵコア８０３がリセットされ、ＣＰＵコア８０３は、ユーザ状態とされ、ユーザプログラムが実行される。ユーザプログラムの実行において、所定のブレーク条件が成立すると、「ブレーク命令」が発行される。この「ブレーク命令」がＣＰＵコア８０３で実行されることにより、それまでのユーザ状態からデバッグ状態に遷移される。このデバッグ状態では、ユーザプログラムの実行が停止され、エミュレーションプログラムが実行される。このデバッグ状態において、デバッグ用レジスタ設定が行われる。すなわち、イベント検出回路８１９内の所定レジスタにイベント条件が設定され、エラー発生回路９１３内の所定レジスタにエラー内容が設定される。デバッグ状態においてＣＰＵコア８０３で「ＧＯ命令」が実行されることにより、ＣＰＵコア８０３は、それまでのデバッグ状態からユーザ状態に遷移される。そして、イベント検出回路８１９内の所定レジスタに設定されたイベント条件が成立した場合、それがイベント検出回路８１９で検出され、対応するチャンネルのイベント一致信号がアサートされる。イベント一致信号がアサートされた場合、エラー発生回路９１３により、ＣＰＵコア８０３に対するリセット信号がアサートされることによって、ＣＰＵコア８０３がリセットされる。尚、図３では、イベント一致信号がアサートされた場合にＣＰＵコア８０３がリセットされるようになっているが、イベント一致信号がアサートされた場合にユーザプログラムの実行を停止するためのブレーク信号がアサートされるように変更することができる。この変更は、エラー発生回路９１３内のレジスタ設定により可能とされる。
【００６３】
このように、指定したエラーを擬似的に発生させることができるので、例えば光ディテクタ回路を装備していなくても、光ディテクタ回路の検出結果に基づく処理をデバッグすることができる。
【００６４】
（２）チップばらつきエミュレーション機能
チップばらつきエミュレーション機能として、ＲＮＧ(ランダムナンバジェネレータ)乱数生成機能を使用したデバッグと、内部発振器を使用するデバッグとを挙げることができる。
【００６５】
先ず、ＲＮＧ(ランダムナンバジェネレータ)乱数生成機能を使用したデバッグについて説明する。
【００６６】
図４には、ＲＮＧ乱数生成機能を使用したデバッグにおける主要シーケンスが示される。
【００６７】
ユーザプログラムにおいて、ＤＥＳ／ＡＥＳ／ＲＳＡなどの暗号化モジュールで、元データから暗号化キーを用いて暗号化データを生成し、ＲＡＭやＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）に重要データなどを書き込む処理がある。上記暗号化キーは乱数データも引用をしている。ＲＮＧ乱数生成機能８１４を使用し、必要ビット長の乱数データを生成する。ＲＮＧ乱数生成機能８１４によって発生された乱数は、暗号化モジュール８１３内のキーレジスタに書き込まれる。元データと乱数データとを組み合わせて暗号化データを生成する。ＲＮＧ乱数生成機能８１４を用いることによって、チップ内部で固有の値を生成することができるようになり、よりセキュリティの高いシステム構築できる。
【００６８】
乱数データを生成する速度は、ユーザシステム１０に搭載される実チップにより、ばらつきがあるため、そのばらつきを考慮して、ユーザプログラムをデバッグしなければならない。そこで、本例では、ＣＰＵ用ＦＰＧＡ８０上に、乱数データを生成する時間を設定できる乱数生成時間設定レジスタ８１２が設けられている。上記乱数生成時間設定レジスタ８１２を用いて、ＲＮＧ乱数生成時間を例えば標準値（Ｔｙｐ値）や最大値（Ｍａｘ値）に設定する。この設定の変更は、図４に示されるように、エミュレーションプログラムが実行されているデバッグ状態において行われる。図４に示される例では、ＣＰＵコア８０３のユーザ状態では、乱数生成時間設定レジスタ８１２におけるＲＮＧ乱数生成時間が標準値（Ｔｙｐ値）に設定されており、エミュレーションプログラムの実行において、上記ＲＮＧ乱数生成時間が標準値（Ｔｙｐ値）から最大値（Ｍａｘ値）に変更され、その後、「ＧＯ命令」の実行により、ユーザ状態に遷移されてユーザプログラムが実行される。これにより、上記ＲＮＧ乱数生成時間が標準値（Ｔｙｐ値）の場合と、最大値（Ｍａｘ値）の場合との違いを把握することができる。このようにして、実チップの乱数データを生成する速度のばらつきエミュレーションが可能になる。
【００６９】
次に、内部発振器を使用するデバッグについて説明する。
【００７０】
本機能は、内部発振器の発振周波数の特性ばらつきデバッグする機能である。ユーザシステム１０における内部発振器は、図２におけるＰＬＬ５０１によって代行される。この内部発振器の一例とされるＰＬＬ５０１は、ＦＰＧＡでは対応できないため、ＣＰＵ用ＦＰＧＡ８０の外部に配置される（図１におけるＣＰＵ周辺回路５０の一部とされる）。
【００７１】
図５には、内部発振器の発振周波数の特性ばらつきデバッグにおける主要シーケンスが示される。
【００７２】
この内部発振器の発振周波数の特性ばらつきデバッグにおいて、内部発振器の発振周波数の設定が行われる。例えば発振周波数を最小値（Ｍｉｎ値）や最大値（Ｍａｘ値）に設定することができる。
【００７３】
ＯＳＣ設定レジスタ８１８には、内部クロック信号の周波数情報が設定される。ＯＳＣ設定レジスタ８１８に設定された周波数情報は、専用線によりデバッグ用ＦＰＧＡ９０内のデコーダ９１２に伝達され、ここでデコードされ、そのデコード出力によって、周波数設定レジスタ９１１に設定される。ＰＬＬ５０１では、上記周波数設定レジスタ９１１の１６ビット出力に応じて発振周波数が決定される。ＰＬＬ５０１の出力信号は、内部クロック信号として、選択回路８１７を介してＣＰＵコア８０３に供給される。従って、上記ＯＳＣ設定レジスタ８１８の設定情報を再設定することにより、ＣＰＵコア８０３に供給される内部クロック信号の周波数を変更することができる。この変更は、図５に示されるように、エミュレーションプログラムが実行されているデバッグ状態において行われる。図５に示される例では、ＣＰＵコア８０３のデバッグ状態において、ＣＰＵコア８０３がエミュレーションプログラムを実行することで、ＯＳＣ設定レジスタ８１８に設定されている周波数情報の再設定が行われる。ＯＳＣ設定レジスタ８１８の周波数情報が再設定されると、デコーダ９１２の出力により周波数設定レジスタ９１１の設定内容が変更され、それによって、ＰＬＬ５０１の発振周波数が、再設定後の周波数に変更される。その後、「ＧＯ命令」の実行により、ユーザ状態に遷移されてユーザプログラムが実行される。これにより、ＣＰＵコア８０３の内部クロック信号の周波数を変更することができる。例えば内部クロック信号の周波数が最小値（Ｍｉｎ値）と最大値（Ｍａｘ値）の場合の違いを把握することができる。このようにして内部発振器の発振周波数の特性ばらつきについてのデバッグを行うことができる。
【００７４】
（３）リアルタイムチェック機能
次に、リアルタイムチェック機能について説明する。
【００７５】
このリアルタイムチェック機能として、ＲＡＭ二重化チェック機能と、ＥＥＰＲＯＭレジスタ書き込みチェック機能とを挙げることができる。
【００７６】
先ず、ＲＡＭ二重化チェック機能について説明する。
【００７７】
本例では、ＣＰＵ用ＦＰＧＡ８０内に、ＲＡＭエリア８１５とＲＡＭ二重化制御回路８１６とが形成され、デバッグ用ＦＰＧＡ９０内にＲＡＭ二重化チェック回路９１４が形成され、上記ＲＡＭエリア８１５に対してライトせずにリードを行った場合をＲＡＭ二重化チェック回路９１４でチェックし、ＲＡＭエラー発生信号ＲＡＭＥＲＲをローレベルにアサートするようにしている。
【００７８】
ＲＡＭ二重化制御回路８１６は、ＲＡＭ二重化イネーブル信号ＲＡＭＭＥを形成する。このＲＡＭ二重化イネーブル信号ＲＡＭＭＥがハイレベルにアサートされることによってＲＡＭ二重化チェック回路９１４がイネーブル状態にされ、ＲＡＭ二重化チェックが可能とされる。
【００７９】
ＲＡＭエリア８１５に対してライトせずにリードが行われた場合をバイト単位でチェック可能とするために、ＲＡＭ二重化チェック回路９１４には、複数のフリップフロップ回路が形成される。個々のフリップフロプ回路は、ＲＡＭエリア８１５におけるバイト単位の記憶領域に対応する。このＲＡＭ二重化チェック回路９１４における複数のフリップフロップ回路は、リセット時に論理値“０”に初期化される。そしてＲＡＭ二重化チェック回路９１４において、デバッグ用バスＤＢ−ＢＵＳの状態がモニタされ、ＲＡＭエリア８１５がライトされたとき、そのライトされた記憶領域に対応するフリップフロップ回路が論理値“１”にセットされる。ＲＡＭエリア８１５からデータがリードされるとき、その記憶エリアに対応するフリップフロップ回路の状態が参照される。フリップフロップ回路の状態が論理値“１”の場合には正常と判断され、フリップフロップ回路の状態が論理値“０”の場合にはエラーと判断される。フリップフロップ回路の状態が論理値“０”ということは、上記ＲＡＭエリア８１５に対してライトせずにリードが行われた場合を意味するから、ＲＡＭ二重化チェック回路９１４により、ＲＡＭエラー発生信号ＲＡＭＥＲＲがローレベルにアサートされる。
【００８０】
図６には、ＲＡＭ二重化チェック機能が発揮される場合の主要シーケンスが示される。
【００８１】
パワーオンリセットコマンドがＣＰＵコア８０３に実行されてリセット信号がローレベルにアサートされた場合や、ターゲットリセット、エミュレータ（ＥＭＬ）リセット信号がローレベルにアサートされた場合にＲＡＭ二重化回路９１４が初期化される。ＲＡＭ二重化イネーブル信号ＲＡＭＭＥがハイレベルにアサートされることによってＲＡＭ二重化チェック回路９１４がイネーブル状態にされる。ＲＡＭエリア８１５からデータがリードされるとき、その記憶エリアに対応するフリップフロップ回路の状態が参照される。フリップフロップ回路の状態が論理値“０”の場合にはエラーと判断され、ＲＡＭエラー発生信号ＲＡＭＥＲＲがローレベルにアサートされる。このＲＡＭエラー発生信号ＲＡＭＥＲＲがローレベルにアサートされることにより、ＣＰＵコア８０３がリセットされる。ＲＡＭエラー発生信号ＲＡＭＥＲＲのローレベル期間は、デバッグ用クロック信号の２クロック期間とされる。このようにＲＡＭエラー発生信号ＲＡＭＥＲＲのローレベル期間を長くとることによって、ＲＡＭエラー発生信号ＲＡＭＥＲＲのローレベルがＣＰＵコア８０３に確実に認識させることができる。尚、ＲＡＭエラー発生信号ＲＡＭＥＲＲがローレベルにアサートされた場合にユーザプログラムの実行を停止するためのブレーク信号がアサートされるように変更することができる。この変更は、ＲＡＭ二重化チェック回路９１４内のレジスタ設定により可能とされる。
【００８２】
次に、ＥＥＰＲＯＭレジスタ書き込みチェック機能について説明する。
【００８３】
ＥＥＰＲＯＭレジスタ書き込みチェック機能は、ＥＥＰＲＯＭへの書き込み命令であるブロック転送命令（ＥＥＰＭＯＶ．Ｂ命令）のパラメータに不正値が書き込まれたとき、それをエラーとして検出する機能である。このエラー検出は、ＲＡＭエリア８１５からＥＥＰＲＯＭ書込みデータ一時退避エリア９１６へのデータ転送の際に、デバッグ用バスＤＢ−ＢＵＳにおけるアドレスバス１０２及びバスサイクルの数をモニタすることで可能とされる。
【００８４】
図７には、ＥＥＰＲＯＭレジスタ書き込みチェック項目が示される。
【００８５】
ＥＥＰＲＯＭレジスタ書き込みチェックは、ＥＥＰＲＯＭレジスタチェック回路９１５によって行われる。ＥＥＰＲＯＭレジスタ書き込みチェック項目には、転送先の先頭アドレスのチェックを行う先頭アドレスチェック（Ａ）、転送サイズがページ単位であるかチェックする転送サイズチェック（Ｂ）、ＲＡＭエリアからＥＥＰＲＯＭエリアに転送されていることをチェックする転送エリアチェック（Ｃ）、プロテクトエリアをプロテクトしているか否かをチェックするプロテクトエリアチェック（Ｄ）が含まれる。ブロック転送動作により、実施するチェック項が異なる。例えば図８に示されるように、書き換えの場合、先頭アドレスチェック（Ａ）、転送サイズチェック（Ｂ）、転送エリアチェック（Ｃ）が行われ、消去と重ね書きの場合、転送エリアチェック（Ｃ）が行われ、プロテクト時には、先頭アドレスチェック（Ａ）、転送エリアチェック（Ｃ）、プロテクトエリアチェック（Ｄ）が行われる。
【００８６】
図９には、ＥＥＰＲＯＭレジスタ書き込みチェックにおける主要シーケンスが示される。
【００８７】
ブロック転送動作は、ＥＥＰＭＯＶレジスタチェック回路９１５への情報設定によって決定される。例えばＣＰＵコア８０３によってＥＥＰＭＯＶ信号がローレベルにアサートされることでＥＥＰＲＯＭレジスタ書き込みチェックが開始され、ＣＰＵコア８０３によってＥＥＰＷＲ信号がローレベルにアサートされることでＥＥＰＲＯＭレジスタ書き込みチェックが終了される。リード同期信号ＡＳＥＲＤに同期して転送元からデータが読み出され、ライト同期信号ＡＳＥＷＲに同期して、上記データが転送先に書き込まれる。ここで、転送元はＲＡＭエリア８１５であり、転送先はＥＥＰＲＯＭ書込みデータ一時退避エリア９１６である。また、リード同期信号ＡＳＥＲＤ及びライト同期信号ＡＳＥＷＲは、ＣＰＵコア８０３によって形成される。ＥＥＰＲＯＭレジスタチェック回路９１５によってエラーが検出された場合、ブレーク信号がアサートされることによって、ユーザプログラムの実行を停止することができる。また、ＥＥＰＲＯＭレジスタチェック回路９１５によってエラーが検出された場合でも、ブレーク信号がアサートされないように設定することができる。このような設定は、ＥＥＰＲＯＭレジスタチェック回路９１５内の所定レジスタに対して行うことができる。
【００８８】
（４）次に、デバッグ変更機能について説明する。
【００８９】
デバッグ変更機能の例として、周波数検出器８２０の検出周波数の設定変更を挙げることができる。周波数検出器８２０は、高周波数検出器ＨＦＤ及び低周波数検出器ＬＦＤを含む。高周波数検出器ＨＦＤは、選択回路８１７を介してＣＰＵコア８０３に供給されるクロック信号の上限値を設定可能な上限値設定レジスタを含む。選択回路８１７を介してＣＰＵコア８０３に供給されるクロック信号の周波数が、上限値設定レジスタに設定された上限値を超えた場合に、上記高周波数検出器ＨＦＤは、上記ＣＰＵコア８０３に供給されるリセット信号がアサートされる。また、低周波数検出器ＬＦＤは、選択回路８１７を介してＣＰＵコア８０３に供給されるクロック信号の下限値を設定可能な下限値設定レジスタを含む。選択回路８１７を介してＣＰＵコア８０３に供給されるクロック信号の周波数が、下限値設定レジスタに設定された下限値未満になった場合に低周波数検出器ＬＦＤは、上記ＣＰＵコア８０３に供給されるリセット信号をアサートする。上記下限値設定レジスタ及び下限値設定レジスタは、エミュレーションプログラムの実行により任意に変更可能とされる。
【００９０】
図１０には、デバッグ変更機能の一例として、周波数検出器８２０の検出周波数の設定変更が行われる場合のデバッグシーケンスが示される。周波数検出器８２０の検出周波数の設定変更は、ブレーク命令の実行により、ユーザプログラムが停止されている状態で行われる。そして、ＧＯ命令の実行により、エミュレーションプログラムが実行された状態でＣＰＵコア８０３へ入力されるクロック信号の周波数が、上限値設定レジスタ及び下限値設定レジスタの設定情報によって決定される周波数範囲の規定外になった場合、高周波数検出器ＨＦＤ又は低周波数検出器ＬＦＤによってＣＰＵコア８０３がリセットされる。
【００９１】
上記実施の形態によれば、以下の作用効果を得ることができる。
【００９２】
（１）擬似エラー発生機能を有することにより、ＣＰＵコア８０３の状態が指定した状態と一致したときに、指定したエラーを擬似的に発生させることができる。例えばＣＰＵ用ＦＰＧＡ８０内にイベントを検出するためのイベント検出回路８１９が設けられ、デバッグ用ＦＰＧＡ９０内に、どのようなエラーを起こさせるかを設定可能なエラー発生回路９１３が設けられている。上記イベント一致信号がアサートされた場合、エラー発生回路９１３により、ＣＰＵコア８０３に対するリセット信号や、ユーザプログラムの実行を停止するためのブレーク信号をアサートすることができる。エラー発生回路９１３は、ユーザシステム１０に搭載される実チップにおける光ディテクタ及び他のエラー検出回路に対応するものであり、実際には光ディテクタ回路が存在しないにもかかわらず、擬似エラー発生により、必要なデバッグの実施が可能になる。また、イベント一致信号がアサートされた場合にＣＰＵコア８０３がリセットされるようになっているが、イベント一致信号がアサートされた場合にユーザプログラムの実行を停止するためのブレーク信号がアサートされるように変更することができる。この変更は、エラー発生回路９１３内のレジスタ設定により可能とされる。
【００９３】
（２）チップばらつきエミュレーション機能の一例とされるＲＮＧ乱数生成機能を使用したデバッグを行うことができる。例えば乱数データを生成する速度は、ユーザシステム１０に搭載される実チップにより、ばらつきがあるため、そのばらつきを考慮して、ユーザプログラムをデバッグする必要がある。ＣＰＵ用ＦＰＧＡ８０上に、乱数データを生成する時間を設定できる乱数生成時間設定レジスタ８１２を設け、上記乱数生成時間設定レジスタ８１２を用いて、ＲＮＧ乱数生成時間を例えば標準値（Ｔｙｐ値）や最大値（Ｍａｘ値）に設定する。設定変更は、エミュレーションプログラムが実行されているデバッグ状態において行われる。ＲＮＧ乱数生成時間が標準値（Ｔｙｐ値）の場合と、最大値（Ｍａｘ値）の場合との違いを把握することができるので、実チップの乱数データを生成する速度のばらつきエミュレーションが可能になる。
【００９４】
また、チップばらつきエミュレーション機能の一例とされる内部発振器を使用するデバッグによれば、内部発振器の発振周波数の特性ばらつきについてのデバッグを行うことができる。
【００９５】
ＯＳＣ設定レジスタ８１８には、内部クロック信号の周波数情報が設定される。ＯＳＣ設定レジスタ８１８に設定された周波数情報は、専用線によりデバッグ用ＦＰＧＡ９０内のデコーダ９１２に伝達され、ここでデコードされ、そのデコード出力によって、周波数設定レジスタ９１１に設定される。ＰＬＬ５０１では、上記周波数設定レジスタ９１１の１６ビット出力に応じて発振周波数が決定される。ＰＬＬ５０１の出力信号は、内部クロック信号として、選択回路８１７を介してＣＰＵコア８０３に供給される。ＣＰＵコア８０３がエミュレーションプログラムを実行することで、ＣＰＵコア８０３の内部クロック信号の周波数を変更することができる。例えば内部クロック信号の周波数が最小値（Ｍｉｎ値）と最大値（Ｍａｘ値）の場合の違いを把握することができ、それにより内部発振器の発振周波数の特性ばらつきについてのデバッグを行うことができる。
【００９６】
（３）リアルタイムチェック機能の一例とされるＲＡＭ二重化チェック機能によれば、ＲＡＭ二重化チェックを行うことができる。ＣＰＵ用ＦＰＧＡ８０内に、ＲＡＭエリア８１５とＲＡＭ二重化制御回路８１６とが形成され、デバッグ用ＦＰＧＡ９０内にＲＡＭ二重化チェック回路９１４が形成され、上記ＲＡＭエリア８１５に対してライトせずにリードを行った場合をＲＡＭ二重化チェック回路９１４でチェックし、ＲＡＭエラー発生信号ＲＡＭＥＲＲをローレベルにアサートするようにしている。ＲＡＭ二重化制御回路８１６は、ＲＡＭ二重化イネーブル信号ＲＡＭＭＥを形成する。このＲＡＭ二重化イネーブル信号ＲＡＭＭＥがハイレベルにアサートされることによってＲＡＭ二重化チェック回路９１４がイネーブル状態にされ、ＲＡＭ二重化チェックが可能とされる。
【００９７】
また、リアルタイムチェック機能の一例とされるＥＥＰＲＯＭレジスタ書き込みチェック機能によれば、ＥＥＰＲＯＭへの書き込み命令であるブロック転送命令のパラメータに不正値が書き込まれたとき、それをエラーとして検出することができる。このエラー検出は、ＲＡＭエリア８１５からＥＥＰＲＯＭ書込みデータ一時退避エリア９１６へのデータ転送の際に、デバッグ用バスＤＢ−ＢＵＳにおけるアドレスバス１０２及びバスサイクルの数をモニタすることで可能とされる。ＥＥＰＲＯＭレジスタチェック回路９１５によってエラーが検出された場合、ブレーク信号がアサートされることによって、ユーザプログラムの実行を停止することができる。また、ＥＥＰＲＯＭレジスタチェック回路９１５によってエラーが検出された場合でも、ブレーク信号がアサートされないように設定することができる。
【００９８】
（４）デバッグ変更機能の一例として、周波数検出器８２０の検出周波数の設定変更が挙げられる。この設定変更機能によれば、周波数検出器８２０における上限値設定レジスタや下限値設定レジスタの設定をエミュレーションプログラムの実行により任意に変更可能とされる。これにより、ＣＰＵコア８０３に供給されるクロック信号の異常検出周波数が変更されるような展開ＣＰＵをサポートすることができる。
【００９９】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１００】
例えば、図１１に示されるように、ＣＰＵ用論理、デバッグ用論理、制御用ＣＰＵ用論理を、一つのＦＰＧＡ１１０で形成し、ＣＰＵ用論理と制御用ＣＰＵ用論理との間で協調動作させるようにしても良い。上記ＣＰＵ用論理、デバッグ用論理、制御用ＣＰＵ用論理は、それぞれ図１や図２におけるＣＰＵ用ＦＰＧＡ８０、デバッグ用ＦＰＧＡ９０、制御用ＣＰＵ６０に対応する。このようにしても、上記実施の形態の場合と同様の作用効果を得ることができる。
【０１０１】
また、図１や図２では、ＣＰＵ用ＦＰＧＡ８０が一つの場合について説明したが、複数のＣＰＵを搭載するユーザシステムに対応するエミュレータとしては、例えば図１２に示されるように、複数のＣＰＵ用ＦＰＧＡ８０Ａ，８０Ｂ，８０Ｃ，８０Ｄを搭載し、この複数のＣＰＵ用ＦＰＧＡ８０Ａ，８０Ｂ，８０Ｃ，８０Ｄと、デバッグ用ＦＰＧＡ９０との間で協調動作させるようにすると良い。
【０１０２】
尚、デバッグ用ＦＰＧＡ９０を複数のＦＰＧＡによって形成するようにしても良い。
【符号の説明】
【０１０３】
１０  ユーザシステム
２０  パーソナルコンピュータ
３０  エミュレータ
４０  ユーザインタフェース
５０  ＣＰＵ周辺回路
６０  制御用ＣＰＵ
７０  パーソナルコンピュータインタフェース
８０  ＣＰＵ用ＦＰＧＡ
９０  デバッグ用ＦＰＧＡ
１０１  デバッグ用データバス
１０２  デバッグ用アドレスバス
１０３  制御用データバス
１０４  制御用アドレスバス
８０１  デバッグ用ＲＡＭ
８０２  論理部
８０３  ＣＰＵコア
８０４  デバッグ機能
８０５  内部論理
８０６  復号機能
８１１  ステータスレジスタ
８１２  乱数生成時間設定レジスタ
８１３  暗号化モジュール
８１４  ＲＮＧ乱数生成機能
８１５  ＲＡＭエリア
８１６  ＲＡＭ二重化回路
８１７  選択回路
８１８  ＯＳＣ設定レジスタ
８１９  イベント検出回路
８２０  周波数検出器
９０１  デバッグ実現ブロック
９０２  ＦＰＧＡコンフィグレーション
９０３  制御回路
９０４  モニタレジスタ
９１１  周波数設定レジスタ
９１２  デコーダ
９１３  エラー発生回路
９１４  ＲＡＭ二重化チェック回路
９１５  ＥＥＰＭＯＶレジスタチェック回路
９１６  ＥＥＰＲＯＭ書込みデータ一時退避エリア
Ｃ−ＢＵＳ  制御用バス
ＤＢ−ＢＵＳ  デバッグ用バス
ＨＦＤ  高周波数検出器
ＬＦＤ  低周波数検出器
【図１】
2010231607.tif 000003
【図２】
2010231607.tif 000004
【図３】
2010231607.tif 000005
【図４】
2010231607.tif 000006
【図５】
2010231607.tif 000007
【図６】
2010231607.tif 000008
【図７】
2010231607.tif 000009
【図８】
2010231607.tif 000010
【図９】
2010231607.tif 000011
【図１０】
2010231607.tif 000012
【図１１】
2010231607.tif 000013
【図１２】
2010231607.tif 000014