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


  【学习指南】
   预备知识:
    1. 数字逻辑及数字集成电路。参考书:《数字逻辑及数字集成电路》,王尔乾、巴林凤著,清华大学出版社,1999。
    2. 高级程序设计语言(C或Pascal)。
   在《数字逻辑及数字集成电路》一书中介绍如何手工设计数字集成电路,现在研究如何让软件工具代替手工完成同样的任务,因此更注意定义的抽象化和形式化,要适应这一转变。如果对抽象的定义不理解,自己可以设定一些具体例子和手工方法加以对比,加深理解。
   通过手工做习题加深理解。
   用高级程序设计语言(C或Pascal)编写一段程序实现书中算法,就会有更深入的理解。编程的工作量比较大,可从本章习题中选择若干作为练习。实践出真知,如果没有编程的实践,就很难理解算法的内涵及判断算法的优劣。所以最好的学习方法是编写一段程序实现书中的算法,输入适当的数据,观察输出结果是否和预期结果一致。不过编程的工作量比较大,根据个人情况适当选作一些题目。通过编程对算法有了深入理解之后,还有可能改进原来的算法。

  【难重点】
   布尔函数的立方体表示:    (1)新概念 (2)抽象的定义
   立方体运算:         (1)新概念 (2)抽象的定义
   求最小化覆盖的算法:      (1)抽象 (2)高度精练
   算法指导编程,高度精练的算法才能编写出好程序,所以抽象和精练是算法描述的特点。编写一段程序实现书中的算法,输入适当的数据,观察输出结果是否和预期结果一致,能加深对算法的理解。
   有限状态机的状态最小化

  【课前思考】
  你有过设计小规模逻辑电路(例如4比特二进制计数器)的经历吗?
  你有过设计规模稍大一点的逻辑电路(例如 16比特超前进位二进制数加法器)的经历吗?
  你能在一个星期之内设计一个8位微处理器吗?要求该设计经过检验正确无误。
  如果对设计大规模数字集成电路感到困难的话,是否想通过使用软件工具达到目的?怎样开发这样的软件工具?
   上述软件工具的英文名字是:
    EDA tools(Electronic Design Automation tools)或
    CAD tools (Computer Aided Design tools)
  本章的目标是研究开发EDA工具中逻辑综合器(Synthesizer)的有关知识。

  【知识点】
   逻辑综合的基本概念。
   布尔函数的立方体表示法及立方体的各种运算。
   单输出(以及多输出)函数质立方体的计算。
   单输出函数的综合(求最小化覆盖)。
   多输出函数的综合。
   时序电路的逻辑综合。