JP3791859B2 - ネットワークのスキャンパスを階層的に構成するスキャン装置および方法 - Google Patents

ネットワークのスキャンパスを階層的に構成するスキャン装置および方法 Download PDF

Info

Publication number
JP3791859B2
JP3791859B2 JP28854096A JP28854096A JP3791859B2 JP 3791859 B2 JP3791859 B2 JP 3791859B2 JP 28854096 A JP28854096 A JP 28854096A JP 28854096 A JP28854096 A JP 28854096A JP 3791859 B2 JP3791859 B2 JP 3791859B2
Authority
JP
Japan
Prior art keywords
data
rtc
scan
integrated circuit
switching
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.)
Expired - Fee Related
Application number
JP28854096A
Other languages
English (en)
Other versions
JPH10134011A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP28854096A priority Critical patent/JP3791859B2/ja
Priority to US08/837,914 priority patent/US5928374A/en
Publication of JPH10134011A publication Critical patent/JPH10134011A/ja
Application granted granted Critical
Publication of JP3791859B2 publication Critical patent/JP3791859B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/318536Scan chain arrangements, e.g. connections, test bus, analog signals
    • 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/318544Scanning methods, algorithms and patterns
    • G01R31/31855Interconnection testing, e.g. crosstalk, shortcircuits

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、複数の半導体素子により構成される大規模なネットワークの試験方法に係り、いくつかの被試験半導体素子を結ぶスキャンパスを構成してネットワークの試験を行うスキャン装置に関する。
【0002】
【従来の技術】
近年、計算機による処理の高速化のために、複数のCPU(中央処理装置)を接続して計算を行わせる並列計算機システムの利用が増えている。並列計算機は、複数のCPUを接続するためのネットワークを持つが、CPUの台数が増えるに従い、このネットワークのために使用される配線も増える。また、CPU間のネットワークの転送レートを上げて、より高い性能を得るために、配線を増やすことも行われている。
【0003】
この結果として、並列計算機ではネットワーク上に複雑な配線が巡らされ、その接続関係を試験することは容易ではない。実用性やコストを考慮すれば、試験のためのハードウェア量の増加は極力抑えるべきであり、試験時間も短いことが望ましい。
【0004】
こうした計算機システムの試験容易化および試験用ハードウェア量の削減を目的とする試験方式の標準として、IEEE Std 1149.1(Institute of Electrical and Electronics Engineers Standard Test Access Port and Boundary-Scan Architecture)がある。この標準に基づく試験方式は、通称JTAG−SCAN(Joint Test Action Group-Scan)方式と呼ばれている。
【0005】
JTAG−SCAN方式は、TAP(Test Access Port)と呼ばれる汎用ポートを用いることで、LSI(Large Scale Integration )回路内のレジスタ情報を引き出し、LSIの全状態を観測/制御できるという特徴を持つ。この方法によれば、LSIをプリント板に実装した状態でもこの機能が利用できるため、複数のLSI等の半導体素子を含むシステムの試験に適している。
【0006】
TAPには、通常、TCK(Test Clock)、TMS(Test Mode Select)、TDI(Test Data Input )、TDO(Test Data Output)、TRST(Test Reset)の5本の信号線が含まれる。
【0007】
TCKは試験用のクロック信号のポートを表し、TMSはTAPコントローラの状態を変化させる信号のポートを表す。TAPコントローラとは、JTAG試験における回路動作のシーケンスを制御する有限状態機械である。
【0008】
また、TDIは試験用のインストラクションやデータの入力ポートを表し、TDOはそれらの出力ポートを表し、TRSTはTAPコントローラを初期化する信号のポートを表す。このうち、TRSTはオプショナルなポートであって、必ずしも利用する必要はない。
【0009】
【発明が解決しようとする課題】
しかしながら、大規模なシステムにおける従来のJTAG試験には次のような問題がある。
【0010】
今、仮想的な被試験システムとして、図68のような並列計算機ネットワークを考えることにする。図68のネットワーク上の各ノードには、RTC(Routing Controller)1と呼ばれるLSIが配置されている。それぞれのRTC1は不図示の各CPUに接続され、それらのCPU間の通信を制御する。言い換えれば、RTC1間の実線がCPU間のネットワークの配線を表していることになる。
【0011】
また、各RTC1は、上述のTAPに対応する信号線から成るJTAGI/F(JTAGインタフェース)を持つ。ただし、図68では、JTAGI/Fは単にJTAGと記され、各RTC1のTDIとTDOに対応する信号線のみが示されている。
【0012】
図68の並列計算機ネットワークでは、RTC1が2次元的に配置されているが、実際には、トーラス状に接続されていることが多い。しかし、ここでは簡単のために、このような模擬的な構成を用いてJTAG試験の概要を説明する。
【0013】
一般のJTAG試験では、図69に示すように、JTAGスキャンの入出力ポートであるTDI、TDOを芋蔓(チェーン)状に接続してスキャンループ(スキャンパス)を構成する。そして、スキャンエンジン(SCANE)2の制御に従って、システム全体を同時に試験する。
【0014】
しかし、図69のようなJTAG試験では、システム構成に自由度がないという問題がある。スキャンループはすべてのRTC1を含むように、回路設計時に決定されている。このため、RTC1が実装されていないノードでは配線の変更が必要になり、容易にRTC1を削減することができない。また、RTC1を追加してシステムを拡張する場合も、配線の変更が必要となる。したがって、システム構成の変更には多大なコストがかかる。
【0015】
また、このようなJTAG試験では、すべてのRTC1をスキャンループに入れているため、スキャン試験に時間がかかるという問題もある。例えば、AP3000のような並列計算機の場合、最大1024台のCPUを備え、対応するRTC1の数も同数になる。こうした大規模なシステムの一部のレジスタ情報を読み出したいときに、すべてのRTC1を経由するのは時間的に無駄が多い。
【0016】
このように、大規模なシステムに対する、安価で高速なJTAG試験の一般的方法は、まだ確立していない。
本発明の課題は、並列計算機等の巨大なシステムに対して、JTAG−SCANのようなスキャン試験を、効率的かつ安価に実施できるようなスキャン装置を提供することである。
【0017】
【課題を解決するための手段】
図1は、本発明のスキャン装置の原理図である。
図1のスキャン装置はスキャンパス構成手段11とシフト手段12を備え、複数の集積回路13を互いに接続して構成されるネットワーク14のスキャンパスを構成する。
【0018】
スキャンパス構成手段11は、上記複数の集積回路13の各々の入出力信号線に対応するスキャンチェーン15を階層的に接続して、上記複数の集積回路13のうちの少なくとも1つ以上の集積回路13を含む上記スキャンパスを構成する。
【0019】
シフト手段12は、上記スキャンパスを用いて、上記1つ以上の集積回路が有する情報をシフトする。
集積回路13は、例えばRTC1のようなLSIに相当する。スキャンパス構成手段11は、スキャンパスの一部分となるスキャンチェーン15を、例えば第1の層と第2の層の2階層の部分チェーン(部分パス)に分割し、それぞれの層の部分チェーンを独立に接続/切断する。シフト手段12は、部分チェーンを繋ぎ合わせて構成されたスキャンパスの入力側からデータをシフトインし、出力側からデータをシフトアウトして、スキャン動作を行う。
【0020】
スキャンパス構成手段11を設けることで、スキャンチェーン15を柔軟に繋ぎ合わせることが可能になり、多様なスキャンパスを構成できる。したがって、試験に必要な集積回路13のみを取り込んだ短いスキャンパスを構成することも可能になり、スキャン試験が効率化される。
【0021】
また、スキャンパス構成手段11は、複数の集積回路スイッチ手段16と制御手段17とを含む。制御手段17は、上記複数の集積回路スイッチ手段16の信号線15に接続され、切替を指示するための切替データをそれらの集積回路スイッチ手段16のうちの少なくとも1つ以上にスキャンインして、集積回路スイッチ手段16の切り替え動作を制御する。
【0022】
各集積回路スイッチ手段16は2つ以上の集積回路13の信号線15に接続され、上記切替データを入力された集積回路スイッチ手段16は、その切替データに従って、対応する集積回路13の信号線15を切り替える。
【0023】
スキャンチェーン15は集積回路スイッチ手段16により、上記第1の層と第2の層に分割される。そして、制御手段17から与えられる切替データに応じて、第1の層の部分チェーンの接続/切断を行う。制御手段17は、切替データを変更することにより、スキャンパスに取り込まれる集積回路13を変更することができる。
【0024】
スキャンパス構成手段11をこのように構成することで、すべての集積回路13のスキャンチェーン15を直接シフト手段12に接続することなく、任意の集積回路13を接続/切断することが可能になる。例えば1000個以上の集積回路13を含むシステムにおいても、適当な数の集積回路スイッチ手段16を設けることで、任意の集積回路13を選択的にスキャンパスに取り込むことができる。
【0025】
さらに、図1のスキャン装置を用いれば、システムの変更を柔軟に行うことが可能になる。例えば、集積回路13を削減する場合は、その集積回路13の信号線15を切断するような切替データを生成すればよく、配線を変更する作業が不要になる。
【0026】
また、集積回路13を追加してシステムを拡張する場合は、その集積回路13の信号線15を空いている集積回路スイッチ手段16に接続すればよい。あるいは、集積回路スイッチ手段16を1つ追加したとしても、追加に伴うハードウェアのコストは、システム全体のコストに比べてはるかに低い。
【0027】
例えば、図1のスキャンパス構成手段11は、後述する図3のスキャンエンジン31とスキャンバッファ32を含み、シフト手段12はスキャンエンジン31に対応する。また、例えば、集積回路スイッチ手段16はスキャンバッファ32に対応し、制御手段17はスキャンエンジン31と図10のCPU部52に対応する。
また、本発明の別のスキャン装置は、複数の集積回路スイッチ手段16、制御手段17、およびシフト手段12を備え、並列計算機における複数のRTCに対応する複数の集積回路13を互いに接続して構成されるネットワーク14のスキャンパスを構成する。各集積回路スイッチ手段16は2つ以上の集積回路13の信号線15に接続され、各集積回路13の信号線15を切り替える。制御手段17は、上記複数の集積回路スイッチ手段16の信号線15に接続され、それらの集積回路スイッチ手段16の切り替え動作を制御することで、少なくとも1つ以上の集積回路13を含む上記スキャンパスを構成する。シフト手段12は、上記スキャンパスを用いて、スキャンパスに含まれる集積回路13が有する情報をシフトする。
各集積回路スイッチ手段16は、各集積回路13の信号線15の切替を指示するための第1の切替データを保持する第1の格納手段と、第1の切替データにより制御される第1のスイッチングマトリクス手段とを含む。制御手段17は、集積回路スイッチ手段16の信号線15の切り替えを指示するための第2の切替データを保持する第2の格納手段と、第2の切替データにより制御される第2のスイッチングマトリクス手段とを含み、第2のスイッチングマトリクス手段により上記複数の集積回路スイッチ手段16の信号線15を切り替えることで、少なくとも1つ以上の集積回路スイッチ手段16を含む第1のパスを構成し、第1のパスを用いて、第1の切替データをその集積回路スイッチ手段16にスキャンインするとともに、その集積回路スイッチ手段16に制御信号を出力する。その集積回路スイッチ手段16は、上記制御信号が特定の値のとき、集積回路スイッチ手段16の信号線15を第1の格納手段に接続して、第1の格納手段に第1の切替データを入力し、第1のスイッチングマトリクス手段により各集積回路の信号線を切り替えることで、1つ以上の集積回路13からなる第2のパスを構成し、第2のパスを第1のパスに階層的に接続して、集積回路スイッチ手段16の信号線15と集積回路13の信号線15を含む上記スキャンパスを構成する。シフト手段12は、並列計算機の運用中に上記スキャンパスを用いてインストラクションをシフトすることで、スキャンパスに含まれる集積回路13内のインストラクションレジスタに、ターゲットとなる集積回路13内のデータレジスタの値をシフトし他の集積回路13内のデータレジスタの値をシフトしないインストラクションを設定する。
【0028】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
図2は、並列計算機の構成例を示す図である。図2の並列計算機は、CN個のPE(Processing Element)キャビネット21−0、21−1、・・・、21−CN、および対応するCN個のネットワークキャビネット22−0、22−1、・・・、22−CNから成る。
【0029】
各PEキャビネット21−i(i=0,...,CN)は、複数のCPU23、メモリ24、およびメッセージコントローラ(MSC)25を有し、各ネットワークキャビネット22−iは、複数のRTC26を有する。
【0030】
CPU23とメモリ24はそれぞれMSC25に接続され、MSC25は対応するRTC26に接続されている。また、各RTC26は、配線のネットワーク27(T−net)を介して、他のネットワークキャビネット22−iのRTC26と接続されている。各CPU23は、MSC25、RTC26、およびネットワーク27を介して他のCPU23と通信しながら、並列処理を実行する。
【0031】
図3は、図2のRTC26を図68のように接続した場合の、本発明に基づくJTAG試験システムを示している。図3のシステムにおいては、JTAGI/Fの信号線TDI、TDOの繋ぎ替えを柔軟に行うため、RTC26とスキャンエンジン(SCANE)31の間に、複数のスキャンバッファ(SCANB)32を導入している。
【0032】
SCANE31は、接続された配線を繋ぎ替えるスイッチングマトリクス(マトリクススイッチ)を有し、SCANB32からの信号線TDI、TDOの繋ぎ替えを行う。また、SCANB32も同様のスイッチングマトリクスを有し、通常のJTAGI/F(TCK,TMS,TDI,TDO,TRST)に加えて、SFTという信号線も用いて、SCANE31と接続される。そして、入力する信号SFTが特定の値のとき、RTC26からの信号線TDI、TDOの繋ぎ替えを行う。
【0033】
このように、スキャンパスを構成する配線の繋ぎ替えを行うSCANB32を導入することで、SCANE31とSCANB32の間の上位のパスと、SCANB32とRTC26の間の下位のパスとから成る、階層的なスキャンパスが生成される。
【0034】
SCANE31は、上位のパスを自由に接続したり切り離したりすることができ、一部のSCANB32のみから成る部分的なスキャンチェーンを接続することができる。また、各SCANB32は、対応する下位のパスを自由に接続したり切り離したりすることができ、一部のRTC26のみから成る部分的なスキャンチェーンを接続することができる。
【0035】
したがって、SCANE31とSCANB32のスイッチングマトリクスを適当に制御することで、一部のSCANB32に接続された一部のRTC26のみを含むスキャンループを構成することも可能になる。したがって、大規模なシステムであっても、試験対象を限定した短いスキャンループを生成して、局所的かつ詳細な試験を短時間で行うことができる。
【0036】
また、RTC26が実装されていないノードに対しては、配線を接続しないように制御すればよく、試験用の配線を変更する作業は不要になる。さらに、RTC26を増やす場合でも、対応するいくつかのSCANB32を追加するだけでよく、比較的低コストでシステム構成を拡張することができる。
【0037】
図3のような構成では、すべてのRTC26からJTAGI/Fの信号線を引き出すため、SCANB32に多数の配線が集中するように見える。しかし、RTC26の総数に対して、適当な数のSCANB32を用意することで、RTC26からの配線を分散させることができる。また、SCANB32とSCANE31の間の配線の数は、SCANB32の数に比例するため、実際にはそれほど多くはならない。
【0038】
このように、SCANB32を用いて階層的なスキャンパスを構成すれば、巨大な並列計算機ネットワークに対しても、効率的かつ安価なスキャン試験を実施することが可能になる。
【0039】
次に、図4から図8までを参照しながら、図3のSCANE31およびSCANB32の動作の概要を説明する。
図4は、SCANB32の信号生成論理を示している。図4において、“I”が前置されている信号は、SCANE31とSCANB32の間でやり取りされる信号を表し、“U”が前置されている信号は、RTC26からSCANB32に入力する信号を表す。また、信号名の末尾の(i)は、各ネットワークキャビネット22−j(j=0,...,CN)のi番目のスロットに装着されたRTCボードとSCANB32の間でやり取りされる信号であることを表す。1つのRTCボードには、1つ以上のRTC26が搭載される。
【0040】
SCANE31からの信号ISFTの値が1の場合には、SCANE31によりSCANB32内のTAPコントローラの状態遷移が行われ、スキャンチェーンが繋ぎ替えられて、スキャンループが設定される。また、信号ISFT=0の場合には、SCANB32内のTAPコントローラの状態は変化せず、設定されたスキャンループ上のRTC26の試験が行われる。信号ISFT=1の場合は、図5に示すようにして信号が生成され、信号ISFT=0の場合は、図6に示すようにして信号が生成される。
【0041】
図5および図6において、スロットチェーンイネーブルレジスタ(slot chain enable register:SER)33は、SCANB32内のスイッチングマトリクスの制御データを格納するレジスタである。このSER33の値を書き換えることで、各スロットに対応するスキャンチェーン(スロットチェーン)が繋ぎ替えられるため、SER33はTAPコントローラの一部分と考えることができる。
【0042】
まず、信号ISFT=1の場合には、SCANE31から供給される制御データがSER33にスキャンインされ、SER33の設定が行われる。このとき、図5に示すように、信号線TDO(i)およびTMSは、常に値1をRTC26に出力する。
【0043】
また、SCANE31からの信号ITCK、ITRSTは、バッファで増幅されて、それぞれ信号線TCK、TRSTからRTC26へ出力される。信号線ITDOからは、SER33の内容がそのままSCANE31に出力される。
【0044】
次に、信号ISFT=0の場合には、図6に示すように、SCANE31からの信号ITCK、ITRST、ITMSは、バッファで増幅されて、それぞれ信号線TCK、TRST、TMSからRTC26へ出力される。また、信号線ITDOは、RTC26からの信号UTDI(i)を、SCANE31へ出力する。
【0045】
信号線TDO(i)は、SER33が格納するデータの値に応じて、SCANE31からの信号ITDI、またはRTC26からの信号UTDI(i)を選択して、RTC26へ出力する。対応するSER33の制御データが1であれば、(a)に示されるようにUTDI(i)が出力され、それが0であれば、(b)に示されるようにITDIが出力される。
【0046】
このSCANB32の動作を、SCANE31から受信する信号別に説明すると、次のようになる。
まず、SCANE31から受信した信号ITCK、ITRSTについては、バッファで増幅してRTC26へ入力する。また、信号ISFTが1のときは、SCANB32内のTAPコントローラの状態遷移を行い、RTC26への信号TMSの値を1に保持する。信号ISFTが0のときは、SCANB32内のTAPコントローラの状態遷移は行わず、SCNAE31からの信号ITMSをバッファで増幅して、それをRTC26への信号TMSとする。
【0047】
また、信号ISFT=1で、かつ、SCANB32のTAPコントローラがデータシフトの状態であれば、SCANE31から受信した信号ITDIがSER33に入力される。そして、SCANB32は、SER33のデータをシフトし、信号ITDOとしてSCANE31へ送り出す。このとき、信号TDO(i)の値は1に保持される。そうでなければ、SCANB32は、SER33の制御データに従ってRTCボードのスキャンチェーンを接続し、スキャンループを形成する。
【0048】
ここで、SCANE31とSCANB32を利用したスキャンループの構成方法について述べる。
まず、SCANE31とSCANB32の間のスキャンチェーンを接続するのは、図7に示すように、SCANE31内のキャビネットチェーンイネーブルレジスタ(cabinet chain enable register :CER)35である。
【0049】
図7においては、ネットワークキャビネット22−0、22−1が、スキャンループに取り込まれており、各ネットワークキャビネット22−0、22−1は、SCANB32を1つずつ含んでいる。このため、SCANE31とSCANB32の間のスキャンチェーンは、キャビネットチェーンと呼ばれる。また、UJTAG0、UJTAG1は、それぞれ、ネットワークキャビネット22−0、22−1に対するJTAGI/Fを表す。
【0050】
SCANE31は、SCANB32と同様にスイッチングマトリクスを有し、CER35に格納された制御データによりこれを制御して、SCANE31から出力されている複数のJTAGI/Fのキャビネットチェーンを接続する。
【0051】
この接続は、あるSCANB32の出力信号TDOを、スイッチを介して、別のSCANB32の入力信号TDIに接続することで実現される。このとき、信号TCK、TRST、TMSは、バッファを介して、すべてのSCANB32に対して共通にドライブされる。
【0052】
キャビネットチェーンが接続されると、SCANE31内のコントローラ部34の制御により、SER33には制御データがスキャンインされる。コントローラ部34が信号SFTの値を1にして、JTAGスキャンを行うとき、SCANB32のTAPコントローラのみが状態遷移する。
【0053】
そして、それがデータシフトの状態(SHIFT DR状態)になると、各SCANB32は、そのSER33にシフトデータを取り込んでシフトする。こうして、SER33のデータが読み出され、その後に新たなデータが設定される。
【0054】
また、SCANB32とRTC26の間のスキャンチェーンを接続するのは、図8に示すように、SCANB32内のSER33である。図8においては、RTC26は、ネットワークキャビネット22−0のスロットに装着されたRTCボード上に搭載されるため、SCANB32とRTC26の間のスキャンチェーンは、スロットチェーンと呼ばれる。
【0055】
信号SFTの値が0のときは、SCANB32のTAPコントローラは変化せず、RTC26内のTAPコントローラが状態遷移する。このため、コントローラ部34によるJTAGスキャンの制御は、RTC26に対してのみ行われる。
【0056】
次に、図9から図27までを参照しながら、図2の各ネットワークキャビネット22−iの構成例を詳細に説明する。
図9は、図2のネットワークキャビネット22−0の構成図である。図9のネットワークキャビネット22−0は、SCU MAINボード41、CLOCKボード42、SCU ADPボード43、およびRTCボード44を備える。他のネットワークキャビネット22−1〜22−CNは、SCU MAINボード41とCLOCKボード42を持たず、SCU ADPボード43とRTCボード44のみを有する。
【0057】
SCU MAINボード41は、並列計算機システム内にただ1つ存在し、RS(Recommended Standard)−232Cにより、外部のコントロールワークステーション46とCLOCKボード42との接続を実現する。ワークステーション46は、スキャン試験制御用のコマンドの入力や、試験結果の出力等に用いられる。
【0058】
また、CLOCKボード42もシステム内にただ1つ存在し、システムクロックを発生する。CLOCKボード42には、スキャン制御を行うCPU45およびSCANE31が搭載される。
【0059】
SCU ADPボード43は、各ネットワークキャビネット22−iに1つ存在し、CLOCKボード42とは、クロック信号およびJTAGI/F信号で接続される。このSCU ADPボード43は、SCANB32を搭載し、システムクロックのバッファリングと、JTAG信号のバッファリングおよび分配/集約とを行う。
【0060】
RTCボード44は、例えば4個のRTC26を搭載し、バックパネルを介して、JTAGI/F(JTAGポート)でSCU ADPボード43と接続されている。1つのネットワークキャビネット22−iには、最大20枚のRTCボード44を実装することができる。
【0061】
CLOCKボード42からのクロック信号およびJTAG信号は、他のネットワークキャビネット22−1〜22−CNにも分配される。ここでは、ネットワークキャビネット22−iの最大数は16となっている。例えば、16台のネットワークキャビネット22−iのそれぞれに16枚のRTCボード44を実装した場合、ネットワーク27に接続されるRTC26の総数は1024になる。
【0062】
図10は、CLOCKボード42の構成図である。CLOCKボード42は、クロック部51、CPU部52、およびSCANE31を含む。クロック部51は、60MHz、66MHz、56MHzのクロック発振源53、54、55から、コントローラ56によるマージンコントロールに従って、クロック信号を選択する。選択されたクロック信号は、バッファ57、58を介して、フロントコネクタからネットワークキャビネット22−iの数CN+1だけ分配される。クロック部51は、電源電圧3.3Vで動作する。
【0063】
クロック部51とSCANE31との間のI/F信号は、図11に示すようになる。図11において、“O”は、クロック部51からの出力信号であることを表し、Sel0、Sel1、Sel2の3つの選択信号により最大8種類のクロック信号を選択することができる。選択されたクロック信号により、RTC26が動作する。
【0064】
CPU部52は、CPU(SPARC)45、RAM(Random Access Memory)59、ROM(Read Only Memory)60、シリアルポート61、タイマ62、POR(Power On Reset)回路63を含む。そして、SCU MAINボード41とRS−232Cでやりとりしながら、SCANE31を制御する。
【0065】
SCANE31は、CPU45からのアクセスによって、JTAGスキャンを実行する。SCANE31は、例えばXC4013で実現される。
フロントコネクタは、JTAG信号とクロック信号をSCU ADPボード43に供給する。最大16個のネットワークキャビネット22−iに対応するために、フロントコネクタは16組の出力を持つ。JTAG信号とクロック信号の内訳は、図12に示すようになる。
【0066】
図12において、“O”は、SCU ADPボード43への出力信号であることを表し、“I”は、SCU ADPボード43からの入力信号であることを表す。フロントコネクタには、それ以外に、SCU MAINボード41に接続するRS−232C用のコネクタが含まれる。
【0067】
バックパネルは、3.3Vおよび5Vの電源入力を持つ。
図13は、SCU ADPボード43の構成図である。SCU ADPボード43には、システムコントロールアダプタ(SCU ADP)71、クロックバッファ72、73、およびSCANB32を含む。
【0068】
システムコントロールアダプタ71は、図2のPEキャビネット21−iに実装されるRS−232C用のバッファ(不図示)に接続する信号(CCUOUT)をバッファする。そして、12ポートのRS−232Cの出力、ファン制御、RTC26のネットワーク電源の制御を行う。システムコントロールアダプタ71は、5VE(直流電圧)で動作する。
【0069】
クロックバッファ72、73は、3.3Vで動作し、CLOCKボード42から分配されてきたクロック信号をバッファして、RTCボード44に分配する。SCANB32は、CLOCKボード42のSCANE31から供給されたJTAG信号によって、RTCボード44へのJTAG信号の繋ぎ替えを行う。SCANB32は、例えばXC4003Hにより実現され、5Vで動作する。
【0070】
フロントコネクタは、システムコントロールアダプタ71からの12本のRS−232C信号、5Vおよび3.3Vの制御信号(NET PWR)、ファンの回転監視用の信号を出力する。また、CLOCKボード42からのJTAG信号/クロック信号を受け取る。
【0071】
バックパネルは、RTCボード44へのクロック信号を中央部のコネクタから出力し、JTAG信号をその上下のコネクタを介して入出力する。また、5V、3.3V、5VEの電源入力も有する。
【0072】
図14は、RTCボード44の構成図である。RTCボード44は、クロックバッファ74と4個のRTC26を含む。
クロックバッファ74は、3.3V単一電源で動作し、CLOCKボード42からのクロック信号をバッファして、各RTC26へ供給する。RTC26は、3.3V単一電源で動作し、JTAG信号をLVTTL(Low Voltage Transistor-Transistor Logic )で受けて3.3VのTTL信号に変換する。
【0073】
フロントコネクタからは、RTC26間を接続するネットワークケーブルが引き出される。フロントコネクタは、例えばHIDEC100PINを3個2段積みで実装される。
【0074】
バックパネルは、クロック信号の入力、JTAG信号の入出力、3.3Vの電源入力に用いられる。
次に、図15から図29までを参照しながら、図10のSCANE31および図13のSCANB32の構成を説明する。
【0075】
図15は、SCANE31の構成図である。SCANE31は、CPU45とのインタフェース部(BUS I/F)81、レジスタファイル部(REGF)82、図7のコントローラ部(UTAP)34、スイッチングマトリクス(SWMAT)83、およびスキャンクロック生成部(CLKGEN)84を含む。このSCANE31は、例えばXC4013を用いて実現され、最大周波数20MHzのクロック信号で動作する。
【0076】
コントローラ部34は、TAPコントローラ(TAPC)85、インストラクションレジスタ(instruction register:IRR)86、およびユーザレジスタ(user registers:URs)87を含む。TAPコントローラ85は、信号TMS、TCKに応じて状態遷移を行う有限状態機械で、レジスタファイル部82およびIRR86の制御データを用いて、SCANE31の制御を行う。IRR86とURs87については後述する。
【0077】
各スイッチングマトリクス83は4個のスイッチを含み、4個のスイッチングマトリクス83で最大16個のSCANB32の接続/切断を行う。スイッチングマトリクス83の動作は、レジスタファイル部82に含まれるCER35のデータにより制御される。
【0078】
図15において、UJTAGは、SCANE31とSCANB32を接続する信号線を表す。これらのうち、USFT0、UTMS0、UTCK0、およびUTRST0は、すべてのSCANB32に共通の信号SFT、TMS、TCK、およびTRSTを表す。
【0079】
また、UTDOiおよびUTDIi(i=0,...,15)は、i番目のSCANB32に接続される信号TDOおよびTDIを表し、スイッチングマトリクス83により接続/切断される。UJTAGiは、UTDOiとUTDIiの組を表している。
【0080】
また、DISPLAYは、ネットワークキャビネット22−i上に設けられた不図示のLED(light emitting diode)に、各RTC26の内部状態等を表示する場合に用いられる信号線を表す。
【0081】
図16は、レジスタファイル部82内のレジスタ、IRR86、およびURs87のレジスタアドレスマップを示している。レジスタファイル部82内には、クロックコントロールレジスタ(clock control register:CLKR)、コマンド/ステータスレジスタ(command/status register :CMDR)、図7のCER35、ターゲットレジスタ(target register :TGETR)、ループレジスタ(loop register :LOOPR)、MISCレジスタ(miscellaneos register :MISCR)、およびディスプレイコントロールレジスタ(display control register:DISPR)が設けられる。また、スキャンデータレジスタ(scan data register:SDR)は、図15のURs87に相当する。
【0082】
図16の各レジスタのアドレスはオフセットを表しており、実際のアドレス割り当て時には、各々にSCANE31のデバイスアドレスをベースとして加える必要がある。また、“R/W”は、読み出しと書き込みの両方の動作が行われるレジスタであることを表し、“RO”は、読み出し専用のレジスタであることを表す。これらのレジスタのデータ構造は図17から図26に示すようになる。図17から図26において、resはリザーブビットを表す。
【0083】
図17のCLKRにおいて、CDIVはクロック信号TCKの分周数を表し、SSEN、ARES、SRES、STOP、SGLはクロック信号の制御データを表す。また、CSELはクロック信号の周波数を指定するデータを表し、図11のSel0、Sel1、Sel2に対応する。
【0084】
図18のCMDRにおいて、Cmpは終了表示を表し、Errはエラー状態を表し、Pausはポーズ状態を表し、Bsyは動作状態を表す。Cmpに1が書き込まれると、SCANE31はスキャン動作を開始する。
【0085】
また、VersionはSCANE31のバージョンを表し、TMS、TRST、TCK、TDO、およびTDIは信号TMS、TRST、TCK、TDO、およびTDIの制御データを表す。INTEは割り込み制御データを表し、SFTは図4の信号ISFTの値を表し、CMDはCPU45から与えられるSCANE31の制御コマンドを表す。このCMDとしては、基本的に、図19に示される6種類のコードがある。
【0086】
図19において、NOPは、何等オペレーションを行わないコマンドであり、SETIRは、IRR86のデータをRTC26内のレジスタにセットするコマンドである。また、SETDRは、SDRのデータを特定のRTC26内のレジスタにセットするコマンドであり、BRDDRは、SDRのデータをすべてのRTC26内のレジスタにセットするコマンドである。
【0087】
また、SNSDRは、RTC26内のレジスタのデータを読み出してSDRに格納するコマンドであり、MANUは、SCANE31をマニュアルモードに設定するコマンドである。
【0088】
図20のCER35において、MASKはキャビネットチェーンを接続する制御データを表し、図21のSDRにおいて、DATAはシフトされるデータを表す。また、図22のIRR86において、IRTはスキャン試験のターゲットとなるRTC26(指定チップ)に対するインストラクション(IRコマンド)を表し、IROはそれ以外のRTC26に対するインストラクションを表す。
【0089】
図23のTGETRにおいて、WCHNはスキャンループに接続されているRTC26(チップ)の数を表し、TCHNはターゲットRTC26の位置を表す。また、図24のLOOPRにおいて、SLOOPはスキャンループの区切り指定を表し、LOOPはスキャンループにおいてシフトするビット数(ループ長)を表す。LOOPの値は、WCHNの値をもとにして計算される場合もある。
【0090】
図25のMISCRにおいて、CSLOOPはSLOOPから派生するデータを表し、TAPSTはTAPコントローラ85のステータスを表す。また、図26のDISPRは、RTC26の状態をネットワークキャビネット22−i上のLEDに表示する場合に用いられ、RUNはLED表示データのコピー動作を表し、ENBは表示動作を表し、PAGEは表示データのソースページを表す。
【0091】
図27は、SCANB32の構成図である。SCANB32は、スイッチングマトリクス(SWMAT)83、コントローラ部91、およびスキャンクロックのバッファ(CLKBUF)92を含む。このSCANB32は、例えばXC4003Hを用いて実現され、SCANE31から供給されるスキャンクロックTCKにより動作する。
【0092】
コントローラ部91は、図5のSER33を含み、TAPコントローラの機能を有する。5個のスイッチングマトリクス83は、最大20枚のRTCボード44の接続/切断を行う。スイッチングマトリクス83の動作は、SER33のデータにより制御される。
【0093】
図27において、IJTAGは、SCANE31とSCANB32を接続する信号線を表す。これらのうち、ISFT、ITMS、ITCK、およびITRSTは、それぞれ、SCANE31から入力される信号SFT、TMS、TCK、およびTRSTを表す。また、ITDIおよびITDOは、SCANE31に接続される信号TDOおよびTDIを表し、スイッチングマトリクス83を介してRTCボード44に接続される。
【0094】
UJTAGは、SCANB32とRTCボード44を接続する信号線を表す。これらのうち、UTMSi、UTCKi、およびUTRSTi(i=0,...,19)は、それぞれ、i番目のRTCボード44に接続される信号TMS、TCK、およびTRSTを表す。
【0095】
また、UTDOiおよびUTDIi(i=0,...,19)は、i番目のRTCボード44に接続される信号TDOおよびTDIを表し、スイッチングマトリクス83により接続/切断される。UJTAGiは、UTMSi、UTDOi、UTCKi、UTRSTi、およびUTDIiの組を表している。
【0096】
図28は、SER33を示している。図28において、VersionはSCANB32のバージョンを表し、MASKはスロットチェーンを接続する制御データを表す。MASKのビット0〜19は、それぞれ、0番目〜19番目のRTCボード44に対応するスロットチェーンを接続/切断するために用いられる。
【0097】
図29は、図15および図27のスイッチングマトリクス83の構成図である。図29において、0番目のスイッチングマトリクス83(SWMAT0)に入力するSE0、SE1、SE2、およびSE3は、SCANE31のCER35あるいはSCANB32のSER33のビット0、1、2、および3の値に対応する制御信号である。
【0098】
他のスイッチングマトリクス83(SWMAT1等)にも、CER35またはSER33のビット4、5、6、・・・の値に対応する不図示の制御信号SE4、SE5、SE6、・・・が入力される。また、SIN、SOUTは、それぞれ、スイッチングマトリクス83に対するスキャン入力、スイッチングマトリクス83からのスキャン出力を表す。
【0099】
loop0、loop1、・・・、loopNは、それぞれ、制御信号SE0、SE1、・・・、SENにより、スキャンループに取り込まれたり、スキャンループから切り離されたりする局所的なループである。loopi(i=0,...,N)は、図15および図27の出力端子UTDOiと入力端子UTDIiの間に生成される。
【0100】
図15のスイッチングマトリクス83では、これらのループはSCANB32とRTCボード44から成るキャビネットチェーンに対応し、N=CNとなる。また、図27のスイッチングマトリクス83では、これらのループはRTCボード44のスロットチェーンに対応し、Nはネットワークキャビネット22−i内のRTCボード44の数に一致する。
【0101】
また、セレクタ101、102、103は、制御信号が1のとき入力I1を選択して出力し、制御信号が0のとき入力I2を選択して出力する。特に、セレクタ102は、制御信号SEi(i=0,...,N)が1のとき、入力された信号を出力し、制御信号SEiが0のとき、入力信号とは無関係に1を出力する。
【0102】
セレクタ102が固定的に1を出力することにより、その出力に接続されたloopi中のLSIへの誤入力が防止される。したがって、セレクタ102は、制御信号SEiが0のとき、それに対応するloopi中のLSIに誤った制御が発生することを防止する保護回路の役割を果たしている。
【0103】
例えば、SE0=1、SE1=0、SE2=0、SE3=0とすると、信号SINは、セレクタ102を介してloop0の入力UTDO0に接続される。このとき、loop0の出力UTDI0はセレクタ101から出力されるが、loop1、loop2、およびloop3には伝わらずに、そのまま信号SOUTとして出力される。この結果、loop1、loop2、およびloop3は、スキャンループから外される。
【0104】
また、SE0=0、SE1=1、SE2=0、SE3=0とすると、信号SINは直接loop1の入力UTDO1に接続され、loop1の出力UTDI1が信号SOUTとして出力される。この結果、loop0、loop2、およびloop3は、スキャンループから外される。
【0105】
次のスイッチングマトリクス83(SWMAT1)の入力側にあるセレクタ103には、制御信号として、SE0、SE1、SE2、およびSE3の論理和が入力される。したがって、このセレクタ103は、SE0、SE1、SE2、およびSE3のいずれかが1であれば、前のスイッチングマトリクス83(SWMAT0)から入力されるSOUTを選択し、それらがすべて0であればもう一方の入力SINを選択する。他のスイッチングマトリクス83(SWMAT2等)についても同様である。
【0106】
言い換えれば、取り込まれるべき1つ以上の局所ループを有するスイッチングマトリクス83はスキャンループに取り込まれ、そのような局所ループを持たないスイッチングマトリクス83はスキャンループから外されることになる。
【0107】
このように、SEi=1に対応するloopiはスキャンループに取り込まれ、SEi=0に対応するloopiはスキャンループから外される。したがって、CER35またはSER33のデータMASKを書き換えて、制御信号SEiの値を制御することにより、任意の局所ループをスキャンループに接続したり、スキャンループから切り離したりすることができる。
【0108】
次に、図30から図35までを参照しながら、SCANE31およびSCANB32の動作について説明する。
図30は、図19に示したSCANE31の各制御コマンドによる動作例を示している。図30において、SETIRは、図22のIRR86のインストラクションIRT、IROを、RTC26内のレジスタにセットする。例えば、図23のTGETRのデータが、TCHN=1、WCHN=4のとき、4つのRTC26のうち、TCHN=1に対応する位置のRTC26にインストラクションIRTがセットされ、他の3つのRTC26にはインストラクションIROがセットされる。
【0109】
また、SNSDRは、特定のRTC26内のレジスタのデータを読み出して、図21のSDRに格納する。例えば、TCHN=2、WCHN=4のとき、4つのRTC26のうち、TCHN=2に対応する位置のRTC26からデータSRが読み出され、他の3つのRTC26はバイパスされる。また、TCHN=4、WCHN=4のときはスキャン動作が4回繰り返されて、4つのRTC26のデータSR0、SR1、SR2、SR3が順に読み出される。ここで、TCHN=4は、スキャンループに接続されているすべてのRTC26がターゲットとなることを表している。
【0110】
また、SETDRは、SDRのデータを特定のRTC26内のレジスタにセットする。例えば、TCHN=2、WCHN=4のとき、4つのRTC26のうち、TCHN=2に対応する位置のRTC26のみにSDRのデータがセットされ、他の3つのRTC26はバイパスされる。また、TCHN=4、WCHN=4のときはスキャン動作が4回繰り返されて、4つのRTC26のデータSR0、SR1、SR2、SR3として、SDRのデータが順にセットされる。
【0111】
また、BRDDRは、SDRのデータをすべてのRTC26内のレジスタに同時にセットする。例えば、TCHN=4、WCHN=4のとき、SDRのデータが、一度に4つのRTC26にSRとしてセットされる。
【0112】
RTC26のスキャン試験は、図30のコマンドを次のように組み合わせて実現される。以下の記述において、各コマンドに続く括弧内には、そのコマンドに付随するパラメータが記述されている。
【0113】
(1)初期設定:すべてのRTC26内の特定のレジスタを、同一データで初期化する。この動作は、次の2つのコマンドにより実現される。
1.SETIR(IRT=SETREG,IRO=SETREG,TCHN=WCHN)
2.BRDDR(SDR=INITDATA,TCHN=WCHN)
ここで、SETREGは、RTC26内の特定のレジスタの設定を指示するIRコマンドであり、INITDATAは、適当な初期データである。また、TCHN=WCHNは、スキャンループに接続されているすべてのRTC26がターゲットとなることを表している。
【0114】
(2)RTC IDの設定:すべてのRTC26内の特定のレジスタを、個別データで初期化する。この動作は、次の2つのコマンドにより実現される。
1.SETIR(IRT=SETREG,IRO=SETREG,TCHN=WCHN)
2.SETDR(SDR=INITDATA×WCHN,TCHN=WCHN)
(3)エラー解除:特定のRTC26内のレジスタを初期化する。この動作は、次の2つのコマンドにより実現される。
1.SETIR(IRT=SETREG,IRO=BYPASS,TCHN=RTCNO)
2.SETDR(SDR=INITDATA,TCHN=RTCNO)
ここで、BYPASSは、そのRTC26内のレジスタをバイパスすることを指示するIRコマンドであり、RTCNOは、スキャンループ内でのRTC26の位置を指定するデータである。
【0115】
(4)ステータスセンス:すべてのRTC26内の特定のレジスタから、データを読み出す。この動作は、次の2つのコマンドにより実現される。
1.SETIR(IRT=SNSREG,IRO=SNSREG,TCHN=WCHN)
2.SNSDR(TCHN=WCHN),SDR×WCHN
ここで、SNSREGは、RTC26内の特定のレジスタの読み出しを指示するIRコマンドである。
【0116】
(5)デバッグ:特定のRTC26内のレジスタからデータを読み出す。この動作は、次の2つのコマンドにより実現される。
1.SETIR(IRT=SETREG,IRO=BYPASS,TCHN=RTCNO)
2.SNSDR(TCHN=RTCNO),SDR
ところで、図2の並列計算機のJTAG試験として、ネットワーク27のサイズの検出とその接続試験とがある。ネットワーク27のサイズとは、ネットワーク27に接続されているRTC26の個数を意味する。ここで、これらの試験について説明する。
【0117】
図31は、ネットワーク27のサイズ検出におけるSCANE31およびCPU45の動作フローチャートである。図31において、CPU45は、まず制御変数cを0とおき(ステップS1)、SCANE31は、c番目のネットワークキャビネット22−cに対応するCER35のビットcを1に設定する(ステップS2)。これにより、図15のUJTAG0に接続されるSCANB32がスキャンループに取り込まれる。
【0118】
次に、CPU45は、制御変数sを0とおき(ステップS3)、SCANE31は、ネットワークキャビネット22−c内のSCANB32において、s番目のスロットに対応するSER33のビットsを1に設定する(ステップS4)。この設定は、CPU45が図18のCMDRのSFTに1を書き込み、SCANE31がSER33のビットsに1をシフトインすることで行われる。これにより、図27のUJTAG0に接続されるRTCボード44がスキャンループに取り込まれる。
【0119】
次に、SCANE31は、スキャン動作を行って、ネットワークキャビネット22−cのs番目のスロットのRTCボード44から、4つのRTC26のバージョンデータを読み出す(ステップS5)。このバージョンデータは、RTC26内のレジスタに格納されており、対応するIRコマンドをRTC26に与えることで、これを読み出して図21のSDRに格納することができる。
【0120】
次に、CPU45は、SDRの内容を参照して、バージョンデータを取得できたかどうかを判定する(ステップS6)。それらが取得できた場合は、対応するRTCボード44が存在するとみなして、RTC26のカウント値を4だけインクリメントする(ステップS7)。カウント値は、動作の初期状態においてあらかじめ0に設定されている。バージョンデータが取得できない場合は、対応するRTCボード44が存在しないとみなし、カウント値はインクリメントしない。
【0121】
次に、CPU45は、変数sが最後のスロットの番号SN=19に達したかどうかを判定する(ステップS8)。sがSNに満たない場合は、s=s+1とおいて(ステップS9)、s=SNとなるまで、ステップS4以降の動作を繰り返す。これにより、ネットワークキャビネット22−cのすべてのスロットについて、RTCボード44が存在するかどうかが調べられる。
【0122】
s=SNとなると、CPU45は、次に、変数cが最後のネットワークキャビネット22−CNの番号CNに達したかどうかを判定する(ステップS10)。cがCNに満たない場合は、c=c+1とおいて(ステップS11)、c=CNとなるまで、ステップS2以降の動作を繰り返す。これにより、すべてのネットワークキャビネット22−iの各スロットについて、RTCボード44が存在するかどうかが調べられ、RTC26の総数が求められる。
【0123】
c=CNとなると、SCANE31は、次に、RTCボード44が存在するすべてのネットワークキャビネット22−iまたはスロットについて、対応するCER35またはSER33のビットに1を設定し、他のビットに0を設定して(ステップS12)、動作を終了する。これにより、並列計算機に実装されたすべてのRTCボード44がスキャンループに組み込まれる。
【0124】
図32は、スキャンループが形成された後の接続試験におけるSCANE31およびCPU45の動作フローチャートである。あるRTC26の出力ポートは、そのRTC26または他のRTC26のいずれかの入力ポートに接続される。接続試験では、これらの出力ポートと入力ポートの接続関係が調べられる。
【0125】
この接続試験は、ネットワークサイズから決められるネットワーク接続関係表をもとにして、RTC26の入出力ポートを操作しながら行われる。このような試験方法は、Boundary-Scan と呼ばれ、試験対象となる入出力ポートの集合は、Boundary-Scan flip-flop (BSFF)と呼ばれる。
【0126】
図32において、SCANE31とCPU45は、まず未接続のRTC26がないかどうかを確認し(ステップS13)、RTC26間の接続誤りがないかどうかを確認して(ステップS14)、動作を終了する。ステップS13の確認動作のフローチャートは図33のようになり、ステップS14の確認動作のフローチャートは図34のようになる。
【0127】
図33において、SCANE31は、まずすべてのRTC26の出力ポートのバッファに全ビットが1のデータをスキャンインし(ステップS21)、すべてのRTC26の入力ポートのバッファからデータをスキャンアウトする(ステップS22)。スキャンアウトされたデータはSDRに格納される。
【0128】
次に、CPU45は、SDRの内容を参照して、すべてのRTC26の入力ポートのデータの全ビットが1かどうかを判定する(ステップS23)。そして、1つでも0のビットがあれば、未接続のRTC26があるとみなし、エラー出力を行って(ステップS27)、動作を終了する。
【0129】
全ビットが1であれば、SCANE31は、次に、すべてのRTC26の出力ポートのバッファに全ビットが0のデータをスキャンインし(ステップS24)、すべてのRTC26の入力ポートのバッファからデータをスキャンアウトする(ステップS25)。
【0130】
次に、CPU45は、すべてのRTC26の入力ポートのデータの全ビットが0かどうかを判定する(ステップS26)。そして、1つでも1のビットがあれば、未接続のRTC26があるとみなし、エラー出力を行って(ステップS27)、動作を終了する。
【0131】
全ビットが0であれば、未接続のRTC26はないとみなして、未接続確認を終了し、図34の接続誤り確認を開始する。
図34において、SCANE31は、まずすべてのRTC26の出力ポートのバッファに、0、1、2、3、・・・のようにシーケンシャルに変化するデータをスキャンインする(ステップS31)。このデータの入力には、SAMPLE/PRELOADインストラクションが用いられる。
【0132】
次に、SCANE31は、すべてのRTC26の入力ポートのバッファからデータをスキャンアウトする(ステップS32)。このデータの読み出しには、EXTESTインストラクションが用いられる。
【0133】
次に、CPU45は、ネットワーク接続関係表を参照して、すべてのRTC26の出力ポートのデータが、それぞれ、対応する接続先の入力ポートに正しく伝搬しているかどうかを調べる(ステップS33)。ネットワーク接続関係表は、例えば図10のRAM59に格納され、すべての出力ポートと入力ポートの接続関係を保持している。
【0134】
もし、ある出力ポートのデータが接続先の入力ポートのデータと一致しなければ、CPU45は、それらのポート間の接続が誤っているとみなして、エラー出力を行い(ステップS34)、動作を終了する。そして、すべての対応するポート間でデータが一致すれば、接続は正しいものとみなして、接続試験を終了する。
【0135】
SCANE31とSCANB32を利用すれば、上述のネットワークサイズの検出と接続試験以外にも、RTC26の動作の設定やモニタを行うことが可能になる。ここで、RTC26の動作の設定およびモニタの例を説明する。
【0136】
RTC26の動作の設定は、上述のコマンドSETIRを用いてRTC26内のインストラクションレジスタをセットすることにより行われる。SETIRの引数としては、上述のIRT、IRO、WCHN、TCHN、およびLOOPが用いられる。このときのCPU45とSCANE31の動作は、次のようになる。
(a)CPU45は、前のコマンドが終了するまで待つ。
(b)CPU45は、SCANE31のIRR86に、IRTとIROを設定する。
(c)CPU45は、SCANE31のTGETRにWCHNとTCHNを設定する。
(d)CPU45は、SCANE31のLOOPRにLOOPを設定する。
(e)CPU45は、SCANE31のCMDRの下位4ビットに、SETIRのコード0001を設定する。
(f)CPU45は、CMDRのビット31のCmpに1を設定し、スキャンをリセット&スタートさせる。これにより、SCANE31は、スキャンループ内においてLOOPで指定されたビット数だけIRT/IROをシフトし、シフトが終了するとCMDRのCmpに0を設定する。
(g)CPU45は、CMDRのCmpが0になるまで待つ。
(h)CPU45は、エラーチェックを行う。
【0137】
こうして、SCANE31によりコマンドSETIRが実行され、TCHNにより指定されたRTC26のインストラクションレジスタにインストラクションIRTが設定され、他のRTC26のインストラクションレジスタにインストラクションIROが設定される。そして、各RTC26は、設定されたインストラクションを実行する。さらに、SETDRを用いれば、RTC26のデータレジスタにデータを設定することもできる。
【0138】
また、RTC26の動作のモニタとは、定期的にRTC26内のレジスタのデータを読み出すことにより、並列計算機の状態を監視することを意味する。例えば、RTC26の通信状態を表すレジスタRTCLEDのモニタを行う場合、CPU45とSCANE31の動作は次のようになる。
(a)CPU45は、動作の設定の場合と同様にして、IRT=IR LED、IRO=BYPASS、WCHN=TCHN=全RTC数、LOOP=8*WCHNとして、コマンドSETIRを発行する。IR LEDは、RTC26内のレジスタRTCLEDの内容の読み出しを指示するIRコマンドである。このSETIRの実行により、すべてのRTC26のインストラクションレジスタにIR LEDが設定され、RTCLEDのデータが読み出せる状態になる。
(b)CPU45は、SETIRの終了を待つ。
(c)CPU45は、SCANE31のSDRに、データINITDATAを設定する。スキャン終了時にこれと同じデータがSDRにあれば、スキャンが正常に終了したことが確認できる。
(d)CPU45は、SCANE31のTGETRに、WCHN=TCHN=全RTC数を設定する。
(e)CPU45は、SCANE31のLOOPRに、LOOP=32*(WCHN+1)を設定する。
(f)CPU45は、SCANE31のCMDRの下位4ビットに、SNSDRのコード0111を設定する。
(g)CPU45は、CMDRのCmpに1を設定し、スキャンをリセット&スタートさせる。
(h)SCANE31は、1つのRTC26からRTCLEDのデータをSDRに読み出す毎に、CMDRのビット29のPausに1を立てて、ポーズ状態となる。
(i)SCANE31は、SDRの内容を読み出して、ネットワークキャビネット22−i上のLEDに表示する。
(j)(h)と(i)の動作を、CMDRのCmpが0になるまで繰り返す。
(k)CPU45は、最後に読み出したSDRの内容が最初に設定したINITDATAと同じであるかどうかを確認し、エラーチェックを行う。
【0139】
このような通信状態のモニタをシステム制御と並行に実行することで、並列計算機が処理を行っている間でも、常にRTC26の通信状態を把握することが可能になる。また、IRTに他のIRコマンドを設定すれば、通信状態だけでなく、他の任意の内部状態を表すレジスタのデータを処理中に読み出すことも可能である。モニタ対象の各レジスタには、その読み出し用の特定のIRコマンドがあらかじめ割り当てられている。
【0140】
上述の動作の設定やモニタで利用されるJTAGスキャンの制御方法を、図35を参照しながらさらに説明する。図35は、SCANE31、SCANB32、およびRTC26により構成されるJTAGスキャンループの例を示している。ここでは、SCANB32は省略されている。
【0141】
図35において、RTC26は、インストラクションを格納するインストラクションレジスタ(IR)111、データを格納するデータレジスタ(DR)112、バイパスレジスタ(Bypass)113、およびTAPコントローラ(TAPC)114を含む。
【0142】
SCANE31は、スキャンループ内のすべてのRTC26のTAPコントローラ114を、信号TMSにより同時に制御する。TAPコントローラ114は、信号TMSによりその状態を変化させる有限状態機械である。
【0143】
このTAPコントローラ114の状態によって、RTC26内のインストラクションレジスタ111から成るスキャンチェーンと、データレジスタ112から成るスキャンチェーンのうち、どちらがシフトするかが決定される。各RTC26は同時に制御されるため、すべてのRTC26がインストラクションレジスタ111をシフトする状態(shift−ir)にあるか、あるいはすべてのRTC26がデータレジスタ112をシフトする状態(shift−dr)にある。
【0144】
インストラクションレジスタ111およびデータレジスタ112の設定動作は、次のようになる。
(a)SCANE31は、信号TMSを用いて、TAPコントローラ114を状態shift−irに設定する。
(b)SCANE31は、SETIRを実行して、各RTC26のインストラクションレジスタ111をシフトする。このとき、ターゲットのRTC26にはIRTが設定され、他のRTC26にはIROが設定されるように、IRR86のデータを選択してTDOから出力する。これにより、ターゲットのRTC26のインストラクションを特定の値に設定することができる。
【0145】
例えば、ターゲットが右から2番目の位置1にあるRTC26の場合、2回目のシフト時にIRR86からIRTの値を出力すればよい。そこで、WCHN=4、TCHN=1と設定しておけば、2回目のシフト時にIRTが選択され、他のシフト時にはIROが選択される。
【0146】
インストラクションレジスタ111をシフトすることで、例えば、ターゲットのRTC26にIRT=SELECT−DRを設定し、他のRTC26にIRO=BYPASSを設定することができる。SELECT−DRは、データレジスタ112を指定するIRコマンドであり、BYPASSは、1ビットのバイパスレジスタ113を指定するIRコマンドである。BYPASSが設定されると、インストラクションレジスタ111の全ビットが1になる。
(c)(b)でSELECT−DRをターゲットのRTC26に設定し、BYPASSを他のRTC26に設定した後、SCANE31は、SETDRを実行する。これにより、ターゲットのRTC26のデータレジスタ112の値のみがシフトされて、その値が新たに設定される。設定値は、SCANE31のSDRから出力される。
【0147】
また、図35のスキャンループを利用して、各RTC26内の不図示のレジスタRTCLEDに格納された通信状態をモニタする場合の動作は、次のようになる。他の内部状態をモニタする場合も同様である。
(a)CPU45は、SCANE31のIRR86にIRTとIROを設定する。IRTにはIR LEDが設定され、IROにはBYPASSが設定される。また、SCANE31のTGETRに、TCHN=WCHN=4を設定する。
(b)次に、CPU45は、SCANE31のCMDRの下位4ビットにSETIRを設定して、スキャンを開始する。このとき、TAPコントローラ114は状態shift−irに設定される。ここでは、TCHN=WCHNであるので、IRR86のIRTのみが使用される。したがって、IROのデータに関係なく、すべてのRTC26のインストラクションレジスタ111にIR LEDが書き込まれる。
(c)インストラクションレジスタ111にIR LEDが設定されると、RTC26は、そのコマンドに従って、不図示のRTCLEDに格納された通信状態データを読み出し、データレジスタ112に書き込む。
(d)CPU45は、SCANE31のSDRにINITDATAを設定し、CMDRの下位4ビットをSNSDRに設定して、スキャンを開始する。これにより、TAPコントローラ114はshift−drの状態に設定される。
(e)SCANE31による最初のスキャン動作で、データが矢印の方向へ32ビットずれることにより、右端の位置0にあるRTC26のデータレジスタ112の内容が、SDRにシフトインされる。
【0148】
このとき、同時に、SDRの内容は位置3のRTC26のデータレジスタ112に入り、そのデータレジスタ112の内容は位置2のRTC26のデータレジスタ112に入り、そのデータレジスタ112の内容は位置1のRTC26のデータレジスタ112に入り、そのデータレジスタ112の内容は位置0のRTC26のデータレジスタ112に入る。
(f)SCANE31は、SDRの内容を読み出して、ネットワークキャビネット22−i上のLEDに表示する。
(g)SCANE31は、(e)と(f)の動作をさらに4回繰り返して、32ビットシフトする毎にLED表示を行う。これにより、データが一周し、すべてのRTC26の通信状態が順に表示される。
(h)CPU45は、SDRの内容を、最初に設定したINITDATAと比較し、それらが同じであればエラーチェック結果をOKとして、動作を終了する。
【0149】
このように、本実施形態のSCANE31は、従来のスキャンエンジンのような検査目的のみに限らず、実際の運用時においてRTC26内のレジスタの内容をモニタすることができる。このため、運用中のRTC26の性能を知ることができる。また、開発中のRTC26のモニタを行うことで、そのデバッグが容易になる。
【0150】
本実施形態では、レジスタの読み出しをSCANE31とSCANB32の階層構造を利用して行うため、RTC26の数が多数になっても配線はそれほど増やす必要がない。したがって、超並列計算機のような大規模構成のネットワーク計算機の場合でも、読み出しのためのコストを低く押さえられる。
【0151】
また、通常、大規模になればスキャンエンジンによる読み出し時間がかかり、システム運用中のデータ収集は難しくなる。しかし、本実施形態では動的かつ階層的に接続を変更することで、データ収集の範囲を限定することができ、その範囲内で高速なデータの読み出しが可能である。
【0152】
次に、図36から図57までを参照しながら、図9のワークステーション46上で使用されるスキャンサブコマンドと、それらの中で用いられる関数について説明する。
【0153】
図36は、スキャン制御に関するスキャンサブコマンドのコマンドインタフェースを示している。これらのスキャンサブコマンドは、あらかじめC言語で書かれた関数としてプログラミングされている。
【0154】
図36において、set irはRTC26のインストラクションレジスタ111を設定するサブコマンドであり、set drはRTC26のデータレジスタ112を個別に設定するサブコマンドであり、set brddrはすべてのデータレジスタ112を同時に設定するサブコマンドである。
【0155】
また、sense drはデータレジスタ112の内容を読み出すサブコマンドであり、set cmはCER35のデータMASKを設定するサブコマンドであり、set smはSER33のデータMASKを設定するサブコマンドである。
【0156】
また、get rtc versionはRTC26の内部レジスタからバージョンデータを読み出すサブコマンドであり、get rtc statusはRTC26の内部レジスタからステータスデータを読み出すサブコマンドである。
【0157】
また、get rtc numberはネットワーク27(T−net)上に存在するRTC26の数(ネットワークサイズ)を得るサブコマンドであり、set tnet idはネットワーク27のIDを設定するサブコマンドであり、check tnet connectionはネットワーク27の接続試験を行うサブコマンドである。
【0158】
また、shift drは、set drと同様に、データレジスタ112を設定するサブコマンドであり、可変長データをシフトする場合に用いられる。これに対して、set drは固定長データをシフトする場合に用いられる。
【0159】
set ir、set dr、set brddr、sense drは、それぞれ、図30のコマンドSETIR、SETDR、BRDDR、SNSDRを図18のCMDRのCMDに設定する指示を含んでいる。また、get rtc version、get rtc status、get rtc number、set tnet id、check tnet connectionは、複数のサブコマンドを組み合わせて実現される。
【0160】
また、図36のサブコマンドのパラメータのうち、irt、iro、wchn、tchn、loop、およびdataは、それぞれ、上述のIRT、IRO、WCHN、TCHN、LOOP、およびDATAと同じデータを表す。さらに、CMaskおよびSMaskは、それぞれ、CER35およびSER33のデータMASKを表し、lsはネットワーク27のIDを表す。
【0161】
これらのサブコマンドがワークステーション46からクロックボード42に入力されると、CPU45は、それらに記述された指示に従って、SCANE31内のレジスタファイル部82のデータを設定する。すると、SCANE31は、CMDRのCMDに設定されたコマンドに対応する動作を行う。これにより、ネットワークサイズの検出、ネットワーク27の接続試験、RTC26の動作の設定およびモニタ等の制御が実現される。
【0162】
これらの各サブコマンドに対しては、CPU45より[“ok”+リプライ文字列]あるいは[“ng”+エラーコード文字列]の形式のリプライが返される。ただし、サブコマンドのオーバーラップはできない。
【0163】
図37はset irのプログラムの一例を示しており、図38はset drのプログラムの一例を示しており、図39はset brddrのプログラムの一例を示しており、図40、41はsense drのプログラムの一例を示しており、図42はset cmのプログラムの一例を示しており、図43はset smのプログラムの一例を示している。
【0164】
また、図44はget rtc versionのプログラムの一例を示しており、図45はget rtc statusのプログラムの一例を示しており、図46はget rtc numberのプログラムの一例を示している。
【0165】
さらに、図47はcheck tnet connectionのプログラムの一例を示しており、図48はset tnet idのプログラムの一例を示しており、図49、50はshift drのプログラムの一例を示している。これらのプログラムは、動作概念の理解のために参照されることを前提として記述されている。
【0166】
例えば、図37のset irのプログラムにおいて、/*から*/まではコメント文を表し、4行目は各パラメータの定義を表している。また、8行目のSE CMDRはSCANE31のCMDRの内容を表し、SE CMDR CMPはCMDRのデータCmpを表し、SE IOは書き込み動作を表す。したがって、8行目は全体として、CMDRのCmpに書き込みが行われない限り待機することを指示している。
【0167】
また、13行目のSE IO(SE IRR86)は、IRR86にIRTおよびIROの値を設定することを表し、20行目のSE CMDR CMD SETIRは、CMDにSETIRのコマンドコードを設定することを表す。そして、21行目でSETIRが実行開始されて、IRTまたはIROがRTC26のインストラクションレジスタ111にスキャンインされる。
【0168】
また、28〜33行目は、CMDRのErrが1のとき、[“ng”+エラーコード文字列]の形式のエラーメッセージを出力し、CMDRのErrが0のとき、[“ok”+リプライ文字列]の形式のリプライを出力することを表している。
【0169】
図38から図50に示した他のプログラムも、同様にして、SCANE31のレジスタファイル部82を書き換えることで、SCANE31の動作を制御する。図44のget rtc versionのプログラムでは、例えば、18行目にset irが含まれており、19行目にsense drが含まれている。図45から図48までに示したプログラムにも、いくつかのサブコマンドが含まれていることが分かる。
【0170】
次に、これらのプログラムで用いられているサブコマンド以外の関数について説明する。
まず、例えば図49の18行目で用いられているshift right(char *org,char *new,int shift)は、文字列org(16進コード)を、msb(most significant bit)からlsb(least significant bit )に向かって、shift回だけシフトした結果を文字列newに格納する関数である。
【0171】
この関数は可変長データをシフトする関数shift drの内部関数であり、lsb方向から32ビット単位でデータをシフトするために、図51に示すように、文字列orgのデータを右詰めする。例えば、shift right(“0123”,“0091”,1)のように用いられる。
【0172】
また、例えば図50の50行目で用いられているhtoi(char *data,int adjust,int val)は、文字列data(16進コード)を下位adjustビット分だけ変換し、上位はvalでマスクする関数である。
【0173】
この関数もshift drの内部関数であり、shift rightにより右詰めされたデータのうち最後(左端)のデータの上位ビットを、図52に示されるようにマスクする。例えば、htoi(“1234”,10,0xf500)==0xf634のように用いられる。
【0174】
また、例えば図44の14行目で用いられているtoi(char *s)x=toi(s)は、先頭文字列が“0x”で始まっていれば16進コードとして扱い、そうでなければ10進コードとして扱う関数である。この関数は、if(sscanf(s,”0x%x”,&x)!=1)sscanf(s,”%d”,&x)のように書ける。
【0175】
また、例えば図44の18行目で用いられているtoa(int i)は、整数iを文字列に変換する関数である。
また、例えば図47の18行目で用いられているset allf(char*data,int size)は、T−netのポートのすべてにデータ1を与える関数であり、例えば図47の24行目で用いられているset all0(char *data,int size)は、T−netのポートのすべてにデータ0を与える関数である。
【0176】
T−netのポートは、図53に概念的に示される関数rtc bsfにより定義される。図53において、wi、ni、ei、およびsiはRTC26の入力ポートを表し、wo、no、eo、およびsoは出力ポートを表す。
【0177】
また、例えば図47の29行目で用いられているset seq(char *data,int size)は、T−netのポートにシーケンシャルな番号を割り振っていく関数である。例えば、wo、no、eo、soの各ポート毎にシーケンシャルな番号が与えられる。
【0178】
また、例えば図47の32行目で用いられているcheck connect(char *data1,char *data2)は、T−netの接続関係を格納したデータベースtnet connect list(ネットワーク接続関係表)をもとに、data1とdata2を比較し、ポート間の接続関係が合っているかどうかを確認する関数である。
【0179】
data1は、RTC26の出力ポートにスキャンインされたデータを表し、data2は、RTC26の入力ポートからスキャンアウトされたデータを表す。接続関係は、RTC26の数とポート構成の大きさとによって決まる。
【0180】
ここで簡単のために、ポートサイズを8ビットとして、2個のRTC121、122の各ポートが図54に示すように接続されており、その接続関係がtnet connect listに格納されているとする。
【0181】
このとき、図54より、RTC121のポートwoとポートeiが接続されているはずなので、そのポートwoにデータ00をシフトインすると、ポートeiにそのデータ00がシフトアウトされる。同様に、RTC121のポートnoとRTC122のポートsiが接続されているはずなので、RTC121のポートnoにデータ01をシフトインすると、RTC122のポートsiにそのデータ01がシフトアウトされる。
【0182】
このようにして、RTC121の出力ポートwo、no、eo、so、RTC122の出力ポートwo、no、eo、soに、それぞれ、シーケンシャルなデータ00、01、02、03、04、05、06、07をシフトインした場合、data1とdata2の関係は図55に示すようになる。図55において、“xx”および“−”はドントケアを表す。
【0183】
図55では、各出力ポートにシフトインされたデータが、それに接続された入力ポートに現れていることが分かる。もし、入出力ポート間のデータの対応関係が図54の接続関係と一致しなければ、接続に誤りがあるとみなされる。check connectは、接続関係が正しいとき1を出力し、正しくないとき0を出力する。
【0184】
また、例えば図48の20行目で用いられているset tnetid(char *data,int size)は、T−netのIDをストリング形式でdataに格納する関数である。sizeはdataの大きさを表す。T−netのIDは、データベース配列tnet id tableとRTC26の数rtc countから得られる。例えば、配列tnet id tableは図56のように定義され、関数set tnetidは図57のように定義される。
【0185】
次に、図4に示した信号SFTを用いたSCANB32の制御方法について補足する。SCANB32のTAPコントローラに入力する信号TMSの値は、図58のプログラムに定義されるように、SCANE31からの信号TMSとSFTの論理積になっている。
【0186】
したがって、SFT=1の場合には、SCANE31からのTMSがそのままSCANB32のTAPコントローラに入力し、JTAGスキャンの制御はSCANB32に対して行われる。このとき、SCANE31との間の信号TDI、TDOはSER33に接続され、SER33のデータがシフトされる。
【0187】
一方、SCANB32からRTC26への信号TMSは常に0となり、RTC26のTAPコントローラ114はデータ0でマスクされるため、状態遷移を行わない。図59は、このようなTAPコントローラ114に対するマスク制御のプログラムを示している。
【0188】
また、SFT=0の場合には、SCANB32のTAPコントローラへの入力は常に0となり、その状態は変化しない。一方、RTC26への信号TMSは1のままなので、RTC26のTAPコントローラ114はデータ1でマスクされ、JTAGスキャンの制御はRTC26に対して行われる。このとき、SCANE31との間の信号TDI、TDOはスイッチングマトリクス83に接続され、RTC26のデータがシフトされる。
【0189】
次に、図60から図63までを参照しながら、図29のスイッチングマトリクス83の制御方法について補足する。
図60は、ハードウェア記述言語の一種であるverilogで書かれた1つのスイッチングマトリクス83の動作定義を示しており、図61は、図60で用いられている信号名と配線の対応関係を示している。ここでは、信号o[i]、i[i]、およびemsk[i](i=0,1,2,3)は、それぞれ信号UTDOi、UTDIi、およびSEiに対応し、信号o0[i](i=0,1,2,3)は、セレクタ102に対する入力信号を表す。
【0190】
信号o0[0]はスキャン入力si=SINに一致するが、他の信号o0[i](i=1,2,3)は、emsk[i−1]の値に応じてi[i−1]またはo0[i−1]となる。信号o[i]は、emsk[i]の値に応じてo0[i]または1となる。また、信号soは、スキャン出力SOUTを表し、emsk[3]の値に応じてi[3]またはo0[3]となる。
【0191】
本実施形態では、SER33またはCER35のデータをemsk[i]として入力することで、スイッチングマトリクス83のセレクタ101、102を制御し、loopiの繋ぎ替えを行っている。例えば、図27のSCANB32の場合は5つのスイッチングマトリクス83を備えており、その動作は図62のように定義される。
【0192】
この場合、sw0、sw1、sw2、sw3、sw4が、それぞれSWMAT0、SWMAT1、SWMAT2、SWMAT3、SWMAT4に対応する。また、図63に示されるように、信号out[i]、in[i]、およびemsk[i](i=0,1,...,19)は、それぞれ信号UTDOi、UTDIi、およびSEiに対応する。emsk[i]としては、図28のデータMASK[i](i=0,1,...,19)が用いられる。
【0193】
また、信号cii、coi(i=0,1,2,3,4)は、それぞれスイッチングマトリクスswiへの入力信号、swiからの出力信号を表す。各スイッチングマトリクスswiは図60の定義に基づいて動作し、信号ciiを受け取って信号coiを出力する。
【0194】
信号ci0はスキャン入力si=SINに一致するが、他の信号cii(i=1,2,3,4)は、前段のスイッチングマトリクスsw(i−1)に入力する4つの制御信号emsk[4i−1:4(i−1)]の論理和の値に応じて、co(i−1)またはci(i−1)となる。
【0195】
例えば、セレクタ103は、emsk[3]、emsk[2]、emsk[1]、およびemsk[0]の論理和|emsk[3:0]が1の時、信号co0をci1として出力し、|emsk[3:0]が0の時、信号ci0を出力する。
【0196】
さらに、信号soは、最終段のスキャン出力SOUTを表し、emsk[19:16]の論理和の値に応じてco4またはci4となる。こうして、SER33のデータMASK[i]を用いて、5つのスイッチングマトリクス83を制御し、最大20個のloopiを繋ぎ替えることができる。
【0197】
次に、図2の並列計算機におけるJTAGスキャン試験の初期化に要する時間について、検討を行う。
JTAGスキャンに要する時間Tjtagは、JTAGクロックTCKの周波数fと、設定コマンド数nC 、そのコマンドが必要とするビット数bnc、およびRTCの数nr の関数によって表現できる。
【0198】
まず、JTAGクロックの上限値fmax はSCANE31とSCANB32内にあるスイッチングマトリクス83の遅延値(ディレイ)と、ケーブルによる遅延値を考慮することによって算出できる。
【0199】
図64は、JTAGクロックに影響するディレイの存在位置とその見積もり値を示している。図64において、RTC123のTDOからRTC124のTDIまでのディレイがクロックサイクルの長さτの1/2以内に収まる必要がある。このディレイは、30×4+130×2+100=480(ns)であるから、τは少なくとも480×2=960(ns)以上必要になる。よって、最大周波数はf〜1(MHz)となる。
【0200】
次に、SCANE31のコマンドの実行時間について考える。SCANE31のコマンドには、図36に示したスキャンサブコマンドのほかに、次のようなものがある。set clock等、SCANE31のレジスタファイル部82のリード/ライト(R/W)で実現できるコマンド(これをREGと記す)、set tnet rtcflow等、RTCのレジスタのR/Wで実現できるコマンド(これをRTCREGと記す)、check tnet connection等、RTCのBSFFをスキャンするコマンド(これをRTCBSFと記す)である。
【0201】
これらのコマンドを実現するプリミティブとして、図36のset ir、set dr、およびshift drを使用する。それぞれのプリミティブの所要ビット数nir、ndr、nsft は、図65に示すようになる。
【0202】
また、コマンドREG、RTCREG、RTCBSFのそれぞれの所要ビット数は、図66に示すようになる。図66において、出現回数は、初期化時に各コマンドが使用される回数を表している。この計算によれば、初期化に要する全ビット数は2300×nr 程度となる。
【0203】
JTAGクロックTCKの周波数は、上述したように、最大1MHz程度であるから、初期化に要する時間は、およそTjtag=2.3×nr (ms)となる。さらに、CPU45内部での演算時間を考慮してTjtagの値に余裕を持たせた場合でも、nr =1024(台)に対して、所要時間は4秒程度と予測される。
【0204】
SCANE31をドライブするCPU45の周波数の影響は、fが比較的低い間は小さい。CPU45の周波数を8MHzとした場合、32ビットシフトで256クロックあり、ポーリングのオーバーヘッドは無視できる。
【0205】
JTAGスキャンシステムとして考えた場合には、ワークステーション46やSCU ADPボード43でのオーバヘッドを考慮する必要がある。オーバヘッドには、シリアル通信のハンドリングオーバヘッドと、データ転送レートによるオーバヘッドがあるが、ハンドリングオーバヘッドを明確にするのは難しい。
【0206】
今、データ転送レートを19200bpsとすると、10バイト(80bit)の1コマンドパケットを転送するのに4ms必要である。よって、2回のstore−and−forward動作を考えれば、データ転送レートによるオーバヘッドは4×2×2〜20(ms)程度になると考えられる。
【0207】
例えば、コマンドget rtc statusにおいては、リプライステータスデータは32×nr ビットであり、所要時間は1転送あたり1.7msであるから、コマンドの実行時間は、T(nr ) =4×2+(4+1.7×nr )×2(ms)となる。nr =1024の場合は、T(1024)〜3.5(s)である。この時間をより短くするために、フォーマットを変更することも考えられる。
【0208】
また、クロックボード42とSCU ADPボード43の間の通信、およびSCU ADPボード43とRTCの間の通信は、コマンドバイト数が少ないため、ハンドリングソフトウェアのオーバヘッドのみが問題になると考えられる。1コマンドあたりのハンドリングソフトウェアのオーバヘッドをtsoとすると、所要時間は、Tall =Tjtag+tso×nC となる。
【0209】
ところで、図3に示したスキャンシステムでは、2階層のパスからスキャンパスを構成しているが、複数のSCANBを階層的に接続することで、さらに多くの階層を持つ多階層のスキャンパスを構成することもできる。
【0210】
図67は、このような多階層のスキャンパスを構成する多階層のSCANBを示している。図67において、SCANEの下には3階層のSCANBがJTAGの信号線で接続され、最下層のSCANBにはRTCが接続されている。SCANEとSCANBは、それぞれ、スイッチングマトリクス83のスイッチを切り替えて、それより下位のパスを接続/切断する。
【0211】
このように、SCANBを多階層にすることで、さらに多くのRTCに対応することが可能になる。将来的には、10万台以上のPEを備える並列計算機の実現も考えられている。
【0212】
以上説明した実施形態では、並列計算機のRTCのJTAGスキャンについて説明したが、本発明のスキャン試験は、複雑な接続関係を有する任意のLSIチップのネットワークに適用することができる。この場合も、SCANE31とSCANB32を用いて階層的なスキャンパスを構成すれば、ネットワークサイズの検出、接続試験、LSIの動作の設定やモニタ等を効率よく行うことができる。
【0213】
また、ネットワークに接続されるLSIは必ずしもすべて同じ種類である必要はなく、様々な種類のLSIが混在していてもかまわない。この場合、LSIの種類毎に、それに適した構成のSCANBを用意して、1つのSCANBには同じ種類のLSIを接続するようにすれば、制御が容易になる。
【0214】
ここで、通常のスキャン制御によるスキャン試験と本発明によるスキャン試験の違いをまとめてみる。まず、通常のスキャン制御による試験では、すべてのLSIをスキャンループに入れるため、試験に時間がかかる。例えば、1つのLSIのデータレジスタに32ビットのデータをセットするために、他のLSIではバイパスレジスタを選択して1ビットのシフトを行う方法では、他のLSIを無視するためのオーバーヘッドは1LSIあたり3%程度になる。
【0215】
したがって、30個のLSIをバイパスする場合は、32ビットのシフト動作の約2倍の時間が必要となる。また、JTAGスキャンでLSIのインストラクションレジスタに8ビットのインストラクションコードをセットする場合、全LSIの数をNとすると、8Nビットのシフトを行わなければならない。Nが大きくなると、その所要時間は膨大なものになる。
【0216】
これに対して、階層的にスキャンパスを構成可能な本発明では、不要なスキャンチェーンを切り離して、全体のスキャンパスを短くすることが可能であり、JTAGスキャンに必要な時間を短縮できる。
【0217】
また、通常のスキャン制御による試験では、スキャンループは回路設計時に決定されており、変更することができない。このため、システム構成に自由度がない。JTAGスキャンの場合、自由度を増すために、信号TDOをバス接続にして複数のLSIで共用することができるが、そのためには信号TMSをそれぞれ独立に制御する必要がある。TMSを独立に制御するのであれば、そのハードウェアオーバーヘッドは本発明のSCANB32を用いる場合と変わらなくなる。また、バス接続にした場合、同時に接続できる信号線は限られる。
【0218】
これに対して、本発明では、LSI間の接続を自由に変更できるため、並列計算機のネットワークのようにコンフィグレーションが変化する場合においても、接続を変更するだけで同じスキャン試験を行うことができる。
【0219】
【発明の効果】
本発明によれば、並列計算機等の巨大なシステムにおいて、自由度の高い柔軟なスキャンパスを構成することができる。これにより、JTAG−SCANのようなスキャン試験の対象を一部のLSIに限定して、効率的かつ安価なスキャン試験を実施することができる。
【0220】
また、このようなスキャンパスを利用して、LSIの動作の設定やモニタを効率よく行うことも可能になる。
【図面の簡単な説明】
【図1】本発明のスキャン装置の原理図である。
【図2】並列計算機の構成図である。
【図3】本発明のJTAG試験を示す図である。
【図4】スキャンバッファの信号生成論理を示す図である。
【図5】第1の信号生成を示す図である。
【図6】第2の信号生成を示す図である。
【図7】キャビネットチェーンの接続方法を示す図である。
【図8】スロットチェーンの接続方法を示す図である。
【図9】ネットワークキャビネットの構成図である。
【図10】クロックボードの構成図である。
【図11】クロック部の信号を示す図である。
【図12】フロントコネクタの信号を示す図である。
【図13】SCU ADPボードの構成図である。
【図14】RTCボードの構成図である。
【図15】スキャンエンジンの構成図である。
【図16】レジスタアドレスマップを示す図である。
【図17】クロックコントロールレジスタを示す図である。
【図18】コマンド/ステータスレジスタを示す図である。
【図19】スキャンエンジンのコマンドコードを示す図である。
【図20】キャビネットチェーンイネーブルレジスタを示す図である。
【図21】スキャンデータレジスタを示す図である。
【図22】IRレジスタを示す図である。
【図23】TARGETレジスタを示す図である。
【図24】LOOPレジスタを示す図である。
【図25】MISCレジスタを示す図である。
【図26】ディスプレイ制御レジスタを示す図である。
【図27】スキャンバッファの構成図である。
【図28】スロットチェーンイネーブルレジスタを示す図である。
【図29】スイッチングマトリクスの構成図である。
【図30】スキャンエンジンのコマンドによる動作例を示す図である。
【図31】ネットワークサイズ検出の動作フローチャートである。
【図32】接続試験の動作フローチャートである。
【図33】未接続確認の動作フローチャートである。
【図34】接続誤り確認の動作フローチャートである。
【図35】JTAGスキャンループの構成例を示す図である。
【図36】コマンドインタフェースを示す図である。
【図37】set irのプログラムを示す図である。
【図38】set drのプログラムを示す図である。
【図39】set brddrのプログラムを示す図である。
【図40】sense drのプログラムを示す図(その1)である。
【図41】sense drのプログラムを示す図(その2)である。
【図42】set cmのプログラムを示す図である。
【図43】set smのプログラムを示す図である。
【図44】get rtc versionのプログラムを示す図である。
【図45】get rtc statusのプログラムを示す図である。
【図46】get rtc numberのプログラムを示す図である。
【図47】check tnet connectionのプログラムを示す図である。
【図48】set tnet idのプログラムを示す図である。
【図49】shift drのプログラムを示す図(その1)である。
【図50】shift drのプログラムを示す図(その2)である。
【図51】文字列のシフト操作を示す図である。
【図52】データのマスク操作を示す図である。
【図53】ポートの定義を示す図である。
【図54】RTCの接続例を示す図である。
【図55】入出力ポートのデータを示す図である。
【図56】データベース配列を示す図である。
【図57】set tnetidの定義を示す図である。
【図58】信号TMSの定義を示す図である。
【図59】信号TMSによるマスク制御を示す図である。
【図60】1つのスイッチングマトリクスの動作定義を示す図である。
【図61】1つのスイッチングマトリクスの信号名を示す図である。
【図62】複数のスイッチングマトリクスの動作定義を示す図である。
【図63】複数のスイッチングマトリクスの信号名を示す図である。
【図64】JTAGクロックに影響するディレイの存在位置を示す図である。
【図65】スキャンサブコマンドと必要なビット数を示す図である。
【図66】初期化コマンドと必要なビット数を示す図である。
【図67】多階層のスキャンバッファを示す図である。
【図68】被試験システムを示す図である。
【図69】従来のJTAG試験を示す図である。
【符号の説明】
1、26、121、122、123、124 RTC
2、31 スキャンエンジン
11 スキャンパス構成手段
12 シフト手段
13 集積回路
14、27 ネットワーク
15 スキャンチェーン
16 集積回路スイッチ手段
17 制御手段
21−0、21−1、21−CN PEキャビネット
22−0、22−1、22−CN ネットワークキャビネット
23、45 CPU
24 メモリ
25 MSC
32 スキャンバッファ
101、102、103 セレクタ
33、35、86、87、111、112、113 レジスタ
34、91 コントローラ部
41 SCU MAINボード
42 クロックボード
43 SCU ADPボード
44 RTCボード
51 クロック部
52 CPU部
53、54、55 クロック発振源
56 コントローラ
57、58、72、73、74、92 バッファ
59 RAM
60 ROM
61 シリアルポート
62 タイマ
71 システムコントロールアダプタ
81 インタフェース部
82 レジスタファイル部
83 スイッチングマトリクス
84 スキャンクロック生成部
85、114 TAPコントローラ

