Abstract:
The use of design rule checks for failure analysis of semiconductor chips is described. The smaller geometries of recent semiconductor devices lead to a much higher level of sensitivity of devices to photolithography related systematic problems. Failure analysis to date has focused on physical, randomly distributed defects of devices rather than systematic problems caused by the mask manufacturing or mask application process. Methods and systems are described which allow for online searches of a layout database for geometric features defined by a set of rules. The rules may be defined as two-dimensional Boolean operations including shape or distance based as well as any kind of combination. The result is graphically and interactively presented.

Description:
RELATED APPLICATIONS 
       [0001]    This application claims the benefit of the U.S. provisional patent application “Failure Analysis Using Design Rules” Ser. No. 61/299,952, filed Jan. 30, 2010. The foregoing application is hereby incorporated by reference in its entirety. 
     
    
     FIELD OF INVENTION 
       [0002]    This application relates generally to semiconductor failure analysis and more particularly to failure analysis using design rules. 
       BACKGROUND 
       [0003]    Semiconductor chips are vastly complex structures. There are numerous metal lines of miniscule dimension in close proximity to one another. There are diffusions, polysilicon shapes, and insulator layers, all of which need to be fabricated to exacting tolerances. An error in any step of fabrication or the presence of even the smallest defect can cause a failure in the operation of a chip. Failures on semiconductor chips may be the result of random defects or systematic defects on the chips. Design problems with semiconductor devices are traditionally overcome by having layout design rule checks (DRCs) evaluated against a chip layout prior to beginning mask and chip fabrication. With the advent of deep sub-micron technologies, new fault models are being detected which cannot be covered by traditional design rule checking processes. 
         [0004]    There remains a need for an improved failure analysis process. 
       SUMMARY 
       [0005]    Through the use of design rule checks, improved failure analysis of semiconductor chips can be accomplished. A user of a failure analysis tool may take an existing layout database and search the layout for electrical signals which have a suspect relationship with other signals or the surrounding layout shapes. Rules may be defined which can be executed to confirm complex failure models or to find areas of interest defined by complex geometrical constraints. Layout and netlists may each be displayed to aid in failure analysis. 
         [0006]    A computer implemented method is disclosed for performing semiconductor failure analysis comprising: importing a semiconductor layout; having a set of rules wherein each rule of the set of rules describes a design rule check for the semiconductor layout; selecting a rule from the set of rules to apply to the semiconductor layout; identifying a portion of the semiconductor layout by searching through the semiconductor layout for a match to the rule which was selected; and displaying the portion of the semiconductor layout. The method may include importing a netlist corresponding to the semiconductor layout. The method may include performing electrical analysis on the netlist. The method may include storing results of the electrical analysis. The method may include displaying waveforms from the electrical analysis. The method may include storing an image of the portion of the semiconductor layout. The method may include importing defect information from a semiconductor fabrication process. The identifying may be accomplished by progressively searching through the semiconductor layout to find a match between the rule and a subset of the semiconductor layout. The rule may describe a two-dimensional Boolean operation on shapes of a layer. The rule may describe a two-dimensional Boolean operation on shapes of a plurality of layers. The rule may describe a two-dimensional Boolean operation on shapes of one or more layers as well as neighboring electrical traces identified from the electrical analysis of the netlist. The rule may describe a two-dimensional Boolean operation on shapes of one or more layers as well as shapes of waveforms resulting from the electrical analysis. The rule may describe a two-dimensional Boolean operation on shapes of one or more layers and shapes of potential defects derived from one of defect scanning tools and yield management systems. The rule may describe one or more of sizing constraints and spacing constraints. The rule may describe shape-oriented operations. The rule may be used to describe a potential defect which is systematic. The method may include providing CAD navigation to the portion of the semiconductor layout. The method may include moving a probing location on a chip to the portion of the semiconductor layout. The set of rules may be created as part of the semiconductor failure analysis. The set of rules may be imported. The set of rules may be defined within an electronic design automation tool. 
         [0007]    In some embodiments, a computer program product may be embodied in a non-transitory computer readable medium that, when executed on one or more processors, analyzes semiconductor failures by performing steps of: importing a semiconductor layout; having a set of rules wherein each rule of the set of rules describes a design rule check for the semiconductor layout; selecting a rule from the set of rules to apply to the semiconductor layout; identifying a portion of the semiconductor layout by searching through the semiconductor layout for a match to the rule which was selected; and displaying the portion of the semiconductor layout. In some embodiments, a system for performing semiconductor failure analysis may comprise: a memory for storing instructions; one or more processors attached to the memory wherein the one or more processors are configured to: import a semiconductor layout; have a set of rules wherein each rule of the set of rules describes a design rule check for the semiconductor layout; select a rule from the set of rules to apply to the semiconductor layout; and identify a portion of the semiconductor layout by searching through the semiconductor layout for a match to the rule which was selected; and a display to present the portion of the semiconductor layout. 
         [0008]    Other aspects, features, and advantages will be apparent from the following detailed description, the drawings, and the claims. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    The following detailed description of certain embodiments thereof will be understood by reference to the following figures wherein: 
           [0010]      FIG. 1  is a flowchart for performing semiconductor failure analysis using design rule checks. 
           [0011]      FIG. 2  is an example diagram of a layout portion on which design rule checks can be performed. 
           [0012]      FIG. 3  is a diagram of a system for performing semiconductor failure analysis using design rule checks. 
           [0013]      FIG. 4  is a diagram of a failure analysis system with a design rule check engine. 
           [0014]      FIG. 5  is a flowchart for design rule check creation. 
           [0015]      FIG. 6  is a flowchart for design rule check execution. 
       
    
    
     DETAILED DESCRIPTION 
       [0016]    The present disclosure provides a description of various methods and systems associated with performing semiconductor failure analysis using design rule checks (DRCs). Failure analysis can include evaluation of failing semiconductor devices to determine root cause of failure through examination of the structures and defects on a physical device. Design rule checking can include evaluating semiconductor layout structures for specific patterns where the patterns and key dimensions are defined as rules. Users may create rules to search on specific geometric relationships within semiconductor layout shapes based on electrical signals and possible defect locations. Rules may describe one or more of sizing constraints and spacing constraints. Rules may describe shape-oriented operations. 
         [0017]    As semiconductor technologies advance they tend to rely on ever-smaller geometries. Unfortunately, as the geometries become smaller systematic defects in semiconductors tend become increasingly difficult to track down and remedy. 
         [0018]    A variety of systematic defects are possible. For example, a systematic defect can be due to polygon design within a layout or due to fabrication where adjacent shapes are regularly produced in an incorrect fashion; a systematic defect may be produced by process and design interactions; and so on. Other systematic defects will be appreciated. 
         [0019]    In practice, systematic defects can be subtle and tracking them down can require careful testing. It is therefore desirable to be able to identify systematic defects during failure analysis. In some cases, a systematic defect may only be detectable with a certain arrangement of shapes, such as a group of polygons (or constellation) in the layout. Furthermore, certain arrangements of polygons may be more susceptible to defects and require careful failure analysis based on the layout using. 
         [0020]    Traditional design rule checking performs design verification using “pre-silicon” shapes. The pre-silicon shapes are design shapes that may or may not reflect the ultimate fabricated shapes. The fabricated shapes can have foreshortening, rounding, and other modifications that are a function of light waves and the limits of physics and chemistry at the small dimensions on the semiconductor chip. 
         [0021]    This application describes a failure analysis technique that analyzes semiconductor layouts using DRCs. An example design rule check (DRC) for one type of systematic defect can include evaluating two adjacent tracks to ensure that they are not closer than a certain specified value. In embodiments, a design rule may be created to identify a certain arrangement of polygons and then checked against the remainder of the semiconductor layout to identify other defect sensitive sites. The design rule may be used to describe a potential defect that is systematic. A variety of design rules will be appreciated. 
         [0022]    Some embodiments of the failure analysis design rule checking described in this application include analysis with the pre-silicon shapes. Some embodiments include the pre-silicon shapes along with “post-fabrication” shapes reflecting the shape modifications that occur during fabrication. 
         [0023]    In some embodiments defects may modify shapes or hot-spots identified with the shapes being modified accordingly. In some embodiments, these post-fabrication shapes may be used in preventive analysis prior to fabrication while the design may still be modified. 
         [0024]      FIG. 1  is a flowchart for performing semiconductor failure analysis using design rule checks. A failure analysis process  100  begins with importing the semiconductor layout  110 . The layout may be in the form of GDSII or Oasis or some other format for describing various shapes, sizes, and relationships of elements in a semiconductor layout. The layout may be for a semiconductor chip or die. The layout may be imported into a database to be included with other information about the chip. 
         [0025]    Rules are received  115 , the rules describing design rule checks for manufacturing technology in which a chip is to be fabricated. The rules may include rules describing a design rule check for the layout. In some embodiments, a foundry in which the chip is to be fabricated may provide the rules. In some embodiments, the rules may be generated as part of the failure analysis process  100 . The rules may describe widths of certain structures on chip, spacings between structures, overlap between one shape and another shape, or any other checks that may help in verifying the layout. 
         [0026]    One or more of the rules are selected  120 . This may include selecting a rule to apply to the layout. The rule may be selected in an automated fashion or may be specifically chosen by a user to perform a specific failure analysis. In some embodiments, a rule may be recommended by a foundry as pertinent to failure analysis due to, for example, recent fabrication experience, returns from the field where a number of failures were encountered, and so on. 
         [0027]    A netlist may be imported  122 . The netlist may correspond to the layout. The netlist may describe electrical components that make up the chip. The components may include inverter, AND, OR, NAND, NOR, XOR, XNOR, MUX, and other types of logical gates. The components may include multipliers, adders, ALUs, processors, cores, and other portions of logic. The netlist may include a description of interconnections between the various components as well as individual transistors. The netlist may further include information on the components including size, delay, power, and other characteristics. 
         [0028]    An electrical analysis may be performed on the netlist  124 . The electrical analysis may include determining electrical connectivity, delay, power, timings, or other aspects related to the operation of the semiconductor chip. In embodiments, electrical analysis may include analyzing the relationship of electrical signals to each other or to surrounding passive structures. The analysis may allow failure analysis personnel to access the layout and search within an area of interest for special geometric relationships between shapes on various layers. The failure analysis process  100  may include online searches of a layout database for geometric features defined by a set of rules. The impact of defects from a manufacturing process on electrical signals may be analyzed along with the impact on operation. In some embodiments, importing the netlist  122  or performing electrical analysis  124  can be omitted without diverging from the scope of this disclosure. It will be appreciated that the process  100  may include storing the results of the electrical analysis, displaying waveforms from the electrical analysis, and so on. 
         [0029]    A portion of the layout is identified by searching through the semiconductor layout for a match to the rule that was selected  130 . The portion of the layout may be identified based on the layout itself along with the rule that was selected. In some embodiments, the portion of the layout is identified based on the layout, the electrical analysis, the rule that was selected, and so on. 
         [0030]    The portion of the layout may be identified by searching through the whole layout for a match to the DRC corresponding to the rule that was selected. In some embodiments, a section of the layout is used as a starting point for searching for a match to the rule that was selected. The section may be chosen based on a history of failures or some other focused concern. There may be failures in a specific group of components or portion of a semiconductor chip where a selected rule may be applied against that section of the layout. The identifying may be accomplished by progressively searching through the semiconductor layout to find a match between the rule and a subset of the semiconductor layout. The subset may include the entire chip or any portion of the chip. 
         [0031]    The design rule checking may describe a two-dimensional Boolean operation on shapes of a layer. Two-dimensional Boolean checking may be a combination of two or more rules to filter out and find a desired shape, area, or polygon in the layout. 
         [0032]    Two-dimensional Boolean checking may allow for creating complex search criteria based on different parameters. For example, two-dimensional Boolean checking may allow for finding a particular polygon or pattern by using two rules. One rule may be for filtering polygons that meet a certain width criteria. A second rule may check for overlap to narrow the search results to the desired criteria. 
         [0033]    A search may alternatively be based on two-dimensional Boolean operations on shapes on differing layers. A search may be based on two-dimensional Boolean operations on shapes on one or more layers and based on the shapes of certain electrical signal wires. A search may be based on two-dimensional Boolean operations on shapes on one or more layers and based on defect shapes derived from defect scanning tools. Defect shapes may also be derived from yield management systems. Searching may be based on size or spacing constraints. Searching may be based on shape-oriented operations. 
         [0034]    A two-dimensional Boolean operation may include accomplishing two rule checks as part of a search. For example, two rule checks might include a check for a metal width and a check for a metal extension beyond a via. For another example, two rule checks might include a polysilicon width and an extension of the polysilicon shape past the end of a diffusion. 
         [0035]    A rule may describe a two-dimensional Boolean operation on shapes of a plurality of layers. A rule may describe a two-dimensional Boolean operation on shapes of one or more layers as well as neighboring electrical traces identified from the electrical analysis of the netlist. A rule may describe a two-dimensional Boolean operation on shapes of one or more layers as well as shapes of waveforms resulting from the electrical analysis. A rule may describe a two-dimensional Boolean operation on shapes of one or more layers and shapes of potential defects derived from one of defect scanning tools and yield management systems. 
         [0036]    Defect information may be imported from a semiconductor fabrication process  126 . The defect information may include the size, the type, the level in the fabrication process at which a defect appears, and other aspects about the defect. The defect information may be obtained from the foundry, a third party analyst, or the like. Further, the defect information may be based on experience with previous technologies and so on. In some embodiments a portion of the layout may be identified based on a rule that is selected  120  and based on the defect information that was imported  126 . 
         [0037]    A portion of the semiconductor layout may be displayed  140 . It will be appreciated that a variety of graphical user interface techniques (e.g., highlighting, color emphasis, zoom, etc.) can be applied to the portion of the layout as displayed. It will be further appreciated that the any and all of the portion of the layout as displayed can be stored to a computer-readable medium. 
         [0038]    Computer Aided Design (CAD) navigation to the portion of the layout as displayed may be provided  150 . The CAD navigation may involve movement of a wafer or a test head so that analysis is done at a desired location on the semiconductor device. The CAD navigation may be used with a piece of test equipment where a wafer or chip is moved to a location where the layout that was identified is observed under a microscope. 
         [0039]    The semiconductor chip may be probed  160 , for example, by moving a probing location on a chip to the portion of the semiconductor layout. Based on the layout portion which was identified a possible defect site may be determined. A tester may use CAD navigation to move the tester to the portion of the layout that was identified. The portion of the layout may be probed by electrical probing with metal connectors, electron beam probing, laser probing, or other type of probing. 
         [0040]      FIG. 2  is an example diagram of a layout portion on which design rule checks can be performed. In this exemplary diagram metal line  210  has a via  220  which provides electrical connection to the next layer of metal line. The via  220  may be required to have a width  225  and be verified by a DRC. An example via width is 100 nm. The metal line  210  may be required to have an extension  235  of a specified value and may be verified by a DRC. An example extension is 10 nm. Numerous other types of DRCs exist including diffusion-to-diffusion spacings, contact areas, minimum metal-to-metal spacings, dog-bone end sizing requirements on polysilicon shapes, via adjacency requirements, and so forth. Numerous DRCs may be used to aid failure analysis. 
         [0041]      FIG. 3  is a diagram of a system  300  for performing semiconductor failure analysis using design rule checks. One or more processors  310  may communicate with memory  320 . The memory  320  may store data on the layout, rules, netlist, and other aspects of the semiconductor. The memory  320  may store instructions for performing the failure analysis, for displaying information on defects, for operating tester equipment, and so on. The processor  310  may render information on a display  330 . The display may be used to show the layout and images of the semiconductor chip along with defect information and other information for performing failure analysis. 
         [0042]    The processor  310  may read in layout information  340  about the semiconductor chip. The layout information  340  may include design dimensions and associated shapes. The layout information  340  may include modified shapes to aid in fabrication such as optical proximity correction (OPC) shapes. The layout information  340  may include information on post-fabrication shapes. Other layout information will be appreciated for various purposes. 
         [0043]    The processor  310  may read in rules  342  such as design rule checks used to aid in failure analysis. The rules  342  may help to identify regions of layout that may be of concern for random defects or for systematic defects. The processor  310  may analyze the layout  340  in light of the rules  342  to identify layout portions for further failure analysis. 
         [0044]    The processor  310  may read in netlist information  344  about the semiconductor chip. The netlist  344  may be used with the layout  340  along with the rules  342  to identify portions of the chip for failure analysis. 
         [0045]    The processor may interact with the test equipment and prober  350 . The test equipment  350  may include an optical or scanning electron microscope, a wafer or chip stage, electrical stimulus and power supply capability, and electrical or contactless probing apparatus. The test equipment  350  may move over wafer  360  via CAD navigation. The test equipment  350  may probe the wafer  360  or a chip at the correct point to perform failure analysis and identify a defect. 
         [0046]      FIG. 4  is a diagram of a failure analysis system with a design rule check engine. The failure analysis system  400  includes a user interface  410 , a rule generator  420 , a search tool  430 , and a DRC engine  440 . Within the rule generator  420 , templates  424  may reside which can be used to define rules that are desired by a user during failure analysis. The rule generator  420  may use one or more templates  424  in a definition tool  422 . The definition tool  422  may provide rules to the user interface  410 . A template may filter and identify certain layers or certain dimensions of concern. Rules may be generated during the failure analysis process that match certain templates. A set of rules may be created as part of the semiconductor failure analysis. In some embodiments, the rules may be imported or may be provided by a foundry, an analysis party, or some other third party. 
         [0047]    The user interface  410  may include a dialog box, a viewer  414 , and a virtual layer editor  416 . A dialog box  412  may allow reading in of various rules. The dialog box  412  may also prompt the user to provide information and create rules for failure analysis using the rule generator  420 . The dialog box  412  may be used to select one or more rules for use in analysis of a layout. The dialog box  412  may capture commands that are fed to the search tool  430 . 
         [0048]    The search tool  450  allows for searching across a semiconductor layout using one or more rules. The search tool  430  uses a DRC engine  440  to exercise the rules that were selected in the dialog box  412  to search through the layout. The search tool  430  finds matches in the layout with the selected rules. 
         [0049]    A virtual layer editor  416  captures the portion of the layout that was identified by the search tool  430 . The virtual layer editor  416  may be used to exchange information about features in the layout. The virtual layer editor  416  may add layers to the layout. These added layers do not reflect any physical design shapes but are instead virtual layers that can help identify areas of concern to designers and failure analysis engineers. The virtual layers can be used to draw geometric shapes, add text, or incorporate lines to annotate the layout. Among other items that may be incorporated are locations for focused ion beam modifications such as probe points, added signal wires, or metallization removal areas. The layout portion where the virtual layers are added may be displayed through the viewer  414 . Data from the viewer  414  may be fed back to the search tool  430  to refine the search. The viewer  414  provides location and other information into the dialog box  412 . The dialog box  412  can capture instructions to modify the search parameters or move locations on the semiconductor device for further searching by the search tool  430 . 
         [0050]      FIG. 5  is a flowchart for design rule check creation. The process  500  begins with identifying one or more variables  510 . The variables relate to the layers for which the rule is being created. The variables may include information on widths, spacings, shapes, and other aspects of a possible rule. 
         [0051]    A rule is created  520 . The rule may include a specific dimension for a width of a shape. The rule may include a dimension for a space between shapes. The shapes may be on the same or different levels. A rule may identify one or more layers. A rule may identify layout shapes for which to search. In some embodiments, rules identify certain electrical structures and their associated layout shapes for which to search. The rules may have been imported or may have been created by the failure analysis software. The rules may have been obtained from a foundry, from a fabrication analysis team, or from experience based on previous failure analysis and manufacturing defects. The rule is saved  530  for future use or documentation purposes. 
         [0052]      FIG. 6  is a flowchart for design rule check execution. The process  600  begins with initiation of the CAD software  610 . This software may be used for CAD purposes, for failure analysis purposes, or be part of some larger electronic design automation (EDA) package. Initiating the software may include opening or loading the semiconductor layout. 
         [0053]    The rule is selected  620 . The rule may identify one or more layers. The rule may identify layout shapes for which to search. The rule may identify certain electrical structures and their associated layout shapes to search. The rule may have been imported or may have been created by the failure analysis software. The rule may have been obtained from a foundry, from a fabrication analysis team, or from experience based on previous failure analysis and manufacturing defects. 
         [0054]    Run time information is obtained  630 . The run time information may include instructions on the specific processors on which to execute. 
         [0055]    The rule is executed against the semiconductor layout  640 . The rule may be used to search for a portion of the layout that matches the rule. This portion of the layout may be displayed on a layout editor or viewing tool. 
         [0056]    Each of the above methods may be executed on one or more processors on one or more computer systems. Embodiments may include various forms of distributed computing and client/server computing. Further, it will be understood that for each flow chart in this disclosure, the depicted steps or boxes are provided for purposes of illustration and explanation only. The steps may be modified, omitted, or re-ordered and other steps may be added without departing from the scope of this disclosure. Further, each step may contain one or more sub-steps. While the foregoing drawings and description set forth functional aspects of the disclosed systems, no particular arrangement of software and/or hardware for implementing these functional aspects should be inferred from these descriptions unless explicitly stated or otherwise clear from the context. All such arrangements of software and/or hardware are intended to fall within the scope of this disclosure. 
         [0057]    The block diagrams and flowchart illustrations depict methods, apparatus, systems, and computer program products. Each element of the block diagrams and flowchart illustrations, as well as each respective combination of elements in the block diagrams and flowchart illustrations, illustrates a function, step or group of steps of the methods, apparatus, systems, computer program products and/or computer-implemented methods. Any and all such functions may be implemented by computer program instructions, by special-purpose hardware-based computer systems, by combinations of special purpose hardware and computer instructions, by combinations of general purpose hardware and computer instructions, by a computer system, and so on. Any and all of which may be generally referred to herein as a “circuit,” “module,” or “system.” 
         [0058]    A programmable apparatus which executes any of the above mentioned computer program products or computer implemented methods may include one or more processors, microprocessors, microcontrollers, embedded microcontrollers, programmable digital signal processors, programmable devices, programmable gate arrays, programmable array logic, memory devices, application specific integrated circuits, or the like. Each may be suitably employed or configured to process computer program instructions, execute computer logic, store computer data, and so on. 
         [0059]    It will be understood that a computer may include a computer program product from a computer-readable storage medium and that this medium may be internal or external, removable and replaceable, or fixed. In addition, a computer may include a Basic Input/Output System (BIOS), firmware, an operating system, a database, or the like that may include, interface with, or support the software and hardware described herein. 
         [0060]    Embodiments of the present invention are not limited to applications involving conventional computer programs or programmable apparatus that run them. It is contemplated, for example, that embodiments of the presently claimed invention could include an optical computer, quantum computer, analog computer, or the like. A computer program may be loaded onto a computer to produce a particular machine that may perform any and all of the depicted functions. This particular machine provides a means for carrying out any and all of the depicted functions. 
         [0061]    Any combination of one or more computer readable media may be utilized. The computer readable medium may be a non-transitory computer readable medium for storage. A computer readable storage medium may be electronic, magnetic, optical, electromagnetic, infrared, semiconductor, or any suitable combination of the foregoing. Further computer readable storage medium examples may include 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), Flash, MRAM, FeRAM, phase change 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 may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0062]    It will be appreciated that computer program instructions may include computer executable code. A variety of languages for expressing computer program instructions may include without limitation C, C++, Java, JavaScript™, ActionScript™, assembly language, Lisp, Perl, Tcl, hardware description languages, database programming languages, functional programming languages, imperative programming languages, and so on. In embodiments, computer program instructions may be stored, compiled, or interpreted to run on a computer, a programmable data processing apparatus, a heterogeneous combination of processors or processor architectures, and so on. Without limitation, embodiments of the present invention may take the form of web-based computer software, which includes client/server software, software-as-a-service, peer-to-peer software, or the like. 
         [0063]    In embodiments, a computer may enable execution of computer program instructions including multiple programs or threads. The multiple programs or threads may be processed more or less simultaneously to enhance utilization of the processor and to facilitate substantially simultaneous functions. By way of implementation, any and all methods, program codes, program instructions, and the like described herein may be implemented in one or more thread. Each thread may spawn other threads, which may themselves have priorities associated with them. In some embodiments, a computer may process these threads based on priority or other order. 
         [0064]    Unless explicitly stated or otherwise clear from the context, the verbs “execute” and “process” may be used interchangeably to indicate execute, process, interpret, compile, assemble, link, load, or a combination of the foregoing. Therefore, embodiments that execute or process computer program instructions, computer-executable code, or the like may act upon the instructions or code in any and all of the ways described. Further, the method steps shown are intended to include any suitable method of causing one or more parties or entities to perform the steps. The parties performing a step, or portion of a step, need not be located within a particular geographic location or country boundary. For instance, if an entity located within the United States causes a method step, or portion thereof, to be performed outside of the United States then the method is considered to be performed in the United States by virtue of the entity causing the step to be performed. 
         [0065]    While the invention has been disclosed in connection with preferred embodiments shown and described in detail, various modifications and improvements thereon will become readily apparent to those skilled in the art. Accordingly, the spirit and scope of the present invention is not to be limited by the foregoing examples, but is to be understood in the broadest sense allowable by law.