A system for, and method of, automatically generating a hierarchical register consolidation structure. In one embodiment, the system includes: (1) a graph generator that parses a High-level Design Language (HDL) file to generate an intermediate graph containing definitions of microprocessor-accessible...http://www.google.es/patents/US7500228?utm_source=gb-gplus-sharePatente US7500228 - System and method for automatically generating a hierarchical register consolidation structure

System and method for automatically generating a hierarchical register consolidation structureUS 7500228 B2

Resumen

A system for, and method of, automatically generating a hierarchical register consolidation structure. In one embodiment, the system includes: (1) a graph generator that parses a High-level Design Language (HDL) file to generate an intermediate graph containing definitions of microprocessor-accessible registers, node interrelationships and summary bits and masks associated with alarm registers, (2) a graph converter, associated with the graph generator, that selectively adds virtual elements and nodes to the intermediate graph to transform the intermediate graph into a mathematical tree and (3) a description generator, associated with the graph converter, that employs the mathematical tree to generate a static tree description in a programming language suitable for use by a device-independent condition management structure.

Imágenes(2)

Reclamaciones(14)

1. A system for automatically generating a hierarchical register consolidation structure, comprising:

a processor;

a graph generator that parses a Hardware Description High level Design Language (HDL) file in three different passes to generate an intermediate graph containing definitions of microprocessor-accessible registers, node interrelationships and summary bits, bit offsets and masks associated with alarm registers of external devices identified by said HDL file, wherein:

a first pass extracts information associated with said microprocessor-accessible registers;

a second pass identifies said node interrelationships and associates said alarm registers with mask registers and persistency and delta information; and

a third pass generates said bit offsets and said masks associated with said alarm registers and associates said summary bits therewith;

a graph converter, associated with said graph generator, that selectively adds virtual elements and nodes to said intermediate graph to transform said intermediate graph into a mathematical tree; and

a description generator, associated with said graph converter, that employs said mathematical tree to generate a static tree description in a programming language suitable for use by a device-independent condition management structure and an HTML traversable tree representation based on said mathematical tree, wherein both of said static tree description and said HTML traversable tree representation form a hierarchical register consolidation structure to provide a logical representation of said microprocessor-accessible registers, node interrelationships, summary bits, bit offsets, and masks of said external devices.

2. The system as recited in claim 1 wherein said programming language is C.

3. The system as recited in claim 1 wherein said HDL file is produced by a hardware description tool.

4. The system as recited in claim 1 wherein said first pass extracts names, addresses, definitions, bit positions used and bit position names of said microprocessor-accessible registers.

5. The system as recited in claim 1 wherein said graph converter further removes multiple parent situations from said intermediate graph to transform said intermediate graph into said mathematical tree.

6. The system as recited in claim 1 wherein said condition management structure manages interrupts associated with said external devices employing said static tree or said HTML traversable tree.

7. The system as recited in claim 1 wherein said hierarchical register consolidation structure pertains to a real-time system.

a first pass extracts information associated with said microprocessor-accessible registers;

a second pass identifies said node interrelationships and associates said alarm registers with mask registers and persistency and delta information; and

a third pass generates said bit offsets and said masks associated with said alarm registers and associates said summary bits therewith;

selectively adding virtual elements and nodes to said intermediate graph to transform said intermediate graph into a mathematical tree; and

employing said mathematical tree to generate a static tree description in a programming language suitable for use by a device-independent condition management structure and an HTML traversable tree representation based on said mathematical tree, wherein both of said static tree description and said HTML traversable tree representation form a hierarchical register consolidation structure to provide a logical representation of said microprocessor-accessible registers, node interrelationships, summary bits, bit offsets, and masks of said external devices.

9. The method as recited in claim 8 wherein said programming language is C.

10. The method as recited in claim 8 wherein said first pass extracts names, addresses, definitions, bit positions used and bit position names of said microprocessor-accessible registers.

11. The method as recited in claim 8 further comprising removing multiple parent situations from said intermediate graph to transform said intermediate graph into said mathematical tree.

