JP6032360B2 - コンフィグレーション制御システム及びコンフィグレーション制御方法 - Google Patents

コンフィグレーション制御システム及びコンフィグレーション制御方法 Download PDF

Info

Publication number
JP6032360B2
JP6032360B2 JP2015522586A JP2015522586A JP6032360B2 JP 6032360 B2 JP6032360 B2 JP 6032360B2 JP 2015522586 A JP2015522586 A JP 2015522586A JP 2015522586 A JP2015522586 A JP 2015522586A JP 6032360 B2 JP6032360 B2 JP 6032360B2
Authority
JP
Japan
Prior art keywords
configuration
circuit information
fpga
pld
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015522586A
Other languages
English (en)
Other versions
JPWO2014199678A1 (ja
Inventor
克尚 池内
克尚 池内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Application granted granted Critical
Publication of JP6032360B2 publication Critical patent/JP6032360B2/ja
Publication of JPWO2014199678A1 publication Critical patent/JPWO2014199678A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17752Structural details of configuration resources for hot reconfiguration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)

Description

本発明は、コンフィグレーション制御システム及びコンフィグレーション制御方法に関する。
FPGA(Field Programmable Gate Array)は、デジタル機器やネットワーク機器の進歩を支えているデジタル回路を構成するLSI(Large Scale Integration)の一つである。LSIは、機器の中で信号処理や制御等を実行する論理LSIとデータやプログラムを蓄積するメモリに大別される。FPGAは、このうちの論理LSIに分類される。
通常の暮らしのなかでは、消費者がFPGAを目にする機会はほとんどない。しかしながら、電子機器の開発者が試作機を作って完成度を高めていく過程では、必ずと言っていいほどFPGAを使っている。また、最近では、消費者が購入する製品の中にもFPGAが搭載されるようになった。
FPGAは、カスタムLSIであるASIC(Application Specific Integrated Circuit)、標準LSIであるASSP(Application Specific Standard Products)、マイクロプロセッサ等、他の論理LSIにはない固有の特徴を持っている。固有の特徴とは、電子回路を自由にプログラミングできるという特徴である。この特徴は、複雑化、大規模化、高コスト化、商品寿命の短期化が進む電子機器の開発トレンドに、ピタリと合っていると言える。
マイクロプロセッサの登場で、ソフトウェアを書き換えて機器の機能を自由に変更できるようになった。しかしながら、マイクロプロセッサを用いても、使う演算器の種類やメモリの構成といった、ハードウェアまで変更することはできなかった。FPGAを使った場合には、性能向上や消費電力の低減等に向けて、ハードウェアである回路構成を自由に変更できる。FPGAの応用は、こうした特徴のために、携帯電話の基地局や半導体製造装置のような最先端の産業機器から、デジタル家電、モバイル機器等、身の周りの機器まで広がっている。
このような背景に関連する技術としては、様々なものが知られている(例えば、特許文献1〜3参照。)。
例えば、特許文献1には、CPU(Central Processing Unit)と、メモリと、これらCPU及びメモリの配下のバスと、このバス上に配置され、FPGAのコンフィグレーション制御をなすコンフィグレーション制御手段とを含む情報処理システムが記載されている。より具体的に説明すると、この情報処理システムは、コンフィグレーション制御の開始から終了までの間、FPGAをバスから切り離すためのバススイッチを含む。このようにして、この情報処理システムには、コンフィグレーション制御されるFPGAがシステムバス等を収容している場合、リセット信号をバススイッチのイネーブル信号として使用して、バスからFPGAを分離し、システムの連続可用性を実現させるという効果がある。
また、例えば、特許文献2には、電源投入後の起動時に、第1のメモリ及び第2のメモリに記憶された論理回路データのうちのいずれか一方のメモリの論理回路データを読み出してコンフィグレーションし、論理回路の構成を決定するプログラマブル論理回路の起動保証方法が記載されている。より具体的に説明すると、このプログラマブル論理回路の起動保証方法は、プログラマブル論理回路の起動時において、プログラマブル論理回路が、初期化を行った後に、第1のメモリに記憶された論理回路データを読み出し、コンフィグレーションを行ってこれが完了するまでのプログラマブル論理回路におけるコンフィグレーションの経過時間を監視し、経過時間が設定時間を超えると、第1のメモリが異常であると判断して異常通知信号を発生する。そして、このプログラマブル論理回路の起動保証方法は、異常通知信号を受信すると、第1のメモリを第2のメモリに切り替え、第2のメモリに記憶された論理回路データを用いて再度プログラマブル論理回路に対してコンフィグレーションを行わせる。このようにして、このプログラマブル論理回路の起動保証方法を用いると、コンフィグレーション用の第1のメモリが故障している場合でも、自動的に第2のメモリに切り替えてプログラマブル論理回路のコンフィグレーションを実行できる。
また、例えば、特許文献3には、電源投入後に第1のコンフィグレーションROM(Read only Memory)及び第2のコンフィグレーションROMに記憶された回路情報をFPGAが読み込んでFPGAをコンフィグレーションするコンフィグレーション手法が記載されている。より具体的に説明すると、このコンフィグレーション手法は、最初にFPGAが第1のコンフィグレーションROMからコンフィグレーションを開始する。そして、このコンフィグレーション手法は、第1のコンフィグレーションROMからコンフィグレーションしているときに、FPGAからコンフィグレーションエラー検出信号が出力された場合は、コンフィグレーション経路を第2のコンフィグレーションROMに切り替え、第2のコンフィグレーションROMからコンフィグレーションを開始する。このようにして、このコンフィグレーション手法を用いると、電源を投入してからFPGAが起動するまでの時間を短縮しつつ、FPGAの起動を保証することができる。
日本特開2004−021867号公報 日本特開2010−066961号公報 日本特開2012−190368号公報
プログラマブルデバイスは、デバイスプロセスの微細化が進み、消費電力、性能、コスト等の観点で恩恵を受けられるようになってきた一方で、宇宙線に起因するソフトエラーの影響を受けやすい。
そのため、プログラマブルデバイスは、ハードウェア障害でないのにも関わらず、正常に起動しない現象が見られるようになり、そのたびにハードウェア改修を実施しなければならず、余計な工数や費用が発生してしまう。また、FPGAがスタックしてシステムダウンした場合には、運用中の顧客にも迷惑をかけてしまうことから、フェールセーフの観点からも問題がある。ソフトエラーとは、地表に到達するα線や中性子線等の宇宙線が原因で起きる現象であり、半導体チップの記憶部データが一時的に書き換えられていたり、フリップフロップの論理値が反転したりすることである。
ソフトエラーは、ハードウェアの故障ではなく一過性の不良であるため、再現性がなく解析が困難ではあるが、一般的には、誤り検出訂正回路を実装して、ソフトエラーの検出、訂正を行うことで回避が可能である。FPGAは、同様に、コンフィグレーション時にソフトエラーが原因で回路情報であるビットストリームのあるビットが反転してしまうことがある。FPGAは、内部にCRC(Cyclic Redundancy Check)回路のハードIP(Intellectual Property)を実装し、入力される回路情報の異常を検出する仕組みを有する。しかしながら、FPGAを搭載するシステムとしては、回路情報に異常が生じることで以下の問題が発生する。
第1の問題は、FPGA側ではCRC回路を用いて回路情報の異常を検出することはできるが、異常ビットを訂正することができないことである。
第2の問題は、第1の問題のために、ハードウェアの故障ではないのにも関わらずFPGAを起動させることができず、システムとしてスタックしてしまうことである。
第3の問題は、第2の問題の状態では、CPU等からFPGAにアクセスすることができないため、システムに実装されているソフトウェアは、FPGAのハードウェア故障としか認識することができないことである。
第4の問題は、開発フェーズの段階であれば、マニュアルで電源オン/オフやシステムリセット等を行い、コンフィグレーションを再度実施すればよいが、運用中のシステムではマニュアルでの復旧は容易ではないことである。
これらのために、FPGAを搭載するシステムは、ハードウェア故障としてカテゴライズされてしまうために、顧客の同意を得られないことになる。
一方、特許文献1に記載の技術を用いた場合、FPGAのコンフィグレーションを行う間、リセット信号に応答してFPGAを切り離してしまうために、ソフトエラーが発生した場合に、システムダウンすることなくFPGAを起動させることができない。
また、特許文献2に記載の技術を用いた場合、コンフィグレーション時間を測定して、その時間が、ある閾値を超えたことを判断するコンフィグレーション用異常監視回路を備える必要がある。通常、コンフィグレーション時間は、FPGAのデバイスの種類に応じて変動するために、使用するFPGAごとに、コンフィグレーション用異常監視回路をリデザインしなければならず、回路構成が複雑化する。そして、特許文献2に記載の技術を用いると、コンフィグレーション用メインメモリ(第1のメモリ)とコンフィグレーション用サブメモリ(第2のメモリ)の両方が異常を示した場合、無限ループに陥ることになる。
そして、特許文献3に記載の技術を用いた場合、電源オン後に最初に読み込む回路情報は、第1のコンフィグレーションROMに記憶されているデータに限定される。そのため、特許文献3に記載の技術を用いた場合、第1のコンフィグレーションROMに記憶されているデータでコンフィグレーションに失敗し、第2のコンフィグレーションROMに記憶されているデータでコンフィグレーションに成功した場合、その後に第1のコンフィグレーションROMに記憶されているデータを修復する必要がある。また、特許文献3に記載の技術を用いた場合、コンフィグレーションROM内のデータを更新する際に、第2のコンフィグレーションROMに最初に更新データを書き込んでから、第1のコンフィグレーションROMに更新データを再度書込み直さなければならない。
このように、特許文献1〜3に記載の技術を用いると、ソフトエラーが発生した場合に、システムダウンすることなくFPGAを起動させることができないなどの様々な問題が生じる。
本発明の目的は、上述した課題を解決するコンフィグレーション制御システム及びコンフィグレーション制御方法を提供することにある。
上記課題を解決するために、本発明の第1の形態は、コンフィグレーション制御システムであって、LSI内部の論理回路をプログラミングすることができる第1の半導体チップと、第1の半導体チップの複数の回路情報が記憶される半導体メモリと、半導体メモリに記憶されている回路情報を用いて、第1の半導体チップへのコンフィグレーションを制御するにあたり、複数の回路情報のいずれかでコンフィグレーションに失敗した場合、複数の回路情報のうちの他の回路情報で再コンフィグレーションを行う第2の半導体チップと、複数の回路情報のうち、いずれの回路情報を用いてコンフィグレーションが行われたのかを第2の半導体チップから第1の半導体チップへ通知するための信号線とを備える。
本発明の第2の形態は、コンフィグレーション制御方法であって、半導体メモリに記憶されているLSI内部の論理回路をプログラミングすることができる第1の半導体チップの複数の回路情報を用いて、第1の半導体チップへのコンフィグレーションを制御するにあたり、複数の回路情報のいずれかでコンフィグレーションに失敗した場合、複数の回路情報のうちの他の回路情報で第2の半導体チップが再コンフィグレーションを行う段階と、第1の半導体チップと第2の半導体チップとを接続する信号線を介して、複数の回路情報のうち、いずれの回路情報を用いてコンフィグレーションが行われたのかを第2の半導体チップから第1の半導体チップへ通知する段階と含む
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となり得る。
以上の説明から明らかなように、この発明は、ソフトエラーが発生した場合に、システムダウンすることなくFPGAを起動させることができる。
一実施形態に係るコンフィグレーション制御システム100のブロック構成の一例を示す図である。 コンフィグレーション制御システム100の基本的なコンフィグレーションシーケンスを説明するフローチャートである。 フラッシュメモリ101のアドレスマップの一例を示す図である。 図3のフラッシュメモリ101のアドレスマップにアドレス値を挿入した図である。 フラッシュメモリ101、102のアドレスマップの一例を示す図である。 図5のフラッシュメモリ101、102のアドレスマップにアドレス値を挿入した図である。 PLD103の状態遷移図である。 コンフィグレーション制御システム100の具体的なコンフィグレーションシーケンスを説明するフローチャートである。 コンフィグレーション制御システム100の具体的なコンフィグレーションシーケンスを説明するフローチャートである。 コンフィグレーション制御システム100の具体的なコンフィグレーションシーケンスを説明するフローチャートである。 コンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。 コンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。 コンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。 コンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。 コンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。 コンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。 コンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。 コンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではなく、また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、一実施形態に係るコンフィグレーション制御システム100のブロック構成の一例を示す。コンフィグレーション制御システム100は、FPGA、PLD(Programmable Logic Device)に回路情報を書き込むシステムである。
コンフィグレーション制御システム100は、フラッシュメモリ101、フラッシュメモリ102、PLD103、FPGA104、CPU105、パソコン106、および、JTAG(Joint Test Action Group)インターフェース110を備える。
フラッシュメモリ101及びフラッシュメモリ102は、データの消去、書き込みを自由に行うことができ、電源を切っても内容が消えない半導体メモリの一種である。例えば、フラッシュメモリ101及びフラッシュメモリ102は、CFI(Common Flash Interface)を介して、PLD103に接続されている。そして、フラッシュメモリ101及びフラッシュメモリ102には、デザイン固有のプログラミングデータを有する、2つの第1回路情報A及び第2回路情報Bが記憶される。また、フラッシュメモリ101及びフラッシュメモリ102は、第1回路情報Aを記憶するための第1記憶領域(図3、5参照)C、第2回路情報Bを記憶するための第2記憶領域(図3、5参照)Dを有する。また、フラッシュメモリ101及びフラッシュメモリ102は、いずれの回路情報A(B)でコンフィグレーションを行うかを示す起動面情報を記憶するための起動面情報領域(図3、5参照)Eを有する。また、フラッシュメモリ101及びフラッシュメモリ102は、各回路情報A、Bの開始位置を示す開始アドレス値と各回路情報A、Bの終了位置を示す終了アドレス値とを記憶するための開始/終了アドレス情報領域(図3、5参照)Fを有する。なお、ここでは、各回路情報A、Bを起動面として取り扱う。フラッシュメモリ101及びフラッシュメモリ102は、本発明における「半導体メモリ」の一例である。
PLD103は、揮発性プログラマブルデバイスであって、フラッシュメモリ101及びフラッシュメモリ102に記憶されている各回路情報A、Bを読み出して、FPGA104のコンフィグレーションシーケンスをコントロールする機能を担う。PLD103は、インターフェースConfig I/Fを通じてFPGA104に接続されている。PLD103は、フラッシュメモリ101及びフラッシュメモリ102に記憶されている各回路情報A、Bを読み出して、FPGA104に対し、それら各回路情報A、Bにて実装するコンフィグレーションを行う。そして、PLD103は、フラッシュメモリ101及びフラッシュメモリ102に記憶されている各回路情報A、Bのうちのいずれの回路情報A(B)でコンフィグレーションを行ったかをFPGA104に通知するための信号線107を有する。信号線107は、1bit信号を転送する信号線であり、FPGA104がコンフィグレーションを行っている間は、PLD103からのレベル信号をFPGA104に与える。PLD103は、本発明における「第2の半導体チップ」の一例である。PLD103は、第1回路情報Aでコンフィグレーションに失敗した場合、他の第2回路情報Bで再コンフィグレーションを行わせるためのリトライシーケンサを有する。
FPGA104は、PLD103から受け取った各回路情報A、Bを監視して各回路情報A、Bにソフトエラー等に起因するデータ化けが発生していないかの整合性のチェックを実施する。FPGA104は、本発明における「第1の半導体チップ」の一例である。FPGA104は、ケーブル108を通じてCPU105に接続されている。
CPU105は、バージョンアップ等に伴ってFPGA104の回路を更新する際に、CPU105からFPGA104を経由し、インターフェースOriginal I/Fを通じてフラッシュメモリ101及びフラッシュメモリ102に各回路情報A、Bを書き込ませる。
パソコン106は、ケーブル109に接続されたJTAGインターフェース110ならびにケーブル111および112を介してPLD103、FPGA104に接続されている。また、パソコン106は、ケーブル113を通じてCPU105に接続されている。
図2は、コンフィグレーション制御システム100の基本的な制御動作を説明するフローチャートである。この場合、コンフィグレーション制御システム100は、単一のフラッシュメモリ101を有し、フラッシュメモリ101は、第1記憶領域Cに第1回路情報Aを記憶し、第2記憶領域Dに第2回路情報Bを記憶することができる。なお、コンフィグレーション制御システム100がフラッシュメモリ101及びフラッシュメモリ102を有する場合、フラッシュメモリ101は、第1記憶領域Cに第1回路情報Aを記憶し、フラッシュメモリ102は、第2記憶領域Dに第2回路情報Bを記憶することができる。CPU105は、制御を開始すると、パワーオンリセットか再コンフィグレーション指示を実行する(ステップS101)。次に、PLD103は、フラッシュメモリ101に記憶されている2つの回路情報A、Bのうち、一方の第1回路情報Aをリードする(ステップS102)。続いて、PLD103は、第1回路情報AのリードデータをFPGA104に送信する(ステップS103)。そして、FPGA104は、受信した第1回路情報Aのデータに対してソフトエラーの有無をチェックする(ステップS104)。次に、CPU105は、ソフトエラーが発生しているか否かを判定する(ステップS105)。FPGA104は、ステップS105の判定結果が「F(False)」の場合、第1回路情報Aのデータでコンフィグレーションを実施する(ステップS106)。次に、FPGA104は、すべてのデータをコンフィグレーションした後に、ユーザモードに切り替わり、第1回路情報Aのデータのデザインで起動する(ステップS107)。そして、CPU105は、正常運用を行う(ステップS108)。
FPGA104は、ステップS105の判定結果が「T(True)」の場合、第1回路情報AのデータでのコンフィグレーションのNG(No Good)を検出する(ステップS109)。次に、PLD103は、フラッシュメモリ101に記憶されている2つの回路情報A、Bのうち、他方の第2回路情報Bをリードする(ステップS110)。続いて、PLD103は、第2回路情報BのリードデータをFPGA104に送信する(ステップS111)。そして、FPGA104は、受信した第2回路情報Bのデータに対してソフトエラーの有無をチェックする(ステップS112)。次に、CPU105は、ソフトエラーが発生しているか否かを判定する(ステップS113)。FPGA104は、ステップS113の判定結果が「F(False)」の場合、第2回路情報Bのデータでコンフィグレーションを実施する(ステップS114)。次に、FPGA104は、すべてのデータをコンフィグレーションした後に、ユーザモードに切り替わり、第2回路情報Bのデータのデザインで起動する(ステップS115)。そして、CPU105は、ソフトエラー検出か正常運用を行う(ステップS116)。
FPGA104は、ステップS113の判定結果が「T(True)」の場合、第2回路情報BのデータでのコンフィグレーションのNGを検出する(ステップS117)。すると、FPGA104は、スタックしてアクセス不可となる(ステップS118)。そして、CPU105は、ハードウェア障害を検出する(ステップS119)。なお、フラッシュメモリ101及びフラッシュメモリ102を有するコンフィグレーション制御システム100の場合も、上記と同様なルーチンを実行することができる。
図3は、フラッシュメモリ101のアドレスマップの一例を示す図である。フラッシュメモリ101は、第1記憶領域Cに第1回路情報Aを記憶し、第2記憶領域Dに第2回路情報Bを記憶する。フラッシュメモリ101は、NBlockのうちの(N−2)/2Blockに相当する範囲の第2回路情報Bを記憶するための第2記憶領域Dを有する。フラッシュメモリ101は、NBlockのうちの(N−2)/2Blockに相当する範囲の第1回路情報Aを記憶するための第1記憶領域Cを有する。フラッシュメモリ101は、NBlockのうちの1Blockに相当する範囲の起動面情報領域Eを有する。フラッシュメモリ101は、NBlockのうちの1Blockに相当する範囲の開始/終了アドレス情報領域Fを有する。なお、図3を含め、以下の図4、5、6においては、第1記憶領域Cを回路情報A格納領域Cと記載し、第2記憶領域Dを回路情報B格納領域Dと記載する。
図4は、図3に示したフラッシュメモリ101のアドレスマップにアドレス値を挿入した図である。フラッシュメモリ101の記憶容量は、128Mbitである。第2記憶領域Dのアドレス値は、0x7FFFFFから0x410000である。第1記憶領域Cのアドレス値は、0x40FFFFから0x020000である。起動面情報領域Eのアドレス値は、0x010000であって、図4の例では回路情報AでFPGA104を起動することを示す0x0(0x0:ConfigA、0x1:ConfigB)が記憶されている。開始/終了アドレス情報領域Fのアドレス値は、0x000003から0x000000である。0x000003には、0x7Fが回路情報B格納領域Dの終了アドレス(ConfigB End Address)として記憶されている。0x000002には、0x41が回路情報B格納領域Dの開始アドレス(ConfigB Start Address)として記憶されている。0x000001には、0x40が回路情報A格納領域Cの終了アドレス(ConfigA End Address)として記憶されている。0x000000には、0x02が回路情報A格納領域Cの開始アドレス(ConfigA Start Address)として記憶されている。なお、開始/終了アドレス情報領域Fに記憶されたアドレス値は、実アドレス値ではなく、下位16bitを省略した値が記憶されている。これは、フラッシュメモリ101は、データbit幅の最小単位が8bitであるために、1ブロック分(0x010000)の領域がわかる上位8bitのアドレス領域を示す値だけを記憶し、フラッシュメモリ101から読み出しを行ったPLD103で下位16bitを補完する(すなわち、開始アドレスの場合には「0x0000」を補完し、終了アドレスの場合には「0xFFFF」を補完する)ようにしているからである。
図5は、コンフィグレーション制御システム100がフラッシュメモリ101及びフラッシュメモリ102を有する場合におけるアドレスマップの一例を示す図である。フラッシュメモリ101は、第1記憶領域Cに第1回路情報Aを記憶し、フラッシュメモリ102は、第2記憶領域Dに第2回路情報Bを記憶する。フラッシュメモリ101は、NBlockのうちの(N−2)Blockに相当する範囲の第1回路情報Aを記憶するための第1記憶領域Cを有する。フラッシュメモリ101は、NBlockのうちの1Blockに相当する範囲の起動面情報領域Eを有する。フラッシュメモリ101は、NBlockのうちの1Blockに相当する範囲の第1回路情報A用の開始/終了アドレス情報領域Fを有する。フラッシュメモリ102には、フラッシュメモリ101と同様に、デザイン固有のプログラミングデータを有する、第2回路情報Bが記憶される。フラッシュメモリ102は、NBlockのうちの(N−2)Blockに相当する範囲の第2回路情報Bを記憶するための第2記憶領域Dを有する。フラッシュメモリ102は、NBlockのうちの1Blockに相当する範囲の未使用領域Gを有する。フラッシュメモリ102は、NBlockのうちの1Blockに相当する範囲の第2回路情報B用の開始/終了アドレス情報領域Fを有する。フラッシュメモリ102は、起動面情報領域Eを有さない。
図6は、図5に示したフラッシュメモリ101及びフラッシュメモリ102のアドレスマップにアドレス値を挿入した図である。フラッシュメモリ101及びフラッシュメモリ102の記憶容量は、256Mbitである。フラッシュメモリ101において、第1記憶領域Cのアドレス値は、0xFFFFFFから0x020000である。起動面情報領域Eのアドレス値は、0x010000であって、図6の例では回路情報BでFPGA104を起動することを示す0x1(0x0:ConfigA、0x1:ConfigB)が記憶されている。開始/終了アドレス情報領域Fのアドレス値は、0x000001から0x000000である。0x000001には、0xFFが回路情報A格納領域Cの終了アドレス(ConfigA End Address)として記憶されている。0x000000には、0x02が回路情報A格納領域Cの開始アドレス(ConfigA Start Address)として記憶されている。フラッシュメモリ102において、第2記憶領域Dのアドレス値は、0xFFFFFFから0x020000である。未使用領域Gのアドレス値は、0x01FFFFから0x010000である。開始/終了アドレス情報領域Fのアドレス値は、0x000001から0x000000である。0x000001には、0xFFが回路情報B格納領域Dの終了アドレス(ConfigB End Address)として記憶されている0x000000には、0x02が回路情報B格納領域Dの開始了アドレス(ConfigB Start Address)として記憶されている。なお、この場合も、開始/終了アドレス情報に記憶されたアドレス値は、実アドレス値ではなく、下位16bitを省略した値である。
図7は、PLD103の状態遷移図である。STATE1は、PLD103のリセット後の初期状態であり、PLD103は、PLD103内の全レジスタを初期状態に戻し、FPGA104へ出力するコンフィグレーション開始信号をディスエーブルにし、無条件でSTATE2に遷移する。
STATE2では、STATE1から遷移してきた場合、PLD103は、フラッシュメモリ101及びフラッシュメモリ102の起動面情報をリードする。STATE2では、STATE4から遷移してきた場合、PLD103は、PLD103の内部で保持している起動面情報を、二回目のコンフィグレーションを実施するために反転する。なお、このとき、STATE2では、PLD103は、FPGA104へ出力するコンフィグレーション開始信号をイネーブルにし、特定サイクル後にSTATE3に遷移する。
STATE3では、FPGA104がコンフィグレーション可能になる。すなわち、STATE3は、PLD103がFPGA104からコンフィグレーション指示信号が来るのを待つ状態である。なお、このとき、STATE3では、PLD103は、FPGA104へ出力するコンフィグレーション開始信号をディスエーブルにし、FPGA104からコンフィグレーション指示信号がアサートされるとSTATE4に遷移する。
STATE4では、PLD103は、FPGA104のコンフィグレーション完了を待つ。STATE4では、PLD103は、FPGA104からコンフィグレーション完了信号がアサートされるとSTATE5に遷移する。STATE4では、コンフィグレーション中にFPGA104からコンフィグレーション指示信号がデアサート、すなわち、コンフィグレーションNG状態となると、PLD103は、PLD103の内部に有するコンフィグレーションNGカウンタをカウントアップして、カウンタ値=1(一回目のコンフィグレーションNG)の場合、PLD103はSTATE2に遷移する。STATE4では、カウンタ値=2(二回目のコンフィグレーションNG)の場合、PLD103はSTATE7に遷移する。
STATE5は、FPGA104のコンフィグレーションが完了した状態である。STATE5では、FPGA104からのユーザモード切替信号があれば、その信号がアサートされた場合、もしくは、特定サイクル後に、PLD103はSTATE6に遷移する。
STATE6は、FPGA104のコンフィグレーションが完了し、かつ、ユーザモードへ移行した状態である。STATE6では、CPU105よりFPGA104経由で再コンフィグレーション指示信号を受けると、PLD103はSTATE1に遷移する。また、STATE6では、FPGA104からコンフィグレーション指示信号がデアサートされる(FPGA104異常状態)と、PLD103はSTATE1に遷移する。
STATE7は、FPGA104のコンフィグレーションが異常終了した状態である。STATE7では、CPU105よりFPGA104経由で再コンフィグレーション指示信号を受けると、PLD103はSTATE1に遷移する。また、STATE7では、FPGA104からコンフィグレーション指示信号がデアサートされる(FPGA104異常状態)と、PLD103はSTATE1に遷移する。
図8から図10は、コンフィグレーション制御システム100の具体的なコンフィグレーションシーケンスをそれぞれ説明するフローチャートである。なお、ここでは、コンフィグレーション制御システム100が単一のフラッシュメモリ101を有する場合について説明するが、コンフィグレーション制御システム100がフラッシュメモリ101及びフラッシュメモリ102を有する場合も、同様なルーチンを実行することができる。まず、CPU105は、コンフィグレンスシーケンスの実行を始める(ステップS201)。次に、CPU105は、FPGA104が起動しているか否かを判定する(ステップS202)。CPU105は、ステップS202の判定結果が「T(True)」の場合、運用中もしくは評価中を想定する(ステップS203)。そして、CPU105は、FPGA104およびPLD103を順次介して(図面では、FPGA104→PLD103と記載する)、フラッシュメモリ101に各回路情報A、Bをライト(具体的には、ブロックイレース→ライト、すなわち、ブロックイレースを行ってからライト)する(ステップS204)。次に、CPU105は、Verifyを実施し、書き込まれたデータが正しいかどうかを確認する(ステップS205)。そして、CPU105は、フラッシュメモリ101の起動面情報領域Eに、各回路情報A、BのいずれでFPGA104を起動させるかの情報をライト(ブロックイレース→ライト)する(ステップS206)。続いて、CPU105は、FPGA104を介して、PLD103にコンフィグレーションを要求する(ステップS207)。そして、CPU105は、電源の安定後に、PLD103を起動させる(ステップS208)。
一方、CPU105は、ステップS202の判定結果が「F(False)」の場合、評価中を想定する(ステップS209)。そして、CPU105は、JTAGインターフェース110より、FPGA104およびPLD103を順次介して、フラッシュメモリ101に各回路情報A、Bをライト(ブロックイレース→ライト)する(ステップS210)。次に、CPU105は、JTAGインターフェース110よりFPGA104およびPLD103を順次介して、Verifyを実施し、書き込まれたデータが正しいかどうかを確認する(ステップS211)。そして、CPU105は、JTAGインターフェース110よりFPGA104およびPLD103を順次介して、フラッシュメモリ101の起動面情報領域Eに、各回路情報A、BのいずれでFPGA104を起動させるかの情報をライト(ブロックイレース→ライト)する(ステップS212)。続いて、CPU105は、Power On Reset(電源オンリセット)を実行する(ステップS213)。そして、CPU105は、電源の安定後に、PLD103を起動させる(ステップS208)。
ステップS208の後に、PLD103は、FPGA104に対してコンフィグレーション開始信号を送信する(ステップS214)。次に、PLD103は、フラッシュメモリ101の起動面情報領域Eをリードして、各回路情報A、Bのいずれでコンフィグレーションを行うかを確認する(ステップS215)。続いて、PLD103は、有効なコンフィグレーションデータが記憶されているアドレス情報を、フラッシュメモリ101の開始/終了アドレス情報領域Fからリードする(ステップS216)。続いて、PLD103は、開始/終了アドレスに従い、フラッシュメモリ101から有効な回路情報を順次リード及び整形してFPGA104に送信する(ステップS217)。そして、FPGA104は、受信したデータに対してCRCチェックを実施する(ステップS218)。続いて、CPU105は、受信途中にCRCエラーが発生したか否かを判定する(ステップS219)。
そして、FPGA104は、ステップS219の判定結果が「T(True)」の場合、最後のデータを受信した後に、PLD103に対してコンフィグレーション完了信号を送信する(ステップS220)。次に、FPGA104は、コンフィグレーションの完了に伴い、ユーザモードへ移行する。続いて、PLD103は、FPGA104に対していずれの起動面でコンフィグレーションが完了したのかを新たに追加した信号線107で通知する(ステップS222)。次に、PLD103は、自身のコンフィグレーションNGカウンタをリセット(カウンタ値0)する(ステップS223)。そして、PLD103は、FPGA104に対してソフトウェアリセットを実施する(ステップS224)。
この結果、FPGA104は、起動完了となる(ステップS225)。次に、FPGA104は、ステップS222で得た信号を自身の起動情報レジスタに記憶する(ステップS226)。続いて、CPU105は、FPGA104の起動情報レジスタにリードアクセスする(ステップS227)。そして、FPGA104は、ステップS226における起動情報レジスタの値をCPU105に通知する(ステップS228)。次に、CPU105は、ステップS206で得た値とステップS228で得た値とを比較する(ステップS229)。続いて、CPU105は、ステップS206で得た値とステップS228で得た値とが等しいか否かを判定する(ステップS230)。
FPGA104は、ステップS230の判定結果が「T(True)」の場合、期待した回路情報で起動を行う(ステップS231)。これに反して、FPGA104は、ステップS230の判定結果が「F(False)」の場合、期待していない回路情報で起動を行う(ステップS232)。そのため、CPU105は、これ以降の処理は、システム仕様に依存したものとして、例えば、ソフトエラー障害と判断した後に、ステップS207からのルーチンを再実行する等の処理を行う(ステップS233)。
一方、FPGA104は、ステップS219の判定結果が「F(False)」の場合、PLD103に対してコンフィグレーションNG信号を送信する(ステップS234)。次に、PLD103は、コンフィグレーションNGカウンタをカウントアップする(ステップS235)。そして、PLD103は、コンフィグレーションNGカウンタの値が「2」であるか否かを判定する(ステップS236)。
PLD103は、ステップS236の判定結果が「T(True)」の場合、コンフィグレーションの必要がないと判断する。すなわち、PLD103は、コンフィグレーションを各回路情報A、Bで実行済みであると判断する(ステップS237)。次に、PLD103は、コンフィグレーションNGカウンタをリセット(カウンタ値0)して動作を終了する(ステップS238)。このため、CPU105は、FPGA104の起動がNGであって、ハードウェア故障と判断する(ステップS239)。
PLD103は、ステップS236の判定結果が「F(False)」の場合、起動面情報が示す起動面とは反対の起動面の回路情報で再コンフィグレーションを行う必要があると判断する(ステップS240)。次に、PLD103は、起動面情報が示す起動面とは反対の起動面の回路情報のアドレス情報を、フラッシュメモリ101の開始/終了アドレス情報領域Fからリードする(ステップS241)。そして、ステップS217からのルーチンが再び実行される。
図11及び図12は、ソフトエラーが発生しない場合のコンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。なお、ここでは、コンフィグレーション制御システム100が単一のフラッシュメモリ101を有する場合について説明するが、コンフィグレーション制御システム100がフラッシュメモリ101及びフラッシュメモリ102を有する場合も、同様なルーチンを実行することができる。まず、CPU105は、FPGA104に対して第1回路情報Aでの起動指示を与える(ステップS301)。次に、FPGA104は、PLD103に対して第1回路情報Aでの起動指示を与える(ステップS302)。そして、PLD103は、起動面情報領域Eをブロックイレースする(ステップS303)。このとき、PLD103は、アドレス値0x010000を含む領域をブロックイレースする。また、PLD103は、起動面情報領域Eに0x0をライトする(ステップS304)。すなわち、PLD103は、アドレス値0x010000に0x0をライトして、第1回路情報Aをコンフィグレーション対象に設定する。
次に、CPU105は、FPGA104に対してコンフィグレーション指示を行う(ステップS305)。続いて、FPGA104は、PLD103に対してコンフィグレーション指示を行う(ステップS306)。そして、PLD103は、FPGA104に対してコンフィグレーション命令を与える(ステップS307)。また、PLD103は、フラッシュメモリ101のアドレス値0x010000にリードアクセスする(ステップS308)。そして、PLD103は、起動面情報をリードする(ステップS309)。そして、PLD103は、読み出された0x0に従って、第1回路情報Aをコンフィグレーション対象に設定する。次に、PLD103は、フラッシュメモリ101のアドレス値0x000000にリードアクセスする(ステップS310)。すなわち、PLD103は、第1回路情報Aの開始アドレス値を照会して、第1回路情報Aの開始アドレス値0x02をリードする(ステップS311)。次に、PLD103は、アドレス値0x000001にリードアクセスする(ステップS312)。すなわち、PLD103は、第1回路情報Aの終了アドレス値を照会して、第1回路情報Aの終了アドレス値0x40をリードする(ステップS313)。次に、PLD103は、アドレス値0x020000にリードアクセスする(ステップS314)。そして、PLD103は、第1回路情報Aの先頭のデータをリードする(ステップS315)。このとき、PLD103は、リードした第1回路情報AのデータをConfig I/F用に整形する。そして、PLD103は、第1回路情報Aの先頭のデータをFPGA104に送信する(ステップS316)。このとき、FPGA104は、先頭のデータがCRCチェックに合格するため、先頭のデータの書き込みを行う。
次に、PLD103は、アドレス値0x020001にリードアクセスする(ステップS317)。そして、PLD103は、第1回路情報Aの2番目のデータをリードする(ステップS318)。このとき、PLD103は、リードしたデータをConfig I/F用に整形する。そして、PLD103は、第1回路情報Aの2番目のデータをFPGA104に送信する(ステップS319)。このとき、FPGA104は、2番目のデータがCRCチェックに合格するため、2番目のデータの書き込みを行う。
その後、PLD103は、アドレス値0xXXXXXX(<0x410000)にリードアクセスする(ステップS320)。そして、PLD103は、アドレス値0xXXXXXX(<0x410000)のデータをリードする。例えば、PLD103は、最終的に、第1回路情報Aの最後のデータをリードする(ステップS321)。このとき、PLD103は、リードした第1回路情報AのデータをConfig I/F用に整形する。そして、PLD103は、リードした第1回路情報Aの最後のデータをFPGA104に送信する(ステップS322)。このとき、FPGA104は、最後のデータがCRCチェックに合格するため、最後のデータの書き込みを行う。続いて、FPGA104は、PLD103に対してコンフィグレーションの完了を通知する(ステップS323)。このとき、PLD103は、第1回路情報Aで起動したことを確認する。
次に、PLD103は、FPGA104に対して0x0をレベル信号として通知する(ステップS324)。このとき、FPGA104は、通知された0x0から、第1回路情報Aで起動したことを認識する。また、PLD103は、コンフィグレーションNGカウンタ値をリセット(カウンタ値0)する。そして、PLD103は、FPGA104に対してソフトウェアリセットを実施する(ステップS325)。このとき、FPGA104は、起動され、起動情報レジスタに0x0を記憶する。
続いて、CPU105は、FPGA104の起動情報レジスタにリードアクセスする(ステップS326)。そして、FPGA104は、0x0をリードして、このデータをCPU105に送信する(ステップS327)。その結果、CPU105は、期待した第1回路情報AでFPGA104が起動したことを確認することになる。
図13から図15は、最初のコンフィグレーションがNGになった場合のコンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。なお、ここでは、コンフィグレーション制御システム100が単一のフラッシュメモリ101を有する場合について説明するが、コンフィグレーション制御システム100がフラッシュメモリ101及びフラッシュメモリ102を有する場合も、同様なルーチンを実行することができる。なお、ステップS401からステップS420までは、ステップS301からステップS320までと同様なので説明を省略する。PLD103は、第1回路情報AのK番目のデータをリードする(ステップS421)。このとき、PLD103は、リードした第1回路情報AのデータをConfig I/F用に整形する。そして、PLD103は、リードした第1回路情報AのK番目のデータをFPGA104に送信する(ステップS422)。このとき、FPGA104では、CRCチェックがNGとなる。続いて、FPGA104は、PLD103に対してコンフィグレーションNGを通知する(ステップS423)。このため、PLD103は、コンフィグレーションNGカウンタをカウントアップ(カウンタ値+1)する。CPU105は、第2回路情報Bでコンフィグレーションする必要があると判断する。
次に、PLD103は、フラッシュメモリ101のアドレス値0x000002にリードアクセスする(ステップS424)。すなわち、PLD103は、第2回路情報Bの開始アドレス値を照会して、第2回路情報Bの開始アドレス値0x41をリードする(ステップS425)。そして、PLD103は、アドレス値0x000003にリードアクセスする(ステップS426)。すなわち、PLD103は、第2回路情報Bの終了アドレス値を照会して、第2回路情報Bの終了アドレス値をリードする(ステップS427)。その結果、PLD103は、第2回路情報Bの終了アドレス値0x7Fをリードする。次に、PLD103は、アドレス値0x410000にリードアクセスする(ステップS428)。そして、PLD103は、第2回路情報Bの先頭のデータをリードする(ステップS429)。このとき、PLD103は、リードした第2回路情報BのデータをConfig I/F用に整形する。そして、PLD103は、第2回路情報Bの先頭のデータをFPGA104に送信する(ステップS430)。このとき、FPGA104は、先頭のデータがCRCチェックに合格するため、先頭のデータの書き込みを行う。
次に、PLD103は、アドレス値0x410001にリードアクセスする(ステップS431)。そして、PLD103は、第2回路情報Bの2番目のデータをリードする(ステップS432)。このとき、PLD103は、リードしたデータをConfig I/F用に整形する。そして、PLD103は、第2回路情報Bの2番目のデータをFPGA104に送信する(ステップS433)。このとき、FPGA104は、2番目のデータがCRCチェックに合格するため、2番目のデータの書き込みを行う。
次に、PLD103は、アドレス値0xYYYYYYにリードアクセスする(ステップS434)。そして、PLD103は、アドレス値0xYYYYYY(≦0x7FFFFF)のデータをリードする。例えば、PLD103は、最終的に、第2回路情報Bの最後のデータをリードする(ステップS435)。このとき、PLD103は、リードした第2回路情報BのデータをConfig I/F用に整形する。そして、PLD103は、リードした第2回路情報Bの最後のデータをFPGA104に送信する(ステップS436)。このとき、FPGA104は、最後のデータがCRCチェックに合格するため、最後のデータの書き込みを行う。続いて、FPGA104は、PLD103に対してコンフィグレーションの完了を通知する(ステップS437)。このとき、PLD103は、第2回路情報Bで起動したことを確認する。
次に、PLD103は、FPGA104に対して0x1をレベル信号として通知する(ステップS438)。その結果、FPGA104は、通知された0x1から、第2回路情報Bで起動したことを認識する。また、PLD103は、コンフィグレーションNGカウンタ値をリセット(カウンタ値0)する。そして、PLD103は、FPGA104に対してソフトウェアリセットを実施する(ステップS439)。その結果、FPGA104は、起動され、起動情報レジスタに0x1を記憶する。
続いて、CPU105は、FPGA104の起動情報レジスタにリードアクセスする(ステップS440)。そして、FPGA104は、0x1をリードしてCPU105に送信する(ステップS441)。その結果、CPU105は、期待していない第2回路情報BでFPGA104が起動したことを確認することになる。
図16から図18は、二回目のコンフィグレーションもNGになった場合のコンフィグレーション制御システム100の具体的な振る舞いの一例を示す図である。なお、ここでは、コンフィグレーション制御システム100が単一のフラッシュメモリ101を有する場合について説明するが、コンフィグレーション制御システム100がフラッシュメモリ101及びフラッシュメモリ102を有する場合も、同様なルーチンを実行することができる。なお、ステップS501からステップS533までは、ステップS401からステップS433までと同様なので説明を省略する。PLD103は、第2回路情報Bの2番目のデータをFPGA104に送信する(ステップS533)。このとき、FPGA104は、2番目のデータがCRCチェックに合格するため、2番目のデータの書き込みを行う。
次に、PLD103は、アドレス値0xYYYYYYにリードアクセスする(ステップS534)。そして、PLD103は、アドレス値0xYYYYYY(≦0x7FFFFF)のデータをリードする。そして、PLD103は、第2回路情報BのM番目のデータをリードする(ステップS535)。このとき、PLD103は、リードした第2回路情報BのデータをConfig I/F用に整形する。そして、PLD103は、リードした第2回路情報BのM番目のデータをFPGA104に送信する(ステップS536)。このとき、FPGA104では、M番目のデータのCRCチェックがNGになる。続いて、FPGA104は、PLD103に対してコンフィグレーションのNGを通知する(ステップS537)。このとき、PLD103は、コンフィグレーションNGカウンタをカウントアップ(カウンタ値+1=2)する。また、CPU105は、第1回路情報A、第2回路情報Bのいずれでもコンフィグレーションに失敗したため、これ以上のコンフィグレーションは不要であると判断する。そして、PLD103は、コンフィグレーションNGカウンタ値をリセット(カウンタ値0)する。
そして、FPGA104は、スタックする。次に、CPU105は、FPGA104の起動情報レジスタにリードアクセスする(ステップS538)。しかし、FPGA104へのレジスタアクセスはタイムアウトになる(ステップS539)。このため、CPU105は、FPGA104に起因したハードウェア故障があると判断する。
上述したように、コンフィグレーション制御システム100は、各回路情報A、Bとして同一の回路情報を使用してフラッシュメモリ101及びフラッシュメモリ102に記憶しているために、一方のデータA(B)でソフトエラーが発生しても、もう一方のデータB(A)で正常起動させることができる。そのため、コンフィグレーション制御システム100は、システムダウンすることなくソフトエラーが発生する前と同一の機能で運用することが可能となり、特に頻繁にパワーオンシーケンスが起こるようなシステムに対して有効に適用できる。
また、コンフィグレーション制御システム100は、各回路情報A、Bとして同一のデータが記憶されていて第1回路情報Aで運用中にデータのバージョンアップを行いたい場合、フラッシュメモリ101及びフラッシュメモリ102の第2回路情報Bの領域だけにバージョンアップデータを上書きした後、上書きしたデータでコンフィグレーションを行うことになる。この時、上書きしたデータがソフトエラーでコンフィグレーションNGになった場合、既存の第1回路情報Aで再コンフィグレーションを実施することで既存のバージョンに戻してシステムを起動することができる。そのため、コンフィグレーション制御システム100は、システムダウンせず、CPU105側より上書きしたデータでコンフィグレーション要求を再度行うことが可能となる。このように、コンフィグレーション制御システム100は、FPGA104のデザインの不具合修正や機能追加等で、回路情報をバージョンアップしたい場合にも有効である。
以上説明したように、コンフィグレーション制御システム100において、PLD103は、第1回路情報Aでコンフィグレーションに失敗した場合、第2回路情報Bで再コンフィグレーションを行う。従って、コンフィグレーション制御システム100は、ソフトエラーが発生した場合に、システムダウンすることなくFPGA104を起動させることができる。
また、コンフィグレーション制御システム100において、PLD103は、フラッシュメモリ101及びフラッシュメモリ102に記憶されている各回路情報A、Bのうちのいずれかでコンフィグレーションを行ったかを通知するための単一の信号線107を有するために、複雑な回路構成になることがなく、簡素な回路構成にできる。
そして、コンフィグレーション制御システム100において、フラッシュメモリ101の起動面情報領域Eは、起動面情報を記憶でき、フラッシュメモリ101及びフラッシュメモリ102の開始/終了アドレス情報領域Fは、開始/終了アドレス情報を記憶できる。
さらに、コンフィグレーション制御システム100において、PLD103は、コンフィグレーションに失敗した場合に、再コンフィグレーションを行うためのリトライシーケンサを有するために、コンフィグレーションの精度を向上できる。
さらにまた、コンフィグレーション制御システム100において、各回路情報A、Bは、同一の回路情報を使用してフラッシュメモリ101及びフラッシュメモリ102に記憶されているために、一方のデータA(B)でソフトエラーが発生しても、もう一方のデータB(A)で正常起動させることができる。従って、コンフィグレーション制御システム100は、システムダウンすることなくソフトエラーが発生する前と同一の機能で運用することが可能となり、特に頻繁にパワーオンシーケンスが起こるようなシステムに対して有効である。
コンフィグレーション制御方法において、PLD103は、ソフトエラーが発生した場合に、システムダウンすることなくFPGA104を起動させることができる。
なお、コンフィグレーション制御システム及びコンフィグレーション制御方法は、前述した一実施形態に限定するものでなく、適宜な変形や改良等が可能である。
この出願は、2013年6月12日に出願された日本出願特願2013−123473号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、例えば、FPGAなどの半導体チップを備えたシステムに適用することができる。本発明は、ソフトエラーが発生してもシステムダウンすることなくFPGAを起動させることができる。
100 コンフィグレーション制御システム
101 フラッシュメモリ
102 フラッシュメモリ
103 PLD
104 FPGA
105 CPU
106 パソコン
107 信号線
108 ケーブル
109 ケーブル
110 JTAGインターフェース
111 ケーブル
112 ケーブル
113 ケーブル
A 第1回路情報
B 第2回路情報
C 第1記憶領域
D 第2記憶領域
E 起動面情報領域
F 開始/終了アドレス情報領域

