JP2003058385A - システム管理プロセッサおよびjtagバスを介してeepromのfpgaコードを更新する方法 - Google Patents

システム管理プロセッサおよびjtagバスを介してeepromのfpgaコードを更新する方法

Info

Publication number
JP2003058385A
JP2003058385A JP2002213312A JP2002213312A JP2003058385A JP 2003058385 A JP2003058385 A JP 2003058385A JP 2002213312 A JP2002213312 A JP 2002213312A JP 2002213312 A JP2002213312 A JP 2002213312A JP 2003058385 A JP2003058385 A JP 2003058385A
Authority
JP
Japan
Prior art keywords
configuration
bus
eeprom
code
fpga
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.)
Pending
Application number
JP2002213312A
Other languages
English (en)
Inventor
Michael John Erickson
マイケル・ジョン・エリクソン
Edward A Cross
エドワード・エイ・クロス
David R Maciorowski
デイビッド・アール・マシオロウスキー
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2003058385A publication Critical patent/JP2003058385A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318558Addressing or selecting of subparts of the device under test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】EEPROMが接続された複数のJTAGハ゛スを有してい
ても、構成コート゛を構成システムからEEPROMへ容易にロート゛する
ことのできる方法を提供すること。 【解決手段】システムのEEPROM(212,214,216)に格納されたフ
゜ロク゛ラマフ゛ルテ゛ハ゛イス構成コート゛を更新するための方法であっ
て、個別の管理フ゜ロセッサ(526)およびシステムフ゜ロセッサ(236)を有
する複雑なシステムにおいて実施することができる方法。本
方法は、フ゜ロク゛ラマフ゛ルテ゛ハ゛イス構成コート゛を更新するためのシー
ケンスをシステムの管理フ゜ロセッサ(526)上で実行することを含む。
シーケンスには、EEPROM(212,214,216)を消去するステッフ゜(103
6)、構成コート゛の少なくとも1フ゛ロックを該EEPROMに書き込む
ステッフ゜(1038)および書き込みの後にエラーをチェックするステッフ゜
が含まれる。チェックするエラーには、FIFOを空にすることの
失敗(1040,1044)が含まれる。エラー検出の際に、本方法
は、自動的に書き込みをリトライすることを含む。本方法
は、EEPROM(212,214,216)を共通構成ロシ゛ックに相互接続す
る複数のシリアルハ゛ス(222,224)を有するシステム上で実施するこ
とができ、システムは、共通構成ロシ゛ック(228)にアクセスすること
のできる複数の管理フ゜ロセッサ(526,528)を有する。

Description