Claims (1)

  1. 並列計算機における複数のルーティング・コントローラに対応する複数の集積回路を互いに接続して構成されるネットワークのスキャンパスを構成するスキャン装置であって、
    前記複数の集積回路のうち2つ以上の集積回路の信号線にそれぞれ接続され、各集積回路の信号線を切り替える複数の集積回路スイッチ手段と、
    前記複数の集積回路スイッチ手段の信号線に接続され、該複数の集積回路スイッチ手段の切り替え動作を制御することで、該複数の集積回路のうちの少なくとも1つ以上の集積回路を含む前記スキャンパスを構成する制御手段と、
    前記スキャンパスを用いて、該スキャンパスに含まれる集積回路が有する情報をシフトするシフト手段とを備え、
    各集積回路スイッチ手段は、各集積回路の信号線の切替を指示するための第1の切替データを保持する第1の格納手段と、該第1の切替データにより制御される第1のスイッチングマトリクス手段とを含み、
    前記制御手段は、前記集積回路スイッチ手段の信号線の切り替えを指示するための第2の切替データを保持する第2の格納手段と、該第2の切替データにより制御される第2のスイッチングマトリクス手段とを含み、該第2のスイッチングマトリクス手段により前記複数の集積回路スイッチ手段の信号線を切り替えることで、該複数の集積回路スイッチ手段のうちの少なくとも1つ以上の集積回路スイッチ手段を含む第1のパスを構成し、該第1のパスを用いて、前記第1の切替データを該1つ以上の集積回路スイッチ手段にスキャンインするとともに、該1つ以上の集積回路スイッチ手段に制御信号を出力し、
    前記1つ以上の集積回路スイッチ手段は、前記制御信号が特定の値のとき、それぞれ前記集積回路スイッチ手段の信号線を前記第1の格納手段に接続して、該第1の格納手段に前記第1の切替データを入力し、前記第1のスイッチングマトリクス手段により各集積回路の信号線を切り替えることで、1つ以上の集積回路からなる第2のパスを構成し、該第2のパスを該第1のパスに階層的に接続して、該集積回路スイッチ手段の信号線と該集積回路の信号線を含む前記スキャンパスを構成し、
    前記シフト手段は、前記並列計算機の運用中に前記スキャンパスを用いてインストラクションをシフトすることで、前記スキャンパスに含まれる集積回路内のインストラクションレジスタに、ターゲットとなる集積回路内のデータレジスタの値をシフトし他の集積回路内のデータレジスタの値をシフトしないインストラクションを設定することを特徴とするスキャン装置。
