(57)【要約】  一実施例では、システムオンチップ（ＳｏＣ）は、ＰＯＲピン（１３５）に接続されるハードウェア・パワーオンリセット（ＰＯＲ）シーケンサ回路（１４２）を含む。ＳｏＣはさらに、ハードウェアＰＯＲシーケンサ回路に接続されるプラットフォーム管理ユニット（ＰＭＵ）（１２２）を含み、ＰＭＵは、１つまたは複数の中央処理装置（ＣＰＵ）（３０４）と、読み出し専用メモリ（ＲＯＭ）（３１２）とを含む。ＳｏＣはさらに、ブートプロセスを実行するよう構成される１つまたは複数の処理装置（１１６、１１８）を含む。ハードウェアＰＯＲシーケンサ回路は、ＰＭＵを初期化するよう構成されている。ＰＭＵの１つまたは複数のＣＰＵは、ＲＯＭ内に格納されるコード（３３４）を実行してプリブート初期化を実施するよう構成されている。
2019505890.tif 000002
【特許請求の範囲】
【請求項１】
システムオンチップ（ＳｏＣ）であって、
ＰＯＲピンに接続されるハードウェア・パワーオンリセット（ＰＯＲ）シーケンサ回路と、
前記ハードウェアＰＯＲシーケンサ回路に接続されているプラットフォーム管理ユニット（ＰＭＵ）回路であって、１つまたは複数の中央処理装置（ＣＰＵ）および読み出し専用メモリ（ＲＯＭ）を含むＰＭＵ回路と、
ブートプロセスを実行するよう構成される１つまたは複数の処理装置と、を備え、
前記ハードウェアＰＯＲシーケンサ回路が、前記ＰＭＵを初期化するよう構成されており、
前記ＰＭＵの前記１つまたは複数のＣＰＵが、プリブート初期化の実施のため、前記ＲＯＭに格納されているコードを実行するよう構成されている、ＳｏＣ。
【請求項２】
テスト回路をさらに備え、
前記プリブート初期化が、前記テスト回路の初期化を含む、請求項１に記載のＳｏＣ。
【請求項３】
１つまたは複数の回路ブロックをさらに含み、
前記プリブート初期化が、前記１つまたは複数の回路ブロックの初期化を含む、請求項１または２に記載のＳｏＣ。
【請求項４】
前記１つまたは複数の回路ブロックが、位相固定ループ（ＰＬＬ）またはシステムモニタの少なくとも１つを含む、請求項３に記載のＳｏＣ。
【請求項５】
ランダムアクセスメモリ（ＲＡＭ）をさらに備え、
前記プリブート初期化が、前記ＲＡＭの初期化を含む、請求項１から４のいずれか一項に記載のＳｏＣ。
【請求項６】
前記ＲＡＭの初期化が、前記ＲＡＭへのゼロロード、前記ＲＡＭに対するメモリ組込み自己テスト（ＭＢＩＳＴ）の実施、または前記ＲＡＭに対する組込み自己修復（ＢＩＳＲ）の実施の少なくとも１つを含む、請求項５に記載のＳｏＣ。
【請求項７】
複数のパワードメインをさらに備え、
前記プリブート初期化が、前記パワードメインの初期化を含む、請求項１から６のいずれか一項に記載のＳｏＣ。
【請求項８】
ランダムアクセスメモリ（ＲＡＭ）をさらに備え、
前記ブートプロセスが、前記ＲＡＭへのブートローダのロードを含む、請求項１から７のいずれか一項に記載のＳｏＣ。
【請求項９】
前記１つまたは複数の処理装置が、第１処理装置と第２処理装置とを含み、前記第１処理装置が、前記ＲＡＭへのブートローダのロードのためＢｏｏｔＲＯＭを実行し、前記第２処理装置が、前記ブートローダを実行する、請求項８に記載のＳｏＣ。
【請求項１０】
前記プリブート初期化が、前記第１処理装置のリセットのリリースを含む、請求項９に記載のＳｏＣ。
【請求項１１】
ハードウェア・パワーオンリセット（ＰＯＲ）シーケンサ回路を利用して１つまたは複数の第１初期化タスクを実施することと、
プラットフォーム管理ユニット（ＰＭＵ）を用いて読み出し専用メモリ（ＲＯＭ）に格納されるコードを実行することにより、１つまたは複数の第２初期化タスクを実施することと、
第１処理装置を利用してブートＲＯＭ内のコードを実行することと、
第２処理装置を利用してブートローダを実行することと、を備えるシステムオンチップ（ＳｏＣ）のブート方法。
【請求項１２】
前記第１初期化タスクが、前記ＰＭＵの初期化を含む、請求項１１に記載の方法。
【請求項１３】
前記第２初期化タスクが、テスト回路の初期化を含む、請求項１１に記載の方法。
【請求項１４】
前記第２初期化タスクが、１つまたは複数の回路ブロックの初期化を含む、請求項１１に記載の方法。
【請求項１５】
前記第１処理装置または前記第２処理装置の少なくとも１つからの１つまたは複数の要求を前記ＰＭＵにて処理すること、をさらに備える、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示の実施例は、一般に電子回路に関し、特に専用のプロセッサによるシステム・オン・チップ（ＳｏＣ）のハードウェア・パワーオン初期化に関する。
【背景技術】
【０００２】
背景技術
典型的なシステム・オン・チップ（ＳｏＣ）では、システムのブート準備のため特定のシーケンスで実施されなくてはならない多くの初期化タスクがある。パワーオン・シーケンシングタスクはもっぱら、ハードウェア・ステートマシンおよび関連の回路により扱われる。パワーオン・シーケンシングタスクの例は、シーケンシングリセット、電源の監視、クロック回路の初期化、テストの実施、メモリの消去等を含む。
【０００３】
ハードウェア・ステートマシンおよび関連回路の回路設計における欠陥は、ＳｏＣのブートを妨げる可能性がある。ＳｏＣ自体は通常、量産の前に試験および検証が行われる。パワーオン・シーケンシングタスクにおける欠陥により、ハードウェア・ステートマシンおよび関連回路の再設計が必要になる。さらに、要求されるパワーオンシーケンシングを完了させるため必要な情報は、検証時まで不明であり得る。パワーオンシーケンシングを実施するハードウェア・ステートマシンおよび関連回路における何らかの設計変更は、コストがかかり、かつＳｏＣの最終検証を遅延させる可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
発明の概要
専用のプロセッサによるシステム・オン・チップ（ＳＯＣ）のハードウェア・パワーオン初期化を行う技術について説明する。一実施例では、ＳｏＣは、ＰＯＲピンに接続されるハードウェア・パワーオンリセット（ＰＯＲ）シーケンサ回路を含む。ＳｏＣはさらに、ハードウェアＰＯＲシーケンサ回路に接続されるプラットフォーム管理ユニット（ＰＭＵ）を含み、ＰＭＵは１つまたは複数の中央処理装置（ＣＰＵ）および読み出し専用メモリ（ＲＯＭ）を含む。ＳｏＣはさらに、ブートプロセスを実行するよう設定されている１つまたは複数の処理装置を含む。ハードウェアＰＯＲシーケンサ回路は、ＰＭＵを初期化するよう構成されている。ＰＭＵの１つまたは複数のＣＰＵは、プリブート初期化を実施するため、ＲＯＭに格納されているコードを実行するよう構成されている。
【０００５】
別の実施例では、ＳｏＣのブート方法は、ハードウェア・パワーオンリセット（ＰＯＲ）シーケンサ回路を利用して１つまたは複数の第１初期化タスクを実施することを含む。この方法はさらに、プラットフォーム管理ユニット（ＰＭＵ）を利用して、読み出し専用メモリ（ＲＯＭ）内に格納されているコードを実行することにより第２初期化タスクを実施することを含む。この方法はさらに、第１処理装置を利用してブートＲＯＭ内のコードを実行することを含む。方法はさらに、第２処理装置を利用して、ブートローダを実行することを含む。
【０００６】
別の実施例では、非一時的なコンピュータ可読媒体に命令が格納されており、ＳｏＣ内のプラットフォーム管理ユニット（ＰＭＵ）により命令が実行されると、ＰＭＵが以下からなる方法を実施する。すなわち、ＳｏＣ内のテスト回路の初期化、ＳｏＣ内の１つまたは複数の回路ブロックの初期化、ランダムアクセスメモリ（ＲＡＭ）の初期化、ＳｏＣ内のパワードメインの初期化、ＳｏＣ内の第１処理装置によるブートプロセスの開始である。
【０００７】
これらおよびその他の態様は、以下の詳細な説明と共に理解されるものとする。
図面の簡単な説明
上述の特徴の詳細が理解されるよう、上に概要を簡潔に述べたが、実施例を参照して、より詳細な説明を行い、そのいくつかは添付の図面に示す。しかし、添付の図面は典型的な実施例を示しているのみであり、範囲を限定するものとみなされるべきではない。
【図面の簡単な説明】
【０００８】
【図１Ａ】一実施例に係るプログラマブルシステムを示すブロック図である。
【図１Ｂ】図１ＡのプログラマブルＳｏＣのブロック図であり、異なるパワードメインを示している。
【図２】一実施例に係るプログラマブルＳｏＣのブート方法を示すフローチャートである。
【図３】一実施例に係るプラットフォーム管理ユニット（ＰＭＵ）を示すブロック図である。
【図４】一実施例に係り、ハードウェア・パワーオンリセット（ＰＯＲ）により実施される事前ＰＭＵ初期化方法を示すフローチャートである。
【図５Ａ】一実施例に係りＰＭＵにより実施されるプリブート初期化方法を示す。
【図５Ｂ】一実施例に係りＰＭＵにより実施されるプリブート初期化方法を示す。
【図６】ＰＭＵのサーバモードにおける要求の処理方法の実施例を示すフローチャートである。
【図７】一実施例に係るブートプロセスの初期化方法を示すフローチャートである。
【図８】一実施例に係るブート方法を示すフローチャートである。
【発明を実施するための形態】
【０００９】
容易に理解できるようにするため、各図面に渡って同一の要素を示す際、可能な場合は同一の符号を使用している。一実施例における要素が、その他の実施例でも有益に利用され得ることが期待される。
【００１０】
詳細な説明
図面を参照して以下に様々な特徴を説明する。図面は縮尺通りであることも、そうでない場合もあり、類似の構造および機能の要素は、全図面に渡って類似の符号で示される。図面は、特徴の説明を容易にするためのものであると理解されるべきである。図面は特許請求された発明の包括的な説明または特許請求された発明の範囲を限定するものではない。さらに、図示される実施例は、示される態様または長所のすべてを有する必要はない。特定の実施例に伴い説明される態様または長所は、必ずしもその実施例に限定されるものではなく、そのように図示または明確に記載されていなくても、その他の実施例でも実施されることが可能である。
【００１１】
図１Ａは、一実施例に係るプログラマブルシステム１００のブロック図である。プログラマブルシステム１００は、ダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）１０８と、不揮発性メモリ（ＮＶＭ）１１０と、各種サポート回路１１２とに接続されるプログラマブル・システムオンチップ（ＳｏＣ）１０２を備える。サポート回路１１２は、プログラマブルＳｏＣ１０２の動作を支援するよう構成される発振器、電圧源等を含むことが可能である。ＤＲＡＭ１０８は、任意の種類のＤＲＡＭ、たとえばシンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ＤＤＲ−ＳＤＲＡＭ等を含むことが可能である。ＮＶＭ１１０は、任意の種類の不揮発性メモリ、例えば任意の種類のフラッシュメモリ、セキュアデジタル（ＳＤ）メモリ等を含むことが可能である。
【００１２】
プログラマブルＳｏＣ１０２は、処理システム（「ＰＳ１０４」）およびプログラマブルロジック（「ＰＬ１０６」）を含む。ＰＳ１０４は、処理装置１１４と、インターコネクト１２４と、ＲＡＭ１２６と、ＲＯＭ１２８と、メモリインタフェース１３０と、周辺回路部１３２と、入力／出力（ＩＯ）回路１３４と、クロック／リセット回路１３６と、テスト回路１３８と、レジスタ（ｒｅｇｓ）１４０と、ハードウェア（ＨＷ）パワーオンリセット（ＰＯＲ）シーケンサ１４２と、電子ヒューズ１４４と、システムモニタ１６８と、ＰＳ−ＰＬインタフェース１４６と、ＰＳピン１３５とを含む。処理装置１１４は、異なる種類の処理装置、例えばアプリケーションプロセッサ（ＡＰＵ）１１６と、リアルタイムプロセッシングユニット（ＲＰＵ）１１８と、構成およびセキュリティユニット（ＣＳＵ）１２０と、プラットフォーム管理ユニット（ＰＭＵ）１２２とを含むことが可能である。
【００１３】
ＰＬ１０６は、プログラマブルファブリック１５０と、構成メモリ１４８と、硬化回路１６２と、レジスタ１７２と、テスト回路１７０と、電子ヒューズ１７４と、クロック生成および分配回路１７６と、構成ロジック１６６と、ＰＬピン１４９とを含む。プログラマブルファブリック１５０は、構成可能論理ブロック（ＣＬＢ）１５２と、ブロックＲＡＭ（ＢＲＡＭ）１５４と、入力／出力ブロック（ＩＯＢ）１５６と、デジタル信号処理ブロック（ＤＳＰ）１５８と、プログラマブルインターコネクト１６０とを含む。硬化回路１６２は、マルチギガビットトランシーバ（ＭＧＴ）１６４、周辺部品インタフェースエクスプレス（ＰＣＩｅ）回路（「ＰＣＩｅ１６９」）、アナログデジタル変換器（ＡＤＣ）１６５等を含む。
【００１４】
ＰＳ１０４に関して、処理装置１１４はそれぞれ、１つまたは複数の中央処理装置（ＣＰＵ）および関連の回路、たとえばメモリ、割り込みコントローラ、ダイレクトメモリアクセス（ＤＭＡ）コントローラ、メモリ管理ユニット（ＭＭＵ）、浮動小数点演算ユニット（ＦＰＵ）等を含む。インターコネクト１２４は、処理装置１１４を相互接続するよう、ならびにＰＳ１０４内のその他のコンポーネントを処理装置１１４と相互接続するよう構成される各種スイッチ、バス、通信リンク等を含む。
【００１５】
ＲＡＭ１２６は、１つまたは複数のＲＡＭモジュールを含み、これはＰＳ１０４全体に分配されることが可能である。例えば、ＲＡＭ１２６は、バッテリーバックアップ式ＲＡＭ（ＢＢＲＡＭ１７７）、オンチップメモリ（ＯＣＭ）１２７、密結合メモリ（ＴＣＭ）１２９等を含むことが可能である。１つまたは複数の処理装置１１４がＲＡＭ１２６のＲＡＭモジュールを含むことが可能である。同様に、ＲＯＭ１２８は、１つまたは複数のＲＯＭモジュールを含み、これはＰＳ１０４全体に分配されていることが可能である。例えば、処理装置１１４の１つまたは複数が、ＲＯＭ１２８のＲＯＭモジュールを含むことが可能である。レジスタ１４０は、ＰＳ１０４全体に分配される多数のレジスタを含む。レジスタ１４０は、ＰＳ１０４用の様々な設定およびステータス情報を格納していることが可能である。
【００１６】
メモリインタフェース１３０は、ＤＲＡＭ１０８へのアクセス用のＤＲＡＭインタフェースを含むことが可能である。メモリインタフェース１３０は、ＮＶＭ１１０へのアクセス用のＮＶＭインタフェースも含むことが可能である。一般に、メモリインタフェース１３０は、任意の種類の揮発性メモリインタフェース（例えばＤＲＡＭ、ダブルデータレート（ＤＤＲ）ＤＲＡＭ、スタティックＲＡＭ（ＳＲＡＭ）等）、および任意の種類の不揮発性メモリインタフェース（例えばＮＡＮＤフラッシュ、ＮＯＲフラッシュ、ＳＤメモリ等）を含むことが可能である。
【００１７】
周辺回路部１３２は、ＰＳ１０４へのインタフェースを提供する１つまたは複数のコンポーネントを含むことが可能である。周辺回路部１３２は、周辺コンポーネント、ならびに外部の周辺コンポーネントに接続するためのＩＯインタフェースを含むことが可能である。例えば、周辺回路部１３２は、グラフィック処理装置（ＧＰＵ）、ディスプレイインタフェース（例えばディスプレイポート、高解像度マルチメディア・インタフェース（ＨＤＭＩ（登録商標））ポート等）、ユニバーサルシリアルバス（ＵＳＢ）ポート、イーサネット（登録商標）ポート、ユニバーサル非同期トランシーバ（ＵＡＲＴ）ポート、シリアル周辺回路部インタフェース（ＳＰＩ）ポート、汎用ＩＯ（ＧＰＩＯ）ポート、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）ポート、ＰＣＩｅポート等を含むことが可能である。周辺回路部１３２は、ＩＯ回路１３４に接続されることが可能である。ＩＯ回路１３４は、周辺回路部１３２をＰＳピン１３５のＩＯピンに接続するよう構成されるマルチプレクサ回路、シリアライザ／デシリアライザ（ＳＥＲＤＥＳ）回路、ＭＧＴ等を含むことが可能である。ＩＯ回路１３４は、周辺回路部１３２の１つまたは複数を内部でＰＬ１０６に接続することも可能である。
【００１８】
テスト回路１３８は、ＰＳ１０４をテストおよび／または初期化するよう構成されるバウンダリスキャンチェーン、内部スキャンチェーン、テストアクセスポート（ＴＡＰ）コントローラおよびその他のジョイントテストアクショングループ（ＪＴＡＧ）回路、デバッグアクセスポート（ＤＡＰ）コントローラ、ロジック組込み自己テスト（ＬＢＩＳＴ）エンジン、メモリＢＩＳＴ（ＭＢＩＳＴ）エンジン、組込み自己修復（ＢＩＳＲ）エンジン、スキャンチェーンクリアエンジン等を含むことが可能である。クロック／リセット回路１３６は、ＰＳ１０４により使用されるクロックを生成するため、様々な発振器、周波数シンセサイザ等を含むことが可能である。例えばクロック／リセット回路１３６は、複数の位相固定ループ（ＰＬＬ１３７）を含むことが可能である。システムモニタ１６８は、プログラマブルＳｏＣ１０２における各種センサ（例えば温度センサ、電圧センサ等）からの測定結果を得るためのロジックを含むことが可能である。ＨＷ  ＰＯＲシーケンサ１４２は、以下に説明されるように、ＰＭＵ１２２の動作のため、プログラマブルＳｏＣ１０２の一部を初期化するよう構成されるハードウェア・ステートマシンおよび関連のロジックのような回路構成を含むことが可能である。電子ヒューズ１４４は、プログラマブルＳｏＣ１０２用の各種設定およびデータを格納するためのワンタイム・プログラマブルメモリを形成することが可能である。ＰＳピン１３５は、ＰＳ１０４の様々なコンポーネントへの外部インタフェース、例えばＩＯ回路１３４、メモリインタフェース１３０、テスト回路１３８等を提供する。ＰＳピン１３５は、例えば電圧源ピン、クロックピン、ＰＯＲピン、ブートモードピン等のその他様々なピンも含む。ＰＳ−ＰＬインタフェース１４６は、ＰＬ１０６とＰＳ１０４の各種コンポーネント、例えば周辺回路部１３２、ＲＡＭ１２６、処理装置１１４等との間のＩＯインタフェースを含むことが可能である。
【００１９】
ＰＬ１０６に関して、構成ロジック１６６は、構成ビットストリームを構成メモリ１４８内へロードするための回路構成を含むことが可能である。いくつかの実施例では、構成ロジック１６６は、ブートプロセス中にＰＳ１０４から構成ビットストリームを受信することが可能である。別の実施例では、構成ロジック１６６は、ＰＬ１０６に接続される別のポート（例えばテスト回路１７０の一部であるＪＴＡＧポート）から構成ビットストリームを受信することが可能である。構成メモリ１４８は、例えばプログラマブルファブリック１５０および硬化回路１６２のプログラマブル機能のようなＰＬ１０６のプログラマブル機能を制御する複数のＳＲＡＭセルを含む。
【００２０】
プログラマブルファブリック１５０は、様々な回路を実行するよう構成されることが可能である。プログラマブルファブリック１５０は、ＣＬＢ１５２、ＢＲＡＭ１５４、ＩＯＢ１５６、ＤＳＰ１５８を含む多数の異なるプログラマブルタイルを含むことが可能である。ＣＬＢ１５２は、ユーザロジックを実施するようプログラム可能である構成可能ロジック素子を含むことが可能である。ＢＲＡＭ１５４は、異なるメモリ構成を実施するよう構成可能であるメモリ素子を含むことが可能である。ＩＯＢ１５６は、プログラマブルファブリック１５０へ、またここから信号を送受信するよう構成可能であるＩＯ回路を含む。ＤＳＰ１５８は、異なるデジタル処理構造を実施するよう構成可能であるＤＳＰ素子を含むことが可能である。プログラマブルインターコネクト１６０は、複数のプログラマブルインターコネクト素子および関連のルーティングを含むことが可能である。プログラマブルインターコネクト１６０は、回路設計を実施するため様々なプログラマブルタイルを相互接続するようプログラム可能である。
【００２１】
硬化回路１６２は、例えばＭＧＴ１６４、ＰＣＩｅ回路１６９、ＡＤＣ回路１６５等の専用の機能を有する様々な回路を含む。硬化回路１６２は、ＩＣの一部として製造され、プログラマブルファブリック１５０とは異なり、構成ビットストリームのロードによって製造後に機能がプログラムされるのではない。硬化回路１６２は一般に、例えば特定の機能を有する専用の回路ブロックおよびインターコネクトを有するとみなされている。硬化回路１６２は、１つまたは複数の動作モードを有することが可能であり、これはパラメータ設定により設定または選択可能である。パラメータ設定は、例えば１つまたは複数のレジスタ１７２に値を保存することにより実現可能である。動作モードは、例えば構成ビットストリームを構成メモリ１４８へロードする、またはプログラマブルＳｏＣ１０２の動作時に動的に行うことにより設定可能である。
【００２２】
クロック生成および分配回路１７６は、ＰＬ１０６全体でクロックを生成および分配するためＰＬＬ、クロックバッファ等を含むことが可能である。テスト回路１７０は、ＰＬ１０６のテスト用に、バウンダリスキャンチェーン、内部スキャンチェーン、ＴＡＰコントローラおよびその他のＪＴＡＧ回路等を含むことが可能である。レジスタ１７２はＰＬ１０６全体で分配されることが可能である。例えば、レジスタ１７２は、硬化回路１６２のパラメータ設定のためのレジスタを含むことが可能である。ＰＬピン１４９は、例えばＩＯＢ１５６、ＭＧＴ１６４、ＰＣＩｅ回路１６９、ＡＤＣ回路１６５、テスト回路１７０等のようなＰＬ１０６の様々なコンポーネントへの外部インタフェースを提供する。
【００２３】
図１Ｂは、プログラマブルＳｏＣ１０２のブロック図であり、異なるパワードメインを示している。例えば、プログラマブルＳｏＣ１０２は、低電力ドメイン（ＬＰＤ）１９０およびフルパワードメイン（ＦＤＰ）１９２のような複数のパワードメインを含むことが可能である。実施例では２つのパワードメインが示されているが、プログラマブルＳｏＣ１０２は、任意の数のパワードメインを含むことが可能である。ＰＳ１０４のコンポーネントおよびＰＬ１０６のコンポーネントは、パワードメインにおいて分配されることが可能である。例えば、ＰＳ１０４内では、ＬＰＤ１９０は、ＲＰＵ１１８、ＣＳＵ１２０、ＰＭＵ１２２、１つまたは複数の周辺回路部１３２、ＲＡＭ１２６内の１つまたは複数のＲＡＭ（例えばＯＣＭ）等を含むことが可能である。ＰＳ１０４内では、ＦＰＤ１９２は、ＡＰＵ１１６、１つまたは複数の周辺回路部１３２等（例えばＧＰＵ、ディスプレイインタフェース、ＳＡＴＡポート、ＰＣＩｅポート等）を含むことが可能である。パワードメインは、複数のアイランドを含むことが可能である。したがって、ＬＰＤ１９０はアイランド１９４を含み、ＦＰＤはアイランド１９６を含むことが可能である。各ドメイン内のコンポーネントは、アイランド内でさらに分割されることが可能である。例えば、ＬＰＤ１９０は、ＵＳＢポートを含むことが可能であり、ＵＳＢポートはアイランド１９４の異なるものにあることが可能である。パワードメインは、相互に独立して電源が入れられることが可能である。また、各パワードメイン内のアイランドは、相互に独立して電源が入れられることが可能である。以下でさらに説明するように、ＰＭＵ１２２は、プログラマブルＳｏＣ１０２内でパワードメインおよびアイランドを制御するよう構成されている。
【００２４】
図１Ａに戻ると、プログラマブルＳｏＣ１０２を構成するため、ユーザは１つまたは複数のシステムイメージ１７８をＮＶＭ１１０に保存することが可能である。システムイメージ１７８は、ヘッダ１８１と、第１ステージブートローダ（ＦＳＢＬ）１８０と、ビットストリーム１８２と、動作システム（ＯＳ）またはその他のソフトウェア（「ＯＳ／ＳＷ１８４」）とを含むことが可能である。ＰＳピン１３５のＰＳ１０４がデアサートされた後、ＰＳ１０４はブートプロセスを開始する。ＰＳ１０４は、ＲＯＭ１２８内のブートコード（「ＢｏｏｔＲＯＭ」と称される）を実行し、これがヘッダ１８１を読み出し、続いてＦＳＢＬ１８０を読み出し、認証し、ＲＡＭ１２６内に（例えばＯＣＭ）格納する。実施例では、ＣＳＵ１２０は、ＢｏｏｔＲＯＭを実行してＦＳＢＬ１８０をロードすることが可能である。ＡＰＵ１１６またはＲＰＵ１１８は、ＦＳＢＬ１８０を実行するため使用可能であり、これはビットストリーム１８２をＰＬ１０６にロードし、ＯＳ／ＳＷ１８４の実行を開始することが可能である。
【００２５】
ＣＳＵ１２０がＢｏｏｔＲＯＭの実行を開始できる前に、ＰＳ１０４は初期化されなくてはならない（パワーオン初期化と称する）。パワーオン初期化は、パワーオンリセット（例えばコールドリセット）またはシステムリセット（例えばウォームリセット）用に実施されるタスクを含む。例示的な初期化タスクは、ＰＳ１０４の異なる部分のリセットのシーケンシング、電源の監視、クロック／リセット回路１３６の初期設定、メモリおよびロジックに関するテスト回路１３８内のＢＩＳＴエンジンの制御、リダンダンシーエンジン（例えばＢＩＳＲエンジン）の制御、ＰＳ１０４の異なる部分間（例えばパワードメイン、パワーアイランドｅｔｃ）の分離の制御、セキュリティ要件の一部としてＲＡＭ１２６のクリアを含む。いくつかのＳｏＣでは、これらの初期化タスクは、ハードウェア・ステートマシンおよび関連回路を用いて完全に実施される。通常、このようなハードウェアにおける何らかのエラーにより、装置のブートが阻害され、これにより製造時の検証および試験が困難になる。さらに、場合によっては、初期化タスクのシーケンシングを完了するための情報が、装置の製造および試験後まで不明となる。これにより、シーケンシングハードウェアに対してコストのかかる設計変更が必要となってしまう。
【００２６】
実施例では、ＨＷ ＰＯＲシーケンサ１４２が、ＰＭＵ１２２の動作を可能にするため最低限の数の初期化タスクを実施するよう構成されている。その後、ＰＭＵ１２２は、ＲＯＭ１２８内に格納されているコードの実行によりパワーオン初期化を完了する。パワーオン初期化が完了すると、ＰＭＵ１２２は、ＢｏｏｔＲＯＭの実行をＣＳＵ１２０に開始させる。パワーオン初期化タスクのシーケンシングの修正は、ＲＯＭ１２８内に格納されたパワーオン初期化コードの修正により達成可能である。ＲＯＭ１２８の変更に必要なのは、メタルマスクの変更だけであり、これは低コストであるとともに、設計の再実施も必要としない。ＨＷ ＰＯＲシーケンサ１４２は最低限の初期化しか行わないため、ブートシーケンスの試験の際に高コストのかかる設計変更が必要となることはないだろう。
【００２７】
図１Ａは、専用のプロセッサによるＳｏＣのパワーオン初期化が使用可能である一実施例を示している。ここで説明されるパワーオン初期化方法は、図１Ａに示されるものと異なる構造を有するＳｏＣに適用可能である。例えば、このパワーオン初期化法は、ＰＬ１０６がなく、すべての硬化回路（例えば特定用途向け集積回路（ＡＳＩＣ））を含むＳｏＣにおいて使用可能である。さらに、ＳｏＣに含まれるＰＳは、ＰＳ１０４と異なる構造を有することができる。一般に、ＳｏＣ内のＰＳは、最低限の初期化タスクを実施するためのハードウェアシーケンサと、パワーオン初期化を完了するためＲＯＭに格納されているコードの実行のためのプロセッサとを含むことが可能である。
【００２８】
図２は、一実施例に係り、プログラマブルＳｏＣ１０２のブート方法を示すフローチャートである。ブートプロセスは、４つのステージ２０２から２０８を含む。第１ステージ２０２では、ＨＷ  ＰＯＲシーケンサ１４２は、事前ＰＭＵ初期化を実施する。事前ＰＭＵ初期化は、ＰＭＵ１２２の動作準備のため、最低限のセットの初期化タスクを含む。第２ステージ２０４ではＰＭＵ１２２は、ＲＯＭ１２８に格納されているプリブート初期化コードを実行することによりプリブート初期化を実施する。プリブート初期化コードは、ＰＳ１０４をＢｏｏｔＲＯＭの実行のために準備する初期化タスクのセットを規定する。プログラマブルＳｏＣ１０２のパワーオン初期化は、ステージ２０２および２０４が実行された後に完了する。第３ステージ２０６では、ＣＳＵ１２０が、ブートプロセスを開始するため、ＢｏｏｔＲＯＭを実行する。ＢｏｏｔＲＯＭは、ＰＳ１０４のさらなる初期化、およびＦＳＢＬ１８０の読み出し、認証およびトリガ実行のためのタスクを含むことが可能である。第４ステージ２０８では、ＡＰＵ１１６またはＰＲＵ１１８は、ＦＳＢＬ１８０を実行する。ＦＳＢＬ１８０は、ＰＳ１０４のさらなる初期化、ＰＬ１０６の初期化、およびＯＳ／ＳＷ１８４へのハンドオフのためのタスクを含むことが可能である。ステージ２０２から２０８の実施例を以下に詳細に説明する。
【００２９】
図３は、一実施例に係るＰＭＵ１２２を示すブロック図である。ＰＭＵ１２２は、複数の冗長サブシステム３０２と、ＲＯＭ３１２と、ＲＡＭ３１４と、以下に説明されるその他のコンポーネントとを含む。各冗長サブシステム３０２は、ＣＰＵ３０４と、ＲＯＭアービタ３０６と、ＲＡＭアービタ３０８とを含む。冗長サブシステム３０２は、多数決回路（voter）３１０に接続されている。多数決回路３１０は、冗長サブシステム３０２の出力を比較し、「正しい出力」を判定するよう構成されている。例えば、２つの冗長サブシステム３０２が、所定の処理に関して第１の値を出力する場合、１つの冗長サブシステム３０２が第１値とは異なる第２の値を出力すると、多数決回路３１０は、第１値を出力として選択することが可能である。ＲＯＭ３１２、ＲＡＭ３１４、およびその他のコンポーネントは、冗長サブシステム３０２からの出力を得て、冗長サブシステム３０２への入力を行うため、多数決回路３１０に接続している。ＲＯＭアービタ３０６は、冗長サブシステム３０２内の各ＣＰＵ３０４の命令およびデータバスにおいてＲＯＭ３１２へのアクセスを調停する。同様に、ＲＡＭアービタ３０８は、冗長サブシステム３０２内の各ＣＰＵ３０４の命令およびデータバスにおいてＲＡＭ３１４へのアクセスを調停する。ＲＡＭアービタ３０８は、外部接続用にＲＡＭ３１４へのアクセスを調停することも可能である。
【００３０】
ＰＭＵ１２２は、スイッチ３１６、グローバルレジスタ３２６、ローカルレジスタ３１８、ＩＯ回路３２０、デバッグ回路３２４、ＲＯＭ検証回路３３０のようなその他のコンポーネントを含むことが可能である。スイッチ３１６は、インターコネクト１２４への外部インタフェースと、グローバルレジスタ３２６へのインタフェースと、多数決回路３１０へのインタフェースとを含む。グローバルレジスタ３２６は、ＰＳ１０４内の値（例えばＰＳエラー）にアクセスするため、ＰＳ１０４への外部インタフェースを含むことが可能である。ローカルレジスタ３１８は、多数決回路３１０へのインタフェースと、パワードメインの制御のためＰＳ１０４への外部インタフェースとを含む。ＩＯ回路３２０は、多数決回路３１０へのインタフェースと、外部出力インターフェース（ＯＵＴ）と、外部入力インターフェース（ＩＮ）とを含む。デバッグ回路３２４は、多数決回路３１０へのインタフェースと、テスト回路１３８のテストアクセスポート（ＴＡＰ）３２８に接続される外部インタフェースとを含む。ＰＭＵ１２２は、クロック／リセット回路１３６、ＨＷ  ＰＯＲシーケンサ１４２、電子ヒューズキャッシュ３３２への外部インタフェースを含む。
【００３１】
ＨＷ  ＰＯＲシーケンサ１４２は、ＰＭＵ１２２のリセットを制御する。クロック／リセット回路１３６は、ＰＭＵ１２２のためのクロックを提供する。ＨＷ  ＰＯＲシーケンサ１４２が、ＰＭＵ１２２のリセットをリリースすると、ＲＯＭ検証ロジック３３０は、ＲＯＭ３１２内のコードの検証を開始する。ＲＯＭ３１２の検証後、ＣＰＵ３０４のリセットがリリースされ、冗長サブシステム３０２内のＣＰＵ３０４はＲＯＭ３１２内のコードの実行を開始する。ＲＯＭ３１２は、ＰＯＲシーケンシングコード３３４を格納しており、これはパワーオン初期化を完了するための初期化タスクのシーケンスを規定している。ＣＰＵ３０４は、ＨＷ  ＰＯＲシーケンサ１４２内のレジスタにアクセスし、エラー情報、リセット状態情報（例えばリセットがＰＯＲまたはシステムリセットか）等を取得することが可能である。ＣＰＵ３０４はさらに、ＰＳ１０４用の各種設定およびパラメータを取得するため、電子ヒューズキャッシュ３２２にアクセス可能である。ＨＷ  ＰＯＲシーケンサ１４２は、ＰＯＲに応じて電子ヒューズ１４４の状態を電子ヒューズキャッシュ３２２へ読み込むことが可能である。電子ヒューズキャッシュ３２２は、ＲＡＭ１２６に格納されていることが可能であり、電子ヒューズ１４４へのアクセスを最小限に抑えるために使用される。ＰＯＲシーケンシングコード３３４は、エラー情報、リセット状態情報、設定情報をパラメトリック入力として用いて、初期化タスクを実施することが可能である。
【００３２】
ＰＭＵ１２２は、ＰＯＲシーケンシングコード３３４に示される初期化タスクを達成するため、ＰＳ１０４のコンポーネント制御に様々な出力インタフェースを使用することが可能である。例えば、冗長サブシステム３０２は、スイッチ３１６およびインターコネクト１２４を通じてＰＳ１０４のコンポーネントにアクセス可能である。冗長サブシステム３０２は、ローカルレジスタ３１８内の値を設定し、パワードメインおよび／またはパワードメイン内のアイランドを制御することが可能である。冗長サブシステム３０２は、ＧＰＩＯを介して、ＩＯ回路３２０を通じて情報を出力可能である（例えば初期化タスクの際に生成されたエラー／状態情報）。同様に、冗長サブシステム３０２は、グローバルレジスタ３２６内の情報を更新することが可能である（例えば初期化タスクの際に生成されたエラー／状態情報）。
【００３３】
パワーオン初期化が完了した後、ＰＭＵ１２２は、ＰＳ１０４内の他のコンポーネントからの要求を処理するサービスモードに入ることが可能である。サービスモード用のコードは、ＲＯＭ３１２に格納されていることが可能である。サービスモードの間は、ＰＭＵ１２２は、その各入力インタフェースを通して要求を受け、以下に説明するいずれかの出力インタフェースを用いて出力を提供することが可能である。例えば、ＰＭＵ１２２は、ＰＳ１０４内の他のコンポーネントからの入力をインターコネクト１２４およびスイッチ３１６を通して受けることが可能である。別の実施例では、ＩＯ回路３２０は割り込みコントローラ３２３を含むことが可能である。ＰＭＵ１２２は、ＰＳ１０４内の別のコンポーネントからの割り込み要求を通じて入力を受けることが可能である。
【００３４】
図４は、一実施例に係るＨＷ  ＰＯＲシーケンサ１４２により実施される事前ＰＭＵ初期化方法を示すフローチャートである。図４はすなわち、図２に示される方法２００におけるステージ２０２の実施例を示す。ステップ４０２では、ＨＷ  ＰＯＲシーケンサ１４２は、ＰＳピン１３５のＰＯＲピンを監視する。ＰＯＲピンがデアサートされると、ステップ４０４でＨＷ  ＰＯＲシーケンサ１４２は、ＰＳピン１３５のブートモードピンからのブートモードを取得する。プログラマブルＳｏＣ１０２は、ＮＯＲフラッシュ、ＮＡＮＤフラッシュ、ＳＤメモリ、ＪＴＡＧ等のような様々なブートモードを含むことが可能である。
【００３５】
ステップ４０６では、ＨＷ  ＰＯＲシーケンサ１４２は、電子ヒューズ１４４をキャッシュする。ステップ４０８では、ＨＷ  ＰＯＲシーケンサ１４２は、テストモードに入るか否かを判定する。例えば、プログラマブルＳｏＣ１０２は、製造時にアクセス可能である特殊なテストモードという特性を含むことが可能である（例えば製造者により提供されるテスト容易化設定（ＤＦＴ）モード）。テストモードが呼び出されると、ステップ４１０でＨＷ  ＰＯＲシーケンサ１４２は、セキュリティのためＢＢＲＡＭ１７７内のキーデータをクリアすることが可能である。ステップ４１２では、ＨＷ  ＰＯＲシーケンサ１４２は、テスト回路１３８に制御を受け渡す。テストモードが呼び出されなかった場合は、方法４００はステップ４１４へ進められる。一実施例では、テストモードは電子ヒューズ１４４内の設定により解除されることが可能である（例えば製造時にテストされた後、ＤＦＴモードは解除が可能）。ステップ４０２〜４１２は、プログラマブルＳｏＣ１０２の初期化の第１段階４５０の一部であることが可能である。
【００３６】
ステップ４１４は、ＰＭＵ１２２の動作のためのプログラマブルＳｏＣ１０２の初期化の第２段階を開始させることが可能である。ステップ４１４では、ＨＷ  ＰＯＲシーケンサ１４２は、ＰＭＵ１２２に関してスキャンクリア動作を実施することが可能である。スキャンクリア動作により、ＰＭＵ１２２内のスキャンチェーンがクリアされ、クリア動作を確認するためデータをリードバックする。スキャンチェーンは、デバッグ回路３２４の一部であるバウンダリスキャンチェーンおよび／または内部スキャンチェーンを含むことが可能である。ステップ４１６では、ＨＷ  ＰＯＲシーケンサ１４２は、ＬＰＤ１９０においてＬＢＩＳＴ動作を実施することが可能である。ＨＷ  ＰＯＲシーケンサ１４２は、ＬＰＤ１９０のロジックをテストするため、テスト回路１３８内のＬＢＩＳＴエンジンを呼び出すことが可能である。ステップ４１４および４１６は、点線で囲まれており、電子ヒューズ１４４に格納されている設定に基づいて選択的に実施されることが可能である。
【００３７】
ステップ４１８では、ＨＷ  ＰＯＲシーケンサ１４２は、ＬＰＤ１９０においてＢＩＳＲを実施する。ＨＷ  ＰＯＲシーケンサ１４２は、ＢＩＳＲエンジンをテスト回路１３８内でＬＰＤにおいて起動させる。例えば、ＬＰＤ内のＲＡＭ（ＲＡＭ１２６の一部）は、冗長コラムを含むことが可能である。電子ヒューズ１４４は、特定の冗長ＲＡＭコラムを可能にする設定を格納することが可能である。テスト回路１３８内のＢＩＳＲエンジンは、これらの設定を読み出し、適切なＲＡＭコラムを可能にすることが可能である。ステップ４２０では、ＨＷ  ＰＯＲシーケンサ１４２は、事前ＰＭＵ初期化においてエラーがあったか否かを判定する。エラーがあった場合、方法４００はステップ４２２に進められ、ＨＷ  ＰＯＲシーケンサ１４２は、ここでパワーオン／ブートプロセスを停止させる。そうでない場合は、方法４００は、ステップ４２４へ進められることが可能であり、ＨＷ  ＰＯＲシーケンサ１４２は、ＰＭＵ１２２のリセットをリリースする。
【００３８】
図５Ａおよび５Ｂは、一実施例に係りＰＭＵ１２２により実施されるプリブート初期化の方法５００を示す。すなわち、図５Ａおよび５Ｂは、図２に示される方法２００のステージ２０４の実施例を示している。図５の方法は、ＲＯＭ３１２内のＰＯＲシーケンシングコード３３４の実行を通じてＰＭＵ１２２により実施可能である。
【００３９】
ステップ５０２では、ＰＭＵ１２２は初期化を実施する。ステップ５０２は、ステップ５０４〜５１０を含むことが可能である。ステップ５０４では、ＰＭＵ１２２はＲＯＭ２１２の検証をトリガする。ＰＭＵ１２２は、ＲＯＭ２１２に格納されるコードの認証のため、ＲＯＭ検証回路２３０を起動させることが可能である。ステップ５０６では、ＰＭＵ１２２は、検証が成功したかを判定する。していない場合は、方法５０８はステップ５０８へ進められ、ここでＰＭＵ１２２はパワーオン／ブートプロセスを停止させる。そうでない場合は、方法５００は、ステップ５１０へ進められ、ここではＰＭＵ１２２はＣＰＵ３０４のリセットをリリースする。
【００４０】
ステップ５１２では、ＰＭＵ１２２は、プログラマブルＳｏＣ１０２内のテストロジックを選択的に初期化する。例えば、ステップ５１４ではＰＭＵ１２２は、それ自体をＰＳ１０４のその他のコンポーネントから分離することが可能である。ステップ５１６ではＰＭＵ１２２は、ＬＰＤ、ＦＤＰまたは両方に関してスキャンクリア動作を実施することが可能である。ステップ５１４および５１６は、電子ヒューズ１４４の設定および実施されているリセットタイプに応じて条件付きで実施可能である。例えば、スキャンクリア動作は、電子ヒューズ１４４内で作動され、リセットタイプがＰＯＲである場合に実施可能である。電子ヒューズ１４４内で無効にされるか、またはリセットタイプがシステムリセット（ウォームリセット）の場合、ＰＭＵ１２２はステップ５１４および５１６を省略することが可能である。
【００４１】
ステップ５１８では、ＰＭＵ１２２は、ＰＳ１０４内の１つまたは複数の回路ブロックを初期化する。例えば、ステップ５２０では、ステップ５１４で発動された場合には、ＰＭＵ１２２は、その分離状態を無効にすることが可能である。そうでない場合は、ＰＭＵ１２２は、ステップ５２０を省略可能である。ステップ５２２では、ＰＭＵ１２２は、システムモニタ１６８およびＰＬＬ１３７を初期化可能である。ＰＬＬ１３７およびシステムモニタ１６８のような回路は、定常状態に達し完全に初期化されるまでに一定の時間がかかることがある。回路ブロックの初期化の後、ＰＭＵ１２２は、ステップ５２４で回路ブロックを監視して初期化完了の時期を判定することが可能である。
【００４２】
ステップ５２６では、ＰＭＵ１２２はＰＳ１０４内のＲＡＭを初期化する。例えばステップ５２８では、ＰＭＵ１２２は、ＰＭＵ１２２内のＲＡＭ３１４のようなＲＡＭ１２６の１つまたは複数のＲＡＭモジュールにゼロをロードすることが可能である。ステップ５３０では、ＰＭＵ１２２は、ＦＰＤにおいてＢＩＳＲ動作を選択的に実施する。ＰＭＵ１２２は、ＦＰＤ内のコンポーネントにおけるＢＩＳＲ動作の実施のため、テスト回路１３８内のＢＩＳＲエンジンを起動させることが可能である。ステップ５３２では、ＰＭＵ１２２は、ＬＤＰ、ＦＰＤ、または両方において、ＭＢＩＳＴクリア動作を選択的に実施可能である。ＰＭＵ１２２は、ＲＡＭ１２６の１つまたは複数のＲＡＭにおけるＭＢＩＳＴクリア動作の実施のため、テスト回路１３８内のＭＢＩＳＴエンジンを起動させることが可能である。ステップ５３０および５３２は、リセットのタイプに基づいて条件に応じて行われることが可能である（例えば、ＰＯＲの場合このようなステップを実施し、システムリセットの場合はこれらのステップを省略）。
【００４３】
ステップ５３４では、ＰＭＵ１２２は、パワードメインを初期化する。例えば、ステップ５３６では、ＰＭＵ１２２は、無効化されたアイランドのパワーダウンを行うことが可能である。いくつかの場合では、プログラマブルＳｏＣ１０２内の１つまたは複数のアイランドは、電子ヒューズ１４４内の設定を用いて意図的に無効にされることが可能である。これらの無効にされたアイランドは、装置のテストを簡易化するために最初に電源が入れられることが可能であるが、電子ヒューズ１４４内の設定によってパワーダウンされる。ステップ５３８では、ＰＭＵ１２２は、１つまたは複数のＣＰＵリセットをリリースすることが可能である。例えば、ＰＭＵ１２２は、ＢｏｏｔＲＯＭの実行を開始するため、ＣＳＵ１２０のリセットをリリースすることが可能である。ステップ５４０では、ＰＭＵ１２２は、サーバモードに入る。サーバモードではＰＭＵ１２２は、以下に説明するように、ＰＳ１０４内のその他のコンポーネントからの要求を処理することが可能である。
【００４４】
図６は、ＰＭＵ１２２のサーバモード時の要求を処理する例示的な方法６００を示すフローチャートである。ステップ６０２では、ＰＭＵ１２２は、１つまたは複数のＰＭＵインタフェースを介して１つまたは複数の要求を受ける。例えば、ＰＭＵ１２２は、割り込み、汎用入力（ＧＰＩ）、グローバルレジスタ２２６への書き込み、またはインターコネクト１２４により、要求を受けることが可能である。ステップ６０３では、ＰＭＵ１２２は、要求を処理する。例えば、ステップ６０４では、ＰＭＵ１２２は、ＲＡＭ３１４に格納されるユーザ／ファームウェア・コードを実行可能である。以下に説明するように、ＣＳＵ１２０によるＦＳＢＬ１８０の実行の結果、ＲＡＭ３１４へのユーザ／ファームウェア・コードのロードが行われることが可能である。ＣＳＵ１２０は、ＰＭＵ１２２がプロセッサ間割り込み（ＩＰＩ）を利用して、ＲＡＭ３１４内のユーザ／ファームウェア・コードを実行するよう要求可能である。ステップ６０６では、ＰＭＵ１２２は、１つまたは複数のパワードメインまたはアイランドのパワーアップまたはパワーダウンを行うことが可能である。ステップ６０８では、ＰＭＵ１２２は、１つまたは複数のブロックにおいてリセットをリリースすることが可能である。ステップ６１０では、ＰＭＵ１２２は、１つまたは複数の特定のブロックにおいてスキャンクリアまたはＢＩＳＴ動作を起動することが可能である。
【００４５】
図７は、一実施例に係るブートプロセスの初期化方法を示すフローチャートである。すなわち図７は、図２に示される方法２００のステージ２０６の実施例を示す。図７の方法は、ＢｏｏｔＲＯＭの実行中、ＣＳＵ１２０により実施可能である。ステップ７０２では、ＣＳＵ１２０は初期化を実施する。例えば、ステップ７０４では、ＣＳＵ１２０は、そのＲＯＭを検証可能である。ステップ７０６では、ＣＳＵ１２０は、ＰＬＬ１３７を選択的に初期化することが可能である（ＰＭＵ１２２により既に初期化されていない場合）。ステップ７０８では、ＣＳＵ１２０は、ＲＡＭ１２６内のＯＣＭを選択的にパワーアップすることが可能である（ＰＭＵ１２２により既にパワーアップされていない場合）。ステップ７１０では、ＣＳＵ１２０は、１つまたは複数のブロックのパワーダウンを選択的に要求可能である。
【００４６】
ステップ７１２では、ＣＳＵ１２０は、ＰＭＵ１２２のＲＡＭ３１４にオプショナルコードをロードし、このオプショナルコードの実行をＰＭＵ１２２に要求可能である。ステップ７１４では、ＣＳＵ１２０は、ＲＡＭ１２６のＯＣＭにＦＳＢＬ１８０をロード可能である。ステップ７１６では、ＣＳＵ１２０は、ＡＰＵ１１６および／またはＲＰＵ１１８に対してパワーオンおよびリセットのリリースをＰＭＵ１２２に要求可能である。ステップ７１８では、ＣＳＵ１２０は、メンテナンスモードに入ることが可能である。ＣＳＵ１２０は、メンテナンスモード時にはＰＳ１０４内のその他のコンポーネントからの要求を処理可能である。図７に示されるプロセスは単に、ＢｏｏｔＲＯＭの実行により実施可能である動作の形式の一実施例である。
【００４７】
図８は、一実施例に係るブート方法を示すフローチャートである。すなわち、図８は、図２に示される方法２００のステージ２０８の実施例を示す。図８の方法は、ＦＳＢＬ１８０の実行中に、ＡＰＵ１１６またはＲＰＵ１１８により実施可能である。ステップ８０２では、ＡＰＵ１１６／ＲＰＵ１１８は、初期化を実施する。例えば、ステップ８０４では、ＡＰＵ１１６／ＲＰＵ１１８は、外部電源を設定する。ステップ８０６では、ＡＰＵ１１６／ＲＰＵ１１８は、ブロック／ドメインのパワーダウンを要求する。
【００４８】
ステップ８０８では、ＡＰＵ１１６／ＲＰＵ１１８は、選択的にＰＬ１０６のパワーアップを要求可能である。ステップ８１０では、ＡＰＵ１１６／ＲＰＵ１１８は、ＰＬＬ１３７のロック状態を確認する。ステップ８１２では、ＡＰＵ１１６／ＲＰＵ１１８は、必要に応じて、起動されたドメインに関するスキャンクリア／ＢＩＳＴの実施をＰＭＵ１２２に要求する。ステップ８１４では、ＡＰＵ１１６／ＲＰＵ１１８は、ブロックに対してリセットのリリースをＰＭＵ１２２に要求する。ステップ８１６では、ＡＰＵ１１６／ＲＰＵ１１８は、必要に応じてＰＬ１０６を設定する。ステップ８１８では、ＡＰＵ１１６／ＲＰＵ１１８は、システムイメージ１７８内のＯＳ／ＳＷ１８４をロード／実行する。図８に示されるプロセスは単に、ＦＳＢＬの実行により実施可能である動作の形式の一実施例である。
【００４９】
追加の実施例のいくつかを以下に説明する。
一実施例ではＳｏＣが設けられることができる。
【００５０】
このＳｏＣは、ＰＯＲピンに接続されるハードウェアＰＯＲシーケンサ回路と、ハードウェアＰＯＲシーケンサ回路に接続され、１つまたは複数のＣＰＵおよびＲＯＭをＰＭＵが含むＰＭＵ回路と、ブートプロセスを実行するよう構成される１つまたは複数の処理装置とを含むことができ、ハードウェアＰＯＲシーケンサ回路はＰＭＵを初期化するよう構成されており、ＰＭＵの１つまたは複数のＣＰＵは、プリブート初期化を実施するためＲＯＭに格納されるコードを実行するよう構成されている。
【００５１】
このようなＳｏＣはさらにテスト回路を含み、プリブート初期化は、テスト回路の初期化を含むことができる。
【００５２】
このようなＳｏＣはさらに、１つまたは複数の回路ブロックを含み、プリブート初期化は、１つまたは複数の回路ブロックの初期化を含むことができる。
【００５３】
このようなＳｏＣでは、１つまたは複数の回路ブロックは、ＰＬＬまたはシステムモニタの少なくとも１つを含むことができる。
【００５４】
このようなＳｏＣのいくつかはさらにＲＡＭを含み、プリブート初期化はＲＡＭの初期化を含むことができる。
【００５５】
このようなＳｏＣのいくつかでは、ＲＡＭの初期化は、ＲＡＭへのゼロロード、ＲＡＭにおけるＭＢＩＳＴの実施、またはＲＡＭにおけるＢＩＳＲの実施の少なくとも１つを含むことができる。
【００５６】
このようなＳｏＣのいくつかはさらに複数のパワードメインを含み、プリブート初期化はパワードメインの初期化を含むことができる。
【００５７】
このようなＳｏＣのいくつかはさらにＲＡＭを含み、ブートプロセスはブートローダのＲＡＭへのロードを含むことができる。
【００５８】
このようなＳｏＣのいくつかでは、１つまたは複数の処理装置が第１処理装置と第２処理装置とを含むことができ、第１処理装置は、ブートローダをＲＡＭにロードするためＢｏｏｔＲＯＭコードを実行し、第２処理装置は、ブートローダを実行することができる。
【００５９】
このようなＳｏＣのいくつかでは、プリブート初期化は、第１処理装置のリセットのリリースを含むことができる。
【００６０】
別の実施例では、ＳｏＣのブート方法が提供されることができる。
このようなＳｏＣのブート方法は、ハードウェアＰＯＲシーケンサ回路を用いて１つまたは複数の第１初期化タスクを実施することと、ＰＭＵを用いて、ＲＯＭに格納されるコードの実行により第２初期化タスクを実施することと、第１処理装置を用いてブートＲＯＭ内のコードを実行することと、第２処理装置を用いてブートローダを実行することとを含むことができる。
【００６１】
このような方法では、第１初期化タスクはＰＭＵの初期化を含むことができる。
このような方法では、第２初期化タスクは、テスト回路の初期化を含むことができる。
【００６２】
このような方法では、第２初期化タスクは、１つまたは複数の回路ブロックの初期化を含むことができる。
【００６３】
このような方法では、第２初期化タスクはＲＡＭの初期化を含むことができる。
このような方法では、第２初期化タスクは、パワードメインの初期化を含むことができる。
【００６４】
このような方法はさらに、ＰＭＵにおいて第１処理装置または第２処理装置の少なくとも１つからの１つまたは複数のリクエストを処理することを含むことができる。
【００６５】
別の実施例では、非一時的なコンピュータ可読媒体が設けられることができる。
このような非一時的コンピュータ可読媒体には命令が格納されていることができ、これがＳｏＣのＰＭＵにより実行されると、ＰＭＵに以下からなる方法を実施させる。すなわち、ＳｏＣ内のテスト回路を初期化することと、ＳｏＣ内の１つまたは複数の回路ブロックを初期化することと、ＳｏＣ内のＲＡＭを初期化することと、ＳｏＣ内のパワードメインを初期化することと、ＳｏＣ内の第１処理装置にブートプロセスを開始させることと、からなる。
【００６６】
このような非一時的コンピュータ可読媒体はさらに、ＳｏＣの少なくとも１つの処理装置からの１つまたは複数の要求を処理することを含むことができる。
【００６７】
このような非一時的コンピュータ可読媒体はさらに、初期化のステップを実施し、ハードウェアＰＯＲシーケンサ回路によるＰＭＵのリセットのリリースを含むことができる。
【００６８】
上記の記載は特定の実施例に関するものであり、その基本的な範囲から逸脱することなく、別のまたは更なる実施例が考案されることができ、その範囲は以下の請求項により定められる。
【図１Ａ】
2019505890.tif 000003
【図１Ｂ】
2019505890.tif 000004
【図２】
2019505890.tif 000005
【図３】
2019505890.tif 000006
【図４】
2019505890.tif 000007
【図５Ａ】
2019505890.tif 000008
【図５Ｂ】
2019505890.tif 000009
【図６】
2019505890.tif 000010
【図７】
2019505890.tif 000011
【図８】
2019505890.tif 000012
【手続補正書】
【提出日】平成30年1月5日(2018.1.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムオンチップ（ＳｏＣ）であって、
ＰＯＲピンに接続されるハードウェア・パワーオンリセット（ＰＯＲ）シーケンサ回路と、
前記ハードウェアＰＯＲシーケンサ回路に接続されているプラットフォーム管理ユニット（ＰＭＵ）回路であって、１つまたは複数の中央処理装置（ＣＰＵ）および読み出し専用メモリ（ＲＯＭ）を含むＰＭＵ回路と、
ランダムアクセスメモリ（ＲＡＭ）と、
１つまたは複数の回路ブロックと、
前記ＲＡＭ内にブートローダを格納するため、第１処理装置により実行可能であるＢｏｏｔＲＯＭコードを格納する前記ＲＯＭに接続される第１処理装置と、
前記ＲＡＭ内に格納されているブートローダを実行するよう構成される第２処理装置と、を備え
前記ハードウェアＰＯＲシーケンサ回路が、前記ＰＭＵを初期化するよう構成されており、
前記ＰＭＵの前記１つまたは複数のＣＰＵが、前記第１処理装置および前記第２処理装置の初期化、および前記第１処理装置によるＢｏｏｔＲＯＭコードの実行前に、前記１つまたは複数の回路ブロックのプリブート初期化の実施のため、前記ＲＯＭに格納されているコードを実行するよう構成されている、ＳｏＣ。
【請求項２】
テスト回路をさらに備え、
前記プリブート初期化が、前記テスト回路の初期化を含む、請求項１に記載のＳｏＣ。
【請求項３】
前記１つまたは複数の回路ブロックが、位相固定ループ（ＰＬＬ）またはシステムモニタの少なくとも１つを含む、請求項１に記載のＳｏＣ。
【請求項４】
前記プリブート初期化が、前記ＲＡＭの初期化を含むことをさらに備える、請求項１から３のいずれか一項に記載のＳｏＣ。
【請求項５】
前記ＲＡＭの初期化が、前記ＲＡＭへのゼロロード、前記ＲＡＭに対するメモリ組込み自己テスト（ＭＢＩＳＴ）の実施、または前記ＲＡＭに対する組込み自己修復（ＢＩＳＲ）の実施の少なくとも１つを含む、請求項４に記載のＳｏＣ。
【請求項６】
複数のパワードメインをさらに備え、
前記プリブート初期化が、前記パワードメインの初期化を含む、請求項１から５のいずれか一項に記載のＳｏＣ。
【請求項７】
前記ブートプロセスが、前記ＲＡＭへのブートローダのロードを含むことをさらに備える、請求項１から６のいずれか一項に記載のＳｏＣ。
【請求項８】
前記プリブート初期化が、前記第１処理装置のリセットのリリースを含む、請求項１に記載のＳｏＣ。
【請求項９】
ハードウェア・パワーオンリセット（ＰＯＲ）シーケンサ回路を利用して１つまたは複数の第１初期化タスクを実施することと、
第１処理装置および第２処理装置の初期化、および前記第１処理装置によるブート読み出し専用メモリ（ＲＯＭ）内のコードの実行前に、プラットフォーム管理ユニット（ＰＭＵ）を利用してＲＯＭに格納されているコードを実行することにより１つまたは複数の第２初期化タスクを実施して１つまたは複数の回路ブロックを初期化することと、
前記第１処理装置を利用して前記ブートＲＯＭ内の前記コードを実行して、ランダムアクセスメモリ（ＲＡＭ）内にブートローダを格納することと、
前記第２処理装置を利用して、前記ＲＡＭ内に格納されている前記ブートローダを実行することと、を備えるシステムオンチップ（ＳｏＣ）のブート方法。
【請求項１０】
前記第１初期化タスクが、前記ＰＭＵの初期化を含む、請求項９に記載の方法。
【請求項１１】
前記第２初期化タスクが、テスト回路の初期化を含む、請求項９に記載の方法。
【請求項１２】
前記第１処理装置または前記第２処理装置の少なくとも１つからの１つまたは複数の要求を前記ＰＭＵにて処理することをさらに備える、請求項９に記載の方法。
【国際調査報告】
2019505890.tif 000013
2019505890.tif 000014