- Intel FPGA權(quán)威設(shè)計指南:基于Quartus Prime Pro 19集成開發(fā)環(huán)境
- 何賓編著
- 5062字
- 2021-10-29 21:33:59
2.6 設(shè)計的分析和綜合處理
本節(jié)將對設(shè)計進行分析和綜合(Analysis&Synthesis),內(nèi)容主要包括分析和綜合的概念、分析和綜合的屬性選項、分析和綜合的實現(xiàn),以及查看分析和綜合的結(jié)果。
2.6.1 分析和綜合的概念
設(shè)計的分析和綜合是一個處理工程,它將設(shè)計源文件轉(zhuǎn)換為原子網(wǎng)表(Atom Netlist),用于映射到器件資源。Quartus 編譯器綜合符合標(biāo)準(zhǔn)的 Verilog HDL(.v)、VHDL(.vhd)和SystemVerilog(.sv)。編譯器也綜合塊設(shè)計文件(Block Design File,BDF)、原理圖文件和由其他EDA工具生成的Verilog Quartus映射(Verilog Quartus Mapping,VQM)文件。
綜合檢查邏輯的完整性和設(shè)計的一致性,并且檢查邊界連接和語法錯誤。綜合也最小化和優(yōu)化設(shè)計邏輯。例如,綜合從“行為”語言(如Verilog HDL、VHDL和SystemVerilog)中推斷D觸發(fā)器、鎖存器和狀態(tài)機。當(dāng)有利時,綜合可以用Quartus Prime IP核庫中的模塊代替運算符,如“+”或“-”。在綜合期間,編譯器可以更改或刪除用戶邏輯和設(shè)計節(jié)點。Quartus Prime綜合可以最大限度地減少邏輯門的數(shù)量,消除冗余邏輯,并確保有效地使用器件資源。
綜合結(jié)束時,編譯器生成一個原子網(wǎng)表,如圖 2.34 所示。原子(Atom)是指 FPGA 器件中最基本的硬件資源。原子包括有組織的邏輯單元查找表、D 觸發(fā)器、I/O 引腳、塊存儲器資源、DSP塊和原子之間的連接。原子網(wǎng)表是原子元素的數(shù)據(jù)庫,設(shè)計綜合要求在硅片中實現(xiàn)。

圖2.34 Quartus Prime綜合后的結(jié)果
編譯器的Analysis&Synthesis(分析和綜合)模塊綜合設(shè)計文件,并為每個設(shè)計分區(qū)創(chuàng)建一個或多個項目數(shù)據(jù)庫。設(shè)計者可以指定影響綜合處理的不同設(shè)置。
編譯器在綜合快照中保留Analysis&Synthesis(分析和綜合)的結(jié)果。
1.時序驅(qū)動綜合
時序驅(qū)動(Timing-Driven)的綜合用于指導(dǎo)編譯器在綜合期間考慮設(shè)計者給出的時序約束。時序驅(qū)動綜合運行初始時序分析以得到網(wǎng)表時序信息,然后綜合將性能優(yōu)化集中在時序關(guān)鍵設(shè)計元素上,同時優(yōu)化非時序關(guān)鍵部分的面積。
時序驅(qū)動的綜合保留了時序約束,并且不執(zhí)行與時序約束沖突的優(yōu)化。時序驅(qū)動的綜合可能會增加所要求器件資源的數(shù)量。具體地,可能增加 ALUT 和寄存器的數(shù)量。總的面積可能增加或減少。運行時間和峰值存儲器的使用會略微增加。
2.分散綜合優(yōu)化
設(shè)計者可以啟動可選的分散綜合(Fractal Synthesis)優(yōu)化,這些優(yōu)化對于深度學(xué)習(xí)加速器,以及超出所有可用 DSP 資源的其他高吞吐量、算術(shù)密集型設(shè)計非常有用。對于這樣的設(shè)置,分散綜合可以減少20%~45%的面積。
分散綜合是一組綜合優(yōu)化,它們以最優(yōu)的方式為算術(shù)密集型設(shè)計使用FPGA資源。這些綜合優(yōu)化由乘法器正則化和重定時,以及連續(xù)算術(shù)封裝(打包)組成。針對具有大量低精度算術(shù)運算(如加法和乘法)的設(shè)計進行優(yōu)化。設(shè)計者可以在“Advanced Analysis&Synthesis Settings”(高級分析和綜合設(shè)置)對話框中使能工程級的分散綜合,或者在 Assignment Editor(分配編輯器)中通過實體分配實現(xiàn)。
為了使用分散綜合優(yōu)化,識別分散綜合引擎關(guān)注的基本算術(shù)構(gòu)件塊,并使用FRACTAL_SYNTHESIS屬性來標(biāo)記它。可以使用下面的方法指定屬性。
(1)在RTL中,使用altera_attribute:

(2)在QSF文件中添加如下的分配:

3.乘法器正則化和重定時
乘法器正則化和重定時執(zhí)行高度優(yōu)化的軟件乘法器。如果需要,編譯器可以將向后重定時用于兩個或更多的流水線級。當(dāng)使能分散綜合時,編譯器將乘法器正則化和重定時應(yīng)用于有符號和無符號乘法器。乘法器正則化和重定時只使用邏輯資源,不使用DSP塊。
一個使用分散綜合的簡單點乘運算的Verilog HDL描述如代碼清單2-2所示。
代碼清單2-2 一個使用分散綜合的簡單點乘的Verilog HDL描述

對該設(shè)計執(zhí)行Analysis&Synthesis后,“Console Message”窗口給出的信息如圖2.35所示。從圖中可知,該乘法器使用的是邏輯資源,并沒有使用DSP塊。

圖2.35 “Console Message”窗口
4.減少編譯時間
Quartus Prime Pro 軟件支持各種策略,以減少整體編譯時間。在大型設(shè)計上運行包括所有編譯器模塊的完整編譯可能非常耗時。可以使用下面技術(shù)來減少設(shè)計的整體編譯時間。
(1)并行編譯。編譯器檢測并使用多個處理器以減少編譯時間(使用具有多個處理器內(nèi)核的系統(tǒng))。
(2)增量優(yōu)化。將編譯分解為單獨的階段,允許在運行完整編譯之前,在各個編譯階段對結(jié)果進行迭代分析并優(yōu)化設(shè)置。
(3)對改變的塊快速重新編譯。編譯器重用以前的編譯結(jié)果,不會重新處理未更改的設(shè)計塊。建議此流程在HDL中進行小的設(shè)計更改,或者添加或更改Signal Tap調(diào)試邏輯。
2.6.2 分析和綜合的屬性選項
本節(jié)將對分析和綜合的屬性選項進行說明,通過設(shè)置這些屬性選項為設(shè)計定制綜合處理過程。讀者可以通過以下方式打開Compiler Settings。
(1)在Quartus Prime Pro主界面主菜單下,選擇Assignments->Settings;
(2)在圖2.29所示的“Tasks”窗口中找到并單擊“Settings...”。
打開如圖 2.36 所示的“Settings-top”對話框。在該對話框左側(cè)的“Category”窗口中,找到并單擊“Compiler Settings”選項。在右側(cè)的“Compiler Settings”窗口中,給出了需要設(shè)置的編譯器參數(shù)。下面對這些參數(shù)的含義進行詳細說明,以幫助讀者能正確設(shè)置編譯器參數(shù)。

圖2.36 “Settings-top”對話框
1.使能中間適配器快照
為了節(jié)約編譯時間,編譯器不保存規(guī)劃的、布局的、布線的或重定時的快照。但是,設(shè)計者可以啟用“Enable Intermediate Fitter Snapshots”選項,以生成和保留規(guī)劃、布局、布線和重定時階段的快照。此外,設(shè)計者可以獨立運行適配階段中間的任何階段以生成該階段的快照。

注
必須啟用“Enable Intermediate Fitter Snapshots”選項,才能使用快速編譯功能。
2.優(yōu)化模式
以下選項用于指導(dǎo)綜合期間編譯器優(yōu)化工作的重點,如表 2.3 所示。指定一個平衡(Balanced)策略或者為性能(Performance)、面積(Area)、布線能力(Routability)、功耗(Power)或編譯時間(Compile Time)進行優(yōu)化。設(shè)置會影響綜合和適配。
表2.3 優(yōu)化模式


