Abstract:
In the course of unit timing, there exists the possibility for a non-compute (N/C) on a particular net in an IC chip design, which could be caused by numerous things, including but not limited to a pin being tied to power, a floating output, or invalid timing test for a given phase at a test point. A process automatically verifies that all non-computes are understood and exist for valid reasons, in order to ensure all necessary paths are being timed. The process takes a conventional Comprehensive Report output of a unit timing run and generates macro specific N/C reports for designers to review and sign off on.

Description:
TRADEMARKS 
       [0001]    IBM ® is a registered trademark of International Business Machines Corporation, Armonk, N.Y., U.S.A. Other names used herein may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies. 
       BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present invention concerns an integrated circuit (“IC”) device having network paths, wherein some of the network paths have associated non-compute (“N/C”) indications produced by a timing analysis run. More specifically, it concerns selecting, before a subsequent timing run, those N/C-indicated network paths in which circuitry is changed. 
         [0004]    2. Description of Background 
         [0005]    A timing analysis run for an IC chip design commonly designates many nets in the design as N/C&#39;s. Some N/C&#39;s are expected, while some are problems. Those that are problems must be fixed. Many of them, however, are OK. It may happen that they are OK for a variety of reasons. Sometimes the logic designer intentionally left an input tied off or an output disconnected, for example. In a large IC chip design, there may be many thousands of these N/C indications for a timing run. Sometimes there may be tens of thousands, or even hundreds of thousands of N/C&#39;s. Thus, in order to confirm whether all necessary paths were timed in the run, it is conventional to manually examine long lists of N/C&#39;s generated by the timing run and to manually separate N/C&#39;s that do exist for valid and understood reasons from ones that do not. This is, of course, problematic, because this manual process is both resource intensive and subject to error. 
       SUMMARY OF THE INVENTION 
       [0006]    The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a process that automatically performs a method. That is, the process automatically detects and acts upon certain types of N/C&#39;s reported in timing analysis runs for an IC chip. This includes a first type of N/C that the process detects responsive to a predetermined property of a timing analysis run. In particular, for an N/C associated with a pin of the IC chip the process automatically categorizes and reports the N/C as being of the first type, deemed to arise from the pin being either floating or tied to power. The process detects and reports the first type of N/C responsive to the timing analysis run reporting no associated phase for the N/C&#39;s pin. 
         [0007]    In addition, a timing analysis report of the run includes lines for respective nets, where the lines include corresponding pin names, net names, and timing information. The timing report also includes headers indicating macros and instances for groups of lines. The process produces a second report by reformatting the timing analysis report, wherein for macro and instance indications set out as group headers of the timing analysis report the macro and instance indications are set out on respectively corresponding net/pin lines of the second report. 
         [0008]    In another aspect, responsive to detecting that valid data is asserted during one phase on a pin for an instance, the process selects N/C&#39;s on other phases for that instance and pin and acts to filter out the selected N/C&#39;s. For example, a report of N/C&#39;s generated responsive to the selection either leaves out the selected N/C&#39;s or identifies them distinctively or lists them in a separate report, which may be conveyed to a user. 
         [0009]    In another aspect, the process generates an output file wherein N/C&#39;s from the second report are eliminated responsive to user specified N/C&#39;s, the user specification of N/C&#39;s being defined in a first waiver file. 
         [0010]    In another aspect, the process incorporates a second waiver file in the first waiver file responsive to a user defined waiver incorporation statement in the first waiver file. 
         [0011]    In another aspect, the process generates an output file wherein noncomputes from the second report are eliminated responsive to user specified noncomputes, the user specification of the noncomputes being defined in an argument passed to the process. 
         [0012]    System and computer program products corresponding to the above-summarized methods are also described and claimed herein. 
         [0013]    Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of the invention with advantages and features, refer to the description and to the drawings. 
       Technical Effects 
       [0014]    As a result of the summarized invention, technically we have achieved a solution in which macro specific N/C reports are generated automatically by a process that executes responsive to a conventional output report from a unit timing run, so that designers are not required to look through the conventionally report by hand and sign off each N/C individually. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0015]    The subject matter, which is regarded as the invention, is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which: 
           [0016]      FIG. 1  illustrates features regarding reports, according to an embodiment of the present invention. 
           [0017]      FIG. 2  illustrates a process of verifying N/C&#39;s, according to an embodiment of the present invention. 
           [0018]      FIG. 3  illustrates one example of a computer system for implementation of a process such as that of  FIG. 2 , according to an embodiment of the present invention. 
       
    
    
       [0019]    The detailed description explains the preferred embodiments of the invention, together with advantages and features, by way of example with reference to the drawings. 
       DETAILED DESCRIPTION OF THE INVENTION 
       [0020]    In the following detailed description of the preferred embodiments, reference is made to the accompanying drawings illustrating embodiments in which the invention may be practiced. It should be understood that other embodiments may be utilized and changes may be made without departing from the scope of the present invention. The drawings and detailed description are not intended to limit the invention to the particular form disclosed. On the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. Headings herein are not intended to limit the subject matter in any way. 
         [0021]    The process or processes described herein may be implemented by logic in the form of instructions executing on a computer system (also referred to as a “data processing system”), or entirely in the form of hardware, or in an embodiment containing both hardware and software elements. Application specific integrated circuitry is another example of hardware. 
         [0022]    Turning now to the drawings in greater detail, it will be seen that in  FIG. 1  there is shown a chip  110 , according to the prior art. Regarding the use of the term “instance” herein, it is helpful to understand the following context. An embodiment of the present invention is applicable to hierarchical chip  110  designs. Generally speaking, hierarchical designs include a hierarchy of entities, such as chip  110 , unit  120 , macro  130 , and leaf cell  140  entities, where the chip  110  is often at the highest level in the hierarchy. The entities are placable objects and, in turn, may contain placeable objects. An embodiment of the present invention is also applicable to flat designs in which all placeable objects are at a common level or in which there is no hierarchy. In this context, “macros placed at the chip level,” for example, refers to macros that are all at the same level in the hierarchy, where that level is the same as the level of the chip entity. 
         [0023]    A buffer is an example of a placeable object. A buffer is often times a leaf cell, such as leaf cell  140  in the illustrated instance. A buffer master may be selected from a library and numerous instances placed in the chip in various locations. Accordingly, each instance of the buffer is assigned a unique instance name. Likewise, numerous instances of other entities can also be placed and given respective instance names. As previously described, N/C&#39;s may arise, for example, because some of the buffer instances are connected and driving things, while others aren&#39;t. 
         [0024]    Regarding the use of the term “phase” herein, this refers to a feature in an embodiment of IC chip  110  of the present invention, wherein data is produced and propagated in different timing phases. That is, the placeable objects are clocked and propagation time from latch to latch is governed by the clock cycle time. Each data propagation from latch point A to latch point B has to be less than the clock period. “Phase” indicates what frequency data is timed at and in which context it&#39;s used. Timing analysis involves comparing data propagation time and clock pulse width to determine slack, which indicates propagation time that is either less than or greater than the clock frequency. It is an objective of timing analysts to check all the propagation delays to make sure they fell within the cycle time. If they don&#39;t, adjustments are made. 
         [0025]    A net  156 , as the term is used herein, includes a connection between an output pin  152  and input pin  154 , i.e., a physical wire. 
       Unit Comprehensive Timing Report 
       [0026]    Referring now to  FIGS. 2 and 3 , after initialization, an overall process  300  and structure are shown in  FIG. 3 , in which a process  310  receives a conventional unit comprehensive report  210  of  FIG. 2 , which is well-known in the art and has been generated from a conventional unit timing run. Comprehensive report  210  contains detailed information about arrival times, slews, and slacks for every instance/pin/phase combination in chip  110  design. Comprehensive report  210  can be generated for an entire hierarchy, or for any particular level of hierarchy of chip  110  ( FIG. 1 ). 
         [0000]    Generation of a “Compsum” Report (sumcomp.pl) 
         [0027]    A compsum report  220  is produced by reformatting of a full comprehensive report  210 . Key things to note are that in compsum report  220  instance and macro names are now listed on respective lines  214  with the pin name, net name, and timing information. Header  212  information that used to show the macro and instance full comprehensive report  210  is removed, i.e., relocated, in compsum report  220 . That is, conventional full comprehensive report  210  includes lines  214  for respective nets, where lines  214  include corresponding pin names, net names, and timing information, and includes headers  212  indicating macros and instances for groups of lines. Process  310  reformats full comprehensive report  210  to produce compsum report  220 , which includes removing macro and instances from group headers  212  and setting them out on respectively corresponding net/pin lines  214 . 
         [0028]    In addition, process  310  inserts the keyword “NONE” in compsum report  220  on lines  214  corresponding to pins having no associated phase listed. That is process  310  includes subprocess  320  logic for automatically detecting a pin that may be floating or tied to power by detecting that there is no associated phase listed for the pin in comprehensive report  220 . Responsively, subprocess logic  320  sets out the keyword “NONE” in compsum report  220  on the lines corresponding to that pin. Alternatively, subprocess logic  320  sets out the keyword “NONE” in compsum report  220  for pins that are floating, “NONE_H” for pins tied high, and “NONE_L” for pins that are tied low. In this manner, the N/C indication for this pin in comprehensive report  210  is supplemented in compsum report  220 . 
         [0000]    Filtering of the Compsum for Expected N/C&#39;s (createNCfile.pl) 
         [0029]    Sometimes multiple phases get propagated to macro outputs in timing runs. For example, a macro output that is driven by a latch “data_out” pin may assert valid data for both a data phase (M@L) and a scan phase (“B@L”). A latch that receives this data from the macro output may not have a valid setup test for the B@L phase. Consequently, the timing analysis run will properly calculate a valid slack for the M@L phase, for which the receiving latch does have a valid setup test, but the timing run will designate an N/C state for the B@L phase. This lack of valid setup test and resulting N/C indication is generally due to chip  110  having a predetermined, known logic feature, according to which the state of the receiving latch has no significance during the B@L phase. In an embodiment of the present invention, this situation is recognized by process  310 . That is, subprocess logic  330  of process  310  detects at least one valid phase for an instance/pin combination. Responsive to detecting that valid data is asserted during one phase on a pin for an instance, the subprocess logic  330  “filters out” any N/C&#39;s on other phases for that instance/pin combination. That is, logic  330  generates a filtered compsum report having no N/C indication lines for an instance/pin combination, which may be stored in memory. In an alternative, this filtered compsum report may be conveyed to a user, such as by displaying, printing, or as a data structure stored on a portable, computer readable storage media. 
       The User Supplied Waiver File 
       [0030]    According to an embodiment of the present invention, a user is responsible for creating a waiver file  340  specifying instance/macro/pin/phase combinations that are expected and can be waived. (This may also include a plurality of users respectively creating waiver files  340 .) Process  350  includes logic for processing waiver file or files  340 . In an embodiment, the format of waiver file  340  includes the following:
       “#” denotes the start of a comment line.   “&lt;instance_name&gt; &lt;macro_name&gt; &lt;pin_name&gt; &lt;phase&gt;” denotes an instance/macro/pin/phase combination that is expected and can be waived. That is, process  350  recognizes a line in waiver file  340  with these parameters as a designation of waiver of the specified N/C.   “NET &lt;net_name&gt; &lt;phase&gt;” denotes waiver of all N/C&#39;s associated with the specified net_name and phase. That is, process  350  recognizes a line in waiver file  340  as a designation of waiver of the set of specified N/C&#39;s.   A ‘*’ character denotes a wildcard. Bus notation is also supported, for example, data_in(0:63). That is, process XXX recognizes the meaning of this terminology in waiver file  340 . Process  350  supports basic wildcarding and bus notation.       
 
         [0035]    Wildcards permit granularity to waive categories of instances. For example, if a numerous instances of a buffer are included as spares in chip  110 , where each one is given a name according to a predetermined format “sparebuffer_[instance number], the terminology “sparebuffer_*” can be used to waive all instances of these buffers. 
         [0000]    The Waiver Process (verifyNC.pl) 
         [0036]    N/C waiver process  350  reads in user&#39;s waiver file  340  and applies it to compsum report  220  and responsively generates output files  360 . To initiate this, process  350  receives arguments  345 , including a first argument specifying compsum report  220 , a second argument specifying waiver file or files  340 , and a third argument specifying a prefix to put on names of output files  360 . Process  350  may also receive two optional arguments, a unit prefix for filtering, which will be discussed later, and a user specified directory for output files  360 , which is self-explanatory. 
         [0037]    Process  350  reads these arguments  345  from a file, verifyNC.pl, in which they are set out as follows: 
         [0000]    
       
         
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 verifyNC.pl &lt;compsum&gt; &lt;waiver_file&gt; &lt;file_prefix&gt; 
               
               
                   
                 [-p &lt;unit_prefix&gt; -o &lt;output_directory&gt;] 
               
               
                   
                   
               
             
          
         
       
     
         [0038]    Process  350 , which may execute in the form of a script, reads the full compsum report  220  given by the user in the &lt;compsum&gt; argument and automatically runs filtering process  350  code, createNCfile.pl. Process  350  responsively creates the following four output files  350 :
       &lt;file_prefix&gt;.NC.waived—List of pins that were waived from &lt;compsum&gt;. Preceding each line is the pattern that matched for debug purposes.   &lt;file_prefix&gt;,NC.ignored—List of nets that were ignored either because they did not match &lt;unit_prefix&gt; or were the DCDC phases. (“DCDC” refers to a net that doesn&#39;t switch, and is, therefore, insignificant for timing analysis purposes. Over time it has a relatively constant value, such as a gating signal for which the designer doesn&#39;t care about arrival time. AC is something that&#39;s switching, DC is constant over time. A lot of times DC is tied off. Generally all “DC&#39;s” are ignored for timing analysis.)   &lt;file_prefix&gt;,NC.unconnects—List of any nets left over after all waivers have been applied. Whatever appears in this list either needs to be fixed in VHDL, have a physical design change, or needs to have a waiver written for it.   &lt;file_prefix&gt;.verifyNC.sum—Summary information including a count of each line that matched each waiver in the waiver file.       
 
         [0043]    As previously mentioned, the user can specify a unit prefix by optional argument (−p &lt;unit_prefix&gt;).—If this is specified, process  350  will only check instances that match this prefix. In a sense, including this argument yields the opposite of a waiver file  340  by indicating which instances to check instead of which instances not to check. This is especially helpful for units that are flat at the chip  110  level. For example, on chip  110 , if there&#39;s a flat unit LX having all macro instance names with an “LX” prefix, a unit timing coordinator for the unit LX may wish to evaluate a timing run comprehensive report  210  for which he/she doesn&#39;t care about any other macros besides those in unit LX. In this case, the timing coordinator may initiate execution of process  350  by a command that includes a “−p LX” argument 
         [0000]    Sorting the Results (verifyNCsortByMacro.pl) 
         [0044]    When process  350  has completed its processing of waiver file(s)  340  and comprehensive report  220 , it will have eliminated some N/C&#39;s and some will remain and will be listed in the “unconnects” file, as described herein above. Process  370  may then be used to automatically sort the remaining N/C&#39;s listed in the “unconnects” file thereby producing a sorted directory  380  that lists all reports of N/C&#39;s. In an embodiment of the invention, process  370  sorts the remaining N/C by macro, in order to facilitate dividing the remaining N/C&#39;s into respective subreports (or portions of a report) setting out respective macros N/C&#39;s, and wherein process  370  presents the subreports or portions to teams or individuals who are responsible for respective ones of the macros. 
       Handling Hierarchy 
       [0045]    In structuring the format of waiver files  340 , special considerations were made for handling unit hierarchy so that waiver files  340  don&#39;t have to be redundant or duplicated. That is, any waiver file  340  can specify inclusion of another existing waiver file  340 , thereby effectively including the other existing waiver file  340 , by utilizing the following waiver file incorporation statement: 
         [0046]    FILE&lt;FileName&gt; [&lt;Prefix&gt;] 
         [0000]    This statement will cause process  350  to include the waiver file that is given by FileName, and will cause process  350  to append Prefix to the front of each line given in that file. 
         [0047]    Consider the following example, in which the CHIP  110 , which may be considered a parent entity, contains the following child entities below it in the entity hierarchy: 
         [0048]    2 instances of L 2 C named  120  and  121   
         [0049]    Each instance of L 2 C has a respective child entity called l 2   a    
         [0050]    4 instances of LQ named lq 0   c , lq 1   e , lq 0   o , and lq 1   o    
         [0051]    A flat unit called LX 
         [0052]    A flat unit called IO 
         [0053]    A flat unit called TP 
         [0054]    In one instance, for example, waiver file  340  for CHIP  110  includes the following lines: 
         [0055]    FILE /data/l 2   c _waiver_file  120   
         [0056]    FILE /data/l 2   c _waiver_file  121   
         [0057]    FILE /data/lq_waiver_file lq 0   e    
         [0058]    FILE /data/lq_waiver_file lq 1   e    
         [0059]    FILE /data/lq_waiver_file lq 0   o    
         [0060]    FILE /data/lq_waiver_file lq 1   e    
         [0061]    FILE /data/lx_waiver_file 
         [0062]    FILE /data/io_waiver_file 
         [0063]    FILE /data/tp_waiver_file 
         [0000]    In this instance, process  350  responsively incorporates all the waiver files  340  for all the entities of chip  110 .
 
In another instance, for example, waiver file  340  for L 2 C includes the following lines:
 
         [0064]    FILE /data/l 2   a _waiver_file l 2   a    
         [0000]    In this instance, process  350  responsively incorporates only the waiver files  340  for the entities of entity L 2 C. 
         [0065]    A big advantage of this implementation is that unit timing coordinators can run waiver process  350  for their own units  120  on their own unit timing compsum reports  220 . Then, when the chip timing coordinator runs the waiver process  350  for the entire chip  110 , he/she can simply specify inclusion of all the child unit  120  waiver files  340  instead of copying each one of them into the chip timing coordinator&#39;s own waiver file  340 . 
         [0066]    A chip  110  level timing coordinator also has the ability to check only top level N/C&#39;s by writing a top level only comprehensive report  210  instead of a full hierarchical report. It is an advantageous feature of an embodiment of the present invention that if the chip timing coordinator checks only the top level entity by running process  350  with a waiver file  340  that specifies waivers of all nets below those of the top level entity or entities, and each unit timer checks his/her own box unit in similar fashion, i.e., by running process  350  on respective compsum reports  220  with respective waiver files  340  that specify waivers of all nets below those of the respective unit entities, then when process  350  checks the full chip  110  in a run on a fully hierarchical compsum report  220 , it follows that if the individual checks produced clean results in which there are no unexpected N/C&#39;s, the full chip  110  check should be clean as well. 
         [0067]    In other words, according to an embodiment of the invention the chip timing coordinator checks only placeable objects, i.e., instances, that exist flat at the chip  110  level (which could be other units and flat macros), but has no visibility into deeper levels of hierarchy. Nevertheless, if each unit timing coordinator has run a timing analysis achieving clean results on their own respective units (at the level below the chip entity), this achieves the same clean result as if the chip timing coordinator had run waiver process  300  with a full hierarchical compsum report. 
       Computer Program Product 
       [0068]    The present invention, aspects of which are shown in the above FIG&#39;S, may be distributed in the form of instructions, which may include data structures and may be referred to as a “computer program,” “program ” “program code,” “software,” “computer software,” “resident software,” “firmware,” “microcode,” etc. Stored on a computer-readable storage medium, such instructions and storage medium may be referred to as a “computer program product,” “program product,” etc. 
         [0069]    The computer program product maybe accessible from a computer-readable storage medium providing program code for use by or in connection with a computer or any instruction execution system. The present invention applies equally regardless of the particular type of media actually used to carry out the distribution. The instructions are read from the computer-readable storage medium by an electronic, magnetic, optical, electromagnetic or infrared signal. Examples of a computer-readable storage medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD. The instructions may also be distributed by digital and analog communications links, referred to as “transmission media.” 
       Computer System 
       [0070]    A data processing system suitable for storing and/or executing program code includes at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. 
         [0071]    Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters. 
         [0072]    Referring now to  FIG. 4 , a computer system  410  is illustrated, which may take a variety of forms, including a personal computer system, mainframe computer system, workstation, server, etc. That is, it should be understood that the term “computer system” is intended to encompass any device having a processor that executes instructions from a memory medium. In the illustrated system embodiment, system  410  includes one or more processors  415 , a keyboard  433 , a pointing device  430 , and tangible, computer-readable storage media, including volatile memory  427 , and nonvolatile memory  429 , eg., ROM, hard disk, floppy disk, CD-ROM, and DVD, and display device  437 . 
         [0073]    Memory  429  of system  410  stores computer programs (also known as “software programs”), wherein programs include instructions that are executable by one or more processors  415  to implement various embodiments of a method in accordance with the present invention. Memory  429  of system  410  also has data stored thereon that provides circuit structures, logical entity properties including physical locations, etc. Programs include instructions for implementing processes described herein above, as well as other processes. 
         [0074]    Those of ordinary skill in the art will appreciate that the hardware in  FIG. 4  may vary depending on the implementation. For example, other peripheral devices may be used in addition to or in place of the hardware depicted in  FIG. 4 . The depicted example is not meant to imply architectural limitations with respect to the present invention. Various embodiments of system  410  implement one or more software programs and data in various ways, including procedure-based techniques, component-based techniques, and/or object-oriented techniques, among others. Specific examples include XML, C, C++ objects, Java and commercial class libraries. 
       General Remarks 
       [0075]    The terms “circuitry” and “memory” and the like are used herein. It should be understood that these terms refer to circuitry that is part of the design for an integrated circuit chip  110  of  FIG. 1 . The chip design is created in a graphical computer programming language, and stored in a computer storage medium (such as a disk, tape, physical hard drive, or virtual hard drive such as in a storage access network). If the designer does not fabricate chips or the photolithographic masks used to fabricate chips, the designer transmits the resulting design by physical means (e,g., by providing a copy of the storage medium storing the design) or electronically (e.g., through the Internet) to such entities, directly or indirectly. The stored design is then converted into the appropriate format (e.g., GDSII) for the fabrication of photolithographic masks, which typically include multiple copies of the chip design in question that are to be formed on a wafer. The photolithographic masks are utilized to define areas of the wafer (and/or the layers thereon) to be etched or otherwise processed. 
         [0076]    The resulting integrated circuit chips can be distributed by the fabricator in raw wafer form (that is, as a single wafer that has multiple unpackaged chips), as a bare die, or in a packaged form. In the latter case the chip is mounted in a single chip package (such as a plastic carrier, with leads that are affixed to a motherboard or other higher level carrier) or in a multichip package (such as a ceramic carrier that has either or both surface interconnections or buried interconnections). In any case the chip is then integrated with other chips, discrete circuit elements, and/or other signal processing devices as part of either (a) an intermediate product, such as a motherboard, or (b) an end product. The end product can be any product that includes integrated circuit chips, ranging from toys and other low-end applications to advanced computer products having a display, a keyboard or other input device, and a central processor. 
         [0077]    To reiterate, the embodiments were chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention. Various other embodiments having various modifications may be suited to a particular use contemplated, but may be within the scope of the present invention. 
         [0078]    Unless clearly and explicitly stated, the claims that follow are not intended to imply any particular sequence of actions. The inclusion of labels, such as a), b), c) etc., for portions of the claims does not, by itself, imply any particular sequence, but rather is merely to facilitate reference to the portions. 
         [0000]    The capabilities of the present invention can be implemented in software, firmware, hardware or some combination thereof. For example, processes described herein are implemented as Perl scripts in an embodiment of the invention. 
         [0079]    To repeat, one or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately. Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided. 
         [0080]    The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention. 
         [0081]    Herein the terms “present” and “convey” are used, or variants thereof. It should be understood that these terms refer to delivering information to a user in a useful format, which may include displaying the information to the user on a computer system display, or printing information for the user. In some cases it may be useful to present information to a user as a data structure stored on a portable, computer readable storage media. 
         [0082]    While the preferred embodiment to the invention has been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described.