Method for flattening hierarchical design descriptions
AssigneeLSI Logic Corporation
InventorPaul Filseth
Life of this patent
Estimating the term…
Abstract
The invention describes a method for expanding (flattening) hierarchical descriptions of electronic circuits into flat descriptions. The method is characterized by two processes: one which eliminates feed-through and implicit signals, and another which pre-plans the layout of the flattened data structure before flattening. The flattening process may then take advantage of a number of resulting efficiencies to operate more quickly than present flatteners.
Claims6
A method of flattening a hierarchical design description, comprising:
- providing a hierarchical design description including feed-through information;
- prior to flattening, propagating the feed-through information up through the design hierarchy by combining nets at higher levels of design hierarchy which are joined by feed-throughs in a submodule;
- and
- after combining the nets at the higher levels, flattening the hierarchical design description.
A method of flattening a hierarchical design description, comprising:
- providing a hierarchical design description including information about implicit connections made via a common signal name or global signal connection;
- prior to flattening, propagating the implicit information up through the design hierarchy by combining nets which are joined by a common signal name, or global signal connection;
- and
- after combining the nets, flattening the hierarchical design description.
A method of flattening a hierarchical design description, comprising:
- prior to flattening, performing the steps of:
- providing a hierarchical design description including instances of submodules, nets and pins;
- propagating cumulative totals of numbers of instances of submodules, nets and pins up through the hierarchy;
- computing partial sums of these totals for each submodule;
- and
- pre-allocating memory for storing a flattened representation of the hierarchical description, based on the cumulative totals;
- and
- after performing the steps recited hereinabove, applying a flattening algorithm recursively to the hierarchical design description, which algorithm takes advantage of the attribute totals and partial sums to simplify the computations that must be performed at each instance in the flattened design.
A method of flattening a hierarchical design, comprising:
- defining a plurality of modules, submodules and primitives, each having attributes;
- hierarchically arranging the modules, submodules and primitives;
- creating a top-level module;
- re-ordering the attributes in a consistent manner;
- propagating certain of the attributes up to the top-level module;
- counting the attributes at each level;
- pre-calculating a cumulative total of attributes, from the bottom of the hierarchy to the top of the hierarchy, and recording partial sums;
- pre-allocating memory for storing a flattened representation of the hierarchical description, based on the pre-calculated cumulative totals;
- and
- after pre-calculating the cumulative total of attributes and after pre-allocating memory, applying a flattening algorithm recursively to the design, which algorithm takes advantage of the attribute totals and partial sums to simplify the computations that must be performed at each instance in the flattened design.
A method for flattening a hierarchical description of an electronic circuit into a flat description thereof, comprising:
- providing a hierarchical design data structure including at least one module type description, at least one module instance description, connectivity information, and I/O pin descriptions;
- wherein:
- each module type description includes an I/O pin list, an internal connection list, a list of submodules, and a list of global signals used;
- each module instance description includes a reference to a module type description, an instance name and an I/O pin connection list;
- said connectivity information includes lists of all nets (wires) and connections thereto;
- and
- each such I/O pin connection includes an attribute indicating the module to which it is attached, and an attribute indicating the net to which it is attached;
- and
- further comprising:
- (a) creating a top-level module containing the entire hierarchical design data structure into which all external connections are subsumed, wherein the top-level module has no inputs or outputs, and adding the top-level module to the existing hierarchical design data structure at the highest hierarchical level;
- (b) determining the hierarchical level of each module type in the hierarchical design data structure and associating the level with each module type description;
- (c) placing the hierarchical module type descriptions in a list sorted in order of increasing hierarchical level.
- (d) re-arranging, as required, the order of I/O pin connections associated with each module instance so that the list of I/O pin connections to each module instance of the same type is in the same order by pin function;
- (e) propagating all references to global variables in submodules up the hierarchy by working from the bottom level of the hierarchical design to the top and adding all global signal references used by a submodule to the list of global signals used by its parent module type if they are not already listed by the parent module type;
- (f) analyzing each module type for submodules contained in the module type which have multiple I/O pins connected to the same wire at a lower level in the hierarchy, and eliminating any such multiple I/O pin connections by deleting the nets connected to all but one I/O pin of the submodule, and moving all other I/O pin and signal connections of the deleted nets to the one retained net;
- (g) totalizing the number of internal wires, submodules, and submodule I/O pins directly or indirectly contained in each module type, and attaching partial sums found while computing these totals to the submodules of each module type;
- (h) allocating memory storage space for an output data structure comprising a module instance array, a wire instance array, and an I/O pin instance array by multiplying the known allocation sizes of module instances, pin instances, and wire instances, by the numbers of submodules, submodule I/O pins, and internal wires, respectively, and performing the actual storage space allocation;
- and
- (i) recursively flattening the hierarchical design into an output data structure, and storing the output data structure in the allocated storage space.
Dependencies are inferred from the claim text.