标题：计算机设计自动化
计算机设计自动化的定义
计算机设计自动化,就是使用计算机来帮助设计和研制计算机,使设计工作在计算机帮助下,达到自动化或半自动化,从而减轻人的劳动和提高设计质量。使用计算机来帮助设计,亦常被称为计算机辅助设计。按照问题的性质,有些设计工作是可以由人工预先安排好,编出程序由计算机去自动完成的,因而称为设计自动化
功能设计自动化
系统设计和逻辑设计通称功能设计。硬件描述语言是实现功能设计自动化的有效工具。辅助系统设计的内容主要是系统级模拟。逻辑设计自动化所涉及的内容较多，有自动逻辑综合、逻辑模拟、微程序设计自动化等。
硬件描述语言
一种描述硬件设计对象的形式语言。用这种语言能较方便地描述设计对象的行为、组成、组织和有关的控制特性，建立设计对象的模型。在计算机上，以这种模型作为源程序，通过专门的翻译程序可以为辅助设计的功能程序提供便于处理的模型内部表示。 
在不同的设计对象和目标下，已发展出许多不同的硬件描述语言。按对象分类，有系统描述语言、逻辑描述语言、固件(微程序)描述语言等。按语言特性分类大致有系统级、寄存器传输级、门级、电路级等描述语言。各级语言具有各自的侧重点。例如，寄存器传输语言可以方便地用于描述寄存器、开关、存储器、译码器等构件之间的逻辑控制关系和信息传输关系，某些寄存器传输语言对于系统行为的描述或以逻辑门为构件的硬件描述也有一定能力。这类语言中典型的有DDL、CDL、AHPL等语言。结构式描述语言能分层逐级描述计算机，随着设计进程的推进而使硬件描述不断深化，适用范围也较大，但尚处于研究和局部应用阶段。
自动逻辑综合
应用自动逻辑综合算法对需要综合的逻辑函数进行逻辑最小化处理，并最终确定一个符合逻辑设计规范的、由可用的标准组件构成的网络。 
早期使用较多的自动逻辑综合算法是以处理真值表为基础的奎因-麦克拉斯基法。这种算法比较简单,但占主存储器单元太多，执行时间过长，一般只适用于小型网络的逻辑综合。广泛采用的方法是用多维体表示逻辑函数，并使用一组算符对多维体进行代数拓扑运算，完成逻辑函数的综合。现代已出现以数据库为核心的智能化的自动逻辑综合系统。
模拟
用硬件描述语言或通用程序设计语言建立设计对象的模型，并在计算机上对模型进行试验，获取所需的设计数据。 
象硬件描述语言一样，模拟也可以从宏观到微观或从粗到精划分成许多级。系统级模拟主要用于评估计算机（大至计算机网，小到中央处理器）的宏观特性，以帮助人们对系统设计的性能进行评价和分析，包括对系统设计方案的选择和改进。寄存器级模拟主要用以考察数据在寄存器中的传输情况，常用于检查操作表的正确性。门级模拟以逻辑门（不限单门）为模型的基本构件，用以考察信号在逻辑门或组件之间的传输情况，常用于逻辑设计的正确性验证。大规模集成电路的出现，使许多组件内部的逻辑关系成为无从知悉的“黑箱”，门级模拟于是发展成以组件功能为构件的功能块级模拟。电路级模拟以二极管、晶体管和电阻等为构件建立模型，用于逻辑电路瞬态特性的分析。按设计阶段分类，对逻辑功能使用的模拟属于逻辑模拟。此外，故障模拟用以获取输入模式的故障响应，生成测试文件。 
模拟技术的关键是模拟算法，按程序方式分，有编译法和表驱动法（解释法）；按控制方式分，有下一事件法、编排级数法和时间映射法等；按状态值分，有二值、三值、八值等算法。
微程序设计自动化
微程序通常存放在只读存储器中，一要保证绝对正确，二要尽量压缩字长和容量，因此微程序设计的自动化显得十分迫切。主要研究课题有微程序（固件）描述语言、微程序自动生长技术、优化技术和正确性验证技术。 
早期使用汇编语言描述微程序，后广泛使用 CDL等寄存器传输语言，并已出现适合固件设计的专用高级语言，同时还产生了各种编译技术和微程序逻辑综合技术，自动生成微程序代码。微程序的优化问题有：优化微码，尽量压缩微指令的字长和字数；微码变换，使通常稀疏的微码阵列变换成稠密的微码阵列。微程序模拟技术已大量用于微程序的正确性验证。 
组装设计自动化 　组装设计又称工程化设计或实体设计，目的是把设计好的逻辑线路组合成组装单元，并交付工厂生产。组装方式因制造技术而异，一般都由机柜（底板）、印制板插件、集成电路组件和基本单元电路等若干组装单元逐级构成。为减少设计的复杂性，组装设计过程常分成逻辑划分、布局、布线等若干阶段。
逻辑划分和门分配
根据组装的限制条件和既定的目标，把整个逻辑线路逐级划分成多个组装单元或超大规模集成电路芯片，这就是逻辑划分。经典的划分方法几乎完全以减少连线为目标，后又出现一些找近似最优解的逐次试探法。 
门分配或组件分配是根据给定的标准组件库，选择总代价最小的标准组件的集合，全部实现已划分的组装单元。这一分配选择问题在形式上可化为整数线性规划问题，实际上也是用试探法求近似最优解。
布局
单元电路在大规模集成电路基片上的布置,组件在插件板上的布置和插件在机柜底板上的布置，均属于布局问题。布局可抽象成数学问题,例如在N≤M的条件下把N个元件分配到M个地点,使目标函数最优。对于插件板上的组件布局，较多的算法均以满足布线约束的总连线长度作为目标函数。布局过程通常是在人工确定的初始布局的基础上，按一定的算法交换元件位置，直到连线总长度减少到某一近似最优值。常用的布局算法是构造型算法和迭代改进算法。为提高布局的实际效果，广泛采用图形显示人-机交互布局。
布线
布局确定以后，便是按照元件的接线网表在板上布出连接各元件的导线的具体路径，并满足给定的限制条件和布线规则，这就是布线。布线过程可以分为分线、分层、定顺序和走线四步。 
①　分线：把接线网表中要求连接的几个结点变成n-1对“点对”之间的接线表。减少总连线长度是分线的关键问题。常用的解法有推销员路径、最小生成树、斯坦纳树等方法。 
②　分层：把接线表中连接的“点对”合理地分配到不同走线层上去，使得各层上的连线互不冲突或冲突最小。分层的主要方法有按交叉点数分层和干涉度分层两类。 
③　定顺序：按照分层结果确定各层上的连接“点对”的走线顺序。定顺序算法中采用较多的是按长度定先后顺序，也有兼顾线长和走线密度的投影密度法等。 
④　走线：按照各层的走线顺序，在各自的走线平面上确定具体的走线路径，最后形成连线表、布线图等。走线算法很多，使用较广的有迷路法、线段探索法和通道法等。 
设计自动化系统 　综合的计算机设计自动化系统大多由大型通用计算机和扩展的商品化交互图形系统构成，也有采用功能分布式的计算机网构成的。
组成
从功能上看，一个实用的设计自动化系统主要由四大部分组成：①输入部分对提供的各种形式的输入信息(图形、语言描述等)进行解释和转换；②输出部分产生设计人员和生产制造所需的各种文件和数据；③功能处理部分包含辅助完成各种设计和设计检验的多种功能处理程序；④设计自动化数据库是核心部分，它是各功能程序进行数据交流所必需的。数据库按所存的信息性质分为两种：参考信息数据库存储设计的基准数据供程序公用，又称程序公用数据库；设计信息数据库存放与设计过程有关的输入、输出和必要的中间信息。
构造
在综合的设计自动化系统中，各子系统按一定的方法构成。构成方法大致有三类，分别对应三种设计自动化系统。 
①　顺序结构：这种设计自动化系统的各子系统象流水线那样顺序地处理设计数据。每个子系统独立地处理由前面子系统送来的数据，并输出数据供下一个子系统使用。 
②　并行结构：这种系统的特点是许多子系统共用一个公用数据库。数据库沟通各子程序间共同数据的通信，但这会增加建立数据结构和进行数据管理的复杂性。 
③　层次结构：为适应越来越复杂的设计需要，又出现以分层数据库为特征的第三种设计自动化系统。分层数据库采用三维数据结构，可以向应用程序提供任一层次的数据，且数据量和存储量可以得到进一步压缩。
参考书目
M.A.巴留耳著，中国科学院计算技术研究所设计自动化组译:《数字计算机设计自动化的理论和方法》,科学出版社,北京,1978。(M.A.Breuer, Design Automation of Digital System,Theory and Techniques,Prentice Hall,New Jersey,1972.)