WHAT IS HIERARCHICAL DESIGN?


WHAT IS HIERARCHY?

Hierarchy means how different modules in a design are connected together. It gives an insight into the refrencing of modules in the overall design. The hierachical design consists of a top-level source that contains funtional blocks. These functional blocks are the lower-level sources which describe the lower-level logic descriptions. They are refrenced by the top-level source and may in turn contain functional blocks that refrence even lower-level logic descriptions. hierarchy basically refers to this interaction between the top-level and the lower-level sources. This concept is very much simliar to the concept of a procedure calling another procedure or a function calling another function in high level languages like C++. When you reference a lower-level source within a top-level source, it is called "instantiation." This could be considered equivalent to "calling" a function or procedure in a high level language. We have encountered this concept of hierarchy when we created block symbols from a schematic/ABEL module to be used in higher design. Both top-level and lower-level sources can be either schematic or ABEL sources. Just as creating block symbols helps us to refrence lower modules in a schematic, in the same way ABEL language provides us with syntax that allow us to use lower-level modules in the top-level source.

Shown below is a project navigator which represents how the hierarchical design looks like in the Sources sub-window:

We can observe a few things from the Navigator window. A source can be both a lower-level source and top-level source, for instance in the above figure "ac" which is used as a lower-level source in "proc" refrences the source "nibble" which in turn instantiates the source "fadder". Also, a source can be called more than once (this is not shown in the project navigator window) i.e. two sources at the same level can use the same lower-level sources as sub-modules. However, you cannot refrence a top-level source from a source which is instantiated below that source. For example, in the above figure, you cannot refrence "ac" from the "nibble" or "fadder" source.