それ自体が「システム・オン・チップ」(SoC)の種類のものであるその複数の集積回路を有する電子製品は、タイム・トゥー・マーケットの制約によって一層普及してきている。すなわち、特定の機能を備えるシステム・ソルーションは今では、それらの複数のSoCの機能を組み合わせることによって新たなASIC(すなわち、SoC)を生成するよりもむしろ、基板レベルでいくつかのSoCを集積することによってよりすばやく実現し得る。通常、そのようなSoCの各々は、とりわけ、プログラム・コードを実行するプロセッサ、及びそのプロセッサによって実行される対象のプログラムを記憶させるメモリを有する。一部の通常の別の配置では、プロセッサによって実行される対象のプログラム・コードを記憶する外部メモリはSoCに結合される。又、通常は、そのようなSoCの各々は、プログラム・コードがSoCにロードされる別個の外部メモリに結合されなければならない。この通常の配置では、各SoCは別個のメモリに結合され、そのことによって電子製品のコストにかなり付加される。
本発明の種々の実施例は、システム・デバッグ処理に通常用いる各SoC上の既存の通信インタフェースを用いることによって、システムにおける複数SoC毎に単一の外部メモリからプログラム・コードを備える。一部の実施例では、SoCの各々が有するJTAG回路はコードをダウンロードするのに用いる通信インタフェースを備えるのに用いられる。
本明細書及び特許請求の範囲の原文における「one embodiment」、「an embodiment」又は同様な表現に対する言及は、実施例に関して記載した特定の特徴、構造、処理又は特性を本発明の少なくとも一実施例が有するということを意味する。よって、本明細書及び特許請求の範囲記載のそのような句又は表現が出てくることは、必ずしも全てが同じ実施例を表しているわけではない。更に、種々の特定の特徴、構造、動作又は特性を、1つ又は複数の実施例における何れかの適切な方法で組み合わせ得る。
頭字語ASICは特定用途向け集積回路を表す。
頭字語JTAGはジョイント・テスト・アクション・グループを表す。米国電気電子技術者協会(IEEE)はIEEE Standard 1149.1, Test Access Port and Boundary Scan Architectureを承認している。
頭字語LSIは大規模集積を表す。
頭字語NVMは非揮発性メモリを表し、電源を入れることなくデータを保持する何れかの適切なデータ記憶手段を有する。非揮発性メモリの例は、制約ではないが、ROM、PROM、EPROM及びフラッシュを有する。
頭字語SoCは、システム・オン・チップを表す。
頭字語TAPは、テスト・アクセス・ポートを表す。
MIPS EJTAGは、組み込みMIPSアーキテクチャ・プロセッサを有するSoCに変更不要デバッグ機能を備えるハードウェア・デバッグ・ファシリティを表す。同様ではあるが代替のICEと表す配置は、ARMプロセッサ・アーキテクチャに利用可能である。
チップ、半導体デバイス、集積回路、LSIデバイス、モノリシック集積回路、ASIC、SoC、マイクロエレクトニック・デバイス及び同様な表現はこの分野では場合によっては同義に用いられる。マイクロエレクトロニック・デバイスは、その他を包含する最広義の語とみなし得る。このマイクロエレクトロニック・デバイスに関しては、信号はそのようなデバイスと、別の回路構成要素との間で物理的な導電接続を介して結合される。接続点は場合によっては、入力、出力、端子、ライン、ピン、パッド、ポート、インタフェース、又は別の変形及び組み合わせとして表す。これらは、本願の開示の目的では同等な語とみなされる。
ダウンローディングの語は、本明細書及び特許請求の範囲では、外部メモリに直結されているか間接的に接続されている、例えばSoCなどの集積回路に、外部メモリから、制約ではないがプログラム・コードを有する情報を転送することを表すのに用いられる。
プログラミング命令は場合によってはコードとして表す。例えば定数などのデータをプログラミング命令とともに備えて実働プログラムを構築することが多くの場合必要である。同様な表現は、制約ではないが、プログラム・コード、ソフトウェア、ファームウェア、及びマイクロコードを有する。
JTAG準拠デバイスは、TCK、TDI、TDO、及びTMSとして各々表す、クロック用ピン、入力データ用ピン、出力データ用ピン、及びモード選択用ピンを有する。TCKはシステム・クロックとは別個のクロック信号を受信するJTAG準拠デバイスの端子であるテスト・クロック入力を表す。TDIは、データがJTAG準拠デバイスにシフト入力される端子であるテスト・データ入力を表す。TDOは、データがJTAG準拠デバイスからシフト出力される端子であるテスト・データ出力を表す。TMSは、JTAG準拠デバイスが動作する対象が1つ又は複数のテスト・モードのうちのどれかを判定するデータを受信する端子であるテスト・モード選択を表す。JTAG準拠デバイスは、例えば、マイクロプロセッサ、ASIC、又はSoCなどの何れかの種類の集積回路であり得る。JTAG準拠デバイスは、TRST#として表す、ロー・アクティブ・リセット信号を受信するピンを有する場合もある。JTAG準拠デバイスは、境界スキャン・レジスタ及びTAPコントローラを有する。TAPコントローラは、JTAG機能を制御するステート・マシンである。境界スキャン・レジスタはいくつかの直列に続くビットから構成され、これらのビットの各々はJTAG準拠デバイスのディジタル・ピンにも結合される。JTAG準拠デバイスは、データ・レジスタ、命令レジスタ、及びバイパス・レジスタなどの別のレジスタを有する場合もある。
EJTAGを備えているSoCは、別の構成部分と通信するよう、IEEE1149.1JTAG標準に規定されている5ピンのJTAGインタフェースを用いる。EJTAG回路は更に、組み込みプロセッサの特性を直接制御する手段を備える。内部的には、EJTAGを備えているSoCは、とりわけ、SoCが内部に有する、組み込みプロセッサ、組み込みプログラム・メモリ及び別の組み込み機能ブロックによって通常用いられるアドレス・バス及びデータ・バスをアクセスする回路を有する。
本発明の種々の実施例は実働環境におけるSoCの既存デバッグ機能を用いて2つ以上のSoCを有する完全なシステムの全体コストを削減する。通常、各SoCはブート・アップする相当外部メモリを有する。本発明の一部の実施例は、SoCのうちの単一のものにインタフェースされる単一の外部メモリにおいて、マルチMoC電子製品のSoC毎にコード画像を記憶させる。ダウンストリームのSoC毎のコード画像はそれに対して、外部メモリにインタフェースされるSoCと、ダウンストリームSoCの各々との間のインタフェースを介して転送される。
図1を参照すれば、通常の電子製品100を示す。通常の電子製品100は、第1SoC104、第2SoC108、並びに第3SoC112、及び第1非揮発性メモリ106、第2非揮発性メモリ110、並びに第3非揮発性メモリ114をその上に配置させたその印刷回路基板102を有する。SoC104、108、並びに112は通常、少なくとも、プログラミング命令をプロセッサが実行するようにするのに必要な回路と、プログラミング命令を記憶するメモリとを有する集積回路である。非揮発性メモリ106、110、並びに114は各々、第1SoC104、第2SoC108、並びに第3SoC112に、それぞれ結合されているSoC及び非揮発性メモリ各々の間でコードを転送し得るように結合される。図1の通常の手法では、それらの別個の非揮発性メモリをアクセスするよう別個の非揮発性メモリ及び経路を各SoCが必要とするということが分かり得る。これらの構成部分と、それらが必要とする空間及び電力は、このようにして構築される電子製品の製造費用と運転費用とを増加させる。
図2を参照すれば、本発明による電子製品200を示す。電子製品200は基板202を有する。基板202は通常、印刷回路基板であるが、集積回路をサポートする何れかの適切なマテリアル若しくは構造であってもよく、その上に配置し得る別の構成部分であってもよい。図2に示すように、第1非揮発性メモリ206、第1SoC204、第2SoC208、及び第3SoC210が基板202上に配置される。SoC204、208、210は同じハードウェア・ファシリティ又は別のハードウェア・ファシリティを有し得るが、通常の実施例では、これらは種々の機能を実施する種々のハードウェア・ファシリティを有する。制約ではなく例として、第1SoCはケーブル・モデム・インタフェースを実施するハードウェア・ファシリティを有し得る一方、第2SoCはMPEG復号器を実施するハードウェア・ファシリティを有し得る。この説明例では、SoC204、208、210各々は、MIPアーキテクチャ・プロセッサとEJTAGデバッグ・ファシリティとを有する。SoCの組み込みメモリに対するアクセスが備えられている限り、別のデバッグ・ファシリティを用い得るということは本願の開示の恩恵を受けている当業者が分かるものである。
第1非揮発性メモリ206及び第1SoC204は、SoC204が第1非揮発性メモリ206の内容をアクセスする、すなわち読み取ることが可能であるように接続される。このことを説明する別の方法としては、第1SoC204が外部メモリ(すなわち、非揮発性メモリ206)に接続される外部メモリ・インタフェースを有するということを述べることがある。SoC204はSoC208に結合されて、データをSoC204からSoC208に通信する。同様に、SoC208はSoC210に結合されて、データをSoC208からSoC210に通信する。そのような構成によって、非揮発性メモリ206から外部メモリ・インタフェースを介してSoC204に対して、外部メモリ・インタフェースを介してSoC204を通じてSoC208に対して、かつ外部メモリ・インタフェースを介して、SoC204を通じ、SoC208を通じてSoC210に対して、例えばコード画像などのデータが転送されることを可能にする。
図3を参照すれば、本発明による電子製品300を示す。図3の電子製品300は図2に示すものと同様であるが、特に、コード画像を単一の外部メモリから複数の集積回路の各々に転送するJTAGインタフェースによって実施する信号経路を示し、複数の集積回路のうちの1つのみが、外部メモリを読み取るよう結合される。第1非揮発性メモリ206、第1SoC204、第2SoC208、及び第3SoC210は基板302上に配置される。JTAGのクロック信号、リセット信号及びモード選択信号(TCLK、TRST#、及びTMS)は第1SoC204、第2SoC208、及び第3SoC210の各々に同様に結合される。これらの信号は、本発明のコード・ダウンロード処理中に第1SoC204によって駆動され、これらの信号は通常、JTAG回路を通常用いる場合、外部の信号源から駆動されることになる。第1非揮発性メモリ206及び第1SoC204は、SoC204が第1非揮発性メモリ206の内容をアクセスする、すなわち読み取ることが可能であるように接続される。SoC204はSoC208に結合されてデータをSoC204からSoC208に通信する。特に、SoC204の出力端子304はSoC208の入力端子306に導電経路308によって結合される。この例示的実施例では、出力端子304はJTAGテスト・データ出力(TDO)ピンであり、入力端子306はJTAGテスト・データ入力(TDI)ピンである。同様に、SoC208はSoC210に結合されてデータをSoC208からSoC210に通信する。特に、SoC208の出力端子310はSoC210の入力端子312に、導電経路によって結合される。この例示的実施例では、出力端子304はJTAGテスト・データ出力(TDO)ピンであり、入力端子306はJTAGテスト・データ入力(TDI)ピンである。そのような構成によって、非揮発性メモリ206から外部メモリ・インタフェースを介してSoC204に対して、外部メモリ・インタフェースを介してSoC204を通じてSoC208に対して、かつ外部メモリ・インタフェースを介して、SoC204を通じ、SoC208を通じてSoC210に対して、例えばコード画像などのデータが転送されることを可能にする。SoC208、210の内部の回路は、例えばそれらの内部メモリに対する、プログラム・コードのロードを制御する。
図3に示す例示的実施例をなお参照すれば、任意的には、戻り経路を作り出すよう、SoC210のテスト・データ出力ピンとSoC204のテスト・データ入力ピンとの間の接続(図示せず)があり得る。そのような接続は、種々のダウンストリームSoCのステータスを判定することをSoC204が要求される場合に備える。
図4を参照すれば、EJTAG機能を有するJTAG準拠ICの概略レベルの略構成図を示す。特に、CPU402、デバッグ・レジスタ404、少なくともプログラム・コードを記憶するシステム・メモリ406、周辺機能ブロック408、及びEJTAGブロック410を有するSoC400を示す。EJTAGブロック410は、TAPコントローラ412、命令、データ、制御、及び境界スキャン・レジスタ414、直接メモリ・アクセス(DMA)モジュール416、及びプロセッサ・アクセス・モジュール418を有する。SoC400は更に、CPU402、デバッグ・レジスタ404、システム・メモリ406、DMAモジュール416、及びプロセッサ・アクセス・モジュール418が結合されるアドレス/データ・バス420を有する。なお、一部の実施例では、システム・メモリはチップの外にあり得る;DMAモジュールは必ずしも、全ての実施例が有する訳でない;更に、一部の実施例はEJTAG回路とプロセッサとの間の直接制御接続及び/又はステータス接続を有し得る。TAPコントローラ412は、JTAGの、クロック信号、リセット信号、モード選択信号、及びデータ入力信号を受信する入力端子を有し、更に、データ出力信号を送信する出力端子を有する。そのような配置はシステム・メモリとの間で情報を転送する機構を備える。
図5を参照すれば、単一の非揮発性メモリと、そのSoC各々がそれ自身のプラーベート外部メモリを有するそのいくつかのSoCとを有する電子製品500の略構成図を示す。この例示的実施例では、EJTAGマスタ・デバイスとして動作することができるSoC502は非揮発性メモリ504に結合される。SoC502は更に、JTAGコンプライアンス・イネーブル信号を受信するノード522に結合される入力端子を有する。JTAGコンプライアンス・イネーブル信号は、JTAGマスタとJTAGスレーブとの間でSoC502の動作モードを変更することに関して用いられる。NVM504は電子製品500における複数のSoCにロードされる対象のプログラム・コード及び/又は別のデータを有し得る。外部メモリ506はSoC502に結合される。外部メモリ506は、とりわけ、NVM504からダウンロードされるプログラム・コード及びデータを記憶させることができる。同様な方法で、図5に示すように、SoC508、512は各々、それら自身のプラーベート外部メモリ510、514に結合される。SoC508、512はEJTAGスレーブ・デバイスとして動作することができる。更に、EJTAGマスタ・デバイスからEJTAGスレーブ・デバイスに制御信号を備える通信経路516が図示するようにSoC502、SoC508、及びSoC512間で結合される。なお、(例えば、クロック、リセット、モードなどの)これらの制御信号は、電子製品500がテスト・モードにおいて動作するよう適切に構成される場合にポート526からのテスタなどの外部ソースによって駆動し得る。通信経路516は通常、例えば、クロック信号、リセット信号及びモード信号などの信号の通信に備える。図5に示すのは更に、SoC508のテスト・データ入力端子にSoC502のテスト・データ出力端子を接続する経路518と、SoC512のテスト・データ入力端子にSoC508のテスト・データ出力端子を接続する経路520である。なお、SoC512のテスト・データ出力はポート524で観察し得るものであり、SoC502のテスト・データ入力をポート528から駆動し得る。更に、SoC512のテスト・データ出力をSoC502のテスト・データ入力に接続する戻りループを作り出し得る。
動作上、例示的電子製品500は、プログラム・コード及び/又はデータなどの情報をNVM504からプライベート外部メモリ506、510及び512に対してSoC502、SoC508、及びSoC512が有するJTAG直列データ経路を利用するEJTAGマスタ・デバイスの制御下で転送し得る。なお、種々の実施例では、SoC502、SoC508、及びSoC512は各々、それら自体の中に特定量のメモリを組み入れさせている場合があり、一部の実施例では、これらの内部メモリはプログラム・コード及び/又はデータを記憶している場合もある。
図6を参照すれば、単一の非揮発性メモリ及びいくつかのSoCを有する電子製品600の略構成図を示し、各SoCはそれ自身のメモリ・バスに対する接続を有する。この例示的実施例は、非揮発性メモリがメモリ・バスから取り除かれ、それによってバス・ローディングを削減し、メモリ・バスに結合されるメモリ・デバイスの動作速度の増加を可能にする、本発明の効果を示す。そのような配置の別の効果は、SoCが(メモリ・アクセス用の異なる制御信号仕様を有し得る)RAM及びNVMよりも、RAMにインタフェースするだけでよいため、SoCのメモリ・コントローラ・ロジックが単純化されるという点である。特に、SoC602は、EJTAGマスタ・デバイスとして動作することができるNVM604に結合される。この例示的実施例では、NVM604は、その中にプロセッサ又はCPUが一体化されていなくてもEJTAGマスタ・デバイスとなる対象の回路を有するフラッシュ・メモリである。SoC602は、SoC612及び614とともに各々がそれぞれメモリ・バス606a、606b、606cに結合される。メモリ・デバイス608a、610a、608b、610b、608c及び610cはメモリ・バス606a、606b、606cに各々結合されて示している。なお、市場で入手可能なメモリ・アーキテクチャとメモリ・アクセス・プロトコルは各種存在する一方、制約ではないが、スタティック・ランダム・アクセス・メモリ又はダイナミック・ランダム・アクセス・メモリなどの何れかの適切なメモリであり得る。更に、2つのメモリ・デバイスがメモリ・バスに結合されて示しているが、本発明は、何れかの特定数のそのようなデバイスに限定されるものでない。
なお図6を参照すれば、通信経路616は、EJTAGマスタNVM604とSoC602、612、及び614との間で結合されて示されている。通信経路616は、制約ではないが、クロック信号、リセット信号及びモード信号などの制御信号を備えるのに適している。通信経路618はSoC602のテスト・データ出力端子をSoC612のテスト・データ入力端子に結合する。通信経路620はSoC612のテスト・データ出力端子をSoC614のテスト・データ入力端子に結合する。
なお、本発明は代替的には、各SoCが、プライベート・メモリ・バスではなく共通メモリ・バスを介して揮発性メモリをアクセスする以外は、図6に示すものと同様な構成において実施し得る。
図7を参照すれば、本発明による例示的処理を示す。第1処理702では、第1プログラム・コードは第1メモリから第1集積回路に転送される。第1メモリは通常、単一のチップであり、通常、例えば、読み取り専用メモリ(ROM)又はフラッシュなどの非揮発性メモリ・チップでもある。本発明によれば、第1メモリは単一のパッケージ又はユニットとしてアドレス指定可能な複数のスタック・メモリ・チップとして実施される場合もある。第1プログラム・コードは通常、第1集積回路中のプロセッサによって実行可能な複数の命令を有する。第1プログラム・コードは、第1集積回路上のプロセッサによって用いることが可能なデータ、すなわち実行不能情報を有する場合もある。第1集積回路上のプロセッサは何れかの適切なアーキテクチャのものであり得る。本発明による、SoCにおいて用い得るプロセッサ・アーキテクチャの一例はMIPSアーキテクチャである。しかし、本発明は何れかの特定のプロセッサ・アーキテクチャに限定されるものでない。第1集積回路は、何れかの任意の機能を実施する場合があり、SoCとして呼ばれる集積回路クラスのものである場合があり、JTAGテスト回路(例えば、境界スキャン・レジスタ、TAPコントローラ、モード選択レジスタ、バイパス・レジスタなど)を有するSoCであり得る。第1ICは、プログラム・コードを記憶し得るメモリを有する(が、上記のように、別の実施例はこのメモリがICの外部にあるようにしている)。第1集積回路は通常、メモリとの間で情報を転送することを可能にするEJTAG回路によって備えられるもののような経路を有する。第1プログラム・コードは第1ICに記憶される(704)。図7に示すように、第2プログラム・コードは第1メモリから第1ICに転送され(706)、第2プログラム・コードは第1ICから、第1ICに結合される第2ICに送信される(708)。第2ICは、何れかの任意の機能を実施する場合があり、SoCとして呼ばれる集積回路クラスのものである場合があり、通信するJTAGテスト回路インタフェースを有するSoCであり得る。第2プログラム・コードは第2ICに記憶される(710)。なお、1つ又は複数の別の集積回路が第1メモリからコードを第1集積回路と、本発明による何れかの中間的に結合される集積回路とを介して受信する場合がある。第1ICから第2ICまでの第2プログラム・コードの伝送は何れかの適切なインタフェース配置によって実現し得る。本発明の一部の実施例では、インタフェース配置は、第1集積回路と第2集積回路が有するJTAGテスト回路が備えるものである。なお、データの転送は、必須ではないが、パイプライン方法で行われる場合がある、すなわち、転送される対象のデータの一部分が移動され、更に、要求データ全てが転送されるまで当該処理が繰り返される。
図8を参照すれば、本発明により別の例示的処理を表す。第1処理802では、第1プログラム・コードが第1メモリから第1ICに転送される。第1メモリは通常、単一チップの非揮発性メモリICである。第1プログラム・コードは通常、第1IC中に組み入れられるプロセッサによって実行可能な複数の命令を有する。第1プログラム・コードはデータを有する場合もある。第1ICは、何れかの任意の機能を実施する場合があり、SoCとして呼ばれる集積回路クラスのものである場合があり、JTAGテスト回路を有するSoCであり得る。第1ICは、プログラム・コードを記憶し得るメモリを有する。第1プログラム・コードは第1ICに記憶される(804)。第1ICは更に、第1プログラム・コードの少なくとも一部分を実行する(806)。第1ICにおける第1プログラム・コードの少なくとも一部分の実行に応じて、第2プログラム・コードは第1メモリから第1ICに転送される(808)。第1プログラム・コードの少なくとも一部分の実行に対する別の応答として、第2プログラム・コードが、第1ICから、第1ICに結合される第2ICに送信される(810)。第2ICは、何れかの任意の機能を実施する場合があり、SoCとして呼ばれている集積回路クラスのものである場合があり、JTAGテスト回路を有するSoCであり得る。本発明の例示的実施例では、第2プログラム・コードは第1ICからそのJTAGデータ出力ピンを介して直列にシフト出力され、第2ICのJTAGデータ入力ピンを介して第2ICに直列にシフト入力される。第2プログラム・コードは、第2IC中に有するプロセッサが実行し得るように第2ICに記憶される(812)。なお、1つ又は複数の別の集積回路がコードを第1メモリから第1ICと、本発明による何れかの中間的に結合される集積回路とを介して受信し得る。
1つの例示的実施例では、第1ICはプログラム・コードを外部メモリからロードし、更に、(直接又は間接に)結合される1つ又は複数のダウンストリーム集積回路にコードをダウンロードし始めることが可能な状態にブート・アップする。そのような実施例では、第1ICは第2ICのメモリ・コントローラを初期化し、コードを第2ICのメモリにダウンロードし、第2ICのメモリから動作する第2ICの組み込みプロセッサを設定する場合がある。同様に、第1ICは複数のダウンストリームICの各々にコードをダウンロードし、それらの各々を開始させる場合がある。
別の例示的実施例では、第1ICは、外部メモリからプログラム・コードをロードするが、コードをダウンストリーム集積回路にダウンロードする処理を始める前に、その完全な機能モードまでではなく限定的な範囲までしかブート・アップしない。1つ又は複数のダウンストリーム・デバイスがプログラム・コードによってロードされた後、第1集積回路はそのブート・アップ処理に戻り得る。並列処理を開始することによって、合計システム・ブート・アップ時間を削減し得るが、それは、第1ICがそのブート・アップ処理を完了する前にダウンストリーム・デバイスがその各々のブート・アップ処理を開始したからである。
更に別の実施例では、コードを2つ以上のダウンストリーム・デバイスに同時にダウンロードし得る。
本発明の種々の例示的実施例を、プロセッサを有する複数の集積回路を有する電子製品と、プロセッサによって実行するよう、プログラム・コードをそれらの集積回路にダウンロードする方法とによって記載したが、本発明は更に広く適用可能である。例えば、実行に適したプログラム・コードではなく、例示的な電子製品における1つ又は複数のICはデータ又は制御情報を受信し得る。上記のように、本発明による、単一メモリから情報を受信するダウンストリーム集積回路は、メモリと、情報を受信するICとの中間に配置される別のICとインタフェースする。更に、JTAGベースのインタフェースは本発明の例示的実施例において記載したが、電子製品が有する、単一の外部メモリと種々の集積回路との間のデータ転送処理に何れかの適切なインタフェースを用い得る。
なお、本発明の種々の例示的実施例に表す単一の外部メモリ・チップは、更に、何れかの任意の機能を実施する回路をその上に有するようにしている。
本発明の種々の実施例は、例えばJTAG準拠のSoCなどの複数の個々の集積回路の既存のハードウェア機能を、新規性を有する方法で組み合わせて、電子製品のサイズ、コスト及び電力消費を削減するシステム及び方法を備える。
一部の実施例では、個々の集積回路のJTAGデバッグ機能を、システムにおけるIC毎のコード画像を、単一のフラッシュ・メモリに記憶させ、EJTAGマスタ・イネーブル・デバイスに添付し、EJTAGマスタ・デバイスがブート・アップされると各標的デバイスにダウンロードすることが可能であるように実働環境で組み合わせる。
なお、本発明は上記実施例に限定されず、本特許請求の範囲記載の範囲内に収まる実施例全てを包含することとする。