【発明の詳細な説明】 【0001】 【発明の属する技術分野】本発明は、プログラマブルロ
ジックデバイスのインシステムプログラミングの技術に
関する。特に、本発明は、フィールドプログラマブルゲ
ートアレイ(FPGA)に構成コードを提供する、EE
PROMのインシステムプログラミングのための特定の
ユーティリティを有する方法であって、システム管理プ
ロセッサのファームウェアで実施することができ、II
C(Inter IC bus)からJTAGへのバスブリッジを使
用する方法に関する。 【0002】 【従来の技術】独立クロック・データタイプのシリアル
通信バスは、システムの集積回路コンポーネント間の通
信に普通に用いられるようになった。このタイプのシリ
アルリンクには、IIC(最初はInter ICバス
と呼ばれていたが、現在では一般にI2Cと呼ばれてい
る)およびSPIバスが含まれる。このタイプのリンク
は、バス上の各集積回路に精密なタイミングコンポーネ
ントを必要とすることなく実現することができ、通常、
少なくとも1つのバスマスタの制御下で動作する。SP
IおよびIICタイプのシリアル通信バスとインタフェ
ースするシリアルEEPROM(Electrically Erasabl
e Programmable Read-Only Memory)デバイスは、容易
に入手することができる。 【0003】一般に、I2CバスおよびSPIバスが通
常動作中のシステム内の通信に用いられるのに対して、
JTAGバスと呼ばれるIEEE1149.1シリアル
バスは、各集積回路に対してバウンダリスキャンを実施
するためにテスタからのアクセス手段を提供することに
よって、非アクティブなシステムのテストを行うことを
意図している。これにより、テスタは、集積回路の接続
性を検証することができ、それらが正しく取付けられ、
相互接続されていることを検証することができる。JT
AGバスは、1つ以上の集積回路をチェーン状に相互接
続し、テスタは、いずれの集積回路もアドレス指定する
ことができる。通常、回路基板の複数のデバイスがJT
AGバスに相互接続されており、JTAGバスは、JT
AGチェーンとも呼ばれる。 【0004】JTAGバスは、各デバイスに対して4本
の接続を有するシリアルバスである。これらの接続に
は、シリアルデータ入力ライン、シリアルデータ出力ラ
イン、クロックラインおよびテストモード選択ラインが
含まれる。通常、チェーンの第1のチップのデータ出力
ラインは、チェーンの第2のチップのデータ入力ライン
に接続され、第2のチップのデータ出力ラインは、第3
のチップのデータ入力ラインに接続される。したがっ
て、複数チップのデータ入力ラインおよびデータ出力ラ
インは、デイジーチェーン構成で接続される。 【0005】IEEE1152バスは、1149.1J
TAGバスの拡張された新しいバージョンである。本明
細書でJTAGバスと言う場合は、1149.1と11
52との両方のバリエーションを含むことを意図してい
る。 【0006】本明細書でPLDと呼ぶプログラマブルロ
ジックデバイス(PLD:Programmable Logic Device)
は、コンピュータシステムのコンポーネントとして普通
に用いられる。これらのデバイスには、プログラマブル
アレイロジックデバイス(PAL:Programmable Array
Logic device)、プログラマブルロジックアレイ(P
LA:Programmable Logic Array)、コンプレックスプ
ログラマブルロジックデバイス(CPLD:Complex Pr
ogrammable Logic Device)およびフィールドプログラ
マブルゲートアレイ(FPGA:Field Programmable G
ate Array)が含まれる。PLDは、通常、汎用デバイ
スであって、機能確定コード、即ち構成コードが組み込
まれるとシステム特有の機能を担う。PLDは、機能確
定コードを、ヒュージブルリンク(fusible link)、ア
ンチヒューズ(antifuse)、EPROMセル、フラッシ
ュセルを含むEEPROMセルまたはスタティックRA
Mセルに格納することができる。 【0007】スタティックRAMセルを用いて機能確定
コードを保持するこれらのPLDデバイスは、システム
の電源投入時に同一のまたは異なる集積回路上のEEP
ROMから機能確定コードを自動的に取得するように設
計することができる。Xilinx、Altera、L
ucentおよびAtmel社から入手可能な多くの一
般的なFPGAデバイスは、自身のコードをスタティッ
クRAMセルに格納するので、SRAMベースのFPG
Aとして知られている。 【0008】この種のFPGAは、システムの電源投入
時に、構成データを外部EEPROMからシリアルモー
ドでもパラレルモードでも取得できることが知られてい
る。これらデバイスは、通常、システムの電源投入時に
自身の構成コードを自動的に取得するように構成されて
いる。構成コードをシリアルモードで取得するFPGA
は、コードをFPGA内にロードするために設計された
カスタムシリアルバスを使用するように設計することが
でき、多くのかかるデバイスがカスタムシリアルバスを
利用しているが、IICバスおよびSPIバスなどの標
準シリアルバスを使用するように設計することもでき
る。従って、本明細書で用いるシリアルバスという用語
は、IIC、SPIおよびカスタムシリアルバスを包含
している。 【0009】また、EEPROMからFPGAの構成コ
ードを受信した時にその構成コードに対してチェックサ
ム検査を実施することができるFPGAも知られてい
る。これらのFPGAは、チェックサム検査が失敗した
場合にそれらの構成コードが正しくない可能性があるこ
とを示すエラー信号を生成する。 【0010】限定はしないが、Xilinx社のXC1
8V00シリーズデバイスを含むいくつかのEEPRO
Mデバイスは、JTAGバスと相互接続し、JTAGバ
スを介して消去し、構成コードを用いてプログラムでき
ることが知られている。更に、これらのデバイスは、F
PGAに接続して、構成コードをFPGAに提供するこ
とができることが知られている。また、FPGAデバイ
スによっては、テストまたは構成の目的のためにJTA
Gバスに相互接続できることも知られている。 【0011】基板上のインシステム構成ヘッダを介して
可搬型のプログラミング装置を基板のJTAGバスに接
続できることが知られている。JTAGバスは、基板上
の少なくとも1つのJTAG構成可能なEEPROMに
接続され、次いで基板上のFPGAを構成するために接
続される。構成システムは、構成ヘッダを介してJTA
Gバスに接続され、構成モードに置かれる。そして、構
成コードは、構成システムからヘッダを通してJTAG
バスを介してEEPROMに書き込まれる。構成コード
がEEPROMに書き込まれると、システム電源を入れ
直すことができ、この時点で、構成コードが関連するF
PGAに転送される。このプロセスは、XILNX社の
データシートDS026およびXILINX社から入手
できる他の文書に概説されている。 【0012】構成システムは、通常、基板のFPGA用
の構成コードを有するノートブックコンピュータであ
る。また、構成システムは、基板のJTAGバス構成の
情報と共に、基板のJTAGバスを駆動するための適切
なソフトウェアおよびハードウェアを有する。 【0013】 【発明が解決しようとする課題】FPGA構成コードの
基板のEEPROMへのロードは、小型システムに対し
ては良好に動作するが、大型システムの場合には問題を
生じる場合がある。大型システムは、複数の基板を有
し、それらの基板のすべてが同一のJTAGバスに接続
されるとは限らない。以下の理由から、しばしば個別の
チェーンが用いられる。1.構成システムは、チェーン
内のいかなるデバイスも適切にアドレス指定するため
に、チェーン内のすべてのデバイスに関する情報を有し
ていなければならない。単一のチェーンを用いる場合、
構成システムは、システム内のすべての基板について詳
細な情報を有していなければならない。2.大型システ
ムは、周辺機器、メモリサブシステム、プロセッサその
他のサブシステムを後から追加またはアップグレードす
ることを可能にするためのスロットを有する場合があ
り、しばしば実際に有しているので、いかなる空のスロ
ットにおいても単一のチェーンが分断されないようにす
るために、追加の回路が必要になる。3.大型システム
は、周辺機器、メモリサブシステム、プロセッサその他
のデバイスからなる特定のセットにより、しばしば出荷
前にカスタマイズされるので、単一のチェーンにするた
めには、各システム構成に対してカスタマイズされたJ
TAGインタフェースソフトウェアを必要とする場合が
ある。4.短いチェーンのデバイスに対するアクセス
は、長いチェーンのデバイスに対するアクセスよりも高
速である。従って、必須ではないが、単一の基板がその
基板内に複数のチェーンを有する場合がある。 【0014】また、従来の構成プロセスは、個別のJT
AGバスを用いてFPGA構成コードを大型システムの
各基板のEEPROMにロードする場合にも問題を生じ
る。例えば、大型システムの複数の回路基板は、システ
ムから取り外さないと構成システムを構成ヘッダに接続
してアクセスできない場合がある。基板によってはアク
セス可能な場合もあるが、1つ以上の追加の基板をシス
テムからまず取除いてからのみである。また、技術者に
よるシステムへの物理的アクセスには、出張費が必要と
なる場合がある。いずれの場合も、大型システムのすべ
ての基板のFPGA構成コードを更新するためには、相
当な労力とシステムダウン時間が必要となる場合があ
る。 【0015】コンピュータシステムは、異なる目的のた
めに複数のデータ通信バスを有する場合があることが知
られている。例えば、一般に利用可能なコンピュータ
は、周辺機器用インタフェースカードと通信するための
PCIバス、各プロセッサとインタフェースするための
1つ以上のプロセッサバス、およびその他の種類のバス
を有する。また、複雑なシステムは、特定用途のために
シリアルバスを利用する場合もある。例えば、複雑なコ
ンピュータシステムは、IICバスまたはSPIバスを
システム管理バスとして利用する場合がある。 【0016】バスブリッジは、異なる種類のバス間を相
互接続するためのデバイスである。例えば、一般的なパ
ーソナルコンピュータは、プロセッサバスとPCIバス
とを接続するパラレルバス間に、少なくとも1つのバス
ブリッジを用いる。また、一般的なパーソナルコンピュ
ータは、パラレルPCIバスとISAバスとの間にもバ
スブリッジを用いる。 【0017】システム管理バスは、限定はしないが、電
源電圧モニタ、温度センサ、ファン制御およびファン速
度モニタを含むシステム機能に対するインタフェースを
専用のシステム管理プロセッサに提供することができ
る。そして、システム管理プロセッサは、1つ以上のバ
スブリッジを含み得る適切なハードウェアを介して、そ
のシステムの他のプロセッサとインタフェースすること
ができる。 【0018】かかるシステムにおいて、システム管理プ
ロセッサは、システム機能を監視することによって、何
らかのシステム機能が限界を超えているか否かを判定す
ることができる。限界を超えている場合、システム管理
プロセッサは、ファン速度を変更したり、システムに対
してシャットダウンを含む特定のモードで動作すること
を命令したり、あるいは、本技術分野において周知の他
の手段により、システムを保護することができる。 【0019】複雑なコンピュータシステムは、複数のF
PGAおよびその他のPLDを含む場合がある。FPG
Aは、システムのCPUを他のデバイスとインタフェー
スするI/O機能をカスタマイズするため、CPU間の
通信を行うため、並びに、ファンおよび温度センサ等の
デバイスをシステム管理バスとインタフェースするため
に用いられる場合がある。 【0020】 【課題を解決するための手段】本発明は、プログラマブ
ルデバイスのインシステムプログラミングの方法であ
る。本方法は、関連するFPGA用の構成コードを有す
るEEPROMのプログラミングに特に適している。本
方法は、IICシリアルバスを複数のJTAGバスに橋
渡しするバスブリッジを利用する。 【0021】特定の実施形態は、複数の基板を有するシ
ステムであって、そのうちのいくつかの基板が、構成コ
ードを供給するためにFPGAに接続された複数のEE
PROMを有するものにおいて用いられる。各基板のE
EPROMデバイスは、各基板について個別に設けられ
たJTAGバスに接続されている。各基板からのJTA
Gバスは、バスブリッジに経路指定されている。バスブ
リッジは、システムの複数のJTAGバスとシステム管
理プロセッサとの間のインタフェースを提供するととも
に、プロセッサが複数のJTAGバスの中から特定のJ
TAGバスを選択できるようにする選択回路を提供す
る。 【0022】本方法は、エラーチェックおよびリトライ
のステップを含む。例えば、バスブリッジのFIFOを
監視することによって、バスブリッジのステートマシン
が情報をEEPROMに正しく書込んだか否か、また
は、情報がEEPROMからバスブリッジを介してシス
テム管理プロセッサまで適切に転送されたか否かを判定
する。本方法は、動作が失敗した場合にリトライを提供
する。また、本方法は、構成コードデータファイルが目
的のEEPROM、バスおよび基板と互換性があること
の検証も提供する。 【0023】 【発明の実施の形態】従来技術において周知のコンピュ
ータシステムは、基板A 100および基板B 102
などの複数の回路基板を含み、基板上には、FPGA1
04、106、107などが含まれる(図1)。システ
ムには、さらに基板が存在する場合もあり、これらの基
板は、FPGAを有する場合も有しない場合もあり、様
々な基板がシステムのコンポーネントとして互いに接続
(103)されている。基板A100において、FPG
A104は構成用EEPROM108に接続されてお
り、それによりFPGA104は、基板A 100の電
源投入時にEEPROM108から自身の構成コードを
受信するようになっている。同様に、FPGA106
は、第2の構成用EEPROM110に接続されてい
る。構成用EEPROM108および110は、いずれ
もJTAGバス111にチェーン状に接続されており、
JTAGバス111は構成ヘッダ112に続いている。 【0024】基板A 100上のFPGA104または
106のうちの1つ以上の構成コードを更新したい場
合、構成ケーブル116を介して構成システム114を
構成ヘッダ112に接続する。そして、構成コードを構
成システム114のメモリ118から構成ケーブル11
6、構成ヘッダ112を通じてJTAGバス111を介
してEEPROM108等のEEPROM内へ転送する
ことができる。これが完了すると、電源を入れ直すこと
により、更新された構成コードをEEPROM108か
らFPGA104にロードさせることができる。 【0025】基板B 102など、別の基板上のFPG
Aの構成コードを更新したい場合には、構成ケーブル1
16を構成ヘッダ112から取り外し、代りの構成ケー
ブル経路122に沿って、基板Bの適当な構成ヘッダ1
20に接続する。そして、前記処理を繰り返すことによ
り、基板BのJTAGバス126上のEEPROM12
4のうちの1つ以上のEEPROMを更新することがで
きる。 【0026】図1に示す従来のインシステムFPGA構
成コード更新装置は、更新すべきシステムの各基板に対
する物理的なアクセス手段を必要とする。構成ケーブル
116は、各基板の適切な構成ヘッダに個別に接続しな
ければならない。 【0027】本発明によるシステム200(図2)に
は、基板C 202および基板D 204等、各々が1
つ以上のFPGA206、208、210および211
を有する複数の回路基板が存在する。FPGA206、
208、210および211は、SRAMベースのタイ
プであり、EEPROM212、214および216等
のEEPROMから自身の構成コードを受信するために
接続されている。基板C202のEEPROM212お
よび214は、基板CのJTAGバス222に接続され
ており、基板D 204のEEPROM216は、基板
DのJTAGバス224に接続されている。基板C 2
02および基板D 204は、更に、システム管理バス
226にも相互接続されており、システム管理バス22
6は、必須ではないが、基板C 202のFPGA20
8および基板D 204のFPGA211等、FPGA
のうちのいくつかに接続することができる。基板C 2
02と基板D 204等、システムの基板同士は、他の
目的のために付加的なシステム相互接続227を用いて
相互接続されている。付加的なシステム相互接続227
には、システムの複数のプロセッサ間およびプロセッサ
と周辺機器との間で通信するための装置が含まれる場合
があり、また、コンピュータシステムにおいて必要に応
じてその他の相互接続が含まれる場合もある。 【0028】基板CのJTAGバス222および基板D
のJTAGバス224は、いずれも基板E 230など
の別の基板に配置される場合がある共通構成ロジック2
28に接続されている。共通構成ロジック228は、シ
ステム管理バス226に接続されたIICシリアルイン
タフェース232を含む。システム管理バス226は、
関連するメモリを有する少なくとも1つのプロセッサを
組込んだ少なくとも1つのシステム管理サブシステム2
34にも接続されている。システム管理サブシステム2
34は、コンピュータシステムの少なくとも1つの中央
処理装置(CPU)236に接続されており、コンピュ
ータシステムは複数のCPUを有する場合がある。 【0029】コンピュータシステムの特定の実施形態は
16個のCPUを有し、他の実施形態では4個のCPU
を有する。基板F 245上に配置されたCPU236
等の各CPUは、関連するメモリ238を有し、本技術
分野で周知のMicrosoft Windows(登
録商標)、Linux、HP−Unix及びその他のオ
ペレーティングシステムなどのオペレーティングシステ
ムを動作させることができる区画の一部である。これら
のCPUは、EEPROM240から構成コードを受信
するように接続されたFPGA239を有する基板F
245などの基板上に配置することができ、EEPRO
M240は、共通構成ロジック228からアクセスして
プログラミングできるようにJTAGバス246に接続
されている。CPU236は、ネットワーク241に接
続されており、ネットワーク241には、ローカルエリ
アネットワーク(LAN)、ファイアウォールおよびイ
ンターネット等の広域ネットワーク(WAN)が含まれ
る。また、ネットワーク241には、FPGA構成コー
ドデータベース244を有するサーバ242も接続され
ている。 【0030】代替の実施形態では、システム管理サブシ
ステム234がネットワーク241に対して直接接続を
有する。 【0031】より詳細なレベルでは、共通構成ロジック
228(図3)は、IICインタフェース232を通し
てアドレス指定可能な選択レジスタ300を有する。選
択レジスタ300は、ポート304、306および30
8など、共通構成ロジック228の複数のJTAGポー
トのうちのいずれがアクティブであるかを示す。特定の
実施形態は、16個のJTAGポートを有する。また、
IICインタフェース232を介してアクセス可能なJ
TAGエンジン310も存在し、IICインタフェース
232からのコマンドを解釈しこれらのコマンドに従っ
てアクティブなJTAGポートを操作することができる
ようになっている。 【0032】従って、共通構成ロジック228は、図8
に示すように複数チャネルのJTAGからIICへのバ
スブリッジとして動作することができる。 【0033】共通構成ロジック228のIICインタフ
ェース232は、システム管理バス226を介してシス
テム管理サブシステム234に接続されている。システ
ム管理サブシステム234は、少なくとも1つのプロセ
ッサを有し、一実施形態では、一次システム管理プロセ
ッサ312と1つ以上の二次システム管理プロセッサ3
14とを含むプロセッサの階層を有する。各プロセッサ
は、プロセッサと同じ集積回路上に実装することもでき
るメモリ316などの関連するメモリを有し、一次シス
テム管理プロセッサ312と通信するために接続されて
いる。また、システム管理サブシステム234は、CP
U236と通信するためのインタフェース318を有す
る。ネットワーク241は、ローカルエリアネットワー
ク(LAN)コンポーネント320、ファイアウォール
322およびインタネット324等の広域ネットワーク
コンポーネント(WAN)を有する。CPU236は、
ネットワーク241を介してセキュアで暗号化された様
式でサーバ242に接続することができる。 【0034】コンピュータシステム200の1つ以上の
基板上でFPGAコードを更新したい場合、CPU23
6は、ホストFPGA更新ルーチンを実行する。それに
関し(図4と共に図2および図3を参照)、システムの
CPU236は、セキュアな様式でサーバ242に接続
し(ステップ400)、更新されたFPGA構成コード
ファイルをメモリ238にダウンロードする(ステップ
402)。メモリ238には、コンピューティングシス
テムの技術分野で周知のディスクメモリおよび/または
RAMメモリが含まれうる。次に、このFPGA構成コ
ードファイルをシステム管理サブシステム234のメモ
リ316に転送する(ステップ404)。この転送(ス
テップ404)は、EEPROMプログラミングに先立
って完全なファイル転送として行うこともできるし、あ
るいは、FPGA構成コードファイルの個々の要素、即
ちブロックの転送として行うこともできる。特定の実施
形態では、この転送(ステップ404)をブロックモー
ドで実行する。そして、システムCPU236は、シス
テム管理サブシステム234の一次プロセッサ312ま
たはローカルプロセッサ314などのプロセッサ上でF
PGA構成ルーチンを開始する(ステップ405)。特
定の実施形態において、このFPGA構成ルーチンは一
次システム管理プロセッサ312上で実行され、ローカ
ルプロセッサ314を介してコマンドを共通構成ロジッ
ク228のIICインタフェース232に渡す。 【0035】代替の実施形態では、コンピュータシステ
ム200の1つ以上の基板上でFPGAコードを更新し
たい場合、システム管理サブシステム234のプロセッ
サ312等のプロセッサは、セキュアな様式でサーバ2
42に接続し(ステップ400)、更新されたFPGA
構成コードファイルをシステム管理サブシステム234
のメモリ316にダウンロードする(ステップ40
2)。そして、システム管理サブシステムのプロセッサ
312が、FPGA構成ルーチンを実行する。 【0036】いずれの実施形態においても、その後、シ
ステム管理サブシステムプロセッサ312は、何らかの
オプションの構成ヘッダ514(図5、後述する)が構
成システムに接続されているか否かをチェックし(ステ
ップ406)、接続されている場合は、エラーを宣言す
る。次に、システム管理サブシステムプロセッサ312
は、必要に応じて調停して共通構成ロジック228を割
当て(ステップ407)、他のプロセッサが共通構成ロ
ジック228を使用している場合、共通構成ロジック2
28が利用可能になるまで待つ。この割り当てによっ
て、プログラム中の同一のEEPROMに対して、予備
のシステム管理プロセッサ528(図5、後述する)等
の他のいかなるシステム管理サブシステムプロセッサか
らのアクセスも防止されるので、コード破損の防止が容
易になる。また、この割り当てによって、バックアップ
システム管理プロセッサ528(図5、後述する)等の
他のいかなるシステム管理プロセッサからも共通構成ロ
ジック228の状態の変更を防止できるので、JTAG
バス222または224を介した転送の競合の防止が容
易になる。 【0037】その後、システム管理サブシステムプロセ
ッサ312は、共通構成ロジック228のFIFOに残
っているあらゆるデータを消去することを含めて、共通
構成ロジック228の初期化を行い、プログラムすべき
EEPROMに接続された特定のJTAGバスの識別
(ID)を用いて選択レジスタ300をセットする(ス
テップ409)。 【0038】次に、プロセッサ312は、選択されたJ
TAGバスを共通構成ロジック228を通してアドレス
指定し、そのJTAGバス上のデバイスの数および種類
を含むJTAGバス構成を判定する(ステップ41
0)。この判定は、一部、JTAG「GET_DEVI
CE_ID」コマンドを用いて行われ、このコマンド
は、JTAGバスに接続された各デバイスの種類を示す
識別コードを返す。識別コードを含むこのバス構成をF
PGAコードファイルの情報に対して比較することによ
って(ステップ412)、その識別コードが目的のJT
AGバスと互換性があることを確認する。識別コードが
選択された基板および目的のJTAGバスと互換性が無
い場合、エラーを宣言し(ステップ414)、エラーハ
ンドラ424が適切なコードファイルを自動的に探索
し、ダウンロードを試みる。これらステップによって、
選択された回路基板とコードファイルとの互換性が検証
される。 【0039】代替の実施形態として、JTAGバス構成
をコードファイルの情報に対して比較する代りに、また
は比較することに加えて、各基板に配置されたEEPR
OM512(図5)から基板識別情報を読み出すことも
できる。このEEPROMは、各基板上のJTAGバス
510に追加される。この識別情報を用いて、コードフ
ァイルと基板及び目的のJTAGバスとの互換性を検証
し、コードファイル内に含まれる複数のFPGAコード
の中から適切なFPGAコードを選択し、および、サー
バ242上のFPGAコードデータベース244内の適
切なFPGAコードファイルを検索することができる。 【0040】FPGAコードファイルの互換性を検証し
た後(図4と共に図2および図3を参照)、システム管
理サブシステムは、選択されたJTAGバス222に接
続された基板のEEPROM214等、1つ以上のEE
PROMを消去する(ステップ416)。FPGAコー
ドファイルが基板の複数のFPGAに対するコードを含
む場合、複数のEEPROMを消去する場合がある。そ
して、構成システムは、JTAGバス222を介して新
たなコード情報を消去したEEPROMに書き込む(ス
テップ418)。最後に、システム管理サブシステム
が、EEPROM書き込みプロセス(ステップ418)
にエラーが無いかチェックし(ステップ420)、何ら
かのエラーが発生した場合はエラー422を宣言する。
コードファイルが基板のEEPROMに正しく書込まれ
なかった場合、エラーハンドラ424は、ステップ40
2からステップ422までを繰返し、すなわち、互換性
のあるFPGA構成コードファイルをダウンロードし、
そのファイルをシステム管理サブシステムに転送し、E
EPROMを消去し、EEPROMに書き込むことがで
きる。 【0041】基板上のEEPROMがプログラムされ終
わると、システム管理サブシステムプロセッサは、共通
構成ロジック228を解放し、システム管理サブシステ
ムの他のあらゆるプロセッサから共通構成ロジック22
8にアクセスできるようにする(ステップ423)。次
に、ホストFPGA更新ルーチンは、何らかの別の基板
または同一基板のJTAGバスをさらにプログラムする
か否かをチェックする(ステップ426)。これら別の
基板またはJTAGバスに対して、FPGAコードをシ
ステム管理サブシステムにダウンロードするステップ
と、EEPROMを消去するステップと、EEPROM
をプログラムするステップとを含む適切なステップが、
必要に応じて繰返される。 【0042】更新する必要のあるすべてのJTAGバス
のすべてのEEPROMがプログラムされ終わると、シ
ステム200の電源を入れ直すことによって、更新され
た構成コードをEEPROM212等の関連するEEP
ROMからFPGA208等の各FPGAへロードさせ
ることができる(ステップ428)。 【0043】この方法でプログラムすることのできるE
EPROMを有するFPGAには、システムCPU23
6を有する基板F 245等の基板上のFPGA239
等も含まれうる。また、この方法でプログラムすること
のできるEEPROMを有するFPGAには、一実施形
態において関連する構成用EEPROM330を有する
FPGAとして実施される共通構成ロジック228自体
も含まれうる。 【0044】予備の手段として、システム200の1つ
以上の基板は、そのFPGAをプログラムするための付
加的な方法として、並列に接続された構成ヘッダ514
を有することもできる。FPGAが誤ってプログラムさ
れた場合、または、欠陥のあるFPGA構成コードでプ
ログラムされてしまった場合、フィールドサービスまた
は工場改修技術者は、この手段によって基板にアクセス
することができる。例えば、共通構成ロジック228に
関連するEEPROM330がJTAGポートD335
を介するプログラム中に電源障害によって破損した場
合、この予備の構成ヘッダによってシステム200の修
復が可能になる。 【0045】特定の実施形態において、基板500(図
5)は、第1のFPGA502と第2のFPGA504
とを有する。FPGA502および504は、JTAG
バス510に接続されたEEPROM506および50
8から自身の構成コードを受信するように接続されてい
る。また、JTAGバス510には、基板識別用EEP
ROM512および構成ヘッダ514も接続されてい
る。JTAGバス510は、基板500からシステムの
共通構成ロジック516に続いている。 【0046】チェックサムエラーライン518および5
20は、FPGA502および504からローカル管理
プロセッサ522に導かれ、ローカル管理プロセッサ5
22は、同じ基板500上に配置してもよいし、しなく
てもよい。ローカル管理プロセッサ522は、システム
管理バス524に接続されている。システム管理バス5
24は、一次システム管理プロセッサ526に接続され
ている。一次システム管理プロセッサと共に予備のシス
テム管理プロセッサ528をフェイルオーバ構成で設け
て、冗長性を与える。また、ローカル管理プロセッサ
は、基板500のFPGA502および504を含む各
FPGAに接続されたFPGAリロードコマンドライン
530にも接続されている。一次システム管理プロセッ
サおよび予備のシステム管理プロセッサ526,528
は、各々、システムの少なくとも1つのCPU(図示せ
ず)に接続される。 【0047】図5の実施形態では、EEPROMのプロ
グラム完了時にシステムの電源を入れ直すステップ42
8(図4)が不要である。このステップは、FPGA上
のロジックのシステム使用を一次的にディスエーブルに
するステップと、再プログラムされたEEPROMに関
連するFPGAをソフトブートしてそれらの構成コード
をリロードするステップと、FPGA上のロジックのシ
ステム使用を再びイネーブルにするステップとによって
置換えられる。 【0048】この実施形態では、FPGA504等のF
PGAは、チェックサムエラーを検出すると、システム
管理サブシステムに信号を送信する(図7、ステップ7
02)。システム管理サブシステムへの信号は、チェッ
クサムエラーライン520のシステム管理サブシステム
の様々なFPGAへの接続を通して、カスタムロジック
またはゲートアレイを通して、またはローカルシステム
管理プロセッサ522等のシステム管理プロセッサのI
/Oラインを通して送信することができる。そして、ロ
ーカルシステム管理プロセッサ522は、エラーが検出
されたFPGA504に関連するEEPROM508の
更新を要求する信号を、CPU236等のシステムのC
PU上で動作するオペレーティングシステムに送信す
る。 【0049】エラーが検出されて更新の要求があると、
図4を参照して既に説明したように更新を行う(ステッ
プ706)。ただし、EEPROMのプログラムの完了
時において、システムの電源を入れ直す代りに、関連す
るFPGAをソフトブートする(ステップ708)。こ
のソフトブートは、特定のFPGAを使用するドライバ
またはシステム管理機能をシャットダウンし、関連する
EEPROMの構成コードのFPGAへのロードをトリ
ガし、そのFPGAを利用していたあらゆるドライバま
たはシステム管理機能を再スタートすることによって行
う。従って、システムを完全にシャットダウンすること
なく、システムのFPGAのうちの少なくともいくつか
について構成コードを更新することができる。 【0050】特定の実施形態において、FPGA600
(図6)等、複雑なコンピュータシステムのシステム管
理サブシステムのFPGAは、EEPROM602から
自身の構成コードを受信するように接続されている。E
EPROM602は、上述のように、共通構成ロジック
からJTAGバス604を介してプログラムできるよう
に接続されている。FPGA600は、一連のシステム
管理センサおよびシステム管理ハードウェアに接続され
ており、限定はしないが、それらには、ファン速度セン
サ606、電圧モニタ608、CPUクロック速度選択
回路610、CPU電圧選択回路612、タンパスイッ
チ614および温度モニタ回路616などが含まれる。
FPGA600には、IICシステム管理バス620を
介してこれらのシステム管理センサおよびシステム管理
ハードウェアとシステム管理プロセッサとの間で通信す
るためのロジックが含まれる。 【0051】本発明の他の実施形態では、上述のように
インシステムプログラムすることが可能なEEPROM
から構成コードを受信するFPGAは、I/O周辺機器
と本システムの特定のシステムCPUとの間でI/O情
報を経路指定するために使用される。更に他の実施形態
では、上述のようにインシステムプログラムすることが
可能なEEPROMから構成コードを受信するFPGA
は、システムCPU間におけるプロセッサ間通信に使用
される。 【0052】更に詳細に説明すると、共通構成ロジック
228(図8)のIICインタフェース232は、スレ
ーブモード物理層800とアドレスデコード・制御用レ
ジスタ802とを有する。これらは、IICバス226
と内部パラレルバス804とのインタフェースをとる。
また、共通構成ロジック228即ちバスブリッジは、I
ICインタフェース232をJTAGポート820に接
続するためのデバイス840も有する。IICバスとJ
TAGバスとの間でデータ転送をバッファリングするた
め、256バイトのJTAGへのデータ用FIFO80
6およびJTAGからのデータ用FIFO808が設け
られる。データは、IICスレーブ物理層800を通し
てIICバス226とFIFO806および808との
間で転送することができる。JTAGステートマシン8
10によって、単一のIICコマンドで、目的のJTA
Gをリセットし、JTAG構成を読み出し、即ち、転送
の方向に応じてパラレル/シリアルコンバータまたはシ
リアル/パラレルコンバータを通してFIFO806,
808とJTAGデバイスとの間で256バイトまでの
連続したデータを転送できるようにしている。単純なバ
イパスポート816によって、ロジックエラーが生じた
場合、または、特別なJTAGコマンドを実行する必要
がある場合に、ステートマシン810およびFIFO8
06,808をバイパスできるようにしている。 【0053】選択レジスタ818は、IICインタフェ
ース232を通してアドレス指定することができる。選
択レジスタ818は、任意の時点でアクティブであるべ
き複数のJTAGポート820のうちの1つを示す。こ
れは、マルチプレクサ822に対して、JTAGポート
820からの特定のデータラインをシリアル/パラレル
コンバータ814に接続することを命令し、いずれのJ
TAGポート820がクロック・選択ゲートロジック8
24からJTAG選択ラインを受け取るべきかを指定す
ることにより行なわれる。 【0054】また、共通構成ロジック228は、エラー
フラグ、FIFOディップスティック(FIFO使用
量)900および902(図9)、FIFOエンプティ
フラグ904,906および構成ヘッダ接続フラグ90
8を含むステータスレジスタ826も有する。構成ヘッ
ダ接続フラグ908は、ヘッダ514等の何らかの付加
的な構成ヘッダが構成システムに接続されているか否か
を示す。構成システムがヘッダ514に接続されている
場合、システム管理プロセッサ526は、接続されてい
るヘッダがあるか否かをチェックするステップ406に
おいて接続されていることを識別し、EEPROMの内
容を誤って破損することを防止するためにEEPROM
のプログラムを拒否する。 【0055】FIFOエンプティフラグ904および9
06は、EEPROMへのコードの書き込み(ステップ
418)後、システム管理サブシステムプロセッサ31
2がエラーをチェックする時に(ステップ420)に、
すべての転送が完了していることを保証するためにテス
トされる。 【0056】代替の実施形態において、図10Aのファ
ームウェアシーケンスは、一次システム管理プロセッサ
526(図5)またはシステム管理プロセッサ312
(図3)等のシステム管理プロセッサにおいて実行され
る。このシーケンスは、システム管理プロセッサ312
に接続された端末によって、システムプロセッサ236
(図3)からこのシーケンスに入るべき命令を受けるた
びに開始され(ステップ1000)、または、FPGA
502(図5)などのプログラマブルロジックデバイス
が構成コードの受信中にエラーを検出したときにも開始
される。 【0057】システム管理プロセッサ312は、ヘッダ
514等の何らかの構成ヘッダが構成システムに接続さ
れているか否かをチェックする(ステップ1002)。
そして、構成システムが何らかの構成ヘッダに接続され
ている場合、プロセッサ312は、エラーを宣言し、シ
ーケンスを中止する(ステップ1003)。次に、プロ
セッサ312は、ネットワーク241を介して構成コー
ドファイルのデータベース244を有するサーバ242
に接続する(ステップ1004)。システム管理プロセ
ッサ312は、基板500の少なくとも1つのJTAG
バスが基板識別用EEPROM512に問合せできるよ
うに取り付けられている場合、システムの各基板500
について基板識別用EEPROM512に問合せを行
い、基板識別用EEPROM512から基板識別コード
を読み出す。かかる識別EEPROM512が存在しな
い場合、システム管理プロセッサ312は、基板500
上の各バスについてJTAGバス構成を判定し、これら
の構成からシグネチャを導出する。このシグネチャは、
基板識別コードの代用として用いられる。基板識別用E
EPROMを読み出すステップおよびJTAGバス構成
を判定するステップは、共通構成ロジックを割り当てお
よび再割り当てする(図示せず)ことによって、共通構
成ロジック516または228にアクセスを試みる可能
性のある他のシステム管理プロセッサによる干渉から保
護される。 【0058】基板識別コードは、基板500用の適切な
構成コードファイルを検索(ステップ1008)するた
めのデータベース244に対する索引として用いられ
る。また、基板500の各バスの各EEPROMもテス
トし、それらのEEPROMの構成コードに関連するチ
ェックサムを検査することによって、そのEEPROM
が有効な構成コードを保持しているか否かを判定する。
有効なコードをもつEEPROMについては、これらの
構成ファイルに関連するバージョン情報をデータベース
244の構成ファイルのバージョン情報と比較する。E
EPROMが有効かつ最新のコードを保持している場合
(ステップ1010)、そのEEPROMのプログラミ
ングはバイパスすることができ(ステップ1012)、
無効なコードまたは最新でないコードを保持するEEP
ROMがプログラムされる(ステップ1014)。 【0059】基板のいずれかのJTAGバスのいずれか
のEEPROMが無効なコードまたは最新でないコード
を含む場合、適切なFPGAコードをデータベース24
4からダウンロードする(図10B、ステップ101
6)。次に、共通構成ロジック516を割り当て(ステ
ップ1018)、FIFO806または808から残り
のデータをすべて消去する(ステップ1020)。選択
レジスタをプログラムすべきEEPROMを有するJT
AGバスにセットし(ステップ1022)、そのバスの
構成を判定する(ステップ1024)。この判定した構
成をダウンロードしたコードファイルの予想される構成
情報と比較することによって(ステップ1026)、正
しくないコードファイルがプログラミングに使用されな
いことを保証し、コードがその構成に対して正しくない
場合(ステップ1028)、エラーを宣言する。 【0060】コードがその構成に対して正しくない場
合、エラーハンドラは、判定したバス構成から導出した
シグネチャに基づいて、正しいコードの検索を試みるこ
とができる(ステップ1030)。コードが見つかった
場合(ステップ1032)、シーケンスは、そのコード
をダウンロードするステップ(1016)から再スター
トし、見つからなかった場合、プログラミングは中止さ
れる(ステップ1034)。 【0061】判定したバス構成が選択したJTAGバス
の構成と一致した場合(ステップ1028)、選択した
JTAGバスのEEPROMを消去し(ステップ103
6)、ダウンロードしたコードファイルからコードのブ
ロックをEEPROMに書き込む(ステップ103
8)。各ブロックの最後において、FIFO806また
は808が空であるか否かをチェックし(ステップ10
40)、空でない場合、シーケンスはFIFOからEE
PROMへの転送が完了するのを待ち(ステップ104
2)、FIFO806および808が空であるか否かを
再チェックする(ステップ1044)。FIFOがまだ
空でない場合または他のエラーが発生した場合、パスカ
ウントのチェックを行ってそのブロックがすでにリトラ
イされたか否かを判定し(ステップ1046)、まだリ
トライされていない場合、FIFOを消去してブロック
のプログラミングをリトライする(ステップ105
0)。そのブロックがすでにリトライされている場合
(ステップ1046)、エラーを宣言する(ステップ1
052)。エラーシーケンスは、シーケンスを中止する
前に、そのブロックをEEPROMに書き込むことを更
に試みてもよい。 【0062】FIFOが正しく空になると(ステップ1
044)、書き込んだブロックがコードの最後のブロッ
クであったか否かをチェックし(ステップ1054)、
最後でない場合、次のブロックをEEPROMに書き込
む(ステップ1038)。すべてのブロックが書込まれ
ると(ステップ1054)、JTAGバスを非選択状態
にし(ステップ1056)、共通構成ロジックを解放す
る(ステップ1058)。 【0063】次に、基板のすべてのJTAGバスがプロ
グラムされたか否かを判定するテストを行う(図10
A、ステップ1060)。基板のさらなるバスがプログ
ラムを必要とする場合(ステップ1062)、バスカウ
ントをインクリメントして基板の次のJTAGバスを選
択し、当該次のバスのEEPROMのコードが有効かつ
最新であるか否かを判定するために当該次のバスをテス
トする(ステップ1010)。その後、必要に応じて有
効かつ最新のコードを保持していないEEPROMへの
書き込みを行う(ステップ1014)。 【0064】プログラミングを必要とする基板上のバス
がそれ以上無い場合(ステップ1062)、プログラミ
ングを必要とするEEPROMを含むJTAGバスを有
する何らかの基板がシステムに存在するか否かチェック
を行う(ステップ1064)。プログラミングを必要と
する基板がさらに存在する場合(ステップ1066)、
次の基板の何らかの識別用EEPROMに対して問合せ
をし(ステップ1006)、シーケンスは、その基板の
EEPROMに対する構成コードファイルを検索するス
テップ(1008)に続く。検索 【0065】プログラムすべき基板がもう残っていない
場合(ステップ1064)、新たな構成コードが書き込
まれた(ステップ1014)FPGAのシステム機能を
ディスエーブルする(ステップ1066)。そして、こ
れらのFPGAをソフトブートすることによって(ステ
ップ1068)構成コードをリロードし、それらのシス
テム機能を再びイネーブルする(ステップ1070)。
最後に、管理プロセッサをサーバ242から切断し(ス
テップ1072)、管理プロセッサが行った動作をシス
テムCPUに通知し、システムCPUによってシステム
メンテナンスログを更新することができる。 【0066】ここまで、本発明を実施するコンピュータ
システムの回路基板の中の機能要素の特定の部分を参照
しながら本発明を説明してきた。本発明は、システムを
選択的に分割することが可能であり、基板または個々の
基板上に例示した回路は、さらに存在してもよいし、特
定の実施のため必要に応じて統合することも可能であ
る。例えば、限定の意図はないが、基板E 230上に
例示したような共通構成ロジックは、回路基板上におい
て基板D 204の回路と統合することもできる。 【0067】本発明を特にその好ましい実施形態に関し
て例示し説明してきたが、当業者には、本発明の思想お
よび範囲から逸脱することなく、形態および詳細につい
て種々の他の変更を行えることが分かるであろう。本発
明を異なる実施形態に対して適合させる際には、本明細
書で開示し特許請求の範囲に包含される広い発明の概念
から逸脱することなく、種々の変更を行うことができる
と考えるべきである。 【0068】以下においては、本発明の種々の構成要件
の組み合わせからなる例示的な実施態様を示す。 1.システムのEEPROM(212,214,216)に格納され
たプログラマブルデバイス構成コードを更新するための
方法であって、システムの管理プロセッサ(526,528)に
おけるプログラマブルデバイス構成コードを更新するた
めのシーケンスを実行することからなり、前記プログラ
マブルデバイス構成コードを更新するためのシーケンス
が、前記EEPROM(212,214,216)のうちの少なくと
も1つ(212)を消去するステップ(1036)と、少なくとも
1ブロックの構成コードを前記消去したEEPROM(2
12)に書き込むステップ(1038)と、前記少なくとも1ブ
ロックを書き込んだ後、FIFO(806,808)を空にする
ことの失敗を含むエラーをチェックし、該エラーの際に
前記少なくとも1ブロックを書き込むステップ(1038)を
リトライするステップ(1050)と、を含む方法。 2.構成コードを保持するファイルが前記システムと互
換性があることを検証するステップ(1028)をさらに含
む、請求項1の方法。 3.前記構成コードを保持するファイルが前記システム
と互換性があることを検証するステップ(1024,1026,102
8)は、前記システムのJTAGバス(222)をポーリング
することによって該JTAGバス(222)の構成を判定し
(1024)、該構成と前記ファイルに格納された構成とを比
較すること(1026)を含む、請求項2の方法。 4.システムのEEPROM(212,214,216)に格納され
たプログラマブルデバイス構成コードを更新するための
方法であって、前記システムのEEPROM(212,214,2
16)を共通構成ロジックに相互接続する少なくとも1つ
のシリアルバス(222)を設けるステップと、前記ファイ
ルの前記シリアルバスとの互換性を検証するステップ(4
10,410,414)と、前記EEPROM(212,214,216)のうち
の少なくとも1つのEEPROM(212)を消去するステ
ップ(416)と、少なくとも1ブロックの構成コードを前
記EEPROM(212)に書き込むステップ(418)と、ブロ
ックを書き込んだ後、FIFOを空にすることの失敗を
含むエラーをチェックし(420)、該エラーの際に前記少
なくとも1ブロックを書き込むステップ(418)をリトラ
イするステップ(1050)と、からなる方法。 5.少なくとも1つのプログラマブルロジックデバイス
(208)をソフトブートすることによって、構成コードを
前記EEPROM(212,214,216)のうちの少なくとも1
つのEEPROM(212)から該プログラマブルロジック
デバイス内にロードするステップをさらに含む、請求項
4の方法。 6.前記システムが2以上のプロセッサ(236)を有する
ものにおいて、前記共通構成ロジック(228)を、前記シ
ステムの2以上のプロセッサによる同時アクセスを防止
するように割り当てるステップをさらに含む、請求項5
の方法。 7.前記システムのEEPROM(212,214,216)を共通
構成ロジックに相互接続する少なくとも1つのシリアル
バス(222)が複数のシリアルバス(222,224)であるものに
おいて、前記複数のシリアルバス(222,224)のうちの特
定のシリアルバス(222)を選択するステップ(1022)をさ
らに含む、請求項5の方法。 8.前記少なくとも1つのプログラマブルロジックデバ
イスがFPGA(208)であるものにおいて、前記方法
が、EEPROM(212)から該FPGA(208)内への構成
コードのロードエラーの際に自動的に実行されるもので
ある、請求項5の方法。 【0069】本発明は、上記の方法により、EEPRO
Mが接続された複数のJTAGチェーンを有していて
も、構成コードを構成システムからEEPROMへ容易
にロードすることのできる方法を提供することができ
る。また、EEPROMの更新を行う前に、その構成コ
ードが更新を行うEEPROMの接続されたJTAGバ
スに適合するものであるか確認することによって、EE
PROMが正しく更新されることを保証することができ
る。
【図面の簡単な説明】 【図1】複数の基板上に複数のJTAGバスを有する従
来のコンピュータシステムを示すブロック図であり、各
基板が個別の構成ヘッダを有している。 【図2】複数の基板から共通構成ロジックに導かれる複
数のJTAGバスを有する本発明の一実施形態によるコ
ンピュータシステムのブロック図であり、複数のJTA
Gバスを介してEEPROMをプログラミングするた
め、システムのプロセッサへのインタフェースを有して
いる。 【図3】JTAGからIICへのブリッジを実施する図
2のシステムの共通構成ロジックおよびシステム管理サ
ブシステムの詳細を示すブロック図であり、システム管
理プロセッサおよびホストプロセッサを有し、ネットワ
ークを介したデータベースとの接続を示している。 【図4】共通のシステム構成ロジックを通してシステム
のFPGAを構成する方法のフロー図である。 【図5】FPGA、構成ヘッダおよび基板識別用EEP
ROMからエラー信号を受信するために接続されたロー
カルシステム管理プロセッサを有する、本発明の一実施
形態による基板の詳細なブロック図であり、システム管
理プロセッサおよび共通構成ロジックへの接続を示して
いる。 【図6】本発明を実施するシステム管理サブシステムの
一部の詳細なブロック図である。 【図7】本発明による、破損FPGAコードを有するシ
ステムの自己回復を可能にする機能の図である。 【図8】本発明の一実施形態による共通構成ロジックの
更に詳細なブロック図である。 【図9】本発明の一実施形態による共通構成ロジックの
ステータスレジスタの更に詳細なブロック図である。 【図10A】本発明の方法の特定の代替実施形態のフロ
ー図である。 【図10B】図10Aの「バスのEEPROMをプログ
ラムするステップ」を詳細に説明するフロー図である。 【符号の説明】 208 FPGA 212,214,216 EEPROM 222,224 JTAGバス 228 共通構成ロジック 236 CPU 526 一次システム管理プロセッサ 528 予備のシステム管理プロセッサ 806 JTAGからのデータ用FIFO 808 JTAGへのデータ用FIFO
───────────────────────────────────────────────────── フロントページの続き (72)発明者 エドワード・エイ・クロス アメリカ合衆国コロラド州80525,フォー トコリンズ,ナンバーアール173,ボード ウォーク・ドライブ・4501 (72)発明者 デイビッド・アール・マシオロウスキー アメリカ合衆国コロラド州80138,パーカ ー,ノース・サグワーロウ・リッジ・ロー ド・8520 Fターム(参考) 5B076 EA12 EB02

