We discuss here some of the advantages of building a hierarchical design.
Hierarchical Design encourages modularity. We can think of the different block symbols or low-level ABEL sources that we create as diffrent modules which can be reused in diffrent schematic or ABEL sources. This saves a lot of coding time and also makes the design easier to understand and compile. For instance a schematic with diffrent block symbols is definitely much easier to read and understand than a schematic with a lot of wires and gates.
Another advantage of Hierachical Design is that it lets you organize your design into useful levels of abstraction and detail. This basically means that using a Hierarchical Design you can build a top-level schematic consisting just of Block symbols and their connections. This schematic would just show how the project is organized. Hence this way you can hide the details of how the modules (block symbols) are implemented. You can then draw the schematic for each block symbol and these schematic in turn might contain block symbols for which you haven't yet drawn the schematic. This process of decomposing the schematic can be repeated as often as required until all the components of the design have been fully described as schematic.
Breaking down the schematic into diffrent modules lets you focus on individual modules and their interaction with other modules. Concentrating on a single module helps in easier understanding of the code and in better understanding of what the module should contain. You don't have to worry about the hardware that implements these modules. Since you can view or modify individual module, this makes debugging less cumbersome.
Since hierarchical design lets you enter a large design one piece at a time, it helps to organize and structure you design. By structuring your design you are more clear of what each module in your design should contain. This speeds up the design process and makes debugging more easier. The debugging process is even more simplified if :