Abstract:
A system and method for enabling the estimation and mitigation of self-heating in chip designs at a much earlier stage in a design flow. The system and method provides unique characterization of each standard cell in a library for its effective thermal resistance based on the topology and layout of the cell, and brings this per standard cell instance based delta-T to be available for the timing closure tools when completing a synthesized design. Thus, at the timing closure process, the generated design is free of self heating violations. The method computes a unique thermal resistance characterization on per standard cell manner—based on the topology, function and layout of the standard cell, and uses that to compute the deltaT per instance of the design. This information is presented to a violation mitigation tool which changes the power levels of the cells, logic function to mitigate the self heating violations.

Description:
FIELD 
       [0001]    The present disclosure relates to the design and analysis of CMOS digital circuitry, and more particularly to accurately and efficiently analyzing the impact of self-heating in chip designs at a much earlier stage in the design flow. 
       BACKGROUND 
       [0002]    In modern CMOS chip designs, as devices have scaled into a regime with channel lengths below 50 nm, the heat generated by switching of digital logic gates or by their leakage, can no longer be efficiently dissipated through the substrate. Recent developments in silicon technology have exacerbated this issue, while at the same time, interconnect reliability is becoming increasingly subject to electro-migration stress in advanced technology nodes due to a breakdown in the classical scaling of such devices. 
         [0003]    Supplying and dissipating power in a chip has been a module and chip design issue. Scaled CMOS design devices with higher power density are hot, especially with large, multi-finger FETs. Self-heating of devices during normal circuit operation is becoming significant and could cause Back End of the Line reliability and Electro Migration wear out issues. This issue of device self-heating is getting worse as technology scales. Preliminary CAD simulations and hardware temperature measurements show a 2× increase in deltaT (i.e., a temperature change from ambient) going from 22 nm to 14 nm technology nodes. In order to maintain reliable operation of a chip there is a need to maintain the temperature increase at an acceptable range. 
         [0004]    Localized self heating in which heat is dissipated through devices, wires and substrate is a serious concern that must be managed across IP types by the design methodology in high-performance chip design. 
       SUMMARY 
       [0005]    Accordingly, in an embodiment, a system and method for managing self-heating efficiently through a semiconductor device design process. The system is a comprehensive framework including different solution approaches to assess and mitigate self-heating issues in high performance designs. 
         [0006]    One framework approach implementing techniques to help designers quickly determine a deltaT (temperature change from ambient) value, as well as techniques to create synthesized blocks with more uniform temperature profiles. 
         [0007]    The framework approach brings together workload specific switching data, detailed power models, and thermal modeling to help assess self heating impacts from an early stage to a detailed sign-off stage. 
         [0008]    In one embodiment, encapsulated self heating APIs are built on top of the various analysis techniques to guide design optimization and closure tools to be self-heating aware. The framework thus efficiently and accurately predicts overheating at the time of the macro constructions at a fraction of time with comparable accuracy to detailed field solver based approaches, and hardware measurements. 
         [0009]    In one aspect, there is provided a method of reducing self-heating in semiconductor integrated circuit designs. The method comprises: accessing, at a processor unit, a logic and layout data representing a macro having an interconnection of one or more cells; computing, at the processor unit, an effective thermal resistance value (Rth) for a cell of the macro based on a cell topology; analyzing, at the processor unit, activities of a workload in which the macro cell is to be subjected; determining from the analyzing activities, a Switching Factor (SF) data representing an amount of physical switching of a logic gate of the macro cell; computing a change in temperature (deltaT) value using the Rth value and the SF data for a macro cell instance; determining whether a deltaT value computed for the macro cell instance is in violation of a self-heating limit; and mitigating a self-heating of the macro cell design if a self-heating limit violation is detected. 
         [0010]    In a further aspect, there is provided a system of reducing self-heating in semiconductor integrated circuit designs. The system comprises: a memory storage device; a processor unit in communication with the memory storage device and configure to: access a logic and layout data representing a macro having an interconnection of one or more cells; compute an effective thermal resistance value (Rth) for a cell of the macro based on a cell topology; analyze activities of a workload in which the macro cell is to be subjected; determine from the analyzing activities, a Switching Factor (SF) value representing an amount of physical switching of a logic gate of the macro cell; compute a change in temperature (deltaT) value using the Rth value and the SF value for a macro cell instance; determine whether a deltaT value computed for the macro cell instance is in violation of a self-heating limit; and mitigate a self-heating of the macro cell design if a self-heating limit violation is detected. 
         [0011]    In a further aspect, there is provided a computer program product for performing operations. The computer program product includes a storage medium readable by a processing circuit and storing instructions run by the processing circuit for running a method. The method is the same as listed above. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0012]    The present disclosure will be understood and appreciated more fully from the following detailed description of the disclosure, taken in conjunction with the accompanying drawings: 
           [0013]      FIG. 1  is a diagram depicting the components of the self heating analysis and mitigation framework used in a gate level design flow process according to one embodiment of the disclosure; 
           [0014]      FIGS. 2A-2B  is a flow diagram of a method for early temperature map generation according to one embodiment of the disclosure; 
           [0015]      FIG. 3A  depicts an example power model of an example gate or cell used in a self-heating analysis that can be included in the library characterization of a macro in one embodiment; 
           [0016]      FIG. 3B  shows a method of computing a deltaT value for a standard cell FINFET gate or cell in one embodiment; 
           [0017]      FIG. 4  depicts an exemplary comparison of the accuracy of the deltaT map generation approach against a detailed field solver based thermal simulation approach; 
           [0018]      FIG. 5  shows a snapshot depicting an automatic self heating violation mitigation during design construction of various example macro designs using the deltaT map generation approach of the embodiments described; and 
           [0019]      FIG. 6  illustrates one embodiment of an exemplary hardware configuration of a computing system programmed to perform the method steps described herein. 
       
    
    
     DETAILED DESCRIPTION 
       [0020]    In an embodiment, a method of the present disclosure is described hereinafter. However, it is to be understood that the disclosed embodiments are merely illustrative of the described methods that can be embodied in various forms. In addition, each of the examples given in connection with the various embodiments of the disclosure is intended to be illustrative, and not restrictive. 
         [0021]    As shown in  FIG. 1 , the present disclosure provides a self heating analysis and mitigation framework system  100  to assess the self heating impacts at the silicon level while a macro design is being constructed (i.e., early on in the design process). Additionally, the disclosure describes use of efficient techniques to drive the fix-up of any self heating errors so that the design is free of any self heating violations. 
         [0022]    The self heating analysis and mitigation framework is a system  100  shown in  FIG. 1  having an analysis phase  101 , one or more application interfaces  102 , i.e., handling communications between various applications  103  in the analysis of a macro or chip under workflow conditions. In one embodiment, components of system  100  include a macro workload generator  110  for processing higher level workloads, e.g., workloads intended for the processor unit, core, or chip, and creating macro level workloads that are stored in a macro workload database  115 . As known, a macro is a lower level block of logic of a higher (hierarchical) level chip design. The data input to macro workload generator  110  for computing a macro specific workload may be obtained from a chip and system workload database  105 . 
         [0023]    In one embodiment, the chip and system workload database  105  stores standard cell design data for a higher level chip (or set of chips), e.g., that may make up a very-large-scale integration (VLSI) design or an application specific integrated circuit (ASIC) or field programmable gate array (FPGA), etc. The macros may include all structures and devices that make up the chip(s) with, in some instances, a particular macro being designed out of context from the chip. Each standard cell includes data at the transistor (gate) level, which data may represent but is not limited to: a group of transistors and interconnect structures that provide a logic function (e.g., a boolean operation such as AND, OR, XOR, XNOR, or inversion) or a storage function (flipflop or latch). In one embodiment, data is provided to the system in the form of a gate transistor level netlist which describes (a set of transistor gates in a macro), their connections to each other, and of their terminals (ports) to an external environment for a given macro or logic device. Such standard cell or macro design data may include standard cell power rule data and may include a thermal resistance or RTH value which are computed as part of a cell library characterization process. 
         [0024]    In one embodiment, a workload data stored in chip and system workload database  105  may include data representing types of applications or workloads that are to be run on the chip. For example may comprise a video streaming application, or a compression algorithm running on the chip, or other processing workloads applicable to the whole chip which, when run, exercise different portions of the entire chip. The macro workload generator  110  thus determines from the workloads applicable to the whole chip, and derives or extracts the activity or workload pertaining to a set of gates of a given gate level macro, region or piece of the entire chip. A netlist “gate” is alternatively referred to herein as a cell or standard cell (StdCell). 
         [0025]    As a macro is typically designed out of context from a particular chip or workload, an analysis is conducted at this early stage to ensure that when it is being designed for timing and power constraints, there is performed a check for the self-heating of the macro based on anticipated workloads to ensure self-heating is within limits. 
         [0026]    In the self heating analysis and mitigation framework is a system  100 , a self-heating analysis phase  101  invokes a high switching factor net identification module  120  to receive macro specific workload data and macro (e.g., gate level) netlist data  118  to determine a Switching Factor (SF)  126  for the specific macro of a particular chip design. In one embodiment, the macro workloads or activities obtained by the macro workload generator  110  are mapped to the design instances in the macro (gates and nets). From the specific workload, and based on the logic description of that macro, there is derived activities on the different pieces of the macro to determine the switching of gate(s) or nets (connections) of that macro. The amount of switching or switching factor (SF) refers to a switching rate of a gate or net from a first logic value (0 or 1) to second logic value (1 or 0) value. For example, a SF of 0.5 indicates that a particular gate operation is switched from logic 0 to logic 1 (or logic 1 to logic 0) about 50% of the time. The computing of workload specific Switching Factors  126  on nets within the macro, may be used by the early temperature map generator  140  for identifying the gates susceptible for fails, as well as for the dynamic power calculation which is used in the early temperature map generation analysis phase. 
         [0027]    Further, in the self-heating analysis phase  101  of the self heating analysis and mitigation framework of  FIG. 1 , an Early Temperature map generation module  140  implements steps of using the RTH values present in the standard cell power rules and computing a “power number” (power consumed by that standard cell instance, i.e., a sum of dynamic power (which is a function of the switching of the gate) and the leakage or static power (e.g., in milliwatts) at each standard cell instance in the macro design. This power number is based on macro specific activities. As a result, there is computed a deltaT value at each macro instance. The deltaT values may then be communicated to one or more applications  103  through various self heating application programming interfaces (APIs)  102  to determine if any self-heating violations may exist which would require further macro design refinements or design optimization. For example, as shown in  FIG. 1 , the delta T data values are provided efficiently to the one or more various applications such as a design optimization module  300 , a power grid and signal integrity checking application  303 , a power analysis application  306  and a signal electromigration analysis application  309 , which applications utilize the computed deltaT for the particular macro(s) in various ways. For example, the power analysis module  306  uses the deltaT values to compute the total leakage power consumed by the design more accurately using the local temperature information coming from the self heating API. The design optimization application will use the deltaT data in addition to other timing and power constraints in order to optimize the design while maintaining the thermal integrity of the design by not creating any self heating violations. 
         [0028]      FIG. 2A  depicts a process flow  200  of the self heating analysis and mitigation framework  100  of  FIG. 1 . In a first processing path, an initial step  205  includes accessing or receiving, at a programmed computer or processor unit, data representing a standard (std) cell layout of a std cell schematic  210 , e.g., a gate in a library. In the early temperature map generation process, at  210 , there is performed a step of computing an effective thermal resistance value “RTH” for each gate of the std cell from schematic/layout of the standard macro considering topology of a cell, e.g., the fingers, fin count, etc. and considering, e.g., the “corner conditions”  130  such as process, voltage and temperature conditions under which the self-heating analysis of that macro is conducted. The RTH values from the RTH characterizations generated at  210 ,  FIG. 2A  for each gate of the macro netlist the RTH characterization values may be stored in the power rule for the standard cell and/or in off-line storage at  215 . 
         [0029]    In a parallel processing path as shown in  FIG. 2A , or alternatively, as subsequent processing steps, the high switching factor net identification module  120  is invoked to receive macro specific workload data and macro (e.g., gate level) netlist data to determine a Switching Factor (SF) for each gate of a chip design. That is, in the parallel path, the high switching factor net identification module  120  performs, for a macro specific workload at the standard cell, activity processing  220  to determine the Switching Factor (SF) for the selected gate of the macro of the chip design at  225 . During this activity processing, the method uses activity data generated at higher levels of design hierarchy (e.g., unit, core, chip), and generates switching data  126  for the internals of a macro, all the while considering the mapping between logical and physical hierarchies. In the implementation of a chip in a hierarchical design flow, the logical hierarchy of the design could be different from the physical hierarchy of the design. Analysis tasks like self heating when done of the physical hierarchy of the design, are reconciled with what signal in the activity files (which are derived from the logical hierarchy) correspond to what portion of the design in the physical hierarchy. 
         [0030]    In one embodiment, step  220  performs “intelligent” activity processing from real workloads considering logical to physical mapping, along with other limit constraints to generate activities that are relevant for analyzing Self heating fails. While typically, activities (where switching activity for nets in the design is asserted to some pre-specified values) would be completely asserted. Another approach would be to be completely workload driven, where certain inactive regions might be missed; on the other hand increasing across the board activity limit might be too pessimistic. However, in one embodiment, the approach of the present disclosure uses workloads intelligently along with floor functions with user defined limits to determine the activities to be used for the self heating calculations. 
         [0031]    Then, at  230 ,  FIG. 2A , a power calculation is performed based on the macro specific activities and internal switching factor to obtain the power number. The computing of the power for the particular macro or std cell instance uses the workload specific switching factor data  126  received or accessed from the high switching factor net identification step. The calculation of a power number may involve known techniques for computing dynamic leakage power using capacitance, voltage and SF parameters. 
         [0032]    Then, continuing at  240 ,  FIG. 2A , a self-heating application program interface (API) is called to calculate a deltaT value for the current gate of that specific macro under analysis using the stored Rth value from the power rule and using switching information  128 , e.g., power number value, calculated for the particular macro instance from the power calculation at  230 . This deltaT value is representative of the self-heating of the gate of the macro under design based on the corner conditions and switching activity. In one embodiment, the self-heating API computes an increase in temperature above ambient, DeltaT efficiently using the computed thermal resistance, Rth, and the switching information  128 . The API invokes functions to compute the power using the workload specific switching data along with other activity assertions (which can be user defined switching factor activity assertions) to ensure adequate coverage. These data are provided efficiently to the various applications like design optimization module  300 . 
         [0033]    In one embodiment, the self-heating API computes the power by using the workload specific switching data if it is above a particular threshold, else it has mechanisms to fall back to the more conservative user defined switching data. In terms of getting the switching information it also has the mechanism of activity floor functions which are registered to selectively override the workload data on a per functional gate basis to prevent any optimistic power estimation to drive the deltaT computation. 
         [0034]    In computing such an instance deltaT value, self-heating APIs  150  are used to invoke other applications to access and process data used for computation. 
         [0035]    Continuing to step  250 ,  FIG. 2B , a determination is then made as to whether the macro design presents any self-heating violations. In one embodiment, the deltaT instance value data is efficiently provided via the self-heating API to a design optimization application. The call to a design optimizer addresses self heating in both the construction phase, and as a fix up step, where the objective would be to address any self heating violations without impacting the timing and with minimal area overhead. To detect a self-heating violation, at  250 , the self-heating API  150  looks through the micro-design, obtains the Rth characterization and power information, and calculates deltaT value of that instance. This calculated deltaT instance is compared against a user set threshold value, to determine a self-heating violation. For example, if the deltaT computed for the gate of the particular macro is determined above a self-heating value limit or threshold, e.g., is greater than 5° C., then the design construction and optimization application module  300  may be invoked at  255  to optimize the macro design and ensure a self heating violation free design. 
         [0036]    Otherwise, at  250 , if it is determined that the computed deltaT value for the current gate of the macro is within the user-defined self-heating value threshold given the intended corner conditions and switching factors, the process proceeds to  260  to determine whether there is any more gates of the specified macro design for which the self-heating analysis calculation is to be performed. If there are more gates in the particular cell macro, then the process returns back to step  205 ,  FIG. 2A , in order to proceed in the self-heating analysis conducted in  FIG. 2A  processing for the next gate of the macro&#39;s netlist. 
         [0037]    If at  260 , it is determined that all of the gates for the current macro or cell netlist are optimized to provide no self-heating issues for the intended switching/workload design, then at  265  the process ends and the optimized data for that macro may be stored in the cell library for later use in a chip design context. 
         [0038]    Returning to step  255 ,  FIG. 2B , in one embodiment, through the self heating API, the design construction and optimization application module  300  is invoked to receive and use the switching and deltaT information to perform one or more steps addressing the self heating either in both the construction phase and as a “fix up” step, where the objective addresses any self heating violations without impacting the timing and with minimal area overhead. Such further design optimizations performed may include, but are not limited to: steps to sharpen input slews, or change power level of the gates, or change a logic function, in order to mitigate or minimize the self-heating violations that are found responsive to the comparison made at  250 . 
         [0039]    In one embodiment, for cell self-heating mitigation, the design construction and optimization step uses Self Heating API using the early temperature map generation approach, to limit gain on high SF gates and isolate them. 
         [0040]    In alternative embodiments, to minimize the self heating violations, there may be performed steps to: 1) Identify High SF nets through the self heating API and Isolate High SF gates; 2) Limit a maximum gain of said devices. For example: INVERT: NAND/NOR: AOI/OAI (And Or Invert/Or And Invert Logic Functions); 3) Identify clock nets and perform 1)-3) in addition to sharpening input slew rates; 4) Use special gates that use fewer FINs per finger; and/or 5) Change the power level (power up) to reduce the local self heating. 
         [0041]    The self heating API through an initial analysis of the design, orders and provides the list of violating gates to the optimization module  300 , which in an incremental manner makes the fix up changes and queries the self heating API to create a design which would have a uniform temperature profile. 
         [0042]      FIG. 3A  shows one embodiment of an example analytical model  175  that computes the deltaT using the area and perimeter component of a standard cell, which makes it possible to compute deltaT with fairly high accuracy to be used during the design construction phase. 
         [0043]    In the example analytical model  175  shown in  FIG. 3A , there is provided an equivalent model  350  of an example macro cell transistor gate (circuit) of a standard cell in which the methods described herein may be applied. The circuit of  FIG. 3A  includes a model  350  of a parallel configured thermal resistance and capacitance based receiving current from a power source (Id×Vd). 
         [0044]    The analytical methodology  200  of  FIGS. 2A, 2B  may be used to compute the deltaT using the area and perimeter components, which makes it possible to compute deltaT with fairly high accuracy for use during the design construction phase. Here, the Rth value is a thermal resistance (e.g., units of deg C./W), a constant value between device temperature increase and dissipated power. That is, for this model, the DeltaT (DT) value is computed as: 
         [0000]        DT=Rth ×Power
 
         [0000]    where DT is proportional to the dissipated power with a proportionality constant of Rth such that: Gth=1|Rth, where Gth is the thermal conductivity. The Rth×Cth determines a self-heating time constant with Cth representing a device&#39;s “heat capacity”. In one embodiment, deltaT value is to voltage and R th 0 is normalized by device width (W) as follows: 
         [0000]        R   th   =R   th 0/ W.    
         [0045]    An example physical and scalable thermal RC model of a standard cell FinFET which is used in the early temperature map generation step  210  of  FIG. 2A  that computes a gate Rth value, is depicted according to the following equation  360  shown in  FIG. 3B  as follows: 
         [0000]    
       
         
           
             Rth 
             = 
             
               
                 1 
                 Gth 
               
               = 
               
                 1 
                 
                   
                     NFIN 
                     · 
                     NF 
                     · 
                     
                       G 
                       thArera 
                     
                   
                   + 
                   
                     NFIN 
                     · 
                     
                       G 
                       thNFIN 
                     
                   
                   + 
                   
                     NF 
                     · 
                     
                       G 
                       thNF 
                     
                   
                 
               
             
           
         
       
     
         [0000]    where, for example, NFIN is the number of fins (in the FinFet) being modeled; NF is a number of fingers of the FinFet within which captures the area component and perimeter component. 
         [0046]    In one embodiment of a process at step  210 ,  FIG. 2A  for generating the Rth values for the standard cells as a part of the standard cell power rule generation process, given an Rthcharacterization for the standard cell library: 
         [0000]    For each of PFET and NFET: 
         [0047]    If the standard cell is a split inverter: Then sum up total number of FINGERs for A, multiply by 1.5, round up to closest integer; 
         [0048]    Else if standard cell is a buffer or HPINV: Then sum up total number of FINGERs (both stages in buffers), divide by 2, round up to closest integer; 
         [0049]    Else: sum up total number of FINGERs for all inputs (for NAND2 example, NF=NF A +NF B =4+4=8); 
         [0050]    Use NFIN for one of FINGERs (NFIN is uniform for all FINGERs) 
         [0051]    Using above NF and NFIN, obtain RTH0 from model. 
         [0052]    If standard cell is a buffer or HPINV: Then compute Rth NFET  and Rth PFET  as 0.65*Rth0/(NF*NFIN*FPITCH) (0.65 is 1.3/2, where 1.3 is due to extra nesting, and 2 is because there is 2 RX beds in parallel); 
         [0053]    Else: compute Rth NFET  and Rth PFET  as Rth0/(NF*NFIN*FPITCH), where FPITCH is the Fin Pitch. 
         [0000]      Final  Rth= 1.3*( Rth   NFET   ∥Rth   PFET )=1.3*{1/(1/ Rth   NFET +1/ Rth   PFET )} 
         [0054]    Both PFET and NFET help to dissipate heat. Also, models for RTH0 assume isolated PFET and NFET. Since, in a stdCell, PFET and NFET are next to each other, there as an additional 30% increase in Rth0. 
         [0055]    This final Rth value will be entered into the power rule, and will be used by the Self Heating API as a part of the deltaT calculations. 
         [0056]      FIG. 4  depicts a comparison of the accuracy of the deltaT map generation approach 400 against a detailed field solver based thermal simulation approach 450 (e.g., using ANSYS Icepak™) on two gate level macros from a load/store unit of a high performance micro processor design. As shown, the DeltaT value from an ambient of 50° C. Max difference between predicted and actual dT was around 2° C. on certain non-critical areas. The run time using the deltaT map generation approach 400 was about 50× faster. 
         [0057]      FIG. 5  shows a snapshot  500  of automatic self heating violation mitigation during design construction of various Macro designs, Macro_1 through Macro_4 using the early deltaT temperature map generation approach. As shown in  FIG. 5 , the snapshot depicts the mitigating of self-heating violations of gates for each macro without using the deltaT map generation approach and after using the deltaT map generation approach. The activity conditions the macros were subject to included: 35% switching, no clock gating, and a self-heating violation threshold set of 5° C. at a minimum area cost. 
         [0058]    In sum, the present approach efficiently and accurately predicts overheating at the time of macro construction at a fraction of time with comparable accuracy to detailed field solver based approaches, and hardware measurements 
         [0059]      FIG. 6  illustrates a schematic of an example computer or processing system  10  that may implement the methods for early analysis and mitigation of self-heating in design flows in one embodiment of the present disclosure. The computer system is only one example of a suitable processing system and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the methodology described herein. The processing system shown may be operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with the processing framework shown in  FIG. 1  may include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like. 
         [0060]    The computer system may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. The computer system may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices. 
         [0061]    The components of computer system may include, but are not limited to, one or more processors or processing units  12 , a system memory  16 , and a bus  14  that couples various system components including system memory  16  to processor  12 . The processor  12  may include a module  10  that performs the methods described herein. The module  10  may be programmed into the integrated circuits of the processor  12 , or loaded from memory  16 , storage device  18 , or network  24  or combinations thereof. 
         [0062]    Bus  14  may represent one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus. 
         [0063]    Computer system may include a variety of computer system readable media. Such media may be any available media that is accessible by computer system, and it may include both volatile and non-volatile media, removable and non-removable media. 
         [0064]    System memory  16  can include computer system readable media in the form of volatile memory, such as random access memory (RAM) and/or cache memory or others. Computer system may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system  18  can be provided for reading from and writing to a non-removable, non-volatile magnetic media (e.g., a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus  14  by one or more data media interfaces. 
         [0065]    Computer system may also communicate with one or more external devices  26  such as a keyboard, a pointing device, a display  28 , etc.; one or more devices that enable a user to interact with computer system; and/or any devices (e.g., network card, modem, etc.) that enable computer system to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces  20 . 
         [0066]    Still yet, computer system can communicate with one or more networks  24  such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter  22 . As depicted, network adapter  22  communicates with the other components of computer system via bus  14 . It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system. Examples include, but are not limited to: microcode, device drivers, redundant processing units, and external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc. 
         [0067]    The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention. 
         [0068]    The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. 
         [0069]    Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device. 
         [0070]    Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention. 
         [0071]    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. 
         [0072]    These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0073]    The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0074]    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. 
         [0075]    The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
         [0076]    The corresponding structures, materials, acts, and equivalents of all means or step plus function elements, if any, in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form 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 invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.