WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Snoopy test access port architecture for electronic circuits including embedded core having test access port with instruction driven wake-up    

Get related patents on CD
United States Patent6381717   
Link to this pagehttp://www.wikipatents.com/6381717.html
Inventor(s)Bhattacharya; Debashis (Plano, TX)
AbstractThis invention is a testing technique for an electronic circuit such as an integrated circuit. The electronic circuit includes a JTAG test access port and at least one testable embedded core circuit having its own JTAG compliant second test access port. A test access port controller and a programmable switch control testing of the electronic circuit. An internal state in the test access port controller, such as bits in a data register, controls the switch state of the programmable switch. When an embedded core circuit is connected for test, the test access port controller remains responsive to the first test access port and operates in a set of snoopy states corresponding to the state of the embedded core circuit under test. The test access port controller can regain control of the test access port and disconnect all of the embedded core circuits when in snoopy states upon detection of a wake-up instruction loaded into a snoopy instruction register during a snoopy state corresponding to an instruction input state. Alternatively, a count of instruction bits more than the most bits for instruction input for any embedded core can trigger the wake-up function.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History Custom Search
Drawing from US Patent 6381717
Snoopy test access port architecture for electronic circuits including
     embedded core having test access port with instruction driven wake-up - US Patent 6381717 Drawing
Snoopy test access port architecture for electronic circuits including embedded core having test access port with instruction driven wake-up
Inventor     Bhattacharya; Debashis (Plano, TX)
Owner/Assignee     Texas Instruments Incorporated (Dallas, TX)
Patent assignment
All assignments
Company News
Publication Date     April 30, 2002
Application Number     09/298,801
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     April 23, 1999
US Classification     714/724 712/227 714/734
Int'l Classification    
Examiner     Donaghue; Larry D.
Assistant Examiner    
Attorney/Law Firm     Marshall, Jr.; Robert D. Telecky, Jr.; Frederick J. Brady, III; W. James
Address
Parent Case     CLAIM OF PRIORITY This application claims priority from U.S. Provisional Application No. 60/082,992 filed Apr. 24, 1998. CROSS REFERENCE TO RELATED APPLICATIONS This application is related to the following contemporaneously filed U.S. Patent Applications: U.S. patent application Ser. No. 09/298,138 entitled "SNOOPY TEST ACCESS PORT ARCHITECTURE FOR ELECTRONIC CIRCUITS INCLUDING EMBEDDED CORE WITH BUILT-IN TEST ACCESS PORT"; U.S. patent application Ser. No. 09/298,018 entitled "HIERARCHICAL TEST ACCESS PORT ARCHITECTURE FOR ELECTRONIC CIRCUITS INCLUDING EMBEDDED CORE HAVING BUILT-IN TEST ACCESS PORT".
Priority Data    
USPTO Field of Search     712/38 712/227 714/724 714/726 714/727 714/729 714/734
Patent Tags     snoopy test access port architecture electronic circuits including embedded core test access port instruction driven wake-up
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
6324662
Haroun et al.

Nov,2001

[0 after 0 votes]
5991898
Rajski et al.

Nov,1999

[0 after 0 votes]
5889788
Pressly et al.

Mar,1999

[0 after 0 votes]
5774476
Pressly et al.

Jun,1998

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B

[0 market size comments]
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%

[0 market share comments]
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%

[0 reasonable royalty comments]
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

[0 Guesstimation of Royalty Value Comments]
License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
[0 license availability comments]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
[0 owner/assignee comments]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

[0 competitive advantage comments]
Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

[0 commercial alternatives comments]
 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. An electronic circuit comprising:

a first test access port including a predetermined set of input and output lines including a test data input line, said first test access port adapted for controlling electronic test of the electronic circuit and operating in accordance with a predetermined set of a plurality of test states, said predetermined set of test states including a data input state and an instruction input state;

a plurality of testable embedded core circuits each having a second test access port including said predetermined set of input and output lines adapted for controlling electronic test of said testable embedded core circuit, each second test access port operating in accordance with said predetermined set of a plurality of test states;

a test access port controller connected to said first test access port, said test access port controller including a switch data register loadable from said test data input line when said first test access port is in said at least one data input state;

