(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-03
(45)【発行日】2022-08-12
(54)【発明の名称】専用のプロセッサによるSoCのハードウェア・パワーオン初期化
(51)【国際特許分類】
G06F 15/78 20060101AFI20220804BHJP
G06F 11/22 20060101ALI20220804BHJP
H01L 21/822 20060101ALI20220804BHJP
H01L 27/04 20060101ALI20220804BHJP
【FI】
G06F15/78 517
G06F15/78 530
G06F15/78 550
G06F15/78 560
G06F11/22 606
G06F11/22 673A
G06F11/22 673D
H01L27/04 T
(21)【出願番号】P 2018531098
(86)(22)【出願日】2016-11-15
(86)【国際出願番号】 US2016062091
(87)【国際公開番号】W WO2017105727
(87)【国際公開日】2017-06-22
【審査請求日】2019-11-13
【審判番号】
【審判請求日】2021-12-10
(32)【優先日】2015-12-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】アンサリ,アーマド・アール
【合議体】
【審判長】篠原 功一
【審判官】林 毅
【審判官】須田 勝巳
(56)【参考文献】
【文献】特開2008-165588(JP,A)
【文献】特開平5-242057(JP,A)
【文献】国際公開第2014/139177(WO,A1)
【文献】米国特許出願公開第2015/0113258(US,A1)
【文献】米国特許出願公開第2015/0046692(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F15/78
G06F11/22
H01L21/822
(57)【特許請求の範囲】
【請求項1】
システムオンチップ(SoC)であって、
PORピンに接続されるハードウェア・パワーオンリセット(POR)シーケンサ回路と、
前記ハードウェアPORシーケンサ回路に接続されているプラットフォーム管理ユニット(PMU)回路であって、1つまたは複数の中央処理装置(CPU)および読み出し専用メモリ(ROM)を含むPMU回路と、
ランダムアクセスメモリ(RAM)と、
1つまたは複数の回路ブロックと、
前記RAM内にブートローダを格納するため、第1処理装置により実行可能であるBootROMコードを格納する前記ROMに接続される第1処理装置と、
前記RAM内に格納されているブートローダを実行するよう構成される第2処理装置と、を備え
前記ハードウェアPORシーケンサ回路が、前記PMUを初期化するよう構成されており、
前記PMUの前記1つまたは複数のCPUが、前記第1処理装置および前記第2処理装置による初期化、および前記第1処理装置によるBootROMコードの実行前に、前記1つまたは複数の回路ブロックのプリブート初期化の実施のため、前記ROMに格納されているコードを実行するよう構成されている、SoC。
【請求項2】
テスト回路をさらに備え、
前記プリブート初期化が、前記テスト回路の初期化を含む、請求項1に記載のSoC。
【請求項3】
前記1つまたは複数の回路ブロックが、位相固定ループ(PLL)またはシステムモニタの少なくとも1つを含む、請求項1に記載のSoC。
【請求項4】
前記プリブート初期化が、前記RAMの初期化を含むことをさらに備える、請求項1から3のいずれか一項に記載のSoC。
【請求項5】
前記RAMの初期化が、前記RAMへのゼロロード、前記RAMに対するメモリ組込み自己テスト(MBIST)の実施、または前記RAMに対する組込み自己修復(BISR)の実施の少なくとも1つを含む、請求項4に記載のSoC。
【請求項6】
複数のパワードメインをさらに備え、
前記プリブート初期化が、前記パワードメインの初期化を含む、請求項1から5のいずれか一項に記載のSoC。
【請求項7】
前記第1処理装置および前記第2処理装置によるブートプロセスが、前記RAMへのブートローダのロードを含むことをさらに備える、請求項1から6のいずれか一項に記載のSoC。
【請求項8】
前記プリブート初期化が、前記第1処理装置のリセットのリリースを含む、請求項1に記載のSoC。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示の実施例は、一般に電子回路に関し、特に専用のプロセッサによるシステム・オン・チップ(SoC)のハードウェア・パワーオン初期化に関する。
【背景技術】
【0002】
背景技術
典型的なシステム・オン・チップ(SoC)では、システムのブート準備のため特定のシーケンスで実施されなくてはならない多くの初期化タスクがある。パワーオン・シーケンシングタスクはもっぱら、ハードウェア・ステートマシンおよび関連の回路により扱われる。パワーオン・シーケンシングタスクの例は、シーケンシングリセット、電源の監視、クロック回路の初期化、テストの実施、メモリの消去等を含む。
【0003】
ハードウェア・ステートマシンおよび関連回路の回路設計における欠陥は、SoCのブートを妨げる可能性がある。SoC自体は通常、量産の前に試験および検証が行われる。パワーオン・シーケンシングタスクにおける欠陥により、ハードウェア・ステートマシンおよび関連回路の再設計が必要になる。さらに、要求されるパワーオンシーケンシングを完了させるため必要な情報は、検証時まで不明であり得る。パワーオンシーケンシングを実施するハードウェア・ステートマシンおよび関連回路における何らかの設計変更は、コストがかかり、かつSoCの最終検証を遅延させる可能性がある。
【発明の概要】
【課題を解決するための手段】
【0004】
発明の概要
専用のプロセッサによるシステム・オン・チップ(SOC)のハードウェア・パワーオン初期化を行う技術について説明する。一実施例では、SoCは、PORピンに接続されるハードウェア・パワーオンリセット(POR)シーケンサ回路を含む。SoCはさらに、ハードウェアPORシーケンサ回路に接続されるプラットフォーム管理ユニット(PMU)を含み、PMUは1つまたは複数の中央処理装置(CPU)および読み出し専用メモリ(ROM)を含む。SoCはさらに、ブートプロセスを実行するよう設定されている1つまたは複数の処理装置を含む。ハードウェアPORシーケンサ回路は、PMUを初期化するよう構成されている。PMUの1つまたは複数のCPUは、プリブート初期化を実施するため、ROMに格納されているコードを実行するよう構成されている。
【0005】
別の実施例では、SoCのブート方法は、ハードウェア・パワーオンリセット(POR)シーケンサ回路を利用して1つまたは複数の第1初期化タスクを実施することを含む。この方法はさらに、プラットフォーム管理ユニット(PMU)を利用して、読み出し専用メモリ(ROM)内に格納されているコードを実行することにより第2初期化タスクを実施することを含む。この方法はさらに、第1処理装置を利用してブートROM内のコードを実行することを含む。方法はさらに、第2処理装置を利用して、ブートローダを実行することを含む。
【0006】
別の実施例では、非一時的なコンピュータ可読媒体に命令が格納されており、SoC内のプラットフォーム管理ユニット(PMU)により命令が実行されると、PMUが以下からなる方法を実施する。すなわち、SoC内のテスト回路の初期化、SoC内の1つまたは複数の回路ブロックの初期化、ランダムアクセスメモリ(RAM)の初期化、SoC内のパワードメインの初期化、SoC内の第1処理装置によるブートプロセスの開始である。
【0007】
これらおよびその他の態様は、以下の詳細な説明と共に理解されるものとする。
図面の簡単な説明
上述の特徴の詳細が理解されるよう、上に概要を簡潔に述べたが、実施例を参照して、より詳細な説明を行い、そのいくつかは添付の図面に示す。しかし、添付の図面は典型的な実施例を示しているのみであり、範囲を限定するものとみなされるべきではない。
【図面の簡単な説明】
【0008】
【
図1A】一実施例に係るプログラマブルシステムを示すブロック図である。
【
図1B】
図1AのプログラマブルSoCのブロック図であり、異なるパワードメインを示している。
【
図2】一実施例に係るプログラマブルSoCのブート方法を示すフローチャートである。
【
図3】一実施例に係るプラットフォーム管理ユニット(PMU)を示すブロック図である。
【
図4】一実施例に係り、ハードウェア・パワーオンリセット(POR)により実施される事前PMU初期化方法を示すフローチャートである。
【
図5A】一実施例に係りPMUにより実施されるプリブート初期化方法を示す。
【
図5B】一実施例に係りPMUにより実施されるプリブート初期化方法を示す。
【
図6】PMUのサーバモードにおける要求の処理方法の実施例を示すフローチャートである。
【
図7】一実施例に係るブートプロセスの初期化方法を示すフローチャートである。
【
図8】一実施例に係るブート方法を示すフローチャートである。
【発明を実施するための形態】
【0009】
容易に理解できるようにするため、各図面に渡って同一の要素を示す際、可能な場合は同一の符号を使用している。一実施例における要素が、その他の実施例でも有益に利用され得ることが期待される。
【0010】
詳細な説明
図面を参照して以下に様々な特徴を説明する。図面は縮尺通りであることも、そうでない場合もあり、類似の構造および機能の要素は、全図面に渡って類似の符号で示される。図面は、特徴の説明を容易にするためのものであると理解されるべきである。図面は特許請求された発明の包括的な説明または特許請求された発明の範囲を限定するものではない。さらに、図示される実施例は、示される態様または長所のすべてを有する必要はない。特定の実施例に伴い説明される態様または長所は、必ずしもその実施例に限定されるものではなく、そのように図示または明確に記載されていなくても、その他の実施例でも実施されることが可能である。
【0011】
図1Aは、一実施例に係るプログラマブルシステム100のブロック図である。プログラマブルシステム100は、ダイナミック・ランダムアクセスメモリ(DRAM)108と、不揮発性メモリ(NVM)110と、各種サポート回路112とに接続されるプログラマブル・システムオンチップ(SoC)102を備える。サポート回路112は、プログラマブルSoC102の動作を支援するよう構成される発振器、電圧源等を含むことが可能である。DRAM108は、任意の種類のDRAM、たとえばシンクロナスDRAM(SDRAM)、DDR-SDRAM等を含むことが可能である。NVM110は、任意の種類の不揮発性メモリ、例えば任意の種類のフラッシュメモリ、セキュアデジタル(SD)メモリ等を含むことが可能である。
【0012】
プログラマブルSoC102は、処理システム(「PS104」)およびプログラマブルロジック(「PL106」)を含む。PS104は、処理装置114と、インターコネクト124と、RAM126と、ROM128と、メモリインタフェース130と、周辺回路部132と、入力/出力(IO)回路134と、クロック/リセット回路136と、テスト回路138と、レジスタ(regs)140と、ハードウェア(HW)パワーオンリセット(POR)シーケンサ142と、電子ヒューズ144と、システムモニタ168と、PS-PLインタフェース146と、PSピン135とを含む。処理装置114は、異なる種類の処理装置、例えばアプリケーションプロセッサ(APU)116と、リアルタイムプロセッシングユニット(RPU)118と、構成およびセキュリティユニット(CSU)120と、プラットフォーム管理ユニット(PMU)122とを含むことが可能である。
【0013】
PL106は、プログラマブルファブリック150と、構成メモリ148と、硬化回路162と、レジスタ172と、テスト回路170と、電子ヒューズ174と、クロック生成および分配回路176と、構成ロジック166と、PLピン149とを含む。プログラマブルファブリック150は、構成可能論理ブロック(CLB)152と、ブロックRAM(BRAM)154と、入力/出力ブロック(IOB)156と、デジタル信号処理ブロック(DSP)158と、プログラマブルインターコネクト160とを含む。硬化回路162は、マルチギガビットトランシーバ(MGT)164、周辺部品インタフェースエクスプレス(PCIe)回路(「PCIe169」)、アナログデジタル変換器(ADC)165等を含む。
【0014】
PS104に関して、処理装置114はそれぞれ、1つまたは複数の中央処理装置(CPU)および関連の回路、たとえばメモリ、割り込みコントローラ、ダイレクトメモリアクセス(DMA)コントローラ、メモリ管理ユニット(MMU)、浮動小数点演算ユニット(FPU)等を含む。インターコネクト124は、処理装置114を相互接続するよう、ならびにPS104内のその他のコンポーネントを処理装置114と相互接続するよう構成される各種スイッチ、バス、通信リンク等を含む。
【0015】
RAM126は、1つまたは複数のRAMモジュールを含み、これはPS104全体に分配されることが可能である。例えば、RAM126は、バッテリーバックアップ式RAM(BBRAM177)、オンチップメモリ(OCM)127、密結合メモリ(TCM)129等を含むことが可能である。1つまたは複数の処理装置114がRAM126のRAMモジュールを含むことが可能である。同様に、ROM128は、1つまたは複数のROMモジュールを含み、これはPS104全体に分配されていることが可能である。例えば、処理装置114の1つまたは複数が、ROM128のROMモジュールを含むことが可能である。レジスタ140は、PS104全体に分配される多数のレジスタを含む。レジスタ140は、PS104用の様々な設定およびステータス情報を格納していることが可能である。
【0016】
メモリインタフェース130は、DRAM108へのアクセス用のDRAMインタフェースを含むことが可能である。メモリインタフェース130は、NVM110へのアクセス用のNVMインタフェースも含むことが可能である。一般に、メモリインタフェース130は、任意の種類の揮発性メモリインタフェース(例えばDRAM、ダブルデータレート(DDR)DRAM、スタティックRAM(SRAM)等)、および任意の種類の不揮発性メモリインタフェース(例えばNANDフラッシュ、NORフラッシュ、SDメモリ等)を含むことが可能である。
【0017】
周辺回路部132は、PS104へのインタフェースを提供する1つまたは複数のコンポーネントを含むことが可能である。周辺回路部132は、周辺コンポーネント、ならびに外部の周辺コンポーネントに接続するためのIOインタフェースを含むことが可能である。例えば、周辺回路部132は、グラフィック処理装置(GPU)、ディスプレイインタフェース(例えばディスプレイポート、高解像度マルチメディア・インタフェース(HDMI(登録商標))ポート等)、ユニバーサルシリアルバス(USB)ポート、イーサネット(登録商標)ポート、ユニバーサル非同期トランシーバ(UART)ポート、シリアル周辺回路部インタフェース(SPI)ポート、汎用IO(GPIO)ポート、シリアルアドバンストテクノロジーアタッチメント(SATA)ポート、PCIeポート等を含むことが可能である。周辺回路部132は、IO回路134に接続されることが可能である。IO回路134は、周辺回路部132をPSピン135のIOピンに接続するよう構成されるマルチプレクサ回路、シリアライザ/デシリアライザ(SERDES)回路、MGT等を含むことが可能である。IO回路134は、周辺回路部132の1つまたは複数を内部でPL106に接続することも可能である。
【0018】
テスト回路138は、PS104をテストおよび/または初期化するよう構成されるバウンダリスキャンチェーン、内部スキャンチェーン、テストアクセスポート(TAP)コントローラおよびその他のジョイントテストアクショングループ(JTAG)回路、デバッグアクセスポート(DAP)コントローラ、ロジック組込み自己テスト(LBIST)エンジン、メモリBIST(MBIST)エンジン、組込み自己修復(BISR)エンジン、スキャンチェーンクリアエンジン等を含むことが可能である。クロック/リセット回路136は、PS104により使用されるクロックを生成するため、様々な発振器、周波数シンセサイザ等を含むことが可能である。例えばクロック/リセット回路136は、複数の位相固定ループ(PLL137)を含むことが可能である。システムモニタ168は、プログラマブルSoC102における各種センサ(例えば温度センサ、電圧センサ等)からの測定結果を得るためのロジックを含むことが可能である。HW PORシーケンサ142は、以下に説明されるように、PMU122の動作のため、プログラマブルSoC102の一部を初期化するよう構成されるハードウェア・ステートマシンおよび関連のロジックのような回路構成を含むことが可能である。電子ヒューズ144は、プログラマブルSoC102用の各種設定およびデータを格納するためのワンタイム・プログラマブルメモリを形成することが可能である。PSピン135は、PS104の様々なコンポーネントへの外部インタフェース、例えばIO回路134、メモリインタフェース130、テスト回路138等を提供する。PSピン135は、例えば電圧源ピン、クロックピン、PORピン、ブートモードピン等のその他様々なピンも含む。PS-PLインタフェース146は、PL106とPS104の各種コンポーネント、例えば周辺回路部132、RAM126、処理装置114等との間のIOインタフェースを含むことが可能である。
【0019】
PL106に関して、構成ロジック166は、構成ビットストリームを構成メモリ148内へロードするための回路構成を含むことが可能である。いくつかの実施例では、構成ロジック166は、ブートプロセス中にPS104から構成ビットストリームを受信することが可能である。別の実施例では、構成ロジック166は、PL106に接続される別のポート(例えばテスト回路170の一部であるJTAGポート)から構成ビットストリームを受信することが可能である。構成メモリ148は、例えばプログラマブルファブリック150および硬化回路162のプログラマブル機能のようなPL106のプログラマブル機能を制御する複数のSRAMセルを含む。
【0020】
プログラマブルファブリック150は、様々な回路を実行するよう構成されることが可能である。プログラマブルファブリック150は、CLB152、BRAM154、IOB156、DSP158を含む多数の異なるプログラマブルタイルを含むことが可能である。CLB152は、ユーザロジックを実施するようプログラム可能である構成可能ロジック素子を含むことが可能である。BRAM154は、異なるメモリ構成を実施するよう構成可能であるメモリ素子を含むことが可能である。IOB156は、プログラマブルファブリック150へ、またここから信号を送受信するよう構成可能であるIO回路を含む。DSP158は、異なるデジタル処理構造を実施するよう構成可能であるDSP素子を含むことが可能である。プログラマブルインターコネクト160は、複数のプログラマブルインターコネクト素子および関連のルーティングを含むことが可能である。プログラマブルインターコネクト160は、回路設計を実施するため様々なプログラマブルタイルを相互接続するようプログラム可能である。
【0021】
硬化回路162は、例えばMGT164、PCIe回路169、ADC回路165等の専用の機能を有する様々な回路を含む。硬化回路162は、ICの一部として製造され、プログラマブルファブリック150とは異なり、構成ビットストリームのロードによって製造後に機能がプログラムされるのではない。硬化回路162は一般に、例えば特定の機能を有する専用の回路ブロックおよびインターコネクトを有するとみなされている。硬化回路162は、1つまたは複数の動作モードを有することが可能であり、これはパラメータ設定により設定または選択可能である。パラメータ設定は、例えば1つまたは複数のレジスタ172に値を保存することにより実現可能である。動作モードは、例えば構成ビットストリームを構成メモリ148へロードする、またはプログラマブルSoC102の動作時に動的に行うことにより設定可能である。
【0022】
クロック生成および分配回路176は、PL106全体でクロックを生成および分配するためPLL、クロックバッファ等を含むことが可能である。テスト回路170は、PL106のテスト用に、バウンダリスキャンチェーン、内部スキャンチェーン、TAPコントローラおよびその他のJTAG回路等を含むことが可能である。レジスタ172はPL106全体で分配されることが可能である。例えば、レジスタ172は、硬化回路162のパラメータ設定のためのレジスタを含むことが可能である。PLピン149は、例えばIOB156、MGT164、PCIe回路169、ADC回路165、テスト回路170等のようなPL106の様々なコンポーネントへの外部インタフェースを提供する。
【0023】
図1Bは、プログラマブルSoC102のブロック図であり、異なるパワードメインを示している。例えば、プログラマブルSoC102は、低電力ドメイン(LPD)190およびフルパワードメイン(FDP)192のような複数のパワードメインを含むことが可能である。実施例では2つのパワードメインが示されているが、プログラマブルSoC102は、任意の数のパワードメインを含むことが可能である。PS104のコンポーネントおよびPL106のコンポーネントは、パワードメインにおいて分配されることが可能である。例えば、PS104内では、LPD190は、RPU118、CSU120、PMU122、1つまたは複数の周辺回路部132、RAM126内の1つまたは複数のRAM(例えばOCM)等を含むことが可能である。PS104内では、FPD192は、APU116、1つまたは複数の周辺回路部132等(例えばGPU、ディスプレイインタフェース、SATAポート、PCIeポート等)を含むことが可能である。パワードメインは、複数のアイランドを含むことが可能である。したがって、LPD190はアイランド194を含み、FPDはアイランド196を含むことが可能である。各ドメイン内のコンポーネントは、アイランド内でさらに分割されることが可能である。例えば、LPD190は、USBポートを含むことが可能であり、USBポートはアイランド194の異なるものにあることが可能である。パワードメインは、相互に独立して電源が入れられることが可能である。また、各パワードメイン内のアイランドは、相互に独立して電源が入れられることが可能である。以下でさらに説明するように、PMU122は、プログラマブルSoC102内でパワードメインおよびアイランドを制御するよう構成されている。
【0024】
図1Aに戻ると、プログラマブルSoC102を構成するため、ユーザは1つまたは複数のシステムイメージ178をNVM110に保存することが可能である。システムイメージ178は、ヘッダ181と、第1ステージブートローダ(FSBL)180と、ビットストリーム182と、動作システム(OS)またはその他のソフトウェア(「OS/SW184」)とを含むことが可能である。PSピン135のPS104がデアサートされた後、PS104はブートプロセスを開始する。PS104は、ROM128内のブートコード(「BootROM」と称される)を実行し、これがヘッダ181を読み出し、続いてFSBL180を読み出し、認証し、RAM126内に(例えばOCM)格納する。実施例では、CSU120は、BootROMを実行してFSBL180をロードすることが可能である。APU116またはRPU118は、FSBL180を実行するため使用可能であり、これはビットストリーム182をPL106にロードし、OS/SW184の実行を開始することが可能である。
【0025】
CSU120がBootROMの実行を開始できる前に、PS104は初期化されなくてはならない(パワーオン初期化と称する)。パワーオン初期化は、パワーオンリセット(例えばコールドリセット)またはシステムリセット(例えばウォームリセット)用に実施されるタスクを含む。例示的な初期化タスクは、PS104の異なる部分のリセットのシーケンシング、電源の監視、クロック/リセット回路136の初期設定、メモリおよびロジックに関するテスト回路138内のBISTエンジンの制御、リダンダンシーエンジン(例えばBISRエンジン)の制御、PS104の異なる部分間(例えばパワードメイン、パワーアイランドetc)の分離の制御、セキュリティ要件の一部としてRAM126のクリアを含む。いくつかのSoCでは、これらの初期化タスクは、ハードウェア・ステートマシンおよび関連回路を用いて完全に実施される。通常、このようなハードウェアにおける何らかのエラーにより、装置のブートが阻害され、これにより製造時の検証および試験が困難になる。さらに、場合によっては、初期化タスクのシーケンシングを完了するための情報が、装置の製造および試験後まで不明となる。これにより、シーケンシングハードウェアに対してコストのかかる設計変更が必要となってしまう。
【0026】
実施例では、HW PORシーケンサ142が、PMU122の動作を可能にするため最低限の数の初期化タスクを実施するよう構成されている。その後、PMU122は、ROM128内に格納されているコードの実行によりパワーオン初期化を完了する。パワーオン初期化が完了すると、PMU122は、BootROMの実行をCSU120に開始させる。パワーオン初期化タスクのシーケンシングの修正は、ROM128内に格納されたパワーオン初期化コードの修正により達成可能である。ROM128の変更に必要なのは、メタルマスクの変更だけであり、これは低コストであるとともに、設計の再実施も必要としない。HW PORシーケンサ142は最低限の初期化しか行わないため、ブートシーケンスの試験の際に高コストのかかる設計変更が必要となることはないだろう。
【0027】
図1Aは、専用のプロセッサによるSoCのパワーオン初期化が使用可能である一実施例を示している。ここで説明されるパワーオン初期化方法は、
図1Aに示されるものと異なる構造を有するSoCに適用可能である。例えば、このパワーオン初期化法は、PL106がなく、すべての硬化回路(例えば特定用途向け集積回路(ASIC))を含むSoCにおいて使用可能である。さらに、SoCに含まれるPSは、PS104と異なる構造を有することができる。一般に、SoC内のPSは、最低限の初期化タスクを実施するためのハードウェアシーケンサと、パワーオン初期化を完了するためROMに格納されているコードの実行のためのプロセッサとを含むことが可能である。
【0028】
図2は、一実施例に係り、プログラマブルSoC102のブート方法を示すフローチャートである。ブートプロセスは、4つのステージ202から208を含む。第1ステージ202では、HW PORシーケンサ142は、事前PMU初期化を実施する。事前PMU初期化は、PMU122の動作準備のため、最低限のセットの初期化タスクを含む。第2ステージ204ではPMU122は、ROM128に格納されているプリブート初期化コードを実行することによりプリブート初期化を実施する。プリブート初期化コードは、PS104をBootROMの実行のために準備する初期化タスクのセットを規定する。プログラマブルSoC102のパワーオン初期化は、ステージ202および204が実行された後に完了する。第3ステージ206では、CSU120が、ブートプロセスを開始するため、BootROMを実行する。BootROMは、PS104のさらなる初期化、およびFSBL180の読み出し、認証およびトリガ実行のためのタスクを含むことが可能である。第4ステージ208では、APU116またはPRU118は、FSBL180を実行する。FSBL180は、PS104のさらなる初期化、PL106の初期化、およびOS/SW184へのハンドオフのためのタスクを含むことが可能である。ステージ202から208の実施例を以下に詳細に説明する。
【0029】
図3は、一実施例に係るPMU122を示すブロック図である。PMU122は、複数の冗長サブシステム302と、ROM312と、RAM314と、以下に説明されるその他のコンポーネントとを含む。各冗長サブシステム302は、CPU304と、ROMアービタ306と、RAMアービタ308とを含む。冗長サブシステム302は、多数決回路(voter)310に接続されている。多数決回路310は、冗長サブシステム302の出力を比較し、「正しい出力」を判定するよう構成されている。例えば、2つの冗長サブシステム302が、所定の処理に関して第1の値を出力する場合、1つの冗長サブシステム302が第1値とは異なる第2の値を出力すると、多数決回路310は、第1値を出力として選択することが可能である。ROM312、RAM314、およびその他のコンポーネントは、冗長サブシステム302からの出力を得て、冗長サブシステム302への入力を行うため、多数決回路310に接続している。ROMアービタ306は、冗長サブシステム302内の各CPU304の命令およびデータバスにおいてROM312へのアクセスを調停する。同様に、RAMアービタ308は、冗長サブシステム302内の各CPU304の命令およびデータバスにおいてRAM314へのアクセスを調停する。RAMアービタ308は、外部接続用にRAM314へのアクセスを調停することも可能である。
【0030】
PMU122は、スイッチ316、グローバルレジスタ326、ローカルレジスタ318、IO回路320、デバッグ回路324、ROM検証回路330のようなその他のコンポーネントを含むことが可能である。スイッチ316は、インターコネクト124への外部インタフェースと、グローバルレジスタ326へのインタフェースと、多数決回路310へのインタフェースとを含む。グローバルレジスタ326は、PS104内の値(例えばPSエラー)にアクセスするため、PS104への外部インタフェースを含むことが可能である。ローカルレジスタ318は、多数決回路310へのインタフェースと、パワードメインの制御のためPS104への外部インタフェースとを含む。IO回路320は、多数決回路310へのインタフェースと、外部出力インターフェース(OUT)と、外部入力インターフェース(IN)とを含む。デバッグ回路324は、多数決回路310へのインタフェースと、テスト回路138のテストアクセスポート(TAP)328に接続される外部インタフェースとを含む。PMU122は、クロック/リセット回路136、HW PORシーケンサ142、電子ヒューズキャッシュ332への外部インタフェースを含む。
【0031】
HW PORシーケンサ142は、PMU122のリセットを制御する。クロック/リセット回路136は、PMU122のためのクロックを提供する。HW PORシーケンサ142が、PMU122のリセットをリリースすると、ROM検証ロジック330は、ROM312内のコードの検証を開始する。ROM312の検証後、CPU304のリセットがリリースされ、冗長サブシステム302内のCPU304はROM312内のコードの実行を開始する。ROM312は、PORシーケンシングコード334を格納しており、これはパワーオン初期化を完了するための初期化タスクのシーケンスを規定している。CPU304は、HW PORシーケンサ142内のレジスタにアクセスし、エラー情報、リセット状態情報(例えばリセットがPORまたはシステムリセットか)等を取得することが可能である。CPU304はさらに、PS104用の各種設定およびパラメータを取得するため、電子ヒューズキャッシュ322にアクセス可能である。HW PORシーケンサ142は、PORに応じて電子ヒューズ144の状態を電子ヒューズキャッシュ322へ読み込むことが可能である。電子ヒューズキャッシュ322は、RAM126に格納されていることが可能であり、電子ヒューズ144へのアクセスを最小限に抑えるために使用される。PORシーケンシングコード334は、エラー情報、リセット状態情報、設定情報をパラメトリック入力として用いて、初期化タスクを実施することが可能である。
【0032】
PMU122は、PORシーケンシングコード334に示される初期化タスクを達成するため、PS104のコンポーネント制御に様々な出力インタフェースを使用することが可能である。例えば、冗長サブシステム302は、スイッチ316およびインターコネクト124を通じてPS104のコンポーネントにアクセス可能である。冗長サブシステム302は、ローカルレジスタ318内の値を設定し、パワードメインおよび/またはパワードメイン内のアイランドを制御することが可能である。冗長サブシステム302は、GPIOを介して、IO回路320を通じて情報を出力可能である(例えば初期化タスクの際に生成されたエラー/状態情報)。同様に、冗長サブシステム302は、グローバルレジスタ326内の情報を更新することが可能である(例えば初期化タスクの際に生成されたエラー/状態情報)。
【0033】
パワーオン初期化が完了した後、PMU122は、PS104内の他のコンポーネントからの要求を処理するサービスモードに入ることが可能である。サービスモード用のコードは、ROM312に格納されていることが可能である。サービスモードの間は、PMU122は、その各入力インタフェースを通して要求を受け、以下に説明するいずれかの出力インタフェースを用いて出力を提供することが可能である。例えば、PMU122は、PS104内の他のコンポーネントからの入力をインターコネクト124およびスイッチ316を通して受けることが可能である。別の実施例では、IO回路320は割り込みコントローラ323を含むことが可能である。PMU122は、PS104内の別のコンポーネントからの割り込み要求を通じて入力を受けることが可能である。
【0034】
図4は、一実施例に係るHW PORシーケンサ142により実施される事前PMU初期化方法を示すフローチャートである。
図4はすなわち、
図2に示される方法200におけるステージ202の実施例を示す。ステップ402では、HW PORシーケンサ142は、PSピン135のPORピンを監視する。PORピンがデアサートされると、ステップ404でHW PORシーケンサ142は、PSピン135のブートモードピンからのブートモードを取得する。プログラマブルSoC102は、NORフラッシュ、NANDフラッシュ、SDメモリ、JTAG等のような様々なブートモードを含むことが可能である。
【0035】
ステップ406では、HW PORシーケンサ142は、電子ヒューズ144をキャッシュする。ステップ408では、HW PORシーケンサ142は、テストモードに入るか否かを判定する。例えば、プログラマブルSoC102は、製造時にアクセス可能である特殊なテストモードという特性を含むことが可能である(例えば製造者により提供されるテスト容易化設定(DFT)モード)。テストモードが呼び出されると、ステップ410でHW PORシーケンサ142は、セキュリティのためBBRAM177内のキーデータをクリアすることが可能である。ステップ412では、HW PORシーケンサ142は、テスト回路138に制御を受け渡す。テストモードが呼び出されなかった場合は、方法400はステップ414へ進められる。一実施例では、テストモードは電子ヒューズ144内の設定により解除されることが可能である(例えば製造時にテストされた後、DFTモードは解除が可能)。ステップ402~412は、プログラマブルSoC102の初期化の第1段階450の一部であることが可能である。
【0036】
ステップ414は、PMU122の動作のためのプログラマブルSoC102の初期化の第2段階を開始させることが可能である。ステップ414では、HW PORシーケンサ142は、PMU122に関してスキャンクリア動作を実施することが可能である。スキャンクリア動作により、PMU122内のスキャンチェーンがクリアされ、クリア動作を確認するためデータをリードバックする。スキャンチェーンは、デバッグ回路324の一部であるバウンダリスキャンチェーンおよび/または内部スキャンチェーンを含むことが可能である。ステップ416では、HW PORシーケンサ142は、LPD190においてLBIST動作を実施することが可能である。HW PORシーケンサ142は、LPD190のロジックをテストするため、テスト回路138内のLBISTエンジンを呼び出すことが可能である。ステップ414および416は、点線で囲まれており、電子ヒューズ144に格納されている設定に基づいて選択的に実施されることが可能である。
【0037】
ステップ418では、HW PORシーケンサ142は、LPD190においてBISRを実施する。HW PORシーケンサ142は、BISRエンジンをテスト回路138内でLPDにおいて起動させる。例えば、LPD内のRAM(RAM126の一部)は、冗長コラムを含むことが可能である。電子ヒューズ144は、特定の冗長RAMコラムを可能にする設定を格納することが可能である。テスト回路138内のBISRエンジンは、これらの設定を読み出し、適切なRAMコラムを可能にすることが可能である。ステップ420では、HW PORシーケンサ142は、事前PMU初期化においてエラーがあったか否かを判定する。エラーがあった場合、方法400はステップ422に進められ、HW PORシーケンサ142は、ここでパワーオン/ブートプロセスを停止させる。そうでない場合は、方法400は、ステップ424へ進められることが可能であり、HW PORシーケンサ142は、PMU122のリセットをリリースする。
【0038】
図5Aおよび5Bは、一実施例に係りPMU122により実施されるプリブート初期化の方法500を示す。すなわち、
図5Aおよび5Bは、
図2に示される方法200のステージ204の実施例を示している。
図5の方法は、ROM312内のPORシーケンシングコード334の実行を通じてPMU122により実施可能である。
【0039】
ステップ502では、PMU122は初期化を実施する。ステップ502は、ステップ504~510を含むことが可能である。ステップ504では、PMU122はROM212の検証をトリガする。PMU122は、ROM212に格納されるコードの認証のため、ROM検証回路230を起動させることが可能である。ステップ506では、PMU122は、検証が成功したかを判定する。していない場合は、方法508はステップ508へ進められ、ここでPMU122はパワーオン/ブートプロセスを停止させる。そうでない場合は、方法500は、ステップ510へ進められ、ここではPMU122はCPU304のリセットをリリースする。
【0040】
ステップ512では、PMU122は、プログラマブルSoC102内のテストロジックを選択的に初期化する。例えば、ステップ514ではPMU122は、それ自体をPS104のその他のコンポーネントから分離することが可能である。ステップ516ではPMU122は、LPD、FDPまたは両方に関してスキャンクリア動作を実施することが可能である。ステップ514および516は、電子ヒューズ144の設定および実施されているリセットタイプに応じて条件付きで実施可能である。例えば、スキャンクリア動作は、電子ヒューズ144内で作動され、リセットタイプがPORである場合に実施可能である。電子ヒューズ144内で無効にされるか、またはリセットタイプがシステムリセット(ウォームリセット)の場合、PMU122はステップ514および516を省略することが可能である。
【0041】
ステップ518では、PMU122は、PS104内の1つまたは複数の回路ブロックを初期化する。例えば、ステップ520では、ステップ514で発動された場合には、PMU122は、その分離状態を無効にすることが可能である。そうでない場合は、PMU122は、ステップ520を省略可能である。ステップ522では、PMU122は、システムモニタ168およびPLL137を初期化可能である。PLL137およびシステムモニタ168のような回路は、定常状態に達し完全に初期化されるまでに一定の時間がかかることがある。回路ブロックの初期化の後、PMU122は、ステップ524で回路ブロックを監視して初期化完了の時期を判定することが可能である。
【0042】
ステップ526では、PMU122はPS104内のRAMを初期化する。例えばステップ528では、PMU122は、PMU122内のRAM314のようなRAM126の1つまたは複数のRAMモジュールにゼロをロードすることが可能である。ステップ530では、PMU122は、FPDにおいてBISR動作を選択的に実施する。PMU122は、FPD内のコンポーネントにおけるBISR動作の実施のため、テスト回路138内のBISRエンジンを起動させることが可能である。ステップ532では、PMU122は、LDP、FPD、または両方において、MBISTクリア動作を選択的に実施可能である。PMU122は、RAM126の1つまたは複数のRAMにおけるMBISTクリア動作の実施のため、テスト回路138内のMBISTエンジンを起動させることが可能である。ステップ530および532は、リセットのタイプに基づいて条件に応じて行われることが可能である(例えば、PORの場合このようなステップを実施し、システムリセットの場合はこれらのステップを省略)。
【0043】
ステップ534では、PMU122は、パワードメインを初期化する。例えば、ステップ536では、PMU122は、無効化されたアイランドのパワーダウンを行うことが可能である。いくつかの場合では、プログラマブルSoC102内の1つまたは複数のアイランドは、電子ヒューズ144内の設定を用いて意図的に無効にされることが可能である。これらの無効にされたアイランドは、装置のテストを簡易化するために最初に電源が入れられることが可能であるが、電子ヒューズ144内の設定によってパワーダウンされる。ステップ538では、PMU122は、1つまたは複数のCPUリセットをリリースすることが可能である。例えば、PMU122は、BootROMの実行を開始するため、CSU120のリセットをリリースすることが可能である。ステップ540では、PMU122は、サーバモードに入る。サーバモードではPMU122は、以下に説明するように、PS104内のその他のコンポーネントからの要求を処理することが可能である。
【0044】
図6は、PMU122のサーバモード時の要求を処理する例示的な方法600を示すフローチャートである。ステップ602では、PMU122は、1つまたは複数のPMUインタフェースを介して1つまたは複数の要求を受ける。例えば、PMU122は、割り込み、汎用入力(GPI)、グローバルレジスタ226への書き込み、またはインターコネクト124により、要求を受けることが可能である。ステップ603では、PMU122は、要求を処理する。例えば、ステップ604では、PMU122は、RAM314に格納されるユーザ/ファームウェア・コードを実行可能である。以下に説明するように、CSU120によるFSBL180の実行の結果、RAM314へのユーザ/ファームウェア・コードのロードが行われることが可能である。CSU120は、PMU122がプロセッサ間割り込み(IPI)を利用して、RAM314内のユーザ/ファームウェア・コードを実行するよう要求可能である。ステップ606では、PMU122は、1つまたは複数のパワードメインまたはアイランドのパワーアップまたはパワーダウンを行うことが可能である。ステップ608では、PMU122は、1つまたは複数のブロックにおいてリセットをリリースすることが可能である。ステップ610では、PMU122は、1つまたは複数の特定のブロックにおいてスキャンクリアまたはBIST動作を起動することが可能である。
【0045】
図7は、一実施例に係るブートプロセスの初期化方法を示すフローチャートである。すなわち
図7は、
図2に示される方法200のステージ206の実施例を示す。
図7の方法は、BootROMの実行中、CSU120により実施可能である。ステップ702では、CSU120は初期化を実施する。例えば、ステップ704では、CSU120は、そのROMを検証可能である。ステップ706では、CSU120は、PLL137を選択的に初期化することが可能である(PMU122により既に初期化されていない場合)。ステップ708では、CSU120は、RAM126内のOCMを選択的にパワーアップすることが可能である(PMU122により既にパワーアップされていない場合)。ステップ710では、CSU120は、1つまたは複数のブロックのパワーダウンを選択的に要求可能である。
【0046】
ステップ712では、CSU120は、PMU122のRAM314にオプショナルコードをロードし、このオプショナルコードの実行をPMU122に要求可能である。ステップ714では、CSU120は、RAM126のOCMにFSBL180をロード可能である。ステップ716では、CSU120は、APU116および/またはRPU118に対してパワーオンおよびリセットのリリースをPMU122に要求可能である。ステップ718では、CSU120は、メンテナンスモードに入ることが可能である。CSU120は、メンテナンスモード時にはPS104内のその他のコンポーネントからの要求を処理可能である。
図7に示されるプロセスは単に、BootROMの実行により実施可能である動作の形式の一実施例である。
【0047】
図8は、一実施例に係るブート方法を示すフローチャートである。すなわち、
図8は、
図2に示される方法200のステージ208の実施例を示す。
図8の方法は、FSBL180の実行中に、APU116またはRPU118により実施可能である。ステップ802では、APU116/RPU118は、初期化を実施する。例えば、ステップ804では、APU116/RPU118は、外部電源を設定する。ステップ806では、APU116/RPU118は、ブロック/ドメインのパワーダウンを要求する。
【0048】
ステップ808では、APU116/RPU118は、選択的にPL106のパワーアップを要求可能である。ステップ810では、APU116/RPU118は、PLL137のロック状態を確認する。ステップ812では、APU116/RPU118は、必要に応じて、起動されたドメインに関するスキャンクリア/BISTの実施をPMU122に要求する。ステップ814では、APU116/RPU118は、ブロックに対してリセットのリリースをPMU122に要求する。ステップ816では、APU116/RPU118は、必要に応じてPL106を設定する。ステップ818では、APU116/RPU118は、システムイメージ178内のOS/SW184をロード/実行する。
図8に示されるプロセスは単に、FSBLの実行により実施可能である動作の形式の一実施例である。
【0049】
追加の実施例のいくつかを以下に説明する。
一実施例ではSoCが設けられることができる。
【0050】
このSoCは、PORピンに接続されるハードウェアPORシーケンサ回路と、ハードウェアPORシーケンサ回路に接続され、1つまたは複数のCPUおよびROMをPMUが含むPMU回路と、ブートプロセスを実行するよう構成される1つまたは複数の処理装置とを含むことができ、ハードウェアPORシーケンサ回路はPMUを初期化するよう構成されており、PMUの1つまたは複数のCPUは、プリブート初期化を実施するためROMに格納されるコードを実行するよう構成されている。
【0051】
このようなSoCはさらにテスト回路を含み、プリブート初期化は、テスト回路の初期化を含むことができる。
【0052】
このようなSoCはさらに、1つまたは複数の回路ブロックを含み、プリブート初期化は、1つまたは複数の回路ブロックの初期化を含むことができる。
【0053】
このようなSoCでは、1つまたは複数の回路ブロックは、PLLまたはシステムモニタの少なくとも1つを含むことができる。
【0054】
このようなSoCのいくつかはさらにRAMを含み、プリブート初期化はRAMの初期化を含むことができる。
【0055】
このようなSoCのいくつかでは、RAMの初期化は、RAMへのゼロロード、RAMにおけるMBISTの実施、またはRAMにおけるBISRの実施の少なくとも1つを含むことができる。
【0056】
このようなSoCのいくつかはさらに複数のパワードメインを含み、プリブート初期化はパワードメインの初期化を含むことができる。
【0057】
このようなSoCのいくつかはさらにRAMを含み、ブートプロセスはブートローダのRAMへのロードを含むことができる。
【0058】
このようなSoCのいくつかでは、1つまたは複数の処理装置が第1処理装置と第2処理装置とを含むことができ、第1処理装置は、ブートローダをRAMにロードするためBootROMコードを実行し、第2処理装置は、ブートローダを実行することができる。
【0059】
このようなSoCのいくつかでは、プリブート初期化は、第1処理装置のリセットのリリースを含むことができる。
【0060】
別の実施例では、SoCのブート方法が提供されることができる。
このようなSoCのブート方法は、ハードウェアPORシーケンサ回路を用いて1つまたは複数の第1初期化タスクを実施することと、PMUを用いて、ROMに格納されるコードの実行により第2初期化タスクを実施することと、第1処理装置を用いてブートROM内のコードを実行することと、第2処理装置を用いてブートローダを実行することとを含むことができる。
【0061】
このような方法では、第1初期化タスクはPMUの初期化を含むことができる。
このような方法では、第2初期化タスクは、テスト回路の初期化を含むことができる。
【0062】
このような方法では、第2初期化タスクは、1つまたは複数の回路ブロックの初期化を含むことができる。
【0063】
このような方法では、第2初期化タスクはRAMの初期化を含むことができる。
このような方法では、第2初期化タスクは、パワードメインの初期化を含むことができる。
【0064】
このような方法はさらに、PMUにおいて第1処理装置または第2処理装置の少なくとも1つからの1つまたは複数のリクエストを処理することを含むことができる。
【0065】
別の実施例では、非一時的なコンピュータ可読媒体が設けられることができる。
このような非一時的コンピュータ可読媒体には命令が格納されていることができ、これがSoCのPMUにより実行されると、PMUに以下からなる方法を実施させる。すなわち、SoC内のテスト回路を初期化することと、SoC内の1つまたは複数の回路ブロックを初期化することと、SoC内のRAMを初期化することと、SoC内のパワードメインを初期化することと、SoC内の第1処理装置にブートプロセスを開始させることと、からなる。
【0066】
このような非一時的コンピュータ可読媒体はさらに、SoCの少なくとも1つの処理装置からの1つまたは複数の要求を処理することを含むことができる。
【0067】
このような非一時的コンピュータ可読媒体はさらに、初期化のステップを実施し、ハードウェアPORシーケンサ回路によるPMUのリセットのリリースを含むことができる。
【0068】
上記の記載は特定の実施例に関するものであり、その基本的な範囲から逸脱することなく、別のまたは更なる実施例が考案されることができ、その範囲は以下の請求項により定められる。