注
(1)使能“Aggressive Compile Time”將啟用Intel Quartus Prime設(shè)置文件(Quartus Prime Settings File),它不能被其他.qsf文件設(shè)置覆蓋。
(2)通過使用.qsf分配,如果為Design Space Explorer II使能擴展的優(yōu)化模式,然后為該項目修訂打開“Compiler Settings”選項卡,則“Compiler Setting”選項卡指示擴展優(yōu)化模式將恢復(fù)為“Compiler Settings”選項卡其中的一個優(yōu)化模式。
3.允許寄存器重定時
允許寄存器重定時(Allow Register Retiming)選項控制是否全局禁止重定時。當(dāng)打開該選項時,編譯器自動執(zhí)行寄存器重定時優(yōu)化,移動穿過組合邏輯的寄存器。當(dāng)關(guān)閉該選項時,編譯器會在全局范圍內(nèi)阻止進行任何重定時優(yōu)化。可選地,為指定設(shè)計部分的任何設(shè)計實體或?qū)嵗峙洹癆llow Register Retiming”。在主界面主菜單下,選擇Assignments->Assignment Editor,以指定實體級別和實例級別的分配,或使用下面的語法直接在.qsf中進行分配。
(1)設(shè)計實體abc禁止寄存器重定時。
set_global_assignment-name ALLOW_REGISTER_RETIMING ON set_instance_assignment-name ALLOW_REGISTER_RETIMING OFF-to"abc|"set_instance_assignment-name ALLOW_REGISTER_RETIMING ON-to"abc|def|"
(2)除實體abc外,禁止整個設(shè)計寄存器重定時。
set_global_assignment-name ALLOW_REGISTER_RETIMING OFF set_instance_assignment-name ALLOW_REGISTER_RETIMING ON-to"abc|"set_instance_assignment-name ALLOW_REGISTER_RETIMING OFF-to"abc|def|"
4.高級綜合設(shè)置
單擊圖 2.36 右側(cè)“Compiler Settings”窗口中的“Advanced Settings(Synthesis)...”按鈕,出現(xiàn)“Advanced Analysis&Synthesis Settings”對話框,如圖2.37所示。

圖2.37 “Advanced Analysis&Synthesis Settings”對話框
下面將介紹高級分析和綜合設(shè)置的選項,如表2.4所示。
表2.4 高級分析和綜合設(shè)置的選項

續(xù)表

續(xù)表

續(xù)表

續(xù)表

5.HDL參數(shù)設(shè)置界面
在圖 2.36 所示的“Settings-top”對話框左側(cè)的“Category”窗口中,找到并展開“Compiler Settings”選項。在展開項中:
(1)單擊“VHDL Input”選項,右側(cè)的“VHDL Input”窗口如圖2.38所示,在該窗口中提供了用于直接編譯和仿真VHDL輸入文件的選項。

圖2.38 “VHDL Input”窗口
(2)單擊“Verilog HDL Input”選項,右側(cè)的“Verilog HDL Input”窗口如圖 2.39 所示,在該窗口中提供了用于直接編譯和仿真Verilog HDL輸入文件的選項。

圖2.39 “Verilog HDL Input”窗口
2.6.3 分析和綜合的實現(xiàn)
本節(jié)將對前面的設(shè)計進行分析和綜合(Analysis&Synthesis)過程,主要步驟包括:
(1)在 Quartus Prime Pro 設(shè)計的主界面中,找到并單擊“Compilation Dashboard”選項,出現(xiàn)如圖2.40所示的界面。
在圖2.40所示的界面中,給出了完整的處理流程,包括Compile Design(編譯設(shè)計,可以自動執(zhí)行完整的處理流程)、IP Generation(IP生成)、Analysis&Synthesis(分析和綜合)、Fitter(適配器,自動執(zhí)行完整編譯流程中的適配過程)、Fitter(Implement)(適配器實現(xiàn),自動執(zhí)行編譯過程中適配過程的實現(xiàn)階段)、Plan (規(guī)劃)、Early Place (早期布局)、Place(布局)、Route(布線)、Fitter(Finalize)(適配器完成),自動執(zhí)行編譯過程中適配過程的完成階段)、Timing Analysis(時序分析)、Power Analysis(功耗分析)、Assembler(Generate programming files)(裝配器,生成編程文件)和 EDA Netlist Writer (EDA網(wǎng)表寫入)。

圖2.40 “Compilation Dashboard”界面
單擊圖中的按鈕,可以打開不同處理流程對應(yīng)的設(shè)置窗口。
① 單擊IP Generation前面的按鈕,打開“Settings-top”對話框,如圖2.41所示。在該對話框右側(cè)的為“IP Settings”窗口。在該窗口中,可以設(shè)置 IP 核產(chǎn)生的 HDL 語言類型(IP generation HDL preference)、IP重新生成策略(IP Regeneration Policy)等。