Claims (4)

  1. LSI内部の論理回路をプログラミングすることができる第1の半導体チップと、
    前記第1の半導体チップの複数の回路情報が記憶される半導体メモリと、
    前記半導体メモリに記憶されている前記回路情報を用いて、前記第1の半導体チップへのコンフィグレーションを制御するにあたり、前記複数の回路情報のいずれかでコンフィグレーションに失敗した場合、前記複数の回路情報のうちの他の回路情報で再コンフィグレーションを行う第2の半導体チップと
    前記複数の回路情報のうち、いずれの回路情報を用いてコンフィグレーションが行われたのかを前記第2の半導体チップから前記第1の半導体チップへ通知するための信号線と
    を備えるコンフィグレーション制御システム。
  2. 前記第2の半導体チップが、前記半導体メモリに記憶されている前記回路情報のうち、いずれの回路情報を用いてコンフィグレーションを行ったのかを前記第1の半導体チップへ通知するための信号線を有する
    請求項1に記載のコンフィグレーション制御システム。
  3. 前記半導体メモリには、前記コンフィグレーションに用いられた前記回路情報を示す起動面情報と、各回路情報の開始位置及び終了位置を示すアドレス情報とが更に記憶される
    請求項1又は2に記載のコンフィグレーション制御システム。
  4. 半導体メモリに記憶されているLSI内部の論理回路をプログラミングすることができる第1の半導体チップの複数の回路情報を用いて、前記第1の半導体チップへのコンフィグレーションを制御するにあたり、前記複数の回路情報のいずれかでコンフィグレーションに失敗した場合、前記複数の回路情報のうちの他の回路情報で第2の半導体チップが再コンフィグレーションを行う段階と、
    前記第1の半導体チップと前記第2の半導体チップとを接続する信号線を介して、前記複数の回路情報のうち、いずれの回路情報を用いてコンフィグレーションが行われたのかを前記第2の半導体チップから前記第1の半導体チップへ通知する段階と
    含むコンフィグレーション制御方法。
