全書共七章,力圖幫助讀者了解Vivado 2018版本的新特性,同時(shí)理解并掌握UltraFast設(shè)計(jì)方法學(xué)。UltraFast方法學(xué)是實(shí)踐經(jīng)驗(yàn)的總結(jié),涉及板級(jí)規(guī)劃、設(shè)計(jì)流程、代碼風(fēng)格、時(shí)序約束、時(shí)序收斂等方面。本書重點(diǎn)圍繞后三個(gè)方面進(jìn)行闡述。此外,針對(duì)被越來(lái)越廣泛使用的SSI器件,本書也介紹了相應(yīng)的設(shè)計(jì)指南,例如,如何在早期進(jìn)行設(shè)計(jì)規(guī)劃、如何對(duì)跨die信號(hào)進(jìn)行處理、如何使用LAGUNA寄存器、如何對(duì)基于SSI器件的設(shè)計(jì)進(jìn)行分析等。除此之外,作者也根據(jù)實(shí)踐經(jīng)驗(yàn)總結(jié)了一些常用的技巧,盡可能地幫助讀者提高工作效率。
Xilinx戰(zhàn)略應(yīng)用高級(jí)工程師,擁有多年利用Xilinx FPGA實(shí)現(xiàn)數(shù)字信號(hào)處理算法的經(jīng)驗(yàn),對(duì)Xilinx FPGA的架構(gòu)、開發(fā)工具Vivado和設(shè)計(jì)理念有深入理解。2012年發(fā)布網(wǎng)絡(luò)視頻課程《Vivado入門與提高》、2015年出版《基于FPGA的數(shù)字信號(hào)處理(第2版)》一書,均獲得網(wǎng)友和讀者的廣泛認(rèn)可和好評(píng)。
第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)用場(chǎng)景 29
1.4 OOC綜合方式 30
第2章 實(shí)現(xiàn)階段 33
2.1 實(shí)現(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)先對(duì)關(guān)鍵路徑布線 41
2.5.2 查看布線報(bào)告 42
2.6 關(guān)于增量實(shí)現(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待測(cè)信號(hào) 46
第3章 高效設(shè)計(jì) 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的實(shí)例化方式 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的功耗與輸出時(shí)鐘的抖動(dòng) 78
3.7 高效設(shè)計(jì)異步跨時(shí)鐘域電路 80
3.7.1 單bit異步跨時(shí)鐘域電路 80
3.7.2 多bit異步跨時(shí)鐘域電路 82
第4章 時(shí)序約束 83
4.1 管理約束 83
4.1.1 約束文件 83
4.1.2 4種時(shí)序路徑 85
4.1.3 4個(gè)步驟完成時(shí)序約束 85
4.2 時(shí)鐘周期約束 87
4.2.1 主時(shí)鐘周期約束 87
4.2.2 生成時(shí)鐘周期約束 89
4.2.3 對(duì)同一時(shí)鐘源添加多個(gè)時(shí)鐘周期約束 91
4.2.4 調(diào)整時(shí)鐘特性約束 93
4.3 I/O延遲約束 93
4.4 時(shí)序例外路徑約束 95
4.4.1 多周期路徑約束 95
4.4.2 偽路徑約束 99
4.4.3 最大/最小延遲約束 101
4.4.4 時(shí)序例外路徑約束的指導(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)先級(jí) 108
4.7.2 了解約束文件的屬性和編譯順序 110
4.7.3 借助TCE調(diào)試約束 112
4.7.4 借助Tcl命令調(diào)試約束 113
4.8 案例分析 114
第5章 時(shí)序收斂 116
5.1 時(shí)序收斂的標(biāo)準(zhǔn) 116
5.1.1 檢查約束 116
5.1.2 檢查建立時(shí)間裕量 117
5.2 基線設(shè)計(jì) 117
5.3 分析時(shí)序違例 121
5.3.1 分析時(shí)序違例的可能原因 121
5.3.2 確定時(shí)序違例的根本原因 125
5.3.3 分析邏輯級(jí)數(shù) 128
5.3.4 分析數(shù)據(jù)路徑延遲 128
5.3.5 分析時(shí)鐘歪斜 129
5.4 解決時(shí)序違例 129
5.4.1 降低邏輯延遲 129
5.4.2 降低布線延遲 131
5.4.3 降低時(shí)鐘歪斜 134
5.4.4 降低時(shí)鐘不確定性 136
5.5 時(shí)序收斂技術(shù) 137
5.5.1 面向模塊的綜合技術(shù) 137
5.5.2 邏輯級(jí)數(shù) 138
5.5.3 控制集 138
5.5.4 高扇出網(wǎng)線 141
5.5.5 路徑優(yōu)先級(jí) 142
5.5.6 保持時(shí)間違例 143
5.5.7 實(shí)現(xiàn)策略 144
5.5.8 多次迭代 145
5.5.9 過(guò)約束 145
5.5.10 增量編譯 146
5.5.11 手工布局 146
5.5.12 復(fù)用布局 147
第6章 SSI器件設(shè)計(jì) 148
6.1 SSI器件設(shè)計(jì)面臨的挑戰(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è)計(jì)規(guī)劃 154
6.3.1 數(shù)據(jù)流 154
6.3.2 設(shè)計(jì)層次 155
6.3.3 跨die路徑 160
6.4 SSI器件的設(shè)計(jì)分析 163
6.4.1 資源分析 163
6.4.2 時(shí)序分析 165
第7章 應(yīng)用技巧 168
7.1 界面操作 168
7.1.1 快捷鍵 168
7.1.2 Dashboard按鈕 173
7.1.3 各類報(bào)告 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 資源利用率報(bào)告分析 185
7.3.1 Block RAM的利用率 185
7.3.2 LUT和LUTRAM的區(qū)別 186
7.3.3 LUT的個(gè)數(shù) 187
7.3.4 report_utilization命令的功能 190
7.4 時(shí)序報(bào)告分析 192
7.4.1 生成時(shí)序報(bào)告 192
7.4.2 閱讀時(shí)序報(bào)告 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