圖2.41 “Settings-top”對話框
② 單擊Analysis&Synthesis前面的按鈕,打開如圖2.36所示的“Settings-top”對話框。
(2)單擊 Analysis&Synthesis 前面的按鈕,運行分析和綜合的過程。從運行分析和綜合的過程可知,Quartus Prime Pro的編譯過程是強關(guān)聯(lián)性的,即下一個處理階段強依賴于前面處理階段的完成,如果在執(zhí)行下一個處理階段時沒有執(zhí)行前一個處理階段,則編譯流程會自動執(zhí)行前一個處理階段。如圖2.42所示,在執(zhí)行Analysis&Synthesis(分析和綜合)處理階段時,自動先執(zhí)行了IP Generation的處理階段。當(dāng)正確處理完所對應(yīng)的階段時,在該階段前面用
標(biāo)記,否則用
標(biāo)記。從圖2.42可知,編譯過程成功地執(zhí)行了IP Generation和Analysis&Synthesis。

圖2.42 運行完分析和綜合后的編譯流程界面
2.6.4 查看分析和綜合的結(jié)果
本節(jié)將通過Quartus Prime Pro軟件提供的工具查看對設(shè)計執(zhí)行分析和綜合后的結(jié)果。
1.查看綜合總結(jié)
單擊圖 2.42 中 Analysis&Synthesis 后的按鈕,可以打開“Compilation Report-top”界面,如圖2.43所示。此外,如圖2.44所示,也可以通過單擊“Tasks”窗口中“Compilation”標(biāo)題欄下的“Compilation Report”選項打開“Compilation Report-top”界面。

圖2.43 “Compilation Report-top”界面
圖2.43的Synthesis文件夾下保存了綜合的報告選項(與設(shè)計有關(guān))。完整的綜合報告選項如表2.5所示。
表2.5 完整的綜合報告選項(與設(shè)計有關(guān))

在圖2.43所示界面左側(cè)的“Table of Contents”窗口中,找到并展開“Synthesis”。在展開項中,找到并展開“Partition ‘root_partition’”。在展開項中,找到并單擊“Resource Usage Summary for Partition‘root_partition’”。在右側(cè)窗口中,給出了使用FPGA器件的資源列表。

圖2.44 “Tasks”窗口
思考與練習(xí)2-3:根據(jù)所使用資源的列表,給出在該設(shè)計中使用的資源。
① 使用的ALM的個數(shù)為_________,觸發(fā)器的個數(shù)為___________。
② 使用的I/O引腳的數(shù)量為_________________。
③ 最大扇出節(jié)點為_____________,扇出量為_____________________。
2.查看RTL視圖
單擊圖2.42中Analysis&Synthesis后的按鈕,可以打開RTL Viewer視圖。此外,如圖2.44所示,也可以通過單擊“Tasks”窗口中“Analysis”標(biāo)題欄下的“RTL Viewer”選項,打開RTL Viewer視圖,如圖2.45所示。

圖2.45 RTL Viewer視圖
從圖 2.45 中可知,RTL Viewer 視圖給出了該設(shè)計的邏輯結(jié)構(gòu),該邏輯結(jié)構(gòu)由 3 部分組成:
(1)第一部分包括兩個D觸發(fā)器,輸入a和b分別連接到一個D觸發(fā)器的輸入;
(2)兩個D觸發(fā)器的輸出連接到由4個邏輯門組成的組合邏輯電路中;
(3)4 個邏輯門的輸出連接到 6 個 DS 觸發(fā)器的輸入端。在此需要特別注意,標(biāo)識為z[0]~reg0 和 z[1]~reg0 的兩個觸發(fā)器的輸入端雖然連接到了相同的邏輯門輸出,但是兩個觸發(fā)器輸入端的標(biāo)識有所不同,一個觸發(fā)器的輸入端有取反標(biāo)識。
因此,該電路由組合邏輯和時序邏輯構(gòu)成。輸入一級的觸發(fā)器和輸出一級的觸發(fā)器有重定時功能。
思考與練習(xí) 2-4:輸入級觸發(fā)器的作用是_________________,輸出級觸發(fā)器的作用是___________。
(提示:兩級觸發(fā)器的功能有所差異)
下面給出一些操作小技巧。
(1)當(dāng)把鼠標(biāo)的光標(biāo)放到圖2.45電路中的每個連線上時,會自動彈出該網(wǎng)絡(luò)的名字。
(2)鼠標(biāo)右鍵單擊圖 2.45 電路中的任意一個設(shè)計元素,如 D 觸發(fā)器或邏輯門,出現(xiàn)浮動菜單,如圖2.46所示。在浮動菜單內(nèi),選擇Locate Node。出現(xiàn)浮動子菜單,在浮動子菜單內(nèi),可以選擇Locate in Design File,可以找到RTL網(wǎng)表所對應(yīng)的Verilog HDL描述。這樣可以很容易地建立Verilog HDL描述和數(shù)字邏輯硬件之間的對應(yīng)關(guān)系。

