Most important criteria include speed, area and power. If both speed and area constraints are to be satisfied simultaneously, many design decisions will improve one at the expense of the other. Design is dominated by process of balancing conflicting constraints.
Design time is especially tight for ASICs.
Each level of the hierarchy adds complexity by adding components. Commonly used in programming. Number of components do not change as it is recast to a lower level of abstraction. Less common in programming. Design abstraction and hierarchical design are not the same thing.