a programmable switch coupled to said first test access port and said second test access port of each of said plurality of testable embedded core circuits, said programmable switch selectively connecting said first test access port to either no second test access port of any testable embedded core circuit or to said second test access port of a selected one of said at least one testable embedded core circuit for controlling test of said embedded core circuit dependent upon data stored in said switch data register; and

said test access port controller responsive to said test data input line when said programmable switch connects said first test access port to said second test access port of one of said plurality of testable embedded core circuits, said test access port controller operating in a one of a plurality of snoopy states corresponding to said test state of said second test access port, said test access port including a snoopy instruction register loadable from said test data input line when said test access port controller is in a snoopy state corresponding to an instruction input state of one of said plurality of testable embedded core circuits, said test access port controller controlling said programmable switch to disconnect said first test access port from said second test access port of all said at least one testable embedded core circuit when said snoopy instruction register stores a predetermined wake-up instruction.

2. The electronic circuit of claim 1, wherein:

said second test access port of each testable embedded core circuit includes an instruction register loadable from said test data input during said instruction input state;

said predetermined set of test states includes an update instruction register state for confirming update of data loaded into an instruction register;

said test access port controller controls said programmable switch to disconnect said first test access port from said second test access port of all said plurality of testable embedded core circuits when said snoopy instruction register stores said predetermined wake-up instruction in a snoopy state corresponding to said update instruction register state.

3. The electronic circuit of claim 1, wherein:

said second test access port of each of said plurality of testable embedded core circuits includes an instruction register loadable from said test data input during said instruction input state;

said snoopy instruction register of said test port controller includes more bits than said instruction register of said second test access port each of said plurality of testable embedded core circuits.

4. The electronic circuit of claim 3, wherein:

said predetermined set of test states includes an update instruction register state for confirming update of data loaded into an instruction register;

said test access port controller controls said programmable switch to disconnect said first test access port from said second test access port of all said plurality of testable embedded core circuits when said snoopy instruction register stores said predetermined wake-up instruction in a snoopy state corresponding to said update instruction register state.

5. The electronic circuit of claim 3, wherein:

said predetermined set of test states includes an update instruction register state for confirming update of data loaded into an instruction register;

said test access port controller further includes a counter for counting instruction bits received on said test data input line during a snoopy state corresponding to said instruction register input state; and

said test access port controller controls said programmable switch to disconnect said first test access port from said second test access port of all said plurality of testable embedded core circuits when a count in said counter exceeds a predetermined value in a snoopy state corresponding to said update instruction register state.

6. The electronic circuit of claim 5, wherein:

said test port access controller further includes a data register loadable in said data input state; and

said predetermined value is a value corresponding to a predetermined set of bits of said data register.

7. The electronic circuit of claim 1, further comprising:

at least one non-testable embedded core circuit not having a test port for controlling electronic test of said non-testable embedded core circuit; and

wherein said test access port controller is further connected to said at least one non-testable embedded core circuit and is further adapted for controlling test of said at least one non-testable embedded core circuit.

8. The electronic circuit of claim 1, wherein:

said electronic circuit including said first test access port, said at least one testable embedded core circuit, said test access port controller and said programmable switch is disposed upon a single integrated circuit.

9. A method of testing an integrated circuit comprising the steps of:

providing a first test access port having a predetermined set of input and output lines including a test data input line, said first test access port adapted for controlling electronic test of the electronic circuit and operating in accordance with a predetermined set of a plurality of test states, said predetermined set of test states including a data input state and an instruction input state;

embodying in the integrated circuit a plurality of testable embedded core circuits each having a second test access port including said predetermined set of input and output lines adapted for controlling electronic test of said testable embedded core circuit, each second test access port operating in accordance with said predetermined set of a plurality of test states;

embodying in the integrated circuit a test access port controller connected to said first test access port, said test access port controller including a switch data register loadable from said test data input line when said first test access port is in said at least one data input state;

embodying in the integrated circuit a programmable switch coupled to said first test access port and said second test access port of each of said at least one testable embedded core circuit, said programmable switch selectively connecting said first test access port to either said second test access port of no testable embedded core circuit or to said second test access port of a selected one of said plurality of testable embedded core circuits for controlling test of said embedded core circuit dependent upon data stored in said switch data register; and

