(57)【要約】  非同期マイクロコントローラ内蔵型のターゲット装置集積回路は標準的なＪＴＡＧ−ＴＡＰインターフェイスが取り付けられる。ＩＣに搭載されたＴＡＰポートコントローラとエミュレーションインターフェイスは、コードメモリからフェッチされるあらゆる命令を横取りし、置き換えることが可能である。外部エミュレーションＰＣは、内蔵非同期マイクロコントローラにオンボードデータ及びコードメモリを読み、それらをＪＴＡＧ−ＴＡＰインターフェイスへ書き込むように指示することによってオンボードデータ及びコードメモリを検査する能力を備えている。シングルステップレジスタとブレークポイントレジスタは外部エミュレーションＰＣによるデバッグ及びテストのため設けられる。
2008507025.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアエミュレーションツール、ユーザインターフェイス、及び、ＪＴＡＧコネクタを伴う外部コンピュータと、
前記ＪＴＡＧコネクタと接続するＪＴＡＧテストアクセスポート（ＴＡＰ）、及び、前記ソフトウェアエミュレーションツールとの通信をサポートし集積回路ターゲット装置内に配置されたＪＴＡＧ  ＴＡＰコントローラと、
プライベートコードメモリ及びデータメモリを有し、前記集積回路ターゲット装置に配置された非同期マイクロコントローラと、
前記集積回路ターゲット装置に配置され、前記ＪＴＡＧ  ＴＡＰコントローラと前記非同期マイクロコントローラとの間に接続されたエミュレーションインターフェイスと、
前記エミュレーションインターフェイスに配置され、前記非同期マイクロコントローラから利用され前記非同期マイクロコントローラを制御するデータ、プログラム命令、プログラムカウンタ、ブレークポイント、及び、エミュレーションコンフィギュレーションに関するリード／ライトアクセスを前記ソフトウェアエミュレーションツールに提供するエミュレーションレジスタの組と
を備えている、集積回路テスト用のエミュレーション及びデバッグシステム。
【請求項２】
前記エミュレーションインターフェイスに配置され、前記エミュレーションレジスタの組に含まれる命令レジスタ又は前記コードメモリの何れかからのプログラム命令を選択するため前記ソフトウェアエミュレーションツールによって制御されるマルチプレクサをさらに備えている、請求項１に記載のシステム。
【請求項３】
前記エミュレーションインターフェイスに配置され、新しいプログラム命令フェッチのそれぞれの先頭で命令が前記ソフトウェアエミュレーションツールによって供給された命令で置き換えられるように前記非同期マイクロコントローラと相互接続されたエミュレーションコントローラをさらに備えている、請求項１に記載のシステム。
【請求項４】
前記エミュレーションコントローラと関連付けられ、前記エミュレーションインターフェイスに配置され、前記ソフトウェアエミュレーションツールによって供給されたプログラムの実行を停止状態にするため前記非同期マイクロコントローラの各エミュレーションサイクル中に検査されるブレークポイントレジスタをさらに備えている、請求項３に記載のシステム。
【請求項５】
前記ＪＴＡＧ  ＴＡＰが、
前記ＪＴＡＧ−ＴＡＰコントローラ内の内部状態マシンの動作を同期させるＴＣＫ／クロックピンと、
前記状態マシンの次の状態を判定するためＴＣＫの立ち上がりエッジでサンプルされるＴＭＳ／モード選択ピンと、
ＴＣＫの立ち上がりエッジでサンプルされ、前記内部状態マシンが正しい状態であるときにプログラミングロジックへシフトインされるＴＤＩ／データインピンと、
シフトアウトされたデータを表し、ＴＣＫの立ち下がりエッジで有効であるＴＤＯ／データアウトピンと、
前記内部状態マシンをリセットするＴＲＳＴ／リセットピンと
を含む、請求項１に記載のシステム。
【請求項６】
ソフトウェアエミュレーションツールをホスティングする外部コンピュータと接続するＪＴＡＧテストアクセスポート（ＴＡＰ）と、
前記ＪＴＡＧ−ＴＡＰに接続され、前記ソフトウェアエミュレーションツールとの通信をサポートするＪＴＡＧ  ＴＡＰコントローラと、
プライベートコードメモリ及びデータメモリを有する非同期マイクロコントローラと、
前記ＪＴＡＧ  ＴＡＰコントローラと前記非同期マイクロコントローラとの間に接続されたエミュレーションインターフェイスと、
前記エミュレーションインターフェイスに配置され、前記非同期マイクロコントローラから利用され前記非同期マイクロコントローラを制御するデータ、プログラム命令、プログラムカウンタ、ブレークポイント、及び、エミュレーションコンフィギュレーションに関するリード／ライトアクセスを前記ソフトウェアエミュレーションツールに提供するエミュレーションレジスタの組と
を単一の集積回路内に備えている、集積回路ターゲット装置。
【請求項７】
前記エミュレーションインターフェイスに配置され、前記エミュレーションレジスタの組に含まれる命令レジスタ又は前記コードメモリの何れかからのプログラム命令を選択するため前記ソフトウェアエミュレーションツールによって制御されるマルチプレクサをさらに備えている、請求項６に記載の装置。
【請求項８】
前記エミュレーションインターフェイスに配置され、新しいプログラム命令フェッチのそれぞれの先頭で命令が前記ソフトウェアエミュレーションツールによって供給された命令で置き換えられるように前記非同期マイクロコントローラと相互接続されたエミュレーションコントローラをさらに備えている、請求項６に記載の装置。
【請求項９】
前記エミュレーションコントローラと関連付けられ、前記エミュレーションインターフェイスに配置され、前記ソフトウェアエミュレーションツールによって供給されたプログラムの実行を停止状態にするため前記非同期マイクロコントローラの各エミュレーションサイクル中に検査されるブレークポイントレジスタをさらに備えている、請求項８に記載の装置。
【請求項１０】
前記ＪＴＡＧ  ＴＡＰが、
前記ＪＴＡＧ−ＴＡＰコントローラ内の内部状態マシンの動作を同期させるＴＣＫ／クロックピンと、
前記状態マシンの次の状態を判定するためＴＣＫの立ち上がりエッジでサンプルされるＴＭＳ／モード選択ピンと、
ＴＣＫの立ち上がりエッジでサンプルされ、前記内部状態マシンが正しい状態であるときにプログラミングロジックへシフトインされるＴＤＩ／データインピンと、
シフトアウトされたデータを表し、ＴＣＫの立ち下がりエッジで有効であるＴＤＯ／データアウトピンと、
前記内部状態マシンをリセットするＴＲＳＴ／リセットピンと
を含む、請求項６に記載の装置。
【請求項１１】
外部ユーザコンピュータからターゲット装置をエミュレーションする方法であって、
前記外部ユーザコンピュータ上で動くソフトウェアエミュレーションツールによってＪＴＡＧテストアクセスポートを介してエミュレーションインターフェイスに供給されたデータ、プログラム命令、プログラムカウンタ、ブレークポイント、及び、エミュレーションコンフィギュレーションをダウンロードするステップと、
前記エミュレーションインターフェイスにも接続された非同期マイクロコントローラを用いて新しい命令をフェッチするステップと、
エミュレーションモードがオフであるならば、前記非同期マイクロコントローラを用いて前記命令を実行し、その後にフェッチするステップへ戻るステップと、
さもなければ、前記ソフトウェアエミュレーションツールによって供給され、前記エミュレーションインターフェイス内のエミュレーションレジスタに格納された命令を実行し、その後にフェッチするステップへ戻るステップと
を備えている方法。
【請求項１２】
前記エミュレーションモードがオンであるならば、プログラムカウンタを前記エミュレーションインターフェイス内に格納されたブレークポイントとテストし、もし一致が見つかるならば、実行を停止するステップをさらに備えている、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータプログラムエミュレーションとデバッグに係わり、特に標準的なジョイントテストアクショングループ（ＪＴＡＧ）のテストアクセスポート（ＴＡＰ）を用いて内蔵型非同期マイクロコントローラとデジタル的にインターフェイスをとる回路と方法に関する。
【背景技術】
【０００２】
装置にプロセッサを組み込むコンピュータ回路設計は、困難なテスト、エミュレーション、及び、デバッグの問題を引き起こす。このような組み込みシステムは、典型的に、プログラマ、アセンブラ、又は、書き込み可能なプログラムメモリとインターフェイスをとる機能がない。したがって、テストエンジニアと開発エンジニアは、通常、設計通りにターゲットシステムへ直接アクセスできない。
【０００３】
インサーキットエミュレーション（ＩＣＥ）はこのジレンマを解決するため導入された。ホストプログラム開発システムはアンビリカルケーブルの端に専用のプロセッサが取り付けられている。パーソナルコンピュータ（ＰＣ）はこの目的のためのアダプターポッドが取り付けられ得る。このようなケーブルは次にターゲット組み込みシステムのプロセッサソケットに差し込まれる。ＩＣＥ開発システムの入力／出力（Ｉ／Ｏ）、メモリ、アセンブラ、コンパイラ、及び、グラフィカルユーザインターフェイスは、すべてがその時点でエンジニアが利用可能であるので、プログラムは実際のターゲットハードウェアでテストされ得る。ターゲットシステム内のＩ／Ｏ、プログラムメモリ、データメモリ、ＣＰＵレジスタ、及び、周辺機器のすべてがホスト開発システムによってアクセス可能であり、修正可能である。
【０００４】
ＩＣＥの重要なリソースは、したがって、ターゲットアクセス、特に、レジスタとメモリの内容を調べ、変更する能力である。ブレークポイントは、あるイベントが発生したときにプログラム実行を停止させることが可能であり、もう一つの重要なデバッグリソースである。定められた場所及び条件でプログラム実行を停止できることは、プログラムがどのようにしてその状態に達したか、及び、プログラムがターゲットシステムにどのような影響を与えたかについての完全な解析を可能にする。エミュレータは、エンジニアが同時に１命令ずつターゲットプログラムを実行することを可能にするシングルステップを実施するためブレークポイントも使用する。
【０００５】
ＩＣＥ開発システムとそれらのサポート機器及びソフトウェアは高価である。それらはさらにターゲット組み込みシステム毎に使用されるプロセッサに高度に専用化され、アダプターと専用のソフトウェアがタイプ毎に購入されなければならない。その上、専用オンチップロジックが外部エミュレータとインターフェイスをとるため必要とされる。通常、それは、エミュレータ会社又は組み込みマイクロプロセッサの供給業者のいずれかによって供給されたＩＰである。このような余分なコストがＩＣ開発経費予算に加わる。
【０００６】
エミュレータは、コンピュータ回路基板のプロセッサ、メモリ、又は、バスインターフェイスを制御しテストするために使用される。制御状態になると、エミュレータは、ターゲットハードウェアとソフトウェアをデバッグするため診断テストをロードし実行する。高密度基板上のテストアクセスはプロセッサエミュレータにとって問題ないが、実際のプロセッサはその置き換えを可能にするようにソケット化されなければならない。エミュレータは基板開発において広範囲に使用されたが、増大するプロセッサ速度は今やエミュレータを非実用的にした。
【表１】
2008507025.tif 000003
【０００７】
ＲＯＭメモリエミュレータは、ブートＲＯＭを置き換えるためソケットにつながり、プロセッサのノーマルブートコードのための診断プログラムコードを挿入する。このようなソケットインターフェイスは双方向であり、テスト対象ユニット（ＵＵＴ）はテスターと通信可能である。しかし、ＲＯＭエミュレータは、ＲＯＭ領域を立ち上げるプロセッサを診断できない。もしＲＯＭが半田付けされているならば、製品設計回路修正を行う必要がある。
【０００８】
バスエミュレータは、バススロット又はエッジコネクタに接続され、リード／ライトバスサイクルによってＵＵＴの種々の回路及び機能へのテストアクセスを行う。バスエミュレータは、ＶＭＥ及びＰＣＩのようなプラグインバスカードをテストするために役立つ。
【０００９】
ジョイントテストアクショングループ（ＪＴＡＧ）インターフェイスは、当初は、小型コンポーネント上のテストアクセス問題を解決するために設計された。規定されたシリアルインターフェイスはテストアクセスポート（ＴＡＰ）として知られている。テストアクセスポートは、各コンポーネントのＩ／Ｏピンに組み込まれたデイジーチェインシフトレジスタにアクセスするため５本のデータピン及びタイミングピンを使用する。これは、ＪＴＡＧに準拠したコンポーネントのチェーンがエラーを見つけるためバウンダリスキャンされることを可能にする。
【００１０】
ＪＴＡＧプロトコルは、ハードウェアとソフトウェアの開発者にオンボードでバッグ機能を提供するためマイクロプロセッサとデジタル信号プロセッサ（ＤＳＰ）の製造業者によって拡張されている。このような支援は、外部エミュレータが直面する典型的な３０ＭＨｚの速度の障壁を解決する。ベンダー固有のＪＴＡＧの拡張は、典型的に、２〜３本の付加的な信号線と、プロセッサコアを制御する強化された命令セットとを有する。デバッグインターフェイスを可能にする市販されているＣＰＵには、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）プロセッサ、Ｉｎｔｅｌ  ＸＳｃａｌｅ（トレードマーク）マイクロアーキテクチャプロセッサ、Ｍｏｔｏｒｏｌａ（トレードマーク）、ＩＢＭ（登録商標）ＰｏｗｅｒＰＣ（トレードマーク）、ＡＭＤ（登録商標）、ＭＩＰＳ（登録商標）、及び、ＡＲＭ（登録商標）のプロセッサファミリーが含まれる。ＩＥＥＥもまた、デバッグインターフェイスのためのＩＥＥＥ  ＩＳＴＯ−５００１を発行している。
【００１１】
デバッグインターフェイスは、たとえば、Ｍｏｔｏｒｏｌａのバッググラウンドデバッグモード（ＢＤＭ）、ＡＭＤのハードウェアデバッグツール（ＨＤＴ）、及び、Ｍｏｔｏｒｏｌａ／ＩＢＭのコモンオンチッププロセッサ（ＣＯＰ）などの種々のトレードマーク名が与えられている。ＢＤＭインターフェイスはＪＴＡＧと類似しているが、信号線とプロトコルが異なる。
【００１２】
このようなインターフェイスは、当初、設計エンジニアのため開発されたが、機能的なテストソリューションも実施された。プロセッサのデバッグインターフェイスを使用するため設計されたテスト及び診断機器はＵＵＴ上に６〜１０本のテストピンしか必要としない。このようなアクセスは、ＣＰＵ１１６とソケットとの間にインターポーザーを取り付けることにより、ＣＰＵが半田付けされるときに非常に簡単なネイルベッドを用いることにより、又は、一部の基板製造業者によって提供されるＪＴＡＧブレークアウトヘッダを利用することにより殆どの基板設計において実現可能である。
【００１３】
バスアーキテクチャＵＵＴは、ブリッジ、ＲＡＭ、ビデオコントローラ、及び／又は、Ｉ／Ｏコントローラのような機能ブロックに分割される。各機能ブロックはメモリ又はＩ／Ｏレジスタの配列を含む。テストプログラムは、これらのレジスタに順次アクセスするためプロセッサ製造業者によって提供される拡張ＪＴＡＧデバッグ機能を使用し、完全なテストを構築する。
【００１４】
低レベル機能には、プロセッサの開始／停止、メモリのリード／ライト、汎用レジスタのリード／ライト、Ｉ／Ｏのリード／ライト、ブレークポイント、シングルステップコード、及び、コードトレースが含まれる。これらの機能の組み合わせは、ＵＵＴへのテストコードのダウンロードと、テストコード実行の制御及び監視と、ＵＵＴメモリからのテスト結果の収集とを提供する。
【００１５】
たとえば、リード／ライト機能は、ＲＡＭをテスト可能であり、さらに中間バスを検証する。Ｉ／Ｏコントローラは、ネットワークインターフェイスコントローラの場合のように出力を入力へループバックすることにより、又は、基板のコネクタに取り付けられた外部装置を用いて信号を生成／測定することによりテストされる。一部のテストシステムは、実際の周辺装置を取り付ける必要性を回避するＩ／Ｏエミュレーションユニットを含む。
【００１６】
ターゲット装置ＣＰＵが同期型でないならば、費用と複雑さがより増す。専用化されたインターフェイスは非同期式にクロックされる内蔵型プロセッサを取り扱うために必要とされる。
【００１７】
このようなコストすべては、ターゲットシステム製造コストを非常に高くする。製造コストは非常に高く上昇することがあるので、製品が正当な利益を生み出すため必要とされる小売価格で成功する可能性は殆どない。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
必要とされるのは、外部ベンダーのＩＰ又はハードウェアに頼ることなく、エミュレーションとテストのコストを削減する非同期内蔵型プロセッサをデバッグする専用の組み込みアーキテクチャである。
【課題を解決するための手段】
【００１９】
簡潔には、本発明のターゲット装置集積回路の実施形態は、内蔵型非同期マイクロコントローラを備え、標準的なＪＴＡＧ−ＴＡＰインターフェイスが取り付けられている。ＩＣに搭載されたＪＴＡＧ−ＴＡＰポートコントローラとエミュレーションインターフェイスは、コードメモリからフェッチされるすべての命令を横取りし、置き換えることが可能である。外部エミュレーションＰＣは、内蔵型非同期マイクロコントローラにオンボードデータ及びコードメモリを読み、それらをＪＴＡＧ−ＴＡＰインターフェイスへ書き込むように指令することによって、オンボードデータ及びコードメモリを検査する能力を備えている。シングルステップレジスタとブレークポイントレジスタは外部エミュレーションＰＣによるデバッグとテストのため設けられている。
【００２０】
本発明の利点は、組み込み式のエミュレーション及びデバッグ能力を備えた回路が提供されることである。
【００２１】
本発明のさらなる利点は、ブレークポイントを待つ間に、装置性能が妨げられることなく、又は、エミュレーションコードがＰＣと相互作用する最高速度未満で実行される、自走モードでテストされるべきターゲット装置のための方法が提供されることである。
【００２２】
本発明のなおさらなる利点は、費用のかからない、工業規格ＪＴＡＧシリアルインターフェイスを有するシステムが提供されることである。
【００２３】
本発明の上記の目的、構成要件及び利点と、さらなる目的、構成要件及び利点は、特に、添付図面と併せて理解されるとき、以下の本発明の特定の実施形態の詳細な説明を考慮して明らかになるであろう。
【発明を実施するための最良の形態】
【００２４】
図１は本発明のエミュレーションシステムの実施形態を示し、本書では総称的な参照番号１００によって参照される。エミュレーションシステム１００は、標準化された５ピンのＪＴＡＧインターフェイス１０６によってターゲット装置１０４に接続された普通のパーソナルコンピュータ（ＰＣ）１０２を備えている。（１）ＴＣＫ／クロックピンは、内部状態マシン動作を同期させる。（２）ＡＴＭ／モード選択ピンは次の状態を決定するためＴＣＫの立ち上がりエッジでサンプルされる。（３）ＴＤＩ／データインピンは、ＴＣＫの立ち上がりエッジでサンプルされ、内部状態マシンが正しい状態にあるときにターゲット装置１０４のテスト又はプログラミングロジックへシフトインされる。（４）ＴＤＯ／データアウトピンは、ターゲット装置１０４のテスト又はプログラミングロジックからシフトアウトされるデータを表し、内部状態マシンが正しい状態にあるときにＴＣＫの立ち下がりエッジで有効である。そして、（５）ＴＲＳＴ／リセットピンは、ローに駆動されたときに内部状態マシンをリセットする。
【００２５】
ＰＣ１０２に含まれ、ＰＣ１０２上で動作するソフトウェアツールは、エミュレーションハードウェアインターフェイスを介してターゲット装置のエミュレーション挙動を制御可能である。デバッグソフトウェアは、エミュレータソフトウェア環境とインターフェイスをとるため種々の機能を規定するので、ターゲット装置と相互作用可能である。たとえば、ＲＡＭ（ＤＡＴＡ，ＩＤＡＴＡ，ＸＤＡＴＡ）のリード／ライト、特殊機能レジスタ（ＳＦＲ）のリード／ライト、プログラムコードのリード／ライト、初期化、再初期化、ターゲットハードウェアのリセット／ストップ、プログラムカウンタのリード／ライト、レジスタの取得／セット、ＳＴＯＰ、シングルＳＴＥＰ及びターゲット実行のＲＵＮ、及び、ブレークポイントのセット／クリアである。
【００２６】
ターゲット装置１０４は、シングルチップ集積回路（ＩＣ）であり、エミュレーションインターフェイス１１０に接続されたＪＴＡＧテストアクセスポート（ＴＡＰ）コントローラ１０８を含む。コードメモリ１１２からのプログラムコードはエミュレーションインターフェイスからのデバッグコード及びレジスタ情報で置き換えられる。このようなデバッグコード及びその他の制御情報は、ＰＣ１０２からＪＴＡＧ−ＴＡＰ１０６及びＴＡＰコントローラ１０８を介してダウンロードされる。データメモリ１１４は、プライベートバスを介して非同期マイクロコントローラ（ＣＰＵ）１１６に接続される。たとえば、ＣＰＵ１１６は、Ｉｎｔｅｌタイプ８０Ｃ５１マイクロコンピュータでもよい。
【００２７】
エミュレーションインターフェイス１１０は、ＪＴＡＧインターフェイス１１８、コンフィギュレーション（ＥＭＵ＿ＣＦＧ）レジスタ１２０、エミュレーションデータレジスタ（ＥＭＵ＿ＤＲ）１２２、ブレークポイント（ＥＭＵ＿ＢＰ）レジスタ１２４、命令レジスタ（ＥＭＵ＿ＩＲ）１２６、プログラムカウンタ（ＥＭＵ＿ＰＣ）レジスタ１２８、エミュレーション（ＥＭ）コントローラ１３０、及び、エミュレーションコード又はコードメモリ１１２からの通常のプログラムコードの間で切り替えるバスマルチプレクサ１３２を含む。ＥＭＵ＿ＩＲ１２６は、ＥＭＵ外部モードにあるとき、ＣＰＵ１１６によって実行されるべき８ビット命令を収容する。ＥＭＵ＿ＰＣレジスタ１２８は、ストップ又はブレークポイントが発生するとき、コードアドレスの現在の１８ビット値を格納する。それは、プログラムカウンタアドレスへ強制的にジャンプすることによりシステムを復元するためエミュレータによって使用される。ＥＭＵブレークポイントレジスタ１２４は、マイクロコントローラ１１６が実行を中止し停止することをオペレータが望む２個の１８ビット命令アドレスを格納する。
【００２８】
ＥＭＵ＿ＤＲ１２２は、メモリ１１２及び１１４内の８ビットデータのＰＣ１０２による外部検査を提供する。ＥＭＵ外部モードでは、非同期マイクロコントローラ１１６は、メモリ及び内部レジスタからＥＭＵ＿ＤＲレジスタ１２２へデータを移すように命令される。ＥＭＵ＿ＤＲレジスタ１２２は次にＪＴＡＧインターフェイス１１８を介して読み出される。
【００２９】
表１はＥＭＵ＿ＣＦＧレジスタ１２０で使用される９ビットを規定する。
【表２】
2008507025.tif 000004
【００３０】
効果的なハードウェアアルゴリズムがＪＴＡＧ−ＴＡＰ標準インターフェイス１０６を介してＰＣ１０２上で動く外部デバッグプログラムを用いてＣＰＵ１１６を制御するため組み込まれる。このアーキテクチャは、ＣＰＵ１１６の性能を低下させることなく、エミュレーション機能強化システムのすべての利点を実現する。このアーキテクチャは面積当たりの最小コストと設計時間との間の均衡を表す。このようなアプローチは、命令アドレス空間とデータアドレス空間を分離する非同期マイクロプロセッサアプリケーション、たとえば、ハーバードアーキテクチャに十分に適している。このアプローチは、ターゲットマイクロプロセッサがメモリシステムバスマスタであるとき、フォンノイマンアーキテクチャの場合のように、データと命令が一つのアドレス空間を共有するシステムにも適用される。
【００３１】
図２はエミュレータインターフェイスモードプロセスを表し、本書では総称的な参照番号２００によって参照される。エミュレーションはＰＣ１０２によって制御され、ＥＭＵ＿ＣＦＧレジスタ１２０の種々のビットはＰＣ１０２により書き込み可能かつ読み取り可能であり、プロセス２００によって検査され部分的に修正される。表１は、以下でプロセス２００を説明する際に使用されるプログラムビットシンボルを規定する。
【００３２】
プロセス２００は、たとえば、ＣＰＵ１１６によって、命令開始信号及びコードアドレスバスを介して、新しいプログラム命令要求で始まる。ステップ２０２は、ＥＭＵ＿ＯＮフラグ（ＥＭＵ＿ＣＦＧ．１）がセットされているかどうか、すなわち、エミュレーションモードがオンであるかどうかをチェックする。もしそうであるならば、ステップ２０４は、ＤＩＲ  ＆  Ｓｔａｒｔ＿ｉｎｓｔｒフラグ（ＥＭＵ＿ＣＦＧ．５）をチェックする。もし真であるならば、ステップ２０６はコードアドレス（ｃｏｄｅ＿ａｄｄ）をＥＭＵ＿ＰＣレジスタ１２８にコピーし、実際にはＣＰＵ１１６の無条件プログラムジャンプである。ステップ２０８はＣＰＵの割込イネーブルビットを保存する。ステップ２１０は、ＣＰＵ割込とウォッチドッグタイマー（ＷＤＴ）をディスエーブル状態にする。ステップ２１２は、ＩＲ＿Ｖを「０」にセットする。ステップ２１４は、ＩＲ＿Ｖが真になるまでループする。ステップ２１６は、命令レジスタＥＭＵ＿ＩＲを実行のためＣＰＵ１１６へ送信し、次に、ステップ２０２へ戻る。
【００３３】
ステップ２０２によって、ＥＭＵ＿ＯＮは偽であることが得られるならば、ステップ２１８は、コードメモリ１１２からの通常のプログラム命令が通常の実行のためマルチプレクサ１３２を介してＣＰＵ１１６へ向けられることを許可する。換言すると、エミュレーションモードのテストはＣＰＵ１１６のあらゆる命令サイクルで行われる。このことに関連したオーバーヘットは、エミュレーション命令を実行するための決定がハードウェアで実施できるので、伝搬時間の点からは非常に小さい。
【００３４】
ステップ２０４がＤＩＲ  ＆  Ｓｔａｒｔ＿ｉｎｓｔｒフラグは真ではないことを見つけるならば、ステップ２２０は、ＩＥＮ．７を復元し、ＷＤＴをディスエーブル状態にする。ステップ２２２は、シングルステップ（ＳＴＥＰ）が要求されているかどうか（ＥＭＵ＿ＣＦＧ．３）を調べる。もしそうであるならば、ステップ２２４は、次の命令をＣＰＵ１１６へ送信する。ディレクションは偽にセットされ、ステップは偽にセットされ、たとえば、ＤＩＲ＝０（ＥＭＵ＿ＣＦＧ．８）かつＳＴＥＰ＝０（ＥＭＵ＿ＣＦＧ．３）である。制御はステップ２０２へ戻る。
【００３５】
ステップ２２２が偽であるならば、たとえば、ＳＴＥＰ＝０であるならば、ステップ２２８は、ブレークポイントが一致するかどうか、たとえば、第１のブレークポイントＢＰ１（ＥＭＵ＿ＣＦＧ．６）及び第２のブレークポイントＢＰ２（ＥＭＵ＿ＣＦＧ．７）を検査する。ブレークポイントが一致するならば、ステップ２３０はディレクションを真にセットし、ブレークポイント値を真にセットし、たとえば、ＤＩＲ＝１かつＢＰＶ＝１である。制御はステップ２０２へ戻る。
【００３６】
ステップ２２８が偽であるならば、たとえば、ブレークポイントではないならば、ステップ２３２は、ストップ命令とスタート命令（ＥＭＵ＿ＣＦＧ．９）を検査する。もし「ＹＥＳ」であるならば、ステップ２３６はディレクションを真にセットし、ストップ値は真にセットされ、たとえば、ＤＩＲ＝１かつＳＴＯＰＶ＝１である。もし「ＮＯ」であるならば、１バイトがステップ２３４でＣＰＵ１１６へ送信される。制御はステップ２０２へ戻る。
【００３７】
本発明の実施形態では、リアルタイムでバッグが必要とされていないとき、エミュレーションのために設けられるＩＣパッドの個数を削減することが可能であり、これらのパッドはあまり高価ではないシリアルインターフェイスを使用できることが認められる。標準的なＪＴＡＧテストアクセスポートは、テスト目的のため多数の最新ＩＣ装置に既に存在し、典型的に、シリコン面積、パッケージ、設計の点に関して既存の設計にさらなるコストを追加しない。ＰＣ１０２上で動くソフトウェアは、ＪＴＡＧインターフェイスを介してエミュレーションインターフェイス内のレジスタを制御でき、レジスタビットはＣＰＵ１１６との様々な相互作用を制御するためハードウェアによって使用される。
【００３８】
初期化（ＩＮＩＴ）、再初期化（ＲＥ−ＩＮＩＴ）、及び、ターゲットリセット機能は、ハードウェアターゲットを初期化又は完成させることが必要であるときにＰＣ１０２上のソフトウェアツールによって呼び出される。このようなルーチンは、ＰＣとＪＴＡＧのインターフェイスの初期化、ならびに、エミュレーションインターフェイス１１０のコンフィギュレーションレジスタの初期化を含む。ＥＭＵ＿ｒｅｓｅｔコマンドは、ＥＭＵ＿ＣＦＧ．ＮＲＳＴビットに「０」を書き込む。これはＪＴＡＧコントローラ１０８とエミュレーションインターフェイス１１０を除くチップ全体を強制的にリセットする。ＥＭＵ＿ＣＦＧ．ＮＲＳＴビットに「１」を再書き込みする前に、種々のその他のビットは、ＥＭＵリセット後にＣＰＵ１１６を制御するためセットされなければならない。たとえば、コードバスのＥＭＵ＿ＨＷ制御をイネーブル状態にするため、ＥＭＵ＿ＣＦＧ．ＥＭＵ＿ＯＮ＝１であり、ＪＴＡＧからのコード発行をセットするためＥＭＵ＿ＣＦＧ．ＤＩＲ＝１である。
【００３９】
ＲＵＮ、ＳＴＯＰ及びＳＴＥＰエミュレーション制御が組み込まれる。リセットフラグ（ＮＲＳＴ）に再び「１」が書き込まれ、内部チップリセットシーケンスが完了すると直ぐにＥＭＵフリーズモードに入り、ＣＰＵ１１６は再び起動を開始しようとする。しかし、エミュレーションインターフェイス１１０は、ＥＭＵ  ＯＮとＤＩＲビットが「１」に一致することを見つけると、命令アドレスＯｘ００００でＣＰＵ１１６をフリーズさせ、ちょうどフェッチフェーズの間に、ＥＭＵフリーズモードに入る。このフェーズでは、エミュレーションインターフェイス１１０のレジスタを再構成し、ブレークポイントアドレス又は外部命令を定めることが可能である。現在の命令が実行された後に、命令のディレクションを修正することも可能である。ＤＩＲビットはエミュレーションインターフェイス１１０によって現在の動作毎に読み取られ、次の新しい命令の先頭で再び処理される。
【００４０】
ＰＣ１０２上のエミュレーションソフトウェアがＣＰＵ１１６を動かし、ＥＭＵ＿ＣＦＧ．ＩＲ＿Ｖビットに「１」を書き込むときに、ＥＭＵ外部モードに入る。このようにして、ＣＰＵ１１６へ送られて実行される命令レジスタ１２６の内容を有効にする（ＥＭＵ内部モード）。
【００４１】
ＣＰＵ１１６によって要求された新しい命令毎にその先頭で、エミュレーションインターフェイス１１０は、ＥＭＵ＿ＣＦＧレジスタ１２０内のＥＭＵ−ＯＮビット及びＤＩＲビットをチェックする。ＤＩＲビットが１のままであるならば、エミュレーションインターフェイス１１０は、命令レジスタを無効にするためＤＲ＿Ｖビットを自動的にリセットし、ＥＭＵフリーズモードに入る。
【００４２】
このハンドシェイクメカニズムを用いて、外部エミュレータはその動作をターゲット装置１０４内のイベントと同期させる。ステップ２１２において、ＩＲ＿Ｖビットが「０」になるまでＩＲ＿Ｖビットをポーリングして、エミュレーションＰＣ１０２は、ＣＰＵ１１６がフリーズされたときを知る。ＩＲ＿Ｖに「１」をセットすると、ＣＰＵ１１６はＥＭＵ＿ＩＲレジスタ１２６を介して現在の命令を取得する。
【００４３】
ＥＭＵ外部モード中に割込状態に入ることを防止するため、エミュレーションインターフェイス１１０は、すべての割込を一時的にディスエーブル状態にし、関連した割込コントローラ内のグローバル割込イネーブルビットをリセットする。同様に、ウォッチドッグタイマーは、ＣＰＵ１１６がエミュレーションモードである間、休止状態にされる。
【００４４】
グローバル割込イネーブルビットの元の値はＥＭＵ＿ＣＦＧ．ＩＥビットに保存され、ＥＭＵ内部モードに入るたびに割込コントローラ中に復元される。
【００４５】
ＥＭＵ内部モードの間に、新しい命令の先頭でＤＩＲビットが「０」であるならば、ターゲット装置１０４は、ＥＭＵ  ＣＦＧ．ＳＴＥＰビットの値に応じて、ＥＭＵ内部ステップモード又はＥＭＵ内部標準モードのいずれかに入る。
【００４６】
ＥＭＵ内部ステップモードでは、１個の完全な命令だけが内部メモリからＣＰＵ１１６へ供給される。エミュレーションインターフェイス１１０は次にコードアドレスバス値をＥＭＵ−ＰＵレジスタへコピーし、次のサイクルのためのＤＩＲビットに「１」をセットし、グローバル割込イネーブルビットをＥＭＵ  ＣＦＧ．ＩＥへコピーし、ＳＴＥＰビットを０にリセットする。
【００４７】
第２の場合であるＥＭＵ内部標準モードでは、実行は、ＳＴＯＰコマンドが受信されるまで、内部メモリから最高速度で進む。これは、ＥＭＵ  ＣＦＧ．ＳＴＯＰに「１」を書き込むことによって行われるか、又は、ブレークポイントに達するまで行われる。エミュレーションインターフェイス１１０は次にコードアドレスバス値をＥＭＵ−ＰＵレジスタへコピーし、次のサイクルのためのＤＩＲビットに「１」をセットし、グローバル割り込みイネーブルビットをＥＭＵ＿ＣＦＧへコピーし、ＥＭＵ  Ｖ．ＳＴＯＰ  Ｖ（ストップ値ビット）に「１」をセットするか、又は、ＥＭＵ  Ｖ．ＢＰ１  Ｖ／ＢＰ２  Ｖ（ブレークポイントビット）に「１」をセットする。
【００４８】
ＰＣ１０２上のエミュレーションソフトウェアツールは、好ましくは、ＣＰＵ１１６を介してデータ／コードメモリ空間のすべてに間接的なリード／ライトアクセスだけを行う。エミュレーションインターフェイス１１０のコードメモリ１１２及びデータメモリ１１４への直接アクセスは、ＣＰＵ１１６が非同期式であり、おそらくメモリの多重化アクセスがプロセス実行を低速化するので望ましくない。ＣＰＵ１１６がエミュレーション状態にある間に、エミュレーションインターフェイスを介して任意のコードを実行することが可能である。あらゆる種類の内蔵メモリ（ＲＡＭ、フラッシュ及びレジスタ）へのアクセスは、メモリ内容をＪＴＡＧによってアクセス可能なエミュレーションハードウェアレジスタへ移すためルーチンを動かすことにより、データシャトルを行うためにＣＰＵ１１６を使用する。
【００４９】
本発明の特定の実施形態が記載され説明されているが、これによって発明を制限することは意図されていない。修正及び変更はおそらく当業者に明らかになり、発明は特許請求の範囲によってのみ制限されることが意図されている。
【図面の簡単な説明】
【００５０】
【図１】本発明のエミュレーションシステムの実施形態の機能ブロック図である。
【図２】図１のシステムにおいて有用である本発明のエミュレーションインターフェイスモード方法の実施形態のフローチャートである。
【符号の説明】
【００５１】
１００  エミュレーションシステム
１０４  ターゲット装置
１０８  ＴＡＰコントローラ
１１０  エミュレーションインターフェイス
１１２  コードメモリ
１１４  データメモリ
１１６  ＣＰＵ
１１８  ＪＴＡＧインターフェイス
１２０  コンフィギュレーションレジスタ
１２２  エミュレーションデータレジスタ
１２４  ブレークポイントレジスタ
１２６  命令レジスタ
１２８  プログラムカウンタ
１３０  エミュレーションコントローラ
【図１】
2008507025.tif 000005
【図２】
2008507025.tif 000006
【国際調査報告】
2008507025.tif 000007
2008507025.tif 000008
2008507025.tif 000009