全書共七章,力圖幫助讀者了解Vivado 2018版本的新特性,同時理解并掌握UltraFast設(shè)計方法學(xué)。UltraFast方法學(xué)是實踐經(jīng)驗的總結(jié),涉及板級規(guī)劃、設(shè)計流程、代碼風(fēng)格、時序約束、時序收斂等方面。本書重點圍繞后三個方面進(jìn)行闡述。此外,針對被越來越廣泛使用的SSI器件,本書也介紹了相應(yīng)的設(shè)計指南,例如,如何在早期進(jìn)行設(shè)計規(guī)劃、如何對跨die信號進(jìn)行處理、如何使用LAGUNA寄存器、如何對基于SSI器件的設(shè)計進(jìn)行分析等。除此之外,作者也根據(jù)實踐經(jīng)驗總結(jié)了一些常用的技巧,盡可能地幫助讀者提高工作效率。
Xilinx戰(zhàn)略應(yīng)用高級工程師,擁有多年利用Xilinx FPGA實現(xiàn)數(shù)字信號處理算法的經(jīng)驗,對Xilinx FPGA的架構(gòu)、開發(fā)工具Vivado和設(shè)計理念有深入理解。2012年發(fā)布網(wǎng)絡(luò)視頻課程《Vivado入門與提高》、2015年出版《基于FPGA的數(shù)字信號處理(第2版)》一書,均獲得網(wǎng)友和讀者的廣泛認(rèn)可和好評。
第1章 綜合階段 1
1.1 綜合設(shè)置分析 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 模塊化綜合技術(shù) 27
1.3.1 模塊化綜合技術(shù)概述 27
1.3.2 模塊化綜合技術(shù)的應(yīng)用場景 29
1.4 OOC綜合方式 30
第2章 實現(xiàn)階段 33
2.1 實現(xiàn)階段的子步驟 33
2.2 關(guān)于邏輯優(yōu)化 33
2.2.1 基本優(yōu)化 33
2.2.2 優(yōu)化MUX 34
2.2.3 優(yōu)化LUT 34
2.2.4 優(yōu)化移位寄存器 35
2.2.5 優(yōu)化進(jìn)位鏈 36
2.2.6 優(yōu)化控制集 37
2.2.7 優(yōu)化扇出 38
2.3 關(guān)于布局 38
2.4 關(guān)于物理優(yōu)化 39
2.4.1 基本優(yōu)化 39
2.4.2 交互式物理優(yōu)化 39
2.5 關(guān)于布線 41
2.5.1 優(yōu)先對關(guān)鍵路徑布線 41
2.5.2 查看布線報告 42
2.6 關(guān)于增量實現(xiàn) 43
2.7 關(guān)于ECO 44
2.7.1 什么是ECO 44
2.7.2 ECO流程 45
2.7.3 ECO應(yīng)用案例:替換ILA待測信號 46
第3章 高效設(shè)計 51
3.1 高效使用觸發(fā)器 51
3.1.1 同步復(fù)位與異步復(fù)位 51
3.1.2 觸發(fā)器的初始值 53
3.1.3 鎖存器 54
3.2 高效使用LUT 55
3.2.1 LUT用作邏輯函數(shù)發(fā)生器 55
3.2.2 LUT用作移位寄存器 59
3.2.3 LUT用作分布式RAM 61
3.3 高效使用Block RAM 63
3.3.1 Block RAM的基本結(jié)構(gòu) 63
3.3.2 Block RAM的性能與功耗 65
3.4 高效使用UltraRAM 67
3.4.1 UltraRAM的基本結(jié)構(gòu) 67
3.4.2 UltraRAM的讀寫操作方式 70
3.4.3 UltraRAM的實例化方式 70
3.5 高效使用DSP48E2 73
3.5.1 DSP48E2的基本結(jié)構(gòu) 73
3.5.2 DSP48E2的性能與功耗 74
3.6 高效使用MMCM 76
3.6.1 MMCM的基本功能 76
3.6.2 MMCM的功耗與輸出時鐘的抖動 78
3.7 高效設(shè)計異步跨時鐘域電路 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 調(diào)整時鐘特性約束 93
4.3 I/O延遲約束 93
4.4 時序例外路徑約束 95
4.4.1 多周期路徑約束 95
4.4.2 偽路徑約束 99
4.4.3 最大/最小延遲約束 101
4.4.4 時序例外路徑約束的指導(dǎo)原則 102
4.5 使用create_generated_clock 103
4.6 使用set_clock_groups 105
4.7 調(diào)試約束 108
4.7.1 了解約束的優(yōu)先級 108
4.7.2 了解約束文件的屬性和編譯順序 110
4.7.3 借助TCE調(diào)試約束 112
4.7.4 借助Tcl命令調(diào)試約束 113
4.8 案例分析 114
第5章 時序收斂 116
5.1 時序收斂的標(biāo)準(zhǔn) 116
5.1.1 檢查約束 116
5.1.2 檢查建立時間裕量 117
5.2 基線設(shè)計 117
5.3 分析時序違例 121
5.3.1 分析時序違例的可能原因 121
5.3.2 確定時序違例的根本原因 125
5.3.3 分析邏輯級數(shù) 128
5.3.4 分析數(shù)據(jù)路徑延遲 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 時序收斂技術(shù) 137
5.5.1 面向模塊的綜合技術(shù) 137
5.5.2 邏輯級數(shù) 138
5.5.3 控制集 138
5.5.4 高扇出網(wǎng)線 141
5.5.5 路徑優(yōu)先級 142
5.5.6 保持時間違例 143
5.5.7 實現(xiàn)策略 144
5.5.8 多次迭代 145
5.5.9 過約束 145
5.5.10 增量編譯 146
5.5.11 手工布局 146
5.5.12 復(fù)用布局 147
第6章 SSI器件設(shè)計 148
6.1 SSI器件設(shè)計面臨的挑戰(zhàn) 148
6.2 SSI器件的基本結(jié)構(gòu) 150
6.2.1 SLR架構(gòu) 150
6.2.2 跨die資源 152
6.3 SSI器件的設(shè)計規(guī)劃 154
6.3.1 數(shù)據(jù)流 154
6.3.2 設(shè)計層次 155
6.3.3 跨die路徑 160
6.4 SSI器件的設(shè)計分析 163
6.4.1 資源分析 163
6.4.2 時序分析 165
第7章 應(yīng)用技巧 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 復(fù)制工程 183
7.2.3 復(fù)制IP 185
7.3 資源利用率報告分析 185
7.3.1 Block RAM的利用率 185
7.3.2 LUT和LUTRAM的區(qū)別 186
7.3.3 LUT的個數(shù) 187
7.3.4 report_utilization命令的功能 190
7.4 時序報告分析 192
7.4.1 生成時序報告 192
7.4.2 閱讀時序報告 194
7.5 Tcl命令應(yīng)用 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 設(shè)置多線程 207
7.6.2 復(fù)用Block的位置信息 208
7.6.3 獲取Package Delay 209
7.6.4 快速生成IBIS模型 210
7.6.5 使用MAX_FANOUT 211
后記 213