12. The method as recited in claim 8 further comprising producing said HDL file with a hardware description tool.

13. The method as recited in claim 8 wherein said condition management structure interacts only with a logical representation of said microprocessor-accessible registers, node interrelationships, summary bits and masks and does not conform to a physical configuration thereof.

14. The method as recited in claim 8 further comprising pruning said intermediate graph to transform said intermediate graph into a mathematical tree.

Descripción

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is related to U.S. patent application Ser. No. 10/612,097 entitled “A Condition Management System and Method of Operation Thereof” to Eckhart, et al., filed on Jul. 2, 2003, and U.S. patent application Ser. No. 10/782,080 entitled “A Condition Management Callback System and Method of Operation Thereof” to Hitchcock, et al., filed on Feb. 19, 2004, both of which are commonly assigned with the present invention and incorporated herein by reference as if reproduced herein in their entirety.

TECHNICAL FIELD OF THE INVENTION

The present invention is directed, in general, to processors and, more specifically, to a system and method for automatically generating a hierarchical register consolidation structure.

LIMITED COPYRIGHT WAIVER

A portion of the disclosure of this patent document contains material to which the claim of copyright protection is made. The copyright owner has no objection to the facsimile reproduction by any person of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office file or records, but reserves all other rights whatsoever.

BACKGROUND OF THE INVENTION

Computer systems perform wide-ranging tasks in today's world, to say the least. In performing many of these tasks, computers are called upon to determine the condition of and control external devices. These external devices may be of many different types, including sensors, clocks, actuators, disk drives and motors to name just a few.

A computer typically interacts with external devices by executing a software program that calls for the computer to generate signals that control certain of the devices based on the condition of other of the devices. For example, a computer may adjust the speed of a motor based on the temperature of a fluid that the motor is stirring and the length of time that the motor has been stirring the fluid.

When computers began to be called upon to sense and control external devices, a method called “polling” was developed. Polling calls for the computer actively to query the external devices to determine their condition, usually periodically. In the example above, the computer may poll a thermometer and a clock once a second to determine the fluid temperature and time. While effective for simple tasks involving a relatively small number of devices, polling came to consume ever-greater amounts of the computer's time as the tasks and the numbers of devices became more complex. Polling is inefficient, because the computer must poll even when no conditions requiring the computer's response have occurred. At its extreme, polling may even consume so much time that the computer is precluded from performing other tasks.

To overcome the disadvantages inherent in polling, “interrupts” were developed. With interrupts, the computer does not actively determine the condition of external devices. Instead, changes in device condition (“events”) cause signals (“interrupts”) to be delivered to the computer, often by way of an “interrupt register,” or “alarm register,” that contains status information regarding its corresponding external device. The computer is free to execute its software program until it receives an interrupt, at which time it usually departs from its program and responds to, or “handles,” the interrupt, often based on the contents of one or more interrupt registers.

Interrupts are widely used today, but they are by no means a perfect solution by themselves. Interrupt handling becomes complex when a computer is called upon to sense and control a great number of external devices, such as may be encountered in a telecommunications or computer network. It becomes more complex when combinations of events trigger different responses by the computer. It becomes still more complex when the events and combinations change depending upon the software instructions that the computer is executing when the events or combinations occur. Combinations of interrupt conditions have become so complex that they are now often organized into a “hierarchical register consolidation structure” to ease their management. Management of the hierarchical register consolidation structure may be performed by a condition management system, or CMS.

Creating a suitable hierarchical register consolidation structure for a system of external devices, however, remains a time-consuming challenge. When a new system is designed, its microprocessor-accessible registers, node interrelationships and summary bits and masks associated with its alarm registers are currently carefully, manually organized into a register consolidation structure that is traversable as a mathematical tree. Systems having many thousands of such registers, interrelationships, summary bits and masks can render the process extremely tedious and exceedingly error-prone. Creating, testing and correcting errors in manually produced hierarchical register consolidation structures takes significant development time and money and can significantly complicate and delay the introduction of new systems. What is needed in the art is a faster, more accurate way to create a hierarchical register consolidation structure.

SUMMARY OF THE INVENTION