Claims (1)

  1. 【特許請求の範囲】 【請求項1】システムのEEPROM(212,214,216)に
    格納されたプログラマブルデバイス構成コードを更新す
    るための方法であって、システムの管理プロセッサ(52
    6,528)におけるプログラマブルデバイス構成コードを更
    新するためのシーケンスを実行することからなり、 前記プログラマブルデバイス構成コードを更新するため
    のシーケンスが、 前記EEPROM(212,214,216)のうちの少なくとも1
    つ(212)を消去するステップ(1036)と、 少なくとも1ブロックの構成コードを前記消去したEE
    PROM(212)に書き込むステップ(1038)と、 前記少なくとも1ブロックを書き込んだ後、FIFO(8
    06,808)を空にすることの失敗を含むエラーをチェック
    し、該エラーの際に前記少なくとも1ブロックを書き込
    むステップ(1038)をリトライするステップ(1050)と、 を含む方法。
JP2002213312A 2001-07-30 2002-07-23 システム管理プロセッサおよびjtagバスを介してeepromのfpgaコードを更新する方法 Pending JP2003058385A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/918,030 US6883109B2 (en) 2001-07-30 2001-07-30 Method for accessing scan chains and updating EEPROM-resident FPGA code through a system management processor and JTAG bus
US09/918030 2001-07-30