said test access port controller responsive to said test data input line when said programmable switch connects said first test access port to said second test access port of one of said plurality of testable embedded core circuits, said test access port controller operating in a one of a plurality of snoopy states corresponding to said test state of said second test access port, said test access port including a snoopy instruction register loadable from said test data input line when said test access port controller is in a snoopy state corresponding to an instruction input state of one of said testable embedded core circuits, said test access port controller controlling said programmable switch to disconnect said first test access port from said second test access port of all said plurality of testable embedded core circuits when said snoopy instruction register stores a predetermined wake-up instruction.

10. The method of claim 9, further comprising the steps of:

loading an instruction register of said second test access port of said one of said plurality of testable embedded core circuit connected to said first test access port from said test data input during said instruction input state;

wherein said predetermined set of test states includes an update instruction register state for confirming update of data loaded into an instruction register; and

controlling said programmable switch to disconnect said first test access port from said second test access port of all said plurality of testable embedded core circuits when said snoopy instruction register stores said predetermined instruction in a snoopy state corresponding to said update instruction register state.

11. The method of claim 9, further comprising the steps of:

loading an instruction register of said second test access port of said one of said plurality of testable embedded core circuit connected to said first test access port from said test data input during said instruction input state; and

wherein said snoopy instruction register of said test port controller includes more bits than said instruction register of said second test access port each of said plurality of testable embedded core circuits.

12. The method of claim 11, wherein:

said predetermined set of test states includes an update instruction register state for confirming update of data loaded into an instruction register; and

said method further includes the step of controlling said programmable switch to disconnect said first test access port from said second test access port of all said plurality of testable embedded core circuits when said snoopy instruction register stores said predetermined wake-up instruction in a snoopy state corresponding to said update instruction register state.

13. The method of claim 12, wherein:

said predetermined set of test states includes an update instruction register state for confirming update of data loaded into an instruction register;

said test access port controller further includes a counter for counting instruction bits received on said test data input line during said snoopy instruction register input state; and

said method further includes the step of controlling said programmable switch to disconnect said first test access port from said second test access port of all said plurality testable embedded core circuits when a count in said counter exceeds a predetermined value in a snoopy state corresponding to said update instruction register state.

14. The method of claim 13, further comprising the step of:

loading a data register of said test port access controller in said data input state; and

wherein said predetermined value is a value corresponding to a predetermined set of bits of said data register.

15. The method of claim 9, further comprising the steps of:

embodying in said integrated circuit at least one non-testable embedded core circuit not having a test port for controlling electronic test of said non-testable embedded core circuit; and

controlling test of said at least one non-testable embedded core circuit via said test access port controller.

16. The method of claim 9, further comprising the steps of:

testing said integrated circuit by sequentially for each testable embedded core circuit

controlling said programmable switch to connect said second test access port of one of said plurality of testable embedded core circuits to said first test access port,

supplying said corresponding test vector to said first test access port,

supplying data on said test data input line of said first test access port to load said predetermined wake-up instruction into said snoopy instruction register when in a snoopy state corresponding to said instruction input state,

controlling said programmable switch to disconnect said second test port of all of said plurality of testable embedded core circuits from said first test access port, and

supplying data on said test data input line of said first test access port to change said internal state of said test access port controller to load said switch data register with data to control said programmable switch to connect said second test access port of a next one of said plurality of testable embedded core circuits until all testable embedded core circuits are tested.
 Description Submit all comments and votes
 


TECHNICAL FIELD OF THE INVENTION

The technical field of this invention is test access ports for integrated circuits and more particularly a manner to integrate core logic modules each having a test access port.

BACKGROUND OF THE INVENTION

Continuous decrease in feature size of transistors has led to the recent trend of core-based design. Today's integrated circuit (IC) becomes tomorrow's integratable core. Today's printed circuit board becomes tomorrow's IC. This decrease in feature size leads to the availability of unprecedented number of transistors on an integrated circuit. Current technology trends lead to projections of further rise in the number of transistors that may be integrated into a single IC. This expected trend in IC technology is leading to a re-prioritization of design issues. The traditional concern of gate/transistor count is becoming relatively less important. Issues like re-usability of existing designs, and minimization of design cycle time, are increasing continuously in importance. A major design problem for large integrated circuits is testability. Moreover, both the recurring and non-recurring test costs of such complex products now constitute a significant fraction of the total cost of the product. It is now likely that a single large IC will employ one or more preexisting cores. Currently the most widely accepted test standard for integrated circuits is IEEE Standard 1149.1, also known as JTAG. This standard was created with the primary goal of alleviating board-test problem via Test Access Ports (TAPs). The JTAG standard cannot be directly used in IC's containing cores which already include Test Access Ports. At the same time, widespread acceptance of JTAG in the electronics and semiconductor industry requires current and future IC's to be fully compliant with this standard. Thus there is a great need to develop a test access mechanism that allows embedded cores and non-core logic in an IC to be accessed via a well-defined JTAG interface.