To address the above-discussed deficiencies of the prior art, the present invention, in one aspect, provides a system for automatically generating a hierarchical register consolidation structure.

In one embodiment, the system includes: (1) a graph generator that parses a High-level Design Language (HDL) file to generate an intermediate graph containing definitions of microprocessor-accessible registers, node interrelationships and summary bits and masks associated with alarm registers, (2) a graph converter, associated with the graph generator, that selectively adds virtual elements and nodes to the intermediate graph to transform the intermediate graph into a mathematical tree and (3) a description generator, associated with the graph converter, that employs the mathematical tree to generate a static tree description in a programming language suitable for use by a device-independent condition management structure.

In another aspect, the present invention provides a method of automatically generating a hierarchical register consolidation structure. In one embodiment, the method includes: (1) parsing a High-level Design Language (HDL) file to generate an intermediate graph containing definitions of microprocessor-accessible registers, node interrelationships and summary bits and masks associated with alarm registers, (2) selectively adding virtual elements and nodes to the intermediate graph to transform the intermediate graph into a mathematical tree and (3) employing the mathematical tree to generate a static tree description in a programming language suitable for use by a device-independent condition management structure.

In yet another aspect, the present invention provides a system for automatically generating a hierarchical register consolidation structure. In one embodiment, the system includes: (1) a graph generator that parses a High-level Design Language (HDL) file to generate an intermediate graph containing definitions of microprocessor-accessible registers, node interrelationships and summary bits, bit offsets and masks associated with alarm registers, (2) a graph converter, associated with the graph generator, that selectively adds virtual elements and nodes to the intermediate graph to transform the intermediate graph into a mathematical tree and (3) a description generator, associated with the graph converter, that employs the mathematical tree to generate a static tree description in a programming language suitable for use by a device-independent condition management structure and an HTML traversable tree representation based on the mathematical tree.

The foregoing has outlined, rather broadly, preferred and alternative features of the present invention so that those skilled in the art may better understand the detailed description of the invention that follows. Additional features of the invention will be described hereinafter that form the subject of the claims of the invention. Those skilled in the art should appreciate that they can readily use the disclosed conception and specific embodiment as a basis for designing or modifying other structures for carrying out the same purposes of the present invention. Those skilled in the art should also realize that such equivalent constructions do not depart from the spirit and scope of the invention in its broadest form.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:

FIG. 1 illustrates a block diagram of a system for automatically generating a hierarchical register consolidation structure constructed according to the principles of the present invention; and

FIG. 2 illustrates a flow diagram of a method of automatically generating a hierarchical register consolidation structure carried out according to the principles of the present invention.

DETAILED DESCRIPTION

Referring initially to FIG. 1, illustrated is a block diagram of a system, generally designated 100, for automatically generating a hierarchical register consolidation structure constructed according to the principles of the present invention.

The system 100 includes a graph generator 110. The graph generator 110 parses a Hardware Description Language (HDL) file 105, which may be a Verilog HDL file. HDL tools and the files they produce are well known to those skilled in the pertinent art. In the illustrated embodiment, the HDL file 105 is produced by a particular hardware description tool called “OTUS.” Of course, other HDL file generating tools fall within the broad scope of the present invention. Table 1, below, illustrates an exemplary OTUS microprocessor interface hardware description language file that can be the HDL file 105.

TABLE 1

Exemplary OTUS Microprocessor Interface

Hardware Description Language File

// VPP - width of internal data bus (per channel)

// VPP - number of physical channels terminated

// VPP - number of physical channels terminated on Primary Line interface

The graph generator 110 generates an intermediate graph 115 from the HDL file 105. In the illustrated embodiment, the graph generator 110 generates the intermediate graph 115 by making three passes through the HDL file 105. In a first pass, the graph generator 110 extracts the definitions of all the microprocessor-accessible registers, register names, addresses, bit positions used and their names. In a second pass, the graph generator 110 identifies node interrelationships and associates alarm registers with their mask register and persistency and delta information. In a third and final pass, the graph generator 110 associates summary bits in an alarm register with the alarm register that is summarized and generates bit offsets and masks are generated. The intermediate graph 115 that results after these three passes therefore contains definitions of microprocessor-accessible registers, node interrelationships and summary bits and masks associated with alarm registers of the system of external devices to which the HDL file pertains. In the illustrated embodiment, the intermediate graph 115 further contains bit offsets associated with the alarm registers.