圖2.46 定位菜單選項
(3)在Quartus Prime Pro主界面主菜單下,選擇Window,如圖2.47所示。通過勾選不同選項前面的復(fù)選框,可以實現(xiàn)在不同選項之間的切換。

圖2.47 在不同選項之間進行切換
3.查看映射后視圖
單擊圖 2.42 中 Analysis&Synthesis 后的按鈕,可以打開 Technology Map Viewer(Post-Mapping)視圖。此外,如圖 2.44 所示,也可以通過單擊“Tasks”窗口中“Analysis”標(biāo)題欄下的“Technology Map Viewer(Post-Mapping)”選項,打開 Technology Map View(Post-Mapping)視圖,如圖2.48所示。

圖2.48 Technology Map View(Post-Mapping)視圖
很明顯,映射后的網(wǎng)表和 RTL 網(wǎng)表有所不同,這是因為映射后,綜合工具將邏輯單元轉(zhuǎn)換為器件的資源。典型地,將 RTL 網(wǎng)表中的組合邏輯門電路用 LUT 代替,這是因為FPGA是基于查找表結(jié)構(gòu)的,設(shè)計中的組合邏輯使用FPGA內(nèi)的LUT實現(xiàn)。
下面對這個網(wǎng)表結(jié)構(gòu)進行簡要分析。
(1)選中標(biāo)識為“a_1”的 D 觸發(fā)器,單擊鼠標(biāo)右鍵,出現(xiàn)浮動菜單。在浮動菜單內(nèi),選擇Properties。在“Technology Map View:Post-Mapping”對話框的左側(cè)出現(xiàn)“Properties”窗口,如圖 2.49(a)所示,單擊該窗口中的“Fan-in”和“Fan-out”標(biāo)簽,可以查看該觸發(fā)器的扇入和扇出。很明顯,該觸發(fā)器的扇入為clk和a;扇出為z_1[4]、z_1[2]和z_1[0]。
(2)選中標(biāo)識為“z_1[0]”的查找表,單擊鼠標(biāo)右鍵,出現(xiàn)浮動菜單。在浮動菜單內(nèi),選擇Properties。在“Technology Map View:Post-Mapping”對話框的左側(cè)出現(xiàn)“Properties”窗口,如圖 2.49(b)所示,單擊“z_1[0]”標(biāo)簽,在該標(biāo)簽頁下面的窗口中,分別單擊“Fan-in”(扇入)、“Fan-out”(扇出)、“Ports”(端口)和“Equation”(等式)標(biāo)簽,查看該LUT的細節(jié)。
(3)單擊圖 2.49(b)中的“F”標(biāo)簽,如圖 2.49(c)所示,在該標(biāo)簽頁下方分別單擊“Ports”(端口)、“Truth Table”(真值表)和“Equation”(等式)標(biāo)簽,查看LUT內(nèi)的邏輯關(guān)系。
思考與練習(xí) 2-5:請讀者自行分析設(shè)計元件的屬性(提示:為什么 LUT 內(nèi)的邏輯和RTL的關(guān)系是取反的,適配后的結(jié)果就能說明這個現(xiàn)象)。

圖2.49 不同設(shè)計元素的屬性窗口
- 觸摸屏實用技術(shù)與工程應(yīng)用
- ATmega16單片機項目驅(qū)動教程
- Python GUI Programming:A Complete Reference Guide
- 極簡Spring Cloud實戰(zhàn)
- 施耐德SoMachine控制器應(yīng)用及編程指南
- Artificial Intelligence Business:How you can profit from AI
- 計算機組裝與維護(第3版)
- CC2530單片機技術(shù)與應(yīng)用
- 筆記本電腦使用、維護與故障排除從入門到精通(第5版)
- 基于Proteus仿真的51單片機應(yīng)用
- 微型計算機系統(tǒng)原理及應(yīng)用:國產(chǎn)龍芯處理器的軟件和硬件集成(基礎(chǔ)篇)
- 無蘋果不生活:OS X Mountain Lion 隨身寶典
- Java Deep Learning Cookbook
- Hands-On Motion Graphics with Adobe After Effects CC
- 基于網(wǎng)絡(luò)化教學(xué)的項目化單片機應(yīng)用技術(shù)