(57)【要約】【課題】データ一致および完全／部分的重複によって、多数のサイズのメモリ・アクセスを検出するメモリ・アクセス・アドレス比較器を提供する。【解決手段】メモリ・アクセス・アドレス比較器は、入力メモリ・アクセス・アドレスをそれぞれの基準アドレスと比較する２つの比較器を含む。比較器は、アドレス・サイズ、完全な重複または部分的な重複、超過、未満、同等、不等、以下、および以上というような、選択可能な判断基準によって一致の指示を出し、選択的に連鎖することができる。入力マルチプレクサは、メモリ・アクセス・アドレス・バスの選択を可能にする。比較器出力コントローラは、対応するデータ一致に選択的に応ずることができる。コンフィギュレーション・インターフェース・コントローラにより、中央演算装置は、メモリ・マップ・レジスタを通じて、基準アドレス、比較データおよび制御機能を指定することができる。【選択図】図４
2004178590.tif 000002
【特許請求の範囲】
【請求項１】
メモリ・アクセス・アドレス比較器であって、
第１基準アドレスを格納する第１プログラマブル基準アドレス・レジスタと、
前記第１基準アドレスおよび第１アドレス入力を受け取り、前記第１基準アドレスと前記アドレス入力との間の整合を示す少なくとも１つの第１整合信号を発生する第１アドレス整合マップ作成部と、
前記第１プログラマブル基準アドレス・レジスタからの前記第１基準アドレスと前記第１アドレス入力とを受け取り、前記第１基準アドレスと前記アドレス入力上のアドレスとの関係に応じて、超過出力、未満出力または同等出力を発生する第１比較器と、
第２基準アドレスを格納する第２プログラマブル基準アドレス・レジスタと、
前記第２基準アドレスおよび第２アドレス入力を受け取り、前記第２基準アドレスと前記アドレス入力との間のオフセットを示す少なくとも１つの第２オフセット信号を発生する第２アドレス整合マップ作成部と、
前記第２プログラマブル基準アドレス・レジスタからの前記第２基準アドレスと前記アドレス入力とを受け取り、前記第２基準アドレスと前記アドレス入力上のアドレスとの間の関係に応じて、超過出力、未満出力または同等出力を発生する第２比較器と、
第１および第２アドレス整合マップ作成部のそれぞれならびに第１および第２比較器のそれぞれに接続された第１および第２メモリ・アクセス制御ユニットであって、各々、前記少なくとも１つの整合信号、前記対応する比較器の前記超過出力、前記未満出力および前記同等出力の少なくとも１つに応じて、対応する第１および第２ローカル・イベント信号を選択的に発生し、更に、前記他方のメモリ・アクセス制御ユニットの前記ローカル信号に応じて対応する第１および第２メモリ・アクセス・イベント信号を選択的に発生する、第１および第２メモリ・アクセス制御ユニットとを備え、
前記第１メモリ・アクセス制御ユニットが、前記少なくとも１つの第１整合信号を受け取った場合、前記第１ローカル・イベント信号および前記第１メモリ・アクセス・イベント信号が、前記第１基準アドレスおよび前記アドレス入力間における完全な重複または部分的重複に選択的に応じ、
前記第２メモリ・アクセス制御ユニットが、前記少なくとも１つの第２整合信号を受け取った場合、前記第２ローカル・イベント信号および前記第２メモリ・アクセス・イベント信号が、前記第２基準アドレスおよび前記アドレス入力間における完全な重複または部分的重複に選択的に応ずることを特徴とするメモリ・アクセス・アドレス比較器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に高度集積ディジタル信号処理システムのためのエミュレーション・ハードウエアに関し、特にデータ一致認定（クオリフィケーション）および完全または部分的重複（オーバーラップ）によって、多数のサイズのメモリ・アクセスを検出するアドレス範囲比較器に関する。
【背景技術】
【０００２】
高度なウエハ・リソグラフィおよび表面実装パッケージング技術は、電子的設計のシリコン・レベルおよびプリント回路基板レベル双方において、増々複雑な機能を統合しつつある。しかしながら、設計密度が高まり、相互接続ピッチが狭くなったことの結果、検査やエミュレーションのために回路に物理的にアクセスし難くなった。完成した製品を制御および観察しつつ検査およびデバッグすることができるようにするためには、設計中にも検査可能である（designed-in testability）必要がある。あらゆる製造上の欠陥は、製品を出荷する前の最終検査の間に検出できることが好ましい。この基本的な要望に応ずることは、論理設計フェーズにおいて検査を可能にし、自動検査機器が製品を検査できるように考慮しなければ、複雑な設計では達成が困難である。
【０００３】
機能性および製造上の欠陥についての検査に加えて、アプリケーション・ソフトウエアの開発では、システムまたはサブシステムの設計フェーズにおいても同様のレベルのシミュレーション、観察可能性および制御可能性が必要となる。設計のエミュレーション・フェーズは、最終機器またはアプリケーションがシステム・ソフトウエアとリンクされたときに、１つ以上のＩＣ（集積回路）のシステムがこれらの中で正しく機能することを保証しなければならない。自動車産業、電気通信、防衛システム、生活支援システムにおいてＩＣの使用が増大するに連れて、総合的な検査や広範なリアル・タイム・デバッグは、欠くことができない必要事項となっている。
【０００４】
機能的検査では、設計者が検査ベクトルを発生して仕様に一致することを確認するが、この検査方法は今でも広く用いられ続けている。超大型システムでは、この方法は、高いレベルでの障害検出に用いるには不適当であることがわかっている。完全な検査可能性、制御可能性および観察可能性を得るには、自動的に発生する検査パターンが望ましい。これらは、システム・レベルからトランジスタ・レベルまでの検査階層全体に及ぶ主要な目標である。
【０００５】
大規模な設計における別の問題は、検査のために長時間およびかなりの出費が設計にかかることである。再利用可能設計（design-for-reusability）の概念と調和する検査性回路、システムおよび方法を有することができれば望ましいであろう。このようにすれば、初期デバイスに実装される検査性、シミュレーションおよびエミュレーション回路、システムならびに方法を再利用することによって、その後のデバイスおよびシステムの検査性、シミュレーションおよびエミュレーションのための限界設計コストを低く抑えることができる。検査性、シミュレーションおよびエミュレーションに先取的な計画性がなければ、後に検査パターンの作成およびアップグレードを行う際に、設計時間の著しい延長を招くことになる。
【０００６】
再利用可能なモジュールを設計し、その検査パターンを完全に作成し評価するために多大な投資を行っても、後にモジュールを使用する際に、これを特定用途ロジック内に埋め込んでしまうことがある。こうなると、モジュールにアクセスするのは困難または不可能となる。したがって、この落とし穴を回避することが望ましい。
【０００７】
ＩＣ設計の進展に伴って、内部可視性および制御性の低下、障害対応可能範囲（fault coverage）の減少、状態を変化させる機能の減少、検査の展開および検証に関する問題の増大、設計シミュレーションの複雑化、ＣＡＤ（コンピュータ支援設計）ツールの絶え間ないコスト上昇を招いている。基板の設計では、レジスタの可視性および制御性が低下し、設計検証におけるデバッグおよびシミュレーションが複雑化し、多くの回路を１つのパッケージに封入したために物理的なアクセスが不可能になったことによって従来のエミュレーションができなくなり、基板上の配線の複雑さが高まり、設計ツール、異種素子同士の封入（mixed-mode packaging）、および生産性のための設計コストが上昇するという副作用がある。アプリケーションの設計では、状態の可視性が低下し、高速エミュレーションが難しくなり、時間シミュレーションの調整（scaled time simulation）が必要となり、デバッグ処理の複雑さが高まり、エミュレータのコストが上昇するといった副作用があげられる。生産における副作用には、可視性および制御性の低下、検査ベクトルおよびモデルの複雑化、検査の複雑化、異種素子同士の封入増加、自動検査機器のコスト上昇し、許容度の厳格化等があげられる。
【０００８】
走査に基づくエミュレーションおよびマルチプロセッシング・デバッグを利用したエミュレーション技術が導入されたのは、１０年以上も前のことである。１９８８年、設計サイクル時間に対する圧力、およびオンチップ・エミュレーションに新たに利用可能な空間が動機となって、従来の回路内エミュレーションから走査に基づくエミュレーションに推移した。設計サイクル時間に対する圧力は、３つの要因によって生じた。オンチップ・メモリの使用増大等による集積度の上昇によって、より多くの設計時間が必要となった。クロック・レートの上昇とは、エミュレーション支援ロジックのために電気的な進入が増大したことを意味する。封入処理の一層の精巧化のために、エミュレータの接続性の問題が生じた。今日、これらと同じ要因が、新たな展開を伴って、今日の複雑で、クロック・レートが一層高く、集積度が高い設計に必要なシステム・デバッグ機構を、走査に基づくエミュレータが達成できるための課題となっている。結果的に、システムは、小型化、高速化、および低コスト化する。これらの性能は向上し、フットプリントは増々高密度化している。これら実践的なシステムの傾向の各々が、システム・アクティビティ（system activity）の観察、即ち、迅速なシステム開発を可能にするための秘訣に悪影響を及ぼす。この影響を「可視性の消失（vanishing visubility）」と呼ぶ。
【０００９】
図１は、経時的な可視性および制御、ならびにシステムの高集積化の傾向を示す。アプリケーション開発者は、図１に示す最適可視性レベルを好む。この最適可視性レベルでは、関係するシステム・アクティビティ全ての可視性および制御が得られる。集積度の着実な進歩およびクロック・レートの上昇のために、時の経過と共に実際の可視性および制御の可用性が徐々に低下しつつある。これらの威力によって、可視性および制御のギャップ、最適な可視性および制御レベルと実際に使用可能なレベルとの間の差が生じる。時が経つに連れて、このギャップは広がっていく。アプリケーション開発メーカはギャップ生長レートを最小にすべく努力している。開発ツール・ソフトウエアおよび共に用いるハードウエア構成要素は、より少ないリソースで、しかも多種多様な方法で、より多くのことを行わなければならない。この使いやすさという課題に対する取り組みは、これらの影響力によって一層強化されている。
【００１０】
今日の高集積度システム・オン・チップ（ＳＯＣ：System-On-a-Chip）技術では、可視性および制御のギャップは、時間の経過と共に劇的に拡大しつつある。ロジック・アナライザや組み込み若しくは区分（partitioned）プロトタイプ・システムのような従来からのデバッグ選択肢は、今日のシステムの集積レベルや、増々高まりつつあるクロック・レートに歩調を合わせることはできない。集積度の上昇に伴って、多数のサブシステム構成要素を接続するシステム・バスがチップ上に移動するため、従来のロジック・アナライザはこれらのバスにアクセスできなくなる。バスの可視性の制約または事実上の喪失により、ロジック・アナライザのようなツールを用いても、開発中のシステムを制御するために必要なシステムのアクティビティを視認したり、トリガ機構を設けることができなくなった。この可視性の喪失に伴って、制御が不能となる。何故なら、アクセスできないものを制御することは困難であるからである。
【００１１】
この傾向に対処するために、システム設計者はこれらのバスを表出させるように努めた。このため、システム構成要素は、表出したバスを用いて試作システムの構成が可能となるように組み立てられた。この手法も、システム・クロック・レートの絶え間ない上昇歩調によって阻害される。中央演算装置（ＣＰＵ）のクロック・レートが上昇すると、チップ間のインターフェースの速度はそれについて行けなくなる。チップ間通信レートの遅れを補償するためにインターフェース待機状態が追加されることにより、区分システムの性能は、その集積されている相手と歩調を合わすことができないことを、開発者は突き止めた。ある時点では、この性能低下は許容できないレベルにまで達し、区分プロトタイプ・システムはもはや実用的なデバッグ選択肢ではなくなった。現在では、生産機器は、アプリケーションの開発のためのプラットフォームとして機能しなければならない。
【００１２】
また、ＣＰＵクロック・レートの上昇により、他の単純な可視性機構の可用性も制限される。ＣＰＵクロック・レートは最大Ｉ／Ｏ状態レートを上回ることができるので、ネーティブな形式で（native form）で情報をエクスポートする可視性ポートはもはやＣＰＵについて行くことはできない。また、オンチップ・サブシステムも、ＣＰＵクロック・レートよりは遅いクロック・レートで動作する。この手法は、システムの設計を簡略化し、電力消費を削減するためには用いることができる。これらの開発は、単純な可視性ポートは、もはや、ＣＰＵアクティビティの正しい状態若しくは明確な表示（clear view）を送り出すためには、あてにできないことを意味する。可視性および制御性が低下するに連れて、アプリケーションを開発するために用いられる開発ツールの生産性が低下する。また、これらのツールは、可視性および制御性を維持するために必要なツールの複雑化のために、増々使用が困難になると思われる。システム・オン・チップによって生じた可視性、制御、および使いやすさの問題のために、製品開発サイクルが長引くことが多くなっている。
【００１３】
集積化の傾向が開発者には厳しいデバッグ環境を強いるとしても、これらは、問題をデバッグする新たな手法が出現するという希望も与える。高密度化やクロック・レートの上昇は、開発サイクル時間に対する重圧となるが、これらを解決する機会も生み出す。オンチップ・デバッグ機能は、これまで以上に手頃な価格となった。超大型メモリ構造が増々高速高性能チップ上で拡大するに連れて、ＣＰＵおよびメモリ・サブシステムに伴うランダム・ロジックに関係するシステム・コストは、システム・コスト全体の割合としては低下しつつある。数千個のゲートによるコスト上昇分は、これまでになく低くなっている。このサイズの回路は、場合によっては、今日のチップ設計の曲がり角に追いやられる場合もある。今日の高密度パッケージにおけるピン当たりのコスト上昇分も低下している。このため、より多くのピンをデバッグのために割り当てることが容易となった。手頃な価格のゲートおよびピンを共に用いることによって、システム・オン・チップによってもたらされた課題に取り組むために必要な、新たなオンチップ・エミュレーション機構（ファシリティ）の配備が可能となる。
【００１４】
また、生産機器がアプリケーション・デバッグ・プラットフォームとしても機能する場合、これらは市場の目標に合わせて時間を捻出するのに十分なデバッグ機能（ケイパビリティ）を備えていなければならない。デバッグの必要性は個々のアプリケーションで異なるので、オンチップ・デバッグ機構を調節し、市場およびコストの要望に対して時間のバランスが取れるようにすることが望ましい。これらオンチップ機能はチップの循環コストに影響を及ぼすので、いずれの解決策にとっても規模変更可能性若しくはケスラビリティ（scalability）が最も重要である。「必要なものにだけ支払う」ことは、オンチップ・ツールの配備にとっても処理原則であるはずである。この新たな枠組みにおいて、システム構築者は、チップ・コストの制約や製品開発チームのデバッグについての要望のバランスを取りながら、オンチップ・デバッグ機構を、それ以外の機能性と共に指定することができる。
【００１５】
図２は、４つのエミュレータ構成要素を含むエミュレータ・システム１００を示す。これら４つの構成要素は、デバッガ・アプリケーション・プログラム１１０、ホスト・コンピュータ１２０、エミュレーション・コントローラ１３０、およびオンチップ・デバッグ機構（ファシリティ）１４０である。図２は、これらの構成要素の接続を示す。ホスト・コンピュータ１２０は、ホスト１２０外部のエミュレーション・コントローラ１３０に接続されている。また、エミュレーション・コントローラ１３０はターゲット・システム１４０にも接続されている。ユーザは、デバッガ・アプリケーション・プログラム１１０を通じて、ターゲット・システム１４０上でターゲット・アプリケーションを制御することが好ましい。
【００１６】
ホスト・コンピュータ１２０は通常パーソナル・コンピュータである。ホスト・コンピュータ１２０は、エミュレータ・コントローラ１３０を通じてデバッグ機能にアクセスする。デバッガ・アプリケーション・プログラム１１０は、ホスト・コンピュータ１２０を通じて、ユーザに易しい形態でデバッグ機能を提供する。デバッグ・リソースは、必要に応じて、デバッグ・アプリケーション・プログラム１１０によって割り当てられ、このためのユーザの負担を軽減する。ソース・レベルのデバッグは、デバッグ・リソースを利用し、それらの複雑性をユーザには隠している。デバッガ・アプリケーション・プログラム１１０は、オンチップ・トレースおよびトリガ機構と共に、対象のチップ・アクティビティを選択し、記録し、表示する手段を設ける。トレース表示は、トレース・ログを生成したソース・コードと自動的に相関付けられる。エミュレータは、デバッグ制御およびトレース記録機能双方を備えている。
【００１７】
デバッグ機構は、ＪＴＡＧまたは同様のシリアル・デバッグ・インターフェースを介した標準的なエミュレータ・デバッグ・アクセスを用いてプログラムすることが好ましい。ピンは貴重なので、本発明の好適な実施形態では、デバッグ・ピンの集合を、トレース、トリガ、およびその他のデバッグ機能で共有し、シリコン・コストにおける増加分を少なく済ませるようにした。固定したピン・フォーマットにも対応可能である。ピン共有選択肢を採用する（deploy）場合、デバッグ・ピンの利用は、各デバッグ・セッションの開始時に決定され、その後にターゲット・システム１４０にアプリケーション・プログラムを実行するように指令する。これによって、トレース・エクスポート帯域幅（trace export bandwidth）を最大化する。トレース帯域幅を最大化するには、最大数のピンをトレースに割り当てる。
【００１８】
システム内部のデバッグ機能および構築（ビルディング）ブロックは、可変とすることもできる。したがって、デバッガ・アプリケーション・プログラム１００は、実行時（ランタイム）にコンフィギュレーションを確定する。この手法では、ハードウエア・ブロックが、コンフィギュレーションおよびレジスタ編成に関する一連の制約を満たす必要がある。他の構成要素は、システム・メモリ・マップにおいてブロックやその他のペリフェラル（peripheral）を突き止め位置づけるように設計されたハードウエア検索機能を設ける。デバッガ・アプリケーション・プログラム１１０は、検索機構を用いてリソースを突き止める。モジュールが位置するアドレスおよびタイプＩＤが、発見された各ブロックを一意に特定する。一旦ＩＤが発見されたなら、設計データベースを用いれば、正確なコンフィギュレーションならびに全てのシステム入力および出力を確認することができる。
【００１９】
ホスト・コンピュータ１２０は、一般に、少なくとも６４Ｍバイトのメモリを含み、Ｗｉｎｄｏｗｓ（登録商標）９５、ＳＲ・２、Ｗｉｎｄｏｗｓ（登録商標）  ＮＴ、またはそれ以降のバージョンのＷｉｎｄｏｗｓ（登録商標）を走らせることができる。ホスト・コンピュータ１２０は、エミュレータが必要とする通信インターフェースの１つに対応していなければならない。これらは、イーサネット（登録商標）１０Ｔおよび１００Ｔ、ＴＣＰ／ＩＰプロトコル、ユニバーサル・シリアル・バス（ＵＳＢ）、ファイアワイヤＩＥＥＥ１３９４、ならびにＳＰＰ、ＥＰＰおよびＥＣＰのようなパラレル・ポートを含むことができる。
【００２０】
ホスト・コンピュータ１２０は、リアル・タイムのデータ交換帯域幅を決定するにあたって主要な役割を果たす。まず、ホスト・エミュレータ間通信は、最大維持リアル・タイム・データ交換帯域幅を規定する際に主要な役割を果たす。何故なら、エミュレータ・コントローラ１３０はその受信リアル・タイム・データ交換バッファが満杯になったら直ちにこれらを空にしなければならないからである。第２に、リアル・タイム・データの発信または受信を行うホスト・コンピュータ１２０は、受信したリアル・タイム・データ交換データの準備および送信または処理および格納を維持するための十分な処理能力またはディスク帯域幅を有していなければならない。技術的現状では、ファイアワイヤ（Firewire）通信チャネル（ＩＥＥＥ１３９４）を備えたパーソナル・コンピュータが、最大のリアル・タイム・データ交換帯域幅を得るには好ましい。この帯域幅は、他の通信選択肢よりも性能を１０倍高めることができる。
【００２１】
エミュレーション・コントローラ１３０は、ホスト・コンピュータ１２０とターゲット・システム１４０との間にブリッジを設ける。エミュレーション・コントローラ１３０は、ホスト・コンピュータ１２０上で実行するデバッガ・アプリケーション・プログラム１１０とターゲット・システム１４０上で実行するターゲット・アプリケーションとの間で受け渡されるあらゆるデバッグ情報を処理する。現時点において好適な最小のエミュレータ・コンフィギュレーションは、リアル・タイム・エミュレーション、リアル・タイム・データ交換、トレース、および高度分析といった機能の全てに対応する。
【００２２】
エミュレーション・コントローラ１３０は、好ましくは、実行制御、メモリ、レジスタ・アクセスのようなリアル・タイム・エミュレーション機能に、３、４、または５ビットの走査型インターフェース（scan based interface）を通じてアクセスする。リアル・タイム・データ交換機能は、走査によって、または走査以外の直接的なターゲット・エミュレータ間接続を用いる３つの上位帯域幅リアル・タイム・データ交換フォーマットを用いることによってアクセスすることができる。入力および出力トリガによって、他のシステム構成要素がチップにデバッグ・イベントを知らせることや、その逆が可能となる。ビットＩ／Ｏによって、エミュレータはシステム入力および出力を刺激すること、または監視することが可能となる。ビットＩ／Ｏは、工場検査およびその他の時間的に厳しくない（non-time-critical）低帯域幅のエミュレータ／ターゲット動作に対応するために用いることができる。拡張動作モードは、デバイス検査およびエミュレーション動作モードを指定するために用いられる。エミュレータ・コントローラ１３０は、通信部およびエミュレーション部に区分される。通信部は、ホスト通信リンクを支援し、一方エミュレーション部はターゲットにインターフェースして、ターゲット・デバッグ機能およびデバイス・デバッグ・ポートを管理する。エミュレーション・コントローラ１３０は、先にこの中で概説した業界標準の通信リンクの１つを用いて、ホスト・コンピュータ１２０と交信する。ホスト・エミュレータ間接続は、汎用の配線技術を用いて行われる。ホスト・エミュレータ間の分離は、用いるインターフェースに適用される規格によって管理される。
【００２３】
エミュレーション・コントローラ１３０は、１本または複数のターゲット・ケーブルを通じてターゲット・システム１４０と交信する。デバッグ、トレース、トリガ、およびリアル・タイム・データ交換機能は、ターゲット・ケーブルを共有し、場合によっては、同じデバイス・ピンを共有する。ターゲット・システム１４０が、１本のケーブルには収容しきれないトレース幅を配備する場合、１本よりも多いターゲット・ケーブルが必要となる場合もある。トレース、リアル・タイム・データ交換、およびデバッグ通信は全て、このリンクを通じて行われる。エミュレータ・コントローラ１３０は、少なくとも２フィート（約６０ｃｍ）のターゲット・エミュレータ間分離を設けることが好ましい。このエミュレーション技術は、５０ＭＨＺまでの検査クロック・レート、および２００から３００ＭＨＺまたはこれ以上のトレース・クロック・レートが可能である。エミュレータの設計がターゲット・システム１４０の制約を緩和する技法を用いても、これらのレートでエミュレータ・コントローラ１３０およびターゲット・システム１４０間で通知を行うには、設計に努力が必要である。このエミュレーション技術は、チップのデバッグ・ピンの配置、基板のレイアウトに制約を賦課する場合があり、正確なピンのタイミングを必要とする。タイミングの制約を満たすのを補助するために、オンチップ・ピン・マクロを設ける。
【００２４】
オンチップ・デバッグ機能は、開発者に、豊富な開発機能を２段階の拡張可能な手法で提供する。第１段階では、ＣＰＵのメガ・モジュールに組み込んだリアル・タイム・エミュレーション機能を利用した機能性を備える。このリアル・タイム・エミュレーション機能は、一定の機能性を有し、永続的にＣＰＵの一部であるが、殆どの場合、コアの外側に、高性能リアル・タイム・データ交換、高度分析およびトレース機能が追加される。これらの機能を個々に選択し、チップに加入する。エミュレーション・ペリフェラルをシステム設計に加入することにより、第２段階の機能性を形成する。コスト効率的なエミュレーション・ペリフェラルのライブラリは、システムを作成するための構築ブロックを含み、高度分析、高性能リアル・タイム・データ交換、およびトレース機能の構造化を可能にする。好適な実施形態では、５つの標準デバッグ・コンフィギュレーションが提供されるが、カスタム・コンフィギュレーションにも対応する。具体的なコンフィギュレーションについては、この中で後に扱う。
【発明の開示】
【発明が解決しようとする課題】
【００２５】
本発明は、２つの個別の比較器として動作可能なエミュレーション比較器であり、各々、プロセッサが発行するプロセッサ・メモリ・アクセス・アドレス（ＰＭＡＡ）およびプロセッサ・メモリ・アクセス・アドレス（ＰＭＡＤ）値をレジスタに格納されている基準値と比較する。あるいは、これは単一のデバイスとして動作することができ、メモリ・アクセス・アドレスを、二重境界範囲（double bounded range）を形成する２組の基準値と比較する。メモリ・アクセスのデータ内容は、アドレス比較に対する追加のクオリファイア（qualifier）として任意に用いることもできる。
【課題を解決するための手段】
【００２６】
比較器の実施に必要な具体的なリソースは、所与の実施態様の要件および制約に依存して大きく変化する可能性がある。本願において記載する例では、範囲比較器は、２つの単一基準アドレス比較器と、対応するデータ比較器とを含み、２つのアドレスおよび２つのデータ比較論理機能に加えて、１３のユーザ可視レジスタ（user-visible register）を必要とする。
【００２７】
２つの比較器の各々は、制御レジスタによって行われる選択に基づいて、独立した結果または依存した結果を得ることができる。２つのデータ比較器の結果は、関連するアドレス比較器に対するクオリファイアとして用いることができ、あるいは制御レジスタのコンフィギュレーションによっては無視することもできる。
【００２８】
プロセッサ・メモリ・アクセス・アドレスは、バイト、半ワード、ワード、二重（ダブル）ワードのように、プロセッサのアーキテクチャに応じて、多数のサイズとすることができる。ここに記載する実施態様における比較器は、基準を多数のサイズのメモリ・アクセスと比較することができる。
【００２９】
データ比較認定（qualification）を別として、比較器は、６つのアドレス比較判断基準の１つに基づいて一致を示すことができる。プロセッサ・メモリ・アクセス・アドレスは、基準と等しい場合、基準と等しくない場合、基準よりも大きい場合、基準以上の場合、基準未満の場合、または基準以下の場合があり得る。
【００３０】
本発明は、完全一致または部分的一致の判断基準が可能である。これらは、均等一致（equality match）を求める場合には、２つのモードで具体化される。第１モードでは、プロセッサ・メモリ・アクセスが基準における全バイトと一致（オーバーラップ）した場合にのみ、一致が生ずる。第２モードでは、プロセッサ・メモリ・アクセスの少なくとも１バイトが基準と一致した場合に、一致が生ずる。
【００３１】
本願において説明する例で用いられるデータ比較器は、同一性均等比較器（identity equality comparator）である。データ比較器が一致を示すのは、重複判断基準によって認定された基準における対応するビットと一致するデータにおけるビットが全て等しい場合のみである。データ比較器は、基準マスク値を含む。この例の６４ビット・メモリ・データ・バスの場合、２つの３２ビット・レジスタが、２つのデータ比較器の各々に必要となる。マスクによって、一致に必要なデータ・ビットのカスタム化が可能になる。したがって、必ずしもビットの全てにおいて一致が必要な訳ではない。
【００３２】
比較器は、プロセッサのメモリ・マップへのインターフェースを通じてプログラムすることができる。本願では、このインターフェースをコンフィギュレーション・バス（ｃｆｇｂ）と呼ぶ。
【００３３】
比較器の機能は、ハードウエア・デバッグ・システムが用いるツールとして利用することができ、比較器の結果を入力として取り込み、デバッグ・システムのコンフィギュレーションに応じて、広い範囲の応答を与える。
本発明のこれらおよびその他の態様を図面に示す。
【発明を実施するための最良の形態】
【００３４】
メモリ内の特定の位置に対するプロセッサのメモリ・アクセスを検出することができると、プロセッサ・コードの開発者がソフトウエアの問題を解決する（troubleshooting）する際に役立つので、これは必要である。本発明の比較器は、多数の特徴と高い柔軟性を有し、ソフトウエア・デバッグの作業を支援する強力なツールである。デバッグ処理には無関係な他の潜在的な用途には、プロセッサ動作の関連では、システム・イベントの相互作用または変化を開始させるために行う、プロセッサのメモリ・アクセスの検出を含むことができる。
【００３５】
本発明の比較器は、特定のメモリ・アドレスまたはアドレス範囲に対するプロセッサのメモリ・アクセスの有無を検出することができ、更にプロセッサのメモリ・アクセスに伴うデータによって、特定のメモリ・アドレスまたはアドレス範囲も認定することができる。ハードウエア・デバッグ・システムに比較器を一体化すると、プロセッサが実行するコードにおける問題を検出および解決するシステムの機能を高めることができる。
【００３６】
本発明の比較器は、デバッグ・プロセスがプロセッサのメモリ・アクセスの検出に基づく場合のソフトウエア問題の検出において、機能を強化し、柔軟性を高める。比較器において完全な重複または部分的重複の検出判断基準を使用可能であることは、あらゆるバイト境界におけるメモリ位置にアクセスを要求する可能性があるプロセッサ・アーキテクチャのために実施する場合には、特に重要である。この機能がないと、かかるアーキテクチャにおけるプロセッサのメモリ・アクセス・イベントの適正な検出には重大な制約が生じ、多くの場合不可能になることさえある。
【００３７】
図３は、ターゲット・システム１４０を用いたオンチップ・デバッグ・アーキテクチャの一例を示す。このアーキテクチャは、数個のモジュール・クラスを用いてデバッグ機能を構成する。これらのクラスの１つに、バス・イベント検出器２１０、補助イベント検出器２１１、およびカウンタ／ステートマシン２１３を含むイベント検出器がある。第２のクラスのモジュールは、トリガ・ビルダ（trigger builder）２２０を含むトリガ発生器である。第３のクラスのモジュールは、トレース収集２３０およびフォーマット化を含むデータ取得である。第４のクラスのモジュールは、トレース・エクスポート２４０、リアル・タイム・データ交換エクスポート２４１を含むデータ・エクスポートである。トレース・エクスポート２４０は、局部発振器２４５からのクロック信号によって制御される。局部発振器２４５については、後に詳しく説明する。最後のクラスのモジュールは、走査入力／出力をＣＰＵコア２０１にインターフェースする走査アダプタ２５０である。最終的なデータのフォーマット化およびビンの選択は、ピン・マネージャおよびピン・マクロ２６０において行われる。
【００３８】
システム・オン・チップ（system-on-chip）の個々の実施形態のいずれに対しても、デバッグ機能のサイズおよびそれに付随する処理能力は、完全な機能を削除するか、または配備するイベント検出器およびトリガ・ビルダの数を制限することによって調節することができる。加えて、トレース機能は、プログラム・カウンタ・トレースのみからプログラム・カウンタおよびデータならびにＡＳＩＣおよびＣＰＵ発生データのトレースまで徐々に増大させることができる。また、リアル・タイム・データ交換機能を任意に配備することもできる。オンチップ・ツールをカスタム化できるので、アプリケーション開発の枠組みを変化させることができる。過去においては、所与のＣＰＵコアを用いたチップ設計は全て、固定した１組のデバッグ機能に限定されていた。現在では、チップの設計毎に最適化したデバッグ機能が得られる。この枠組みの変化によって、システム・アーキテクトには、製品開発リスクを管理するために必要なツールが手頃なコストで与えられることになった。尚、同じＣＰＵコアであっても、異なるピン出力を有する異なるペリフェラルと共に用いることによって、異なるシステム・オン・チップ製品を具体化できることを注記しておく。これらの異なる実施形態は、異なるデバッグよびエミュレーション・リソースを必要とする場合もあり得る。本発明のモジュール性により、かかる実施形態の各々は、個々のシステム・オン・チップに応用するために必要なデバッグおよびエミュレーション・リソースのみを含むだけで済む。
【００３９】
リアル・タイム・エミュレーション・デバッグの基礎的な構成要素は、アプリケーションの開発に関係する基本的なデバッグおよび計測管理（instrumentation）に取り組むために用いられる。これは、あらゆる実行制御およびレジスタ可視性機能、ならびにブレークポイントやウオッチポイント機能のような最小のリアル・タイム・データ交換および分析機能を内蔵している。これらのデバッグ動作は、オンチップ・ハードウエア機構を用いて、アプリケーションの実行を制御し、レジスタやメモリへのアクセスを得る。リアル・タイム・エミュレーションが対応可能なデバッグ動作の一部は、ソフトウエア・ブレークポイントの設定、そのポイントにおける機械状態の観察、命令毎に正確な決定を観察するための１ステップ・コード前進、既知のメモリ位置への疑似書き込みの検出、およびメモリおよび周辺レジスタの視認および変更である。
【００４０】
リアル・タイム・エミュレーション機構は、ＣＰＵメガ・モジュール（CPU mega-module）内に組み込まれ、ＣＰＵコア２０１のファブリック（fabric）に編入される（weave）。これによって、ＣＰＵコア２０１を用いた設計が、デバッガ・アプリケーション・プログラム１１０のベースライン・デバッグ、測定管理、およびデータ転送機能に対応するだけの十分なデバッグ機構を有することに確証を与える。各ＣＰＵコア２０１は、基礎的な１組のエミュレーション機能を組み込んでいる。これらの機能には、実行（run）、１命令ステップ、休止および自由実行（halt and free run）のような実行制御、レジスタやメモリの表示および修正、ソフトウエアおよび最小限のハードウエア・プログラム・ブレークポイントを含むブレークポイント、ならびに最小限のハードウエア・データ・ブレークポイントを含むウオッチポイントを含むが、これらに限定されるのではない。
【００４１】
図４は、範囲比較器のアドレス構成要素を一体化した、２つの個別のアドレス比較器を含む比較器４００を示す。比較器４００は、バス・イベント検出器２１０の一部であることが好ましい。比較器４００の柔軟な組み合わせにより、多種類のバス・イベント検出が可能となる。第１比較器は図４の上側にあり、第２比較器は下側にある。各アドレス比較器は、４つの主要構成要素、即ち、プロセッサ・メモリ・アクセス・サンプリング機構（マルチプレクサ４１１、４１２、４２１および４２２）、コンフィギュレーション・リソース（バス選択レジスタ４０２、比較器制御レジスタ４０３および４０５、アドレス基準レジスタ４０４および４０６）、プログラム・アクセス・アドレス大小比較器（メモリ・アドレス大小比較器４１３および４２３）、およびメモリ・アクセス比較制御ブロック（４１５および４２５）を有する。
【００４２】
図４は、プロセッサ・メモリ・アクセス・サンプリング機構として機能する、４つのマルチプレクサ４１１、４１２、４２１および４２２を示す。図４は、２系統のプログラム・メモリ・アクセス・アドレス・バスを示す。マルチプレクサ４１１および４２１は、使用可能なデータ・アドレス・バスdmem_addr_0およびdmem_addr_1の中から所望のアドレス・バス信号を選択する。マルチプレクサ４１２および４２２は、選択したデータ・アドレス・バスに付随する、対応の制御バス信号mem_acc_ctl_0およびmem_acc_ctl_1を選択する。ユーザは、バス選択レジスタ４０２に書き込むことによって、２つの比較器に対するバス選択を制御する。
【００４３】
図４は、比較器の構成の一部である５つのレジスタを示す。バス選択レジスタ４０２、比較器制御レジスタ４０３および４０５、ならびにアドレス基準レジスタ４０４および４０６は、コンフィギュレーション・バス・インターフェース（ｃｆｇｂ）と呼ぶメモリ・インターフェースを通じて、他のコンフィギュレーション変更可能なハードウエア・リソースと同様に、アクセスすることができる。このメモリ・インターフェースは、コンフィギュレーション制御信号（cfgb_ctl）を受け取るコンフィギュレーション・インターフェース制御部４０１を含む。コンフィギュレーショングレーション・データ（cfgb_data）およびコンフィギュレーション・クロック（cfgb_clk）が、バス選択レジスタ４０２、比較器制御レジスタ４０３、４０５、およびアドレス基準レジスタ４０４、４０６に供給される。レジスタ書き込み要求の受信およびcfbg_ctlを通じたレジスタの識別時に、コンフィギュレーション・インターフェース制御部４０１は、コンフィギュレーション・データ・バス上のデータを格納するレジスタを選択する。選択されたレジスタは、次のコンフィギュレーション・クロック信号の時点で、コンフィギュレーション・データ・バス上のデータを格納する。
【００４４】
バス選択レジスタ４０２に格納されたデータは、マルチプレクサ４１１、４１２、４２１および４２２を通じて、それぞれの基準値と比較される入力バスを規定する。マルチプレクサ４１１は、メモリ・アドレス大小比較器４１３およびメモリ・アドレス・バイト整合（alignment）マップ作成部（maker）（ＢＡＭＭ）４１４に供給するために、第１バスdmem_addr_0または第２バスdmem_addr_1のいずれかを選択する。マルチプレクサ４１２は、メモリ・アドレス大小比較器４１３およびメモリ・アドレス・バイト整合マップ作成部４１４に接続するために、第１制御バスmem_acc_ctl_0または第２制御バスmem_acc_ctl_1のいずれかを選択する。以下で説明するが、最終的な一致の判定は、それぞれの制御バス信号において示されるメモリ・アクセスのデータ・サイズに左右される可能性もある。マルチプレクサ４１１および４１２の選択は、port_select_0信号を通じてバス選択レジスタ４０２によって制御される。アドレス基準レジスタ４０４は、比較のために、基準アドレスをメモリ・アドレス大小比較器４１３およびメモリ・アドレス・バイト整合マップ作成部４１４に供給する。同様に、マルチプレクサ４２１および４２２は、port_select_1信号を通じたバス選択レジスタ４０２の制御の下で、アドレスおよび対応する制御バスを、メモリ・アドレス大小比較器４２３およびメモリ・アドレス・バイト整合マップ作成部４２４のために選択する。アドレス基準レジスタ４０６は、メモリ・アドレス大小比較器４２３およびメモリ・アドレス・バイト整合マップ作成部４２４のために基準アドレスを格納する。
【００４５】
メモリ・アドレス大小比較器４１３および４２３は、基準値と選択したプロセッサ・メモリ・アクセス・アドレスとの間で実際の比較を行う。メモリ・アドレス大小比較器４１３および４２３は、各々、プロセッサ・メモリ・アクセス・アドレスが基準アドレスと等しい場合には同等信号（ＥＱ）を発生し、プロセッサ・アクセス・アドレスが基準アドレスよりも大きい場合には超過信号（ＧＴ）を発生し、プロセッサ・アクセス・アドレスが基準アドレス未満の場合には未満信号（ＬＴ）を発生する。また、メモリ・アドレス大小比較器４１３および４２３は、それぞれのオフセット信号offset_0およびoffset_1も発生する。これらのオフセット信号は、対応するメモリ・アドレス・バイト整合マップ作成部４１４または４２４に供給される。メモリ・アドレス大小比較器４１３およびメモリ・アドレス・バイト整合マップ作成部４１４は、コンフィギュレーションおよび制御信号config_&_control_0を比較器制御レジスタ４０３から受け取る。メモリ・アドレス大小比較器４２３およびメモリ・アドレス・バイト整合マップ作成部４２４は、同様のコンフィギュレーションおよび制御信号config_&_control_1を比較器制御レジスタ４０５から受け取る。
【００４６】
オフセット信号offset_0およびoffset_1は、プロセッサ・メモリ・アクセス・アドレスと基準アドレスとの間のオフセットをバイト単位で記述する。それぞれのメモリ・アドレス・バイト整合マップ作成部４１４および４２４は、２つの信号を発生する。第１の信号を基準バイト整合マップ（ref_bam）と呼ぶ。第２の信号をメモリ・アクセス・バイト整合マップ（macc_bam）と呼ぶ。これらの信号は、基準アドレスとプログラム・メモリ・アクセス・アドレスとの間の完全な重複または部分的な重複を検出する際の基礎となる。
【００４７】
メモリ・アドレス大小比較器４１３および４２３からの出力ＧＴ、ＬＴ、ＥＱ、ならびにメモリ・アドレス・バイト整合マップ作成部４１４および４２４からの基準バイト整合マップ（ref_bam）およびメモリ・アクセス・バイト整合マップ（macc_bam）は、各メモリ・アクセス比較制御ブロック４１５および４２５に供給される。メモリ・アドレス・バイト整合マップ作成部４１４および４２４からのメモリ・アドレス・バイト整合マップ信号およびメモリ・アクセス・バイト整合マップは、各メモリ・アクセス比較制御ブロック４１５および４２５に供給される。メモリ・アクセス比較制御ブロック４１５および４２５は、これらの入力信号、各ＯＲゲート４１６および４２６からの比較器認定（クオリフィケーション）、ならびに比較器制御レジスタ４０３および４０５において定義されるコンフィギュレーション情報に応じて、対応するmem_access_event出力を発生する。メモリ・アクセス比較制御ブロック４１５および４２５は、対応するメモリ・アドレス大小比較器４１３および４２３からの３つの結果信号（ＧＴ，ＬＴ，ＥＱ）を取り込み、これらを６つの比較モード選択に拡張する。これらは、超過、未満、同等、不等、以下、および以上である。同時に、対応する比較器制御レジスタ４０３および４０５からのコンフィギュレーション信号に基づいてバイト整合マップ信号ref_bamおよびmacc_bamを比較し、重複一致結果を生成する。２つの比較器の各々は、６つの比較モデルの内の１つにプログラムすることができ、当該モデルの検出判断基準および重複一致結果を用いて、部分的比較器検出イベント（partial comparator detection event）を生成する。メモリ・アクセス比較制御ブロック４１５は、local_event_0信号をメモリ・アクセス比較制御ブロック４２５に供給する。メモリ・アクセス比較制御ブロック４２５は、local_event_1信号をメモリ・アクセス比較制御ブロック４１５に供給する。
【００４８】
各メモリ・アクセス比較制御ブロック４１５および４２５は、それぞれの信号look_up_table_0およびlook_up_table_1を通じて、対応する比較器制御レジスタ４０３および４０５から４エントリの参照テーブルを受け取る。テーブル参照信号によって、最終出力mem_access_event_0およびmem_access_event_1が、他のメモリ・アクセス比較制御ブロックからのlocal_event信号に依存することが可能となる。この依存性により、各比較器が一方の限度値を検査することによって、アドレス範囲の比較が可能となる。中央演算装置のストール信号（cpu_stall）がアクティブのとき、それぞれの比較器制御レジスタ４０３および４０５に格納されているコンフィギュレーション・データに応じて、メモリ・アクセス比較制御ブロック４１５および４２５のいずれかまたは双方を非動作、ディスェーブルすることができる。
【００４９】
メモリ・アクセスが正確に基準アドレスに等しくないことにユーザが関心を示す可能性はいくつかある。基準アドレスおよびバス・アドレスのそれぞれのデータ・サイズによっては、異なるアドレスを有するバス・アクセスは基準アドレスに触れる場合がある。例えば、データ・バイトの正確なアドレスを有していないと、ワードまたは半ワードの書き込みが、１バイトのデータを上書きしてしまう場合がある。通常、ユーザは、追跡しているメモリ・アクセスが基準に触れるか否かについてのみ関心があり、正確なデータ・サイズやバス・アドレスの組み合わせには関心がない。比較動作が正しく行われたか否か判定する規則は、単に、「対象とするバイトのいずれにも触れた場合、比較は正しく行われた」というように、単に述べることができる。このような一致は、アドレス・バス値およびデータ・サイズ双方に依存する。
【００５０】
基準アドレスは、３２ビット・アドレス境界に整合された一連のバイトと見なされ、基準アドレスのバイト・アドレスおよび基準アドレスに関与するサイズに基づいて配置される。基準アドレスに関与するサイズは、１バイト（バイト）、２バイト（半ワード）、または４バイト（全ワード）とすることができる。バス・アドレスは、同じように表される。比較器の一致が宣告されるのは、以下の条件のいずれもが真と評価されたときである。同等比較をイネーブルしたときに、バス・アドレスが基準アドレスのいずれのバイトを参照することによっても、同等一致が生じる。超過比較を指定したときに、基準アドレスが指定する最上位バイトよりも高いアドレスを有するいずれかのバイトを、バス・アドレスが参照することによって、超過一致が生じる。未満比較を指定したときに、基準アドレスが指定する最下位バイトよりも低いアドレスを有するいずれかのバイトを、バス・アドレスが参照することによって、未満一致が生じる。尚、これら３つの条件は同時に一致を生じ得ることを注記しておく。例えば、完全な１ワードのメモリ・アクセスが、１バイトとして指定された基準アドレスと重複する場合、この条件が生じる。これによって、いずれのサイズのアクセスであっても、指定した１組のバイトの上位、下位、またはその上に触れれば、一致を宣告することができる。
【００５１】
表１は、いずれのバイト・アドレス可能な境界にて開始する全（フル）ワード、半ワードおよびバイト・アクセスに対応するメモリ・システムについて、非整合バス比較の事例を５つ示すものである。表１の中央にある３つの事例は、基準アドレスおよびバス・アドレスのサイズを条件とする。他の２つの事例は、アドレス・サイズの情報がなくとも、完全な比較を可能とする。
【表１】
2004178590.tif 000003
【００５２】
アクセスは、バス・アドレス[1:0]およびサイズ[1:0]データから作成した、１連の７つのバイト・イネーブルに分割される。これら７つのバイト・イネーブルによって、３２ビット・ワードに対応するバイト・アドレスのいずれから開始する全ワード・アクセスでも指定し、このアクセスによる作用を受けるバイトの位置を規定することができる。メモリ・アクセス比較制御ブロック４１５および４２５は、それぞれのメモリ・アドレス大小比較器４１３および４２３からのＧＴ、ＬＴ、ＥＱ出力と、それぞれのメモリ・アドレス・バイト整合マップ作成部４１４および４２４からの基準バイト整合マップ（ref_bam）およびメモリ・アクセス・バイト整合マップ（macc_bam）とを受け取り、それぞれのバス及び基準データ・サイズに基づいて、要求されたアドレス比較を形成する。
【００５３】
表２は、比較器制御レジスタ４０３に格納されている認定（クオリフィケーション）信号config_&_control_0およびlook_up_table_0のコード化の一例を示す。比較器制御レジスタ４１３に格納されているconfig_&_control_1およびlook_up_table_1も同様にコード化する。
【表２】
2004178590.tif 000004
【００５４】
EXACTビット（ビット１１）は、アドレス比較の正確度を規定する。EXACT＝０の場合、いずれのバイトが基準アドレスに触れても、一致が生ずる。EXACT＝１の場合、正確なアドレス一致の場合にのみ、一致が生ずる。
【００５５】
REFビット（ビット１０および９）は、アドレスおよびデータ基準値のサイズを定義する。これを表３に示す。
【表３】
2004178590.tif 000005
【００５６】
EXEビット（ビット８）は、認定プログラム・カウンタ・イベントを定義する。EXE＝１の場合、ディスパッチ・ユニット（dispatch unit）からの１つの命令の実行を伴うプログラム・カウンタ・バス・イベント全ての認定が許可される。EXE＝０の場合、１つの命令発行を伴うプログラム・カウンタ・バス・イベントの認定はマスクされる。このマスキングによって、アドレスのみに基づいた単純な関数範囲（function range）を許可する（STALLをセットしている限り）。これは、プログラム・カウンタ・アドレス範囲にのみ有用である。
【００５７】
STALLビット（ビット７）は、ストールがバス・イベントとして認定可能か否か制御する。STALL＝１の場合、アクティブなパイプライン・サイクルを伴うバス・イベントの認定はマスクされる。これによって、EXEビットが０である限り、ブロック範囲イベントをレベルとして許可する。これは、プログラム・カウンタ・アドレス範囲にのみ有用である。STALL＝０の場合、データ・アクセスおよびプログラム・カウンタ・アクセスにおけるストールを許可して、バス・イベントを認定する。
【００５８】
ETYPEビット（ビット６）は、エミュレーション・メモリ・アドレスの検出を制御する。ETYPE＝０の場合、エミュレーション・アクセス・サイクルは検出されない。
R/Wビット（ビット４）は、読み出し動作または書き込み動作について、一致が生じたか否か判定を行う。R/W＝１の場合、比較器は読み出し動作について検出を行う。R/W＝０の場合、比較器は書き込み動作について検出を行う。
QLUフィールド（ビット３：０）は、データ・サイズに必要なバス・イベントの認定を定義する。表４は、これらのビットのコード化を示す。
【表４】
2004178590.tif 000006
【００５９】
これらのビットは、バス検出ハードウエアに対して対象となるアクセス・サイズまたは複数のアクセス・サイズを判定する。参照テーブルは、１組のビットを、検出したアクセス・サイズにマップする。
【００６０】
図５は、随伴するコンパニオン・データ比較器（companion data comparator）を示す。好適な実施形態では、２つのデータ比較器５００を用い、それぞれのＯＲゲート４１６および４２６を介して、各メモリ・アクセス比較制御ブロック４１５および４２５に１つずつ接続されている。実施態様の多くでは、１つのみのデータ比較器５００を用いて、両アドレス比較器で共有することも容認できる。こうすると、いくらか柔軟性が低下するという欠点がある。
【００６１】
データ比較器５００の好適な実施形態は、６４ビット・データ・バス上で動作し、したがって３２ビット・データ・バスの実施態様に要するよりも、２倍のリソースがデータ経路において必要となる。データ比較器５００は、６つの論理セクションを含む。即ち、コンフィギュレーション・リソース（４０１、４０２、４０３、４０４、５０５、５０６および５０７）、サンプリング・ロジック（５１０、５１１、５１２、５１３、５１４）、メモリ・データ同一性比較器（５２１および５２２）、メモリ・アクセス・データ・バイト・アドレス範囲重複比較器（５３０）、およびメモリ・アクセス・データ比較制御部（５４０）である。
【００６２】
コンフィギュレーション・リソースは、コンフィギュレーション・インターフェース制御部４１０および７つのレジスタを含む。バス選択レジスタ４０２およびインターフェース制御部４０１は、図４に示したアドレス比較器４００と共有される。比較器制御レジスタ４０３およびアドレス基準レジスタ４０４は、対応するアドレス比較機能と共有される。６４ビットの比較データは、２つの３２ビット・ワードとして格納される。下位データ基準レジスタ（data_reference_reg_l）５０５は、最下位（least significant）３２ビットを格納し、上位データ基準レジスタ（data_reference_reg_h）５０７は、最上位（most significant）３２ビットを格納する。６４ビットのマスク・データは、２つの３２ビット・ワードとして格納される。下位マスク・レジスタ（mask_reg_l）５０６は、最下位３２ビットを格納し、上位マスク・レジスタ（mask_reg_h）５０８は、最上位３２ビットを格納する。マスク・レジスタ５０６および５０８におけるビット位置が０にセットされていると、一致と見なされ、１にセットされていると、比較が行われる。これらのレジスタには、プロセッサ内にある他のコンフィギュレーション変更可能なハードウエア・リソースと同様に、コンフィギュレーション・バスおよびコンフィギュレーション・インターフェース制御部４０１を通じてアクセスすることができる。
【００６３】
サンプリング・ロジックは、メモリ・アクセスに関するデータ・バスおよび関連する制御およびアドレスの情報選択を定義する。マルチプレクサ５１１は、下位メモリ・データ・バイト同一性比較器５２１への供給のために、最下位３２ビット・データ・バスmem_data_low_0またはmem_data_low_0のいずれかを選択する。マルチプレクサ５１２は、メモリ・データ・バイト同一性比較器５２２への供給のために、最上位３２ビット・データ・バスmem_data_high_0またはmem_data_high_0のいずれかを選択する。選択は、バス選択レジスタ４０２からのport_select信号、ならびにそれぞれのデータ・バスに対応するメモリ・アクセス制御信号mem_acc_ctl_0およびmem_acc_ctl_1に応答して、データ・マルチプレクサおよび経路制御ロジック５１０によって制御される。ユーザは、バス選択レジスタ４０２に書き込むことによって、比較に用いるためのバス選択を制御する。
【００６４】
下位メモリ・データ・バイト同一性比較器５２１は、下位データ基準レジスタ５０５からの基準データの最下位３２ビット、下位マスク・レジスタ５０６からのマスク・データの最下位３２ビット、およびマルチプレクサ５１１からのメモリ・データの選択された最下位３２ビットを受け取る。同様に、上位メモリ・データ・バイト同一性比較器５２２は、上位基準レジスタ５０７からの基準データの最上位３２ビット、上位マスク・レジスタ５０８からの最上位マスク・データの３２ビット、およびマルチプレクサ５１２からのメモリ・データの選択された最上位３２ビットを受け取る。メモリ・データ・バイト同一性比較器５２１および５２２は、対応する一致信号byte_data_match_0およびbyte_data_match_1を発生する。メモリ・データ・バイト同一性比較器５２１および５２２は、各々、対応するマスクを用いて、データ・バスの個々のバイト各々に対して同一性比較を行う。各バス一致信号は、対応する４バイトについて別個に一致を示す。これによって、多数のサイズに対する同時動作が可能となる。最小データ・サイズが１バイトであり、他のサイズが全てバイトの倍数であると仮定すると、データ比較器は、バイト（８ビット）、半ワード（１６ビット）、ワード（３２ビット）、およびダブルワード（６４ビット）という４つのデータ・サイズのいずれについても、一致の指示を与えることができる。
【００６５】
メモリ・アクセス・データ・バイト・アドレス範囲重複検出器５３０は、メモリ・アクセスのバイトと基準のバイトとの間の相対的な重複に関する情報address_byte_overlapを発生する。マルチプレクサ５１３は、データ・マルチプレクサおよび経路制御ロジック５１０からのport_select信号の制御の下で、一方のメモリ・アクセス制御信号mem_acc_ctl_0またはmem_acc_ctl_1を選択する。同様に、マルチプレクサ５１４は、ポート選択信号の制御の下で、アドレス・バスdmem_addr_0およびdmem_addr_1の一方を選択する。メモリ・アクセス・データ・バイト・アドレス範囲重複検出器５３０は、マルチプレクサ５１３からの選択されたメモリ・バス制御信号、マルチプレクサ５１４からの選択されたアドレス・バス信号、アドレス基準レジスタ４０４からのアドレス、および比較器制御レジスタ４０３からのコンフィギュレーションおよび制御信号を受け取る。メモリ・アクセス・データ・バイト・アドレス範囲重複検出器５３０は、アドレス比較器４００において用いられる重複計算と同様に、８つの重複信号（address_byte_overlap）を生成し、バイト整合マップを作成する。
【００６６】
メモリ・アクセス・データ比較制御部５４０は、data_compare_result_0を発生する。メモリ・アクセス・データ比較制御部５４０は、８つの部分的データ比較結果、４つがメモリ・データ・バイト同一性比較器５２１からのbyte_data_match_1、そして４つがメモリ・データ・バイト同一性比較器５２２からのbyte_data_match_hと、メモリ・アクセス・データ・バイト・アドレス範囲重複検出器５３０から８つのaddress_byte_overlap信号と、メモリ・アクセスからの制御バス情報（mem_acc_ctl_0およびmem_acc_ctl_1）と、比較器制御レジスタ４０３からの参照テーブル（look up table）・データとを受け取る。メモリ・アクセス・データ比較制御部５４０は、これらの信号を用いて、データ一致信号（data_compare_result_0）を発生する。前述のように、このデータ一致信号は、アドレス比較を認定するために用いることができる。
【００６７】
表５は、ダブルワード未満の基準データ・サイズについて、値の複製方法を示す。
【表５】
2004178590.tif 000007
【００６８】
列Ｂ０からＢ７は、下位データ基準レジスタ５０５および上位データ基準レジスタ５０７における８バイトに対応する。下位バイトＢ０・Ｂ３は、下位データ基準レジスタ５０５に格納され、上位バイトＢ４・Ｂ７は上位データ基準レジスタ５０７に格納される。このようなデータの複製を、適切なデータ・ストローブと共に行うことによって、メモリ・アクセス・サイズおよび基準サイズのいずれの組み合わせについても、いかなる所望の一致でも可能となる。データ比較には、アクセスによるデータ・バイト基準のみが含まれる。
【００６９】
本発明の好適な実施形態は、２つのデータ比較器５００を含む。第１のデータ比較器を図５に示す。第２のアドレス比較器は、比較器制御レジスタ４０３が比較器制御レジスタ４０５と置き換えられ、アドレス基準レジスタ４０４がアドレス基準レジスタ４０６と置き換えられ、比較出力data_compare_result_1が、ＯＲゲート４１６ではなく、ＯＲゲート４２６に供給されることを除いて同様である。更に別の代替物として、図５に示すような２つのデータ比較器を共に用いて、データ範囲の比較を行うこともできる。一方のデータ比較器はデータ範囲の下側の境界を検出し、第２のデータ比較器はデータ範囲の上側の境界を検出する。このデータ範囲比較の結果は、データ比較器認定信号を通じて、データ比較認定ＯＲゲート４１６および４２６の選択された一方または双方に供給することができる。
【００７０】
以上の説明に関して更に以下の項目を開示する。
（１）  メモリ・アクセス・アドレス比較器であって、
第１基準アドレスを格納する第１プログラマブル基準アドレス・レジスタと、
前記第１基準アドレスおよび第１アドレス入力を受け取り、前記第１基準アドレスと前記アドレス入力との間の整合を示す少なくとも１つの第１整合信号を発生する第１アドレス整合マップ作成部と、
前記第１プログラマブル基準アドレス・レジスタからの前記第１基準アドレスと前記第１アドレス入力とを受け取り、前記第１基準アドレスと前記アドレス入力上のアドレスとの関係に応じて、超過出力、未満出力または同等出力を発生する第１比較器と、
第２基準アドレスを格納する第２プログラマブル基準アドレス・レジスタと、
前記第２基準アドレスおよび第２アドレス入力を受け取り、前記第２基準アドレスと前記アドレス入力との間のオフセットを示す少なくとも１つの第２オフセット信号を発生する第２アドレス整合マップ作成部と、
前記第２プログラマブル基準アドレス・レジスタからの前記第２基準アドレスと前記アドレス入力とを受け取り、前記第２基準アドレスと前記アドレス入力上のアドレスとの間の関係に応じて、超過出力、未満出力または同等出力を発生する第２比較器と、
第１および第２アドレス整合マップ作成部のそれぞれならびに第１および第２比較器のそれぞれに接続された第１および第２メモリ・アクセス制御ユニットであって、各々、前記少なくとも１つの整合信号、前記対応する比較器の前記超過出力、前記未満出力および前記同等出力の少なくとも１つに応じて、対応する第１および第２ローカル・イベント信号を選択的に発生し、更に、前記他方のメモリ・アクセス制御ユニットの前記ローカル信号に応じて対応する第１および第２メモリ・アクセス・イベント信号を選択的に発生する、第１および第２メモリ・アクセス制御ユニットと、
を備え、
前記第１メモリ・アクセス制御ユニットが、前記少なくとも１つの第１整合信号を受け取った場合、前記第１ローカル・イベント信号および前記第１メモリ・アクセス・イベント信号が、前記第１基準アドレスおよび前記アドレス入力間における完全な重複または部分的重複に選択的に応じ、
前記第２メモリ・アクセス制御ユニットが、前記少なくとも１つの第２整合信号を受け取った場合、前記第２ローカル・イベント信号および前記第２メモリ・アクセス・イベント信号が、前記第２基準アドレスおよび前記アドレス入力間における完全な重複または部分的重複に選択的に応ずる、メモリ・アクセス・アドレス比較器。
（２）  更に、
第１データ・アクセス・アドレス・バスと、
第２データ・アクセス・アドレス・バスと、
前記第１データ・アクセス・アドレス・バスを受ける第１入力と、前記第２データ・アクセス・アドレス・バスを受ける第２入力と、制御入力と、前記第１アドレス整合マップ作成部および前記第１比較器のアドレス入力に接続された出力とを有する第１マルチプレクサと、
前記第１データ・アクセス・アドレス・バスを受ける第１入力と、前記第２データ・アクセス・アドレス・バスを受ける第２入力と、制御入力と、前記第２アドレス整合マップ作成部および前記第２比較器のアドレス入力に接続された出力とを有する第２マルチプレクサと、
前記第１および第２マルチプレクサの前記制御入力に接続されたプログラマブル・バス選択レジスタであって、前記第１および第２マルチプレクサを独立して制御し、前記第１および第２比較器の前記アドレス入力への供給のために、前記第１データ・アクセス・アドレス・バスまたは前記第２データ・アクセス・アドレス・バスのいずれかを選択する、プログラマブル・バス選択レジスタとを備えている第１項記載のメモリ・アクセス・アドレス比較器。
（３）  更に、
前記第１メモリ・アクセス制御ユニットに接続され、前記第１メモリ・アクセス制御ユニットを制御して、前記アドレス入力が、前記第１基準アドレスに対して（１）超過、（２）未満、（３）同等、（４）不等、（５）以下、および（６）以上から選択された１つである場合、前記第１ローカル信号を発生し、前記第１メモリ・アクセス・イベント信号が前記第２ローカル信号に依存するか、またはこれとは無関係とするか選択する、第１プログラマブル比較制御レジスタと、
前記第２メモリ・アクセス制御ユニットに接続され、前記第２メモリ・アクセス制御ユニットを制御して、前記アドレス信号が、前記第２基準アドレスに対して（１）超過、（２）未満、（３）同等、（４）不等、（５）以下、および（６）以上から選択された１つである場合、前記第２ローカル信号を発生し、前記第２メモリ・アクセス・イベント信号が前記第１ローカル信号に依存するか、またはこれとは無関係とするか選択する、第２プログラマブル比較制御レジスタとを備えている第１項記載のメモリ・アクセス・アドレス比較器。
（４）  更に、
前記第１メモリ・アクセス制御ユニットに接続され、前記第１メモリ・アクセス制御ユニットを制御して、前記アドレス入力が、前記第１基準アドレスおよび前記第１アドレス入力間の完全な重複または部分的な重複から選択した一方である場合、前記第１ローカル信号を発生する、第１プログラマブル比較制御レジスタと、
前記第２メモリ・アクセス制御ユニットに接続され、前記第２メモリ・アクセス制御ユニットを制御して、前記アドレス入力が、前記第２基準アドレスおよび前記第２アドレス入力間の完全な重複または部分的な重複から選択した一方である場合、前記第２ローカル信号を発生する、第２プログラマブル比較制御レジスタとを備えている第１項記載のメモリ・アクセス・アドレス比較器。
（５）  前記第１アドレス入力が、前記第１アドレスにおけるメモリ・アクセスに対応するデータ・サイズの指示を含み、
更に、前記第１メモリ・アクセス制御ユニットに接続され、前記第１基準アドレスに対応するデータ・サイズを指定する第１プログラマブル比較制御レジスタを備え、前記第１基準アドレスおよび前記第１アドレス入力のそれぞれのデータ・サイズに応じて、前記アドレス入力が前記第１基準アドレスおよび前記第１アドレス入力間の完全な重複または部分的重複から選択した１つである場合に、前記第１メモリ・アクセス制御ユニットが前記第１ローカル信号を発生し、
前記第２アドレス入力が、前記第２アドレスにおけるメモリ・アクセスに対応するデータ・サイズの指示を含み、
更に、前記第２メモリ・アクセス制御ユニットに接続され、前記第１基準アドレスに対応するデータ・サイズを指定する第２プログラマブル比較制御レジスタを備え、前記第２基準アドレスおよび前記第２アドレス入力のそれぞれのデータ・サイズに応じて、前記アドレス入力が前記第２基準アドレスおよび前記第２アドレス入力間の完全な重複または部分的重複から選択した１つである場合に、前記第２メモリ・アクセス制御ユニットが前記第２ローカル信号を発生する、第１項記載のメモリ・アクセス・アドレス比較器。
（６）  更に、
少なくとも１つのデータ比較器であって、各々、メモリ・アクセスのデータが対応するデータ基準と一致するか否かを示す、対応するデータ一致信号を発生する、データ比較器を備えており、
前記第１メモリ・アクセス制御ユニットが、前記少なくとも１つのデータ比較器から前記一致信号を受け取った場合、前記第１ローカル・イベント信号および前記第１メモリ・アクセス・イベント信号が、前記対応するデータ一致信号に選択的に依存し、
前記第２メモリ・アクセス制御ユニットが、前記少なくとも１つのデータ比較器から前記一致信号を受け取った場合、前記第２ローカル・イベント信号および前記第２メモリ・アクセス・イベント信号が、対応するデータ一致信号に選択的に依存する、第１項記載のメモリ・アクセス・アドレス比較器。
（７）  更に、
前記第１メモリ・アクセス制御ユニットに接続され、前記第１メモリ・アクセス制御ユニットを制御して、前記第１アドレス入力が、前記第１基準アドレスおよび前記第１アドレス入力間の完全な重複または部分的な重複から選択した一方である場合、前記第１ローカル信号を発生する、第１プログラマブル比較制御レジスタと、
前記第２メモリ・アクセス制御ユニットに接続され、前記第２メモリ・アクセス制御ユニットを制御して、前記アドレス入力が、前記第２基準アドレスおよび前記第２アドレス入力間の完全な重複または部分的な重複から選択した一方である場合、前記第２ローカル信号を発生する、第２プログラマブル比較制御レジスタとを備えている、第６項記載のメモリ・アクセス・アドレス比較器。
（８）  前記少なくとも１つのデータ比較器は、単一のデータ一致信号を発生する単一のデータ比較器から成り、前記第１および第２メモリ・アクセス制御ユニットが前記単一のデータ比較器から前記単一のデータ一致信号を受け取る、第６項記載のメモリ・アクセス・アドレス比較器。
（９）  前記少なくとも１つのデータ比較器は、
第１データ一致信号を発生する第１データ比較器であって、前記第１メモリ・アクセス制御ユニットが前記第１データ一致信号を受け取る、第１データ比較器と、
第２データ一致信号を発生する第２データ比較器であって、前記第２メモリ・アクセス制御ユニットが前記第２データ一致信号を受け取る、第２比較器と、
から成る、第６項記載のメモリ・アクセス・アドレス比較器。
（１０）  前記少なくとも１つのデータ比較器は、
前記データ基準を格納するプログラマブル・データ基準レジスタと、
前記プログラマブル・データ基準レジスタ内に格納されている前記データ基準のそれぞれの区間と、データ・バス上のデータとを比較し、それぞれの区間の一致を示す区間一致信号を発生する、データ比較器と、
前記区間一致信号を受け取り、該区間一致信号に応じて選択的にデータ比較信号を発生するメモリ・アクセス・データ比較制御ユニットと、
を含む、第９項記載のメモリ・アクセス・アドレス比較器。
（１１）  前記少なくとも１つのデータ比較器は、更に、
前記メモリ・アクセス・データ比較制御ユニットに接続され、前記メモリ・アクセス・データ比較制御ユニットを制御して、前記アドレス入力が、全区間の一致または選択した区間の一致から選択した一方である場合、前記データ比較信号を発生するプログラマブル比較制御レジスタを含む、第１０項記載のメモリ・アクセス比較器。
（１２）  更に、
第１データ・バスと、
第２データ・バスと、
前記第１データ・バスを受ける第１入力と、前記第２データ・バスを受ける第２入力と、制御入力と、前記データ比較器に接続された出力とを有するマルチプレクサと、
前記第１マルチプレクサの制御入力に接続されたプログラマブル・バス選択レジスタであって、前記マルチプレクサを制御して、前記データ比較器の前記アドレス入力に供給するために、前記第１データ・バスまたは前記第２データ・バスのいずれかを選択する、プログラマブル・バス選択レジスタと、
を備えている第９項記載のメモリ・アクセス・アドレス比較器。
【００７１】
（１３）  メモリ・アクセス・アドレス比較器は、入力メモリ・アクセス・アドレス（４０２）をそれぞれの基準アドレス（４０４、４０６）と比較する２つの比較器（４１３、４２３）を含む。比較器（４１３、４２３）は、アドレス・サイズ、完全なまたは部分的な重複、超過、未満、同等、不等、以下、および以上というような、選択可能な判断基準によって一致の指示を出し、選択的に連鎖することができる。入力マルチプレクサ（４１１、４１２、４２１、４２２）は、メモリ・アクセス・アドレス・バスの選択を可能にする。比較器出力コントローラ（４１５、４２５）は、対応するデータ一致（data_compare_result_0、data_compare_result_1）に選択的に応ずることができる。コンフィギュレーション・インターフェース・コントローラ（４０１）により、中央演算装置は、基準アドレス、比較データおよび制御機能（cfgb_data）を、メモリ・マップ・レジスタ（４２０、４０３、４０４、４０５、４０６）を通じて指定することができる。
【図面の簡単な説明】
【００７２】
【図１】典型的な集積回路の可視性および制御を、システム集積度の増大による時間の関数として示す図。
【図２】本発明を適用可能なエミュレーション・システムを示す図。
【図３】構成変更可能なエミュレーション機能を用いた典型的な集積回路を示すブロック図。
【図４】２つの結合されたメモリ・アクセス・アドレス比較器を示すブロック図。
【図５】データ比較器の一例を示すブロック図。
【符号の説明】
【００７３】
１００  エミュレータ・システム
１１０  デバッガ・アプリケーション・プログラム
１２０  ホスト・コンピュータ
１３０  エミュレーション・コントローラ
１４０  オンチップ・デバッグ機構
２０１  ＣＰＵコア
２１０  バス・イベント検出器
２１１  補助イベント検出器
２１３  カウンタ／ステートマシン
２２０  トリガ・ビルダ
２３０  トレース収集
２４０  トレース・エクスポート
２４１  リアル・タイム・データ交換エクスポート
２４５  局部発振器
２５０  走査アダプタ
２６０  ピン・マネージャおよびピン・マクロ 
４００  比較器
４０１  コンフィギュレーション・インターフェース制御部
４０２  バス選択レジスタ
４０３、４０５  比較器制御レジスタ
４０４、４０６  アドレス基準レジスタ
４１１、４１２、４２１、４２２  マルチプレクサ
４１３、４２３  メモリ・アドレス大小比較器
４１４、４２４  メモリ・アドレス・バイト整合マップ作成部
４１５、４２５  メモリ・アクセス比較制御ブロック
４１６、４２６  ＯＲゲート
５００  データ比較器
５０５  下位データ基準レジスタ
５０７  上位データ基準レジスタ
５０６  下位マスク・レジスタ
５０８  上位マスク・レジスタ
５１０  データ・マルチプレクサおよび経路制御ロジック
５１１、５１２、５１３、５１４  マルチプレクサ
５２１、５２２  メモリ・データ同一性比較器
５３０  メモリ・アクセス・データ・バイト・アドレス範囲重複比較器
５４０  メモリ・アクセス・データ比較制御部
【図１】
2004178590.tif 000008
【図２】
2004178590.tif 000009
【図３】
2004178590.tif 000010
【図４】
2004178590.tif 000011
【図５】
2004178590.tif 000012