【学习目标】
  掌握高层次综合的基本概念和算法。
  ·如果你希望成为一个高层次综合软件的开发者,本章内容是必要的基础知识。
  ·如果你希望成为一个数字集成电路的设计者,学习本章内容之后,在使用商品EDA工具时,由于理解其内部原理而得心应手。

  【学习方法】 
  ·注意对基本概念的理解。如果对抽象的概念暂时不理解,可以继续读下去,后面的实例会帮助你理解这些概念。
  ·通过手工做习题加深理解。
  ·用高级程序设计语言(C或Pascal)编写一段程序实现书中算法,就会有更深入的理解。编程的工作量比较大,可从本章习题中选择若干作为练习。通过编程对算法有了深入理解之后,还有可能改进原来的算法。

  【学习指南】
  ·预备知识:
   1. 硬件设计的基础知识;
   2. 算法的基础知识。
  ·认识到数字系统的描述和处理是分层次的,例如高层次综合、逻辑综合以及版图综合等。高层次综合是在逻辑综合的基础上发展起来的。人们希望有更简洁、抽象的描述方式(行为描述)和功能更强的综合工具。
  ·把高层次综合与逻辑综合(第4章)作对比,了解二者的差别和联系,加深理解。

  【难重点】
   1. 高层次综合工具的输入是目标电路的行为描述,输出是目标电路的结构描述,了解行为描述和结构描述的差别和联系。
   2. 高层次综合与逻辑综合之间的差别和联系。
   3. 高层次综合的中间表示格式:控制流图、数据流图以及控制数据流图。
   4. 调度技术:
    ·ASAP调度算法
    ·ALAP调度算法
    ·列表调度算法
    ·调度中控制结构的处理
   5. 分配技术
    ·图着色算法中的冲突图和着色算法
    ·基于图着色算法的功能单元分配
    ·基于图着色算法的寄存器分配
    ·互连线路的分配
   6. 调度与分配之间的相互影响
   7. 高层次综合中的优化技术
    ·操作移入/ 移出条件分枝
    ·控制数据流图的结构变换
   8. 控制器综合

  【课前思考】
  ·你有过设计较大规模数字系统(例如一个8位或16位微处理器)的经历吗?
  ·如果对设计大规模数字集成电路感到困难的话,是否想通过使用软件工具达到目的?怎样开发这样的软件工具?
  ·本章的目标是研究开发EDA工具中高层次综合工具(High Level Synthesizer)的有关知识。

  【知识点】
   5.1 高层次综合的基本概念
   5.2高层次综合的内容
   5.2.1 编译与转换
   5.2.2 调度与分配
   5.2.3 控制器综合
   5.2.4 结果生成与反编译
   5.2.5 高层次综合中的设计空间搜索
   5.3 调度技术
   5.3.1 调度中的基本问题
   5.3.2 调度算法的分类
   5.3.3 ASAP调度算法与ALAP调度算法
   5.3.4 列表调度算法
   5.3.5 调度中控制结构的处理
   5.3.6 调度中的功能单元库
   5.4 分配技术
   5.4.1 分配中的基本问题
   5.4.2 分配算法
   5.5 高层次综合中的优化技术
   5.5.1 具有分枝结构时操作的移动
   5.5.2 控制数据流图的结构变换