官术网_书友最值得收藏!

2.6 設計的分析和綜合處理

本節將對設計進行分析和綜合(Analysis&Synthesis),內容主要包括分析和綜合的概念、分析和綜合的屬性選項、分析和綜合的實現,以及查看分析和綜合的結果。

2.6.1 分析和綜合的概念

設計的分析和綜合是一個處理工程,它將設計源文件轉換為原子網表(Atom Netlist),用于映射到器件資源。Quartus 編譯器綜合符合標準的 Verilog HDL(.v)、VHDL(.vhd)和SystemVerilog(.sv)。編譯器也綜合塊設計文件(Block Design File,BDF)、原理圖文件和由其他EDA工具生成的Verilog Quartus映射(Verilog Quartus Mapping,VQM)文件。

綜合檢查邏輯的完整性和設計的一致性,并且檢查邊界連接和語法錯誤。綜合也最小化和優化設計邏輯。例如,綜合從“行為”語言(如Verilog HDL、VHDL和SystemVerilog)中推斷D觸發器、鎖存器和狀態機。當有利時,綜合可以用Quartus Prime IP核庫中的模塊代替運算符,如“+”或“-”。在綜合期間,編譯器可以更改或刪除用戶邏輯和設計節點。Quartus Prime綜合可以最大限度地減少邏輯門的數量,消除冗余邏輯,并確保有效地使用器件資源。

綜合結束時,編譯器生成一個原子網表,如圖 2.34 所示。原子(Atom)是指 FPGA 器件中最基本的硬件資源。原子包括有組織的邏輯單元查找表、D 觸發器、I/O 引腳、塊存儲器資源、DSP塊和原子之間的連接。原子網表是原子元素的數據庫,設計綜合要求在硅片中實現。

圖2.34 Quartus Prime綜合后的結果

編譯器的Analysis&Synthesis(分析和綜合)模塊綜合設計文件,并為每個設計分區創建一個或多個項目數據庫。設計者可以指定影響綜合處理的不同設置。

編譯器在綜合快照中保留Analysis&Synthesis(分析和綜合)的結果。

1.時序驅動綜合

時序驅動(Timing-Driven)的綜合用于指導編譯器在綜合期間考慮設計者給出的時序約束。時序驅動綜合運行初始時序分析以得到網表時序信息,然后綜合將性能優化集中在時序關鍵設計元素上,同時優化非時序關鍵部分的面積。

時序驅動的綜合保留了時序約束,并且不執行與時序約束沖突的優化。時序驅動的綜合可能會增加所要求器件資源的數量。具體地,可能增加 ALUT 和寄存器的數量。總的面積可能增加或減少。運行時間和峰值存儲器的使用會略微增加。

2.分散綜合優化

設計者可以啟動可選的分散綜合(Fractal Synthesis)優化,這些優化對于深度學習加速器,以及超出所有可用 DSP 資源的其他高吞吐量、算術密集型設計非常有用。對于這樣的設置,分散綜合可以減少20%~45%的面積。

分散綜合是一組綜合優化,它們以最優的方式為算術密集型設計使用FPGA資源。這些綜合優化由乘法器正則化和重定時,以及連續算術封裝(打包)組成。針對具有大量低精度算術運算(如加法和乘法)的設計進行優化。設計者可以在“Advanced Analysis&Synthesis Settings”(高級分析和綜合設置)對話框中使能工程級的分散綜合,或者在 Assignment Editor(分配編輯器)中通過實體分配實現。

為了使用分散綜合優化,識別分散綜合引擎關注的基本算術構件塊,并使用FRACTAL_SYNTHESIS屬性來標記它。可以使用下面的方法指定屬性。

(1)在RTL中,使用altera_attribute:

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

3.乘法器正則化和重定時

乘法器正則化和重定時執行高度優化的軟件乘法器。如果需要,編譯器可以將向后重定時用于兩個或更多的流水線級。當使能分散綜合時,編譯器將乘法器正則化和重定時應用于有符號和無符號乘法器。乘法器正則化和重定時只使用邏輯資源,不使用DSP塊。

