插图目录17
表格目录21
示例目录23
第1部分 VHDL代码编写
第1章 绪言3
1.1 传统设计方法--原理图输入3
1.2 硬件描述语言3
1.3 VHDL设计的结构4
1.4 VHDL设计内的元件实例化7
1.5 结构式、行为式与可综合VHDL设计10
1.5.1 结构式VHDL描述10
1.5.2 行为式VHDL描述12
1.5.3 RTL级代码14
1.6 在VHDL设计中使用库声明16
第2章 VHDL仿真与综合流程18
第3章 基本逻辑元件的可综合代码20
3.1 与逻辑20
3.2 或逻辑21
3.3 非逻辑22
3.4 与非逻辑23
3.5 或非逻辑24
3.6 三态缓冲器逻辑26
3.7 复杂逻辑门27
3.8 锁存器28
3.8.1 避免代码中出现锁存器29
3.9 触发器33
3.10 译码器34
3.11 编码器36
3.12 多路选择器37
3.13 优先级编码器39
3.14 存储器单元41
3.15 加法器42
3.16 元件推定44
第4章 信号与变量46
4.1 变量46
4.2 信号47
4.3 采用信号和变量的时机51
4.4 反馈信号的用法53
第5章 复杂示例的可综合代码56
5.1 移位器56
5.2 计数器66
5.3 存储器模块73
5.4 汽车行驶控制器80
第6章 设计可综合的流水式微控制器87
6.1 定义指令集87
6.2 定义体系结构88
6.3 定义流水线90
6.4 定义流水式微控制器的微结构91
6.4.1 预译码功能块93
6.4.2 译码功能块104
6.4.3 寄存器堆功能块112
6.4.4 执行功能块121
6.4.5 整个微控制器芯片131
第2部分 基于SYNOPSYS工具的逻辑综合
第7章 设计中的时序因素147
7.1 建立时间违规147
7.2 保持时间违规148
7.3 逻辑综合中的建立时间和保持时间因素148
7.4 改进微结构以消除建立时间违规149
7.4.1 通过逻辑复制生成独立路径150
7.4.2 在利用滞后到达信号作选择之前进行逻辑复制150
7.4.3 在触发器间进行逻辑均衡151
7.4.4 优先级译码与多路译码152
7.5 改进微结构以消除保持时间违规153
7.6 异步路径与无效路径153
7.7 多周期路径153
第8章 基于时序约束的VHDL综合155
8.1 Design Compiler简介155
8.2 使用Design Compiler进行综合156
8.3 性能改进159
8.3.1 采用-map_effort high选项编译159
8.3.2 将关键路径聚合成组并设定权重因子164
8.3.3 对设计对象进行逻辑展平170
8.3.4 表征子模块174
8.3.5 寄存器均衡175
8.3.6 采用FSM Compiler优化有限状态机181
8.3.7 对高级功能模块选择高速实现电路186
8.3.8 对重负载逻辑树进行均衡187
8.4 通过综合改进实现面积优化190
8.4.1 组合逻辑不单独作为功能块使用190
8.4.2 模块间不使用胶黏逻辑191
8.4.3 使用set_max_area属性192
8.5 使用Synopsys工具消除保持时间违规193
8.6 其他常用的综合命令193
8.7 自顶而下与自底而上编译224
第9章 实例化GTECH库单元227
第10章 DesignWare库229
10.1 建立自己的DesignWare库233
第11章 综合中的可测试性问题240
11.1 复用触发器扫描方式241
11.2 使用Synopsys的Test Compiler实现扫描插入243
第12章 FPGA综合250
第13章 综合与版图工序之间的联系260
13.1 前向标注260
13.2 连线负载模型261
13.3 版面规划262
13.4 版图工序之后的优化263
第14章 实现有效综合应遵循的设计指导原则264
附录A STD_LOGIC_1164库266
附录B 移位器综合结果302
附录C 计数器综合结果308
附录D 流水式微控制器综合结果312
附录E 第6章微控制器示例综合出的EDIF文件330
附录F 第6章微控制器示例综合出的SDF文件359
词汇表392
参考文献394