JP2015522586A 2013-06-12 2014-03-04 コンフィグレーション制御システム及びコンフィグレーション制御方法 Active JP6032360B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013123473 2013-06-12
JP2013123473 2013-06-12
PCT/JP2014/055394 WO2014199678A1 (ja) 2013-06-12 2014-03-04 コンフィグレーション制御システム及びコンフィグレーション制御方法

Publications (2)

Publication Number Publication Date
JP6032360B2 true JP6032360B2 (ja) 2016-11-24
JPWO2014199678A1 JPWO2014199678A1 (ja) 2017-02-23

Family

ID=52021985

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015522586A Active JP6032360B2 (ja) 2013-06-12 2014-03-04 コンフィグレーション制御システム及びコンフィグレーション制御方法

Country Status (3)

Country Link
US (2) US9870148B2 (ja)
JP (1) JP6032360B2 (ja)
WO (1) WO2014199678A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018173357A1 (ja) 2017-03-21 2018-09-27 日本電気株式会社 集積回路システム、集積回路システムの起動制御方法、及び起動制御用プログラム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6489954B2 (ja) * 2015-06-19 2019-03-27 ルネサスエレクトロニクス株式会社 半導体装置及びその制御方法
JP6613723B2 (ja) * 2015-08-27 2019-12-04 富士ゼロックス株式会社 電子機器
CN106201352B (zh) * 2016-07-07 2019-11-29 广东高云半导体科技股份有限公司 非易失性fpga片上数据流文件的保密系统及解密方法
US9965356B2 (en) * 2016-09-02 2018-05-08 Alibaba Group Holding Limited Method and system of high-availability PCIE SSD with software-hardware jointly assisted implementation to enhance immunity on multi-cell upset
US10509757B2 (en) * 2016-09-22 2019-12-17 Altera Corporation Integrated circuits having expandable processor memory
US10795742B1 (en) * 2016-09-28 2020-10-06 Amazon Technologies, Inc. Isolating unresponsive customer logic from a bus
US10223317B2 (en) 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
JP2018067072A (ja) * 2016-10-18 2018-04-26 東芝メモリ株式会社 半導体記憶装置及びその制御方法
WO2019082738A1 (ja) * 2017-10-26 2019-05-02 株式会社ノーリツ 通信アダプタ及び通信アダプタのプログラム更新方法
CN110968539A (zh) * 2018-09-28 2020-04-07 方一信息科技(上海)有限公司 用于多通道闪存设备的fpga管脚扩展方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0423134A (ja) * 1990-05-18 1992-01-27 Nec Corp プログラムロード方式
JPH07106425A (ja) * 1993-10-05 1995-04-21 Nec Corp プログラマブルアレイロジック
US7047352B1 (en) * 2002-08-28 2006-05-16 Xilinx, Inc. Fail-safe method of updating a multiple FPGA configuration data storage system
JP2008165627A (ja) * 2006-12-28 2008-07-17 Fujitsu Ltd 組込装置および制御方法
JP2010066961A (ja) * 2008-09-10 2010-03-25 Oki Electric Ind Co Ltd プログラマブル論理回路の起動保障方法及びそのプログラマブル論理回路装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6874108B1 (en) * 2001-08-27 2005-03-29 Agere Systems Inc. Fault tolerant operation of reconfigurable devices utilizing an adjustable system clock
JP2004021867A (ja) 2002-06-20 2004-01-22 Nec Engineering Ltd 情報処理システム
US7389460B1 (en) * 2005-11-14 2008-06-17 University Of Central Florida Research Foundation, Inc. Runtime-competitive fault handling for reconfigurable logic devices
US7541833B1 (en) * 2007-10-09 2009-06-02 Xilinx, Inc. Validating partial reconfiguration of an integrated circuit
US7973556B1 (en) * 2009-03-05 2011-07-05 Xilinx, Inc. System and method for using reconfiguration ports for power management in integrated circuits
JP5685117B2 (ja) 2011-03-13 2015-03-18 セイコーソリューションズ株式会社 コンフィグレーション冗長化装置および、コンフィグレーション手法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0423134A (ja) * 1990-05-18 1992-01-27 Nec Corp プログラムロード方式
JPH07106425A (ja) * 1993-10-05 1995-04-21 Nec Corp プログラマブルアレイロジック
US7047352B1 (en) * 2002-08-28 2006-05-16 Xilinx, Inc. Fail-safe method of updating a multiple FPGA configuration data storage system
JP2008165627A (ja) * 2006-12-28 2008-07-17 Fujitsu Ltd 組込装置および制御方法
JP2010066961A (ja) * 2008-09-10 2010-03-25 Oki Electric Ind Co Ltd プログラマブル論理回路の起動保障方法及びそのプログラマブル論理回路装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018173357A1 (ja) 2017-03-21 2018-09-27 日本電気株式会社 集積回路システム、集積回路システムの起動制御方法、及び起動制御用プログラム
US10778225B2 (en) 2017-03-21 2020-09-15 Nec Corporation Integrated circuit system, startup control method for integrated circuit system, and startup control program