JP28854096A 1996-10-30 1996-10-30 ネットワークのスキャンパスを階層的に構成するスキャン装置および方法 Expired - Fee Related JP3791859B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP28854096A JP3791859B2 (ja) 1996-10-30 1996-10-30 ネットワークのスキャンパスを階層的に構成するスキャン装置および方法
US08/837,914 US5928374A (en) 1996-10-30 1997-04-11 Scanning device and method for hierarchically forming a scan path for a network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28854096A JP3791859B2 (ja) 1996-10-30 1996-10-30 ネットワークのスキャンパスを階層的に構成するスキャン装置および方法

Publications (2)

Publication Number Publication Date
JPH10134011A JPH10134011A (ja) 1998-05-22
JP3791859B2 true JP3791859B2 (ja) 2006-06-28

Family

ID=17731567

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28854096A Expired - Fee Related JP3791859B2 (ja) 1996-10-30 1996-10-30 ネットワークのスキャンパスを階層的に構成するスキャン装置および方法

Country Status (2)

Country Link
US (1) US5928374A (ja)
JP (1) JP3791859B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8248073B2 (en) 2007-04-06 2012-08-21 Nec Corporation Semiconductor integrated circuit and testing method therefor

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3403612B2 (ja) * 1997-06-05 2003-05-06 沖電気工業株式会社 スキャンパスネットの配線方法と半導体集積回路
JP2954192B1 (ja) * 1998-09-10 1999-09-27 日本電気アイシーマイコンシステム株式会社 テスト容易化半導体集積回路の設計方法
US6381643B1 (en) * 1999-11-08 2002-04-30 International Business Machines Corporation Mechanism and procedure for detecting switch mis-cabling
US6543018B1 (en) * 1999-12-02 2003-04-01 Koninklijke Philips Electronics N.V. System and method to facilitate flexible control of bus drivers during scan test operations
US6748564B1 (en) * 2000-10-24 2004-06-08 Nptest, Llc Scan stream sequencing for testing integrated circuits
JP4491174B2 (ja) * 2001-08-31 2010-06-30 富士通株式会社 アクセス制御装置及び試験方法
US7757029B2 (en) * 2001-10-17 2010-07-13 St-Ericsson Sa On the fly configuration of electronic device with attachable sub-modules
US6934898B1 (en) 2001-11-30 2005-08-23 Koninklijke Philips Electronics N.V. Test circuit topology reconfiguration and utilization techniques
US6760874B2 (en) * 2002-05-07 2004-07-06 Logicvision, Inc. Test access circuit and method of accessing embedded test controllers in integrated circuit modules
KR100880832B1 (ko) 2004-02-10 2009-01-30 삼성전자주식회사 코-디버깅 기능을 지원하는 반도체 집적회로 및 반도체집적회로 테스트 시스템
US7913002B2 (en) * 2004-08-20 2011-03-22 Advantest Corporation Test apparatus, configuration method, and device interface
US7386772B1 (en) * 2004-12-20 2008-06-10 Emc Corporation Test module for testing of electronic systems
JP4717027B2 (ja) * 2006-05-02 2011-07-06 富士通株式会社 半導体集積回路、テストデータ生成装置およびlsi試験装置
JP5076600B2 (ja) * 2007-03-30 2012-11-21 富士通セミコンダクター株式会社 性能試験システム及び性能試験方法
GB0712373D0 (en) * 2007-06-26 2007-08-01 Astrium Ltd Embedded test system and method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05264656A (ja) * 1992-03-19 1993-10-12 Fujitsu Ltd 回路機能検査処理方式
US5617420A (en) * 1992-06-17 1997-04-01 Texas Instrument Incorporated Hierarchical connection method, apparatus, and protocol
FR2737782B1 (fr) * 1995-08-11 1997-10-31 Deroux Dauphin Patrice Systeme electronique testable

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8248073B2 (en) 2007-04-06 2012-08-21 Nec Corporation Semiconductor integrated circuit and testing method therefor

