第1章 综合阶段\t1
1.1 综合设置分析\t1
1.1.1 ?flatten_hierarchy\t1
1.1.2 ?control_set_opt_threshold\t2
1.1.3 ?no_lc\t4
1.1.4 ?keep_equivalent_registers\t4
1.1.5 ?resource_sharing\t6
1.1.6 ?gated_clock_conversion\t7
1.1.7 ?fanout_limit\t9
1.1.8 ?shreg_min_size和?no_srlextract\t10
1.1.9 ?fsm_extraction\t13
1.2 综合属性分析\t14
1.2.1 ASYNC_REG\t14
1.2.2 MAX_FANOUT\t16
1.2.3 SRL_STYLE和SHREG_EXTRACT\t18
1.2.4 USE_DSP\t21
1.2.5 RAM_STYLE和ROM_STYLE\t23
1.2.6 EXTRACT_ENABLE和EXTRACT_RESET\t24
1.2.7 MARK_DEBUG\t26
1.3 模块化综合技术\t27
1.3.1 模块化综合技术概述\t27
1.3.2 模块化综合技术的应用场景\t29
1.4 OOC综合方式\t30
第2章 实现阶段\t33
2.1 实现阶段的子步骤\t33
2.2 关于逻辑优化\t33
2.2.1 基本优化\t33
2.2.2 优化MUX\t34
2.2.3 优化LUT\t34
2.2.4 优化移位寄存器\t35
2.2.5 优化进位链\t36
2.2.6 优化控制集\t37
2.2.7 优化扇出\t38
2.3 关于布局\t38
2.4 关于物理优化\t39
2.4.1 基本优化\t39
2.4.2 交互式物理优化\t39
2.5 关于布线\t41
2.5.1 优先对关键路径布线\t41
2.5.2 查看布线报告\t42
2.6 关于增量实现\t43
2.7 关于ECO\t44
2.7.1 什么是ECO\t44
2.7.2 ECO流程\t45
2.7.3 ECO应用案例:替换ILA待测信号\t46
第3章 高效设计\t51
3.1 高效使用触发器\t51
3.1.1 同步复位与异步复位\t51
3.1.2 触发器的初始值\t53
3.1.3 锁存器\t54
3.2 高效使用LUT\t55
3.2.1 LUT用作逻辑函数发生器\t55
3.2.2 LUT用作移位寄存器\t59
3.2.3 LUT用作分布式RAM\t61
3.3 高效使用Block RAM\t63
3.3.1 Block RAM的基本结构\t63
3.3.2 Block RAM的性能与功耗\t65
3.4 高效使用UltraRAM\t67
3.4.1 UltraRAM的基本结构\t67
3.4.2 UltraRAM的读写操作方式\t70
3.4.3 UltraRAM的实例化方式\t70
3.5 高效使用DSP48E2\t73
3.5.1 DSP48E2的基本结构\t73
3.5.2 DSP48E2的性能与功耗\t74
3.6 高效使用MMCM\t76
3.6.1 MMCM的基本功能\t76
3.6.2 MMCM的功耗与输出时钟的抖动\t78
3.7 高效设计异步跨时钟域电路\t80
3.7.1 单bit异步跨时钟域电路\t80
3.7.2 多bit异步跨时钟域电路\t82
第4章 时序约束\t83
4.1 管理约束\t83
4.1.1 约束文件\t83
4.1.2 4种时序路径\t85
4.1.3 4个步骤完成时序约束\t85
4.2 时钟周期约束\t87
4.2.1 主时钟周期约束\t87
4.2.2 生成时钟周期约束\t89
4.2.3 对同一时钟源添加多个时钟周期约束\t91
4.2.4 调整时钟特性约束\t93
4.3 I/O延迟约束\t93
4.4 时序例外路径约束\t95
4.4.1 多周期路径约束\t95
4.4.2 伪路径约束\t99
4.4.3 最大/最小延迟约束\t101
4.4.4 时序例外路径约束的指导原则\t102
4.5 使用create_generated_clock\t103
4.6 使用set_clock_groups\t105
4.7 调试约束\t108
4.7.1 了解约束的优先级\t108
4.7.2 了解约束文件的属性和编译顺序\t110
4.7.3 借助TCE调试约束\t112
4.7.4 借助Tcl命令调试约束\t113
4.8 案例分析\t114
第5章 时序收敛\t116
5.1 时序收敛的标准\t116
5.1.1 检查约束\t116
5.1.2 检查建立时间裕量\t117
5.2 基线设计\t117
5.3 分析时序违例\t121
5.3.1 分析时序违例的可能原因\t121
5.3.2 确定时序违例的根本原因\t125
5.3.3 分析逻辑级数\t128
5.3.4 分析数据路径延迟\t128
5.3.5 分析时钟歪斜\t129
5.4 解决时序违例\t129
5.4.1 降低逻辑延迟\t129
5.4.2 降低布线延迟\t131
5.4.3 降低时钟歪斜\t134
5.4.4 降低时钟不确定性\t136
5.5 时序收敛技术\t137
5.5.1 面向模块的综合技术\t137
5.5.2 逻辑级数\t138
5.5.3 控制集\t138
5.5.4 高扇出网线\t141
5.5.5 路径优先级\t142
5.5.6 保持时间违例\t143
5.5.7 实现策略\t144
5.5.8 多次迭代\t145
5.5.9 过约束\t145
5.5.10 增量编译\t146
5.5.11 手工布局\t146
5.5.12 复用布局\t147
第6章 SSI器件设计\t148
6.1 SSI器件设计面临的挑战\t148
6.2 SSI器件的基本结构\t150
6.2.1 SLR架构\t150
6.2.2 跨die资源\t152
6.3 SSI器件的设计规划\t154
6.3.1 数据流\t154
6.3.2 设计层次\t155
6.3.3 跨die路径\t160
6.4 SSI器件的设计分析\t163
6.4.1 资源分析\t163
6.4.2 时序分析\t165
第7章 应用技巧\t168
7.1 界面操作\t168
7.1.1 快捷键\t168
7.1.2 Dashboard按钮\t173
7.1.3 各类报告\t175
7.1.4 Schematic视图\t176
7.1.5 Device视图\t179
7.2 工程管理\t181
7.2.1 揭秘DCP\t181
7.2.2 复制工程\t183
7.2.3 复制IP\t185
7.3 资源利用率报告分析\t185
7.3.1 Block RAM的利用率\t185
7.3.2 LUT和LUTRAM的区别\t186
7.3.3 LUT的个数\t187
7.3.4 report_utilization命令的功能\t190
7.4 时序报告分析\t192
7.4.1 生成时序报告\t192
7.4.2 阅读时序报告\t194
7.5 Tcl命令应用\t197
7.5.1 report_high_fanout_nets\t197
7.5.2 report_design_analysis\t200
7.5.3 report_qor_suggestions\t203
7.5.4 report_failfast\t206
7.6 其他技巧\t207
7.6.1 设置多线程\t207
7.6.2 复用Block的位置信息\t208
7.6.3 获取Package Delay\t209
7.6.4 快速生成IBIS模型\t210
7.6.5 使用MAX_FANOUT\t211
后记\t213