Intermodule test across system bus utilizing serial test bus
This is a continuation of application Ser. No. 07/799,270, filed Nov. 27, 1991, now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     The present invention relates generally to computer systems and, more particularly, to a method for operating a serial test bus incorporated into a computer system including multiple modules interconnected to one another through at least one system bus to perform intermodule testing of the computer system across the system bus. 
     Computer systems constructed by interconnecting multiple modules for communication with one another over a system bus are well known in the art. Testing of these systems has of course been performed to determine whether any system faults result in erroneous communications between the modules. Such testing has been functional in that the working relationships between the various modules has been employed. For functional testing, signals stimulating various functions are written to the modules and their characteristic responses are monitored to determine proper operation of the modules. 
     Unfortunately, while some modules and signals are easy to test by means of functional testing, others are very difficult. For example, a memory module is easily tested by writing known data into the module, reading the data which was written and then restoring the memory. On the other hand, signals such as error signals generated by modules as the result of failures within the modules are very difficult to test. As a result, while intermodule testing over an interconnecting system bus has been performed, due to deficiencies in existing intermodule testing arrangements, such tests are typically not regularly performed. 
     Accordingly, there is a need for an improved intermodule test arrangement which will reliably test all connections between modules of multiple module computer systems. Preferably, an improved intermodule test arrangement would not require substantial additions to a computer system and would permit regular periodic testing of a computer system such that faulty interconnections between modules could be quickly detected and corrected leading to increased overall availability of the corresponding computer system. 
     SUMMARY OF THE INVENTION 
     This need is met in accordance with the present invention by a method for performing intermodule testing in a computer system by means of a serial test bus which is commonly incorporated into the computer system for testing components, for example integrated circuits, used to construct modules of the computer system. Intermodule test data is maintained preferably in memory on each of the modules. The memory preferably comprises EEPROM and is accessible through operations of the serial test bus. In the present invention, intermodule test data is retrieved by the serial test bus and used to set up the modules so that one module drives the system bus with test signals defined by test vectors included within the intermodule test data. The remaining modules are set up to receive the test signals. Tables are set up in accordance with the intermodule test data to define which test signals drive which system bus leads and also which receiving modules receive the test signals. The signals which are received by the modules set up to receive the test signals are sampled and compared to what signals should have been received to detect errors in intermodule communications. 
     Typically a number of test vectors will be used by the driving module to ensure that substantially all module interconnections are tested. After all test vectors have been used for the module selected to drive the system bus, that module is set to receive test signals and another module is selected to drive the system bus. Again, tables are set up in accordance with the intermodule test data to define which test signals drive which system bus leads and also which of the receiving modules receive the test signals. The signals which are received by the modules now set up to receive the test signals are sampled and compared to what signals should have been received to detect errors in intermodule communications. These steps are repeated until all of the modules have been selected to drive the system bus. Since the serial test bus is being used to perform intermodule testing, every interconnection of the modules via the system bus can be verified regardless of the functionally related activity of an interconnection. 
     In accordance with one aspect of the present invention, a method of operating a test bus of a computer system having a plurality of modules interconnected via a system bus to perform intermodule testing of the computer system comprises the steps of: maintaining intermodule test information for the modules of the computer system; retrieving the intermodule test information for the modules; selecting one of the modules to drive the system bus;sampling the signals received by the remaining modules which are not selected to drive the system bus; comparing the sampled signals to signals expected to be received based on signals used to drive the system bus by the driving module selected; and, logging any intermodule operating errors indicated by failures in the comparison of sampled signals and signals expected to be received. 
     To ensure complete testing of the interconnections, the step of selecting one of the modules to drive the system bus is repeatedly performed until all modules of the computer system have been selected to drive the system bus. Preferably, the test bus is a serial test bus, such as a JTAG bus, and the step of sampling the signals received by the remaining modules which are not selected to drive the system bus is sequentially performed. While a plurality of test vectors are normally used to define test signals for each driving module, the step of maintaining intermodule test information for the modules of the computer system comprises storing at least one test vector for each of the modules. 
     Preferably the method further comprises the step of: providing memory means associated with the plurality of modules for storing information defining the computer system; and, the step of maintaining intermodule test information for the modules of the computer system is performed by storing the intermodule test information in the memory means. 
     It is thus an object of the present invention to provide an improved method of performing intermodule testing across the system bus of a computer system having a plurality of modules interconnected by at least one system bus without resorting to functional testing procedures; to provide an improved method of performing intermodule testing across the system bus of a computer system having a plurality of modules interconnected by at least one system bus by means of a serial test bus which is typically provided within the computer system to perform tests on components of the computer system; and, to provide an improved method of performing intermodule testing across the system bus of a computer system having a plurality of modules interconnected by at least one system bus by means of a serial test bus of the computer system wherein the test bus places one module into a drive mode to drive test vectors onto the system bus and the remaining modules into a receive mode to receive the test vectors driven by the module in the drive mode, selection of the driving module being rotated until all modules have been used to drive the system bus. 
     Other objects and advantages of the invention will be apparent from the following description, the accompanying drawings and the appended claims. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram schematically illustrating the connections and signals for a standard serial test bus (IEEE Std 1149.1) adapted to operate with an additional pacing or ready RDY signal, of the present application; 
     FIG. 2 is a state diagram for a test access port (TAP) controller of an IEEE 1149.1 serial test bus adapted to operate with the RDY signal of the present application; 
     FIG. 3 is a schematic block diagram illustrating an architecture for an IEEE 1149.1 serial test bus modified in accordance with one of the broadest aspects of the present application to include a plurality of registers designated in FIG. 3 as configuration registers which are accessible through the serial test bus; 
     FIG. 4 is a schematic diagram of an exemplary circuit for generating the RDY signal; 
     FIG. 5 is a schematic block diagram of an IEEE 1149.1 serial test bus modified in accordance with the present application illustrating the configuration registers of FIG. 3 in more detail and including memory accessible from the test bus; 
     FIG. 6 illustrates a sixteen register organization for the configuration registers of FIG. 5, each register having 8 bits with the contents of two memory registers being concatenated to address a memory having a 64K subaddress space; 
     FIGS. 7 and 8 are timing diagrams for write and read operations, respectively, for the memory of FIGS. 5 and 6 and for registers external to the bus; 
     FIG. 9 is a schematic block diagram of a configuration and test (CAT) bus architecture in accordance with the present application for a computer system having a plurality of modules; 
     FIGS. 10 and 11 are schematic block diagrams of configurations of a CAT bus in accordance with the present application for use with a computer system module; 
     FIGS. 12-14 illustrate instruction error detection for a CAT bus in accordance with one aspect of the present application; 
     FIGS. 15-18 is a schematic illustration of the relationship of devices within a boundary scan path and the corresponding tables in accordance with the present application; 
     FIG. 19 illustrates an output test vector, a signal map entry and drive determinations for output test vectors in terms of vector classes; 
     FIG. 20 is a schematic block diagram of an EXTEST table constructed for intermodule testing of a multiple module computer system; 
     FIGS. 21-24 when interconnected as shown in FIG. 25 form a flow chart for performing intermodule testing using JTAG EXTEST procedures; and 
     FIG. 25 illustrates proper interconnection of FIGS. 21-24. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The present application discloses a number of structural and operational modifications to a serial test bus which has been standardized by the Institute of Electrical and Electronics Engineers, IEEE, and is designated as the IEEE Std 1149.1. This serial test bus was developed by a Joint Test Action Group, JTAG, composed of members from both Europe and North America and is often referred to as a JTAG bus. Herein, the standard serial test bus is referred to interchangeably as an IEEE 1149.1 bus, a JTAG bus and/or, once modified in accordance with the disclosures of the present application, as a configuration and test (CAT) bus. The later name, CAT bus, reflects one of the purposes of the modifications of the JTAG bus which is to permit configuration of a computer system including a serial test bus by means of the serial test bus. While portions of the standard JTAG bus will be described herein, the structure and operation of the standard JTAG bus are well known to those skilled in the art. Those desiring additional knowledge or details of the standard JTAG bus are referred to the above noted IEEE Std 1149.1. 
     FIG. 1 schematically illustrates the connections and signals for a JTAG bus adapted to operate with an additional pacing or ready RDY signal to form a CAT bus system 100. The CAT bus system 100 includes a bus system controller 102 which will also be referred to herein as a CAT controller and, as illustrated in FIG. 1, generates the following signals: test data input, TDI; test clock, TCK; test mode select, TMS; and, an optional test reset, TRST. The test data output, TDO, and ready, RDY, signals are generated by the devices 104, 106 and 108 referred to as JTAG devices #1, #2 and #n in FIG. 1 which are connected to the bus system controller 102. The generation and use of the RDY signal, the only nonstandard JTAG bus signal of FIG. 1, will be fully described hereinafter. 
     FIG. 2 is a state diagram 110 for a test access port (TAP) controller of an IEEE 1149.1 serial test bus adapted to operate with the RDY signal of the present application. A TAP controller 114 is shown in FIG. 3 which illustrates the architecture of an IEEE 1149.1 serial test bus modified in accordance with one of the broadest aspects of the present application to include a plurality of registers designated in FIG. 3 as configuration registers 116 which are accessible through the serial test bus. The configuration registers 116 are included along with a number of other standard JTAG registers collectively identified as test data registers and shown within a circuit block 118. 
     The standard JTAG registers include a boundary scan register 120 which is associated with each input and output connection for an integrated circuit, module or other entity which is to be tested by the JTAG bus. The boundary scan register 120 permits control and observation of signals at the input and output connections of an entity by means of standard JTAG bus operations well known in the art. A BYPASS register 122 and an optional identification, ID, register 124 are also shown within the block 118. The outputs of the registers 116, 120, 122 and 124 are selectively connected to an output multiplexer 126 through a register selector multiplexer 128. The output multiplexer 126 is connected to a D-flip-flop 130 having a Q output terminal which is connected to a buffer circuit 132 which ultimately passes the test data output, TDO, signal back to the bus system controller 102. The TDO signal is indicated as a CAT --  TDO in FIG. 3 since a configuration and test bus architecture is illustrated. Thus, each of the registers 116, 120, 122 and 124 can be selectively connected into the TDI-TDO JTAG bus serial scan path. 
     The TAP controller 114 is controlled by the bus system controller 102 via the control signals: test clock, TCK; test mode select, TMS; and, test reset, TRST, to generate control signals for the output multiplexer 126, the D-flip-flop 130, the buffer circuit 132, an instruction register 134 and an instruction decoder circuit 136 which is connected to receive instructions from the instruction register 134 and in turn generate control signals for the registers 116, 120, 122 and 124 and corresponding select signals for the register selector multiplexer 128. The states of the state diagram 110 of FIG. 2 for operation of the TAP controller 114 are as follows: 
     in the Test-Logic-Reset (TLR) state, the test logic is disabled so that normal operation of the circuit or module logic can operate unhindered by the JTAG test bus; 
     the Run-Test-Idle (RTI) state is a state between scan operations which allows idling or pacing of instruction execution; 
     the Select-DR (SDR) state is a temporary state in which all test data registers selected by a current instruction retain their previous state; 
     the Select-IR (SIR) state is a temporary controller state in which all test data registers selected by the current instruction retain their previous state; 
     in the Capture-DR (CDR) state, data may be parallel loaded into test data registers selected by the current instruction or the previous register state remains unchanged if the test data register selected does not have a parallel input; 
     in the Shift-DR (SDR) state, the test data register connected between TDI and TDO as a result of the current instruction shifts data one stage towards its serial output on each rising edge of TCK; 
     the Exit1-DR (E1DR) state is a temporary controller state from which the controller scanning process can be terminated or paused; 
     in the Pause-DR (PDR) state shifting of test data register in the serial path between TDI and TDO is temporarily halted; 
     the Exit2-DR (E2DR) state is a temporary state from which the controller can enter the Shift-DR state or an Update-DR state; 
     in the Update-DR (UDR) state, data is latched onto the parallel output of test data registers from the shift register path on the falling edge of TCK; 
     in the Capture-IR (CIR) state, the shift register contained in the instruction register of the controller loads data on the rising edge of TCK; 
     in the Shift-IR (SIR) state the shift register contained in the instruction register is connected between TDI and TDO and shifts data one stage towards its serial output on each rising edge of TCK; 
     the Exit1-IR (E1IR) state is a temporary controller state from which the controller scanning process can be terminated or paused; 
     the Pause-IR (PIR) state allows shifting of the instruction register to be halted temporarily; 
     the Exit2-IR (E2IR) state is a temporary state from which the controller can enter the Shift-IR state or an Update-IR state; and, 
     for the Update-IR (UIR) state the instruction shifted into the instruction register is latched onto the parallel output from the shift register path to become the current instruction. 
     The state diagram 110 for the TAP controller 114 is identical to the standard JTAG TAP controller state diagram shown in the IEEE Std 1149.1; however, in FIG. 2 it is shown to depict the operation of the RDY signal. The logic state values (0 and 1) shown adjacent to each state transition in the state diagram 110 of FIG. 2 represent the logic values of the TMS signal at the time of a rising edge of the TCK signal. Since the bus system controller 102 is the source of the TMS signal, it is adapted for operation with the RDY signal such that the RDY signal must be active before the bus system controller 102 will cause transition of the TAP controller 114 from the RTI state. Note that the bus system controller 102 can operate with standard JTAG devices since such standard devices will never deactivate the RDY signal. 
     Reference will now be made to FIG. 5 which illustrates the configuration registers 116 of FIG. 3 in more detail. In addition, the configuration registers 116 are shown as being able to access a nonvolatile memory 138 and an external configuration register, i.e., a register external to the test bus, from the test bus. Timing diagrams for reading and writing the memory 138 and external registers are shown in FIGS. 7 and 8 and will be referred to hereinafter for clarification of those operations. 
     The memory 138 may comprise any form of nonvolatile memory such as EEPROM, RAM or other memory devices and may be either internal or external to the test bus structure. In FIG. 5, the configuration registers 116 are illustrated as comprising n internal configuration registers 116 a  through 116 n  with internal configuration registers 116 c , 116 f  and 116 g  interfacing with the memory 138 and internal configuration register 116 n  being identified as either an internal configuration register and receiving an update signal or an external configuration register and receiving a read/write RD/WR signal and generating a ready signal. Control signals for the configuration registers 116 are generated by a configuration register control circuit 116C. 
     To enable the JTAG bus to operate with additional test data registers, such as the configuration registers 116, two groups of JTAG user definable instructions, one for reads and one for writes, are provided for the CAT bus of the present application. The illustrated embodiment is implemented to provide sixteen configuration registers using an eight bit instruction field such that the following instructions are defined. 
     
         ______________________________________                                    