Recently, some solutions have been proposed to address this problem that either violate the JTAG standard, or require modification of the TAP in existing cores, or follow a completely different Built-In Self Test (BIST) based technique to testing embedded cores, without addressing the issue of JTAG compliant test access to the embedded cores.

SUMMARY OF THE INVENTION

This invention is a testing technique for an electronic circuit such as an integrated circuit. The electronic circuit includes a first test access port, preferrably compliant with the IEEE Standard 1149.1 commonly known as JTAG. The electronic circuit includes at least one testable embedded core circuit having its own JTAG compliant second test access port. A test access port controller and a programmable switch control testing of the electronic circuit. The test access port controller is preferrably also JTAG compliant. An internal state in the test access port controller, such as bits in a data register, controls the switch state of the programmable switch. The programmable switch is controlled to selectively connect the first test access port to the embedded core circuits. When an embedded core circuit is connected for test, the test access port controller remains responsive to the first test access port and operates in a set of snoopy states corresponding to the state of the embedded core circuit under test. The test access port controller can control the programmable switch to regain control of the first test access port and disconnect all of the embedded core circuits when in snoopy states. This may occur upon detection of a wake-up instruction loaded into a snoopy instruction register during a snoopy state corresponding to an instruction input state. Alternatively, a count of instruction bits more than the most bits for instruction input for any embedded core can trigger the wake-up function.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other aspects of this invention are illustrated in the drawings, in which:

FIG. 1 illustrates the features of the prior art JTAG test access port as connected to a circuit under test;

FIG. 2 illustrates the state diagram of the prior art JTAG test access port;

FIG. 3 illustrates a first prior art technique to include plural cores with JTAG compliant test access ports in a single integrated circuit in which the plural test access ports are serially connected;

FIG. 4 illustrates a second prior art technique to include plural cores with JTAG compliant test access ports in a single integrated circuit in which the plural test access ports are selectively connected;

FIG. 5 illustrates a third prior art technique to include plural cores with JTAG compliant test access ports in a single integrated circuit known as test access port linking architecture;

FIG. 6 illustrates the state diagram of the prior art test access port linking architecture;

FIG. 7 illustrates the inventive technique for including plural cores with JTAG compliant test access ports in a single integrated circuit;

FIG. 8 illustrates the features of the programmable switch of this invention illustrated in FIG. 7;

FIG. 9 illustrates one manner in which the switch data register controls the state of the programmable switch;

FIG. 10 illustrates an alternative manner in which the switch data register controls the state of the programmable switch;

FIG. 11 illustrates the features of the snoopy test access port of this invention illustrated in FIG. 7;

FIG. 12 illustrates the state diagram of the snoopy test access port of this invention;

FIG. 13 illustrates an expanded view of two of the states of the snoopy test access port illustrated in FIG. 11;

FIG. 14 illustrates a use of the hierarchical test access port of this invention;

FIG. 15 illustrates the construction of snoopy test access port employing an alternative manner of returning from snoopy state;

FIG. 16 illustrates a state diagram of the alternative of FIG. 15;

FIG. 17 illustrates the construction of snoopy test access port employing a second alternative manner of returning from snoopy state; and

FIG. 18 illustrates a state diagram of the second alternative of FIG. 17.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

FIG. 1 illustrates the basic parts of a JTAG interface, which specifies a test architecture for exemplary integrated circuit 100. Integrated circuit 100 includes core logic 110 and various normal input/output pins 111 and 113. This standard permits internal scan, boundary scan, built-in self-test (BIST), and vendor-specific design-for-testability features all to be accessed and controlled via the same test access port (TAP). The overall structure of the TAP includes four essential parts: a TAP controller 121; an instruction register (IR) 123, which can be loaded with instructions related to various test actions; a decode logic 125 which decodes the contents of instruction register 123 to generate appropriate control signals; and a set of other registers called data registers. The data registers must include a boundary scan register (BSR). In FIG. 1 boundary scan register 127 is illustrated as parts 127a to 127h, which connect to respective input/output lines 111 and 113. FIG. 1 further illustrates two data registers bypass register 129 and ID register 131. The JTAG standard permits circuit specific data registers which commonly include various registers in the circuit under test (CUT).

