US20050268177A1 - Compression of data traces for an integrated circuit with multiple memories - Google Patents
Compression of data traces for an integrated circuit with multiple memories Download PDFInfo
- Publication number
- US20050268177A1 US20050268177A1 US10/843,971 US84397104A US2005268177A1 US 20050268177 A1 US20050268177 A1 US 20050268177A1 US 84397104 A US84397104 A US 84397104A US 2005268177 A1 US2005268177 A1 US 2005268177A1
- Authority
- US
- United States
- Prior art keywords
- memory
- address
- data
- integrated circuit
- trace
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/40—Response verification devices using compression techniques
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
- G11C29/56008—Error analysis, representation of errors
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3177—Testing of logic operation, e.g. by logic analysers
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318505—Test of Modular systems, e.g. Wafers, MCM's
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0401—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals in embedded memories
Definitions
- the present invention relates generally to integrated circuits, and more specifically to techniques for compressing data and address traces for testing and debugging an integrated circuit with multiple memories.
- a system-on-chip (SOC) device may include a microprocessor, a memory, and other processing units, all of which are embedded on a single integrated circuit.
- the microprocessor may perform various functions and/or control the processing units.
- the processing units may be designed to perform specific computational tasks.
- the memory may store code and data for the microprocessor and processing units.
- a technique commonly used for debugging an integrated circuit is real-time tracing, which includes program/instruction tracing and data tracing.
- Program tracing refers to the capture of lines of code being executed by processors within the integrated circuit
- data tracing refers to the capture of data accessed by the processors.
- the real-time tracing provides a user/developer with the capability to capture and view instructions and data accesses within the integrated circuit at run-time speed. This helps the user/developer to track down bugs in the hardware and/or code such as, for example, obscure bugs that only occur in situations where there is an unpredictable interaction between the hardware and code.
- Real-time trace capability is normally provided by a trace module and a trace port that are embedded within the integrated circuit.
- the trace module typically includes configurable filters and trigger logic that allow the user/developer to select which instructions and data to capture and report. The captured information is often compressed and then provided via the trace port to an analysis tool located off-chip. Conventionally, the trace module only supports data tracing for a single memory or a unified data memory within the integrated circuit.
- trace data may include memory address and data, program counter value, time reference, and any other information that may be useful for testing and debugging the integrated circuit.
- the trace data for each memory is appropriately identified based on a memory identifier assigned to that memory.
- An embodiment provides an integrated circuit with multiple memories and a trace module. Each memory is accessible independently of the other memories, and the multiple memories may be accessed concurrently.
- the trace module forms packets of trace data for memory accesses of the multiple memories, one trace data packet for each memory access. Each trace data packet includes an address and/or data for a memory access of a particular memory and a memory identifier for that memory.
- the trace module includes multiple data capture units, a trace stream generator, and a buffer.
- One data capture unit is provided for each memory.
- Each data capture unit includes an address register, an address comparator, an address compressor, a data compressor, and a packetizer.
- the address register stores an address for a prior memory access of the associated memory.
- the address comparator compares an address for a current memory access of the associated memory against the address stored in the register.
- the address compressor performs address compression for the current memory access, based on the output from the address comparator, and generates a compressed address for the current memory access.
- the data compressor performs data compression for the current memory access.
- the packetizer forms a trace data packet for the current memory access of the associated memory.
- the trace stream generator receives trace data packets from the multiple data capture units and generates a trace data stream containing these packets.
- the buffer stores the trace data stream and provides the trace data off-chip when triggered.
- Each trace data packet may include (1) a field for the memory identifier, (2) an address field having a variable size, (3) at least one field indicative of the address field size, (4) a data field having a variable size, (5) a field indicative of the data field size, and (6) possibly other fields.
- Various packet formats are described below.
- Each trace data packet may include (1) an uncompressed, compressed, or null address, (2) uncompressed, compressed, or null data, and (3) other information such as the memory identifier.
- the integrated circuit may further include one or more digital signal processors (DSPs), microprocessors, controllers, and so on.
- DSPs digital signal processors
- microprocessors microprocessors
- controllers controllers
- the multiple memories may be used to store data for the DSP(s).
- FIG. 1 shows an integrated circuit with multiple embedded memories and having tracing capability for testing and debugging
- FIG. 2 shows a block diagram of a trace module
- FIG. 3A shows data accesses for a conventional integrated circuit with a single memory
- FIG. 3B illustrates an address compression technique for data tracing
- FIG. 3C shows data accesses for an integrated circuit with multiple memories
- FIG. 4 shows a block diagram of a trace data capture unit for a DSP
- FIGS. 5A through 5D show four exemplary trace data packet formats
- FIG. 6 shows a process for performing data tracing for an integrated circuit with multiple (e.g., three) independently accessible memories.
- FIG. 1 shows a block diagram of an integrated circuit 100 with multiple embedded memories and having tracing capability for testing and debugging.
- Integrated circuit 100 includes multiple embedded processors and controllers such as a microprocessor 110 , a digital signal processor (DSP) 120 , and a direct memory access (DMA) controller 130 .
- Microprocessor 110 performs general processing for integrated circuit 100 and may be implemented with a reduced instruction set computer (RISC) or some other type of microprocessor.
- RISC reduced instruction set computer
- DSP 120 is a specialized processor that is specifically designed to perform mathematical computations very rapidly.
- DSP 120 may include various processing units such as multiply-accumulate units (MACCs), arithmetic logic units (ALUs), and so on.
- MCCs multiply-accumulate units
- ALUs arithmetic logic units
- DMA controller 130 handles real-time high-rate data exchanges between DSP 120 and other processing units external to integrated circuit 100 .
- the interconnections between microprocessor 110 , DSP 120 , and DMA controller 130 are not shown in FIG. 1 .
- integrated circuit 100 may include any number and any type of processors and controllers.
- Microprocessor 110 implements a “Harvard” architecture, which uses separate instruction memory 114 and data memory 116 to store instructions and data, respectively.
- a memory controller 112 provides microprocessor 110 with the necessary instructions and data from memories 114 and 116 .
- DSP 120 implements a “super-Harvard” architecture, which uses separate instruction memory 124 to store instructions and multiple data memories 126 a through 126 c to store data. Memories 126 a , 126 b , and 126 c are also denoted as data memories A, B, and C, respectively.
- a memory controller 122 provides DSP 120 with the necessary instructions and data from memories 124 and 126 .
- DMA controller 130 also interfaces with memory controller 122 for data exchanges.
- the processors and controllers within integrated circuit 100 may implement any type of memory architecture.
- integrated circuit 100 may include any number of memories.
- Each memory within integrated circuit 100 is an independent memory that may be individually accessed to store/retrieve instructions/data.
- Each memory is managed by an associated memory controller.
- Each memory may also be referred to as a memory bank, a memory cache, or some other terminology.
- an integrated circuit includes a single memory or a unified memory for storing data.
- the single data memory can typically be accessed to obtain a particular number of (e.g., four) bytes of data at a time.
- Multiple data memories may be used to obtain various benefits such as, for example, parallel operation, higher memory throughput, and greater storage flexibility.
- different kinds of data may be stored in different memories, and a DSP can exploit the separate memories to achieve parallel loads of the different kinds of data.
- Multiple data memories differ from a unified memory in that these multiple data memories may use separate address generation units, separate memory buses, instructions which can perform concurrent data accesses of the separate memories, independent data widths, and so on.
- Integrated circuit 100 further includes a trace module 140 , a trace port 142 , and a JTAG (Joint Test Action Group) port 138 , which collectively provide testing and debugging capabilities for the integrated circuit.
- Trace module 140 includes various circuit blocks and registers that are used to monitor internal buses of microprocessor 110 , DSP 120 , and DMA controller 130 , as described below. Trace module 140 can capture information regarding the state of processors 110 and 120 and controller 130 to facilitate testing and debugging of integrated circuit 100 . Trace module 140 can further capture the information in a “non-intrusive” manner, i.e., without adding any burden to the performance of the processors and controller so that these units can operate at full speed.
- Trace module 140 provides the captured information as a trace data stream via trace port 142 .
- JTAG port 138 is used to configure trace module 140 and possibly the processors and controller within the integrated circuit. For simplicity, the interconnections between JTAG port 138 and the processors and controller are not shown in FIG. 1 .
- An analysis tool 190 interfaces with integrated circuit 100 via an interface module 180 .
- Analysis tool 190 may be a computer system, a logic analyzer, and so on, and may be implemented with hardware, software, or a combination thereof.
- a user/developer who is testing or debugging integrated circuit 100 can configure trace module 140 via analysis tool 190 , interface module 180 , and JTAG port 138 .
- the user/developer can, via trace port 142 and interface module 180 , receive the trace data stream containing information captured by trace module 140 .
- the user/developer can view and analyze the captured information using analysis tool 190 .
- FIG. 2 shows a block diagram of an embodiment of trace module 140 .
- Trace module 140 includes three trace data capture units 210 a , 210 b , and 210 c for microprocessor 110 , DSP 120 , and DMA controller 130 , respectively, a trace stream generator 250 , and a buffer 260 .
- Each trace data capture unit 210 captures trace data for a respective processor or controller and provides packets of trace data, as described below.
- Trace stream generator 250 receives trace data packets from all trace data capture units 210 and generates a trace data stream containing these packets. This single trace data stream thus carries trace data for instructions and memory accesses of all memories within integrated circuit 100 .
- Buffer 260 stores the trace data from trace stream generator 250 and provides the stored trace data when triggered. Buffer 260 may be filled with trace data based on the following triggering mechanisms:
- FIG. 3A shows an exemplary sequence of data accesses 310 for a conventional integrated circuit with a single memory.
- Each data access is associated with a memory address and corresponding data at that address.
- the trace module receives both the address and data for each memory access, captures the pertinent information, and generates a trace data packet for the memory access.
- the trace module typically performs compression on the address and/or data in order to reduce the amount of information to include in the trace data packet.
- FIG. 3B illustrates an address compression technique often used for data tracing.
- This address compression technique is based on an assumption that consecutive memory accesses are often made to memory locations close together. In this case, the address for each memory access may differ from the address for a prior memory access in only a small number of lower order or lesser significant bits.
- An address register is used to store the address for the last memory access. The address for the current memory access is compared against the stored address for the last memory access, and only the lower order bits in the current address that are different from the stored address (instead of the entire current address) are included in the trace data packet.
- the trace data packet may be designed to carry a certain number of address bits (e.g., 5, 12, or 18 address bits, for an exemplary trace data packet design described below).
- the smallest possible number of address bits is included in the trace data packet based on the number of lower order bits that are different. For example, if three lower order address bits are different, then the trace data packet would include five lower order address bits for the exemplary design noted above.
- the compressed address is quantized to 5, 12, or 18 bits depending on the number of lower order bits that are different.
- the use of a single register to store the address of the last memory access provides adequate address compression performance for an integrated circuit with a single memory.
- FIG. 3C shows an exemplary sequence of data accesses 330 for an integrated circuit with multiple memories (e.g., for integrated circuit 100 with three data memories 126 a , 126 b , and 126 c ).
- Multiple memories may be accessed concurrently, for example, to retrieve or store data for a single DSP instruction, which may include multiple arithmetic and/or logic operations.
- the data access for each memory is associated with a memory address and corresponding data at that address. Since the multiple memories may be accessed independently, the addresses for these memories may not be close to each other or correlated in any way. In this case, using a single address register to store a single memory address for address compression of multiple memories would provide poor compression performance if the addresses for these memories differ widely.
- the current addresses for memories A, B, and C may be 100, 5000, and 10000, respectively. If one address register is available, then this register would initially store memory A address of 100, which is then used for compression of memory B address of 5000, which is then used for compression of memory C address of 10000, which is then used for compression of memory A address for the next memory access, and so on. As can be seen, address compression performance may be poor using a single address register for multiple memories.
- Multiple address registers may be used to obtain improved address compression performance for an integrated circuit with multiple memories.
- One address register is used for each memory, and each register stores the address of the last memory access for its associated memory.
- the address for the current memory access of each memory is compared against the address stored in the register for that memory.
- registers A, B, and C would store addresses of 100, 5000, and 10000, respectively, for the current memory accesses of memories A, B, and C, respectively.
- the address for memory A would be compared against the address stored in register A
- the address for memory B would be compared against the address stored in register B
- the address for memory C would be compared against the address stored in register C. If consecutive memory accesses for each of these multiple memories are made to memory locations close together, which is the basic assumption used for the single-memory integrated circuit, then good address compression performance can be achieved for the integrated circuit with multiple memories.
- FIG. 4 shows a block diagram of an embodiment of trace data capture unit 210 b for DSP 120 .
- Unit 210 b includes three data capture units 410 a , 410 b , and 410 c for data memories 126 a , 126 b , and 126 c , respectively, and an instruction capture unit 412 for instruction memory 124 .
- Each data capture unit 410 includes a compression unit 420 , a packetizer 430 , and a filter 440 .
- a compression unit 420 a receives an address and corresponding data (which are denoted as memA_addr and memA_data, respectively) for a current memory access of memory 126 a .
- the current address, memA_addr is stored in an address register 422 a and also provided to an address comparator 424 a .
- Comparator 424 a also receives a stored address from register 422 a for a prior memory access of data memory 126 a , compares the current address against the stored address, and provides comparison result to an address compressor 426 a .
- Address compressor 426 a determines the number of lower order address bits in the current address that are different from the stored address and the minimum number (N) of address bits to be included in the trace data packet for the current memory access. Address compression may also be bypassed. Address compressor 426 a provides to a packetizer 430 a a compressed address containing N lower order bits in the current address or the uncompressed current address.
- a data compressor 428 a performs compression on the data for the current memory access.
- Data compression may be performed in various manners. For example, leading zeros in the data may be removed.
- the data for the current memory access may be compared against the data for the prior memory access, in similar manner as for address compression, and only the difference is sent. Some other examples include (1) removal of all zeros in the data and (2) constraining the data width to be 8 bits, 16 bits, or some other predetermined number of bits, depending on a priori knowledge of the data being traced, e.g., via user selection.
- Data compression may also be bypassed.
- Data compressor 428 a provides compressed or uncompressed data to packetizer 430 a.
- Packetizer 430 a receives the compressed or uncompressed address from address compressor 426 a and the compressed or uncompressed data from data compressor 428 a . Packetizer 430 a forms a trace data packet for the current memory access of memory 126 a , as described below.
- a filter 440 a provides user-controlled filtering for data tracing so that the amount of trace data to be sent off-chip can be minimized. For example, tracing may only be performed (1) for memory accesses within a specified range of addresses, (2) if some specified conditions are met, and/or (3) based on some other criteria. Filter 440 a provides filtered trace data for memory 126 a (e.g., trace data packets that meet filtering criteria).
- FIG. 4 shows a specific embodiment of data capture unit 410 a for memory 126 a .
- the other two data capture units 410 b and 410 c perform address and data compression, packetizing, and filtering for memory accesses of memories 126 b and 126 c , respectively.
- Instruction capture unit 412 may be implemented the same or different from data capture unit 410 .
- the address and data compression, packetizing, and filtering may be performed in various manners and possibly in a different order than that shown in FIG. 4 .
- the filtering may be performed prior to the compression.
- three different address registers 422 a , 422 b , and 422 c are used to store the addresses for the latest memory accesses of data memories 126 a , 126 b , and 126 c , respectively. This allows for independent address compression of the three data memories.
- FIG. 4 shows a design in which a separate data capture unit 410 is used to capture trace data for each data memory.
- a single data capture unit may also capture trace data for all data memories, for example, in a time division multiplexed (TDM) manner.
- TDM time division multiplexed
- This single data capture unit can perform address compression independently for each of the data memories by (1) using a separate register to store the address for the prior memory access of each memory and (2) comparing the address for the current memory access of each memory against the stored address for that memory.
- FIGS. 5A through 5D show four exemplary formats for a trace data packet. These exemplary formats are for a specific design in which (1) a full address contains 18 bits, (2) full or uncompressed data for a given memory address contains 32 bits, and (3) three data memories are available. One trace data packet in one of the four possible formats may be formed for each memory access of a given data memory.
- FIG. 5A shows a packet format 502 for a full address.
- Format 502 contains 8 bytes.
- Byte 0 carries ( 1 ) a 4-bit field containing a binary value of ‘0010’ to indicate a trace data packet, (1) a 2-bit DS field that indicates the size of the data field in the packet, and (3) a 2-bit field containing a binary value of ‘10’ to indicate a trace data packet.
- a trace data packet is indicated by a value of ‘0010’ for the 4-bit field and a value of ‘10’ for the rightmost 2-bit field.
- Other bit patterns and/or other means may also be used to indicate a trace data packet.
- the DS field contains a binary value of ‘00’, ‘01’, ‘10’, or ‘11’ for a data field size of 0 byte, 1 byte, 2 bytes, or 4 bytes, respectively.
- the binary values of ‘00’, ‘01’, and ‘10’ may be used for the DS field for compressed data, and the binary value of ‘11’ may be used for uncompressed data.
- Byte 1 carries (1) a 1-bit field containing a binary value of ‘1’ to indicate that another byte of address is included in the packet, (2) a 5-bit address field containing the five lowest order bits of the address (i.e., address bits 0 through 4 ), and (3) a 2-bit MB field that indicates the specific data memory to which the packet pertains.
- the MB field contains a binary value of ‘00’, ‘01’, or ‘10’ for data memory A, B, or C, respectively. The MB field thus carries a memory identifier for the specific data memory being accessed.
- Byte 2 carries ( 1 ) a 1-bit field containing a binary value of ‘1’ to indicate that another byte of address is included in the packet and (2) a 7-bit address field containing the seven middle order bits of the address (i.e., address bits 5 through 11 ).
- Byte 3 carries ( 1 ) a 2-bit field containing a binary value of ‘00’ and (2) a 6-bit address field containing the six highest order bits of the address (i.e., address bits 12 through 17 ).
- DS 11
- bytes 5 through 8 carry a 4-byte data field for the data at the indicated address.
- FIG. 5B shows a packet format 504 for a 12-bit partial address.
- Format 504 contains 7 bytes.
- Bytes 0 and 1 for format 504 are the same as bytes 0 and 1 for format 502 in FIG. 5A .
- Byte 2 carries ( 1 ) a 1-bit field containing a binary value of ‘0’ to indicate that no more byte of address is included in the packet and (2) a 7-bit address field containing the seven middle order bits of the address.
- DS 11
- bytes 3 through 6 carry a 4-byte data field.
- FIG. 5C shows a packet format 506 for a 5-bit partial address.
- Format 506 contains 6 bytes.
- Byte 0 for format 506 is the same as byte 0 for format 502 in FIG. 5A .
- Byte 1 carries ( 1 ) a 1-bit field containing a binary value of ‘0’ to indicate that no more byte of address is included in the packet, (2) a 5-bit address field containing the five lowest order bits of the address, and (3) the 2-bit MB field.
- DS 11
- bytes 2 through 5 carry a 4-byte data field.
- FIG. 5D shows a packet format 508 for no address.
- Format 508 also contains 6 bytes.
- Byte 0 for format 508 is the same as byte 0 for format 502 in FIG. 5A .
- Byte 1 carries (1) a 1-bit field containing a binary value of ‘0’ to indicate that no more byte of address is included in the packet, (2) a 5-bit address field containing a binary value of ‘00000’ to indicate that no address is included in the trace data packet, and (3) the 2-bit MB field.
- DS 11
- bytes 2 through 5 carry a 4-byte data field.
- a binary value of ‘1’ in the most significant (leftmost) bit of an address byte indicates that another address byte is included in the packet.
- Other mechanisms may also be used to indicate the size of the address in the trace data packet, and this is within the scope of the invention.
- FIGS. 5A through 5D show four exemplary formats for the trace data packet.
- the general concept described in FIGS. 5A through 5D may be extended to cover other designs with addresses and data of other sizes, for any number of data memories, and so on.
- any number of packet formats may be defined.
- Each packet format may include any number and any type of fields, and each field may include any number of bits. The fields may also be arranged differently from the arrangement shown in FIGS. 5A through 5D .
- the trace data packet includes a mechanism to indicate the specific memory or memory bank to which the packet pertains. If a designated field is used to indicate the data memory, as shown in FIGS. 5A through 5D , then the size of this field may be determined based on the number of data memories in the integrated circuit.
- the trace data packet also includes a mechanism (e.g., a designated bit in each address byte) to indicate the size of the address included in the packet.
- trace stream generator 250 generates a trace data stream containing the trace data packets from all trace data capture units 210 .
- Each trace data packet contains a field with a memory identifier for the specific memory to which the packet pertains.
- a trace decompressor within analysis tool 190 can demultiplex the trace data packets in the trace data stream into multiple substreams, one substream for each memory, based on the memory identifiers included in these packets.
- FIG. 6 shows a flow diagram of a process 600 for performing data tracing for an integrated circuit with multiple (e.g., three) independently accessible memories.
- the memory being accessed is identified and denoted as memory X, where X may be A, B, or C for the exemplary design shown in FIGS. 1 and 4 (block 610 ).
- a stored address for a prior memory access of memory X is retrieved from address register X used for memory X (block 620 ).
- a current address for a current memory access of memory X is concurrently stored in address register X (block 622 ).
- the current address is compared against the stored address for memory X, for example, by performing an exclusive-OR (XOR) operation on the two addresses (block 624 ).
- Address compression may be performed on the current address, based on the result of the comparison, to obtain a compressed address for the memory access of memory X (block 626 ).
- Data compression may also be performed for the current memory access of memory X (block 628 ).
- a trace data packet is formed for the current memory access of memory X (block 630 ). This trace data packet includes (1) a memory identifier for memory X, (2) a full, compressed, or null address for the current memory access, and (3) compressed, uncompressed, or null data for the current memory access.
- a trace data stream is generated with the trace data packets for the memory accesses of all memories (block 632 ).
- the trace data stream is buffered and provided off-chip when triggered (block 634 ).
- the data tracing techniques described herein allow for efficient compression of trace data for an integrated circuit with multiple memories.
- Such an integrated circuit may have one or more embedded DSPs, as shown in FIG. 1 .
- a DSP typically utilizes multiple data memories for greater data access capability, uses variable length instructions, and often executes tight loops (e.g., for digital filters).
- the data tracing techniques described herein may be advantageously used to debug an integrated circuit with one or more embedded DSPs.
- the data tracing techniques described herein may be used for any integrated circuit with multiple memories.
- Such an integrated circuit may include one or more embedded microprocessors, one or more DSPs, and/or other controllers (e.g., as shown in FIG. 1 ).
- Integrated circuits with multiple memories are commonly used for wireless communication devices (e.g., cellular phones), personal digital assistants (PDAs), and other electronic devices.
- the data tracing techniques described herein may also be used for various end applications such as wireless communication, computing, networking, and so on.
- the data tracing techniques described herein may be implemented in hardware, firmware, or a combination thereof.
- the units used to support data tracing e.g., trace module 140 , trace port 142 , and JTAG port 138
- the units used to support data tracing may be implemented with hardware embedded within an integrated circuit, an application specific integrated circuit (ASIC), a digital signal processing device (DSPD), a programmable logic device (PLD), a field programmable gate array (FPGA), and so on.
- the data tracing may also be performed based on or in conjunction with firmware codes that perform the functions described herein.
- the firmware codes may be stored in a memory (e.g., memory 124 in FIG. 1 ) and executed by a processor or processing unit (e.g., trace module 140 ).
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
Abstract
Description
- I. Field
- The present invention relates generally to integrated circuits, and more specifically to techniques for compressing data and address traces for testing and debugging an integrated circuit with multiple memories.
- II. Background
- Continual improvement in integrated circuit (IC) fabrication technology has enabled more and more complicated integrated circuits to be fabricated for a variety of applications. For example, a system-on-chip (SOC) device may include a microprocessor, a memory, and other processing units, all of which are embedded on a single integrated circuit. The microprocessor may perform various functions and/or control the processing units. The processing units may be designed to perform specific computational tasks. The memory may store code and data for the microprocessor and processing units. The integration of all these circuit blocks on a single integrated circuit reduces cost and improves reliability.
- An important aspect in the development of a complicated integrated circuit is the testing and debugging of the various circuit blocks within the integrated circuit. A technique commonly used for debugging an integrated circuit is real-time tracing, which includes program/instruction tracing and data tracing. Program tracing refers to the capture of lines of code being executed by processors within the integrated circuit, and data tracing refers to the capture of data accessed by the processors. The real-time tracing provides a user/developer with the capability to capture and view instructions and data accesses within the integrated circuit at run-time speed. This helps the user/developer to track down bugs in the hardware and/or code such as, for example, obscure bugs that only occur in situations where there is an unpredictable interaction between the hardware and code.
- Real-time trace capability is normally provided by a trace module and a trace port that are embedded within the integrated circuit. The trace module typically includes configurable filters and trigger logic that allow the user/developer to select which instructions and data to capture and report. The captured information is often compressed and then provided via the trace port to an analysis tool located off-chip. Conventionally, the trace module only supports data tracing for a single memory or a unified data memory within the integrated circuit.
- Techniques for performing data tracing in an integrated circuit with multiple embedded memories are described herein. These techniques perform data tracing for each memory separately so that a higher degree of compression can be achieved for trace data captured by the tracing. In general, trace data may include memory address and data, program counter value, time reference, and any other information that may be useful for testing and debugging the integrated circuit. The trace data for each memory is appropriately identified based on a memory identifier assigned to that memory.
- An embodiment provides an integrated circuit with multiple memories and a trace module. Each memory is accessible independently of the other memories, and the multiple memories may be accessed concurrently. The trace module forms packets of trace data for memory accesses of the multiple memories, one trace data packet for each memory access. Each trace data packet includes an address and/or data for a memory access of a particular memory and a memory identifier for that memory.
- In an embodiment, the trace module includes multiple data capture units, a trace stream generator, and a buffer. One data capture unit is provided for each memory. Each data capture unit includes an address register, an address comparator, an address compressor, a data compressor, and a packetizer. The address register stores an address for a prior memory access of the associated memory. The address comparator compares an address for a current memory access of the associated memory against the address stored in the register. The address compressor performs address compression for the current memory access, based on the output from the address comparator, and generates a compressed address for the current memory access. The data compressor performs data compression for the current memory access. The packetizer forms a trace data packet for the current memory access of the associated memory. The trace stream generator receives trace data packets from the multiple data capture units and generates a trace data stream containing these packets. The buffer stores the trace data stream and provides the trace data off-chip when triggered.
- Each trace data packet may include (1) a field for the memory identifier, (2) an address field having a variable size, (3) at least one field indicative of the address field size, (4) a data field having a variable size, (5) a field indicative of the data field size, and (6) possibly other fields. Various packet formats are described below. Each trace data packet may include (1) an uncompressed, compressed, or null address, (2) uncompressed, compressed, or null data, and (3) other information such as the memory identifier.
- The integrated circuit may further include one or more digital signal processors (DSPs), microprocessors, controllers, and so on. The multiple memories may be used to store data for the DSP(s).
- Various aspects and embodiments of the invention are described in further detail below.
- The features and nature of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings in which like reference characters identify correspondingly throughout and wherein:
-
FIG. 1 shows an integrated circuit with multiple embedded memories and having tracing capability for testing and debugging; -
FIG. 2 shows a block diagram of a trace module; -
FIG. 3A shows data accesses for a conventional integrated circuit with a single memory; -
FIG. 3B illustrates an address compression technique for data tracing; -
FIG. 3C shows data accesses for an integrated circuit with multiple memories; -
FIG. 4 shows a block diagram of a trace data capture unit for a DSP; -
FIGS. 5A through 5D show four exemplary trace data packet formats; and -
FIG. 6 shows a process for performing data tracing for an integrated circuit with multiple (e.g., three) independently accessible memories. - The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or designs.
-
FIG. 1 shows a block diagram of an integratedcircuit 100 with multiple embedded memories and having tracing capability for testing and debugging.Integrated circuit 100 includes multiple embedded processors and controllers such as amicroprocessor 110, a digital signal processor (DSP) 120, and a direct memory access (DMA)controller 130.Microprocessor 110 performs general processing forintegrated circuit 100 and may be implemented with a reduced instruction set computer (RISC) or some other type of microprocessor.DSP 120 is a specialized processor that is specifically designed to perform mathematical computations very rapidly.DSP 120 may include various processing units such as multiply-accumulate units (MACCs), arithmetic logic units (ALUs), and so on.DMA controller 130 handles real-time high-rate data exchanges betweenDSP 120 and other processing units external tointegrated circuit 100. For simplicity, the interconnections betweenmicroprocessor 110,DSP 120, andDMA controller 130 are not shown inFIG. 1 . In general, integratedcircuit 100 may include any number and any type of processors and controllers. -
Microprocessor 110 implements a “Harvard” architecture, which usesseparate instruction memory 114 anddata memory 116 to store instructions and data, respectively. Amemory controller 112 providesmicroprocessor 110 with the necessary instructions and data from 114 and 116.memories DSP 120 implements a “super-Harvard” architecture, which usesseparate instruction memory 124 to store instructions andmultiple data memories 126 a through 126 c to store data. 126 a, 126 b, and 126 c are also denoted as data memories A, B, and C, respectively. AMemories memory controller 122 providesDSP 120 with the necessary instructions and data frommemories 124 and 126.DMA controller 130 also interfaces withmemory controller 122 for data exchanges. In general, the processors and controllers withinintegrated circuit 100 may implement any type of memory architecture. Moreover, integratedcircuit 100 may include any number of memories. - Each memory within
integrated circuit 100 is an independent memory that may be individually accessed to store/retrieve instructions/data. Each memory is managed by an associated memory controller. Each memory may also be referred to as a memory bank, a memory cache, or some other terminology. Conventionally, an integrated circuit includes a single memory or a unified memory for storing data. The single data memory can typically be accessed to obtain a particular number of (e.g., four) bytes of data at a time. Multiple data memories may be used to obtain various benefits such as, for example, parallel operation, higher memory throughput, and greater storage flexibility. For example, different kinds of data may be stored in different memories, and a DSP can exploit the separate memories to achieve parallel loads of the different kinds of data. Multiple data memories differ from a unified memory in that these multiple data memories may use separate address generation units, separate memory buses, instructions which can perform concurrent data accesses of the separate memories, independent data widths, and so on. -
Integrated circuit 100 further includes atrace module 140, atrace port 142, and a JTAG (Joint Test Action Group)port 138, which collectively provide testing and debugging capabilities for the integrated circuit.Trace module 140 includes various circuit blocks and registers that are used to monitor internal buses ofmicroprocessor 110,DSP 120, andDMA controller 130, as described below.Trace module 140 can capture information regarding the state of 110 and 120 andprocessors controller 130 to facilitate testing and debugging ofintegrated circuit 100.Trace module 140 can further capture the information in a “non-intrusive” manner, i.e., without adding any burden to the performance of the processors and controller so that these units can operate at full speed.Trace module 140 provides the captured information as a trace data stream viatrace port 142.JTAG port 138 is used to configuretrace module 140 and possibly the processors and controller within the integrated circuit. For simplicity, the interconnections betweenJTAG port 138 and the processors and controller are not shown inFIG. 1 . - An
analysis tool 190 interfaces withintegrated circuit 100 via aninterface module 180.Analysis tool 190 may be a computer system, a logic analyzer, and so on, and may be implemented with hardware, software, or a combination thereof. A user/developer who is testing or debuggingintegrated circuit 100 can configuretrace module 140 viaanalysis tool 190,interface module 180, andJTAG port 138. The user/developer can, viatrace port 142 andinterface module 180, receive the trace data stream containing information captured bytrace module 140. The user/developer can view and analyze the captured information usinganalysis tool 190. -
FIG. 2 shows a block diagram of an embodiment oftrace module 140.Trace module 140 includes three trace data capture 210 a, 210 b, and 210 c forunits microprocessor 110,DSP 120, andDMA controller 130, respectively, atrace stream generator 250, and abuffer 260. Each trace data capture unit 210 captures trace data for a respective processor or controller and provides packets of trace data, as described below. -
Trace stream generator 250 receives trace data packets from all trace data capture units 210 and generates a trace data stream containing these packets. This single trace data stream thus carries trace data for instructions and memory accesses of all memories withinintegrated circuit 100. Buffer 260 stores the trace data fromtrace stream generator 250 and provides the stored trace data when triggered. Buffer 260 may be filled with trace data based on the following triggering mechanisms: -
- Trace after match—buffer 260 starts filling up with trace data once a trigger packet is received;
- Trace before match—
buffer 260 fills up continuously with trace data until a trigger packet is received; and - Trace in center—
buffer 260 fills up continuously with trace data until a trigger packet is received and then fills up with a specified number of trace data entries after receiving the trigger packet.
In general, the design of the trace module may be dependent on various factors such as, for example, the number and type of processors and controllers embedded within the integrated circuit, the memories associated with these processors and controllers, the desired debug capabilities, and so on.
-
FIG. 3A shows an exemplary sequence of data accesses 310 for a conventional integrated circuit with a single memory. Each data access is associated with a memory address and corresponding data at that address. For data tracing, the trace module receives both the address and data for each memory access, captures the pertinent information, and generates a trace data packet for the memory access. The trace module typically performs compression on the address and/or data in order to reduce the amount of information to include in the trace data packet. -
FIG. 3B illustrates an address compression technique often used for data tracing. This address compression technique is based on an assumption that consecutive memory accesses are often made to memory locations close together. In this case, the address for each memory access may differ from the address for a prior memory access in only a small number of lower order or lesser significant bits. An address register is used to store the address for the last memory access. The address for the current memory access is compared against the stored address for the last memory access, and only the lower order bits in the current address that are different from the stored address (instead of the entire current address) are included in the trace data packet. - For ease of implementation, the trace data packet may be designed to carry a certain number of address bits (e.g., 5, 12, or 18 address bits, for an exemplary trace data packet design described below). In this case, the smallest possible number of address bits is included in the trace data packet based on the number of lower order bits that are different. For example, if three lower order address bits are different, then the trace data packet would include five lower order address bits for the exemplary design noted above. In effect, the compressed address is quantized to 5, 12, or 18 bits depending on the number of lower order bits that are different. The use of a single register to store the address of the last memory access provides adequate address compression performance for an integrated circuit with a single memory.
-
FIG. 3C shows an exemplary sequence of data accesses 330 for an integrated circuit with multiple memories (e.g., forintegrated circuit 100 with three 126 a, 126 b, and 126 c). Multiple memories may be accessed concurrently, for example, to retrieve or store data for a single DSP instruction, which may include multiple arithmetic and/or logic operations. The data access for each memory is associated with a memory address and corresponding data at that address. Since the multiple memories may be accessed independently, the addresses for these memories may not be close to each other or correlated in any way. In this case, using a single address register to store a single memory address for address compression of multiple memories would provide poor compression performance if the addresses for these memories differ widely. As an example, the current addresses for memories A, B, and C may be 100, 5000, and 10000, respectively. If one address register is available, then this register would initially store memory A address of 100, which is then used for compression of memory B address of 5000, which is then used for compression of memory C address of 10000, which is then used for compression of memory A address for the next memory access, and so on. As can be seen, address compression performance may be poor using a single address register for multiple memories.data memories - Multiple address registers may be used to obtain improved address compression performance for an integrated circuit with multiple memories. One address register is used for each memory, and each register stores the address of the last memory access for its associated memory. The address for the current memory access of each memory is compared against the address stored in the register for that memory. For the above example, registers A, B, and C would store addresses of 100, 5000, and 10000, respectively, for the current memory accesses of memories A, B, and C, respectively. For the next memory access, the address for memory A would be compared against the address stored in register A, the address for memory B would be compared against the address stored in register B, and the address for memory C would be compared against the address stored in register C. If consecutive memory accesses for each of these multiple memories are made to memory locations close together, which is the basic assumption used for the single-memory integrated circuit, then good address compression performance can be achieved for the integrated circuit with multiple memories.
-
FIG. 4 shows a block diagram of an embodiment of tracedata capture unit 210 b forDSP 120.Unit 210 b includes three 410 a, 410 b, and 410 c fordata capture units 126 a, 126 b, and 126 c, respectively, and andata memories instruction capture unit 412 forinstruction memory 124. Each data capture unit 410 includes a compression unit 420, a packetizer 430, and a filter 440. - Within
data capture unit 410 a fordata memory 126 a, acompression unit 420 a receives an address and corresponding data (which are denoted as memA_addr and memA_data, respectively) for a current memory access ofmemory 126 a. The current address, memA_addr, is stored in anaddress register 422 a and also provided to anaddress comparator 424 a.Comparator 424 a also receives a stored address fromregister 422 a for a prior memory access ofdata memory 126 a, compares the current address against the stored address, and provides comparison result to anaddress compressor 426 a.Address compressor 426 a determines the number of lower order address bits in the current address that are different from the stored address and the minimum number (N) of address bits to be included in the trace data packet for the current memory access. Address compression may also be bypassed.Address compressor 426 a provides to a packetizer 430 a a compressed address containing N lower order bits in the current address or the uncompressed current address. - A
data compressor 428 a performs compression on the data for the current memory access. Data compression may be performed in various manners. For example, leading zeros in the data may be removed. As another example, the data for the current memory access may be compared against the data for the prior memory access, in similar manner as for address compression, and only the difference is sent. Some other examples include (1) removal of all zeros in the data and (2) constraining the data width to be 8 bits, 16 bits, or some other predetermined number of bits, depending on a priori knowledge of the data being traced, e.g., via user selection. Data compression may also be bypassed.Data compressor 428 a provides compressed or uncompressed data to packetizer 430 a. -
Packetizer 430 a receives the compressed or uncompressed address fromaddress compressor 426 a and the compressed or uncompressed data fromdata compressor 428 a.Packetizer 430 a forms a trace data packet for the current memory access ofmemory 126 a, as described below. Afilter 440 a provides user-controlled filtering for data tracing so that the amount of trace data to be sent off-chip can be minimized. For example, tracing may only be performed (1) for memory accesses within a specified range of addresses, (2) if some specified conditions are met, and/or (3) based on some other criteria. Filter 440 a provides filtered trace data formemory 126 a (e.g., trace data packets that meet filtering criteria). -
FIG. 4 shows a specific embodiment ofdata capture unit 410 a formemory 126 a. The other two 410 b and 410 c perform address and data compression, packetizing, and filtering for memory accesses ofdata capture units 126 b and 126 c, respectively.memories Instruction capture unit 412 may be implemented the same or different from data capture unit 410. - In general, the address and data compression, packetizing, and filtering may be performed in various manners and possibly in a different order than that shown in
FIG. 4 . For example, the filtering may be performed prior to the compression. As shown inFIG. 4 , three different address registers 422 a, 422 b, and 422 c are used to store the addresses for the latest memory accesses of 126 a, 126 b, and 126 c, respectively. This allows for independent address compression of the three data memories.data memories -
FIG. 4 shows a design in which a separate data capture unit 410 is used to capture trace data for each data memory. A single data capture unit may also capture trace data for all data memories, for example, in a time division multiplexed (TDM) manner. This single data capture unit can perform address compression independently for each of the data memories by (1) using a separate register to store the address for the prior memory access of each memory and (2) comparing the address for the current memory access of each memory against the stored address for that memory. -
FIGS. 5A through 5D show four exemplary formats for a trace data packet. These exemplary formats are for a specific design in which (1) a full address contains 18 bits, (2) full or uncompressed data for a given memory address contains 32 bits, and (3) three data memories are available. One trace data packet in one of the four possible formats may be formed for each memory access of a given data memory. -
FIG. 5A shows apacket format 502 for a full address. Format 502 contains 8 bytes. Byte 0 carries (1) a 4-bit field containing a binary value of ‘0010’ to indicate a trace data packet, (1) a 2-bit DS field that indicates the size of the data field in the packet, and (3) a 2-bit field containing a binary value of ‘10’ to indicate a trace data packet. For this embodiment, a trace data packet is indicated by a value of ‘0010’ for the 4-bit field and a value of ‘10’ for the rightmost 2-bit field. Other bit patterns and/or other means may also be used to indicate a trace data packet. In an embodiment, the DS field contains a binary value of ‘00’, ‘01’, ‘10’, or ‘11’ for a data field size of 0 byte, 1 byte, 2 bytes, or 4 bytes, respectively. The binary values of ‘00’, ‘01’, and ‘10’ may be used for the DS field for compressed data, and the binary value of ‘11’ may be used for uncompressed data. Byte 1 carries (1) a 1-bit field containing a binary value of ‘1’ to indicate that another byte of address is included in the packet, (2) a 5-bit address field containing the five lowest order bits of the address (i.e.,address bits 0 through 4), and (3) a 2-bit MB field that indicates the specific data memory to which the packet pertains. In an embodiment, the MB field contains a binary value of ‘00’, ‘01’, or ‘10’ for data memory A, B, or C, respectively. The MB field thus carries a memory identifier for the specific data memory being accessed. - Byte 2 carries (1) a 1-bit field containing a binary value of ‘1’ to indicate that another byte of address is included in the packet and (2) a 7-bit address field containing the seven middle order bits of the address (i.e.,
address bits 5 through 11). Byte 3 carries (1) a 2-bit field containing a binary value of ‘00’ and (2) a 6-bit address field containing the six highest order bits of the address (i.e., addressbits 12 through 17). In this example, DS=11, andbytes 5 through 8 carry a 4-byte data field for the data at the indicated address. -
FIG. 5B shows apacket format 504 for a 12-bit partial address. Format 504 contains 7 bytes. 0 and 1 forBytes format 504 are the same as 0 and 1 forbytes format 502 inFIG. 5A . Byte 2 carries (1) a 1-bit field containing a binary value of ‘0’ to indicate that no more byte of address is included in the packet and (2) a 7-bit address field containing the seven middle order bits of the address. In this example, DS=11, andbytes 3 through 6 carry a 4-byte data field. -
FIG. 5C shows apacket format 506 for a 5-bit partial address. Format 506 contains 6 bytes.Byte 0 forformat 506 is the same asbyte 0 forformat 502 inFIG. 5A . Byte 1 carries (1) a 1-bit field containing a binary value of ‘0’ to indicate that no more byte of address is included in the packet, (2) a 5-bit address field containing the five lowest order bits of the address, and (3) the 2-bit MB field. In this example, DS=11, andbytes 2 through 5 carry a 4-byte data field. -
FIG. 5D shows apacket format 508 for no address.Format 508 also contains 6 bytes.Byte 0 forformat 508 is the same asbyte 0 forformat 502 inFIG. 5A . Byte 1 carries (1) a 1-bit field containing a binary value of ‘0’ to indicate that no more byte of address is included in the packet, (2) a 5-bit address field containing a binary value of ‘00000’ to indicate that no address is included in the trace data packet, and (3) the 2-bit MB field. In this example, DS=11, andbytes 2 through 5 carry a 4-byte data field. - For
502, 504, 506 and 508, a binary value of ‘1’ in the most significant (leftmost) bit of an address byte indicates that another address byte is included in the packet. Other mechanisms may also be used to indicate the size of the address in the trace data packet, and this is within the scope of the invention.packet formats -
FIGS. 5A through 5D show four exemplary formats for the trace data packet. The general concept described inFIGS. 5A through 5D may be extended to cover other designs with addresses and data of other sizes, for any number of data memories, and so on. In general, any number of packet formats may be defined. Each packet format may include any number and any type of fields, and each field may include any number of bits. The fields may also be arranged differently from the arrangement shown inFIGS. 5A through 5D . The trace data packet includes a mechanism to indicate the specific memory or memory bank to which the packet pertains. If a designated field is used to indicate the data memory, as shown inFIGS. 5A through 5D , then the size of this field may be determined based on the number of data memories in the integrated circuit. The trace data packet also includes a mechanism (e.g., a designated bit in each address byte) to indicate the size of the address included in the packet. - Referring back to
FIGS. 1 and 2 ,trace stream generator 250 generates a trace data stream containing the trace data packets from all trace data capture units 210. Each trace data packet contains a field with a memory identifier for the specific memory to which the packet pertains. A trace decompressor withinanalysis tool 190 can demultiplex the trace data packets in the trace data stream into multiple substreams, one substream for each memory, based on the memory identifiers included in these packets. -
FIG. 6 shows a flow diagram of aprocess 600 for performing data tracing for an integrated circuit with multiple (e.g., three) independently accessible memories. Initially, the memory being accessed is identified and denoted as memory X, where X may be A, B, or C for the exemplary design shown inFIGS. 1 and 4 (block 610). - For data tracing of memory X, a stored address for a prior memory access of memory X is retrieved from address register X used for memory X (block 620). A current address for a current memory access of memory X is concurrently stored in address register X (block 622). The current address is compared against the stored address for memory X, for example, by performing an exclusive-OR (XOR) operation on the two addresses (block 624). Address compression may be performed on the current address, based on the result of the comparison, to obtain a compressed address for the memory access of memory X (block 626). Data compression may also be performed for the current memory access of memory X (block 628). A trace data packet is formed for the current memory access of memory X (block 630). This trace data packet includes (1) a memory identifier for memory X, (2) a full, compressed, or null address for the current memory access, and (3) compressed, uncompressed, or null data for the current memory access.
- The processing in blocks 620 through 630 may be performed separately for each memory, for example, by the data capture unit assigned to that memory. A trace data stream is generated with the trace data packets for the memory accesses of all memories (block 632). The trace data stream is buffered and provided off-chip when triggered (block 634).
- The data tracing techniques described herein allow for efficient compression of trace data for an integrated circuit with multiple memories. Such an integrated circuit may have one or more embedded DSPs, as shown in
FIG. 1 . A DSP typically utilizes multiple data memories for greater data access capability, uses variable length instructions, and often executes tight loops (e.g., for digital filters). The data tracing techniques described herein may be advantageously used to debug an integrated circuit with one or more embedded DSPs. - In general, the data tracing techniques described herein may be used for any integrated circuit with multiple memories. Such an integrated circuit may include one or more embedded microprocessors, one or more DSPs, and/or other controllers (e.g., as shown in
FIG. 1 ). Integrated circuits with multiple memories are commonly used for wireless communication devices (e.g., cellular phones), personal digital assistants (PDAs), and other electronic devices. The data tracing techniques described herein may also be used for various end applications such as wireless communication, computing, networking, and so on. - The data tracing techniques described herein may be implemented in hardware, firmware, or a combination thereof. For a hardware implementation, the units used to support data tracing (e.g.,
trace module 140,trace port 142, and JTAG port 138) may be implemented with hardware embedded within an integrated circuit, an application specific integrated circuit (ASIC), a digital signal processing device (DSPD), a programmable logic device (PLD), a field programmable gate array (FPGA), and so on. The data tracing may also be performed based on or in conjunction with firmware codes that perform the functions described herein. The firmware codes may be stored in a memory (e.g.,memory 124 inFIG. 1 ) and executed by a processor or processing unit (e.g., trace module 140). - The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
Claims (33)
Priority Applications (12)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/843,971 US7702964B2 (en) | 2004-05-11 | 2004-05-11 | Compression of data traces for an integrated circuit with multiple memories |
| AT08165088T ATE500592T1 (en) | 2004-05-11 | 2005-05-11 | DATA TRACK COMPRESSION FOR A MULTIPLE MEMORY INTEGRATED CIRCUIT |
| DE602005010070T DE602005010070D1 (en) | 2004-05-11 | 2005-05-11 | COMPRESSING DATA TRACKS FOR INTEGRATED CIRCUITS WITH MULTIPLE STORES |
| EP05748092A EP1745489B1 (en) | 2004-05-11 | 2005-05-11 | Compression of data traces for an integrated circuit with multiple memories |
| CA002565989A CA2565989A1 (en) | 2004-05-11 | 2005-05-11 | Compression of data traces for an integrated circuit with multiple memories |
| RU2006143663/09A RU2347288C2 (en) | 2004-05-11 | 2005-05-11 | Compression of data traces for integral circuit with multiple memory units |
| DE602005026732T DE602005026732D1 (en) | 2004-05-11 | 2005-05-11 | Data track compression for an integrated circuit with multiple memories |
| ES05748092T ES2313349T3 (en) | 2004-05-11 | 2005-05-11 | COMPOSITIONS OF DATA TRACES FOR AN INTEGRATED CIRCUIT OF MULTIPLE MEMORIES. |
| EP08165088A EP2012324B1 (en) | 2004-05-11 | 2005-05-11 | Compression of data traces for an integrated circuit with multiple memories |
| PCT/US2005/016563 WO2005112040A1 (en) | 2004-05-11 | 2005-05-11 | Compression of data traces for an integrated circuit with multiple memories |
| AT05748092T ATE409944T1 (en) | 2004-05-11 | 2005-05-11 | COMPRESSING DATA TRACKS FOR A MULTIPLE MEMORY INTEGRATED CIRCUIT |
| JP2007513334A JP4885849B2 (en) | 2004-05-11 | 2005-05-11 | Data trace compression for integrated circuits with multiple memories. |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/843,971 US7702964B2 (en) | 2004-05-11 | 2004-05-11 | Compression of data traces for an integrated circuit with multiple memories |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20050268177A1 true US20050268177A1 (en) | 2005-12-01 |
| US7702964B2 US7702964B2 (en) | 2010-04-20 |
Family
ID=34969664
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US10/843,971 Expired - Fee Related US7702964B2 (en) | 2004-05-11 | 2004-05-11 | Compression of data traces for an integrated circuit with multiple memories |
Country Status (9)
| Country | Link |
|---|---|
| US (1) | US7702964B2 (en) |
| EP (2) | EP1745489B1 (en) |
| JP (1) | JP4885849B2 (en) |
| AT (2) | ATE409944T1 (en) |
| CA (1) | CA2565989A1 (en) |
| DE (2) | DE602005026732D1 (en) |
| ES (1) | ES2313349T3 (en) |
| RU (1) | RU2347288C2 (en) |
| WO (1) | WO2005112040A1 (en) |
Cited By (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060224788A1 (en) * | 2005-03-31 | 2006-10-05 | Fujitsu Limited | Data processing system, data processing method, computer-readable storage medium, and disk drive |
| US20080059843A1 (en) * | 2006-09-05 | 2008-03-06 | Fujitsu Limited | Debugging system, debugging circuit and information processing apparatus |
| US20080103710A1 (en) * | 2006-10-26 | 2008-05-01 | Samplify Systems, Inc. | Data compression for a waveform data analyzer |
| US20080155351A1 (en) * | 2006-10-03 | 2008-06-26 | Broadcom Corporation | Method for combining multiple trace sources in an embedded system |
| US20090044059A1 (en) * | 2007-08-06 | 2009-02-12 | Renesas Technology Corp. | Semiconductor integrated circuit and debugging system |
| US20090094487A1 (en) * | 2007-10-03 | 2009-04-09 | Lance Flake | Multiple winner arbitration |
| WO2009048719A3 (en) * | 2007-10-09 | 2009-06-11 | Micron Technology Inc | Non-volatile memory device having assignable network identification |
| US20090183034A1 (en) * | 2008-01-11 | 2009-07-16 | Arm Limited | Trace synchronization |
| US20090313507A1 (en) * | 2008-06-11 | 2009-12-17 | Andrew Brookfield Swaine | Generation of trace data in a multi-processor system |
| US20100257510A1 (en) * | 2009-04-03 | 2010-10-07 | Arm Limited | Trace synchronization |
| US7840781B1 (en) * | 2007-04-04 | 2010-11-23 | Xilinx, Inc. | Circuit arrangement for profiling a programmable processor connected via a uni-directional bus |
| US20120089810A1 (en) * | 2010-10-07 | 2012-04-12 | Infineon Technologies Ag | Apparatus and Method for Formatting and Preselecting Trace Data |
| US8250243B2 (en) * | 2010-06-24 | 2012-08-21 | International Business Machines Corporation | Diagnostic data collection and storage put-away station in a multiprocessor system |
| US8250542B1 (en) | 2006-01-03 | 2012-08-21 | Altera Corporation | Method and apparatus for performing trace data compression |
| WO2013101251A1 (en) * | 2011-12-31 | 2013-07-04 | Intel Corporation | Real time instruction tracing compression of ret instructions |
| GB2500441A (en) * | 2012-07-09 | 2013-09-25 | Ultrasoc Technologies Ltd | Prioritising event data over configuration data in a system on a chip debug circuit |
| US8825922B2 (en) * | 2011-04-18 | 2014-09-02 | Infineon Technologies Ag | Arrangement for processing trace data information, integrated circuits and a method for processing trace data information |
| US20150339239A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
| US20160011954A1 (en) * | 2014-07-08 | 2016-01-14 | International Business Machines Corporation | Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization |
| US20160011872A1 (en) * | 2014-07-09 | 2016-01-14 | Intel Corporation | Apparatuses and methods for generating a suppressed address trace |
| US9553604B2 (en) | 2009-03-30 | 2017-01-24 | Nec Corporation | Information processing system, information compression device, information decompression device, information processing method, and program |
| US20180054374A1 (en) * | 2016-08-19 | 2018-02-22 | Andes Technology Corporation | Trace information encoding apparatus, encoding method thereof, and readable computer medium |
| US10089212B2 (en) | 2015-07-20 | 2018-10-02 | Toshiba Memory Corporation | Memory system, information processing system, and host device outputting debugging information through a host interface |
| US20190102283A1 (en) * | 2017-10-04 | 2019-04-04 | Fujitsu Limited | Non-transitory computer-readable storage medium, generation method, and information processing apparatus |
| US10838862B2 (en) | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
| US20230133912A1 (en) * | 2021-10-29 | 2023-05-04 | Stmicroelectronics Application Gmbh | Systems and methods for preparing trace data |
| US20230179226A1 (en) * | 2021-12-02 | 2023-06-08 | ARCAS METech. Ltd | Waveform file processing method, storage medium, and device |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102007006508B4 (en) | 2007-02-09 | 2012-11-15 | Texas Instruments Deutschland Gmbh | Microcontroller with memory trace module |
| US8001428B2 (en) * | 2007-10-29 | 2011-08-16 | Arm Limited | Packing trace protocols within trace streams |
| US8990633B2 (en) * | 2009-04-21 | 2015-03-24 | Freescale Semiconductor, Inc. | Tracing support for interconnect fabric |
| JP5499700B2 (en) * | 2009-12-25 | 2014-05-21 | 日本電気株式会社 | Information compression apparatus, information restoration apparatus, information compression method, information restoration method, and processing program therefor |
| DE102011107936B4 (en) * | 2011-07-19 | 2015-07-23 | Texas Instruments Deutschland Gmbh | A semiconductor device and method for tracing a memory of a semiconductor device |
| US9021311B2 (en) | 2012-08-28 | 2015-04-28 | Freescale Semiconductor, Inc. | Method and apparatus for filtering trace information |
| US8935577B2 (en) | 2012-08-28 | 2015-01-13 | Freescale Semiconductor, Inc. | Method and apparatus for filtering trace information |
| KR102851374B1 (en) | 2016-11-15 | 2025-08-26 | 삼성전자주식회사 | Storage device for generating trace data and method of operating the storage device |
| CN117724664A (en) * | 2024-02-18 | 2024-03-19 | 芯来智融半导体科技(上海)有限公司 | Data writing method, device, equipment and storage medium |
Citations (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6345295B1 (en) * | 1999-01-22 | 2002-02-05 | International Business Machines Corporation | Conducting traces in a computer system attachment network |
| US20020059511A1 (en) * | 2000-11-10 | 2002-05-16 | Ryo Sudo | Data processor |
| US6594782B1 (en) * | 1998-12-28 | 2003-07-15 | Fujitsu Limited | Information processing apparatus |
| US20030191624A1 (en) * | 2002-03-08 | 2003-10-09 | Seiko Epson Corporation | Debug function built-in type microcomputer |
| US6775798B2 (en) * | 2001-11-28 | 2004-08-10 | Lsi Logic Corporation | Fast sampling test bench |
| US20040199902A1 (en) * | 2003-04-03 | 2004-10-07 | International Business Machines Corporation | Method and apparatus for performing bus tracing with scalable bandwidth in a data processing system having a distributed memory |
| US6918065B1 (en) * | 1999-10-01 | 2005-07-12 | Hitachi, Ltd. | Method for compressing and decompressing trace information |
| US7017093B2 (en) * | 2002-09-16 | 2006-03-21 | Lsi Logic Corporation | Circuit and/or method for automated use of unallocated resources for a trace buffer application |
| US7069176B2 (en) * | 2003-08-07 | 2006-06-27 | Arm Limited | Trace source correlation in a data processing apparatus |
| US7149933B2 (en) * | 2003-08-07 | 2006-12-12 | Arm Limited | Data processing system trace bus |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB9622685D0 (en) | 1996-10-31 | 1997-01-08 | Sgs Thomson Microelectronics | An integrated circuit device and method of communication therewith |
| JPH1124959A (en) * | 1997-07-02 | 1999-01-29 | Hewlett Packard Japan Ltd | Trace information outputting method of microprocessor |
| JP3019922B2 (en) * | 1997-06-30 | 2000-03-15 | 日本電気株式会社 | Trace data reduction method |
| NO308149B1 (en) * | 1998-06-02 | 2000-07-31 | Thin Film Electronics Asa | Scalable, integrated data processing device |
| US6665816B1 (en) | 1999-10-01 | 2003-12-16 | Stmicroelectronics Limited | Data shift register |
| DE60139219D1 (en) | 2000-03-02 | 2009-08-27 | Texas Instruments Inc | Dynamically configurable debug interface with concurrent use of debugging multiple cores |
| GB2389931B (en) * | 2002-06-07 | 2005-12-14 | Advanced Risc Mach Ltd | Generation of trace elements within a data processing apparatus |
-
2004
- 2004-05-11 US US10/843,971 patent/US7702964B2/en not_active Expired - Fee Related
-
2005
- 2005-05-11 DE DE602005026732T patent/DE602005026732D1/en not_active Expired - Lifetime
- 2005-05-11 EP EP05748092A patent/EP1745489B1/en not_active Expired - Lifetime
- 2005-05-11 WO PCT/US2005/016563 patent/WO2005112040A1/en not_active Ceased
- 2005-05-11 AT AT05748092T patent/ATE409944T1/en not_active IP Right Cessation
- 2005-05-11 AT AT08165088T patent/ATE500592T1/en not_active IP Right Cessation
- 2005-05-11 ES ES05748092T patent/ES2313349T3/en not_active Expired - Lifetime
- 2005-05-11 CA CA002565989A patent/CA2565989A1/en not_active Abandoned
- 2005-05-11 RU RU2006143663/09A patent/RU2347288C2/en not_active IP Right Cessation
- 2005-05-11 EP EP08165088A patent/EP2012324B1/en not_active Expired - Lifetime
- 2005-05-11 JP JP2007513334A patent/JP4885849B2/en not_active Expired - Fee Related
- 2005-05-11 DE DE602005010070T patent/DE602005010070D1/en not_active Expired - Lifetime
Patent Citations (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6594782B1 (en) * | 1998-12-28 | 2003-07-15 | Fujitsu Limited | Information processing apparatus |
| US6345295B1 (en) * | 1999-01-22 | 2002-02-05 | International Business Machines Corporation | Conducting traces in a computer system attachment network |
| US6918065B1 (en) * | 1999-10-01 | 2005-07-12 | Hitachi, Ltd. | Method for compressing and decompressing trace information |
| US20020059511A1 (en) * | 2000-11-10 | 2002-05-16 | Ryo Sudo | Data processor |
| US6775798B2 (en) * | 2001-11-28 | 2004-08-10 | Lsi Logic Corporation | Fast sampling test bench |
| US20030191624A1 (en) * | 2002-03-08 | 2003-10-09 | Seiko Epson Corporation | Debug function built-in type microcomputer |
| US7017093B2 (en) * | 2002-09-16 | 2006-03-21 | Lsi Logic Corporation | Circuit and/or method for automated use of unallocated resources for a trace buffer application |
| US20040199902A1 (en) * | 2003-04-03 | 2004-10-07 | International Business Machines Corporation | Method and apparatus for performing bus tracing with scalable bandwidth in a data processing system having a distributed memory |
| US7069176B2 (en) * | 2003-08-07 | 2006-06-27 | Arm Limited | Trace source correlation in a data processing apparatus |
| US7149933B2 (en) * | 2003-08-07 | 2006-12-12 | Arm Limited | Data processing system trace bus |
| US7325168B2 (en) * | 2003-08-07 | 2008-01-29 | Arm Limited | Trace data source identification within a trace data stream |
Cited By (53)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7441050B2 (en) * | 2005-03-31 | 2008-10-21 | Fujitsu Limited | Data processing system, data processing method, computer-readable storage medium, and disk drive |
| US20060224788A1 (en) * | 2005-03-31 | 2006-10-05 | Fujitsu Limited | Data processing system, data processing method, computer-readable storage medium, and disk drive |
| US8250542B1 (en) | 2006-01-03 | 2012-08-21 | Altera Corporation | Method and apparatus for performing trace data compression |
| US20080059843A1 (en) * | 2006-09-05 | 2008-03-06 | Fujitsu Limited | Debugging system, debugging circuit and information processing apparatus |
| US7873875B2 (en) * | 2006-09-05 | 2011-01-18 | Fujitsu Semiconductor Limited | Debugging system, debugging circuit and information processing apparatus |
| US20080155351A1 (en) * | 2006-10-03 | 2008-06-26 | Broadcom Corporation | Method for combining multiple trace sources in an embedded system |
| US7477999B2 (en) | 2006-10-26 | 2009-01-13 | Samplify Systems, Inc. | Data compression for a waveform data analyzer |
| US20080243408A1 (en) * | 2006-10-26 | 2008-10-02 | Samplify Systems, Inc. | Data compression for a waveform data analyzer |
| US20080103710A1 (en) * | 2006-10-26 | 2008-05-01 | Samplify Systems, Inc. | Data compression for a waveform data analyzer |
| US7650249B2 (en) | 2006-10-26 | 2010-01-19 | Samplify Systems, Inc. | Data compression for a waveform data analyzer |
| US7840781B1 (en) * | 2007-04-04 | 2010-11-23 | Xilinx, Inc. | Circuit arrangement for profiling a programmable processor connected via a uni-directional bus |
| US20090044059A1 (en) * | 2007-08-06 | 2009-02-12 | Renesas Technology Corp. | Semiconductor integrated circuit and debugging system |
| US8060790B2 (en) * | 2007-08-06 | 2011-11-15 | Renesas Electronics Corporation | Semiconductor integrated circuit and debugging system |
| US7818629B2 (en) * | 2007-10-03 | 2010-10-19 | Broadcom Corporation | Multiple winner arbitration |
| US20090094487A1 (en) * | 2007-10-03 | 2009-04-09 | Lance Flake | Multiple winner arbitration |
| WO2009048719A3 (en) * | 2007-10-09 | 2009-06-11 | Micron Technology Inc | Non-volatile memory device having assignable network identification |
| US20090183034A1 (en) * | 2008-01-11 | 2009-07-16 | Arm Limited | Trace synchronization |
| US8055950B2 (en) * | 2008-01-11 | 2011-11-08 | Arm Limited | Method and apparatus for improved timing for trace synchronization |
| US20090313507A1 (en) * | 2008-06-11 | 2009-12-17 | Andrew Brookfield Swaine | Generation of trace data in a multi-processor system |
| US9223677B2 (en) * | 2008-06-11 | 2015-12-29 | Arm Limited | Generation of trace data in a multi-processor system |
| US9553604B2 (en) | 2009-03-30 | 2017-01-24 | Nec Corporation | Information processing system, information compression device, information decompression device, information processing method, and program |
| US8176366B2 (en) | 2009-04-03 | 2012-05-08 | Arm Limited | Trace synchronization |
| US8407529B2 (en) | 2009-04-03 | 2013-03-26 | Arm Limited | Trace synchronization |
| US20100257510A1 (en) * | 2009-04-03 | 2010-10-07 | Arm Limited | Trace synchronization |
| US8250243B2 (en) * | 2010-06-24 | 2012-08-21 | International Business Machines Corporation | Diagnostic data collection and storage put-away station in a multiprocessor system |
| CN102567212A (en) * | 2010-10-07 | 2012-07-11 | 英飞凌科技股份有限公司 | Apparatus and Method for Formatting and Preselecting Trace Data |
| US20120089810A1 (en) * | 2010-10-07 | 2012-04-12 | Infineon Technologies Ag | Apparatus and Method for Formatting and Preselecting Trace Data |
| US8825922B2 (en) * | 2011-04-18 | 2014-09-02 | Infineon Technologies Ag | Arrangement for processing trace data information, integrated circuits and a method for processing trace data information |
| WO2013101251A1 (en) * | 2011-12-31 | 2013-07-04 | Intel Corporation | Real time instruction tracing compression of ret instructions |
| TWI476685B (en) * | 2011-12-31 | 2015-03-11 | Intel Corp | Real time instruction tracing compression of ret instructions |
| US9235417B2 (en) | 2011-12-31 | 2016-01-12 | Intel Corporation | Real time instruction tracing compression of RET instructions |
| GB2500441A (en) * | 2012-07-09 | 2013-09-25 | Ultrasoc Technologies Ltd | Prioritising event data over configuration data in a system on a chip debug circuit |
| US9032109B2 (en) | 2012-07-09 | 2015-05-12 | Ultrasoc Technologies Ltd. | Prioritising event data over configuration data in a single interface in a SoC/debug architecture |
| GB2500441B (en) * | 2012-07-09 | 2014-03-05 | Ultrasoc Technologies Ltd | Data prioritisation in a debug architecture |
| US10503661B2 (en) * | 2014-05-21 | 2019-12-10 | Qualcomm Incorporated | Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system |
| US10838862B2 (en) | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
| US20150339239A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
| US20160011954A1 (en) * | 2014-07-08 | 2016-01-14 | International Business Machines Corporation | Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization |
| US20160011957A1 (en) * | 2014-07-08 | 2016-01-14 | International Business Machines Corporation | Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization |
| US9542298B2 (en) * | 2014-07-08 | 2017-01-10 | International Business Machines Corporation | Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization |
| US9547578B2 (en) * | 2014-07-08 | 2017-01-17 | International Business Machines Corporation | Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization |
| US9524227B2 (en) * | 2014-07-09 | 2016-12-20 | Intel Corporation | Apparatuses and methods for generating a suppressed address trace |
| US10346167B2 (en) | 2014-07-09 | 2019-07-09 | Intel Corporation | Apparatuses and methods for generating a suppressed address trace |
| US20160011872A1 (en) * | 2014-07-09 | 2016-01-14 | Intel Corporation | Apparatuses and methods for generating a suppressed address trace |
| US10089212B2 (en) | 2015-07-20 | 2018-10-02 | Toshiba Memory Corporation | Memory system, information processing system, and host device outputting debugging information through a host interface |
| CN107766199A (en) * | 2016-08-19 | 2018-03-06 | 晶心科技股份有限公司 | Tracking information encoding device, encoding method thereof and computer readable medium |
| US20180054374A1 (en) * | 2016-08-19 | 2018-02-22 | Andes Technology Corporation | Trace information encoding apparatus, encoding method thereof, and readable computer medium |
| US20190102283A1 (en) * | 2017-10-04 | 2019-04-04 | Fujitsu Limited | Non-transitory computer-readable storage medium, generation method, and information processing apparatus |
| US11055206B2 (en) * | 2017-10-04 | 2021-07-06 | Fujitsu Limited | Non-transitory computer-readable storage medium, generation method, and information processing apparatus |
| US20230133912A1 (en) * | 2021-10-29 | 2023-05-04 | Stmicroelectronics Application Gmbh | Systems and methods for preparing trace data |
| US11914499B2 (en) * | 2021-10-29 | 2024-02-27 | Stmicroelectronics Application Gmbh | Systems and methods for preparing trace data |
| US20230179226A1 (en) * | 2021-12-02 | 2023-06-08 | ARCAS METech. Ltd | Waveform file processing method, storage medium, and device |
| US12068762B2 (en) * | 2021-12-02 | 2024-08-20 | Arcas Metech Ltd | Waveform file processing method, storage medium, and device |
Also Published As
| Publication number | Publication date |
|---|---|
| CA2565989A1 (en) | 2005-11-24 |
| DE602005026732D1 (en) | 2011-04-14 |
| ATE500592T1 (en) | 2011-03-15 |
| RU2006143663A (en) | 2008-06-20 |
| EP2012324A1 (en) | 2009-01-07 |
| WO2005112040A1 (en) | 2005-11-24 |
| ATE409944T1 (en) | 2008-10-15 |
| EP1745489A1 (en) | 2007-01-24 |
| DE602005010070D1 (en) | 2008-11-13 |
| JP2007537547A (en) | 2007-12-20 |
| JP4885849B2 (en) | 2012-02-29 |
| EP1745489B1 (en) | 2008-10-01 |
| RU2347288C2 (en) | 2009-02-20 |
| EP2012324B1 (en) | 2011-03-02 |
| ES2313349T3 (en) | 2009-03-01 |
| US7702964B2 (en) | 2010-04-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7702964B2 (en) | Compression of data traces for an integrated circuit with multiple memories | |
| US20250156197A1 (en) | Overflow detection and correction in state machine engines | |
| EP1805621B1 (en) | Method and system for debugging a multi-threaded program executing in a multicore architecture | |
| US7149926B2 (en) | Configurable real-time trace port for embedded processors | |
| US9038076B2 (en) | Debug in a multicore architecture | |
| US5481734A (en) | Data processor having 2n bits width data bus for context switching function | |
| US20040073838A1 (en) | Trace data compression system and trace data compression method and microcomputer implemented with a built-in trace data compression circuit | |
| US8037363B2 (en) | Generation of trace elements within a data processing apparatus | |
| JP2004038981A (en) | Tracing element generative system for data processor | |
| US8819496B2 (en) | Apparatus for collecting trace information and processing trace information, and method for collecting and processing trace information | |
| US7673187B2 (en) | Data processing apparatus and method for reducing trace bandwidth | |
| KR20170019912A (en) | Embedded logic analyzer and integrated circuit including the same | |
| Kao et al. | A hardware approach to real-time program trace compression for embedded processors | |
| US7552363B2 (en) | Generation of trace elements within a data processing apparatus | |
| US7096395B2 (en) | Efficient word recognizer for a logic analyzer | |
| Yan et al. | Lossless compression decoders for bitstreams and software binaries based on high-level synthesis | |
| Lin et al. | A multi-resolution AHB bus tracer for real-time compression of forward/backward traces in a circular buffer | |
| JP2013015985A (en) | Soc device capable of execution trace dumping of all processor cores of multi-core processor | |
| Yang et al. | An on-chip AHB bus tracer with real-time compression and dynamic multiresolution supports for SoC | |
| JP2000267876A (en) | Emulator and microcomputer | |
| CN115525212A (en) | Techniques for early termination of compression acceleration | |
| Jeang et al. | A high performance and low cost real-time address tracer for embedded microprocessors |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: QUALCOMM INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:JOHN, JOHNNY K.;REEL/FRAME:015062/0541 Effective date: 20040730 Owner name: QUALCOMM INCORPORATED,CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:JOHN, JOHNNY K.;REEL/FRAME:015062/0541 Effective date: 20040730 |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| CC | Certificate of correction | ||
| FPAY | Fee payment |
Year of fee payment: 4 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552) Year of fee payment: 8 |
|
| FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
| FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20220420 |