Synthesis:Partitioning
Partitioning
An important condition for a good result in the synthesis is a careful partitioning of the design. This means dividing the whole circuit into modules, which could show at the same time a hierarchy, or, in other words, a nesting of modules. The earlier partitioning is taken into account in the design cycle, the simpler synthesis will be. A change of the module boundaries often causes a re-definition of the interfaces which is time consuming and a source of error. So far there are no explicit rules for performing partitioning, but the following recommendations help the right decision to be made.
Combinatorial parts connected with each other should be in the same module (fig. 6.9).
The example in fig. 6.9 contains three combinatorial parts which are; directly or indirectly; elements of the critical path (the signal path which has the maximum delay time). In this case, when optimizing the synthesizing compiler has more degrees of freedom to take the edge off a critical path by choosing an advantageous combination when combining logic. A starting point which is not as good can be seen in fig. 6.10. There the compiler can not combine or relocate logic across the hierarchical levels.
Still looking at the partitioning in fig. 6.10, another difficulty is the distribution of the delay amongst the individual combinatorial parts. Because of this the driver strength and the loads have to be taken into account. To optimize each individual module, precise specification of the maximum delay time (output- or input-delay), the expected load, and driving strength must be made at the interface q (fig. 6.11). Figure 6.11 uses some statements of the Synopsys compiler to do that.
Registers at all outputs
Registers at all outputs of the modules reduce the number of constraints and simplify synthesis as a result. Which input load is to be taken into account at a module input can easily be decided using this recommendation, because as a rule it is the driving strength of a flip flop. The input delay of a module related to the clock depends only on the propagation delay of the register (clock to output, tco) of the preceding module and not to a lot of unknown and variable amount of combinatorial operations (fig. 6.13). Hence the critical path is only within the module. The optimization in time can be done more easily; for example by a new optimization run using changed, new constraints.
Comments
Post a Comment