第1章 概论 1
1.1 电子系统设计自动化技术发展的回顾 1
1.2 从EDA的角度来观察VLSI 2
1.2.1 VLSI的分类 2
1.2.2 芯片布图 4
1.2.3 可编程逻辑器件 6
1.3 数字系统自动设计的流程 10
1.4 EDA的主要领域 12
1.4.1 硬件描述语言 12
1.4.2 模拟验证 15
1.4.3 综合技术 17
1.4.4 测试诊断 18
1.4.5 逻辑设计形式验证 18
1.4.6 工程实现 19
1.5 EDA系统的构成 20
参考文献 21
第2章 硬件描述语言VHDL 22
2.1 硬件描述语言VHDL 22
2.2 VHDL的基础知识 23
2.2.1 设计实体和结构体的概念 23
2.2.2 面向模拟器的某些特性 25
2.2.3 结构和行为 26
2.2.4 数据类型与对象 29
2.2.5 各分立部分之间的联结 32
2.2.6 VHDL的主要构件 33
2.2.7 设计库 39
2.3.1 文字 41
2.3 VHDL的数据类型 41
2.3.2 标量类型 42
2.3.3 复合类型 43
2.3.4 子类型 47
2.3.5 属性 47
2.3.6 预定义算符 49
2.4 VHDL行为描述 52
2.4.1 进程语句 52
2.4.2 行为模型的顺序性 53
2.4.3 行为模型的并行(并发)性 62
2.5 VHDL的结构描述 71
2.5.1 结构描述的基本特征 71
2.5.2 规则结构 79
2.5.3 配置指定 82
2.5.4 默认值与无连接端口 84
2.6 VHDL对大规模设计的支持 86
2.6.1 设计库的概念 86
2.6.2 VHDL中名字的可见性 86
2.6.3 使用library语句访问其它库 89
2.6.4 块语句 90
2.6.5 设计中的数据共享 90
2.6.6 结构描述和行为描述的混合使用 93
2.7 VHDL的一些高级特性 94
2.7.1 重载 94
2.7.2 用户定义的属性 96
2.7.3 与信号相关的属性 97
2.7.4 被保护的信号赋值语句 100
2.7.5 断开指定 101
2.7.6 空事项处理 103
2.8 设计实例 105
2.8.1 交通灯控制器 105
2.8.2 创建技术说明书 106
参考文献 113
第3章 EDA系统的框架结构 115
3.1 概述 115
3.1.1 EDA系统框架结构的提出 115
3.1.2 EDA系统框架结构的概念 117
3.1.3 EDA系统框架结构的构成模型 118
3.1.4 EDA系统框架结构的特点 118
3.2.1 工程数据库及其管理系统 119
3.2 数据模型与数据管理 119
3.2.2 EDA系统中的数据模型 121
3.2.3 EDA系统中数据库的层次组织 123
3.3 用户界面管理 125
3.3.1 用户界面管理系统概述 125
3.3.2 UIMS的两种界面 127
3.3.3 用户界面描述语言 130
3.3.4 小结 133
参考文献 133
第4章 模拟 135
4.1 模拟的目的和方法 135
4.1.1 设计自动化与模拟验证 135
4.1.2 模拟级别 136
4.2 逻辑模拟模型 137
4.1.3 模拟系统的基本组成 137
4.2.1 电路网表 138
4.2.2 信号状态值 139
4.2.3 延迟模型 144
4.2.4 元件模型 146
4.3 逻辑模拟算法 149
4.3.1 模拟过程 149
4.3.2 事件表驱动模拟算法 150
4.3.3 三值模拟算法与竞争冒险检测 157
4.4 开关级模拟 160
4.4.1 开关级电路模型 160
4.4.2 计算节点信号状态的强度比较算法 161
4.4.3 等效阻容网络算法 165
4.4.4 信号延迟的计算 167
4.4.5 门、功能块级和开关级的混合模拟处理 171
4.5 高层次模拟 171
4.5.1 VHDL模拟系统的组成 172
4.5.2 VHDL内部模型的确立 174
4.5.3 VHDL模拟算法 181
4.6 交互式模拟与调试 186
4.6.1 高级图形调试器及DEBUG功能 186
4.6.2 适应DEBUG功能的VHDL模型及算法 190
4.6.3 交互式波形显示编辑工具 192
参考文献 195
第5章 逻辑综合 197
5.1 逻辑综合的内容和方法 197
5.2 布尔函数的立方体表示法 200
5.3 立方体运算 201
5.3.1 基本概念 202
5.3.2 相交和包含判断的具体实现 208
5.3.3 锐积运算 210
5.3.4 星积运算 216
5.4 多输出函数与单输出函数的阵列变换 218
5.4.1 单输出函数的表示形式 219
5.4.2 阵列合并 219
5.4.3 阵列分离 220
5.5 单输出函数质立方体的计算 220
5.5.1 锐积求质立方体 220
5.5.2 迭代星积求质立方体 221
5.5.3 广义星积求质立方体 222
5.6 单输出函数的自动综合 225
5.6.1 选拔法求最小化覆盖 226
5.6.2 收缩算法求无冗余覆盖 229
5.7 多输出函数的自动综合 230
5.7.1 收缩算法求无冗余覆盖 230
5.7.2 选拔法求最小化覆盖 232
5.7.3 判别质蕴涵项的E算法 234
5.8 组合逻辑电路的变换 236
5.8.1 多级逻辑电路转化为二级逻辑电路 236
5.8.2 二级逻辑电路转化为多级逻辑电路 238
5.9 时序逻辑电路的自动综合 245
5.9.1 时序机的数学模型 246
5.9.2 完全规定时序机的状态最小化 247
5.9.3 不完全规定时序机的状态化简 254
5.9.4 时序机的状态分配 259
参考文献 260
第6章 高层次综合 262
6.1 高层次综合概述 262
6.1.1 高层次综合的概念 262
6.1.2 高层次综合的优点 263
6.2 高层次综合的内容 263
6.2.1 编译与转换 264
6.2.2 调度与分配 268
6.2.3 控制器综合 269
6.2.4 结果生成与反编译 269
6.2.5 高层次综合中的设计空间搜索 271
6.3 调度技术 272
6.3.1 调度问题 272
6.3.2 调度算法的分类 274
6.3.3 ASAP调度算法与ALAP调度算法 275
6.3.4 列表调度算法 278
6.3.5 调度中控制结构的处理 281
6.3.6 调度中的功能单元库 288
6.4 分配技术 289
6.4.1 分配问题 289
6.4.2 分配算法 291
6.5 高层次综合中的优化技术 295
6.5.1 具有分枝控制结构时操作的移动 296
6.5.2 控制数据流图的结构变换 297
6.6 小结 300
参考文献 301
7.1.1 测试与故障诊断 303
第7章 故障诊断 303
7.1 故障诊断与测试集 303
7.1.2 故障模型 304
7.1.3 测试向量与测试集 304
7.1.4 故障的合并与测试集的压缩 306
7.1.5 测试码的生成问题 310
7.2 敏化路径法求组合电路的测试码 311
7.2.1 单路径敏化法 311
7.2.2 D算法 313
7.3 布尔差分法 320
7.4 多故障的测试码生成 325
7.4.1 多故障模型的D算法 325
7.4.2 高阶布尔差分法 326
7.5.1 同步时序电路的迭代展开 328
7.5 时序电路的测试码生成 328
7.5.2 扩展D算法 329
7.5.3 异步时序电路的迭代展开 332
7.6 故障模拟 333
7.6.1 并行故障模拟 334
7.6.2 演绎故障模拟 335
7.6.3 同时故障模拟 336
7.7 可测性设计 337
7.7.1 可测性分析 337
7.7.2 设置观察点和控制点 341
7.7.3 组合电路的可测性电路结构 342
7.7.4 扫描方式电路设计 344
7.7.5 内建自测试设计 346
参考文献 350
8.1 形式验证的目的和基本方法 351
8.1.1 形式验证的基本概念 351
第8章 形式验证 351
8.1.2 形式验证的基本方法 352
8.2 基于符号处理的形式推理方法 354
8.2.1 电路的描述 354
8.2.2 公理系 355
8.2.3 基于FOL定理证明系统的验证过程 357
8.3 基于时序逻辑的验证 366
8.3.1 时序逻辑简介 366
8.3.2 用时序逻辑描述电路的时序关系 369
8.3.3 利用状态迁移表的验证方法 371
8.4.1 归纳断言法简介 376
8.4 归纳断言法在逻辑验证中的应用 376
8.4.2 一个寄存器传输语言及其公理定义 378
8.4.3 验证实例 381
8.5 提取行为表达式的验证方法 383
8.5.1 验证用描述语言ISPB简介 383
8.5.2 事件、历史序列和行为 384
8.5.3 行为表达式 385
8.5.4 由ISPB程序求行为表达式 387
8.5.5 用行为表达式进行验证 389
参考文献 390
附录A VHDL预定义环境 392
附录B IEEE多值逻辑系统标准包 400
附录C 英汉名词对照表 404