1. Technical Field
The present invention relates to a system and method for identifying and manipulating logic analyzer data from multiple clock domains. More particularly, the present invention relates to a system and method for reconstructing debug data that originates in a half frequency domain, or passes through a half frequency domain, in order to process the debug data in a full frequency domain.
2. Description of the Related Art
A device may include multiple frequency domains that operate at different clock rates. Each domain produces debug data on a debug bus at a rate equivalent to its particular clock rate, which proceeds to a centralized internal logic analyzer. When the debug data crosses a boundary from a faster domain to a slower domain, the data undergoes a transformation on the debug bus in order to preserve the data. For example, a 32-bit debug word originating from an N frequency domain spreads into 64 bits of data when crossing to a N/2 frequency domain. In this example, data from even-numbered cycles may be assigned to bits 0:31, and data from odd-numbered cycles may be assigned to bits 32:63. A challenge found is that when the data arrives at the logic analyzer, the “crossed data” is not in a format suitable for the logic analyzer to process.
Complicating matters is the fact that the debug bus must be able to carry debug data from multiple frequency domains in parallel. Meaning, the debug bus may carry full frequency data types, half frequency data types, and crossed data at the same time. A challenge found is processing the debug data in parallel when they include different data types because each type of debug data requires different reconstruction.
What is needed is a system and method to identify an original clock domain of each data segment on the debug bus and reconfigure the data such that the logic analyzer may process the data in a full frequency domain.
It has been discovered that the aforementioned challenges are resolved using a system and method for reconstructing debug data that originates in a half frequency domain, or passes through a half frequency domain, in order to process the debug data in a full frequency domain. A logic analyzer receives debug data and determines whether the debug data is a full frequency data type, a half frequency data type, or a crossed data type. Once determined, the logic analyzer reconstructs the debug data such that debug condition-matching logic may process the reconstructed data in a full frequency domain.
A device includes partitions that operate in full frequency domains and half frequency domains. In addition, the device includes a debug bus ramp controller, a debug bus manager, and a logic analyzer. The debug bus manager manages debug data that loads onto the debug bus ramp controller. Once loaded, the debug bus manager sets control register bits in the logic analyzer based upon the data type for each “segment” within the debug bus ramp controller. The control register bits correspond to a crossed data signal, a half frequency domain signal, and a phase generator signal.
The logic analyzer activates the crossed data signal for segments that include crossed data types, which are debug data that originates in a full frequency domain and passes through a half frequency domain. The logic analyzer activates the half frequency domain signal for segments that include half frequency data types. And, the logic analyzer invokes the phase generator signal for segments that include half frequency data types or crossed data types.
For half frequency data types, the logic analyzer adds masked data values to the data in order to reconstruct the data to the full frequency domain before processing the data. For crossed data types, the logic analyzer reconstructs the data into its original format before processing the data in a full frequency domain. For full frequency data types, the logic analyzer does not perform reconstruction steps since the full frequency data type originated in a full frequency domain and did not pass through a half frequency domain.
In one embodiment, a separate logic analyzer control register may enable a “half frequency trace mode.” This mode is useful when the data on all four channels, for example, originates from a half-frequency domain. Since data capture occurs at full frequency, each cycle of data from a half-frequency domain would normally occupy two entries in a trace array. By enabling the half frequency trace mode, the phase generator inhibits data capture into the trace array every other cycle, allowing more cycles of data to be stored in the trace array for subsequent analysis.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The following is intended to provide a detailed description of an example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention, which is defined in the claims following the description.
Partition A 120 functions in a full frequency domain and provides full frequency data types (data A 125) to debug bus ramp controller 160. Partition B 130 functions in a half frequency domain and provides half frequency data types (data B 135) to debug bus ramp controller 160. Partition C 140 functions in a full frequency domain and produces full frequency data types (data C 145). Data C 145 passes through partition D 150, which functions in the half frequency domain, and translates data C 145 to a crossed data type (crossed data C 155) in order to preserve each of the data bits. As a result of preserving each of the data bits, however, crossed data C 155 results in a different format than data C 145 (see
Debug bus manager 165 loads data A 125, data B 135, crossed data C 155, and data D 158 into particular “segments” included in debug bus ramp controller 160 at particular intervals. Debug bus manager 165 then selects one or more of the data segments and identifies the data type included in the selected segment (e.g., full frequency data type, half frequency data type, or crossed data type). In turn, debug bus manager 165 configures control bits within logic analyzer 170 to process the data segments accordingly in order to prepare each data segment for further processing in the full frequency domain.
Logic analyzer 170 is not required to perform reconstruction steps on data A 125 since data A 125 originated in a full frequency domain (partition A 120) and did not pass through a half frequency domain, thus keeping its original format. Data B 135 originated in a half frequency domain and, therefore, logic analyzer 170 adds masked data values to data B 135 in order to transform data b 135 to the full frequency domain (see
Debug bus manager 165 determines what data type debug bus ramp controller 160 should receive, and configures debug bus control register 210 appropriately. For example, debug bus manager 165 may determine that data A 125 should load into “segment 0” of debug bus ramp controller 160, data B 135 should load into “segment 1” of debug bus ramp controller 160, and crossed data C 155 should load into “segment 2” and “segment 3” of debug bus ramp controller 160. In this example, debug bus manager 165 configures control bits included in debug bus control register 210 accordingly. Debug bus manager 165 and debug bus ramp controller 160 are the same as that shown in
Mux control logic 220 receives signals from debug bus control register 210 and phase generator 240. In turn, mux control logic 220 generates multiplexer control signals that control input and output multiplexers included in data manipulation logic 230. Debug bus control register 210 provides signals such as a “crossed data” signal and a “half frequency domain” signal for particular segments included in debug bus ramp controller 160. The crossed data signal is high when a corresponding segment includes crossed data, such as crossed data C 155. The half frequency domain data signal is high when a corresponding segment includes data that originated in a half frequency domain, such as data B 135.
Phase generator 240 provides a phase generator signal, which alternates from low (phase A) to high (phase B). Mux control logic 220 uses the phase generator signal to control data manipulation logic 230's multiplexers when a corresponding segment includes half frequency type data or crossed data type data (see
Data manipulation logic 230 provides reconstructed data to trace array 260 and debug condition-matching logic 270. Debug condition-matching logic 270 may generate a trigger to trace array controller 250 to start capturing channel data into trace array 260. The captured data comes from channel data within data manipulation logic 230 (see
In one embodiment, a separate logic analyzer control register may enable a “half frequency trace mode.” This mode is useful when the data on all four channels originates from a half-frequency domain. Since the data capture occurs at full frequency, each cycle of data from a half-frequency domain occupies two entries in trace array 260, which may be wasteful. By enabling the half frequency trace mode, phase generator 240 inhibits data capture into trace array 260 every other cycle, allowing more cycles of data to be stored in trace array 260 for subsequent analysis.
Partition C 140 functions in a full frequency domain and produces data C 145, which are multiple cycles of data (first through fourth cycle). As can be seen in the example shown in
Data manipulation logic 230 receives crossed data C 155 and reconstructs the data back to its original 32-bit format (output data 300). This allows debug condition-matching logic 270 to detect patterns for triggering an event. For example, three consecutive ‘0’ values in bit 0 (leftmost bit) followed by a ‘1’ value in bits 4 and 5 are detectable in the data's original format, but are not easily detectable in the expanded format (data 320). Data manipulation logic 230 and debug condition-matching logic 270 are the same as that shown in
Crossed data signals 0_1452 and 2_3454 are low when corresponding segment data is not crossed data, such as when segment data is a full frequency data type or a half frequency data type. Crossed data signal 0_1452 influence input multiplexers 520 and 525 shown in
Likewise, crossed data signal 2_3454 influence input multiplexers 530 and 535 shown in
Moving on to control signals that control data manipulation logic 230's output multiplexers, gates 420 through 450 produce control signals for multiplexers 540 through 555 (shown in
Data manipulation logic 230 includes input multiplexers 520 through 535, which are controlled by input multiplexer control signals 470 through 476, respectively. Input multiplexers 520 through 535 provide data to logic channel data 0560 through 3575, respectively. When an input multiplexer's control signal is low, the multiplexer passes segment bits from debug bus ramp controller 160's corresponding segment onto its respective channel. For example, when input mux control 0470 is low, multiplexer 520 passes segment bits from segment 0500 onto channel 0 data 560. When a multiplexer control signal is high, the multiplexer passes bits from the multiplexer's other input. Using the example described above, when input multiplexer control signal 0470 is high, multiplexer 520 passes segment bits from segment 1505 onto channel 0 data 560.
An input multiplexer's control signal is low when 1) its corresponding segment data is a full frequency type, 2) its corresponding segment data is a half frequency type, or 3) every other cycle when its corresponding segment data is a crossed data type. For example, when segment 0500 includes full frequency data, multiplexer 520 passes the full frequency data onto channel 0 data 560 because no reconstruction is required. In another example, when segment 0500 and segment 1505 include crossed data, input multiplexer 520 first passes a data segment bit from segment 0500 onto logic analyzer channel 0560, and then passes a data segment bit from segment 1505 onto logic analyzer channel 0560. This alternation reconfigures the crossed data back to its original format (see
Data manipulation logic 230 also includes output multiplexers 540 through 555, which are controlled by output multiplexer control signals 478 through 484, respectively. Output multiplexers 540 through 555 provide data to debug condition-matching logic 270 that is ready for processing in the full frequency domain. When an output multiplexer's control signal is low, the output multiplexer passes data from its respective channel data to debug condition-matching logic 270. For example, when output mux control 0478 is low, multiplexer 540 passes data from channel 0 data 560 to debug condition-matching logic 270. When an output multiplexer's control signal is high, the output multiplexer passes masked data that is logically determined as the opposite of what condition-matching logic 270 considers being a match (see
In one embodiment, channel 0 data 560 through channel 3 data 575 also pass to a trace array, such as trace array 260 shown in
Row 625 shows that each bus segment includes a word from partition A, which are full frequency data types (generated in the full frequency domain). Row 630 shows that each bus segment includes a word from partition B, which are half frequency data types (generated in the half frequency domain). Row 635 shows that each bus segment includes crossed data. As can be seen, bus segment 0605 includes partition C word 0 phase A and bus segment 1 includes partition C word 0 phase B. Data manipulation logic reconstructs this data to its original form (see
Processing commences at 700, whereupon processing selects a signal group in debug bus ramp controller 160 (step 710). At step 720, processing identifies a data type that corresponds to the signal group, such as a half frequency data type, a full frequency data type, and a crossed data type. Half frequency data types originate in a half frequency domain. Full frequency data types originate in a full frequency domain. And, crossed data types originate in a full frequency domain and pass through a half frequency domain. Debug bus ramp controller 160 is the same as that shown in
Processing sets particular control bits in debug control register 210 at step 730 based upon the identified data type. The control bits correspond to a crossed data signal and a half frequency domain signal, which multiplexer control logic uses to instruct multiplexers as to which input to select when processing data segments included in debug bus ramp controller (see
A determination is made as to whether to continue to select data segments and set control register bits (decision 740). If processing should continue, decision 740 branches to “Yes” branch 742, which loops back to select more data segments and set more control register bits. This looping continues until processing should terminate, at which point decision 740 branches to “No” branch 748 whereupon processing ends at 750.
A determination is made as to whether the identified data type is a full frequency data type (decision 815). If the identified data type is a full frequency data type, decision 815 branches to “Yes” branch 817 whereupon processing sets the crossed data control signal to false at step 820 since the data is not crossed data. At step 825, processing sets the half frequency domain signal to false since the data originated in the full frequency domain. As such, the output multiplexers select the data segment bits on each clock cycle, thus passing through the data segment bits to the debug condition-matching logic as is.
On the other hand, if the identified data type is not a full frequency data type, decision 835 branches to “No” branch 839 whereupon a determination is made as to whether the identified data type is a half data type (decision 835). Half data types are data that originate in a half frequency domain, which processing converts to a full frequency domain before processing the data. If the identified data type is a half frequency data type, decision 835 branches to “Yes” branch 837 whereupon processing sets a crossed data control signal to false at step 840. The crossed data control signal is set to false in order for data to pass through an input multiplexer unaltered to a logic analyzer channel (see
On the other hand, if the identified data type is not a half frequency data type, decision 835 branches to “No” branch 839 whereupon a determination is made as to whether the identified data type is a crossed data type (decision 850). If the identified data type is a crossed data type, decision 850 branches to “Yes” branch 852 whereupon processing sets the crossed data control signal to true at step 855 since the data is crossed data, which is data that originated in the full frequency domain and converted to the half frequency domain when passing through the half frequency domain. Processing sets the crossed data control signal to true in order to reconstruct data segments back to their original format by selecting data segment bits from different data segments on alternating clock cycles. At step 860, processing sets the half frequency domain signal to false and, at step 865, processing invokes the phase generator signal, which is used in conjunction with the crossed data signal for selecting data segment bits at the input multiplexers.
A determination is made as to whether processing should continue (decision 870). If processing should continue, decision 870 branches to “Yes” branch 872, which loops back to process more control register bits. This looping continues until processing should terminate, at which point decision 870 branches to “No” branch 878, whereupon processing ends at 880.
When processing full frequency data types, crossed data 0—1 signal 452 is low because the data is not crossed data, and phase B signal 468 is low because the data did not cross through a half frequency domain. As such, input mux control 0 signal 470 remains low because the signal is the result of crossed data 0—1 signal 452 AND'ed with phase B signal 468. Therefore channel 0 data 560 is segment 0 data (from segment 0500 shown in
As can be seen in
When processing half frequency data types, crossed data 0—1 signal 452 is low since the half frequency domain data is not crossed data, and phase B signal 468 is invoked because the data originated in the half frequency domain. As such, input mux control 0 signal 470 remains low because the signal is the result of crossed data 0—1 signal 452 AND'ed with phase B signal 468. Therefore channel 0 data 560 is segment 0 data (from segment 0500 shown in
As can be seen in
When processing crossed data, crossed data 0—1 signal 452 is high since the data is crossed data, and phase B signal 468 is invoked because the data is received at the half frequency domain data rate. As such, input mux control 0 signal 470 mirrors phase B signal 468 because the signal is the result of crossed data 0—1 signal 452 AND'ed with phase B signal 468. Therefore channel 0 data 560 alternates between segment 0 data and segment 1 data (from segment 0500 and segment 505 shown in
As can be seen in
PCI bus 1014 provides an interface for a variety of devices that are shared by host processor(s) 1000 and Service Processor 1016 including, for example, flash memory 1018. PCI-to-ISA bridge 1035 provides bus control to handle transfers between PCI bus 1014 and ISA bus 1040, universal serial bus (USB) functionality 1045, power management functionality 1055, and can include other functional elements not shown, such as a real-time clock (RTC), DMA control, interrupt support, and system management bus support. Nonvolatile RAM 1020 is attached to ISA Bus 1040. Service Processor 1016 includes JTAG and I2C busses 1022 for communication with processor(s) 1000 during initialization steps. JTAG/I2C busses 1022 are also coupled to L2 cache 1004, Host-to-PCI bridge 1006, and main memory 1008 providing a communications path between the processor, the Service Processor, the L2 cache, the Host-to-PCI bridge, and the main memory. Service Processor 1016 also has access to system power resources for powering down information handling device 1001.
Peripheral devices and input/output (I/O) devices can be attached to various interfaces (e.g., parallel interface 1062, serial interface 1064, keyboard interface 1068, and mouse interface 1070 coupled to ISA bus 1040. Alternatively, many I/O devices can be accommodated by a super I/O controller (not shown) attached to ISA bus 1040.
In order to attach computer system 1001 to another computer system to copy files over a network, LAN card 1030 is coupled to PCI bus 1010. Similarly, to connect computer system 1001 to an ISP to connect to the Internet using a telephone line connection, modem 10105 is connected to serial port 1064 and PCI-to-ISA Bridge 1035.
While
One of the preferred implementations of the invention is a client application, namely, a set of instructions (program code) in a code module that may, for example, be resident in the random access memory of the computer. Until required by the computer, the set of instructions may be stored in another computer memory, for example, in a hard disk drive, or in a removable memory such as an optical disk (for eventual use in a CD ROM) or floppy disk (for eventual use in a floppy disk drive), or downloaded via the Internet or other computer network. Thus, the present invention may be implemented as a computer program product for use in a computer. In addition, although the various methods described are conveniently implemented in a general purpose computer selectively activated or reconfigured by software, one of ordinary skill in the art would also recognize that such methods may be carried out in hardware, in firmware, or in more specialized apparatus constructed to perform the required method steps.
While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, that changes and modifications may be made without departing from this invention and its broader aspects. Therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.