Patent Publication Number: US-11391771-B2

Title: Integrated circuit pad failure detection

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This application is a National Phase of PCT Patent No. PCT/IL2018/051267 having International filing date of Nov. 22, 2018, which claims the benefit of priority of U.S. Provisional Patent Application No. 62/590,308, filed Nov. 23, 2017. The contents of the above applications are all incorporated by reference as if fully set forth herein in their entirety. 
    
    
     FIELD OF THE INVENTION 
     The invention relates to the field of integrated circuits. 
     BACKGROUND 
     Integrated circuits (ICs) may include analog and digital electronic circuits on a flat semiconductor substrate, such as a silicon wafer. Microscopic transistors are printed onto the substrate using photolithography techniques to produce complex circuits of billions of transistors in a very small area, making modern electronic circuit design using ICs both low cost and high performance. ICs are produced in assembly lines of factories, termed foundries, that have commoditized the production of ICs, such as complementary metal-oxide-semiconductor (CMOS) ICs. Digital ICs contain billions of transistors arranged in functional and/or logical units on the wafer, and are packaged in a metal, plastic, glass, or ceramic casing. The casing, or package, is connected to a circuit board, such as by using solder. Types of packages may include a leadframe (though-hole, surface mount, chip-carrier, and/or the like), pin grid array, chip scale package, ball grid array, and/or the like, to connect between the IC pads and the circuit board. As used herein the term IC means the integrated circuit including the package. 
     The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the figures. 
     SUMMARY 
     The following embodiments and aspects thereof are described and illustrated in conjunction with systems, tools and methods which are meant to be exemplary and illustrative, not limiting in scope. 
     There is provided, in accordance with an embodiment, a semiconductor integrated circuit (IC) comprising a time-to-digital converter circuit (TDC, of any type), wherein time inputs to the TDC are (i) one or more input signals to an input/output (I/O) buffer of a pad of the IC, and (ii) one or more output from the I/O buffer. The IC comprises a digital comparator circuit electrically configured to: receive a stream of digital output values from the TDC, compare each value of the stream to one or more previous value in the stream, and when the comparison reflects a difference value greater than a threshold, issuing a notification. The threshold is determined by one or more from the group consisting of: (i) a predefined threshold, (ii) a threshold received from an external testing circuit during initial operation of the IC, (iii) a threshold calculated and stored during the initial operation of the IC over a period of time, (iv) a threshold that varies over time, and (v) a threshold that varies with respect to at least one environmental condition. 
     In some embodiments, the time inputs to the TDC are determined from the lower-half of I/O buffer voltage swing using one or more analog comparator circuits. 
     In some embodiments, the issuing is performed when the difference value is greater than the threshold for a specific number of instances. 
     In some embodiments, the issuing is performed when the difference value is greater than the threshold for a specific number of instances within a time window. 
     In embodiments, the IC may further comprise an impedance learner configured to receive a stream of digital output values from the TDC (in particular, during the initial operation of the IC) and to determine the threshold based on the stream received (during the initial operation). This may especially apply when the threshold is determined by (iii) a threshold calculated and stored during the initial operation of the IC over a period of time. In such embodiments, the impedance learner is optionally configured to determine the threshold by analysis of the received stream using at least one from the group consisting of: (a) a statistical estimator (such as a maximum likelihood estimator); (b) a machine learning algorithm; and (c) a confidence interval computation. 
     In some embodiments, the at least one environmental condition comprises at least one from the group consisting of: voltage; and temperature. 
     In some embodiments, the digital comparator circuit is implemented (by firmware/hardware/software) on a computerized server, wherein the computerized server is external to the IC. 
     The notification may be to one or more of the group consisting of: (i) a user of the IC; (ii) cause an alert that can be detected by the user of IC, in response to the notification (for example using an alert generating circuit configured for that purpose, the alert being audible, visual or detectable by interfacing with the IC in some way, such as via a communications interface); (iii) disable a part or a whole of the IC, in response to the notification (for instance through an IC disabling circuit configured for that purpose); and (iv) cause a lane remapping of at least part of the IC, in response to the notification (for instance through a lane remapping circuit and/or a computer program, i.e. software configured for that purpose). 
     There is provided, in accordance with an embodiment, a method for detecting disconnections of an IC pad, comprising using one or more hardware processors for receiving a stream of digital output values from a TDC. The hardware processor(s) are used for comparing each value of the stream to one or more previous value in the stream. The method may further comprise, when the comparison reflects a difference value greater than a threshold, issuing a notification. The inputs to the TDC are (i) one or more digital signals from to an input/output (I/O) buffer of a pad of the IC, and (ii) one or more digital outputs from the I/O buffer. The threshold is determined by one or more from the group consisting of: (i) a predefined threshold, (ii) a threshold received from an external testing circuit during initial operation of the IC, (iii) a threshold calculated and stored during the initial operation of the IC over a period of time, (iv) a threshold that varies over time, and (v) a threshold that varies with respect to at least one environmental condition. In such method embodiments, method steps may optionally be provided to include any of the features discussed with reference to the IC embodiment. In some embodiments, there may considered a computer readable medium, having instructions stored thereupon for carrying out any of the method embodiments disclosed herein, when said instructions are performed by a processor. 
     In addition to the exemplary aspects and embodiments described above, further aspects and embodiments will become apparent by reference to the figures and by study of the following detailed description. The skilled person will appreciate that combinations and sub-combinations of specific features disclosed herein may also be provided, even if not explicitly described. 
    
    
     
       BRIEF DESCRIPTION OF THE FIGURES 
       Exemplary embodiments are illustrated in referenced figures. Dimensions of components and features shown in the figures are generally chosen for convenience and clarity of presentation and are not necessarily shown to scale. The figures are listed below. 
         FIG. 1  shows schematically a computerized system for detecting IC pad integrity; 
         FIG. 2  shows a flowchart of a method for detecting IC pad integrity; 
         FIG. 3A  shows schematically a solder bump of an IC pad; 
         FIG. 3B  shows schematically solder bumps of a 2.5D IC package; 
         FIG. 4  shows an electrical schematic of a solder bump of an IC pad; 
         FIG. 5A  shows an electrical schematic of a solder bump of an IC pad for detecting electrical connection integrity; 
         FIG. 5B  shows an electrical schematic of a TDC; 
         FIG. 6A  shows an electrical schematic of a detection circuit for a solder bump with electrical connection integrity degradation; 
         FIG. 6B  shows an exemplary write data path for one byte of data, in which a failure occurs; 
         FIG. 7  shows an electrical schematic of a solder bump of an IC pad for simulating electrical connection integrity; 
         FIG. 8A  shows a first oscilloscope screen of a first electrical timing delay simulation for detecting IC pad electrical connection integrity; 
         FIG. 8B  shows a second oscilloscope screen of a second electrical timing delay simulation for detecting IC pad electrical connection integrity; 
         FIG. 9  shows a graph of electrical timing delay simulation for detecting IC pad electrical connection integrity; 
         FIG. 10A  shows graphs of a first simulation of electrical connection integrity detection circuit performance; and 
         FIG. 10B  shows graphs of a second simulation of electrical connection integrity detection circuit performance. 
     
    
    
     DETAILED DESCRIPTION 
     Disclosed herein are devices, systems, and methods to detect intermittent/instantaneous disconnections of an IC pad. By measuring the input to output (I/O) delay for each I/O buffer of an IC pad, the timing delay can be converted to a digital value that reflects the I/O pad connection impedance. When the I/O pad solder is intermittently, instantaneously, or partially disconnected, the I/O pad connection impedance is changed, and the I/O buffer delay is changed. By monitoring this delay, a circuit on the IC or an external processing system may determine that the I/O pad solder has been compromised. The delay is measured by a time-to-digital converter (TDC, of any type) circuit which gets 2 inputs: (i) I/O buffer input signal, and (ii) I/O buffer output signal, optionally each after an analog comparator circuit. 
     The TDC thereby produces a stream of outputs, each of which indicates a delay at a certain measurement time. One value in the stream is compared with at least one previous value (for example, the immediately preceding value in the stream, a number of immediately preceding values, or an average of a number of preceding values or immediately preceding values of the stream) to provide a difference value. The difference value is compared against a threshold, to determine if the difference value is greater than the threshold. The threshold may be: (i) a predefined threshold (that is, preset in the IC); (ii) a threshold received from an external testing circuit (especially during initial operation of the IC); (iii) a threshold calculated and stored during the initial operation of the IC over a period of time; (iv) a threshold that varies over time (which may be preset or dynamically adjusted, for example calculated and/or stored on the IC); and (v) a threshold that varies with respect to at least one environmental condition (such as temperature and/or voltage, which may be measured using a respective sensor or other device providing a signal indicative of the respective environmental condition). The threshold thereby allows identification of a potential or actual failure within the IC. 
     Optionally, the analog comparator circuit compares the raw I/O buffer output signal to a certain threshold, such as a threshold at the lower-half of I/O buffer voltage swing. This may be done to filter reflections from the buffer impedance load that may affect the measured delay. The filtered signal at the analog comparator output may be clean from reflections, and the voltage swing may be equal to the voltage swing of the buffer input signal. The TDC may convert the instantaneous buffer delay into a digital readout. Any change in the buffer delay will be measured by the TDC based on the step-resolution which is an inverter-delay. As used herein, voltage swing means the difference of maximum output voltage and minimum output voltage. 
     Optionally, other data paths may be monitored for impedance changes by detecting changes in signal buffer delays. 
     Reference is now made to  FIG. 1  and  FIG. 2 , which show (i) schematically a computerized system  100  and (ii) a flowchart of method  200  a flow for detecting IC pad integrity. Computerized system  100  comprises an IC  150  with TDCs, such as  131 ,  132 ,  133 , and/or the like, one each electrically connected ( 141 ,  42 ,  143 , etc.) measuring the delay between the input and the output of an I/O buffer ( 151 ,  52 ,  153 , etc.) connected to an IC pad. The digital time measurement values may be communicated over a data network  140 , between a data interface  111  of IC  150  to a data interface  110  of a computer  101 A. Computer  101 A comprises one or more hardware processors  101 B, a user interface  120 , and a non-transitory, computer readable storage medium  102 . Storage medium  102  has encoded thereon program code modules ( 102 A,  102 B,  102 C, etc.) that when executed on hardware processor(s)  101 B perform actions of method  200 , such as  201 ,  202 ,  203 ,  304 ,  205 , and/or the like. Optionally, the TDC values are received by a processing component (not shown) on the IC that performs the actions of method  200 . For example, a TDC Data Receiver  102 A receives  201  TDC values. For example, an Impedance Learner  102 B analyzes the TDC values during an initial time period to determine a baseline behavior of the IC in operation. For example, TDC Data Receiver  102 A and/or a Pad Disconnect Detector  102 C monitor  203  TDC values and when an anomaly is detected  204 , notify  205  of a pad failure, eminent failure, future failure, and/or the like. 
     Optionally, the anomalies are counted before a notification is issued. 
     Optionally, the anomalies are counted within a time window before a notification is issued. 
     Reference is now made to  FIG. 3A , which shows schematically a solder bump of an IC pad. The I/O buffer may drive a the I/O of a flip chip pad, such as a controlled collapse chip connection (C4) bump connected to the pad. The C4 bump is an example of a common packaging technology, and in the general case, the invention is applicable to any package technology, or any chip-to-chip packaging technologies, such as 2.5D and/or 3D packaging technologies. 
     Optionally, electrically connection integrity is detected through one or more solder connections of an electronic package and/or circuit, such as micro-bumps, through-silicon via bumps, C4 bumps, package bumps (such as BGA balls), and/or the like. 
     Reference is now made to  FIG. 3B , which shows solder bumps of a 2.5D IC package. Shown are some different levels of solder joints within an IC package, and between the IC package and the circuit board. 
     Reference is now made to  FIG. 4 , which shows an electrical schematic (equivalent circuit) of a solder bump of an IC pad. The electrical diagram shows an I/O buffer driving a pad with electrostatic discharge (ESD) protection circuits (such as including the capacitor Cpad), a package trace (represented by a transmission-line component), and a receiver load (represented by capacitor Cload). The delay of the I/O-buffer may depend on the total buffer output impedance, such as the resistance-inductance-capacitance (RLC) load of all electrical components connected to the I/O buffer. A mechanical change to the solder of the pad, such as a disconnection, may change the buffer output RLC impedance load. 
     Reference is now made to  FIG. 5A , which shows an electrical schematic of a solder bump of an IC pad for detecting integrity. The I/O buffer may generate a timing value, using the TDC, which reflects its input-to-output delay, which in turn may be a function of the RLC impedance load. The I/O buffer delay may be measured for each rising and falling edges of the signal reaching the I/O pad. 
     The TDC and processing circuit/computer may detect the output load change based on the following steps:
     a. Convert the measured I/O-buffer delay or each monitored pad into a digital value readout.
       i. Readout may be generated for each rising and/or falling transition.   ii. Conversion accuracy may be 1-inversion-delay resolution, such as determined by a series connection of delay elements (diodes). For example, conversion from delay to digital is determined with a 1 picosecond (ps) accuracy. Delay accuracy and/or resolution may be between 1 femtosecond and 1 millisecond.   
       b. Learn the behavior of the delay-trace over-time, such as using machine learning algorithms, local on IC post-processing logic, and/or the like.   c. Detect a buffer delay change by comparing the buffer delay over-time to its own history and to the ongoing behavior of other buffers delays on this IC or other comparable ICs.   

     Reference is now made to  FIG. 5B , which shows an electrical schematic of a TDC. After each serial delay element, a storage device, such as a flipflop, records that (i.e., when) the signal reached that time delay, and then the decoder converts that delay to a digital value. 
     A detection circuit may determine that the delay value has passed a threshold. For example, a signal and noise model may be: s=s 1 (t)+s 2 (t)+n(t), where s 1 (t) denotes the steady state deterministic signal (may be a single-tone), s 2 (t) denotes the event (bad) signal, and n(t) denotes stochastic noise. The event may be E={s 2 (t)&gt;β}. The objective (for a given δ) may be to find a method F[s(t)]→0,1 such that: P(F[s(t)]=1, E C )&lt;δ 1  (false positive) (E C  stands for the complementary of E) and P(F[s(t)]=0, E)&lt;δ 2  (false negative). 
     Reference is now made to  FIG. 6A , which shows an electrical schematic of a detection circuit for a solder bump with electrical connection integrity degradation. 
     The issues resulting from I/O pad disconnections may be critical in many electronic systems and/or circuits. The disconnections may be caused by many types of solder joint failure, such as mechanical stress, corrosion, heat stress, vibration, fatigue, and/or the like. Disconnection may be permanent or intermittent. Intermittent disconnection may occur when the pad is disconnected for a short period of time during operation. 
     The detection may be performed non-intrusively, such as while the device/system is fully operational (no need to stop the device from its operational work to perform any type of special testing). The mechanical pad-disconnection problem is converted to an electrical signal that may be detected by electrical circuits and post-processing methods. The technique is not sensitive to the pad location on the IC package or circuit, and may be used for one or more pads, up to the maximum number of pads on the IC. 
     These issues become critical in many applications, such as applications where cost of failure is high (such as autonomous vehicles), cost of replacement is high (such as satellite IC failure), cost of failure to product image is high (such as a resulting negative user experience is created by failure), and/or the like. An integrated circuit (IC) embodiment using the techniques disclosed herein, includes one or more I/O buffer delay measurement circuits, and a system (and/or on IC circuit) that may alert of delays indicating that a failure is about to occur or has occurred. 
     Intermittent failure on an IC may be fatal, especially if it happens in the field. In such a case, the system may fail due to loss (breaking) of signal integrity. For example, data or control may be lost, which will lead to a complete failure of at least part of the IC. As a result, immediate or prompt (within a predetermined time window) alerting and/or notification of an intermittent failure, once detected in the field, may be highly advantageous, since the consequences of such intermittent failure are not necessarily known. It may be difficult to reproduce an intermittent failure, since it is non-continuous by definition and it may be caused by a mechanical problem. A fix can be performed after stopping operation of the IC (offline), for instance by identifying and replacing a bad die. Disabling the IC represents another possible option for avoiding complete failure of the IC once an intermittent failure has been detected in this way. 
     In addition to providing a notification or alert or as an alternative to these options, it may be possible to take one or more online mitigation actions to reduce the likelihood of or repair an intermittent failure causing a persistent or complete failure of the IC. For example, this may include activating a software based “lane-repair” or “lane re-map” mechanism in the field. This mechanism may replace a lane with a failure (such a data path) with a spare lane. 
     With reference to  FIG. 6B , there is shown an exemplary write data path for one byte of data, in which one failure occurs. The circuit receiving the d 5  signal has failed (indicated by the cross). The d 5  signal is then remapped to the next circuit down (replacing the d 6  signal), with consequent remapping to other circuits. Some signals may be lost in this remapping. In this example, the p 1  signal is lost. This is a less important signal, but such a process allows keeping the functionality of the system, by inserting one or more important signals to replace at least one less important signal. The remapping process can be expanded to multiple bytes. For example, it may be possible to remap a failed important signal from BYTE  0  to a less important signal in BYTE  1 . 
     The lane remapping may be by writing a register (soft) or by cutting an eFuse (hard). Although this has been illustrated in respect of a data write circuit, it will also be applicable to other types of circuits involving signals along a path, such as read circuits, memory circuits and data processing circuits. As shown by such examples, not only can a problem be indicated and debugged by the approach of the present disclosure, but also a solution to the problem may be possible. 
     Experimental Results 
     Following are results of simulations of a detection circuit and I/O pad failures. 
     Reference is now made to  FIG. 7 , which shows an electrical schematic of a solder bump of an IC pad for simulating electrical connection integrity.  FIG. 7  is similar to  FIG. 5A , with the addition of a switch (sw) to simulate the electrical disconnection of a solder pad. 
     Reference is now made to  FIG. 8A  and  FIG. 8B , which show a first and second oscilloscope screen of a first and second (respectively) electrical timing delay simulation for detecting IC pad integrity. An input signal  801  comprised a boxcar shape going from 0 to 0.8 at time equal to 2 nanoseconds (ns), and back to zero at 5 ns. A closed-switch signal  802  shows the delayed boxcar shape convolved with the impedance of the I/O buffer circuit. An open-switch signal  803  shows the changes as a result of a pad disconnection, including a slightly increased delay.  FIG. 8B  shows a close-up time scale of the delay between input signal  811 , a closed-switch signal  812 , and an open-switch signal  813 , showing a 187 ps increase in delay time. 
     Reference is now made to  FIG. 9 , which shows a graph of electrical timing delay simulation for detecting IC pad integrity. The graph of  FIG. 9  represents the derivative of the TDC output (x[n]-x[n−1]) for a certain delay signal. The values are centered around zero (with some amount of noise), and when the intermittent failure occurs the delay increased, and then decreased sharply. A pad-disconnection is simulated at n=9, and the result was a significant jump of the TDC readout and the derivative. In this example, the simulated buffer delay change was approximately 200 picosecond (ps) and the TDC step was 20 ps. Applying a threshold detection circuit/module may detect this anomaly and alert/notify the appropriate entity to take necessary actions. 
     The digital output of the TDC was post-processed using a maximum likelihood (ML) algorithm that learned the buffer delay and its derivative over-time. A threshold from the ML analysis may represent a good behavior based on the specific IC history and the behavior of other buffers of that IC and comparable ICs. The post-processing may be performed also by a local logic circuit on the IC. Part of the post-processing may be noise cancelation to increase the signal-to-noise of the TDC digital value signal (i.e. vector). 
     Reference is now made to  FIG. 10A  and  FIG. 10B , which show graphs of a first and second simulations of electrical connection integrity detection circuit performance. The two simulations show the detection of an intermittent disconnection in the signal and the detection circuit signal as shown by a dashed circle surrounding the anomaly. 
     Throughout this application, various embodiments of this invention may be presented in a range format. It should be understood that the description in range format is merely for convenience and brevity and should not be construed as an inflexible limitation on the scope of the invention. Accordingly, the description of a range should be considered to have specifically disclosed all the possible subranges as well as individual numerical values within that range. For example, description of a range such as from 1 to 6 should be considered to have specifically disclosed subranges such as from 1 to 3, from 1 to 4, from 1 to 5, from 2 to 4, from 2 to 6, from 3 to 6 etc., as well as individual numbers within that range, for example, 1, 2, 3, 4, 5, and 6. This applies regardless of the breadth of the range. 
     Whenever a numerical range is indicated herein, it is meant to include any cited numeral (fractional or integral) within the indicated range. The phrases “ranging/ranges between” a first indicate number and a second indicate number and “ranging/ranges from” a first indicate number “to” a second indicate number are used herein interchangeably and are meant to include the first and second indicated numbers and all the fractional and integral numerals therebetween. 
     In the description and claims of the application, each of the words “comprise” “include” and “have”, and forms thereof, are not necessarily limited to members in a list with which the words may be associated. In addition, where there are inconsistencies between this application and any document incorporated by reference, it is hereby intended that the present application controls. 
     To clarify the references in this disclosure, it is noted that the use of nouns as common nouns, proper nouns, named nouns, and the/or like is not intended to imply that embodiments of the invention are limited to a single embodiment, and many configurations of the disclosed components can be used to describe some embodiments of the invention, while other configurations may be derived from these embodiments in different configurations. 
     In the interest of clarity, not all of the routine features of the implementations described herein are shown and described. It should, of course, be appreciated that in the development of any such actual implementation, numerous implementation-specific decisions must be made in order to achieve the developer&#39;s specific goals, such as compliance with application- and business-related constraints, and that these specific goals will vary from one implementation to another and from one developer to another. Moreover, it will be appreciated that such a development effort might be complex and time-consuming but would nevertheless be a routine undertaking of engineering for those of ordinary skill in the art having the benefit of this disclosure. 
     Based upon the teachings of this disclosure, it is expected that one of ordinary skill in the art will be readily able to practice the present invention. The descriptions of the various embodiments provided herein are believed to provide ample insight and details of the present invention to enable one of ordinary skill to practice the invention. Moreover, the various features and embodiments of the invention described above are specifically contemplated to be used alone as well as in various combinations. 
     Conventional and/or contemporary circuit design and layout tools may be used to implement the invention. The specific embodiments described herein, and in particular the various thicknesses and compositions of various layers, are illustrative of exemplary embodiments, and should not be viewed as limiting the invention to such specific implementation choices. Accordingly, plural instances may be provided for components described herein as a single instance. 
     While circuits and physical structures are generally presumed, it is well recognized that in modern semiconductor design and fabrication, physical structures and circuits may be embodied in computer readable descriptive form suitable for use in subsequent design, test or fabrication stages as well as in resultant fabricated semiconductor integrated circuits. Accordingly, claims directed to traditional circuits or structures may, consistent with particular language thereof, read upon computer readable encodings (which may be termed programs) and representations of same, whether embodied in media or combined with suitable reader facilities to allow fabrication, test, or design refinement of the corresponding circuits and/or structures. Structures and functionality presented as discrete components in the exemplary configurations may be implemented as a combined structure or component. The invention is contemplated to include circuits, systems of circuits, related methods, and computer-readable (medium) encodings of such circuits, systems, and methods, all as described herein, and as defined in the appended claims. As used herein, a computer readable medium includes at least disk, tape, or other magnetic, optical, semiconductor (e.g., flash memory cards, ROM), or electronic medium and a network, wireline, wireless or other communications medium. 
     The foregoing detailed description has described only a few of the many possible implementations of the present invention. For this reason, this detailed description is intended by way of illustration, and not by way of limitations. Variations and modifications of the embodiments disclosed herein may be made based on the description set forth herein, without departing from the scope and spirit of the invention. It is only the following claims, including all equivalents, which are intended to define the scope of this invention. In particular, even though the preferred embodiments are described in the context of a PLL operating at exemplary frequencies, the teachings of the present invention are believed advantageous for use with other types of circuitry in which a circuit element, such as an inductor, may benefit from electromagnetic shielding. Moreover, the techniques described herein may also be applied to other types of circuit applications. Accordingly, other variations, modifications, additions, and improvements may fall within the scope of the invention as defined in the claims that follow. 
     Embodiments of the present invention may be used to fabricate, produce, and/or assemble integrated circuits and/or products based on integrated circuits. 
     Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. 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 readable program instructions. 
     The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing 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. 
     The descriptions of the various embodiments of the present invention have been presented for purposes of illustration but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application, or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.