一個使用分散綜合的簡單點乘運算的Verilog HDL描述如代碼清單2-2所示。

代碼清單2-2 一個使用分散綜合的簡單點乘的Verilog HDL描述

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

圖2.35 “Console Message”窗口

4.減少編譯時間

Quartus Prime Pro 軟件支持各種策略,以減少整體編譯時間。在大型設計上運行包括所有編譯器模塊的完整編譯可能非常耗時。可以使用下面技術來減少設計的整體編譯時間。

(1)并行編譯。編譯器檢測并使用多個處理器以減少編譯時間(使用具有多個處理器內核的系統)。

(2)增量優化。將編譯分解為單獨的階段,允許在運行完整編譯之前,在各個編譯階段對結果進行迭代分析并優化設置。

(3)對改變的塊快速重新編譯。編譯器重用以前的編譯結果,不會重新處理未更改的設計塊。建議此流程在HDL中進行小的設計更改,或者添加或更改Signal Tap調試邏輯。

2.6.2 分析和綜合的屬性選項

本節將對分析和綜合的屬性選項進行說明,通過設置這些屬性選項為設計定制綜合處理過程。讀者可以通過以下方式打開Compiler Settings。

(1)在Quartus Prime Pro主界面主菜單下,選擇Assignments->Settings;

(2)在圖2.29所示的“Tasks”窗口中找到并單擊“Settings...”。

打開如圖 2.36 所示的“Settings-top”對話框。在該對話框左側的“Category”窗口中,找到并單擊“Compiler Settings”選項。在右側的“Compiler Settings”窗口中,給出了需要設置的編譯器參數。下面對這些參數的含義進行詳細說明,以幫助讀者能正確設置編譯器參數。

圖2.36 “Settings-top”對話框

1.使能中間適配器快照

為了節約編譯時間,編譯器不保存規劃的、布局的、布線的或重定時的快照。但是,設計者可以啟用“Enable Intermediate Fitter Snapshots”選項,以生成和保留規劃、布局、布線和重定時階段的快照。此外,設計者可以獨立運行適配階段中間的任何階段以生成該階段的快照。

必須啟用“Enable Intermediate Fitter Snapshots”選項,才能使用快速編譯功能。

2.優化模式

以下選項用于指導綜合期間編譯器優化工作的重點,如表 2.3 所示。指定一個平衡(Balanced)策略或者為性能(Performance)、面積(Area)、布線能力(Routability)、功耗(Power)或編譯時間(Compile Time)進行優化。設置會影響綜合和適配。

表2.3 優化模式

(1)使能“Aggressive Compile Time”將啟用Intel Quartus Prime設置文件(Quartus Prime Settings File),它不能被其他.qsf文件設置覆蓋。

(2)通過使用.qsf分配,如果為Design Space Explorer II使能擴展的優化模式,然后為該項目修訂打開“Compiler Settings”選項卡,則“Compiler Setting”選項卡指示擴展優化模式將恢復為“Compiler Settings”選項卡其中的一個優化模式。

3.允許寄存器重定時

允許寄存器重定時(Allow Register Retiming)選項控制是否全局禁止重定時。當打開該選項時,編譯器自動執行寄存器重定時優化,移動穿過組合邏輯的寄存器。當關閉該選項時,編譯器會在全局范圍內阻止進行任何重定時優化。可選地,為指定設計部分的任何設計實體或實例分配“Allow Register Retiming”。在主界面主菜單下,選擇Assignments->Assignment Editor,以指定實體級別和實例級別的分配,或使用下面的語法直接在.qsf中進行分配。

(1)設計實體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外,禁止整個設計寄存器重定時。

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.高級綜合設置

單擊圖 2.36 右側“Compiler Settings”窗口中的“Advanced Settings(Synthesis)...”按鈕,出現“Advanced Analysis&Synthesis Settings”對話框,如圖2.37所示。

圖2.37 “Advanced Analysis&Synthesis Settings”對話框

下面將介紹高級分析和綜合設置的選項,如表2.4所示。

表2.4 高級分析和綜合設置的選項

續表

續表

續表

續表

5.HDL參數設置界面