The TAP controller 121 is a 1-input synchronous sequential circuit whose operation is controlled via two pins. These two pins are: test mode select TMS 133; and test clock TCK 135. The test mode select pin 133 serves as the sole input to TAP controller 121. The TAP specification requires two other pins: test data input TDI 137; and test data output TDO 139. The test data input pin 137 and the test data output pin 139 are used to serially shift into and out of various registers including circuit specific registers. The TAP specification permits an optional test reset pin TRST* 141. The test reset pin 141 facilitates resetting of the TAP controller 121. In general, data is loaded into the various data registers via test data input pin 137 and instructions are loaded into instruction register 123 also via test data input pin 137. These instructions are decoded via decoder logic 125 to enable various actions like a scan test, BIST, emulation, etc. Results of the tests may be read out of the data registers via test data output pin 139.

FIG. 2 illustrates a state diagram of test access port controller 121 as specified in the JTAG standard. All the signals illustrated are input at the test mode select pin 133 which are read at edges of the test clock. Test access port controller 121 is initially in test logic reset state 201. Test access controller 121 remains in Test Logic Reset state 201 while test mode select TMS is 1. If test mode select TMS becomes 0, then test access controller 121 transits to the Run Test/Idle state 202. Test access port controller 121 remains in the Run Test/Idle state while test mode select remains 0. If test mode select TMS becomes 1, then test access port controller 121 transits to Select Data Register-Scan state 210. Data from test data input TDI can be scanned into a selected data register in the Shift-Data Register state 211 or the process caused in Pause-Data Register state 214. From either Exit 1-Data Register state 213 or Exit 2-Data Register state 215, Update-Data Register state 216 updates the selected data register. If test mode select TMS is 0, then test access controller 121 returns to Run Test/Idle state 202. If test mode select TMS is 1, then test access controller 121 returns to Select Data Register-Scan state 210 to access another data register. According the JTAG standard the number of data registers and their length is implementation dependent. A similar loop including states 220 to 226 permits selection and scan into an instruction register. The JTAG standard specifies a single instruction register whose length is implementation dependent. The details of this state diagram are not important to this invention. It is sufficient to note that for any particular implementation of a test access port controller, it is possible to place the JTAG interface into a mode to shift in data from test data input pin 137 into any of the data registers and into the instruction register.

The JTAG standard was formulated with the goal of allowing exactly one test access port per IC. This standard does not take into account the possibility of designs containing multiple cores, some of which already have JTAG compliant test access ports. Consequently, the rapid rise in designs using multiple cores from a variety of vendors has made this shortcoming of JTAG, a major problem. Quite often, the JTAG compliant test access port in a core is inherited from its past as a standalone IC. This JTAG compliant test access port is intimately tied to testing and/or emulation strategies of the core. In many instances these cannot be easily changed. In many instances the semiconductor manufacturer has no access to the actual design which was purchased as a package from a core intellectual property vendor. Thus changes related to the test access port are impossible. Even if the manufacturer has access to the design, a new test access port design incurs extremely high expenses of reworking the tests and/or the emulation methodology. As a result, various ad-hoc solutions have emerged. There may be two or more such cores in a single integrated circuit. In addition, a typical integrated circuit having a core based design includes additional circuits not having an included test access port. The final integrated circuit design preferably includes a JTAG compliant test access port for testing these non-TAPed cores (NTC).

