书籍作者:高亚军 | ISBN:9787121373527 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2015 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
全书共七章,力图帮助读者了解Vivado 2018版本的新特性,同时理解并掌握UltraFast设计方法学。UltraFast方法学是实践经验的总结,涉及板级规划、设计流程、代码风格、时序约束、时序收敛等方面。本书重点围绕后三个方面进行阐述。此外,针对被越来越广泛使用的SSI器件,本书也介绍了相应的设计指南,例如,如何在早期进行设计规划、如何对跨die信号进行处理、如何使用LAGUNA寄存器、如何对基于SSI器件的设计进行分析等。除此之外,作者也根据实践经验总结了一些常用的技巧,尽可能地帮助读者提高工作效率。
Xilinx战略应用高级工程师,拥有多年利用Xilinx FPGA实现数字信号处理算法的经验,对Xilinx FPGA的架构、开发工具Vivado和设计理念有深入理解。2012年发布网络视频课程《Vivado入门与提高》、2015年出版《基于FPGA的数字信号处理(第2版)》一书,均获得网友和读者的广泛认可和好评。
Vivado自2012年面世至今已有7个年头了。随着不断地升级,其功能越来越强大,操作界面越来越友好。目前(截至2019年3月1日),Vivado的最新版本为2018.3,即本书讲述的版本。
本书力图帮助读者解决的第一个问题是深入了解新版本的特性。Vivado的每次版本升级,都会带来一些功能上的变化,有些是细微的,有些是显著的。例如,Vivado 2018.3版本中菜单栏的字体与之前的版本不同,所带来的好处是显示更清晰,去除了因字体不适带来的模糊感;从Vivado 2018.1版本开始,增加了模块化综合技术,可进一步改善综合质量;从Vivado 2017.1版本开始,在place_design命令中增加了选项?fanout_opt,使得Vivado在布局阶段就可对高扇出网线进行优化,而在Vivado 2018.2版本中,该选项已被替换为?no_fanout_opt,意味着在布局阶段会默认对高扇出网线进行优化,如果不期望进行此类优化,则可添加选项?no_fanout_opt进行设置;在Vivado 2018.3版本中,route_design中的选项?directive增加了一个新的值AggressiveExplore,使得工具在布线阶段还可进行物理优化,并且实现了在布局中、布局后和布线中都可进行物理优化,对设计整体性能的改善和提升将大有裨益。
本书力图帮助读者解决的第二个问题是深入了解UltraFast设计方法学。UltraFast设计方法学并不是一个新概念,而是伴随着Vivado一起面世的。随着Vivado的升级,该方法学也在不断完善,内容愈加丰富。这在UG949中有着明显的体现。例如,针对SSI器件,UltraFast设计方法学指出了如何进行早期设计规划,以便达到资源在每个SLR中比较均衡的配置;如何对跨die路径进行处理,以避免因跨die路径过多导致布线拥塞或跨die路径时序违例;如何确保跨die路径使用LAGUNA寄存器等。理解并应用这些新的方法可加速设计收敛。
虽然在Vivado的基础知识掌握方面,很难通过一两本书就让读者达到从入门到精通的效果,但一本好书应给读者留有足够多的思考空间,而不是像快餐一般,吃过之后没有任何余味,希望本书能够对读者有所帮助。动手实践是不可或缺的环节,若读者可结合书中案例亲自操作,相信一定会对所讲内容有更深入的理解,或许会有意想不到的收获。
需要说明的是,对于综合阶段用到的综合属性(Synthesis Attribute),以及实现阶段用到的约束属性(set_property命令包含的属性),Vivado不区分大小写。
如果您在阅读过程中发现任何错误或有任何建议,请发送邮件至LaurenGao @126.com。更多Vivado的相关内容,可通过关注微信公众号“Lauren的FPGA”获取。
高亚军
2019年3月
第1章 综合阶段 1
1.1 综合设置分析 1
1.1.1 ?flatten_hierarchy 1
1.1.2 ?control_set_opt_threshold 2
1.1.3 ?no_lc 4
1.1.4 ?keep_equivalent_registers 4
1.1.5 ?resource_sharing 6
1.1.6 ?gated_clock_conversion 7
1.1.7 ?fanout_limit 9
1.1.8 ?shreg_min_size和?no_srlextract 10
1.1.9 ?fsm_extraction 13
1.2 综合属性分析 14
1.2.1 ASYNC_REG 14
1.2.2 MAX_FANOUT 16
1.2.3 SRL_STYLE和SHREG_EXTRACT 18
1.2.4 USE_DSP 21
1.2.5 RAM_STYLE和ROM_STYLE 23
1.2.6 EXTRACT_ENABLE和EXTRACT_RESET 24
1.2.7 MARK_DEBUG 26
1.3 模块化综合技术 27
1.3.1 模块化综合技术概述 27
1.3.2 模块化综合技术的应用场景 29
1.4 OOC综合方式 30
第2章 实现阶段 33
2.1 实现阶段的子步骤 33
2.2 关于逻辑优化 33
2.2.1 基本优化 33
2.2.2 优化MUX 34
2.2.3 优化LUT 34
2.2.4 优化移位寄存器 35
2.2.5 优化进位链 36
2.2.6 优化控制集 37
2.2.7 优化扇出 38
2.3 关于布局 38
2.4 关于物理优化 39
2.4.1 基本优化 39
2.4.2 交互式物理优化 39
2.5 关于布线 41
2.5.1 优先对关键路径布线 41
2.5.2 查看布线报告 42
2.6 关于增量实现 43
2.7 关于ECO 44
2.7.1 什么是ECO 44
2.7.2 ECO流程 45
2.7.3 ECO应用案例:替换ILA待测信号 46
第3章 高效设计 51
3.1 高效使用触发器 51
3.1.1 同步复位与异步复位 51
3.1.2 触发器的初始值 53
3.1.3 锁存器 54
3.2 高效使用LUT 55
3.2.1 LUT用作逻辑函数发生器 55
3.2.2 LUT用作移位寄存器 59
3.2.3 LUT用作分布式RAM 61
3.3 高效使用Block RAM 63
3.3.1 Block RAM的基本结构 63
3.3.2 Block RAM的性能与功耗 65
3.4 高效使用UltraRAM 67
3.4.1 UltraRAM的基本结构 67
3.4.2 UltraRAM的读写操作方式 70
3.4.3 UltraRAM的实例化方式 70
3.5 高效使用DSP48E2 73
3.5.1 DSP48E2的基本结构 73
3.5.2 DSP48E2的性能与功耗 74
3.6 高效使用MMCM 76
3.6.1 MMCM的基本功能 76
3.6.2 MMCM的功耗与输出时钟的抖动 78
3.7 高效设计异步跨时钟域电路 80
3.7.1 单bit异步跨时钟域电路 80
3.7.2 多bit异步跨时钟域电路 82
第4章 时序约束 83
4.1 管理约束 83
4.1.1 约束文件 83
4.1.2 4种时序路径 85
4.1.3 4个步骤完成时序约束 85
4.2 时钟周期约束 87
4.2.1 主时钟周期约束 87
4.2.2 生成时钟周期约束 89
4.2.3 对同一时钟源添加多个时钟周期约束 91
4.2.4 调整时钟特性约束 93
4.3 I/O延迟约束 93
4.4 时序例外路径约束 95
4.4.1 多周期路径约束 95
4.4.2 伪路径约束 99
4.4.3 最大/最小延迟约束 101
4.4.4 时序例外路径约束的指导原则 102
4.5 使用create_generated_clock 103
4.6 使用set_clock_groups 105
4.7 调试约束 108
4.7.1 了解约束的优先级 108
4.7.2 了解约束文件的属性和编译顺序 110
4.7.3 借助TCE调试约束 112
4.7.4 借助Tcl命令调试约束 113
4.8 案例分析 114
第5章 时序收敛 116
5.1 时序收敛的标准 116
5.1.1 检查约束 116
5.1.2 检查建立时间裕量 117
5.2 基线设计 117
5.3 分析时序违例 121
5.3.1 分析时序违例的可能原因 121
5.3.2 确定时序违例的根本原因 125
5.3.3 分析逻辑级数 128
5.3.4 分析数据路径延迟 128
5.3.5 分析时钟歪斜 129
5.4 解决时序违例 129
5.4.1 降低逻辑延迟 129
5.4.2 降低布线延迟 131
5.4.3 降低时钟歪斜 134
5.4.4 降低时钟不确定性 136
5.5 时序收敛技术 137
5.5.1 面向模块的综合技术 137
5.5.2 逻辑级数 138
5.5.3 控制集 138
5.5.4 高扇出网线 141
5.5.5 路径优先级 142
5.5.6 保持时间违例 143
5.5.7 实现策略 144
5.5.8 多次迭代 145
5.5.9 过约束 145
5.5.10 增量编译 146
5.5.11 手工布局 146
5.5.12 复用布局 147
第6章 SSI器件设计 148
6.1 SSI器件设计面临的挑战 148
6.2 SSI器件的基本结构 150
6.2.1 SLR架构 150
6.2.2 跨die资源 152
6.3 SSI器件的设计规划 154
6.3.1 数据流 154
6.3.2 设计层次 155
6.3.3 跨die路径 160
6.4 SSI器件的设计分析 163
6.4.1 资源分析 163
6.4.2 时序分析 165
第7章 应用技巧 168
7.1 界面操作 168
7.1.1 快捷键 168
7.1.2 Dashboard按钮 173
7.1.3 各类报告 175
7.1.4 Schematic视图 176
7.1.5 Device视图 179
7.2 工程管理 181
7.2.1 揭秘DCP 181
7.2.2 复制工程 183
7.2.3 复制IP 185
7.3 资源利用率报告分析 185
7.3.1 Block RAM的利用率 185
7.3.2 LUT和LUTRAM的区别 186
7.3.3 LUT的个数 187
7.3.4 report_utilization命令的功能 190
7.4 时序报告分析 192
7.4.1 生成时序报告 192
7.4.2 阅读时序报告 194
7.5 Tcl命令应用 197
7.5.1 report_high_fanout_nets 197
7.5.2 report_design_analysis 200
7.5.3 report_qor_suggestions 203
7.5.4 report_failfast 206
7.6 其他技巧 207
7.6.1 设置多线程 207
7.6.2 复用Block的位置信息 208
7.6.3 获取Package Delay 209
7.6.4 快速生成IBIS模型 210
7.6.5 使用MAX_FANOUT 211
后记 213