分配又称作数据通路分配(data path allocation),它的任务是把操赋给相应的硬件进行运算,把变量赋给相应的硬件加以存放,把数据传输通道赋给相应的硬件进行数据传输。这些硬件资源通常是功能块级的模块,例如功能单元、寄存器、多路器、总线等。一般情况下,在控制数据流图中,操作赋给功能单元,变量赋给寄存器,而多路器、总线和互连线路则用来连接各单元之间的数据传输通路。
  分配问题相应地分为3个部分:
  · 功能单元的分配;
  · 寄存器的分配;
  · 互连线路的分配。
  高层次综合中,分配的主要目的是共享硬件模块。例如,多个操作可以共享加法器或ALU等功能单元,多个变量可以共享寄存器或内存单元,数据传输通道可以共享多路器或总线等。分配的最终目的在于:建立一个功能块级模块组成的数据通路,使得所需硬件资源的费用最少。
分配与调度是密切相关的两个任务,与分配密切相关的另一个任务是模块确定。如果实现某一指定操作类型的功能单元有2种以上,就需要指定其中的一个来实现该类操作。模块确定与分配共同确定数字系统的成本。通常,在调度时就要考虑模块确定问题,而在分配时作最后的决定。
今以图5.18所示调度结果为例说明分配过程中模块确定和最终结果之间的关系:
  (1)假定选用1个实现{ +,< }操作的功能单元实现加法和比较操作,另外选用1个减法器实现减法操作。可以用7个控制步实现调度结果。
  (2)假定选用1个实现{ +,- }操作的功能单元实现加法和减法操作,另外选用1个实现{< }操作的功能单元实现比较操作。受此资源约束条件的限制,减法操作11与加法操作9不能调度到同一个控制步中并行执行,需要8个控制步才能实现调度结果。
  一般情况下,分配过程中采用启发性算法同时进行功能单元的分配与确定。