FIG. 3 illustrates an example of a first known strategy dealing with this problem. In FIG. 3 the plural test access ports are serially connected. Integrated circuit 300 includes a boundary scan register (ICBSR) 305 similar to boundary scan register 127 illustrated in FIG. 1. Integrated circuit 300 includes plural non-TAPed cores referred to generally as 310 and TAPed cores 320 and 330. The non-TAPed cores 310 are connected to a first test access port TAP1317. Test access port 317 is provided in the same manner as for original JTAG compliant designs. First TAPed core 320 includes its own core boundary scan register CBSR and a second test access port 327. Similarly, second TAPed core 330 includes core boundary scan register (CBSR) 335 and a third test access port TAP3337. Each of the TAPed cores 320 and 330 forms a JTAG compliant system with its respective test access port TAP2327 and TAP3337. Both core boundary scan registers 325 and 335 are coupled to integrated circuit boundary scan register 305. A single scan chain from test data input TDI to test data output TDO is created for all test access ports in the entire integrated circuit 300. Though FIG. 3 illustrates three test access ports TAP1317, TAP2327 and TAP3337, one skilled in the art would realize this technique could be used for integrated circuits with as few as two test access ports and for greater numbers of test access ports. The test data input TDI for integrated circuit 300 is coupled to the test data input of test access port 317. The test data output of test access port 317 is connected to the test data input of test access port 327. The test data output of test access port 327 is connected to the test data input of test access port 337. Finally, the test data output of test access port 337 forms the test data output TDO for integrated circuit. 300. The effectively chains up the test access ports in the embedded cores with the test access port providing test access to the entire integrated circuit 300. The other JTAG lines test clock TCK, test mode select TMS and test reset TRST* (if present) are connected to all the test access ports 317, 327 and 337 in parallel. This maintains the same integrated circuit pins as required of a single test access port.

The major problem with this approach is that the resultant design is essentially non-compliant with JTAG. Multiple test access port controllers get exercised in every clock cycle. Theoretically, one could compose test access port TAP1317, test access port TAP2327 and test access port TAP3337 to create a composite TAP to force compliance with the JTAG framework. In reality, this is not an option. Core vendors are unlikely to provide all the information necessary to model the composite TAP. More importantly, the cost of creating such a model will be unacceptably high.

FIG. 4 illustrates a second known technique for combining plural cores with independent JTAG compliant test access ports on a single integrated circuit. In FIG. 4 the plural test access ports are individually selectable. Integrated circuit 400 includes a boundary scan register (ICBSR) 405, plural non-TAPed cores referred to generally as 410 serviced by test access port 417 and TAPed cores 420 and 430 in a manner similar to integrated circuit 300 illustrated in FIG. 3. In integrated circuit 400 all the pins specified in the JTAG standard, including test data in TDI, test data out TDO, test clock TCK, test mode select TMS and test reset TRST* (if present), are connected in parallel to all the test access ports 417, 427 and 437. This technique relies on the tri-state output requirement on the test data output TDO pins when the test access port is idle to be able to tie these together into one net. This technique uses extra select pins S0 and S1 to selectively enable individual test access ports 417, 427 and 437. This is needed in order to allow proper functioning of the test access ports when driven in parallel.

This second technique poses problems. The JTAG standard does not have any provision for the select pins S0 and S1. Consequently, extra logic needs to be added to each test access port to allow such selection via these selection pint. More importantly, the number of select pins increases with the number of embedded cores. This is likely to constitute an unacceptably high pin overhead, as the number of embedded cores in a single integrated circuit continues to increase. These select pins are also not recognized by the existing software tools for modeling and simulation of test access ports. Finally, the extra pins lead to extra routing in the system board. Overall, it is thus felt that the use of select pins to selectively enable TAPs, is not an acceptable solution.

FIG. 5 illustrates a third known technique for combining plural cores with independent JTAG compliant test access ports on a single integrated circuit. Integrated circuit 500 includes a boundary scan register (ICBSR) 505, plural non-TAPed cores referred to generally as 510 serviced by test access port 517 and TAPed cores 520 and 530 in a manner similar to integrated circuit 300 illustrated in FIG. 3 and integrated circuit 400 illustrated in FIG. 4. Lee Whetsel proposed this systematic solution to this problem, which is designated the test access port linking architecture (TLA), in Whetsel, L., "An IEEE 1149.1 Based Test Access Architecture for INTEGRATED CIRCUITS with Embedded Cores," Proc. Int'l. Test Conference, 1997. In this approach, the test bus according to the JTAG specified inputs and outputs is connected to a special module designated the test access port linking module TLM 540. The test access port linking module 540 is a finite-state machine which controls access to the test bus and selectively enables/disables the various test access ports 517, 527 and 537. The test access ports 517, 527 and 537 are connected to the integrated circuit JTAG inputs and outputs via test access port linking module 540. Test access port linking module 540 generates enable signals ENA1, ENA2 and ENA3 for corresponding test access ports TAP1517, TAP2527 and TAP3537. Test access port TAP1527 is selected at power-up or when test access port linking module 540 is reset. Test access port linking module 540 is a shared resource between the test access ports TAP1517, TAP2527 and TAP3537. The state of test access port linking module 540 can be accessed and changed by the currently enabled test access port. This is achieved via the select signals SEL1, SEL2 and SEL3.

