Device, debug trace fabric (DTF) and method
Patent Information
- Application Number
- JP2020196620
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-05-18
- Filing Date
- 2020-11-27
- Publication Date
- 2025-03-11
- Estimated Expiration
- 2040-11-27
Smart Images

Figure 0007643862000001 
Figure 0007643862000002 
Figure 0007643862000003
Abstract
Description
[Technical field]
[0001] TECHNICAL FIELD Embodiments of the present disclosure relate generally to the field of communication networks, and more particularly to routing traffic having primary and secondary destinations in communication networks. [Background technology]
[0002] The background discussion provided herein is intended to generally indicate the context of the present disclosure. Unless otherwise indicated herein, the material described in this section is not prior art to the claims of this application and is not admitted to be prior art by inclusion in this section.
[0003] A communication network may include multiple communication nodes interconnected according to a topology to route traffic from source to destination. Routing is the process of selecting a path for traffic within a communication network or between or across multiple networks. For example, a computer network is a digital telecommunication network for sharing resources between nodes that are computing devices. As another example, a system on a chip (SoC) is an integrated circuit (also known as a "chip") that integrates all or most of the components of a computer or other electronic system. When building complex SoCs, there are significant challenges in delivering a reliable, high-performance product to market on time. Incorporating built-in debug and trace logic into the SoC can greatly aid in this task. Often, the debug and trace logic of the SoC may include a debug trace fabric (DTF) or network to route trace traffic from source to destination. For any communication network design, an important consideration is the available bandwidth. Some networks, such as DTF in an SoC, or other networks, may have challenges with routing with limited bandwidth. [Brief description of the drawings]
[0004] The embodiments will be readily understood in conjunction with the following detailed description and the accompanying drawings, in which like reference numerals denote like structural elements and in which embodiments are illustrated by way of example and not by way of limitation.
[0005] [Figure 1a] FIG. 2 illustrates a schematic diagram of an example of routing traffic in a routing network having a set of routing elements, a set of sources, a primary destination, and a set of secondary destinations, according to various embodiments. [Figure 1b]FIG. 2 illustrates a schematic diagram of an example of routing traffic in a routing network having a set of routing elements, a set of sources, a primary destination, and a set of secondary destinations, according to various embodiments. [Figure 1c] FIG. 2 illustrates a schematic diagram of an example of routing traffic in a routing network having a set of routing elements, a set of sources, a primary destination, and a set of secondary destinations, according to various embodiments.
[0006] [Figure 2a] FIG. 1 illustrates a schematic diagram of an exemplary debug trace fabric (DTF) having a set of arbiters, a set of sources, a primary destination, and a secondary destination in a system on chip (SoC) according to various embodiments. [Figure 2b] FIG. 1 illustrates a schematic diagram of an exemplary debug trace fabric (DTF) having a set of arbiters, a set of sources, a primary destination, and a secondary destination in a system on chip (SoC) according to various embodiments.
[0007] [Diagram 3] FIG. 2 illustrates a schematic diagram of a process for routing traffic in a routing network having a set of routing elements, a set of sources, a primary destination, and a set of secondary destinations, according to various embodiments.
[0008] [Figure 4] FIG. 4 illustrates a storage medium having instructions for performing the methods described with reference to FIGS. 1a-1c, 2a-2b, and 3, according to various embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0009] In the following detailed description, reference is made to the accompanying drawings. In the following description, for purposes of explanation and not limitation, specific details are set forth, such as particular structures, architectures, interfaces, techniques, etc., to provide a thorough understanding of various aspects of various embodiments. However, it will be apparent to one skilled in the art having the benefit of this disclosure that various aspects of the various embodiments may be practiced in other examples that depart from these specific details. In certain instances, descriptions of well-known devices, circuits, and methods are omitted so as not to obscure the description of the various embodiments with unnecessary detail.
[0010] A communication network, e.g., a computer network, a debug trace fabric (DTF) for a system on chip (SoC), or other network, may include multiple communication nodes interconnected according to a topology to route traffic from a source to a destination. The communication nodes in a communication network may include a source, an intermediate or routing node, and a destination. A routing network may be a communication network that performs a routing function for traffic. In an embodiment, traffic in a communication network may have multiple destination nodes, e.g., a primary destination and one or more secondary destinations, starting from a source. The primary destination node may be a default destination for the traffic. Traffic intended to reach a secondary destination may be routed to the intended secondary destination or to the primary destination instead while maintaining the desired functionality for the traffic. The traffic may include one or more messages or packets. Packets, messages, and traffic may be used synonymously in the following description.
[0011] The SoC may have built-in debug and trace logic built into the SoC to assist in debugging tasks. Often, the debug and trace logic includes a DTF to route trace traffic, where the DTF is an example of a routing network. In some embodiments, the DTF may have a tree-like structure. The trace traffic may have two or more destinations. A primary destination may be a specific trace destination, such as a memory, an internal buffer, an external port, etc., that is shared among all trace sources in the SoC. A primary destination shared among traces may become a bottleneck for communication within the DTF. One way to remove or reduce the bottleneck is to provide the DTF with one or more additional trace aggregators, which essentially "segment" the DTF and increase the total available bandwidth. The one or more additional trace aggregators are secondary destinations for the trace traffic. With multiple trace aggregators as secondary destinations, the debug user can configure the DTF to send traces from each source to the appropriate trace destination, e.g., a trace aggregator as a secondary destination, or to the primary destination.
[0012] An embodiment herein presents a device operating as a first routing element of a plurality of routing elements in a routing network. The routing network further includes a set of sources, a primary destination, and a set of secondary destinations. The device comprises an input port, a set of output ports including a primary output port and a set of secondary output ports, and a control unit. The input port is configured to receive a message from a first neighbor in the routing network. The message includes a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations. The primary output port is configured to be coupled to a second neighbor that is the primary destination or a routing element that reaches the primary destination. The secondary output port is configured to be coupled to a third neighbor that is a routing element that reaches one of the secondary destinations or one or more of the set of secondary destinations. If the intended destination of the message is one of the set of secondary destinations and the secondary output port is functional, the control unit is configured to select one of the set of output ports for delivering the received message, otherwise if the intended destination is a secondary destination and the secondary output port through which the secondary destination is reached is non-functional, the control unit is configured to select the primary output port for delivering the received message to the primary destination.
[0013] An embodiment herein presents a DTF for a SoC of a computer system. The SoC includes a plurality of functional blocks. The DTF comprises a set of sources, a primary destination coupled to one or more of the plurality of functional blocks, a set of secondary destinations coupled to one or more of the plurality of functional blocks, and one or more arbiters. The set of sources is selected from the plurality of functional blocks. An arbiter of the one or more arbiters comprises an input port, a set of output ports including a primary output port and a set of secondary output ports, and a control unit. The input port is configured to receive a message from a first neighbor in the DTF. The message includes a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations. The primary output port is coupled to a second neighbor, the second neighbor being the primary destination or an arbiter that reaches the primary destination. The secondary output port is coupled to a third neighbor, which is a secondary destination or an arbiter for reaching the secondary destination. If the intended destination of the message is the secondary destination and the secondary output port is functional, the control unit is configured to select one secondary output port of the set of output ports for delivering the received message. Alternatively, if the intended destination is the secondary destination and the secondary output port for reaching the secondary destination is non-functional, the control unit is configured to select the primary output port for delivering the received message to the primary destination.
[0014] An embodiment herein presents a method for a routing element in a routing network. The routing network further includes a set of sources, a primary destination, and a set of secondary destinations. The method includes receiving a message from a first neighbor in the routing network. The message includes a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations. If the intended destination is one secondary destination of the set of secondary destinations and the secondary output port is functional, the method further includes selecting one secondary output port from the set of secondary output ports of the routing element to deliver the received message. Alternatively, if the intended destination is a secondary destination and the secondary output port that reaches the secondary destination is non-functional, the method includes selecting a primary output port of the routing element to deliver the received message to the primary destination. The routing element comprises a primary output port and a set of secondary output ports. The primary output port is configured to be coupled to a second neighbor that is a primary destination or a routing element that reaches the primary destination, and the secondary output port is configured to be coupled to a third neighbor that is a secondary destination or a routing element that reaches one or more of a set of secondary destinations.
[0015] In the following description, various aspects of the exemplary implementation will be described using terms commonly used by those skilled in the art to convey the essence of their work to others skilled in the art. However, it will be apparent to those skilled in the art that the embodiments of the present disclosure may be implemented with only some of the described aspects. For purposes of explanation, specific numbers, materials and configurations are set forth to ensure a thorough understanding of the exemplary implementation. It will be apparent to those skilled in the art that the embodiments of the present disclosure may be implemented without the specific details. In other instances, well-known features have been omitted or simplified so as not to obscure the exemplary implementation.
[0016] The various method operations may be described in sequence as multiple separate acts or operations in a manner that is most helpful in understanding the claimed subject matter. However, the order of description should not be construed to imply that these operations are necessarily order dependent. In particular, these operations may not be performed in the order presented. The operations described may be performed in a different order than in the described embodiment. Various additional operations may be performed and / or the operations described may be omitted, divided, or combined into additional embodiments.
[0017] For purposes of this disclosure, the phrase "A and / or B" means (A), (B), or (A and B). For purposes of this disclosure, the phrase "A, B, and / or C" means (A), (B), (C), (A and B), (A and C), (B and C), or (A, B and C).
[0018] The description may use perspective descriptions such as top / bottom, inside / outside, above / below, etc. Such descriptions are used merely for ease of discussion and are not intended to limit the application of the embodiments described herein to any particular orientation.
[0019] Where the disclosure refers to "a" or "first" element, or the equivalent, such disclosure includes one or more such elements, and does not require or exclude two or more such elements. Moreover, ordinal designations for identified elements (e.g., first, second, or third) are used to distinguish those elements, and do not indicate or imply a required or limited number of such elements, nor do they imply a particular location or order of such elements unless specifically stated otherwise.
[0020] The description may use the phrases "in one embodiment" or "in an embodiment," which may refer to one or more of the same or different embodiments, respectively. Additionally, when used with respect to embodiments of the present disclosure, terms such as "comprising," "including," and "having" are synonymous.
[0021] The term "coupled with," along with its derivatives, may be used herein. "Coupled" may mean one or more of the following: "Coupled" may mean that two or more elements are in direct physical or electrical contact. However, "coupled" may also mean that two or more elements are in indirect contact with each other, but still cooperate or interact with each other, and may mean that one or more other elements are coupled or connected between the elements that are said to be coupled with each other. The term "directly coupled" may mean that two or more elements are in direct contact.
[0022] As used herein, the term "module" may refer to being part of or including an application specific integrated circuit (ASIC), electronic circuitry, processor (shared, dedicated, or collection), and / or memory (shared, dedicated, or collection) that executes one or more software or firmware programs, combinatorial logic circuitry, and / or other suitable components that provide the described functionality.
[0023] Various embodiments may include any suitable combination of the above-described embodiments, including alternative or alternative embodiments of the embodiments described in the above conjunction (e.g., "and" can be "and / or"). Additionally, some embodiments may include one or more articles of manufacture (e.g., non-transitory computer-readable media) having instructions stored thereon that, when executed, result in the operations of any of the above-described embodiments. Some embodiments may also include an apparatus or system comprising any suitable means for performing the various operations of the above-described embodiments.
[0024] 1a-1c show schematic diagrams of examples of routing traffic in a routing network having a set of routing elements, a set of sources, a primary destination, and a set of secondary destinations, according to various embodiments. Figure 1a shows a routing network 100, while Figure 1c shows a routing network 150 in an SoC.
[0025] 1a, routing network 100 comprises a set of routing elements, e.g., routing element (RE) 131, RE 132, RE 133, RE 134, RE 135, and RE 136. In addition, routing network 100 comprises a set of sources, e.g., source 101, source 102, source 103, and source 104, a primary destination 105, and a set of secondary destinations, e.g., secondary destination 106 and secondary destination 107. In some embodiments, the set of sources and primary destinations together with one or more routing elements form a tree, and the secondary destinations are coupled to the tree via one or more of the routing elements. For example, source 101, source 102, source 103, and source 104, RE 131, RE 132, RE 133, RE 134, RE 135, and RE 136, and primary destination 105 form a tree, with source 101, source 102, source 103, and source 104 being leaves and primary destination 105 being the root. Secondary destination 106 is coupled to the tree via RE 131, and secondary destination 107 is coupled to the tree via RE 135.
[0026] In an embodiment, an RE may receive packets, messages, or traffic from one or more neighbors in the routing network and transmit the received packets, messages, or traffic to one or more neighbors in the routing network. A neighbor of an RE is a node of the routing network that is directly coupled to the RE by an edge in the graph or tree of the routing network, e.g., a source, an RE, a primary destination, or a secondary destination. For example, RE 131 may receive messages from multiple neighbors, e.g., source 101, RE 135, and transmit messages to multiple neighbors, e.g., RE 134 and secondary destination 106. On the other hand, RE 136 only receives from RE 135 and only transmits to secondary destination 106, i.e., RE 136 has only one neighbor for input and only one neighbor for output, which may be referred to as a repeater and is a special routing element.
[0027] FIG. 1b shows RE 131 in detail. Although RE 131 is shown as an example, other REs may have similar details to RE 131. RE 131 includes input ports 142 and 144, output ports 146 and 148, and a control unit 141. Output port 146 may be a primary output port, and output port 148 may be a secondary output port. Secondary output port 148 may be in various states, for example, selected from a non-connected state, a configuration state, a reset state, or a functional state. The non-functional state includes a non-connected state, a configuration state, or a reset state. Input port 142 and input port 144 may be coupled to RE 135 or source 101 as shown in FIG. 1a, while primary output port 146 is coupled to RE 134 that reaches primary destination 105. In some other embodiments, the primary output port may be directly coupled to primary destination 105. The secondary output port 148 is coupled to the secondary destination 106. In some other embodiments, the secondary output port may be coupled to a RE that reaches one or more of a set of secondary destinations.
[0028] In an embodiment, RE 131 has two input ports and two output ports including primary output port 146 and secondary output port 148. RE 135 has two input ports and three output ports, one output port reaching primary destination 105 and the other two output ports reaching secondary destination 106 or secondary destination 107, respectively. In general, a routing network may comprise different routing elements, where a first routing element has a first set of output ports and a second routing element has a second set of output ports, the first set of output ports being a first size different from a second size of the second set of output ports of the second routing element.
[0029] As shown in FIG. 1b, input port 142 is configured to receive message 143 from a neighbor in routing network 100. Message 143 includes a destination identifier 145 to identify an intended destination for message 143. The intended destination is selected from primary destination 105 or a set of secondary destinations, e.g., secondary destination 106 or secondary destination 107. Destination identifier 145 may be of various sizes depending on the number of secondary destinations and other design options. In some embodiments, the routing network includes only one secondary destination and the destination identifier includes only one bit having a binary value of 0 or 1 indicating whether the intended destination is a primary destination or a secondary destination.
[0030] In an embodiment, the control unit 141 is configured to select a secondary output port or a primary output port for delivering a received message based on the intended destination indicated by the destination identifier, in the absence of information about the topology of the routing network. Such an approach may have many advantages. For example, the routing of the message may be achieved by a limited number of bits in the destination identifier, e.g., one bit if there is only one secondary destination, without the need to further program any of the REs in the routing network 100. Thus, the routing network 100 may be dynamically configured or modified by adding or removing REs without changing any "programming" of the routing of the message.
[0031] In an embodiment, the control unit 141 is configured to select one of the secondary output ports for delivering the received message if the intended destination is one of the secondary destinations and the secondary output port is functional. In an embodiment, the control unit 141 is configured to select the primary output port for delivering the received message to the primary destination if the intended destination is a secondary destination and the secondary output port reaching the secondary destination is non-functional. For example, the control unit 141 may select the secondary output port 148 for delivering the received message 143 if the intended destination is a secondary destination and the secondary output port 148 is functional. However, if the secondary output port 148 is not functional, e.g., in an unconnected state, a configured state, a reset state, a not presented state, or a disabled state, the control unit 141 may select the primary output port 146 for delivering the received message 143 to the primary destination 105 instead of the intended secondary destination while still allowing the functionality of the message 143 to be fulfilled. Thus, if no secondary destinations exist or are not enabled, each packet will flow to the primary destination at the root of the routing network tree. This property allows for dynamic configuration and support of products that may not have secondary destinations.
[0032] In an embodiment, the control unit 141 is further configured to select a primary output port for delivering the received message 143 to the primary destination 105 if the destination identifier 145 indicates that the intended destination is the primary destination 105.
[0033] In an embodiment, message 143 may be a first message from a first neighbor with the secondary destination as the first intended destination, and RE 131 further receives a second message from a different neighbor via input port 144 with the primary destination as the intended destination of the second message. Control unit 141 is configured to select secondary output port 148 for delivering the received first message 143, and to select primary output port 146 for delivering the received second message to primary destination 105 in parallel with the delivery of first message 143.
[0034] 1c shows a routing network 150 in an SoC. Routing network 150 comprises a set of arbiters, a set of sources, a primary destination, and a set of secondary destinations. In an embodiment, routing network 150 is part of a DTF for the SoC, and the arbiters are routing elements.
[0035] In an embodiment, as shown in FIG. 1c, routing network 150 includes a set of arbiters, e.g., arbiter 181, arbiter 182, arbiter 183, arbiter 184, arbiter 185, and arbiter 186. In addition, routing network 150 includes a set of sources, e.g., source 151, source 152, source 153, and source 154, a primary destination 155, and a set of secondary destinations, e.g., secondary destination 156 and secondary destination 157. Primary destination 155 includes buffers coupled to all functional blocks of the SoC, which are shown as destination functional block 159. For example, primary destination 155 may include memory, internal buffers, external ports, etc., shared among all trace sources in the SoC, while secondary destination 156 and secondary destination 157 may be trace aggregators.
[0036] In some embodiments, a set of sources and primary destinations together with one or more routing elements form a tree, and secondary destinations are coupled to the tree via one or more of the routing elements. For example, source 151, source 152, source 153, and source 154, arbiter 181, arbiter 182, arbiter 183, arbiter 184, arbiter 185, and arbiter 186, and primary destination 155 form a tree, with source 151, source 152, source 153, and source 154 being leaves and primary destination 155 being the root. Secondary destination 156 is coupled to the tree via arbiter 181, and secondary destination 157 is coupled to the tree via arbiter 185.
[0037] In an embodiment, source 151, source 152, source 153, and source 154 are multiple functional blocks of an SoC. A functional block of the multiple functional blocks for an SoC is selected from a processor, a memory, an input / output block, a secondary storage, an analog functional block, or a mixed-signal functional block. In general, the source of the DTF is selected from the multiple functional blocks of the SoC. The SoC further comprises a functional communication network that couples the multiple functional blocks. As shown in FIG. 1c, the functional communication network 160 is a star network that couples the multiple functional blocks, for example, source 151, source 152, source 153, and source 154.
[0038] 2a-2b are schematic diagrams of an exemplary DTF 200 having a set of arbiters, a set of sources, a primary destination, and a secondary destination in an SoC according to various embodiments. In an embodiment, DTF 200 comprises source 212, source 214, repeater 205, arbiter 211, arbiter 213, primary destination 221, and secondary destination 223, plus upstream DTF tree 231. The source and primary destination 221, together with one or more arbiters, form a tree that includes upstream DTF tree 231. Only a portion of the tree is shown here. Secondary destination 223 is coupled to the tree via arbiter 211. Source 212, source 214, primary destination 221, and secondary destination 223 are examples of source 151, source 152, source 153, source 154, primary destination 155, secondary destination 156, or secondary destination 157, respectively, as shown in FIG. 1c.
[0039] The portion shown for DTF 200 is for illustrative purposes only. The overall network topology of DTF 200 may be much more complex, with many different sources, arbiters, and secondary destinations. In some embodiments, any arbitrary topology may be supported, as long as the topology does not implement loops. In an embodiment, DTF 200 is a hardware trace system built into the SoC. DTF 200 transmits debug trace information from a source to a destination. DTF 200 may include three components: the physical interconnect (e.g., wire, width and speed, communication nodes), the protocol used on the interconnect (e.g., arbitration, priority scheme, crediting), and payload packetization (e.g., how trace source data is represented). DTF 200 is implemented within the SoC based on the tracing requirements.
[0040] In an embodiment, source 212 or source 214 may be a functional block selected from multiple functional blocks of a SoC. In some other embodiments, source 212 or source 214 may be a separate entity coupled to a functional block. Source 212 includes source packetizer 201 and DTF encoder 202, and source 214 includes source packetizer 203 and DTF encoder 204. Source packetizer 201 or source packetizer 203 generates the debug data to be captured. Source packetizers vary in type and design and depend on the type of debug data being generated. DTF encoder 202 or DTF encoder 204 is used to take the data generated by the source packetizer and forward the data to the backbone of DTF 200, e.g., a tree-type network of arbiters. The DTF encoder may implement flow control with the fabric backbone. The source packetizer and encoder together may be referred to as a "debug source" or a "trace source."
[0041] In an embodiment, the DTF 200 is generally organized as a tree with multiple sources flowing into a single trace aggregator, e.g., primary destination 221. The primary destination 221 may be a trace aggregator that receives trace content and transmits the trace content to its final destination functional block of the SoC. In some embodiments, the trace aggregator may receive its input from a DTF arbiter or a DTF encoder. In some embodiments, a hardware trace system, e.g., the DTF 200, is designed to provide a path for multiple different trace sources to the primary destination 221, e.g., memory, internal buffers, external ports, etc. In many cases, the primary destination 221 may be a trace aggregator shared among all trace sources in the SoC. However, in some cases, especially when additional bandwidth is desired, a single path from a source to a trace aggregator, e.g., primary destination 221, is not sufficient. As multiple sources are added to a shared trace network, e.g., the DTF 200, limited trace bandwidth becomes a point of contention.
[0042] When designing a shared trace fabric for a SoC, one of the primary considerations is the amount of bandwidth available from any source to the trace aggregator, e.g., the primary destination 221, and to the final trace destinations of the functional blocks in the SoC. When there are many sources, they all share the same bandwidth. In some designs, there may be dozens or hundreds of sources that all require a large amount of bandwidth to be used, but share a relatively small pipe, causing contention for the shared trace aggregator.
[0043] To address these bandwidth concerns, secondary destinations 223 are added to the DTF 200 to remove or mitigate bottlenecks. Multiple trace aggregators on the SoC-level DTF, e.g., primary destination 221 and secondary destination 223, essentially "segment" the DTF and expand the total available bandwidth. As a result, "multiple trace destinations" or more specifically "multiple trace aggregators" are used, which become secondary destinations, e.g., secondary destination 223. With multiple trace aggregators as secondary destinations, the trace system may be configured by a debug user to send individual trace messages from the source to the appropriate trace destination. Since each trace destination has different characteristics and tradeoffs associated with its use, the debug user may require different configurations depending on the debug use case. Thus, the debug user may require this configuration to be specified as part of the mechanism of the trace system to determine the routing of trace traffic. This allows different sources to target different trace aggregators, e.g., either the primary destination 211 or the secondary destination 223, thereby allowing for a larger aggregate bandwidth. While each source may still have a limited maximum amount of bandwidth it can use, the aggregate bandwidth available in the DTF 200 is greater than with only one primary destination. By deploying multiple "secondary destinations," the aggregate amount of trace bandwidth can be increased significantly, potentially by several orders of magnitude.
[0044] In an embodiment, arbiter 211, arbiter 213, and upstream DTF tree 231 form a tree-shaped network, which is sometimes referred to as the backbone of DTF 200. Arbiter 211 or arbiter 213 takes one or more upstream inputs and generates one or more downstream outputs. For example, arbiter 211 has input port 207 and input port 209. Arbiter 211 receives message 243 from a neighbor, e.g., repeater 205, via input port 207. Message 243 includes destination identifier 245 for identifying an intended destination selected from primary destination 221 or secondary destination 223. In some embodiments, destination identifier 245 includes only one bit having a binary value of 0 or 1 indicating whether the intended destination is primary destination 221 or secondary destination 223.
[0045] Arbiter 213 has only one output and may be one of the bottlenecks when multiple sources are coupled to a single output. On the other hand, arbiter 211 has two output ports, namely output port 206 and output port 208. Output port 206 is coupled to a neighbor, e.g., arbiter 213, that reaches a primary destination 221. Thus, output port 206 is a primary output port. On the other hand, output port 208 is coupled to a neighbor that is a secondary destination 223. Thus, output port 208 is a secondary output port. Secondary output port 208 may be in a state selected from a non-connected state, a configured state, a reset state, or a functional state. The non-functional state may include a non-connected state, a configured state, or a reset state.
[0046] In an embodiment, the arbiter 211 may further include a control unit 215. The control unit 215 is configured to select the secondary output port 208 for delivering the received message 243 if the intended destination of the message 243 is the secondary destination 223 and the secondary output port 208 is functional. Alternatively, the control unit 215 is configured to select the primary output port 206 for delivering the received message 243 to the primary destination 221 if the intended destination is the secondary destination 223 but a secondary output port, e.g., the secondary output port 208, through which the secondary destination is reached is non-functional. Furthermore, the control unit 215 is configured to select the primary output port 206 for delivering the received message 243 to the primary destination 221 if the destination identifier indicates that the intended destination is the primary destination 221.
[0047] 2b illustrates further operation of arbiter 211. Arbiter 211 has input ports 207 and 209. Message 243 is a first message from a first neighbor, repeater 205, with secondary destination 223 as a first intended destination. Arbiter 211 is adapted to receive message 242 from a neighbor, e.g. source 214, with primary destination 221 as a second intended destination as indicated by destination identifier 244 of message 242. Control unit 215 is adapted to select primary output port 206 for delivery of message 242 to primary destination 221, and to select secondary output port 208 for delivery of message 243 in parallel with delivery of message 242.
[0048] As a result, Figure 2b shows the mapping of two sources to two different trace aggregators along two different paths, e.g., path 233 along which message 243 travels from source 212 to secondary destination 223, and path 235 along which message 242 travels from source 214 to primary destination 221. Because two output ports are placed on the DTF arbiter, each of the two sources has full bandwidth to the trace destination.
[0049] In an embodiment, the destination identifier 244 or destination identifier 245 may be a single bit named destid. This bit is generated by each source and flows with the data in the DTF 200 as part of the header information of the packet for the message. To generate the destid bit, the source packetizer 201 or source packetizer 203 includes a "destination ID" bit in a user programmable configuration register. The debug configuration tool then programs the destination ID of each source with the debug user's desired configuration. The default behavior of each source is to generate a destid of, for example, 0, which routes to the primary destination 221.
[0050] In an embodiment, the arbiter may select the primary or secondary output port depending on the value of the destid. The arbiter need not know any other information from the source, nor may it know the packet itself. There may be no inspection of the payload. As a result, the arbiter can make a fast decision (e.g., a single AND gate comparison) on the destination based on the destid bits alone. In addition, no run-time programming of the arbiter may be required for message routing. The arbiter knows all the information at run-time by simply looking at the state of the destid bits and the secondary port reset signal.
[0051] The arbiter uses the destid bits to select a "destination" based on the following simple rules: (1) If the arbiter is configured with only one output port, e.g., the primary output port, which can be a compile-time parameter, then all traffic is sent to that output port regardless of the destid bits. The destid bits are not modified. (2) If the arbiter is configured with both a primary and secondary output port, and the secondary trace output port is out of reset and functional, then all traffic with destid=1 is sent to the secondary port for the secondary destination. Otherwise, traffic is sent to the primary output port for the primary destination. In either case, the destid bits are not modified.
[0052] For components within the DTF 200 that do not have multiple outputs, the destid bits may be treated as having no effect or being transparent, without performing any action. Thus, components across different products may be used in the DTF without affecting the use of the destid bits. Additionally, if a source is configured via programming to route to a secondary destination, but there is no enabled secondary destination, the data will still flow to the primary destination without affecting the desired functionality of the data.
[0053] The embodiments herein have many advantages over some current techniques for routing trace traffic in a DTF, each of which has its own inherent shortcomings when used in a distributed tracing system, such as DTF 200, as described below.
[0054] Trace aggregator destination filtering / steering is a technique for routing trace traffic in the DTF. In this technique, individual trace sources are directed to destinations by some type of filtering logic programmed by the debug tool (i.e., the debug user). In detail, the user specifies some type of criteria (e.g., "master ID") that identifies the source, and the hardware implements a "filter" to route this particular source to a particular destination. In a distributed tracing system, the described filtering must be placed at every arbitration point in the network. If the DTF is implemented as a tree, there may be dozens, if not hundreds, of arbiters throughout the network. In addition, the filtering logic can be very large. For example, in the DTF example, filtering is required to be completed for an 8-bit "master ID" and 8-bit "channel ID" field, for a total of 16 bits (and up to 65k potential sources, even if all products use that space very sparsely). Additionally, a debug user may want any (one or more) of these 65k potential unique sources to go to a different destination. It is impractical to have a filtering space with 65k potential combinations, so multiple "copies" of filtering logic are used, perhaps along with some type of "mask-and-match" function to detect ranges of master IDs or channel IDs. Although this type of filtering may be effective in certain situations, such as when used within the trace aggregator itself, this filtering is impractical to implement in a distributed DTF, such as DTF 200.
[0055] Alternatively, trace bus repeaters may be used in the DTF. In this technique, the trace fabric is replicated to multiple destinations, each of which is either enabled or disabled. More advanced "trace sinks" may be developed that are not directly used for different "routing", but implement filtering to include a "subset" of traces. In this case, there will be two instances of the "trace sink" with filtering, and the debug user will program the two "trace sinks" differently, essentially programming one sink as the inverse of the other. In this method, filter logic similar to that described in trace aggregator destination filtering is implemented in each trace sink. This logic is applied at each repeater, not at each arbitration point. Additionally, the two trace sinks must be able to operate in parallel with each other and sink incoming trace data at the same speed.
[0056] Also, destination ID programming is a generic fabric used to forward traces from sources to destinations. The fabric contains routers, and each "message" on the fabric contains a "destination ID" field. Each router has a fixed routing table (defined at design time) to understand the entire topology of the fabric. The destination ID field is used to route the message to the correct endpoint. When used for tracing, different trace destinations are different endpoints of the fabric. The debug user then programs the trace destination in the source and the fabric handles the routing. In this case, there are two main drawbacks. First, the network itself must be aware of the entire SoC routing, either at compile time or at run time. If programming is used, the debug tools must be aware of the entire topology. Additionally, the number of bits that need to be used is based on the total number of endpoints (which may include all sources and destinations). Finally, due to the nature of the routing network, understanding how bandwidth is used and shared can be more complicated as it requires more detailed knowledge of the entire topology.
[0057] The embodiments herein differ from the current technology described above in many ways. The trace source that generates the packets that are placed on the fabric does not contain any type of fabric routing or lookup table implemented in hardware or programmed via software. Neither the source itself nor the debug tool software is aware of the topology of the DTF to which the source is connected. No bridge is required between the source and the DTF to provide fabric routing information. The fabric routing elements (e.g., arbiters) also do not contain any routing or lookup tables. Each routing element in the fabric itself is unaware of what is upstream or downstream of it. Each routing element looks at a single bit in conjunction with the availability of alternate destinations at that routing element to determine the routing decision. The source is unaware of the number or availability of trace destinations that may exist. As a result, the source destination bit programmed by the debug user can be interpreted as a "preference" to go to the first alternate (e.g., secondary) destination if an alternate destination exists. Functional correctness is maintained even if alternate destinations do not exist and / or are not enabled.
[0058] In an embodiment, for the DTF 200, a single bit "destination ID", e.g., destid, is generated by each trace source and added to the package that is configurable by the debug user. The destination ID bit is used at each DTF arbitration point (where multiple inputs are combined into a single output) to select one of multiple output paths. Thus, the embodiments herein provide source-level programming with a single bit carried through the DTF without programming any of the fabric elements at any time (either configuration or run-time) and without the debug configuration tool knowing the fabric topology. For example, there is no programming of the arbiter with routing information. Additionally, the capability is designed such that if no secondary destinations are present or enabled, each packet will flow to the trace aggregator at the root of the tree. Support for secondary destinations enables multiple different usage models that allow for the expansion and contraction of the internal trace solution. Additionally, the embodiments herein allow for easy reuse by adding elements before or after the DTF 200 without changing any of the "programming" of the DTF 200. Additionally, embodiments herein allow for dynamic configuration and support of products that may not have a secondary trace solution available or enabled without modifying the source.
[0059] FIG. 3 illustrates generally a process 300 for routing traffic in a routing network having a set of routing elements, a set of sources, a primary destination, and a set of secondary destinations, according to various embodiments. In an embodiment, the process 300 may be performed by the arbiter 211 shown in FIGS. 2a-2b or by a routing element in the routing network 100 shown in FIG. 1a. For example, the routing network comprises a set of sources, a primary destination, and a set of secondary destinations. The routing element comprises a primary output port and a set of secondary output ports. The primary output port is configured to be coupled to a neighbor that is a routing element that reaches the primary destination or the primary destination. The secondary output port is configured to be coupled to a neighbor that is a routing element that reaches the secondary destination or one or more of the set of secondary destinations.
[0060] At block 301, the process 300 may include receiving a message from a first neighbor in a routing network, where the message includes a destination identifier for identifying an intended destination selected from the primary destination or a set of secondary destinations. For example, as shown in FIG. 2b, at block 301, the process 300 may include receiving a message 243 from a neighbor 205, where the message 243 includes a destination identifier 245 for identifying the intended destination as the secondary destination 223.
[0061] At block 303, process 300 may include selecting a secondary output port from the set of secondary output ports of the routing element for delivering the received message if the intended destination is one of the set of secondary destinations and the secondary output port is functional. For example, as shown in FIG. 2b, at block 303, process 300 may include selecting secondary output port 208 for delivering message 243 if the intended destination is secondary destination 223 and secondary output port 208 is functional.
[0062] At block 305, process 300 may include selecting a primary output port of the routing element for delivering the received message to the primary destination if the intended destination is the secondary destination but the secondary output port through which the secondary destination is reached is non-functional. For example, as shown in FIG. 2b, at block 305, process 300 may include selecting primary output port 206 for delivering message 243 to primary destination 221 if the intended destination is secondary destination 223 but the secondary output port 208 through which the secondary destination is reached is non-functional.
[0063] The process 300 may further include other operations performed, such as selecting a primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination. Furthermore, the message is a first message received by the routing element via a first input port from a first neighbor with the secondary destination as the first intended destination, and the method further includes receiving a second message from another neighbor via a second input port with the primary destination as the second intended destination, selecting a secondary output port for delivering the received first message to the secondary destination, and selecting a primary output port for delivering the received second message in parallel with the delivery of the first message.
[0064] Further, the present disclosure may take the form of a computer program product embodied in any tangible or non-transitory medium having computer usable program code embodied in the medium. FIG. 4 illustrates an exemplary computer readable non-transitory storage medium that may be suitably used to store instructions that, upon execution of the instructions by a device, cause a device to implement selected aspects of the present disclosure. As illustrated, the non-transitory computer readable storage medium 402 may include a number of programming instructions 404. The programming instructions 404 may be configured, upon execution of the programming instructions, to enable a device to perform various operations associated with, for example, a process 300 for routing traffic in a routing network including a set of routing elements, a set of sources, a primary destination, and a set of secondary destinations, according to various embodiments. The various operations may be performed by the arbiter 211 illustrated in FIGS. 2a-2b or by the routing elements in the routing network 100 illustrated in FIG. 1a.
[0065] In an alternative embodiment, the programming instructions 404 may instead be located on multiple computer-readable non-transitory storage media 402. In an alternative embodiment, the programming instructions 404 may be located on a computer-readable transitory storage medium 402, such as a signal. Any combination of one or more computer usable or computer readable media may be utilized. The computer usable or computer readable medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (non-exhaustive list) of computer readable media would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a transmission medium such as supporting the Internet or an intranet, or a magnetic storage device. It should be noted that the computer usable or computer readable medium may also be paper or another suitable medium on which the program is printed, provided that the program can be captured electronically, for example by optical scanning of the paper or other medium, and then compiled, interpreted, or otherwise processed in a suitable manner if necessary, and then stored in a computer memory. In the context of this specification, a computer usable or computer readable medium may be any medium that can contain, store, communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. The computer usable medium may include a propagated data signal in which the computer usable program code is embodied, either in baseband or as part of a carrier wave. The computer usable program code may be transmitted using any suitable medium, including, but not limited to, wireless, wire, fiber optic cable, RF, etc.
[0066] Computer program code for carrying out the processes of the present disclosure may be written in any combination of one or more programming languages, including object-oriented programming languages such as Java, Smalltalk, C++, and traditional procedural programming languages such as the "C" programming language or similar programming languages. The program code may run entirely on the user's computer, partially on the user's computer as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider).
[0067] The present disclosure is described with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the present disclosure. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to generate a machine, such that the instructions, when executed by the processor of the computer or other programmable data processing apparatus, form means for implementing the function / act specified in each block or blocks of the flowchart illustrations and / or block diagrams.
[0068] The computer program instructions may also be storable in a computer-readable medium that can instruct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means that implements the functions / acts specified in each block or blocks of the flowchart illustrations and / or block diagrams.
[0069] The computer program instructions may also be loadable into a computer or other programmable data processing apparatus and a sequence of processing steps executed on the computer or other programmable apparatus to generate a computer-implemented process such that the instructions executing on the computer or other programmable apparatus result in a process for implementing the function / act specified in each block or blocks of the flowchart illustrations and / or block diagrams.
[0070] The flowchart diagrams and block diagrams in the drawings illustrate the architecture, functionality, and processing of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagram may represent a module, segment, or part of code, which includes one or more executable instructions for implementing the illustrated logical function. It should also be noted that in some alternative implementations, the functions shown in the blocks may occur out of the order shown in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may be executed in the reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or operations, or by a combination of dedicated hardware and computer instructions. As used herein, a "computer-implemented method" may refer to any method performed by one or more processors, a computer system having one or more processors, a mobile device such as a smartphone (which may include one or more processors), a tablet, a laptop computer, a set-top box, a gaming console, etc.
[0071] Embodiments may be implemented as a computer process, a computing system, or as an article of manufacture, such as a computer program product on a computer-readable medium. The computer program product may be a computer storage medium readable by a computer system and encoding computer program instructions for executing a computer process.
[0072] The corresponding structures, materials, acts, and equivalents of all means-plus-function or step-plus-function elements in the following claims are intended to include any structures, materials, or acts for performing the above-mentioned functions in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or to limit the disclosure to the disclosed form. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the present disclosure. The embodiments have been chosen and described to best explain the principles and practical applications of the present disclosure and to enable those skilled in the art to understand the disclosure for embodiments with various modifications adapted to the particular uses contemplated.
[0073] Thus, various exemplary embodiments of the present disclosure have been described, including but not limited to the following.
[0074] [example]
[0075] Example 1 is a device operating as a first routing element of a plurality of routing elements in a routing network, the input port configured to receive a message from a first neighbor in the routing network, the routing network further comprising a set of sources, a primary destination, and a set of secondary destinations, the message including a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations, a set of output ports including a primary output port and a set of secondary output ports, the primary output port configured to be coupled to a second neighbor that is the primary destination or a routing element that reaches the primary destination, and one secondary output port configured to receive a message from the first neighbor that is the secondary destination, the input port configured to receive a message from the second neighbor that is the secondary destination, the set of output ports including a primary output port and a set of secondary output ports, the primary output port configured to be coupled to a second neighbor that is the primary destination or a routing element that reaches the primary destination, and one secondary output port configured to receive a message from the secondary destination. a set of output ports configured to be coupled to one of the intended destinations of the message or a third neighbor that is a routing element to reach one or more of the set of secondary destinations; and a control unit configured to: select a secondary output port of the set of output ports for delivering the received message if the intended destination of the message is a secondary destination of the set of secondary destinations and the secondary output port is functional, or select the primary output port for delivering the received message to the primary destination if the intended destination of the message is the secondary destination but the secondary output port to reach the secondary destination is non-functional.
[0076] Example 2 may include the device of Example 1 and / or any other example herein, wherein the control unit is further configured to select the primary output port for delivering the received message to the primary destination if the destination identifier indicates that the intended destination is the primary destination.
[0077] Example 3 may include the device of Example 1 and / or any other example herein, wherein the set of sources and the primary destination form a tree with one or more routing elements of the set of routing elements, and the secondary destination is coupled to the tree via one or more of the routing elements.
[0078] Example 4 may include the device of Example 1 and / or any other example herein, where the routing network includes only one secondary destination and the destination identifier includes only one bit having a binary value of 0 or 1.
[0079] Example 5 may include the device of Example 1 and / or any other example herein, wherein the secondary output port is in a state selected from an unconnected state, a configuration state, a reset state, or a functional state, the non-functional state including the unconnected state, the configuration state, or the reset state.
[0080] Example 6 may include the device of Example 1 and / or any other example herein, wherein the control unit is configured to select, in the absence of information regarding a topology of the routing network, the secondary output port or the primary output for delivering the received message based on the destination identifier.
[0081] Example 7 is the device of example 1 and / or any other example herein, wherein the input port is a first input port, the message is a first message from a first neighbor with the secondary destination as a first intended destination, and the device further includes a second input port configured to receive a second message from a fourth neighbor with the primary destination as a second intended destination; The control unit may include a device configured to select the primary output port for delivering the received second message to the primary destination, and to select the secondary output port for delivering the received first message in parallel with delivery of the second message.
[0082] Example 8 may include the device of Example 1 and / or any other example herein, where the set of output ports of the device is a first set of output ports, and the plurality of routing elements includes a second routing element having a second set of output ports, and a first size of the first set of output ports of the first routing element is different from a second size of the second set of output ports of the second routing element.
[0083] Example 9 may include the device of Example 1 and / or any other example herein, wherein the routing network is part of a debug trace fabric (DTF) for a computing system and the routing element is an arbiter.
[0084] Example 10 may include the device of Example 9 and / or any other example herein, wherein the DTF is for a system on a chip (SoC) including a plurality of functional blocks, one source of the set of sources is selected from the plurality of functional blocks of the SoC, and the SoC further includes a functional communication network coupling the plurality of functional blocks.
[0085] Example 11 may include the device of Example 10 and / or any other example herein, wherein the functional communication network is a star network coupling the plurality of functional blocks.
[0086] Example 12 may include a device of Example 10 and / or any other example herein, wherein one of the functional blocks for the SoC is selected from a processor, a memory, an input / output block, secondary storage, an analog functional block, or a mixed-signal functional block.
[0087] Example 13 may include the device of example 10 and / or any other example herein, wherein the primary destination includes a device comprising a buffer coupled to all functional blocks of the SoC.
[0088] Example 14 illustrates a debug trace fabric (DTF) for a system on chip (SoC) of a computer system, comprising: a set of sources, the system on chip (SoC) comprising a plurality of functional blocks, the set of sources being selected from the plurality of functional blocks; a primary destination coupled to one or more of the plurality of functional blocks; a set of secondary destinations coupled to one or more of the plurality of functional blocks; and one or more arbiters, an arbiter of the one or more arbiters being an input port, the input port configured to receive a message from a first neighbor in the DTF, the message including a destination identifier to identify an intended destination selected from the primary destination or the set of secondary destinations; and a set of output ports including a primary output port and a set of secondary output ports, the one or more output ports being configured to receive a message from a first neighbor in the DTF, the message including a destination identifier to identify an intended destination selected from the primary destination or the set of secondary destinations. a set of output ports, where a next output port is coupled to a second neighbor, which is either the primary destination or an arbiter to reach the primary destination, and one secondary output port is coupled to a third neighbor, which is either a secondary destination or an arbiter to reach the secondary destination; and a control unit configured to select one secondary output port of the set of output ports for delivering the received message if the intended destination of the message is the secondary destination and the secondary output port is functional, or to select the primary output port for delivering the received message to the primary destination if the intended destination of the message is the secondary destination but the secondary output port to reach the secondary destination is non-functional.
[0089] Example 15 is the DTF of Example 14 and / or any other example herein, wherein the control unit may further include a DTF configured to select the primary output port for delivering the received message to the primary destination if the destination identifier indicates that the intended destination is the primary destination.
[0090] Example 16 may include the DTF of Example 14 and / or any other example herein, wherein the set of sources and the primary destination form a tree with the one or more arbiters, and the secondary destination is coupled to the tree via at least one arbiter.
[0091] Example 17 may include a DTF of Example 14 and / or any other example herein, wherein the SoC further includes a functional communication network coupling the plurality of functional blocks, the functional communication network being a star network.
[0092] Example 18 may include the DTF of Example 14 and / or any other example herein, where the set of secondary destinations includes only one secondary destination and the destination identifier includes only one bit having a binary value of 0 or 1.
[0093] Example 19 may include the DTF of Example 14 and / or any other example herein, wherein the secondary output port is in a state selected from an unconnected state, a configuration state, a reset state, or a functional state, the non-functional state including the unconnected state, the configuration state, or the reset state.
[0094] Example 20 may include the DTF of Example 14 and / or any other example herein, wherein the input port is a first input port, the message is a first message from the first neighbor having the secondary destination as a first intended destination, the arbiter further has a second input port configured to receive a second message from a fourth neighbor having the primary destination as a second intended destination, and the control unit is configured to select the secondary output port for delivering the received first message to the secondary destination and to select the primary output port for delivering the received second message in parallel with delivery of the first message.
[0095] Example 21 is a method for a routing element in a routing network, the method including: receiving a message from a first neighbor in the routing network, the routing network further comprising a set of sources, a primary destination, and a set of secondary destinations, the message including a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations; and selecting a secondary output port from the set of secondary output ports of the routing element for delivering the received message if the intended destination is a secondary destination of one of the set of secondary destinations and the secondary output port is functional. or if the intended destination is the secondary destination but the secondary output port to reach the secondary destination is non-functional, selecting a primary output port of the routing element for delivering the received message to the primary destination, wherein the routing element comprises the primary output port and the set of secondary output ports, the primary output port configured to be coupled to a second neighbor that is the primary destination or a routing element to reach the primary destination, and the secondary output port configured to be coupled to a third neighbor that is a routing element to reach the secondary destination or one or more of the set of secondary destinations.
[0096] Example 22 may include the method of Example 21 and / or any other example herein, further including selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination.
[0097] Example 23 may include the method of Example 21 and / or any other example herein, wherein the routing network includes only one secondary destination and the destination identifier includes only one bit having a binary value of 0 or 1.
[0098] Example 24 may include the method of Example 21 and / or any other example herein, wherein the secondary output port is in a state selected from an unconnected state, a configuration state, a reset state, or a functional state, the non-functional state including the unconnected state, the configuration state, or the reset state.
[0099] Example 25 may include the method of Example 21 and / or any other example herein, where the message is a first message from the first neighbor via a first input port with the secondary destination as a first intended destination, the method further including receiving a second message from a fourth neighbor via a second input port with the primary destination as a second intended destination, selecting the secondary output port for delivering the received first message to the secondary destination, and selecting the primary output port for delivering the received second message in parallel with delivery of the first message.
[0100] The foregoing description of one or more implementations has been provided for illustration and description, and is not intended to be exhaustive or to limit the scope of the embodiments to the precise forms disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of various embodiments.
[0101] These variations may be made to the present disclosure in light of the above detailed description. The terms used in the following claims should not be construed to limit the disclosure to the specific implementations disclosed in the specification and claims. Rather, the scope of the present disclosure is defined entirely by the following claims, which are to be construed in accordance with established doctrines of claim interpretation. (Item 1) A device that operates as a first routing element of a plurality of routing elements in a routing network, comprising: an input port configured to receive a message from a first neighbor in the routing network, the routing network further comprising a set of sources, a primary destination, and a set of secondary destinations, the message including a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations; a set of output ports including a primary output port and a set of secondary output ports, the primary output port configured to be coupled to the primary destination or a second neighbor that is a routing element reaching the primary destination, and a secondary output port configured to be coupled to one of the secondary destinations or a third neighbor that is a routing element reaching one or more of the set of secondary destinations; A control unit, selecting a secondary output port of the set of output ports for delivering the received message if the intended destination of the message is a secondary destination of the set of secondary destinations and the secondary output port is functional; or if the intended destination is the secondary destination but the secondary output port through which the secondary destination is reached is non-functional, selecting the primary output port for delivering the received message to the primary destination; A control unit configured to: A device comprising: (Item 2) The device described in Item 1, wherein the control unit is further configured to select the primary output port for delivering the received message to the primary destination when the destination identifier indicates that the intended destination is the primary destination. (Item 3) The device described in Item 1, wherein the set of sources and the primary destination form a tree together with one or more routing elements of the set of routing elements, and the secondary destination is coupled to the tree via one or more of the routing elements. (Item 4) The device of item 1, wherein the routing network has only one secondary destination and the destination identifier includes only one bit having a binary value of 0 or 1. (Item 5) The device described in Item 1, wherein the secondary output port is in a state selected from a non-connected state, a configuration state, a reset state, or a functional state, the non-functional state including the non-connected state, the configuration state, or the reset state. (Item 6) The device described in Item 1, wherein the control unit is configured to select the secondary output port or the primary output for delivering the received message based on the destination identifier, in the absence of information regarding the topology of the routing network. (Item 7) The input port is a first input port, the message is a first message from a first neighbor having the secondary destination as a first intended destination, and the device further has a second input port configured to receive a second message from a fourth neighbor having the primary destination as a second intended destination; 2. The device of claim 1, wherein the control unit is configured to select the primary output port for delivering the received second message to the primary destination and to select the secondary output port for delivering the received first message in parallel with delivery of the second message. (Item 8) The device described in Item 1, wherein the set of output ports of the device is a first set of output ports, and the plurality of routing elements includes a second routing element having a second set of output ports, and a first size of the first set of output ports of the first routing element is different from a second size of the second set of output ports of the second routing element. 9. The device of claim 1, wherein the routing network is part of a debug trace fabric (DTF) for a computing system and the routing element is an arbiter. (Item 10) The device described in Item 9, wherein the DTF is for a system on chip (SoC) including a plurality of functional blocks, one source of the set of sources is selected from the plurality of functional blocks of the SoC, and the SoC further comprises a functional communication network coupling the plurality of functional blocks. (Item 11) The device described in Item 10, wherein the functional communication network is a star network that connects the multiple functional blocks. (Item 12) The device described in Item 10, wherein one of the multiple functional blocks for the SoC is selected from a processor, a memory, an input / output block, secondary storage, an analog functional block, or a mixed signal functional block. (Item 13) The device described in Item 10, wherein the primary destination comprises a buffer coupled to all functional blocks of the SoC. (Item 14) A debug trace fabric (DTF) for a system on chip (SoC) of a computer system, comprising: a set of sources, the system on chip (SoC) comprising a plurality of functional blocks, the set of sources being selected from the plurality of functional blocks; and a primary destination coupled to one or more of the plurality of functional blocks; a set of secondary destinations coupled to one or more of the plurality of functional blocks; and one or more arbiters; Equipped with An arbiter of the one or more arbiters an input port configured to receive a message from a first neighbor in the DTF, the message including a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations; a set of output ports including a primary output port and a set of secondary output ports, the primary output port coupled to a second neighbor, the second neighbor being either the primary destination or an arbiter reaching the primary destination, and one secondary output port coupled to a third neighbor, the third neighbor being either a secondary destination or an arbiter reaching the secondary destination; a control unit configured to: select one of the set of output ports as a secondary output port for delivering the received message if the intended destination of the message is the secondary destination and the secondary output port is functional; or select the primary output port for delivering the received message to the primary destination if the intended destination of the message is the secondary destination but the secondary output port to reach the secondary destination is non-functional; and Equipped with DTF. (Item 15) The DTF described in Item 14, wherein the control unit is further configured to select the primary output port for delivering the received message to the primary destination when the destination identifier indicates that the intended destination is the primary destination. (Item 16) A DTF as described in Item 14, wherein the set of sources and the primary destination form a tree together with the one or more arbiters, and the secondary destination is coupled to the tree via at least one arbiter. (Item 17) The DTF according to item 14, wherein the SoC further comprises a function communication network that couples the plurality of function blocks, the function communication network being a star network. (Item 18) The DTF according to item 14, wherein the set of secondary destinations includes only one secondary destination and the destination identifier includes only one bit having a binary value of 0 or 1. (Item 19) A DTF as described in Item 14, wherein the secondary output port is in a state selected from a non-connected state, a configuration state, a reset state, or a functional state, and the non-functional state includes the non-connected state, the configuration state, or the reset state. (Item 20) The input port is a first input port, the message is a first message from the first neighbor with the secondary destination as a first intended destination, and the arbiter further has a second input port configured to receive a second message from a fourth neighbor with the primary destination as a second intended destination; Item 15. The DTF of item 14, wherein the control unit is configured to select the secondary output port for delivering the received first message to the secondary destination, and to select the primary output port for delivering the received second message in parallel with delivery of the first message. (Item 21) A method for a routing element in a routing network, comprising: receiving a message from a first neighbor in the routing network, the routing network further comprising a set of sources, a primary destination, and a set of secondary destinations, the message including a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations; selecting a secondary output port from a set of secondary output ports of the routing element for delivering the received message if the intended destination is a secondary destination of the set of secondary destinations and the secondary output port is functional; or if the intended destination is the secondary destination but the secondary output port leading to the secondary destination is non-functional, selecting a primary output port of the routing element for delivering the received message to the primary destination; Including, 22. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 23. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 24. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 25. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 26. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 27. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 28. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 29. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 30. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 31. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 32. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received message to the primary destination if the intended destination of the message is the primary destination; 33. The method of claim 21, further comprising the step of: selecting the primary output port for delivering the received (Item 25) The message is a first message from the first neighbor via a first input port with the secondary destination as a first intended destination, and the method further comprises: receiving a second message from a fourth neighbor via a second input port, the second message having the primary destination as a second intended destination; selecting the secondary output port for delivering the received first message to the secondary destination, and selecting the primary output port for delivering the received second message in parallel with delivery of the first message; 22. The method of claim 21, further comprising:
Claims
1. 1. A device that operates as a first routing element of a plurality of routing elements in a routing network, comprising: an input port configured to receive a message from a first neighbor in the routing network, the routing network further comprising a set of sources, a primary destination, and a set of secondary destinations, the message including a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations; a set of output ports having a primary output port and a set of secondary output ports, the primary output port configured to be coupled to the primary destination or a second neighbor that is a routing element reaching the primary destination, and one secondary output port configured to be coupled to one of the secondary destinations or a third neighbor that is a routing element reaching one or more of the set of secondary destinations; A control unit, selecting a secondary output port of the set of output ports for delivering the received message if the intended destination of the message is a secondary destination of the set of secondary destinations and the secondary output port is functional; or if the intended destination is the secondary destination and the secondary output port through which the secondary destination is reached is non-functional, selecting the primary output port for delivering the received message to the primary destination. A control unit configured to: A device comprising:
2. 2. The device of claim 1, wherein the control unit is further configured to select the primary output port for delivering the received message to the primary destination if the destination identifier indicates that the intended destination is the primary destination.
3. 2. The device of claim 1, wherein the set of sources and the primary destination form a tree with one or more routing elements of the set of routing elements, and the secondary destination is coupled to the tree via one or more of the routing elements.
4. 2. The device of claim 1, wherein the set of secondary destinations has only one secondary destination and the destination identifier has only one bit having a binary value of 0 or 1.
5. 2. The device of claim 1, wherein the secondary output port is in a state selected from an unconnected state, a configuration state, a reset state, or a functional state, the non-functional state including the unconnected state, the configuration state, or the reset state.
6. 2. The device of claim 1, wherein the control unit is configured to select the secondary output port or the primary output port for delivering the received message based on the destination identifier in the absence of information about a topology of the routing network.
7. the input port is a first input port, the message is a first message from the first neighbor with the secondary destination as a first intended destination, the device further comprising a second input port configured to receive a second message from a fourth neighbor with the primary destination as a second intended destination; 2. The device of claim 1, wherein the control unit is configured to select the primary output port for delivering the received second message to the primary destination and to select the secondary output port for delivering the received first message in parallel with delivery of the second message.
8. 2. The device of claim 1 , wherein the set of output ports of the device is a first set of output ports and the plurality of routing elements comprises a second routing element having a second set of output ports, a first size of the first set of output ports of the first routing element being different from a second size of the second set of output ports of the second routing element.
9. The device of any preceding claim, wherein the routing network is part of a debug trace fabric (DTF) for a computing system, and the routing element is an arbiter.
10. 10. The device of claim 9, wherein the DTF is for a system on chip (SoC) comprising a plurality of functional blocks, a source of the set of sources is selected from the plurality of functional blocks of the SoC, and the SoC further comprises a functional communication network coupling the plurality of functional blocks.
11. The device of claim 10 , wherein the functional communication network is a star network coupling the plurality of functional blocks.
12. 11. The device of claim 10, wherein a functional block of the plurality of functional blocks for the SoC is selected from a processor, a memory, an input / output block, secondary storage, an analog functional block, or a mixed-signal functional block.
13. The device of claim 10 , wherein the primary destination comprises a buffer coupled to all functional blocks of the SoC.
14. 1. A debug trace fabric (DTF) for a system-on-chip (SoC) of a computer system, comprising: a set of sources, the system on chip (SoC) comprising a plurality of functional blocks, the set of sources being selected from the plurality of functional blocks; and a primary destination coupled to one or more of the plurality of functional blocks; a set of secondary destinations coupled to one or more of the plurality of functional blocks; and one or more arbiters; Equipped with an arbiter of the one or more arbiters, an input port configured to receive a message from a first neighbor in the DTF, the message including a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations; a set of output ports having a primary output port and a set of secondary output ports, the primary output port coupled to a second neighbor, the second neighbor being either the primary destination or an arbiter reaching the primary destination, and one secondary output port coupled to a third neighbor, the third neighbor being either a secondary destination or an arbiter reaching the secondary destination; a control unit configured to: select one of the set of output ports as a secondary output port for delivering the received message if the intended destination of the message is the secondary destination and the secondary output port is functional; or select the primary output port for delivering the received message to the primary destination if the intended destination of the message is the secondary destination and the secondary output port to reach the secondary destination is non-functional; and The DTF comprises:
15. The DTF of claim 14, wherein the control unit is further configured to select the primary output port for delivering the received message to the primary destination if the destination identifier indicates that the intended destination is the primary destination.
16. 15. The DTF of claim 14, wherein the set of sources and the primary destinations form a tree with the one or more arbiters, and the secondary destinations are coupled to the tree via at least one arbiter.
17. The DTF of claim 14 , wherein the SoC further comprises a functional communication network coupling the plurality of functional blocks, the functional communication network being a star network.
18. 15. The DTF of claim 14, wherein the set of secondary destinations has only one secondary destination and the destination identifier includes only one bit having a binary value of 0 or 1.
19. 15. The DTF of claim 14, wherein the secondary output port is in a state selected from a non-connected state, a configured state, a reset state, or a functional state, the non-functional state including the non-connected state, the configured state, or the reset state.
20. the input port being a first input port, the message being a first message from the first neighbor with the secondary destination as a first intended destination, and the arbiter further having a second input port configured to receive a second message from a fourth neighbor with the primary destination as a second intended destination; The DTF of any one of claims 14 to 19, wherein the control unit is configured to select the secondary output port for delivering the received first message to the secondary destination, and to select the primary output port for delivering the received second message in parallel with delivery of the first message.
21. 1. A method for a routing element in a routing network, comprising: receiving a message from a first neighbor in the routing network, the routing network further comprising a set of sources, a primary destination, and a set of secondary destinations, the message including a destination identifier for identifying an intended destination selected from the primary destination or the set of secondary destinations; selecting a secondary output port from a set of secondary output ports of the routing element for delivering the received message if the intended destination is a secondary destination of the set of secondary destinations and a secondary output port is functional; or if the intended destination is the secondary destination and the secondary output port leading to the secondary destination is non-functional, selecting a primary output port of the routing element for delivering the received message to the primary destination; Equipped with The method of claim 1, wherein the routing element comprises the primary output port and the set of secondary output ports, the primary output port configured to be coupled to a second neighbor that is the primary destination or a routing element that reaches the primary destination, and the secondary output port configured to be coupled to a third neighbor that is the secondary destination or a routing element that reaches one or more of the set of secondary destinations.
22. 22. The method of claim 21, further comprising: if the intended destination of the message is the primary destination, selecting the primary output port for delivering the received message to the primary destination.
23. 22. The method of claim 21, wherein the set of secondary destinations has only one secondary destination and the destination identifier has only one bit having a binary value of 0 or 1.
24. 22. The method of claim 21, wherein the secondary output port is in a state selected from a non-connected state, a configuration state, a reset state, or a functional state, the non-functional state including the non-connected state, the configuration state, or the reset state.
25. The message is a first message from the first neighbor via a first input port with the secondary destination as a first intended destination, and the method includes: receiving a second message from a fourth neighbor via a second input port, the second message having the primary destination as a second intended destination; selecting the secondary output port for delivering the received first message to the secondary destination, and selecting the primary output port for delivering the received second message in parallel with delivery of the first message; The method of any one of claims 21 to 24, further comprising:
Citation Information
Patent Citations
Methods, systems and devices for forked routing
US20120158995A1