Abstract:
A method includes storing a first transaction entry to a first software configurable storage location, storing a second transaction entry to a second software configurable storage location, determining that a first transaction indicated by the first transaction entry has occurred, determining that a second transaction indicated by the second transaction entry has occurred subsequent to the first transaction, and, in response to determining that the first transaction occurred and the second transaction occurred, storing at least one transaction attribute captured during at least one clock cycle subsequent to the second transaction. The first and second software configurable storage locations may be located in a trace buffer, where the at least one transaction attribute is stored to the trace buffer and overwrites the first and second transaction attributes. Each transaction entry may include a dead cycle field, a consecutive transaction requirement field, and a last entry field.

Description:
FIELD OF THE INVENTION 
       [0001]    This invention relates to system on a chip (SOC) type integrated circuit, and more particularly, to such an integrated circuit having a trace buffer. 
       BACKGROUND OF THE INVENTION 
       [0002]    As integrated circuits have been able to have more and more transistors, a continuing trend has been to have more and more functions on a particular integrated circuit. This has been generally called a system on a chip (SOC). A common characteristic of SOC type integrated circuits is one or more processors coupled to a variety of functional circuits through different interface buses. With the functional circuits on the integrated circuit, it is often more efficient to design the integrated circuit in such a way that results in not having access to the internal buses from outside the integrated circuit. Without access to the internal buses, it can be difficult to debug the integrated circuit during qualification of the product. 
         [0003]    To help this, trace buffers have been developed to provide certain internal bus information under certain conditions. This has been helpful but the information has been limited and certainly less complete than having direct access to the internal bus. 
         [0004]    Thus, there is a need to have better information about the bus in a SOC type integrated circuit. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0005]    The foregoing and further and more specific objects and advantages of the invention will become readily apparent to those skilled in the art from the following detailed description of a preferred embodiment thereof taken in conjunction with the following drawings: 
           [0006]      FIG. 1  is an circuit according to an embodiment of the invention; and 
           [0007]      FIG. 2  is a structure and a 64-bit entry structure useful in the circuit of  FIG. 1 ; 
           [0008]      FIG. 3  is a flow diagram of a method of operating the circuit of  FIG. 1 ; and 
           [0009]      FIG. 4  is a flow diagram of an extension of the method of  FIG. 3 . 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0010]    In one aspect a circuit has a processor and a trace circuit in which the trace circuit is software configurable so that a wide variety of options are available to be checked. This is highly beneficial because the particular combination that may be under consideration can be monitored for proper operation. This is better understood by reference to the drawings and the following description. 
         [0011]    Shown in  FIG. 1  is a system on a chip (SOC) type integrated circuit  10  comprising a processor  12 , a system interconnect  14  coupled to processor  12 , a trace circuit  16  coupled to system interconnect  14 , a processor  18  coupled to system interconnect  14 , a dual data read controller  20  coupled to system interconnect  14  and having an external interface from integrated circuit  10 , and an I/O controller  22  coupled to system interconnect  14  and having an external interface from integrated circuit  10 . Trace circuit  16  comprises a trace buffer  26 , a trace buffer controller  27  coupled to trace buffer  26 , trace buffer registers  28  coupled to trace buffer controller  27  and system interconnect  14 , and a transaction monitor  30  coupled to trace buffer  26 , trace buffer controller  27 , and system interconnect  14 . Integrated circuit  10  is a multi-processor system with additional masters such as dual data read controller  20  as well as I/O controllers  22  and  24 . Transaction monitor  30  contains a dead cycle counter  32 . It is understood that other additional functions that are not shown in  FIG. 1 , a cache for example, may be included in integrated circuit  10 . 
         [0012]    System interconnect  14  has the main data and address buses as well as the necessary circuitry to control access to these internal buses. An arbitration unit, for example, is included in system interconnect  14 . Trace buffer  26  may conveniently be a static random access memory (SRAM). Trace circuit  16  is used to determine when a particular transaction or series of transactions has occurred in system interconnect  14  based on the contents of trace buffer  26 . When this occurs it is called a match. Trace buffer  26  is software configurable to contain a wide variety of conditions for monitoring system interconnect by transaction monitor  30 . Trace buffer  26  is loaded through trace buffer registers  28  and trace buffer controller  27  with a plurality of entries. In this example the entries are 64 bits in length and there is a possible number of 256 entries. Thus, there are up to 256 transactions that can be monitored in order to receive a complete match. In operation, an entry is loaded into trace buffer  26  corresponding to each transaction that is to be monitored. Transaction monitor determines if there is a match on each clock cycle of system interconnect  14 . If there is a match, then a transaction match has occurred and the next entry is then used by transaction monitor to monitor the next clock cycle. As transaction matches continue, then the trace monitor continues to provide new entries which can be up to the memory capacity which in this example is 256. Once all of the entries that are desired to be monitored have been used and there is a transaction match on the last one, there is then a complete match. Recording of conditions occurring after the complete match then may proceed. 
         [0013]    Shown in  FIG. 2  is a configuration diagram of an entry  40  used by trace buffer  26  and the code for use by transaction monitor to enable proper monitoring and determining of a transaction match. Entry  40  uses the first 6 bits,  0 - 5 , to provide the information which subsequent fields are to be monitored for a match. The next 5 bits,  6 - 10  are for pointing out the source of the particular clock cycle. For example, processors  12  and  18  and controllers  20 ,  22 , and  24  are possible sources that may be identified by these 5 bits. The next 4 bits,  11 - 14 , identify the target. The next 5 bits,  15 - 19 , identify the type of read or write. There are many different kinds of reads and writes, especially as they relate to a cache. Examples include write with flush, read with cache allocate, and read with no intent to cache. The next 6 bits are for providing how many dead cycles between transactions being monitored. The next bit,  26 , is for identifying there is a consecutive requirement that is being required. To fulfill the consecutive requirement if that is selected at bit  26 , the next valid transaction must match the requirements. If the consecutive requirement is not selected, a transaction match can occur even with intervening valid transactions that are not a match. The next bit,  27 , is to identify if it is the last entry for determining a complete match. The number of entries can be anywhere from 1 to 128 in this example. The last entry will be identified at bit  27 . The next 4 bits,  28 - 31 , are for the first four bits of a normal address, which is 36 bits. The final 32 bits are for the last 32 bits of the normal 36 bit address or for all of the bits of a program context ID, which is 32 bits. Any of the bits of address in any combination can be masked by trace controller  26 . Masking, however, is for all of the entries in trace buffer  26 . 
         [0014]    In operation, an entry or plurality of entries up to 256 are made in trace buffer  26 . For a transaction match, transaction monitor  30  identifies what is to be monitored as identified in the first entry and ultimately provides a complete match indicator after all entries have been matched. For a particular transaction match, transaction monitor receives the required information from trace buffer  26 . The field enable portion of entry  40 , the entry corresponding to the next clock cycle to be monitored, identifies which part of the bus is to be monitored for a transaction match. For example, it may not matter what the target is. In such case the source, the type of read/write, the dead cycle requirement, the consecutive transaction requirement, and address must be met in order for there to be a transaction match. 
         [0015]    A method of determining a complete match is shown in  FIG. 3 . Trace buffer  26  is first loaded with the entries that define the sequence of transactions to be monitored. This is achieved under the direction of one of the masters and through system interconnect  14 , trace buffer registers  28 , and transaction buffer controller  26 . Transaction buffer controller provides the data-in and the index to trace buffer  26  to achieve the loading of trace buffer  26  with the sequence of transactions. 
         [0016]    After loading trace buffer  26 , the first entry is received by transaction monitor  30  which then interprets the entry as indicated for entry  40  and monitors system interconnect  14  accordingly shown as step  42 . In step  44 , transaction monitor  30  determines if the transaction is valid. If so, in step  46 , transaction monitor determines if there is a transaction match. If so, in step  48 , transaction monitor  30  determines if it is the last transaction. If no, in step  50 , then transaction monitor  30  increments the index for trace buffer  26  to point to the next entry in trace buffer  26  and sets dead cycle counter  32  to zero and the process continues again with step  42 . If instead of the transaction being valid at step  44 , it is not valid, then dead cycle counter  32  is incremented as shown in step  56 . If the dead cycle counter, after incrementing at step  56 , is greater than the dead cycle field of the current entry, then transaction monitor  30  sets the index to zero and resets the dead cycle counter to zero as shown at step  54 . If, at step  46 , there is no transaction match, then at step  60 , there is decision based on the consecutive requirement. If the index is greater than zero, then there is a determination as to whether the current transaction is required to be consecutive with the previous transaction. If yes, then index is set to zero. If no, then step  44  is the next step as applied to the next clock cycle. In step  48 , after a transaction match has been determined in step  46 , then the next step, step  62 , is for transaction monitor  30  to provide an indication that there is a complete match for the sequence of entries, set the index to zero, and set the dead cycle counter to zero. At this point trace buffer  26  is available to be overwritten with transactions that need to be recorded. 
         [0017]    Shown in  FIG. 4  is the continuation of  FIG. 3  to  FIG. 4 . After step  62  of  FIG. 3 , which indicates a complete match A, then from A in  FIG. 4 , recording begins. In the first step, step  64 , transaction monitor determines if the transaction is valid in the clock cycle following the determination of the complete match. If yes, transaction buffer controller  26 , in step  66 , identifies if the canceled transactions are to be traced into trace buffer  26 . This decision is based on information loaded into trace buffer registers  28 . If yes at step  66 , then trace buffer controller  27  writes the transaction attributes and the dead cycle counter value into trace buffer  26 . Exemplary transaction attributes are source ID, target ID, and transaction type. The transaction can be either a data or an address transaction. This determination as to which particular transaction type is to be loaded into trace buffer  26  is based on information that is loaded into trace buffer registers  28 . If yes at step  66 , trace buffer controller  27  also increments the index and sets dead cycle counter  32  to zero. Then at step  70 , there is a determination by trace buffer controller  27  if trace buffer  26  is full or if there is an indication to stop recording stored in trace buffers  28 . If yes to either, then recording is complete as shown in step  72 . If not, then the next clock cycle is monitored in the same beginning with step  64 . If at step  64  the current transaction being monitored by transaction monitor  30  is not valid, then the dead cycle is incremented and the next step is step  64 . If at step  66  trace buffer controller  27  determines that canceled transactions are not to be traced, then at step  76  trace buffer controller  27  determines if the transaction is to be cancelled. If no, then the action of recording as described for step  68  commences. If yes, then the dead cycle counter is incremented as shown in step  74  then the next clock cycle is monitored as shown commencing with step  64 . 
         [0018]    These methods of  FIGS. 3 and 4  are shown as looping back so that there may be many cycles before a complete match or even a transaction match is achieved. In the case of recording, one transaction attribute is recorded followed by subsequent recordals of transaction attributes. Similarly, an event match is followed by subsequent event matches. These multiple matches and multiple recordals can be up to the available memory amount for trace buffer  26 . 
         [0019]    Thus, trace buffer  26  is used not only for recording transaction attributes but also for storing the sequence of transactions that are to be monitored in system interconnect  14 . Trace buffer  26 , being software configurable, provides for great flexibility in determining which transactions are monitored. The entry of the transactions being in a 64 bit entry provides for a wide variety of choices utilizing the field enable feature to identify what in particular is to be monitored. 
         [0020]    Various other changes and modifications to the embodiments herein chosen for purposes of illustration will readily occur to those skilled in the art. For example, the number of bits of an individual entry, which was described as 64, as well as the number of entries, which was described as 256, in trace buffer  26  can vary. The trace buffer was described as a SRAM but another memory type may be effective. Examples were described to aid in understanding. It was not intended that these examples were the only examples. To the extent that such modifications and variations do not depart from the spirit of the invention, they are intended to be included within the scope thereof which is assessed only by a fair interpretation of the following claims.