Also Published As

Publication number Publication date
US9870148B2 (en) 2018-01-16
US20160139811A1 (en) 2016-05-19
WO2014199678A1 (ja) 2014-12-18
JPWO2014199678A1 (ja) 2017-02-23
US20180101304A1 (en) 2018-04-12

Similar Documents

Publication Publication Date Title
JP6032360B2 (ja) コンフィグレーション制御システム及びコンフィグレーション制御方法
US7779191B2 (en) Platform-based idle-time processing
CN107122321B (zh) 硬件修复方法、硬件修复系统以及计算机可读取存储装置
US8225081B2 (en) Updating programmable logic devices
US7750676B2 (en) Embedded system and control method therefor
CN103930878A (zh) 用于存储器验证的方法、装置及系统
US10909247B2 (en) Computing device having two trusted platform modules
CN107408090B (zh) 输入/输出控制器访问通道的动态配置
CN108304282B (zh) 一种双bios的控制方法及相关装置
US20130080752A1 (en) Method and apparatus for implementing compatiblity of different processors
US7290128B2 (en) Fault resilient boot method for multi-rail processors in a computer system by disabling processor with the failed voltage regulator to control rebooting of the processors
US7966486B2 (en) Computer system with dual basic input output system and operation method thereof
US20220197746A1 (en) Combination bios with a/b recovery
US9652259B2 (en) Apparatus and method for managing register information in a processing system
CN101697132A (zh) 一种操作系统快速重启的方法、装置和网络设备
CN105159838A (zh) 访问内存的方法及计算机系统
CN104679566A (zh) 更新smbios的方法和终端设备
US8495353B2 (en) Method and circuit for resetting register
US10613872B2 (en) Memory system with simulated memory process
CN108829417B (zh) 一种cpld的升级装置、方法、设备及存储介质
CN115129384A (zh) 一种电子设备的启动程序的运行方法和电子设备
CN112912958A (zh) 使用内置自测控制器测试只读存储器
TWI839101B (zh) 韌體的更新方法
KR20060014320A (ko) 다중 부트 로더 코드를 갖는 nand 플래시 메모리를이용한 부트 처리 장치 및 방법
US7668976B2 (en) Control method and computer system utilizing the same

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160831

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161010

R150 Certificate of patent or registration of utility model

Ref document number: 6032360

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150