Publications (1)

Publication Number Publication Date
JP2003058385A true JP2003058385A (ja) 2003-02-28

Family

ID=25439678

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002213312A Pending JP2003058385A (ja) 2001-07-30 2002-07-23 システム管理プロセッサおよびjtagバスを介してeepromのfpgaコードを更新する方法

Country Status (3)

Country Link
US (1) US6883109B2 (ja)
JP (1) JP2003058385A (ja)
DE (1) DE10231930A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008090819A (ja) * 2006-07-25 2008-04-17 Nvidia Corp ハードウェアプラットフォームクラスの識別を高速化するシステム及び方法
JP2010507227A (ja) * 2006-10-16 2010-03-04 トムソン ライセンシング フィールド・プログラマブル・ゲート・アレイ(fpga)のトレラントなシステム内プログラミング
JP2013050860A (ja) * 2011-08-31 2013-03-14 Renesas Electronics Corp マイクロコンピュータ及びマルチマイクロコンピュータシステム
US11461524B2 (en) 2019-11-20 2022-10-04 Ricoh Company, Ltd. Information processing apparatus and configuration method

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040102135A (ko) * 2002-04-23 2004-12-03 톰슨 라이센싱 소시에떼 아노님 튜닝 장치
US7007203B2 (en) * 2002-08-02 2006-02-28 Motorola, Inc. Error checking in a reconfigurable logic signal processor (RLSP)
US6948147B1 (en) * 2003-04-03 2005-09-20 Xilinx, Inc. Method and apparatus for configuring a programmable logic device using a master JTAG port
US7146541B2 (en) * 2003-05-20 2006-12-05 Lucent Technologies Inc. Back out provision for failed programmable hardware update
US7281166B1 (en) * 2003-05-29 2007-10-09 Sun Microsystems, Inc. User-customizable input error handling
EP1665049A2 (en) * 2003-09-15 2006-06-07 Nvidia Corporation A system and method for testing and configuring semiconductor functional circuits
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8768642B2 (en) 2003-09-15 2014-07-01 Nvidia Corporation System and method for remotely configuring semiconductor functional circuits
US7219258B2 (en) * 2003-12-10 2007-05-15 International Business Machines Corporation Method, system, and product for utilizing a power subsystem to diagnose and recover from errors
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US7257654B1 (en) * 2004-11-09 2007-08-14 Advanced Micro Devices, Inc. PCI bridge device configured for using JTAG scan for writing internal control registers and outputting debug state
US7738484B2 (en) * 2004-12-13 2010-06-15 Intel Corporation Method, system, and apparatus for system level initialization
US7734741B2 (en) * 2004-12-13 2010-06-08 Intel Corporation Method, system, and apparatus for dynamic reconfiguration of resources
US7430487B2 (en) * 2006-09-06 2008-09-30 International Business Machines Corporation System and method for implementing a programmable DMA master with data checking utilizing a drone system controller
US7689865B2 (en) * 2006-09-06 2010-03-30 International Business Machines Corporation Middlesoft commander
US20090079467A1 (en) * 2007-09-26 2009-03-26 Sandven Magne V Method and apparatus for upgrading fpga/cpld flash devices
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8174287B2 (en) * 2009-09-23 2012-05-08 Avaya Inc. Processor programmable PLD device
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
CN102411527B (zh) * 2010-09-21 2015-01-21 北京中星微电子有限公司 一种图像处理芯片的检测方法、开发板和检测系统
US8990548B2 (en) * 2011-04-11 2015-03-24 Intel Corporation Apparatuses for configuring programmable logic devices from BIOS PROM
CN102280133A (zh) * 2011-08-16 2011-12-14 杭州晟元芯片技术有限公司 一种抗截获的代码加密烧录方式
DE102012217585B4 (de) * 2012-09-27 2014-11-06 Siemens Aktiengesellschaft Verfahren zur automatischen Konfiguration von programmierbaren Bausteinen, elektronische Baugruppenanordnung, Röntgendetektor und Computertomographiesystem
CN103472748B (zh) * 2013-09-04 2017-01-18 上海顺久电子科技有限公司 时序控制电路的验证系统和验证方法
CN104239090B (zh) * 2014-07-15 2017-12-22 上海微小卫星工程中心 一种基于fpga的卫星星务计算机在轨重构系统及方法
CN105373411B (zh) * 2015-11-03 2018-09-28 上海无线电设备研究所 一种用于星载数字信号处理器的在轨编程系统及设计方法
US10320390B1 (en) 2016-11-17 2019-06-11 X Development Llc Field programmable gate array including coupled lookup tables
CN108228221A (zh) * 2016-12-14 2018-06-29 中国航空工业集团公司西安航空计算技术研究所 一种基于1553b总线的可编程逻辑在线升级方法
CN108710494B (zh) * 2018-03-21 2022-07-01 昆山龙腾光电股份有限公司 一种更新测试设备数据的装置、系统及控制方法
CN113010344B (zh) 2019-12-19 2022-10-11 瑞昱半导体股份有限公司 联合测试工作组存取接口装置、主机端以及目标系统
CN111142914B (zh) * 2019-12-31 2021-05-28 南京中科晶上通信技术有限公司 一种基于zynq固件升级的方法及计算机可读存储介质
CN112068867B (zh) * 2020-09-02 2023-05-23 中国航空工业集团公司西安飞行自动控制研究所 飞控计算机内多功能板软件在线加载架构及加载方法
US11892505B1 (en) * 2022-09-15 2024-02-06 Stmicroelectronics International N.V. Debug and trace circuit in lockstep architectures, associated method, processing system, and apparatus
CN116955048B (zh) * 2023-06-16 2024-03-22 上海水木蓝鲸半导体技术有限公司 芯片校准和调试信息管理的方法、装置及计算机存储介质

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914576A (en) * 1986-12-18 1990-04-03 Bull Hn Information Systems Inc. Apparatus and method of loading a control store memory of a central subsystem
US5101490A (en) * 1989-01-10 1992-03-31 Bull Hn Information Systems Inc. Peripheral device controller with an EEPROM with microinstructions for a RAM control store
US5428800A (en) * 1991-10-30 1995-06-27 I-Cube, Inc. Input/output (I/O) bidirectional buffer for interfacing I/O ports of a field programmable interconnection device with array ports of a cross-point switch
US5343478A (en) * 1991-11-27 1994-08-30 Ncr Corporation Computer system configuration via test bus
US5425036A (en) * 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
US5477544A (en) * 1994-02-10 1995-12-19 The United States Of America As Represented By The Secretary Of The Navy Multi-port tester interface
US5465056A (en) * 1994-06-30 1995-11-07 I-Cube, Inc. Apparatus for programmable circuit and signal switching
US5802268A (en) * 1994-11-22 1998-09-01 Lucent Technologies Inc. Digital processor with embedded eeprom memory
US5894571A (en) * 1995-08-14 1999-04-13 Dell U.S.A., L.P. Process for configuring software in a build-to-order computer system
US5864486A (en) * 1996-05-08 1999-01-26 Lattice Semiconductor Corporation Method and apparatus for in-system programming of a programmable logic device using a two-wire interface
US6097211A (en) * 1996-07-18 2000-08-01 Altera Corporation Configuration memory integrated circuit
US5762644A (en) * 1996-08-30 1998-06-09 The Procter & Gamble Company Toilet-disposable absorbent interlabial device
US5761462A (en) * 1996-12-13 1998-06-02 International Business Machines Corporation Method and system for supporting peripheral component interconnect (PCI) peer-to-peer access across multiple PCI host bridges within a data-processing system
US5933614A (en) * 1996-12-31 1999-08-03 Compaq Computer Corporation Isolation of PCI and EISA masters by masking control and interrupt lines
US5826048A (en) * 1997-01-31 1998-10-20 Vlsi Technology, Inc. PCI bus with reduced number of signals
US5935233A (en) * 1997-05-21 1999-08-10 Micron Electronics, Inc. Computer system with a switch interconnector for computer devices
US6314550B1 (en) * 1997-06-10 2001-11-06 Altera Corporation Cascaded programming with multiple-purpose pins
US6055632A (en) * 1997-09-25 2000-04-25 Allen-Bradley Company, Llc Method and apparatus for transferring firmware to a non-volatile memory of a programmable controller system
US6167358A (en) * 1997-12-19 2000-12-26 Nowonder, Inc. System and method for remotely monitoring a plurality of computer-based systems
US5956516A (en) * 1997-12-23 1999-09-21 Intel Corporation Mechanisms for converting interrupt request signals on address and data lines to interrupt message signals
JPH11259383A (ja) * 1998-03-12 1999-09-24 Hitachi Ltd Ras情報取得回路及びそれを備えた情報処理システム
US6198303B1 (en) * 1998-03-25 2001-03-06 Altera Corporation Configuration eprom with programmable logic
US5970005A (en) * 1998-04-27 1999-10-19 Ict, Inc. Testing structure and method for high density PLDs which have flexible logic built-in blocks
US6167477A (en) * 1998-06-15 2000-12-26 Sun Microsystems, Inc. Computer system bridge employing a resource control mechanism with programmable registers to control resource allocation
US6567414B2 (en) * 1998-10-30 2003-05-20 Intel Corporation Method and apparatus for exiting a deadlock condition
US6289406B1 (en) * 1998-11-06 2001-09-11 Vlsi Technology, Inc. Optimizing the performance of asynchronous bus bridges with dynamic transactions
US6405276B1 (en) * 1998-12-10 2002-06-11 International Business Machines Corporation Selectively flushing buffered transactions in a bus bridge
US6044025A (en) * 1999-02-04 2000-03-28 Xilinx, Inc. PROM with built-in JTAG capability for configuring FPGAs
US6460108B1 (en) * 1999-03-31 2002-10-01 Intel Corporation Low cost data streaming mechanism
US6678741B1 (en) 1999-04-09 2004-01-13 Sun Microsystems, Inc. Method and apparatus for synchronizing firmware
US6366973B1 (en) * 1999-05-03 2002-04-02 3Com Corporation Slave interface circuit for providing communication between a peripheral component interconnect (PCI) domain and an advanced system bus (ASB)
JP2001005724A (ja) * 1999-06-11 2001-01-12 Internatl Business Mach Corp <Ibm> ライト・キャッシュ転送の制御方法およびディスク装置
US6459297B1 (en) * 1999-09-20 2002-10-01 Ag Communication Systems Corporation System for programming field programmable devices
US6636927B1 (en) * 1999-09-24 2003-10-21 Adaptec, Inc. Bridge device for transferring data using master-specific prefetch sizes
US6622246B1 (en) * 1999-11-12 2003-09-16 Xerox Corporation Method and apparatus for booting and upgrading firmware
US6137738A (en) * 1999-11-30 2000-10-24 Lucent Technologies, Inc. Method for in-system programming of serially configured EEPROMS using a JTAG interface of a field programmable gate array
US7155711B2 (en) * 1999-12-10 2006-12-26 Sedna Patent Services, Llc Method and apparatus providing remote reprogramming of programmable logic devices using embedded JTAG physical layer and protocol
US6551225B1 (en) * 2000-01-24 2003-04-22 Ron Richard Romero Flexible hemispherical exercise
US6658508B1 (en) * 2000-01-31 2003-12-02 Koninklijke Philips Electronics N.V. Expansion module with external bus for personal digital assistant and design method therefor
US6255849B1 (en) * 2000-02-04 2001-07-03 Xilinx, Inc. On-chip self-modification for PLDs
US6427198B1 (en) * 2000-02-15 2002-07-30 International Business Machines Corporation Method, system, and program for determining system configuration
US6529989B1 (en) * 2000-05-03 2003-03-04 Adaptec, Inc. Intelligent expansion ROM sharing bus subsystem
JP2002025282A (ja) * 2000-07-12 2002-01-25 Hitachi Ltd 不揮発性半導体記憶装置
US6658519B1 (en) * 2000-07-28 2003-12-02 International Business Machines Corporation Bus bridge with embedded input/output (I/O) and transaction tracing capabilities
US6629179B1 (en) * 2000-07-31 2003-09-30 Adaptec, Inc. Message signaled interrupt generating device and method
US7168005B2 (en) * 2000-09-14 2007-01-23 Cadence Design Systems, Inc. Programable multi-port memory BIST with compact microcode
JP2002113675A (ja) * 2000-10-11 2002-04-16 Sony Corp ロボット制御システム並びにロボット制御用ソフトウェアの導入方法
US6691205B2 (en) * 2001-03-05 2004-02-10 M-Systems Flash Disk Pioneers Ltd. Method for using RAM buffers with simultaneous accesses in flash based storage systems
US6823418B2 (en) * 2001-06-29 2004-11-23 Intel Corporation Virtual PCI device apparatus and method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008090819A (ja) * 2006-07-25 2008-04-17 Nvidia Corp ハードウェアプラットフォームクラスの識別を高速化するシステム及び方法
JP2010507227A (ja) * 2006-10-16 2010-03-04 トムソン ライセンシング フィールド・プログラマブル・ゲート・アレイ(fpga)のトレラントなシステム内プログラミング
JP2013050860A (ja) * 2011-08-31 2013-03-14 Renesas Electronics Corp マイクロコンピュータ及びマルチマイクロコンピュータシステム
US11461524B2 (en) 2019-11-20 2022-10-04 Ricoh Company, Ltd. Information processing apparatus and configuration method

