目录 1
第1章 概论 1
1.1 电子设计自动化技术发展的回顾 1
1.2 数字系统自动设计的流程 3
1.3 从EDA的角度观察VLSI 5
1.3.1 VLSI的分类 6
1.3.2 芯片布图模式 7
1.3.3 可编程逻辑器件 10
1.4 EDA的主要领域 15
1.4.1 硬件描述语言 15
1.4.2 模拟验证 20
1.4.3 综合技术 21
1.4.4 数字系统形式验证 22
1.4.5 测试诊断 22
1.4.6 版图设计 23
1.4.7 数据库 24
1.5 集成电路快速发展对设计自动化的挑战与机遇 25
本章小结 27
习题 27
参考文献 28
第2章 硬件描述语言 30
2.1 硬件描述 30
2.1.1 电路模型的描述 30
2.1.2 硬件描述语言 33
2.2 VHDL的基本结构 35
2.2.1 VHDL模块模型 35
2.2.2 对象及其数据类型 37
2.2.3 表达式 47
2.2.4 子程序——过程与函数 52
2.2.5 程序包与设计库 56
2.3 VHDL层次化结构模型 60
2.3.1 实体声明 60
2.3.2 元件例化 62
2.3.3 配置指定 64
2.4 VHDL的顺序行为描述 70
2.4.1 进程 71
2.4.2 顺序信号赋值语句 74
2.4.3 变量赋值语句 75
2.4.4 条件控制语句 76
2.4.5 循环控制语句 77
2.4.6 顺序断言语句 79
2.4.7 顺序过程调用 80
2.4.8 返回语句 81
2.4.9 空语句 81
2.5 VHDL的并行行为描述 82
2.5.1 并行信号赋值语句 82
2.5.2 并行断言语句 85
2.5.4 决断信号 86
2.5.3 并行过程调用语句 86
2.6 VHDL行为模型的执行过程 89
2.6.1 事项处理与事件 89
2.6.2 信号赋值中的延迟处理 90
2.6.3 模拟时钟与模拟周期 94
2.6.4 实例 95
2.7 VHDL的复合并行语句 98
2.7.1 block语句 98
2.7.2 生成语句 100
2.8 大型电路设计举例 102
2.8.1 交通灯控制器 102
2.8.2 用有限自动机描述系统行为 103
2.9 Verilog语言简介 109
2.9.1 Verilog基本组成 109
2.9.2 Verilog结构描述 111
2.9.3 对象类型与常数 112
2.9.4 基本行为模型——进程 112
2.9.5 持续赋值与过程赋值 114
2.9.6 控制语句 115
2.9.7 任务与函数 116
2.9.8 顺序语句块和并行语句块 118
2.9.9 混合描述举例 120
本章小结 123
习题 124
参考文献 133
第3章 模拟验证 135
3.1 模拟验证概述 135
3.1.1 验证在设计过程中的作用 135
3.1.2 模拟系统的基本组成 137
3.2 逻辑模拟 139
3.2.1 逻辑模拟内部电路模型 139
3.2.2 事件驱动模拟算法 144
3.2.3 三值模拟与竞争冒险检测 154
3.3.1 VHDL模拟系统的组成 157
3.3 VHDL模拟 157
3.3.2 VHDL内部模型 160
3.3.3 VHDL模拟算法 164
3.4 硬件验证语言 169
3.4.1 硬件验证语言出现的背景 169
3.4.2 用硬件验证语言实现模拟验证的方法 170
3.4.3 Jeda语言的运行机制 173
3.4.4 Jeda语法特点 175
3.4.5 Jeda验证实例 179
本章小结 188
习题 189
参考文献 192
第4章 逻辑综合 193
4.1 逻辑综合的内容和方法 193
4.2 布尔函数的立方体表示法 197
4.3.1 基本概念 199
4.3 立方体运算 199
4.3.2 相交和包含判断的具体实现 207
4.3.3 锐积运算 209
4.3.4 星积运算 216
4.4 多输出函数与单输出函数的阵列变换 218
4.4.1 单输出函数的表示形式 219
4.4.2 阵列合并 220
4.4.3 阵列分离 220
4.5 单输出函数质立方体的计算 221
4.5.1 锐积求质立方体 221
4.5.2 迭代星积求质立方体 221
4.5.3 广义星积法求质立方体 223
4.6 单输出函数的自动综合 226
4.6.1 选拔法求最小化覆盖 227
4.6.2 收缩算法求无冗余覆盖 231
4.7.1 收缩算法求无冗余覆盖 232
4.7 多输出函数的自动综合 232
4.7.2 选拔法求最小化覆盖 235
4.8 组合逻辑电路的变换 237
4.8.1 多级逻辑电路转化为二级逻辑电路 237
4.8.2 二级逻辑电路转化为多级逻辑电路 240
4.9 时序逻辑电路的自动综合 244
4.9.1 时序电路的数学模型 245
4.9.2 完全规定时序机状态最小化 246
4.9.3 不完全规定时序机的状态化简 250
4.9.4 时序机的状态分配 255
本章小结 257
习题 258
参考文献 263
第5章 高层次综合 265
5.1 高层次综合概述 265
5.1.1 高层次综合的概念 265
5.1.2 高层次综合的优点 266
5.2.1 编译与转换 267
5.2 高层次综合的内容 267
5.2.2 调度与分配 272
5.2.3 控制器综合 273
5.2.4 结果生成与反编译 274
5.2.5 高层次综合中的设计空间搜索 276
5.3 调度技术 276
5.3.1 调度的基本问题 276
5.3.2 调度算法的分类 279
5.3.3 ASAP调度算法与ALAP调度算法 281
5.3.4 列表调度算法 285
5.3.5 调度中控制结构的处理 287
5.3.6 调度中的功能单元库 297
5.4 分配技术 299
5.4.1 分配的基本问题 299
5.4.2 分配算法 301
5.5.1 具有分支控制结构时操作的移动 309
5.5 高层次综合中的优化技术 309
5.5.2 控制数据流图的结构变换 311
本章小结 316
习题 317
参考文献 322
第6章 形式验证 325
6.1 形式验证概述 325
6.1.1 形式验证的意义 325
6.1.2 形式验证的基本方法 327
6.2 定理证明 330
6.2.1 形式逻辑 330
6.2.2 高阶逻辑定理证明系统HOL 334
6.2.3 用HOL验证硬件电路 338
6.3 模型检验 340
6.3.1 模型检验概述 340
6.3.2 系统建模:Kripke结构 342
6.3.3 性质表示:时态逻辑 344
6.3.4 显式模型检验 348
6.4 符号模型检验 352
6.4.1 时态逻辑的固定点特性 353
6.4.2 布尔函数的表示方法—一二叉判别图 356
6.4.3 用BDD隐式表示有限状态机 360
6.4.4 CTL符号模型检验 363
6.5 定界模型检验 365
6.5.1 可满足性问题 365
6.5.2 时态逻辑的定界语义 368
6.5.3 定界模型检验问题到SAT问题的转化 369
6.6 组合电路的等价性检验 372
6.7 时序电路的等价性检验 375
6.7.1 基于显式状态遍历的等价性检验 376
6.7.2 基于BDD隐式状态遍历的等价性检验 377
本章小结 379
习题 381
参考文献 384
第7章 测试与可测性设计 386
7.1 测试的概念 386
7.1.1 测试与故障诊断 386
7.1.2 故障模型 387
7.1.3 测试集 388
7.1.4 等价故障 390
7.2 路径敏化法测试码生成 394
7.2.1 单路径敏化法 395
7.2.2 D算法 397
7.2.3 路径敏化算法的改进 405
7.3 布尔差分法 409
7.4 多故障的测试码生成 415
7.4.1 多故障模型的D算法 415
7.4.2 高阶布尔差分法 416
7.5 时序电路的测试码生成 419
7.5.1 时序电路的迭代展开 419
7.5.2 扩展D算法 421
7.6.1 并行故障模拟 424
7.6 故障模拟 424
7.6.2 演绎故障模拟 425
7.6.3 同时故障模拟 427
7.7 可测性设计 428
7.7.1 可测性分析 428
7.7.2 设置观察点和控制点 434
7.7.3 组合电路的可测性电路结构 435
7.7.4 扫描方式电路设计 438
7.7.5 内建自测试设计 440
本章小结 442
习题 443
参考文献 446
8.1 深亚微米工艺对集成电路设计的影响 448
8.2 综合与布图结合 448
第8章 面向深亚微米工艺的EDA技术 448
8.2.1 布图过程中减小时延的措施 449
8.2.2 综合过程中减小时延的措施 450
8.2.3 布局后再局部逻辑重构的综合系统 450
8.2.4 可替换线算法 451
8.2.5 基于图匹配的等价逻辑块替换算法 455
8.3 面向SOC的设计技术 458
8.3.1 系统描述 459
8.3.2 软硬件划分 461
8.3.3 软硬件协同设计与验证 463
8.3.4 基于平台的软硬件协同设计与验证 464
本章小结 466
习题 466
参考文献 467
第9章 用EDA工具设计集成电路 468
9.1 MAX+plusⅡ的使用方法 469
9.1.1 安装MAX+plusⅡ 469
9.1.2 设计流程 471
9.1.3 设计的原理图描述 473
9.1.4 设计的VHDL描述 478
9.1.5 编译 482
9.1.6 模拟 485
9.1.7 时序分析器 488
9.1.8 对目标器件编程 489
9.1.9 引脚分配 490
9.1.10 报告文件 496
9.2 设计实例和设计技巧 497
9.2.1 VHDL可综合子集 497
9.2.2 运算符重载 498
9.2.3 寄存器的行为描述 500
9.2.4 组合逻辑与时序逻辑 502
9.2.5 有限状态机的状态编码 504
9.2.6 交通灯控制器 505
习题 510
本章小结 510
参考文献 526
附录A VHDL预定义环境 527
A.1 VHDL保留字 527
A.2 属性 528
A.2.1 类型和子类型的属性 528
A.2.2 数组的属性 530
A.2.4 其值与信号有关的属性 532
A.2.3 其值为信号的属性 532
A.2.5 其值与实体有关的属性 534
A.3 程序包 536
A.3.1 标准程序包STANDARD 536
A.3.2 文本输入输出程序包TEXTIO 544
A.3.3 IEEE多值逻辑系统标准包std_logic_1164 546
A.3.4 std logic_unsigned 549
A.3.5 std_logic_signed 551
附录B 英汉名词对照表 553