在圖 2.36 所示的“Settings-top”對話框左側的“Category”窗口中,找到并展開“Compiler Settings”選項。在展開項中:

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

圖2.38 “VHDL Input”窗口

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

圖2.39 “Verilog HDL Input”窗口

2.6.3 分析和綜合的實現

本節將對前面的設計進行分析和綜合(Analysis&Synthesis)過程,主要步驟包括:

(1)在 Quartus Prime Pro 設計的主界面中,找到并單擊“Compilation Dashboard”選項,出現如圖2.40所示的界面。

在圖2.40所示的界面中,給出了完整的處理流程,包括Compile Design(編譯設計,可以自動執行完整的處理流程)、IP Generation(IP生成)、Analysis&Synthesis(分析和綜合)、Fitter(適配器,自動執行完整編譯流程中的適配過程)、Fitter(Implement)(適配器實現,自動執行編譯過程中適配過程的實現階段)、Plan (規劃)、Early Place (早期布局)、Place(布局)、Route(布線)、Fitter(Finalize)(適配器完成),自動執行編譯過程中適配過程的完成階段)、Timing Analysis(時序分析)、Power Analysis(功耗分析)、Assembler(Generate programming files)(裝配器,生成編程文件)和 EDA Netlist Writer (EDA網表寫入)。

圖2.40 “Compilation Dashboard”界面

單擊圖中的按鈕,可以打開不同處理流程對應的設置窗口。

① 單擊IP Generation前面的按鈕,打開“Settings-top”對話框,如圖2.41所示。在該對話框右側的為“IP Settings”窗口。在該窗口中,可以設置 IP 核產生的 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的編譯過程是強關聯性的,即下一個處理階段強依賴于前面處理階段的完成,如果在執行下一個處理階段時沒有執行前一個處理階段,則編譯流程會自動執行前一個處理階段。如圖2.42所示,在執行Analysis&Synthesis(分析和綜合)處理階段時,自動先執行了IP Generation的處理階段。當正確處理完所對應的階段時,在該階段前面用標記,否則用標記。從圖2.42可知,編譯過程成功地執行了IP Generation和Analysis&Synthesis。

圖2.42 運行完分析和綜合后的編譯流程界面

2.6.4 查看分析和綜合的結果

本節將通過Quartus Prime Pro軟件提供的工具查看對設計執行分析和綜合后的結果。

1.查看綜合總結

單擊圖 2.42 中 Analysis&Synthesis 后的按鈕,可以打開“Compilation Report-top”界面,如圖2.43所示。此外,如圖2.44所示,也可以通過單擊“Tasks”窗口中“Compilation”標題欄下的“Compilation Report”選項打開“Compilation Report-top”界面。

圖2.43 “Compilation Report-top”界面

圖2.43的Synthesis文件夾下保存了綜合的報告選項(與設計有關)。完整的綜合報告選項如表2.5所示。

表2.5 完整的綜合報告選項(與設計有關)

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

圖2.44 “Tasks”窗口

思考與練習2-3:根據所使用資源的列表,給出在該設計中使用的資源。

① 使用的ALM的個數為_________,觸發器的個數為___________。

② 使用的I/O引腳的數量為_________________。

③ 最大扇出節點為_____________,扇出量為_____________________。

2.查看RTL視圖

單擊圖2.42中Analysis&Synthesis后的按鈕,可以打開RTL Viewer視圖。此外,如圖2.44所示,也可以通過單擊“Tasks”窗口中“Analysis”標題欄下的“RTL Viewer”選項,打開RTL Viewer視圖,如圖2.45所示。

圖2.45 RTL Viewer視圖

從圖 2.45 中可知,RTL Viewer 視圖給出了該設計的邏輯結構,該邏輯結構由 3 部分組成:

(1)第一部分包括兩個D觸發器,輸入a和b分別連接到一個D觸發器的輸入;

(2)兩個D觸發器的輸出連接到由4個邏輯門組成的組合邏輯電路中;

(3)4 個邏輯門的輸出連接到 6 個 DS 觸發器的輸入端。在此需要特別注意,標識為z[0]~reg0 和 z[1]~reg0 的兩個觸發器的輸入端雖然連接到了相同的邏輯門輸出,但是兩個觸發器輸入端的標識有所不同,一個觸發器的輸入端有取反標識。

