Patent Publication Number: US-2023153989-A1

Title: Method and apparatus for automated defect detection

Description:
RELATED APPLICATIONS 
     This application claims the benefit of:
         provisional application with Ser. No. 63/324,342, filed Mar. 28, 2022 and titled “Ultrasonic Defect Classification of Isolated Defects using Machine Learning,”   provisional application with Ser. No. 63/297,601, filed Jan. 7, 2022 and titled “Simulated Dynamic Pretraining for Automated Defect Classification,” and   provisional application with Ser. No. 63/280,511, filed Nov. 17, 2021 and titled “Operator-in-the-loop Training of a Machine Learning Model.”       

     The entire content of these applications is hereby incorporated by reference. 
    
    
     BACKGROUND 
     Following manufacture, devices may be inspected to detect defects. This prevents defective products from reaching the marketplace. As an aid to inspection, images of the device may be acquired. For example, optical microscopy images or scanning ultrasonic microscopy images may be used to aid detection of surface defects in small devices, while scanning ultrasonic microscopy images or x-ray images may be used to detect defects within a device. 
     Ordinarily, operators are trained to examine these images to identify defects in the devices. However, this requires extensive training and, in addition, the process is prone to errors due to low contrast defects, inter-operator variance, fatigue, and the sheer number of devices to be analyzed. 
     There are various methods of automated analysis of these images to detect defects. However, the number of different devices that may be analyzed, the intricacy of the devices themselves, and limited numbers of defect exemplars can result in great difficulties in having sufficient data to train automated classifiers. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings provide visual representations that will be used to describe various representative embodiments more fully and can be used by those skilled in the art to better understand the representative embodiments disclosed and their inherent advantages. In these drawings, like reference numerals identify corresponding or analogous elements. 
         FIG.  1    is a block diagram of an automated defect classifier, in accordance with various representative embodiments. 
         FIG.  2    is a flow chart of a method of generating one or more reference images for comparison with an acquired image, in accordance with various representative embodiments. 
         FIG.  3    is a flow chart of a method of detecting and classifying defects in a device, in accordance with various representative embodiments. 
         FIG.  4    is a block diagram of an apparatus for training a Machine Learning (ML) model used for defect classification in an inspection system, in accordance with various representative embodiments. 
         FIG.  5    is a flow chart of a method of updating an ML-based automated defect classifier, in accordance with various representative embodiments. 
         FIG.  6    is a block diagram of an apparatus for training an automated defect classifier, in accordance with various representative embodiments. 
         FIG.  7    is a flow chart of a method of generating training material for an automated defect classifier, in accordance with various representative embodiments. 
         FIG.  8    shows example images, in accordance with various representative embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     The various apparatus and devices described herein provide mechanisms for automated detection and classification of defects in a device based on an acquired image of the device. 
     While this present disclosure is susceptible of embodiment in many different forms, there is shown in the drawings and will herein be described in detail specific embodiments, with the understanding that the embodiments shown and described herein should be considered as providing examples of the principles of the present disclosure and are not intended to limit the present disclosure to the specific embodiments shown and described. In the description below, like reference numerals are used to describe the same, similar or corresponding parts in the several views of the drawings. For simplicity and clarity of illustration, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. 
     Automated detection and classification of defects in a device may be based on an acquired image of the device. The image may be obtained by using a camera or detector to capture electromagnetic radiation such as visible light, infrared light or X-rays, for example. Alternatively, the images may be generated from a scan on the object, such as ultrasonic scan using a scanning acoustic microscope or a Magnetic Resonance Imaging (MRI) scan. 
     For example, in the environment of scanning ultrasonic microscopy for nondestructive testing of semiconductor devices, a mechanical scanning apparatus can move an ultrasonic transducer in orthogonal (X and Y) directions across the device under test, constructing an image from multiple reflected or transmitted pulses over the desired areas. The images of one or more such devices are the input to an automated defect classifier. Ultrasonic imaging is particularly good at identifying delaminations, voids, unintended fusions or bridges, cracks, and other such defects common to semiconductor analysis. These scans can be done on wafers, individual devices, semiconductor packages such as integrated circuits, and other such samples. 
     Ordinarily, operators are trained to examine these images to identify defects in the devices. This requires extensive training, and the process is prone to errors due to low contrast defects, inter-operator variance, fatigue, and the sheer number of devices that may be analyzed. 
     There are various methods of automated analysis of these images to find and classify defects. However, the number of different devices that may be analyzed, the intricacy of the devices themselves, and limited numbers of defect exemplars can result in great difficulties in having sufficient data to train automatic classifiers. 
     In prior automated systems, raw defect images or characteristics derived therefrom are used. The raw images include structure of the device under test, so an automated classifier must learn how to separate defects from the device structure. In accordance with the present disclosure, the differences between an acquired image and a reference image are used in the classification, rather than the raw images. This isolates the defect from the particular device types and simplifies the training process. The isolated defects in the difference images can be usefully analyzed based on classical image measurements such as size, shape, texture, contrast level, etc., with a classifier identifying these as defects such as cracks, scratches, voids, unintended fusions, and other such categories. Alternatively, the images can be analyzed using an ML-based classifier. As discussed below, the differences may be obtained in a number of ways, including simple subtraction of a reference image. 
     The identified defect type can optionally be associated with the defect location for more detailed classifications, such as a void on a particular part of the device. 
     One particular benefit of this approach is that isolated defect types can be seen in many different devices, allowing a trained classifier to be applied to multiple devices without the requirement of acquiring defect exemplars from every device produced, and training or retraining the classifier each time. 
       FIG.  1    is a block diagram of an apparatus  100  for automated defect classification, in accordance with various representative embodiments. Apparatus  100  includes an image capture device  102 , such as a scanning ultrasonic microscope or camera, for example. Image capture device  102  produces a digital image that is stored in image store  104  in storage  106 . Storage  106  also stores one or more reference images  108  for comparison with the acquired image. Apparatus  100  also includes one or more processors  110 . These may include programmable processors, dedicated hardware or a combination thereof. Accordingly, storage  106  may also store a program of processor executable instructions. The one or more processors implement scale and align block  112 , which adjusts, scales and normalizes the acquired image to align with the reference image better, and differencer  114  that determines the difference image. In one embodiment, the difference image is produced by subtracting pixel values of the reference image from pixel values of the acquired image (or vice versa). Other embodiments are described below. Optionally, when multiple reference images are available, statistics of variations between the images may be measured and used to scale the difference image. Detector  116  identifies, from the difference image, if any region shows a significant disparity or anomaly. In particular, the detector identifies isolated anomalies in the difference image. When an anomaly is detected, associated information is passed to classifier  118 . The associated information may be pixels  120  of the difference image or the region of the difference image showing the disparity, or characteristics  122  of the region (such as shape, size, contrast, texture, location, etc.). In one embodiment, pixels are passed to an automated feature extractor  124 , such as a neural network. Classifier  118  outputs classification information  126 , including the defect class. The classification information may also include a pass/fail indicator. The corresponding classification may be displayed to a human operator via operator interface  128  and/or stored at  130  in storage  106 , for example. Classification information  126  may also be passed to controller  132 . Controller  132  may control transport and scanning of devices under test in response to the classification information. In addition to classification of a defect, classification information  126  may include the location and/or extent of a defect and a confidence level of the classification. To this end, storage  106  may also contain metadata  134  related to the expected variations between images of defect-free devices, together with additional information such as designations of the regions of interest or importance in the device under test. 
     In the example embodiment shown in  FIG.  1   , image capture device  102  is a scanning acoustic microscope that includes scanner  136 , which insonifies an object under test at a number of scan positions, signal acquisition unit  138  that acquires signals from an ultrasound receiver and image builder  140  that measures time-gated signals and produces an image of received intensity at the scan positions in various time-windows. In one application, the object under test is a wafer containing multiple devices (chips). In this application, sub-image extractor  142  extracts images of individual devices to be inspected. 
     In one embodiment, the difference image at position i,j in the image is computed as the absolute difference 
         d ( i,j )=| y ( i,j )− m ( i,j )|,
 
     where i and j are pixel indices, y(i,j) is the acquired image of the device under test, and m(i, j) is a mean reference image computed over N reference images x n (i,j) as 
     
       
         
           
             
               m 
               ⁡ 
               ( 
               
                 i 
                 , 
                 j 
               
               ) 
             
             = 
             
               
                 1 
                 N 
               
               ⁢ 
               
                 Σ 
                 
                   n 
                   = 
                   1 
                 
                 N 
               
               ⁢ 
               
                 
                   
                     x 
                     n 
                   
                   ( 
                   
                     i 
                     , 
                     j 
                   
                   ) 
                 
                 . 
               
             
           
         
       
     
     In a further embodiment, the difference is a statistical difference computed as the absolute difference normalized by the standard deviation, namely 
     
       
         
           
             
               d 
               ⁡ 
               ( 
               
                 i 
                 , 
                 j 
               
               ) 
             
             = 
             
               
                 
                   
                     ❘ 
                     &#34;\[LeftBracketingBar]&#34; 
                   
                   
                     
                       y 
                       ⁡ 
                       ( 
                       
                         i 
                         , 
                         j 
                       
                       ) 
                     
                     - 
                     
                       m 
                       ⁡ 
                       ( 
                       
                         i 
                         , 
                         j 
                       
                       ) 
                     
                   
                   
                     ❘ 
                     &#34;\[RightBracketingBar]&#34; 
                   
                 
                 
                   
                     σ 
                     ⁡ 
                     ( 
                     
                       i 
                       , 
                       j 
                     
                     ) 
                   
                   + 
                   λ 
                 
               
               . 
             
           
         
       
     
     where λ is a non-negative parameter and the standard deviation, σ, satisfies 
     
       
         
           
             
               
                 σ 
                 2 
               
               ( 
               
                 i 
                 , 
                 j 
               
               ) 
             
             = 
             
               
                 
                   1 
                   N 
                 
                 ⁢ 
                 
                   
                     
                       Σ 
                       
                         n 
                         = 
                         1 
                       
                       N 
                     
                     ( 
                     
                       
                         
                           x 
                           n 
                         
                         ( 
                         
                           i 
                           , 
                           j 
                         
                         ) 
                       
                       - 
                       
                         m 
                         ⁡ 
                         ( 
                         
                           i 
                           , 
                           j 
                         
                         ) 
                       
                     
                     ) 
                   
                   2 
                 
               
               = 
               
                 
                   
                     1 
                     N 
                   
                   ⁢ 
                   
                     Σ 
                     
                       n 
                       = 
                       1 
                     
                     N 
                   
                   ⁢ 
                   
                     
                       x 
                       n 
                       2 
                     
                     ( 
                     
                       i 
                       , 
                       j 
                     
                     ) 
                   
                 
                 - 
                 
                   
                     
                       m 
                       ⁡ 
                       ( 
                       
                         i 
                         , 
                         j 
                       
                       ) 
                     
                     2 
                   
                   . 
                 
               
             
           
         
       
     
     Thus, a difference in a pixel value for which the standard deviation of the reference images is small will be given a higher weighting. 
     In a still further embodiment the difference image at position i,j is given by the minimum distance 
     
       
         
           
             
               d 
               ⁡ 
               ( 
               
                 i 
                 , 
                 j 
               
               ) 
             
             = 
             
               
                 min 
                 n 
               
               
                 
                   
                     ❘ 
                     &#34;\[LeftBracketingBar]&#34; 
                   
                   
                     
                       y 
                       ⁡ 
                       ( 
                       
                         i 
                         , 
                         j 
                       
                       ) 
                     
                     - 
                     
                       
                         x 
                         n 
                       
                       ( 
                       
                         i 
                         , 
                         j 
                       
                       ) 
                     
                   
                   
                     ❘ 
                     &#34;\[RightBracketingBar]&#34; 
                   
                 
                 . 
               
             
           
         
       
     
     Other measures of difference may be used without departing from the present disclosure. 
       FIG.  2    is a flow chart  200  of a method of generating one or more reference images for comparison with an acquired image, in accordance with representative embodiments. Referring to  FIG.  2   , images of defect-free devices of the same type as the device under test are acquired at block  202 . These may be images of different devices of the same type, for example. At block  204 , the one or more reference images are formed. In one embodiment, the images are aligned and normalized (if required) and then averaged to provide a single reference image. At block  206 , statistics of the defect-free images are measured. For example, the standard deviation of pixel values across the defect-free images may be computed. This allows for confidence testing of difference images or scaling of difference images. Optionally, at block  208 , regions of interest for the device are designated. Finally, at block  210 , the one or more reference images, together with any measured statistics and designated regions of interest, are stored. 
       FIG.  3    is a flow chart  300  of a method of detecting and classifying defects in a device, in accordance with various representative embodiments. At block  302 , an image of the device under test is acquired. The image can by acquired using a camera or scanner, for example. Alternatively, the image could be retrieved from a database of stored images. At block  304 , the image is scaled and aligned to match the reference image better. For example, the image may be normalized based on intensity or contrast, translated and/or rotated, and expanded or contracted. The alignment may be performed on a sub-pixel scale for improved accuracy. At block  306 , a difference image is generated between the acquired image and the reference image. The difference image may be scaled by the measured statistics of device-to-device variation. 
     Optionally, at block  308 , the difference image is enhanced by applying edge enhancement, texture extraction, or other image processing operations. 
     At decision block  310 , it is determined if the differences indicate a defect in the device under test. This may be done by detecting isolated anomalies in the designated regions of interest. In one embodiment, the isolated anomalies are measured by size, angle, shape, texture, contrast, and other such characterizations. If no defect is indicated, as depicted by the negative branch from decision block  310 , the device is judged to be free from defects and flow returns to block  302 . Otherwise, as depicted by the positive branch from decision block  310 , the difference image, or the measured characterizations, are passed to an automated defect classifier. The detection may utilize thresholds such as a minimum difference intensity, minimum size, minimum intensity relative to reference deviations, or other such criteria that must be met before passing on the difference for classification. 
     At block  312 , the isolated defects are identified and classified by the automated defect classifier. In addition, an indication of a confidence level of the classification may be produced based on the statistics of the reference images, together with a location of the defect. At block  314 , the defect class and locations are reported, together with a confidence level of the classification. Flow then returns to block  302 . 
     In one embodiment, the classifier may be trained using K-Means clustering of characteristics of previously identified defects, returning a classification of that current difference into one of the designated defect categories. Alternatively, low confidence classifications may be grouped as unclassified differences, and optionally returned for manual inspection. Other embodiments of the disclosure may use other kinds of classifiers, such as Bayes classifiers, neural networks, or other classifiers known in the realm of machine learning, any of which consist of a single classifier that returns one of multiple potential identifications and confidence strengths. 
     In the method described above, the classifier is not required to distinguish between specific structure of a device and a defect, since the device structure is removed by the differencing process, thereby isolating the defect. A major benefit of this approach is that the classifier does not have to be retrained for different devices. It is sufficient to train the classifier to recognize different classes of isolated defects. 
     The classifier may use characteristics of the identified defect, such as size, angle, shape, texture and contrast. Alternatively, feature vectors for classification may be obtained automatically from the raw difference pixel data. In one embodiment, raw pixel data is passed to a convolutional neural network (CNN), or other neural network, to extract features that are then fed into a feature-based classifier. 
     Thus, using one or more reference images of known good devices, a difference of sample images from the references are determined. Only the differences or measured characteristics of the differences are used for detection and classification. 
     The classifier (and CNN or other feature generator, if used) may be trained using training data in the form of previously identified, manually classified, and labeled defects. However, since only extracted differences between the sample and reference image(s) are fed into the classifier, different semiconductor devices may be tested without retraining the classifier. 
     The confidence level of a classification can also be reported and differences that are not classified with sufficient confidence can be reported for manual examination. 
     In summary, defects in inspection images (such as ultrasonic scans of semiconductor devices) are classified by isolating the defects as the differences between device images and one or more reference images, using multiple measurements of those defect differences to differentiate between multiple defect categories. Differences with low classification confidences can also be referred to manual consideration as needed. 
     Operator in the Loop. 
     Machine Learning (ML) model training is typically a lengthy process that occurs prior to deploying a trained model into a production environment. During this training period, users get no value from the model. Additionally, users typically don&#39;t know if the ML model will work in a real-world environment without performing extensive testing, which further delays deployment. Embodiments of this disclosure seek to eliminate the lengthy pretraining, while simultaneously providing immediate value to operator productivity. An added benefit is that the ML model is continuously being testing with real-world data in a production environment eliminating the risk of “data shift.” Data shift is a mismatch between the data on which the AI was trained and tested and the data it encounters in the real-world. 
       FIG.  4    is a block diagram of an apparatus  400  for training a Machine Learning (ML) model used for defect classification in an inspection system, in accordance with various representative embodiments. The inspection system may be, for example, an ultrasonic inspection and defect detection system for semiconductor devices. In the example shown, ML-based classifier  402  is first initialized with a base ML model—such as that trained on a different semiconductor device. As described above, since structural details of the device are removed by differencer  114 , the base ML model provides at least some performance. An image of a device under test is acquired by image capture device  404  and the resulting image is stored at  406  in memory  106 . As described above, differencer  114  forms a difference image using one or more reference images  408 , and any detected defects are classified by ML-based classifier  402  to provide classification information  126 . The difference image is also displayed on operator display  410 , enabling a trained operator to identify and classify the defect. The operator classification may be used to update image metadata  414  so that the acquired image can be used for training at a later time. The operator classification  412  and the ML-based classification are compared in compare and update unit  416 . Based on the comparison, the accuracy of the classifier is updated. Optionally, feature extractor  124  may also be updated. If the classifier is not sufficiently accurate, the operator classification is used to update the classifier to provide improved performance. When the classifier is judged to be sufficiently accurate, the operator is no longer needed. The update may signal the operator when this occurs. Alternatively, the compare and update unit  416  may report the current accuracy level to the operator so that the operator can determine if sufficient accuracy has been achieved. 
     In the embodiment shown in  FIG.  4   , defect classification data is received from a single image capture device  404  that may be local to or remote from the operator. However, in other embodiments, classification data may be received from multiple inspection stations and used to update the same ML model. This has the added benefit of accounting for possible variation between scan tools. Additionally, multiple operators may update an ML-model that is shared between multiple stations. 
       FIG.  5    is a flow chart of a method  500  of updating an ML-based automated defect classifier, in accordance with various representative embodiments. An image of a device under test is acquired by an image capture device at block  502 . A defect in the image is classified at block  504  based on a difference between the captured image and one or more reference images. A classification of the defect is received from an operator at block  506 , based on a difference image displayed to the operator. The operator classification may be used to update image metadata so that the captured image may be used for training at a later time. The operator classification and the ML-based classification are compared at block  508 . Any discrepancy in the classifications is resolved by the operator at block  510 . Based on the comparison, a measure of the accuracy of the automated defect classifier is updated at block  512 . If the classifier is not sufficiently accurate, as indicated by the negative branch from decision block  514 , the operator classification is used to update the classifier at block  516  to provide improved performance, and flow returns to block  502 . Otherwise, as depicted by the positive branch from decision block  514 , the classifier is judged to be sufficiently accurate and the operator is no longer needed, as indicated by block  518 . The updater may signal the operator when this occurs. 
     Simulated Training Images 
     Component-to-component, run-to-run, and part-to-part variances make it difficult to build generic libraries for automated inspection. Pretraining an Automated Defect Classifier (ADC) requires processing a large number of images (typically thousands) representing actual components with and without defects. These images may be difficult to obtain—especially for a new device. An embodiment of the present disclosure creates pretraining materials for ADC dynamically, so that more defects can be captured earlier in the system and with less human intervention. 
       FIG.  6    is a block diagram of an apparatus  600  for training an automated defect classifier (ADC), in accordance with various representative embodiments. Referring to  FIG.  6   , one or more reference images of defect-free devices of the same type are stored at  602  in storage  106 . As described above, differencer  114  and classifier  118  are used to classify defects detected in the acquired images stored at  604 . The resulting classifications are passed to an operator via operator interface  128 . When a defect is detected, characteristics of the defect may be passed to simulated-image generator  606  which creates simulated difference images containing the defect in multiple different (feasible and infeasible) views. The simulated difference images are stored at  608 . Classification labels for the image, together with any statistics used in the simulation, are stored in metadata store  610 . The simulated difference images provide training material that can be used to train the ADC to recognize defects. These may be used in conjunction with conventional (non-simulated) training materials. During training, the simulated difference images are passed directly to anomaly detector  116 , as depicted by dashed arrow  612 . The difference between the classification produced by classifier  118  and the label in metadata  610  is used to update the classifier and, optionally, feature extractor  124 . 
     In a further embodiment, simulated-image generator  606  generates simulated images with and without the defect. The defect-free images, stored at  602 , do not need to be device images—they can be any images. Noise may be added to one or both of the defect-containing and defect-free images. 
     The images to be inspected may be obtained dynamically as devices are scanned. When an operator identifies a defect, that defect can be flagged and used to trigger the generation of multiple simulated images. This may occur for defects that the ADC has classified correctly, mis-classified or has failed to detect. New classes of defects can also be added. In this way, the library of training images may be greatly enlarged compared to using only scanned or captured images. 
     It is emphasized that the ADC is trained on differences only, thus defect-free structure of the device is removed before detection and classification is performed. In this way, defects, such as a delaminated solder bump in a silicon chip for example, can be recognized in a new device without a need to train the ADC for the new device. 
       FIG.  7    is a flow chart  700  of a method of generating training material for an automated defect classifier, in accordance with various representative embodiments. At an inspection station, an image of a device under test is acquired at block  702 . A difference image is obtained at block  704  and displayed to an operator of the inspection station at block  706 . At block  708 , a classification label of a defect visible in the difference image is received from the operator. The label may be a label of an existing class of defect or a new class of defect. Simulated images, containing the labeled defect, are generated at block  710 . The simulated images are based, at least in part, on the identified region of the image of the object under inspection. At block  712 , the label and other metadata associated with the simulated images are stored for future use. The automated defect classifier is updated at block  714 , based on the plurality of simulated images and the received classification label, and flow returns to  702 . In this manner, the number of training samples is increased, and the classifier is updated to provide greater accuracy. In addition, new classes of defect may be identified and included in the training materials. 
       FIG.  8    shows example images, in accordance with various representative embodiments. Image  802  is a reference image that is free of defects. Image  804  is an acquired image showing a defect in the form of scratch  806 . Image  808  is a difference image, obtained as a statistical difference between reference image  802  and acquired image  804 . 
     In accordance with an example embodiment, an ultrasonic scanning device returns images built from the reflection or transmission of multiple pulses into a sample under test. Difference images are generated representing the difference between the built image and one or more reference images of known good devices. Only the difference image, or information extracted from it, is passed along for classification. Optionally, differences may be scaled by observed statistics such as the standard deviation of reference images across the devices. Optionally, differences may be filtered by edge enhancement, texture extraction, or other image processing operators to enhance those differences. Optionally, there may be thresholds such as a minimum difference intensity, minimum size, minimum intensity relative to reference deviations, or other such criteria that must be met before passing on the difference for classification. 
     Measurements may be made of any detected differences, including position, size, shape, texture, contrast, orientation, etc. In one embodiment, feature extraction of the difference image is performed by a convolutional neural network, providing some set of features that are fed into the classifier, together with the more traditionally computed features. These features are in and of themselves not a classification, simply additional features for the later classifier. 
     Training data for the classifier may be provided in the form of previously identified, manually classified, and labeled defects. The classifier compares measured vectors of difference features against known categories of defects, reporting what the best match is. Using only extracted differences between the sample and reference image(s) allows further analysis to apply to multiple sample types, such as different semiconductor devices, without retraining the classifier. The classifier may use K-Means clustering, for example, or it may be a Bayes classifier, a neural network trained on the labeled data, or other machine-learning classifier known to those of skill in the art. In an embodiment, the confidence of the classification is determined and reported. Optionally, differences that are not classified with sufficient confidence can be reported for manual examination. 
     In summary, embodiments of the disclosure provide mechanisms for classifying defects in ultrasonic scans of semiconductor devices, or other images, using machine learning to identify the defect types. Embodiments generally isolate the defects as the differences between device images and a reference image, using multiple measurements of those defect differences to differentiate between multiple defect categories. Differences with low classification certainties can also be referred to manual consideration as needed. 
     In this document, relational terms such as first and second, top and bottom, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” or any other variations thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element preceded by “comprises . . . a” does not, without more constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises the element. 
     Reference throughout this document to “one embodiment,” “certain embodiments,” “an embodiment,” “implementation(s),” “aspect(s),” or similar terms means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present disclosure. Thus, the appearances of such phrases or in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments without limitation. 
     The term “or,” as used herein, is to be interpreted as an inclusive or meaning any one or any combination. Therefore, “A, B or C” means “any of the following: A; B; C; A and B; A and C; B and C; A, B and C.” An exception to this definition will occur only when a combination of elements, functions, steps or acts are in some way inherently mutually exclusive. 
     As used herein, the term “configured to,” when applied to an element, means that the element may be designed or constructed to perform a designated function, or that is has the required structure to enable it to be reconfigured or adapted to perform that function. 
     Numerous details have been set forth to provide an understanding of the embodiments described herein. The embodiments may be practiced without these details. In other instances, well-known methods, procedures, and components have not been described in detail to avoid obscuring the embodiments described. The disclosure is not to be considered as limited to the scope of the embodiments described herein. 
     Those skilled in the art will recognize that the present disclosure has been described by means of examples. The present disclosure could be implemented using hardware component equivalents such as special purpose hardware and/or dedicated processors which are equivalents to the present disclosure as described and claimed. Similarly, dedicated processors and/or dedicated hard wired logic may be used to construct alternative equivalent embodiments of the present disclosure. 
     Various embodiments described herein are implemented using dedicated hardware, configurable hardware or programmed processors executing programming instructions that are broadly described in flow chart form that can be stored on any suitable electronic storage medium or transmitted over any suitable electronic communication medium. A combination of these elements may be used. Those skilled in the art will appreciate that the processes and mechanisms described above can be implemented in any number of variations without departing from the present disclosure. For example, the order of certain operations carried out can often be varied, additional operations can be added or operations can be deleted without departing from the present disclosure. Such variations are contemplated and considered equivalent. 
     The various representative embodiments, which have been described in detail herein, have been presented by way of example and not by way of limitation. It will be understood by those skilled in the art that various changes may be made in the form and details of the described embodiments resulting in equivalent embodiments that remain within the scope of the appended claims.