Also Published As

Publication number Publication date
US20030023771A1 (en) 2003-01-30
DE10231930A1 (de) 2003-05-15
US6883109B2 (en) 2005-04-19

Similar Documents

Publication Publication Date Title
JP2003058385A (ja) システム管理プロセッサおよびjtagバスを介してeepromのfpgaコードを更新する方法
JP2003058386A (ja) 複数基板上のプログラマブルロジックデバイスをjtagブリッジ接続するためのシステムおよび方法
KR101407835B1 (ko) 플랫폼 독립적인 메모리 로직의 제공
US6463550B1 (en) Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory
KR100675518B1 (ko) 모듈식 바이오스 업데이트 메커니즘
US6836859B2 (en) Method and system for version control in a fault tolerant system
US7765393B1 (en) Method and system of embedding a boot loader as system firmware
US7676694B2 (en) Managing system components
US7363484B2 (en) Apparatus and method for selectively mapping proper boot image to processors of heterogeneous computer systems
US9395968B1 (en) Uniquely identifying and validating computer system firmware
JP2003132010A (ja) Jtagバス−シリアルバス間をブリッジ接続する方法および装置
US8296528B2 (en) Methods and systems for microcode patching
US7017038B1 (en) Method and system to provide first boot to a CPU system
US11579893B2 (en) Systems and methods for separate storage and use of system BIOS components
CN111052074A (zh) 具有自描述依从性信息的固件组件
US7127638B1 (en) Method and apparatus for preserving data in a high-availability system preserving device characteristic data
US20030023793A1 (en) Method and apparatus for in-system programming through a common connection point of programmable logic devices on multiple circuit boards of a system
TWI801468B (zh) 用於保護電子裝置之安全性之設備、方法及系統以及相關的微控制器
CN112231005A (zh) 一种基于uboot管理fpga版本的方法
CN100437485C (zh) 用于配置计算机系统的系统和方法
US20040225792A1 (en) Computer system
US7062763B2 (en) Method and apparatus for remote software code update
US20020103611A1 (en) System and method for receiving information from a test apparatus
US6816985B2 (en) Method and apparatus for detecting corrupt software code
US7206973B2 (en) PCI validation