因此,該電路由組合邏輯和時序邏輯構成。輸入一級的觸發器和輸出一級的觸發器有重定時功能。

思考與練習 2-4:輸入級觸發器的作用是_________________,輸出級觸發器的作用是___________。

(提示:兩級觸發器的功能有所差異)

下面給出一些操作小技巧。

(1)當把鼠標的光標放到圖2.45電路中的每個連線上時,會自動彈出該網絡的名字。

(2)鼠標右鍵單擊圖 2.45 電路中的任意一個設計元素,如 D 觸發器或邏輯門,出現浮動菜單,如圖2.46所示。在浮動菜單內,選擇Locate Node。出現浮動子菜單,在浮動子菜單內,可以選擇Locate in Design File,可以找到RTL網表所對應的Verilog HDL描述。這樣可以很容易地建立Verilog HDL描述和數字邏輯硬件之間的對應關系。

圖2.46 定位菜單選項

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

圖2.47 在不同選項之間進行切換

3.查看映射后視圖

單擊圖 2.42 中 Analysis&Synthesis 后的按鈕,可以打開 Technology Map Viewer(Post-Mapping)視圖。此外,如圖 2.44 所示,也可以通過單擊“Tasks”窗口中“Analysis”標題欄下的“Technology Map Viewer(Post-Mapping)”選項,打開 Technology Map View(Post-Mapping)視圖,如圖2.48所示。

圖2.48 Technology Map View(Post-Mapping)視圖

很明顯,映射后的網表和 RTL 網表有所不同,這是因為映射后,綜合工具將邏輯單元轉換為器件的資源。典型地,將 RTL 網表中的組合邏輯門電路用 LUT 代替,這是因為FPGA是基于查找表結構的,設計中的組合邏輯使用FPGA內的LUT實現。

下面對這個網表結構進行簡要分析。

(1)選中標識為“a_1”的 D 觸發器,單擊鼠標右鍵,出現浮動菜單。在浮動菜單內,選擇Properties。在“Technology Map View:Post-Mapping”對話框的左側出現“Properties”窗口,如圖 2.49(a)所示,單擊該窗口中的“Fan-in”和“Fan-out”標簽,可以查看該觸發器的扇入和扇出。很明顯,該觸發器的扇入為clk和a;扇出為z_1[4]、z_1[2]和z_1[0]。

(2)選中標識為“z_1[0]”的查找表,單擊鼠標右鍵,出現浮動菜單。在浮動菜單內,選擇Properties。在“Technology Map View:Post-Mapping”對話框的左側出現“Properties”窗口,如圖 2.49(b)所示,單擊“z_1[0]”標簽,在該標簽頁下面的窗口中,分別單擊“Fan-in”(扇入)、“Fan-out”(扇出)、“Ports”(端口)和“Equation”(等式)標簽,查看該LUT的細節。

(3)單擊圖 2.49(b)中的“F”標簽,如圖 2.49(c)所示,在該標簽頁下方分別單擊“Ports”(端口)、“Truth Table”(真值表)和“Equation”(等式)標簽,查看LUT內的邏輯關系。

思考與練習 2-5:請讀者自行分析設計元件的屬性(提示:為什么 LUT 內的邏輯和RTL的關系是取反的,適配后的結果就能說明這個現象)。

圖2.49 不同設計元素的屬性窗口

主站蜘蛛池模板: 台中市| 嘉义县| 德庆县| 四川省| 黄骅市| 长垣县| 平山县| 郴州市| 隆化县| 宁陕县| 元氏县| 富平县| 平乐县| 德江县| 同心县| 北流市| 新乡县| 东宁县| 宝坻区| 石嘴山市| 阳曲县| 静安区| 调兵山市| 株洲市| 朝阳县| 山阴县| 体育| 青海省| 芷江| 广州市| 石家庄市| 台东县| 滨州市| 凯里市| 盐亭县| 松原市| 高州市| 郸城县| 庆云县| 荔波县| 南陵县|