FIG. 6 illustrates the state diagram of a system employing test access port linking module 540. In order to achieve proper selection and de-selection of the embedded cores using the test access port linking module 540, the state diagrams of the embedded test access port controllers must be modified. The test access ports leave Run Test/Idle state 602 only when both test mode select TMS and the corresponding enable ENA signal are 1. The update-Data Register state 616 links or unlinks depending upon the state of both the test mode select TMS signal and the corresponding enable ENA signal. Other portions of the test port controller state diagram are the same as the prior JTAG standard as illustrated in FIG. 2.

The test access port linking architecture (TLA) has several advantages over the other ad-hoc approaches illustrated in FIGS. 3 and 4. The test access port linking architecture forces synchronous transition of all test access ports and the test access port linking module from initial the reset state to the Run Test/Idle state. This technique allows the initially enabled test access port TAP1 to follow the test bus from Run Test/Idle state, while the non-enabled test access ports remain in the Run Test/Idle state. The test access port linking module allows all linking/unlinking operations to happen only in the Update-Data Register state. All unlinked test access ports automatically go to the Run Test/Idle state. This ability is especially useful for allowing cores with non-enabled test access ports to provide inputs to the core with the enabled test access port or allowing cores with non-enabled test access ports to run built-in self test (BIST) while the core with an enabled test access is exercised via the test bus. The test access port linking module also allows some flexibility in synchronizing the enabled test access ports state to the state of the test bus.

While the test access port linking architecture addresses several problems of other ad-hoc approaches to handling of embedded cores with built-in test access ports, many concerns remain. The fact that the existing test access ports in the embedded cores need to be modified to add extra ports and logic is a major concern. Extra hardware is needed to generate the SEL signal and extra logic is needed to properly handle the ENA signal. While the actual amount of hardware involved is small, such changes to the test access port involve significant non-recurring expense (NRE) in terms of validating the changes in the context of a given core. A more significant concern stems from the requirement that the embedded test access port controller state-diagrams be modified as illustrated in FIG. 6. This involves non-trivial effort re-design of the core and non-trivial changes to the software tools that model and simulate the test access environment. Given the amount of time needed to adopt accept the JTAG standard, any suggestion of a major re-design of existing parts is likely to meet with resistance from the vendors. Yet another concern arises out of the use of a separate test access port controller in the test access port linking module on top of test access port TAP1 used to provide JTAG compliant test access to the entire integrated circuit. The amount of logic involved is not large, but it is nevertheless overhead.

The most significant concern about the test access port linking architecture, stems from likely consequences of the rapid increase in the number of devices on an integrated circuit. The test access port linking architecture may not be able to provide the type of hierarchical test access solution that will be necessary. The following two examples illustrate possible shortcomings of the test access port linking architecture, in the context of future integrated circuit technologies. For systems where time to market is critical, and cost per piece is of secondary importance, it is widely expected that the board of today will become a single integrated circuit tomorrow, and an integrated circuit of today will become an embedded core tomorrow. When that happens, the test access port requirements for the core which includes the SEL and ENA ports will be different from the test pin requirements for today's integrated circuit which has no room for SEL and ENA pins in its JTAG compliant interface. Consequently, the test access port must be re-designed when the integrated circuit design becomes an embedded core. This would involve significant non-recurring expense. Even if today's integrated circuit were to be designed with a test access port linking module, when that integrated circuit design becomes an embedded core, the test access port linking module will have to be replaced by a test access port linking module that has SEL and ENA ports, since the integrated circuit design test access port linking module would have no room for the required SEL and ENA ports. Thus the test access port linking architecture does not provide a truly hierarchical solution to the test access problems for systems with multiple-levels of embedded cores, such as are foreseen in not-too-far future. With the advent of very short-channel integrated circuit technologies allowing billions of transistors to be integrated in one device, designers are likely to embed many tens of cores in one integrated circuit. Providing proper test access in such a design, will require the creation of a hierarchy of test access port linking modules. Two types of test access port linking modules will be required: the test access port linking module as proposed by Whetsel at the highest level of hierarchy; and a modified test access port linking module with SEL and ENA ports at lower levels of hierarchy.