The system 100 further includes a graph converter 120. The graph converter 120 is associated with the graph generator 110 and receives the intermediate graph 115 therefrom. The graph converter 120 removes elements of the hardware interrupt tree that cause it to be a graph rather than a true mathematical tree. To do so, the graph converter 120 iterates over the intermediate graph identifying and creating virtual elements and virtual nodes that map to the same physical address. The graph converter 120 removes multiple parent situations and optionally modifies or prunes the intermediate graph 115 if sections of the system are not being used in a particular application. Pruning reduces the size of the resulting mathematical tree 125 and makes it faster to traverse. The resulting tree 125 is a true mathematical tree and can be used with a condition management system, or CMS, tool.

The system 100 further includes a description generator 130. The description generator 130 is associated with the graph converter 120. The description generator 130 employs the mathematical tree 125 to generate a static tree description 135 in a programming language suitable for use by a device-independent CMS. In the illustrated embodiment, that programming language is C, though other programming languages fall within the broad scope of the present invention. Tables 2 and 3, below, illustrate exemplary static tree descriptions in C for both output nodes (Table 2) and output elements (Table 3).

FIG. 1 illustrates a CMS tool 150. The CMS tool 150 employs the static tree description 135 and/or the HTML traversable tree representation 145 to manage interrupts while the system of external devices is in operation. The condition management system 150 may operate in accordance with the U.S. patent application Ser. No. 10/612,097 entitled “A Condition Management System and Method of Operation Thereof,” previously incorporated by reference. The hierarchical register consolidation structure contains a logical representation of the microprocessor-accessible registers, node interrelationships, summary bits and masks of the system of external devices and therefore relieves the CMS 150 of the task of conforming itself to the physical configuration of the registers, interrelationships, bits and masks.

In the illustrated embodiment of the present invention, the graph generator 110, the graph converter 120 and the description generator 130 are embodied in sequences of instructions executable in a general purpose computing system. Of course, the graph generator 110, the graph converter 120 and the description generator 130 could be implemented in hardware, firmware or any suitable combination of hardware, firmware or software.

Turning now to FIG. 2, illustrated is a flow diagram of a method, generally designated 200, of automatically generating a hierarchical register consolidation structure carried out according to the principles of the present invention. The method 200 begins in a start step 210, wherein a HDL file is in existence, and it is desired to generate a hierarchical register consolidation structure from the HDL file.

The method 200 proceeds to a step 220 in which a HDL file is parsed to generate an intermediate graph containing definitions of microprocessor-accessible registers, node interrelationships and summary bits, bit offsets and masks associated with alarm registers. In the embodiment illustrated in FIG. 1, the parsing is done in three passes. First, definitions of all the microprocessor accessible registers, register names, addresses, bit positions used and their names are extracted. Second, node interrelationships are identified and alarm registers are associated with their mask register and persistency and delta information. Third, summary bits in an alarm register are associated with the alarm register that is summarized, and bit offsets and masks are generated.

Next, in a step 230, virtual elements and nodes are selectively added to the intermediate graph to transform the intermediate graph into a mathematical tree. Modification and/or pruning of the graph may be required to make it a true mathematical tree or desired to make it smaller or more efficient.

Then, in a step 240, the mathematical tree is employed to generate a static tree description in a programming language suitable for use by a device-independent condition management structure (C, in the illustrated embodiment). As has been demonstrated above, the static tree description can contain both node and element descriptions. Next, in a step 250, the static tree description is employed to generate an HTML traversable tree representation based on the mathematical tree. The method 200 then ends in an end step 260.

Although the present invention has been described in detail, those skilled in the art should understand that they can make various changes, substitutions and alterations herein without departing from the spirit and scope of the invention in its broadest form.