第1章FPGA设计成功的最佳实践 1
1.1引言 1
第2章 项目管理 4
2.1项目管理的作用 4
2.1.1项目管理阶段 4
2.1.2项目持续时间的估算 4
2.1.3计划 5
第3章 设计说明书 7
3.1设计说明书:沟通是成功的关键 7
3.1.1高级功能说明书 7
3.1.2功能设计说明书 8
第4章 资源调查 12
4.1引言 12
4.2工程资源 12
4.3第三方IP 13
4.4 FPGA器件的选择 13
4.4.1FPGA器件的特殊功能 14
4.4.2 FPGA的规模选型(密度) 14
4.4.3速度需求 16
4.4.4引脚 16
4.4.5功耗 16
4.4.6 IP的可用性 17
4.4.7器件的可用性 17
4.4.8小结 17
第5章 设计环境 18
5.1引言 18
5.2脚本化的环境 18
5.3与版本控制软件的交互 19
5.4问题跟踪系统的使用 20
5.5回归测试系统 21
5.6何时升级FPGA设计工具的版本 21
5.7 FPGA设计环境中常用的工具 22
第6章 电路板设计 24
6.1 FPGA器件给电路板设计带来的挑战 24
6.2工程师的角色和职责 25
6.2.1 FPGA工程师 25
6.2.2 PCB设计工程师 26
6.2.3信号完整性设计工程师 26
6.3功耗和散热问题 28
6.3.1滤除电源噪声 28
6.3.2电源分配 28
6.4信号的完整性 29
6.4.1信号完整性问题的类型 29
6.4.2电磁干扰 30
6.5 FPGA引脚分配的设计流程 31
6.5.1流程1:由FPGA设计师主动 31
6.5.2流程2:由电路板设计师主动 33
6.5.3 FPGA设计师和电路板设计师如何进行引脚改动的沟通 34
6.6电路板设计的审查要点 34
第7章 功耗和热分析 35
7.1引言 35
7.2功耗的基本要素 35
7.2.1静态功耗 36
7.2.2动态功耗 36
7.2.3输入/输出功耗 36
7.2.4浪涌电流 36
7.2.5配置功耗 36
7.3准确估计功耗的关键因素 37
7.3.1 FPGA电路的准确功耗模型 37
7.3.2每个信号的准确数据切换率 37
7.3.3准确的运行条件 38
7.3.4资源利用 39
7.4设计周期早期的功耗估计(电源规划) 39
7.5基于仿真的功耗估计(设计的功耗验证) 41
7.5.1局部仿真 43
7.6功耗估计的最佳实践方法 43
第8章RTL代码设计 45
8.1介绍 45
8.2常用术语 45
8.3工程师对有ASIC设计背景的建议 47
8.4推荐的FPGA设计规范 48
8.4.1同步与异步 48
8.4.2全局信号 48
8.4.3专用硬件组件 49
8.4.4低层次设计原语的使用 50
8.4.5亚稳态的管理 51
8.5编写高效的HDL代码 51
8.5.1什么是最好的硬件设计语言 52
8.5.2良好的设计习惯 53
8.5.3可综合的HDL 58
8.6 RTL设计的分析 67
8.6.1综合报告 68
8.6.2综合警告 68
8.6.3电路方块图的浏览 69
8.7 RTL设计要点总结 70
第9章 IP及设计重用 72
9.1引言 72
9.2 IP重用的需求 72
9.2.1 IP重用的好处 72
9.2.2开发可重用设计方法学面临的困难 73
9.3设计还是购买 74
9.4构建可重用的IP 75
9.4.1设计说明书 75
9.4.2实施方法 76
9.4.3标准接口的使用 77
9.5 IP组件库软件包 78
9.5.1 IP说明书 79
9.5.2用户接口 79
9.5.3与系统集成工具的兼容性 81
9.5.4 IP的安全性 81
9.6 IP重用的检查清单 82
第10章 硬件到软件的接口 83
10.1软件接口 83
10.2寄存器地址映射表的定义 83
10.3寄存器地址映射表的使用 83
10.3.1 IP的选择 83
10.3.2软件工程师的接口 84
10.3.3 RTL工程师的接口 84
10.3.4接口的验证 85
10.3.5文档 85
10.4小结 85
第11章 功能验证 86
11.1简介 86
11.2功能验证面临的挑战 86
11.3有关验证的术语 87
11.4 RTL仿真和门级仿真的对比 88
11.5验证方法学 88
11.6克服复杂性 89
11.6.1设计和测试的模块化 89
11.6.2规划预期操作 89
11.6.3应对意外状态的计划 89
11.7功能覆盖 90
11.7.1定向测试 90
11.7.2随机动态仿真 91
11.7.3受约束的随机测试 91
11.7.4 SystemVerilog用于设计和验证 91
11.7.5通用测试平台方法 92
11.7.6自验证测试平台 93
11.7.7形式化等价性验证 94
11.8代码覆盖度 95
11.9质量评价(QA)测试 95
11.9.1功能回归测试 95
11.9.2可重用IP的图形界面(GUI)测试 95
11.10硬件互操作性测试 96
11.11软/硬件协同验证 96
11.11.1加快投片的准备 96
11.12功能验证清单 97
第12章 时序收敛 98
12.1时序收敛的难点 98
12.2时序分配和时序分析的重要性 99
12.2.1时序分析的背景 99
12.2.2时序分析的基础 99
12.3实现时序收敛目标的方法学 105
12.3.1指定FPGA器件系列 105
12.3.2设计规划 106
12.3.3早期时序估计 110
12.3.4 CAD工具设置 111
12.4常见的时序收敛问题 118
12.4.1缺失时序约束 118
12.4.2时序约束发生冲突 118
12.4.3高扇出寄存器 118
12.4.4只差一点就能满足时序 119
12.4.5不宜过早设置位置约束 119
12.4.6冗长的编译时间 119
12.5设计规划、实现、优化和时序收敛清单 120
第13章 系统在线调试 121
13.1系统在线调试的难点 121
13.2规划 121
13.3调试方法 122
13.3.1利用引脚调试 122
13.3.2片内逻辑分析仪 123
13.3.3调试逻辑的使用 126
13.3.4外部逻辑分析仪 126
13.3.5编辑存储器的内容 127
13.3.6利用软核处理器进行调试 127
13.4使用案例 128
13.4.1上电调试 128
13.4.2收发接口调试 128
13.4.3系统性能报告 129
13.4.4软核处理器调试 129
13.4.5器件的编程问题 130
13.5系统在线调试核对清单 131
第14章 设计的签收 132
14.1设计签收过程 132
14.2设计签收之后 132
索引 133