ADAPTIVE INTEGRITY LEVELS IN ELECTRONIC AND PROGRAMMABLE LOGIC SYSTEMS
20230222217 · 2023-07-13
Inventors
Cpc classification
G06F21/85
PHYSICS
G06F11/0796
PHYSICS
G06F11/08
PHYSICS
International classification
Abstract
Methods and apparatus for adaptive integrity levels in electronic and programmable logic systems. In one example, an interface for communication between a first component and a second component is provided. The interface includes logic configured to change an integrity level for a communication from the first component to the second component during operation of the first component and the second component.
Claims
1. An interface for communication between a first component and a second component, the interface comprising logic configured to change an integrity level for a communication from the first component to the second component during operation of the first component and the second component.
2. The interface of claim 1, wherein the integrity level for the communication comprises at least one of a safety level or a security level.
3. The interface of claim 1, wherein the logic is configured to change the integrity level for the communication from a higher integrity level to a lower integrity level and wherein the logic is further configured to control reallocation of one or more resources of the first component based on the change to the lower integrity level.
4. The interface of claim 1, wherein the logic is configured to change the integrity level for the communication from a lower integrity level to a higher integrity level and wherein the logic is further configured to control allocation of one or more resources of the first component based on the change to the higher integrity level.
5. The interface of claim 1, wherein at least one of the first component or the second component has an adaptive integrity level capable of being changed programmatically.
6. The interface of claim 1, wherein one of the first component or the second component has an adaptive integrity level capable of being changed programmatically and wherein the other one of the first component or the second component has a fixed integrity level.
7. The interface of claim 1, wherein a portion of the interface is located in the first component and wherein another portion of the interface is located in the second component.
8. The interface of claim 1, wherein: the first component has a subset or a different set of a plurality of integrity capabilities associated with the second component; and the logic is configured to convert integrity attributes for the communication from the first component to the second component, such that for the communication, a first integrity level of the first component effectively matches a second integrity level of the second component.
9. The interface of claim 1, wherein: a first integrity level of the first component is lower than a second integrity level of the second component such that integrity capabilities associated with the second component are not available for the first component; and the logic is configured to generate integrity attributes for the communication from the first component to the second component, such that for the communication, the first integrity level of the first component effectively matches the second integrity level of the second component.
10. The interface of claim 1, wherein: a first integrity level of the first component is higher than a second integrity level of the second component such that integrity capabilities associated with the first component are not available for the second component; and the logic is configured to terminate integrity attributes for the communication from the first component to the second component, such that for the communication, the first integrity level of the first component effectively matches the second integrity level of the second component.
11. The interface of claim 1, wherein the logic is configured to change the integrity level based on at least one requirement of an application that changes with at least one of time or space.
12. The interface of claim 1, wherein: a first integrity level of the first component differs from a second integrity level of the second component; and the logic is further configured to change another integrity level for another communication from the second component to the first component during operation of the first component and the second component, such that for the other communication, the second integrity level of the second component effectively matches the first integrity level of the first component.
13. The interface of claim 1, further comprising: a main signal path for routing the communication from the first component to the second component; and an integrity path for routing integrity attributes from the first component to the second component, wherein the logic is configured to change the integrity level of the communication by controlling the integrity path.
14. An integrated circuit (IC) comprising the interface of claim 1, the IC further comprising: the first component coupled to the interface; and the second component coupled to the interface, wherein the interface comprises a communication hub.
15. A method of communication, comprising: determining a first integrity level of a first component; determining a second integrity level of a second component; selecting, at an interface between the first component and the second component, an integrity level for a first communication from the first component to the second component, based on the first integrity level and the second integrity level; and sending the first communication through the interface, from the first component to the second component, according to the integrity level for the first communication.
16. The method of claim 15, further comprising: determining that at least one of the first integrity level or the second integrity level has changed; selecting, at the interface, an integrity level for a second communication from the first component to the second component; and sending the second communication through the interface, from the first component to the second component, according to the integrity level for the second communication.
17. The method of claim 16, wherein: the integrity level for the second communication is lower than the integrity level for the first communication; and the method further comprises controlling reallocation of one or more resources of the first component based on the selection of the integrity level for the second communication.
18. The method of claim 15, wherein: the first integrity level of the first component differs from the second integrity level of the second component; the first component has a subset or a different set of a plurality of integrity capabilities associated with the second component; and the method further comprises converting integrity attributes for the first communication from the first component to the second component, such that for the first communication, a first integrity level of the first component effectively matches a second integrity level of the second component.
19. The method of claim 15, wherein: the first integrity level of the first component is lower than the second integrity level of the second component such that integrity capabilities associated with the second component are not available for the first component; and the method further comprises generating integrity attributes for the first communication from the first component to the second component, such that for the first communication, the first integrity level of the first component effectively matches the second integrity level of the second component.
20. The method of claim 15, wherein: the first integrity level of the first component is higher than the second integrity level of the second component such that integrity capabilities associated with the first component are not available for the second component; and the method further comprises terminating integrity attributes for the first communication from the first component to the second component, such that for the first communication, the first integrity level of the first component effectively matches the second integrity level of the second component.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] So that the manner in which the above-recited features can be understood in detail, a more particular description, briefly summarized above, may be had by reference to example implementations, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical example implementations and are therefore not to be considered limiting of its scope.
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020] To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. It is contemplated that elements of one example may be beneficially incorporated in other examples.
DETAILED DESCRIPTION
[0021] Examples of the present disclosure provide methods and apparatus for implementing adaptive integrity levels in electronic and programmable logic systems. In this manner, various components (some with fixed integrity levels and others with adaptive integrity levels) can communicate with each other at varying integrity levels. The integrity levels may vary depending on changing features of an application with time and/or space. Furthermore, with adaptive integrity levels, a portion of resources can be redeployed to lower integrity level applications when one or more components change from a higher integrity level to a lower integrity level.
[0022] Various features are described hereinafter with reference to the figures. It should be noted that the figures may or may not be drawn to scale and that the elements of similar structures or functions are represented by like reference numerals throughout the figures. It should be noted that the figures are only intended to facilitate the description of the features. They are not intended as an exhaustive description of the claimed invention or as a limitation on the scope of the claimed invention. In addition, an illustrated example need not have all the aspects or advantages shown. An aspect or an advantage described in conjunction with a particular example is not necessarily limited to that example and can be practiced in any other examples even if not so illustrated or if not so explicitly described. Further, methods described herein may be described in a particular order of operations, but other methods according to other examples may be implemented in various other orders (e.g., including different serial or parallel performance of various operations) with more or fewer operations.
[0023] In the description that follows, the term “integrity level checks” refers to functions performed to verify the integrity of internal functions of electronic, programmable, and programmable logic (PL) components in a system, as well as checking the integrity of communication between components. Integrity level checks may range from low levels of integrity checks to higher levels of integrity checks. Low levels of integrity checks may consume fewer resources, less power, and potentially enable higher levels of performance of a component for a given resource footprint. Examples of lower levels of integrity checks include error detection of coalesced signals or state, such as parity checks, error correction code (ECC), and cyclic redundancy checks (CRCs). Depending on the desired level of integrity checks, parity, ECC, or CRC may be applied over a coalesced logical group of signals, such as request and response signals, or coalesced across all available signals, such as request, response, and data, in a communication protocol. State integrity checks can involve CRC or secure hash algorithms (SHAs) calculated over a coalesced logical group of registers (e.g., registers within components or coalesced key register values across components, such as key routing table registers across components). Higher levels of integrity checks may consume significantly higher resources, increasing power consumption and potentially lowering performance levels for the same resource footprint, compared to lower levels of integrity checks. Examples of higher levels of integrity checks include redundant signals and/or state of a component. For example, double redundancy for signals or state significantly increases error detection capability of a component, and triple or higher redundancy not only increases the error detection capability, but also significantly reduces the risk of failure and improves the ability of the component or system to gracefully react to failures.
[0024] Computing systems and devices include components that can be used in various applications or situations, some of which may be safety and/or data critical situations, such as in one or more of the automotive, industrial, aerospace, defense, or similar industries. The components may be heterogeneous, such as a mix of programmable logic (PL) fabric, processing subsystems (PSs), or offload accelerators (e.g., image sensor processors (ISPs) or data processing engines, such as for artificial intelligence). The heterogeneous components may interact with each other at varying integrity levels while collectively performing heterogeneous functions. That is, each component may check at least one of messages, state, or data received from other components and its own functions at an integrity level that is independent of integrity level checks performed by the other components.
[0025] Error detection of coalesced signals or state may be applied to functions within a component, direct communication between components, and/or a communication hub connecting multiple components.
[0026] Techniques to achieve high integrity levels, such as redundancy, may be used both for functional safety considerations and for security considerations. For example, integrity checks in redundant components can flag physical intrusion attacks, such as attempts to steal cryptographic secrets using voltage glitch attacks.
[0027] Due to the significant impact (resources, power, and performance) of providing high integrity levels to components and communication hubs between components, current techniques involve making tradeoffs between overall performance and achieved integrity levels at the time of system design and implementation. Once implemented, very little can be done to alter the tradeoff decisions made during implementation. Thus, an implementation that is targeted at high integrity level functions and applications will typically consume more resources and power than an implementation targeted at low integrity level functions. Similarly, implementations that are constrained by resource limitations and/or power consumption limitations will be limited to low integrity level functions and applications. However, many systems are heterogeneous, wherein domain-specific components are interconnected such that functions best performed in the software domain are serviced by processing components, functions best performed in the application-specific integrated circuit (ASIC) domain are serviced by ASIC-like components, artificial intelligence (Al) functions are serviced by machine learning (ML) accelerators such as graphic processor units (GPUs), math engines, or tensor processors, and functions or acceleration that require adaptability are serviced by programmable logic components. In such heterogeneous systems, the tradeoff of integrity level versus resources/power may be constrained such that the system implements either: (1) the lowest integrity level of the integrity levels across all heterogeneous components (e.g., depending on the type of computation or the type of application specific to the components) or (2) the integrity level of an integrated processor (IP, such as provided by a third party) having a fixed integrity level and dictating that all components communicate with that IP at a higher integrity level than would have otherwise been selected for the system.
[0028] Furthermore, although different applications may call for different integrity levels to be built into their components, frequently, computation data (e.g., sensor data) may be common to the different applications but computed differently (e.g. different sensor fusion functions) and at different integrity levels. For example, in an automotive deployment, applications may involve a common subset of sensors, but the level of computations and the integrity levels of each computation can vary.
[0029] Thus, the current approach of an implementation being anchored to an integrity level has the disadvantage that to target different integrity levels entails different implementations of a system. Otherwise, the sunk cost of a higher integrity level must be accepted in order to re-use the same implementation for an application requiring lower integrity levels. Also, there are cases where the data being processed is common and is processed for different applications (with different integrity levels) using a common set of components. If cost or resource usage is prioritized, and it is only the integrity level that varies during computation, unique designs are traditionally implemented to target a set of applications.
[0030] The present disclosure provides apparatus and techniques in which various components can communicate with each other at varying integrity levels (e.g., integrity levels that can be effectively and programmatically changed). Some of the components may be designed to a fixed integrity level, and other components may be designed to use adaptive integrity levels (also referred to as programmable integrity levels) that can change. The integrity levels can be adjusted with changing (e.g., varying over time and/or space) demands of an application. Examples of the present disclosure can be used in any of various suitable applications. For example, examples of the present disclosure can be implemented in an automobile to provide higher integrity levels while the automobile is being automatically controlled or driven at higher speeds and lower integrity levels while the automobile is being parked. The integrity levels can also be adjusted with demands of the application that vary with space. For example, two instances of the same implementation can be used in an automobile to provide different integrity levels at two different locations. The techniques provided in the present disclosure apply equally to a communication hub that can adapt to multiple source components with varying integrity levels communicating with a destination component that has the same or different integrity level capability than the source components.
[0031] An advantage of the techniques described herein is that a single implementation may target different integrity levels. Depending on the implementation, a portion or all of the resources deployed to achieve higher integrity levels can be redeployed for other functions in an application demanding lower integrity levels. Another advantage of the techniques described herein is that a common implementation using a common set of components may perform at various integrity levels, depending on the application for which computation is being performed. This may enable an implementation to perform at a first integrity level in a first deployment (e.g., a luxury automobile), and the same implementation may perform at a second integrity level in a second deployment (e.g., an entry-level automobile). Another advantage of the techniques described herein is that a safety qualification and certification process (or security qualification and certification process) can be performed on the same implementation by adapting/varying the integrity level of the components and communication between components as such an adaptive integrity level system is evaluated for various qualification and certification criteria. By varying the integrity level of the components during qualification and certification, a system can be qualified or certified for multiple implementations in a single certification or qualification process. Thus, the techniques described herein enable components to be adaptive across integrity levels, improve power efficiency, and improve security so that the resultant device can not only scale up in performance or functionality with more resources being made available for applications demanding lower integrity levels (e.g., lower safety and/or security), but also scale up in the level of functional safety and/or level of security offered by deploying more resources towards achieving higher integrity levels. Further details are provided below with respect to
[0032]
[0033] The central DA module 120 may send output commands regarding braking, steering, engine output, lighting, and/or a human-machine interface (HMI) to a vehicle control module 130. The central DA module 120 may use data from the front cameras 108a, 108b, and 108g to implement the lane-departure warning system. The central DA module 120 may implement the lane-departure warning system at an integrity level of 1 or 2. The central DA module 120 may use data from the cameras 108a, 108c, 108e, 108f, short-range radars 110a-110e, and ultrasonic sensors 102a-102h to implement the self-parking system. The central DA module 120 may implement the self-parking system at an integrity level of 3. The central DA module 120 may use data from the cameras 108a, 108c, 108e, and 108f and short-range radars 110a-110e to implement the lane-change assist system. The central DA module 120 may implement the lane-change assist system at an integrity level of 3. The central DA module 120 may use data from the ultrasonic sensors 102a-102h, thermal/infrared camera 104, laser radar 106, cameras 108a-108g, and short-range radars 110a-110e to implement the autonomous driving system. The central DA module 120 may further implement a machine learning (e.g., deep learning) system with the autonomous driving system, and the central DA module 120 may implement the autonomous driving system at an integrity level of 4 or 5.
[0034]
[0035] When supplying the data via the communication protocol interface 212 to the component 220, the component 202 generates one or more integrity attributes 210 using an integrity attribute generator function 204. The component 202 transmits the integrity attributes 210 in association with the data. The component 220 receives the integrity attribute(s) 210 and the data and verifies the data with the supplied integrity attribute(s) 210 using an integrity attribute checker function 222. When the supplied data has passed integrity attribute checks, the integrity attribute checker function 222 sends an indication 230 (e.g., sets a flag in memory or sends an electronic signal) to a processor function 224. When the processor function 224 obtains the indication 230, the processor function 224 then processes the supplied data 212. If the data 212 fails the integrity attribute checks performed by the integrity attribute checker function 222, then the integrity attribute checker function 222, the processor function 224, or an error-checking function in component 220 may generate an error message or otherwise indicate an error to preserve the integrity level.
[0036]
[0037] When supplying data via a communication protocol interface 312 to the component 320, the component 302a generates one or more integrity attributes using an integrity attribute generator function 304a. The component 302a transmits the integrity attributes 310 in association with the data. The component 320 receives the integrity attributes 310 and the data and verifies the data with the supplied integrity attributes 310 using an integrity attribute checker function 322. When the supplied data has passed integrity attribute checks, the integrity attribute checker function 322 sends an indication 330 (e.g., sets a flag in memory or sends an electronic signal) to a processor function 324. When the processor function 324 obtains the indication 330, the processor function 324 then processes the data supplied via the communication protocol interface 312. If the data fails integrity attribute checks performed by the integrity attribute checker function 322, then the integrity attribute checker function 322, the processor function 324, or an error-checking function in component 320 may generate an error message or otherwise indicate an error to preserve the integrity level.
[0038] In
[0039] The redundant communication protocol interface checker function 323 and the integrity attribute checker function 322 (see
[0040] In another example of the present disclosure, for higher integrity levels, such as integrity level 5, the system 300 may be operating with triple redundant integrity attributes. For that example, a third redundant component (not shown) supplies a third copy of the same data via another communication protocol interface (not shown) to the component 320. If the data has passed integrity attribute checks performed by the redundant communication protocol interface checker function 323 across one but not both redundant channels, then the redundant communication protocol interface checker function 323, the processor function 324, or an error-checking function in component 320 may indicate an error of lower severity, such that the processor function 324 may continue to process the supplied data from the two redundant communication protocol interfaces 360 and 362 that passed the integrity attribute checks.
[0041] In an example of the present disclosure, a system may implement integrity level converters to facilitate integrity level communication that is compatible between components. That is, if two components support different integrity levels, then an integrity level converter may be implemented to enable the two components to send and receive data from each other, and each component is able to verify the integrity of data received from the other component. For example, if a component sending data (referred to herein as a “send component”) determines integrity attributes based on all coalesced signals and the component receiving the data (referred to herein as a “receive component”) determines integrity attributes based on only the send/receive data subset, then a send integrity level converter may terminate the integrity attributes of all non-data-request signals and connect the integrity attributes of all data signals. Meanwhile, a receive integrity level converter may generate the integrity attributes of all non-data request signals and connect the integrity attributes of all data signals. In another example, if the send component is an integrity level 2 component that has parity integrity attributes determined based on each of the coalesced request, request data, response, and response data logical groups of signals, and the receive component is an integrity level 3 component that determines ECC integrity attributes based on each of the coalesced request, request data, response, and response data logical groups of signals, then the send integrity level converter may convert the parity integrity attributes of the send component to ECC integrity attributes for compatibility of communication with the integrity level 3 receive component Meanwhile, the receive integrity level converter will do the opposite, which is to convert the ECC integrity attributes of the integrity level 3 receive component to parity attributes in the response path to the integrity level 2 send component.
[0042]
[0043]
[0044]
[0045] In the example shown in
[0046]
[0047] In the example shown in
[0048]
[0049] In the example shown in
[0050]
[0051]
[0052] For example, in state 610, Component B is operating at integrity level 1, and the integrity level converter 504 selects to terminate integrity attributes 614 from Component A 602 while delivering data 612 from Component A 602 to Component B 606. In state 620, Component B is operating at integrity level 2, and the integrity level converter 504 selects to generate integrity attributes 626 based on the data 622 and delivers the generated integrity attributes 626 and data 622 to Component B 606. Integrity attributes 624 from Component A, if any, may be ignored by the integrity level converter 504. In state 630, Component B is operating at integrity level 3, and the integrity level converter 504 selects to convert integrity attributes 634 from Component A 602 into integrity attributes 636. The integrity level converter 504 then delivers the integrity attributes 636 and the data 632 to Component B 606. At 640, Component B is operating at integrity level 4 or 5, and the integrity level converter 504 selects to connect integrity attributes 644 from Component A 602 to integrity attributes 646. The integrity level converter 504 then delivers integrity attributes 646 and data 642 to Component B 606.
[0053] While
[0054]
[0055] Two integrity level converters 712 and 714 are configured to communicate with Component A 702. Integrity level converter 712 is configured to receive data 704 and integrity attributes 705 from Component A 702. Integrity level converter 714 is configured to send data 706 and integrity attributes 707 to Component A 702.
[0056] Because Component B 740 can act only as a source for data, one integrity level converter 718 is configured to communicate with Component B 740 in this example. Integrity level converter 718 is configured to receive data 742 and integrity attributes 743 from Component B 740.
[0057] Because Component C 750 can act only as a destination for data, one integrity level converter 716 is configured to communicate with Component C 750 in this example. Integrity level converter 716 is configured to send data 752 and integrity attributes 753 to Component C 750.
[0058] The adaptive integrity level hub 710 further comprises routing logic and switching facilities enabling the integrity level converters 712 and 718 to connect to Component C 750. When integrity level converter 712 is connected to Component C 750, integrity level converter 712 delivers data 704 and integrity attributes 708 to Component C 750 as data 752 and integrity attributes 753, respectively. When integrity level converter 718 is connected to Component C 750, integrity level converter 718 delivers data 742 and integrity attributes 744 to Component C 750 as data 752 and integrity attributes 753, respectively. The adaptive integrity level hub 710 further comprises routing logic and switching facilities enabling the integrity level converter 718 to connect to Component A 702. When integrity level converter 718 is connected to Component A 702, integrity level converter 718 delivers data 742 and integrity attributes 744 to Component A 702 as data 706 and integrity attributes 707, respectively. The adaptive integrity level hub 710 further comprises routing logic and switching facilities enabling the integrity level converter 714 to connect to Component B 740. When integrity level converter 714 is connected to Component B 740, integrity level converter 714 may receive data 742 and integrity attributes 743 from Component B 702 as data 706 and integrity attributes 709, respectively. The adaptive integrity level hub 710 may further comprise routing logic and switching facilities enabling the integrity level converters 712, 714, 716, and 718 to connect to other components which are not shown.
[0059] The table below illustrates example integrity class settings for heterogeneous integrity class components exchanging information via the adaptive integrity level hub 710, with reference to
TABLE-US-00001 Communication Integrity Entry Communication Initiator Target class 1 Component A 702 Adaptive integrity Mode level hub 710 2 Adaptive integrity Component A 702 Mode level hub 710 3 Component B 740 Component A 702 Mode configured to operate at integrity level 5 only 4 Component B 740 Component C 750 Convert configured to operate at configured to operate at integrity level 5 only integrity level 3 only 5 Component A 702 Component C 750 Connect operating at integrity configured to operate at level 3 integrity level 3 only 6 Component B 740 Component A 702 Convert or configured to operate at operating at integrity Terminate integrity level 5 only level 3
[0060]
[0061] The operations 800 may begin, at block 802, by determining a first integrity level of a first component. In some examples, this corresponds to determining an integrity level of one of the ultrasonic sensors 102a-102h, thermal/infrared camera 104, laser radar 106, cameras 108a-108g, and short-range radars 110a-110e, shown in
[0062] The operations 800 continue, at block 804, by determining a second integrity level of a second component. In some examples, this corresponds to determining an integrity level of a central DA module 120 or a vehicle control module 130, shown in
[0063] The operations 800 continue, at block 806, by selecting, at an interface between the first component and the second component, an integrity level for a first communication from the first component to the second component, based on the first integrity level and the second integrity level. In some examples, this corresponds to selecting an integrity level or an integrity class, such as those described herein, at one of the integrity level converters 410, 504, 712, 714, 716, or 718, shown in
[0064] The operations 800 continue, at block 808, by sending the first communication through the interface, from the first component to the second component, according to the integrity level for the first communication. In some examples, this corresponds to sending data through one of the integrity level converters 410, 504, 712, 714, 716, or 718, shown in
[0065] According to some examples, the operations 800 further include determining that at least one of the first integrity level or the second integrity level has changed. In this case, the operations 800 may further involve selecting, at the interface (e.g., with the integrity level select function 510), an integrity level for a second communication from the first component to the second component. Then, the second communication may be sent through the interface, from the first component to the second component, according to the integrity level for the second communication. For some examples, the integrity level for the second communication is lower than the integrity level for the first communication. In this case, the operations 800 may further involve controlling reallocation of one or more resources of the first component based on the selection of the integrity level for the second communication. For other examples, the integrity level for the second communication is higher than the integrity level for the first communication. In this case, the operations 800 may further include controlling allocation of one or more resources of the first component based on the selection of the integrity level for the second communication.
[0066] According to some examples, the first integrity level of the first component differs from the second integrity level of the second component, where the first component has a subset or a different set of a plurality of integrity capabilities associated with the second component. In this case, the operations 800 may further include converting integrity attributes for the first communication from the first component to the second component, such that for the first communication, a first integrity level of the first component effectively matches a second integrity level of the second component.
[0067] According to some examples, the first integrity level of the first component is lower than the second integrity level of the second component such that integrity capabilities associated with the second component are not available for the first component. In this case, the operations 800 may further involve generating integrity attributes for the first communication from the first component to the second component, such that for the first communication, the first integrity level of the first component effectively matches the second integrity level of the second component.
[0068] According to some examples, the first integrity level of the first component is higher than the second integrity level of the second component such that integrity capabilities associated with the first component are not available for the second component. In this case, the operations 800 may further include terminating integrity attributes for the first communication from the first component to the second component, such that for the first communication, the first integrity level of the first component effectively matches the second integrity level of the second component.
[0069] In the preceding, reference is made to examples presented in this disclosure. However, the scope of the present disclosure is not limited to specific described examples. Instead, any combination of the described features and elements, whether related to different examples or not, is contemplated to implement and practice contemplated examples. Furthermore, although examples disclosed herein may achieve advantages over other possible solutions or over the prior art, whether or not a particular advantage is achieved by a given example is not limiting of the scope of the present disclosure. Thus, the preceding aspects, features, embodiments, and advantages are merely illustrative and are not considered elements or limitations of the attached claims except where explicitly recited in one or more of the claims.
[0070] As will be appreciated by one skilled in the art, the examples disclosed herein may be embodied as a system, method, or apparatus, and the like. Accordingly, examples may take the form of an entirely hardware embodiment or a combination of hardware products or an embodiment combining hardware aspects with corresponding programming that may all generally be referred to herein as a “circuitry” or “system.” Furthermore, certain aspects, such as programmable logic blocks, lookup tables (LUTs), and the like, may take the form of hardware components that can be controlled using corresponding programming.
[0071] Any combination of one or more computer-readable medium(s) may be utilized. The computer-readable medium may be a computer-readable signal medium or a computer-readable storage medium. A computer-readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer-readable storage medium 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 disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer-readable storage medium is any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
[0072] A computer-readable signal medium may include a propagated data signal with computer-readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electrical, magnetic, optical, electromagnetic, or any suitable combination thereof. A computer-readable signal medium may be any computer-readable medium that is not a computer-readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
[0073] Program code embodied on a computer-readable medium may be transmitted using any appropriate medium, including but not limited to wireless (e.g., radio frequency (RF) or infrared), wireline, optical fiber or cable, etc., or any suitable combination of the foregoing.
[0074] Computer program code for carrying out operations or programming for examples of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
[0075] Examples of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (e.g., systems), and computer program products presented herein. It will 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, can 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 produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
[0076] These computer program instructions may also be stored in a computer-readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
[0077] The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other devices to produce a computer-implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
[0078] The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and apparatus according to various examples of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent circuitry, programming for such circuitry, or portion of instructions for such circuitry, which comprises one or more executable instructions for controlling or programming the circuitry to perform the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
[0079] While the foregoing is directed to specific examples, other and further examples may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.