FIG. 7 illustrates the hierarchical test access port (HTAP) of this invention for combining plural cores with independent JTAG compliant test access ports on a single integrated circuit. Integrated circuit 700 includes a boundary scan register (ICBSR) 705, plural non-TAPed cores referred to generally as 710 serviced by test access port 717 and embedded TAPed cores 720 and 730 in a manner similar to integrated circuit 300 illustrated in FIG. 3, integrated circuit 400 illustrated in FIG. 4 and integrated circuit 500 illustrated in FIG. 5. From a functional point of view, the hierarchical test access port (HTAP) performs three major tasks in order to provide systematic and truly hierarchical test access to embedded cores. Firstly, the hierarchical test access port 727 preforms normal JTAG compliant test access port operations for the non-TAPed cores 710. Secondly, the hierarchical test access port 717 coordinates connection between the test bus and test access ports in embedded cores via a programmable switch 740. Lastly, hierarchical test access port 717 monitors the test access port currently being exercised via the test bus when an embedded test access port is in control of the test bus. This monitoring is accomplished via a snooping mechanism. The hierarchical test access port continues to monitor the test mode select line after yielding the test bus to an embedded test access port. The hierarchical test access port consists of two distinct blocks, a snoopy test access port (SN-TAP) 717 and a programmable switch 740. The programmable switch 740 is a crossbar switch with a flip-flop at each interconnection point. FIG. 7 illustrates an overall view of an example system employing a hierarchical test access port that includes two embedded cores and several pieces of non-core logic.

FIG. 7 illustrates the structural features of the hierarchical test access port of this invention. The test clock TCK pin of integrated circuit 700 is connected to the snoopy test access port 717 and to all embedded test access ports 727 and 737. This connection may optionally be made via a not illustrated buffer tree if necessary for drive considerations. The test mode select TMS and test data input TDI pins of integrated circuit 700 are connected directly to snoopy test access port 717 and to programmable switch 740. The test data output TDO output of snoopy test access port 717 is connected only to programmable switch 740. The embedded test access ports 727 and 737 receive their test mode select TMS and test data input TDI inputs from programmable switch 740. The embedded test access ports 727 and 737 supply their test data outputs TDO only to programmable switch 740. The test data output TDO of integrated circuit 700 is supplied by programmable switch 740. The optional test reset TRST* pin of integrated circuit 700 is supplied to snoopy test access controller 717 and may be passed on to programmable switch 740.

FIG. 8 illustrates details of programmable switch 740. Control of the state of programmable switch 740 is provided by switch data register SDR 801. Switch data register SDR 801 is a data register controllable by snoopy test access port 717. Switch 803 is essentially a crossbar switch between test mode select TMS, test data input TDI and test data outputs TDO1, TDO2 and TDO3 as inputs and test mode select TMS2 and TMS3 and test data inputs TDI2 and TDI3 as outputs. Each crosspoint controlled by a flip-flop (or latch, if appropriate). These flip-flops together constitute switch data register 801. Switch data register 801 is controlled by snoopy test access port 717 and hence can be set to any combination of values shifted in via the integrated circuit TDI pin. This permits virtually any interconnection between the embedded test access ports. Some of the possible interconnection modes may not be JTAG compliant. Such non-compliant interconnection modes may be used for vendor-specific testing of integrated circuit 700.

Switch data register SDR 801 is controlled via a set of signals generated by snoopy test access port 717 known collectively as switch control. These signals are an implementation dependent control permitted by the JTAG standard. As seen in FIG. 8, the test data output TDO of snoopy test access port 717 and the serial output of switch data register 801 require somewhat special handling. This will is discussed below.

FIGS. 9 and 10 illustrate alternative manners in which switch data register 801 controls switch 803. Switch 803 is a crossbar with horizontal lines connected to integrated circuit 700 test mode select TMS, test data input TDI and test data output TDO pins. The vertical lines are connected to the JTAG connections of the various embedded cores. Crosspoint connections 811 optionally connect corresponding horizontal and vertical lines. For example, switch 803 could have crosspoints 811 enabled to connect the integrated circuit 700 test mode select TMS, test data input TDI and test data output