Functional Partitioning
Divides a system’s functional specification into multiple sub-specification.
Each sub-specification represents the functionality of a system component, such as a custom-hardware or software processor.
Then the components are synthesized down to gates or compiled to machine codes.