INSTRUCTION                                                               
(binary)        COMMAND DEFINITION                                        
______________________________________                                    
p0nnnn01        Read Configuration Register                               
                (nnnn = register number)                                  
p0nnnn10        Write Configuration Register                              
                (nnnn = register number)                                  
______________________________________                                    
 
    
     Where p=is an instruction parity bit. For example, to read the status of the sixth configuration register CR6, 116 f , a JTAG instruction would be issued with the binary value of &#34;10011001&#34;, using even parity. 
     To expand the number of configuration addresses, three ports of the configuration address space, i.e., three of the configuration registers 116 c , 116 f  and 116 g , are arranged to provide a subaddress extension space within the memory 138. Two of these ports, configuration registers 116 f  and 116 g , are concatenated to define the subaddress and the third port, configuration registers 116 c , is used to write or read data to the subaddress within the memory 138 addressed by the concatenated contents of the configuration registers 116 f  and 116 g . To facilitate sequential accesses of the subaddress space, a subaddress auto-increment function is provided to increment either one of the ports or configuration registers 116 f  and 116 g  which define the address for the memory 138. The auto-increment function is enabled and disabled via a bit in the configuration register 0010 labeled &#34;control&#34; in FIG. 6. 
     It is noted that the subaddress range depends on the number of bits per configuration register. For example, an eight bit register size results in a 16 bit subaddress if the two configuration registers 116 f  and 116 g  are concatenated as illustrated to provide a 64k subaddress range. An illustration of this 16 register arrangement with subaddress extension into the memory 138 is shown in FIG. 6. The subaddress extension concept is particularly useful for interfacing with memory devices such as EEPROM and RAM which may contain status and/or configuration information for the computer system including the CAT bus. 
     To enable the JTAG bus to operate with devices which may not be able to respond within a default access time defined for the JTAG bus, such as the memory 138 and external registers exemplified by the configuration register 116 n , a mechanism for pacing or handshaking accesses to such devices is provided. The pacing function is accomplished by means of the ready, RDY, signal added to the JTAG interface as shown in FIGS. 1, 2, 4, 5 and 9-11. The ready RDY signal is deactivated by a JTAG device upon selection if it cannot respond to a data read or write access within a default access time which is dependent on the frequency of the JTAG clock, TCK. 
     FIG. 4 illustrates how the ready RDY signal can be implemented in a register or memory device which requires additional time to respond to read and write commands. As shown in FIG. 4, a read signal RD --  L is activated during a read command of an external register or a memory device such as the memory 138 and a write signal WR --  L is activated during a write command of an external register or memory device. At the beginning of a read or write operation, the RDY signal is deactivated by means of NAND gates 140, 142 until a number of pulses of the JTAG clock TCK are received and passed through D-flip-flops 144, 146 and 148 to reactivate the ready RDY signal. The number of D-flip-flops provided corresponds to the number of clock pulses and therefore the time required for access of a corresponding device including the ready RDY signal generating circuitry. Of course a large variety of arrangements will be apparent to those skilled in the art for generating the pacing or ready signal as described herein. 
     Prior to describing operation of the CAT bus of the present application for reading and writing the memory 138 and any external registers exemplified by the configuration register 116 n , inclusion of the CAT bus within a computer system will be described with reference to FIGS. 9-11. In FIG. 9, the CAT bus is shown as being incorporated into a computer system 150 having a plurality of modules 152 which make up the system 150. Each of the modules 152 typically will in turn be made up by a plurality of integrated circuit devices which can be any off-the-shelf devices; however, in the illustrated embodiment, application specific integrated circuits or ASICs are used and thus will be indicated herein. In accordance with the present application, the CAT bus provides a convenient arrangement for not only testing the ASICs which are interconnected to form one of the modules 152 but also permits testing of the modules 152 and the system interconnections of the modules 152. 
     For ASIC level testing, the CAT bus architecture of FIGS. 3 and 5 is incorporated into each of the ASICs and is operated to test the ASICs operation at the chip level. The CAT bus architecture of FIGS. 3 and 5 is also incorporated into each of the system modules 152 to permit testing of the computer system 150 on the module level. Finally, the CAT bus of the present application is used to test at the system level by generating test signals from each of the modules 152 onto a parallel or common bus, for example a system bus 153 shown in FIG. 9, and monitoring the resulting signals which are received by the remaining modules 152 as will be more fully described hereinafter. 
     While the CAT bus of the present application is generally applicable to devices, modules and entire computer systems, it has been implemented as a part of a multiple processor computer system which is the subject of a U.S. patent application Ser. No. 07/760,786 which was filed on Sep. 16, 1991, is entitled ARCHITECTURES FOR MULTIPLE PROCESSOR COMPUTER SYSTEMS, is assigned to the same assignee as the present application and is incorporated herein by reference. Anyone desiring additional information regarding a computer system incorporating a CAT bus should refer to the referenced application. 
     Logic circuitry of a CAT controller 102A of FIG. 9 is controlled via control and data signals generated by a diagnostic processor (DP) 154. In response to a command from the diagnostic processor 154, the CAT controller 102A selects a target module from the modules 152 for JTAG communication by transmitting an identification signal via the JTAG bus, i.e., the TDI-TDO serial path, to the configuration and test interface/router circuit CAT I/R 156. A select SEL signal is then activated to signal the CAT I/R 156 to decode the identification signal. The CAT I/R 156 then routes the TMS signal from the CAT controller 102A to the selected module. The CAT I/R 156 operates in accordance with conventional JTAG control procedures with the exception of the SEL signal, which activates a decoding of the module identification signal, and a HOLD signal which is used for intermodule testing at the computer system level as will be described hereinafter. 
     As shown in FIG. 10, each of the modules 152 interfaces to the CAT bus via a configuration and test interface CAT I circuit 158 which is preferably formed as an ASIC. Initially, after system reset, only the CAT I circuit 158 is in the serial test bus scan path for the module 152A. The primary function of the CAT I circuit 158 is to interface with module level configuration registers and memory, typically EEPROM, 160 via an 8-bit port. The configuration registers and configuration memory 160 are both shown as being external to the serial test bus in FIG. 10; however, they can be implemented as previously described relative to FIGS. 3 and 5. The EEPROM of the module level configuration registers and memory 160 may contain module identification information and revision level information as well as information about each JTAG device in the scan path on the module. After the diagnostic processor 154 acquires this information via operation of the CAT bus, it will send a command to the CAT I circuit 158 to connect the JTAG scan path on the module 152A, and then the diagnostic processor 154 will diagnose the devices in the scan path, such as the ASICs 162, 164 and 166 shown in FIG. 10. 
     If the ready RDY signal is inactivated at the start of an access, the access will be suspended until the signal is reactivated. As previously mentioned, the HOLD signal or command permits interconnect testing among the modules 152. After the bus interface ASICs of one module have been sent a standard JTAG EXTEST instruction, the HOLD command is issued to the CAT I/R 156 which causes it to inhibit TMS transitions to this module while it remains in the RUN-test/idle RTI state. The other modules are activated and sent standard JTAG bus Extest instructions which cause their bus interface ASICs to sample the outputs of the first module. The diagnostic processor 154 can then compare the sampled data with the expected driven data to test interconnections among the modules 152. The module in the HOLD mode is returned to a RESET state and another module is selected to drive the system bus 153 with the resulting signals being again sampled at the other modules. This procedure is continued until all of the modules 152 have driven the system bus 153. 
     A computer system having a plurality of modules can be operated directly from the CAT controller 102A and the diagnostic processor 154 as suggested by the alternate provision of the TMS signal from the CAT controller 102A indicated by the dotted line TMS paths in FIG. 10. An alternate embodiment which provides for multiple serial TDI-TDO scan paths is shown in FIG. 11. Modules 168 are connected in parallel as in the embodiment of FIG. 10; however, devices on the modules 168, such as the ASICs 170-176, each have individual TDI-TDO scan paths. 
     Each module includes a CAT I/R circuit 156A which contains TMS selection circuitry as described for the CAT I/R 156 of FIG. 9 such that the ASICs 170-176 are selected by the CAT controller 102B via ASIC identification signals and the SEL signal which is received by the CAT I/R circuits 156A of each of the modules 168. In this embodiment, the identification signals identify devices such as the ASICs 170-176 on a module rather than the module itself. The CAT I/R 156A operates with internal configuration registers (not shown) and memory comprising EEPROM 178 in the illustration of FIG. 11 as previously described herein. Intermodule testing of a computer system structured in accordance with this embodiment is performed substantially the same as for other embodiments; however, the set up is performed on a device by device basis for each module. 
     The timing diagrams of FIGS. 7 and 8 show the relationship of the signals required for write and read cycles, respectively, for memory and/or registers external to the bus system. The write WR signal, active low, initiates a write cycle and is enveloped by the register address. The STROBE signal, active low, is used to perform the write and is enveloped by the data. The read RD signal, active low, initiates a read cycle and is enveloped by the register address. 
     The sequence of TAP controller states for performing a write operation to an external configuration register, such as the configuration register 116 n , is as follows: first a write configuration instruction is shifted into the TAP instruction register 134 by the state sequence--Test-Logic Reset (TLR), Run-Test/Idle (RTI), Select-DR, Select-IR, Capture-IR, Shift --  IR (times the number of instruction bits, 8 herein), Exit-IR and Update-IR. The instruction in the instruction register 134 selects the configuration register identified within the instruction via the configuration register control 116C and a bidirectional selector circuit 116S. The data to be written to the external configuration register is next shifted into a shift register 180 by the bus system controller 102 by the state sequence--Select-DR, Capture-DR, Shift-DR (times the number of data bits, 8 herein), Exit-DR, Update-DR and back to RTI. At this point, the selected JTAG device such as the configuration register 116 n , receives the write WR signal and can deactivate the READY signal which is combined with any other ready signals from other devices by the configuration register control circuit 116C to generate the CAT ready CAT --  RDY signal and the bus system controller 102 will maintain the TAP controller 114 in the RTI state until the CAT --  RDY signal is again activated. Reactivation of the CAT --  RDY signal results in the WR and STROBE signals going inactive and the TAP controller 114 returning to the TLR state. FIG. 7 can be referred to for additional details regarding write operations to an external configuration register and/or memory. 
     The sequence of TAP controller states for performing a read operation to an external configuration register, such as the configuration register 116 n , is as follows: first a read configuration register instruction is shifted into the TAP instruction register 134 by the state sequence described above for the write operation. At the end of this sequence, the TAP controller 114 enters the RTI state and the selected external configuration register receives the read RD signal and can deactivate READY signal resulting in a CAT --  RDY signal as just described. 
     When the external configuration register has had time to access the data, the CAT --  RDY signal is reactivated. The reactivation of the CAT --  RDY signal results in the RD and STROBE signals going inactive and the TAP controller 114 progressing through the data acquisition states as follow: Select-DR, Capture-DR, Shift-DR (times the number of data bits, 8 herein), and Update-DR states. The TAP controller 114 then returns to the TLR state. FIG. 8 can be referred to for additional details regarding read operations to an external configuration register and/or memory. 
     Operation of the CAT bus of the present application with external configuration registers and/or memory devices is as just described while internal configuration registers are selected and written in accordance with conventional JTAG bus operating procedures as will be apparent to those skilled in the art. 
     It is important to be able to detect errors in instructions used to control a CAT bus as disclosed in the present application for proper configuration and testing of computer systems incorporating the bus. To this end, provisions are made to detect errors in instructions received over the CAT bus. One arrangement for detecting instruction errors is to include a parity bit in each instruction, for example as described above relative to the two groups of JTAG user definable instructions for reading and writing configuration registers and memory devices. Unfortunately, when a parity error is detected on an ASIC, a module or other entity tested by the CAT bus, feedback to the bus system controller or diagnostic processor is required from the entity detecting the parity error which results in higher pin counts or connections for the entity. 
     In the CAT bus of the present application, each ASIC, module or other entity is made such that an erroneous instruction, whether detected by parity error failures or otherwise, places the entity into the bypass mode. Thus, if one or more entities on the CAT bus detect an instruction error, a shorter than expected register, i.e., the one bit BYPASS register, is connected into the scan path so that the length of the overall scan path becomes shorter than expected by the diagnostic processor. Accordingly, the CAT bus needs only determine when the length of the overall scan path has been shortened to detect that an erroneous instruction has been received by an entity along the path. The diagnostic processor must know what the correct scan path length is so that when specific data is shifted into the scan path, the diagnostic processor knows when to expect the data to return to an eight bit data port or register in the CAT controller. 
     In accordance with this aspect of the present application, a shortened scan path and hence an instruction error is detected by prefixing a header to the data that is shifted into the TDI-TDO scan path following an instruction scan. The header is set up to be equal in length to the length of the longest register in the scan path with the understanding that more than one register can have this length. The header is formed to have x of its least significant bits equal to the same digital value, preferably 1, with x being equal to the shortest register in the scan path less one or one if the shortest register is one bit, with the remainder of the header bits being equal to the opposite digital value, preferably 0. Of course, as with the longest register length, there can be more than one register in the scan path with the shortest length. Padding bits are provided to precede the header so that the header and data form a multiple of the number of bits contained within the data register of the CAT controller. 
     The diagnostic processor keeps track of the shifting of the padding/header/data bits and captures the contents of the CAT controller data register as the data is shifted into the scan path. By determining whether or not the least significant bit of the data register is a 1 when the data register contains the first byte of the header, all instruction single errors such as parity errors can be detected. If an error such as a parity error occurs, the 1s in the header would not be in the data port at the expected time. The 1s would be shifted out and a 0 would be in the least significant bit (LSB) position of the first header byte instead of a 1. By examining the entire first byte of the header, two or more parity errors can be detected with at least 99.6% confidence level. By attaching the described header to a data scan that follows an instruction scan, parity errors can be detected without feedback from the ASICs, modules or other entities on the CAT bus and without increased pin on connections counts. 
     A simple example of parity checking instructions sent to a module including three ASICs in accordance with this aspect of the present application will now be described with reference to FIGS. 12-14. As shown in FIG. 13, a first ASIC 200 has been instructed to connect an eight bit register into the scan path; a second ASIC 202 has been placed into the bypass mode such that its one bit bypass register has been placed into the scan path; and, a third ASIC 204 has been instructed to connect a four bit register into the scan path. FIG. 12 shows the bit pattern that is to be shifted into the scan path through the ASICs 200, 202 and 204 and includes scan path data 0111010001110, a header 00000001, and pad bits PPP which can be either 1s or 0s. 
     As previously described, the header is equal in length to the longest register in the scan path, eight bits for the ASIC 200, and includes a number of 1s in the least significant bit positions equal to the shortest register less one or one if zero results. In this example since the ASIC 202 has been placed in the bypass mode and hence connects its bypass, i.e., a one bit register, into the scan path resulting in zero when one is subtracted from its length, the alternate of one is selected for the number of header 1s. The three pad bits PPP define the overall data to be scanned into the scan path as being 24, a multiple of an 8 bit data register 206 of the CAT controller. 
     As can be seen in FIG. 13, for the properly connected scan path a 1 results as the least significant bit in the 8 bit data register 206 of the CAT controller after the data has been scanned into the scan path. Thus, FIG. 13 illustrates proper receipt of the header and verification of no errors in the instruction scan. In FIG. 14, the same set of ASICs is shown; however, an error was encountered in the instruction for the third ASIC 204 such that it placed its bypass register into the scan path rather than the four bit register requested by the correct instruction for the third ASIC 204. Thus, the scan path has been shortened. 
     When the contents of the data register 206 of the CAT controller is examined after shifting the data into the scan path, an instruction error is indicated because the least significant bit is 0 rather than 1 as required for instruction validation. If there were two or more parity errors, the diagnostic processor would read xxxxxxxx; however, by comparing the expected first byte of the header to the value read, there is 99.6% confidence that if two or more parity errors occur, the value read will not match the expected value. 
     As previously described, the provision of memory within the architecture of a CAT bus can advantageously be used to store and retrieve status and/or configuration information for the computer system and even the CAT bus itself. For example, to enable the CAT bus to perform boundary scan functions, the diagnostic processor must know how the configuration of the boundary scan path for each of the one or more modules which are interconnected to configure a computer system. Without knowledge of the boundary scan path it is impossible for the CAT bus to perform any JTAG operations. In accordance with the CAT bus of the present application, information fully describing the CAT bus is provided in nonvolatile memory on each module of a system, for example in an EEPROM. The layout of information in a module memory is designed to minimize the amount of memory needed and reduce the complexity of using the information contained in the memory. 
     To reduce the amount of memory required on a module, redundant device information is only stored one time into the memory with all identical devices on the module including a pointer for directing the CAT bus system to that information. The scan path tables are ordered according to the position of a part in the scan chain. There is a table for every device in a module&#39;s scan chain such that the CAT bus or more specifically the diagnostic processor of the CAT bus need only know the location where the first scan path table begins to locate the information for every boundary scan device. Thus, if information regarding the fourth device in the scan chain is required, the fourth scan path table entry is examined. 
     A JTAG device identification, device ID, is provided for each device on a module and uniquely identifies each JTAG device in the scan path. The device ID is in no way related to the JTAG ID defined in the IEEE 1149.1 specification even though the IEEE 1149.1 JTAG ID is stored for each type of device included on a module and of course each device of the same type will have the same IEEE 1149.1 JTAG ID. The unique device IDs are assigned to each part on the scan chain for identification of the devices in the scan chain. The diagnostic processor will know where a device is located in the scan path by comparing its device ID to the device IDs in the scan path tables. For example, if the diagnostic processor wanted to determine where in the scan path the device with a device ID equal to 6 was located, the diagnostic processor would sequentially step through the scan path tables. If the device ID in the third scan path table was 6, the diagnostic processor would know that the device with an ID of 6 is located third in the boundary scan chain. This information storage arrangement permits rearrangement of the boundary scan path to be performed provided the scan path tables are similarly reordered to reflect the new ordering of the boundary scan path. 
     The following describes tables which are stored in memory including what information is stored and the usefulness of the information. FIGS. 15-18 illustrate tables in accordance with one embodiment of this aspect of the present application and where required are used to illustrate a boundary scan path for a module having three devices, ASICs, connected into the boundary scan path. As previously noted, the devices are positioned in the scan path tables in the order in which they are connected in the boundary scan path such that device #1 300 is assigned the first scan path table 302, device #2 304 is assigned the second scan path table 306, and device #3 308 is assigned the third scan path table 310, see FIGS. 15 and 16. 
     The scan path tables 302, 306 and 310 provide device identification, i.e., the unique identification of the JTAG device in the scan chain, as shown the ASICs are identified in the table of FIG. 16 as 3, 7 and 6, respectively. The scan path tables also point to the device type table as illustrated in FIG. 17 which fully defines the JTAG information for the device, herein an ASIC. In the illustrated 3 ASIC boundary scan chain, the first and second tables for device #2 304 and device #3 308 point to the same ASIC type table 312 and the same configuration table since the second and third ASICs are identical and are configured with identical data. However, the ASIC corresponding to device #1 300 is not the same and requires different configuration data and is described by a different ASIC type table 314. 
     The entries in the device type tables exemplified by the table of FIG. 17 are in accordance with the requirements of the IEEE Std 1149.1 and will be apparent to those skilled in the art. Accordingly, all but one of these entries will not be further defined herein and interested readers are referred to IEEE Std 1149.1 for additional details and information. That one entry is the pointer PTR to a JTAG table 316 which identifies the location of JTAG instruction decoding information required for operation of the devices, i.e., device #1 300, device #2 304 and device #3 308 in the illustration. The storage of information required for JTAG operation on the devices on a module as just described relative FIGS. 15-18 provides an arrangement which permits the diagnostic processor to control any device on a module without having prior knowledge of what type devices are on the module. Thus, the diagnostic processor only has to access memory on each module and read the corresponding information to obtain information enabling the diagnostic processor to perform all required JTAG operations on the module. 
     The previously mentioned testing of interconnections among modules of a computer system including a plurality of modules such as the modules 152 connected by a parallel or common bus such as the system bus 153 by means of a serial test bus will now be described in more detail. Testing interconnection among the modules 152 as part of system initialization or a normal start-of-day (SOD) process provides a significant increase in fault detection over prior art systems. Such testing permits isolation and deconfiguration of modules in which one or more failures occur so that the overall availability of a computer system is increased. 
     In addition to the information previously described as being stored in memory on each module of a multiple module computer system, for example the computer system 150 shown in FIG. 9, module specific information required for running intermodule testing by means of the standard JTAG EXTEST instruction will also be included in an EXTEST area of memory. The EXTEST area of memory contains module-specific information required to run intermodule EXTEST at system initialization, start-of-day or at other times as required. 
     A signal map table is constructed and stored in module memory to map each system bus signal to its corresponding position in the boundary scan path of the module. Signals are referenced by their position in the signal map table and remain constant across all modules in the multiple module computer system to eliminate the need for storing actual signal names. Each entry in the signal map table is 2 bytes long in a working embodiment in accordance with the present application. Twelve bits of each entry is used to indicate the signal&#39;s position in the boundary scan path of the module and the remaining four bits indicate whether the signal is driven by a given output test vector. 
     Thus, each system bus signal may be driven by up to four different classes of output test vectors. A one in any of these four bits indicates the signal is driven by the corresponding class of output test vector. A working embodiment provides for 256 system bus signals, making the total length of this table 512  bytes. As shown in FIG. 19, a signal map table entry comprises a twelve bit boundary scan path signal position 402 for the twenty third location 000000010111 along the boundary scan path and four bits 404 indicating that the signal is driven by output test vectors in the second class of vectors, 0010. It is possible that a single system bus signal is associated with more than one boundary scan position. Since the basic interconnection between modules can be verified with a single net, only one entry in the signal map table will be used. In the event that both input and output boundary scan cells are used for such a signal, the boundary scan location of the input will be stored in the signal map table. 
     An input description table or mask is constructed and stored in module memory to define which boundary scan path signals can serve as inputs for the module. The input description table is a bit map, with a single bit corresponding to each entry in the signal map table: if the ith bit in the input description map is a 1, then the ith entry in the signal map table is capable of being an input signal for the module. 
     Output test vectors are designed to include all boundary scan locations with a series of output test vectors being stored in module memory. Each output test vector is the length of the boundary scan path plus four bits. The additional four bits define the class of the output test vector, and are used to map the vector to the signals included in the signal map table. In the cases where more than one boundary scan position is associated with a system bus signal, the location identified in the signal map table is used as the primary control location. All other boundary scan cells for this signal will be set to the same value as the primary location. 
     The output test vectors include all necessary control information for tristate logic, open drain, etc. required to drive the output signals so that no additional signal information is required. For the board with the longest scan path in a working embodiment of the CAT bus of the present application, the length of each output test vector is 231 bytes. Accordingly, slightly more than 3K of memory space is required to store 15 output test vectors, which should be enough to provide reasonably good coverage. An output test vector 406 for a scan path having twenty seven locations is shown in FIG. 19 with the class 406A of the output test vector 406 indicating that it is in the second and third classes of output test vectors, i.e., the output test vector 406 will drive scan path locations in the second and third classes. Accordingly, as shown in FIG. 19, scan path location 23 will be driven by the output test vector 406 and it will be driven to a 1. 
     When a module is reset, each of the devices on that module go to a predetermined state. The devices need to be put in a different state to allow intermodule EXTEST. The initialization of the devices on a module is accomplished by means of an input control vector ICV which is written into the scan path to set all bidirectional pins to input, tristate all outputs possible, and disable other signals appropriately. The ICV vector is the same length as the boundary scan path and its construction will be apparent to those skilled in the art. 
     Only one of the modules 152 will drive the system bus 153 at a given time with the remaining modules being placed into a receive mode. The diagnostic processor sequentially selects a module to be the driver from the modules that have not yet driven the system bus 153. Once a driver is selected, the diagnostic processor places the remaining modules into the receive mode. To place a module into the receive mode, the diagnostic processor first controls the CAT bus interface circuit of the module to tristate any drivers on the module. Once the board is thus tristated, the JTAG devices on the module are given the sample/preload JTAG instruction to select the boundary scan register as the active register is the JTAG TDI-TDO scan path. The ICV is then shifted into the module, and the devices are given the EXTEST instruction. All modules except for the driving module are held in this state. 
     The diagnostic processor then loads an output test vector into the driving module. Once loaded into the driving module, the output test vector causes all drivable system bus signals to be driven onto the system bus. As the output test vector is being shifted into the driving module, the diagnostic processor inspects the bits of the test vector and builds an EXTEST table, see FIG. 20. The EXTEST table is used to make comparisons between the data driven onto the system bus by the driving module and the data received by the receiving modules. An example of a portion of an EXTEST table is shown in FIG. 20. 
     The diagnostic processor determines which signals are driven by using the vector class associated with each output vector and the entries in the signal map table. If it is determined that a signal can be driven by a certain test vector, the output drivable bit is set to 1 in the EXTEST table. It should be noted that this table does not actually include the signal number, but is ordered in the same manner as the signal map table. By following this strategy, signals can be referenced by their position in the signal map table, and expensive table lookups and name mapping can be avoided. 
     When the diagnostic processor determines that a signal can be driven, it will use the information in the signal map table to distinguish which bit in the boundary scan path is capable of driving the system bus signal. The diagnostic processor will then determine the logic level that the bit is being set to. Since the output test vector is the same length as the boundary scan path, if the diagnostic processor needs to determine what logic level a given bit in the boundary scan path was set to, all it needs to do is read that bit in the test vector that was shifted into the driving module. The value driven is then set to the appropriate state in the EXTEST table. 
     The EXTEST table may be represented in the diagnostic processor by an array of long words. Two bits of each entry will hold the bus driver information. Four bits are used to identify the driving module. The remaining bits will be used to describe the input modules. Each entry in a working embodiment has the capability of holding the driver information and information for up to fifteen receiving modules. 
     After the output test vector has been shifted into the currently selected driving module and the table entries have been made, the diagnostic processor holds the module in this state. The outputs are latched and the system bus signals are driven with whatever values are held in the boundary scan register. It should be noted that the test vectors are made to automatically set enables to desired states by shifting a test vector into the boundary scan register. 
     After an output test vector is placed in the module that is driving the bus, the remaining modules are sampled sequentially. Once sampling is complete, the diagnostic processor loads another output test vector into the bus driver module. If all output test vectors have been used for a given module, another module is selected to drive the system bus and the previous bus driver is put into the receive mode. 
     Once the receiving modules have been initialized via their ICV&#39;s, an output test vector is shifted into the next driving module. The ICV for the previous driving module and all other receiving modules are then shifted into those modules again to serve the dual purpose of returning the captured data to the CAT bus controller data port and initializing the previous driving module and all other receiving modules as receiver modules for the next output test vector which drives the system bus from the next selected driving module. 
     As the sampled data is shifted out of a module, the data is read a character at a time from the CAT bus controller data port. The sampled data is placed into an array of characters and the diagnostic processor uses the input description table to determine which bits in the sampled data array were driven by system bus signals. If a system bus signal is receivable on the board, a 1 is placed in the EXTEST table under input receivable. The diagnostic processor checks the bit value that was sampled only when there is a 1 in both the output drivable field and the input receivable field. Once the EXTEST table is completed, a comparison is made between the value driven and the value received to determine whether the test was passed for that signal. 
     After the signals have been checked on the signal receiving system bus modules, the diagnostic processor loads another vector into the module that is driving the system bus and repeats the process of checking the sampled signals. For additional details regarding testing of interconnections among modules of a computer system including a plurality of modules connected by a system bus by means of a serial test bus in accordance with the present application the reader is referred to FIGS. 21-24 which form a flow chart for such testing when interconnected as shown in FIG. 25. Each module or board of the system referred to in FIGS. 21-24 comprises a plurality of ASICs which are interconnected on the board. 
     Having thus described the invention of the present application in detail and by reference to preferred embodiments thereof, it will be apparent that modifications and variations are possible without departing from the scope of the invention defined in the appended claims.