Also Published As

Publication number Publication date
JPH10134011A (ja) 1998-05-22
US5928374A (en) 1999-07-27

Similar Documents

Publication Publication Date Title
JP3791859B2 (ja) ネットワークのスキャンパスを階層的に構成するスキャン装置および方法
US4860290A (en) Logic circuit having individually testable logic modules
DK166595B1 (da) Integreret kredsloeb med indbygget selvtest
JP3610095B2 (ja) 電気回路のストリームライン化(Streamlined)された同時試験方法と装置
US5173904A (en) Logic circuits systems, and methods having individually testable logic modules
US7426670B2 (en) Connecting multiple test access port controllers on a single test access port
USRE47864E1 (en) Series equivalent scans across multiple scan topologies
US6665828B1 (en) Globally distributed scan blocks
JPH02181676A (ja) 境界走査試験セル
JP3020035B2 (ja) 集積回路装置のテスト方法及び該方法でテストするのに好適な集積回路装置
JPS61223675A (ja) デジタル集積回路
JPS61217779A (ja) 組み込み自己検査機能をもつ集積回路に用いられる回路構成体
US7013415B1 (en) IC with internal interface switch for testability
US11680985B2 (en) Falling clock edge JTAG bus routers
JPS63243890A (ja) 半導体集積回路装置
US7036046B2 (en) PLD debugging hub
JPWO2008126471A1 (ja) 半導体集積回路およびその試験方法
EP0462328A1 (en) Test device for an electronic chip
US20030046625A1 (en) Method and apparatus for efficient control of multiple tap controllers
US20110209015A1 (en) Serial scan chain in a star configuration
US4965511A (en) Test circuit for logic ICS
US20230297534A1 (en) High Bandwidth IJTAG Through High Speed Parallel Bus
JP2023521705A (ja) マルチダイ集積回路をテストするための方法および装置
JPH032577A (ja) 試験回路
JP2004004047A (ja) 集積回路のための入力/出力特徴付けチェーン

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051011

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20051021

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: 20060328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060403

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110414

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110414

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120414

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130414

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140414

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees