新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA實(shí)戰(zhàn)開發(fā)技巧(3)

FPGA實(shí)戰(zhàn)開發(fā)技巧(3)

作者: 時(shí)間:2017-10-13 來源:網(wǎng)絡(luò) 收藏

5.3.1 綜合工具XST的使用

所謂綜合,就是將HDL語言、原理圖等設(shè)計(jì)輸入翻譯成由與、或、非門和RAM、觸發(fā)器等基本邏輯單元的邏輯連接( 網(wǎng)表),并根據(jù)目標(biāo)和要求( 約束條件) 優(yōu)化所生成的邏輯連接,生成EDF 文件。XST 內(nèi)嵌在ISE 3 以后的版本中,并且在不斷完善。此外,由于XST 是公司自己的綜合工具,對于部分芯片獨(dú)有的結(jié)構(gòu)具有更好的融合性。

本文引用地址:http://butianyuan.cn/article/201710/365619.htm

完成了輸入、仿真以及管腳分配后就可以進(jìn)行綜合和實(shí)現(xiàn)了。在過程管理區(qū)雙擊Synthesize-XST,如圖5-1所示,就可以完成綜合,并且能夠給出初步的資源消耗情況。圖5-2 給出了模塊所占用的資源。

圖5-1 設(shè)計(jì)綜合窗口

圖5-2 綜合結(jié)果報(bào)告

綜合可能有3 種結(jié)果:如果綜合后完全正確,則在Synthesize-XST 前面有一個(gè)打鉤的綠色小圈圈;如果有警告,則出現(xiàn)一個(gè)帶感嘆號(hào)的黃色小圓圈;如果有錯(cuò)誤,則出現(xiàn)一個(gè)帶叉的紅色小圈圈。綜合完成之后,可以通過雙擊View RTL SchemaTIcs 來查看RTL 級(jí)結(jié)構(gòu)圖,察看綜合結(jié)構(gòu)是否按照設(shè)計(jì)意圖來實(shí)現(xiàn)電路。ISE 會(huì)自動(dòng)調(diào)用原理圖編輯器ECS 來瀏覽RTL 結(jié)構(gòu)。對于一個(gè)計(jì)數(shù)器,其RTL 結(jié)構(gòu)圖如圖5-3 所示,綜合結(jié)果符合設(shè)計(jì)者的意圖,調(diào)用了加法器和寄存器來完成邏輯。

圖5-3 經(jīng)過綜合后的RTL級(jí)結(jié)構(gòu)圖

2.綜合參數(shù)的設(shè)置

一般在使用XST 時(shí),所有的屬性都采用默認(rèn)值。其實(shí)XST 對不同的邏輯設(shè)計(jì)可提供豐富、靈活的屬性配置。下面對ISE9.1 中內(nèi)嵌的XST 屬性進(jìn)行說明。打開ISE 中的設(shè)計(jì)工程,在過程管理區(qū)選中“Synthesis –XST”并單擊右鍵,彈出界面如圖5-4 所示。

圖5-4 綜合選項(xiàng)

由圖5-4 可以看出,XST 配置頁面分為綜合選項(xiàng)(Synthesis OpTIons)、HDL 語言選項(xiàng)(HDL OpTIons) 以及特殊選項(xiàng)(Xilinx Specific OpTIons) 等三大類,分別用于設(shè)置綜合的全局目標(biāo)和整體策略、HDL 硬件語法規(guī)則以及賽靈思特有的結(jié)構(gòu)屬性。

1) 綜合選項(xiàng)參數(shù)

綜合參數(shù)配置界面如圖5-4 所示,包括8 個(gè)選項(xiàng),具體如下所列:

【Optimization Goal】:優(yōu)化的目標(biāo)。該參數(shù)決定了綜合工具對設(shè)計(jì)進(jìn)行優(yōu)化時(shí),是以面積還是以速度作為優(yōu)先原則。面積優(yōu)先原則可以節(jié)省器件內(nèi)部的邏輯資源,即盡可能地采用串行邏輯結(jié)構(gòu),但這是以犧牲速度為代價(jià)的。而速度優(yōu)先原則保證了器件的整體工作速度,即盡可能地采用并行邏輯結(jié)構(gòu),但這樣將會(huì)浪費(fèi)器件內(nèi)部大量的邏輯資源,因此,它是以犧牲邏輯資源為代價(jià)的。

【Optimization Effort】:優(yōu)化器努力程度。這里有【normal】和【high】兩種選擇方式。對于【normal】,優(yōu)化器對邏輯設(shè)計(jì)僅僅進(jìn)行普通的優(yōu)化處理,其結(jié)果可能并不是最好的,但是綜合和優(yōu)化流程執(zhí)行地較快。如果選擇【high】,優(yōu)化器對邏輯設(shè)計(jì)進(jìn)行反復(fù)的優(yōu)化處理和分析,并能生成最理想的綜合和優(yōu)化結(jié)果,在對高性能和最終的設(shè)計(jì)通常采用這種模式;當(dāng)然在綜合和優(yōu)化時(shí),需要的時(shí)間較長。

【Use Synthesis Constraints File】:使用綜合約束文件。如果選擇了該選項(xiàng),那么綜合約束文件XCF 有效。

【Synthesis Constraints File】:綜合約束文件。該選項(xiàng)用于指定XST 綜合約束文件XCF 的路徑。

【Global Optimization Goal】:全局優(yōu)化目標(biāo)。可以選擇的屬性包括有【AllClockNets】、【Inpad To
Outpad】、【Offest In Before】、【Offest Out After】、【Maximm Delay】。該參數(shù)僅對 器件有效,可用于選擇所設(shè)定的寄存器之間、輸入引腳到寄存器之間、寄存器到輸出引腳之間,或者是輸入引腳到輸出引腳之間邏
輯的優(yōu)化策略。

【Generate RTL Schematic】:生成寄存器傳輸級(jí)視圖文件。該參數(shù)用于將綜合結(jié)果生成RTL 視圖。

【W(wǎng)rite Timing Constraints】:寫時(shí)序約束。該參數(shù)僅對 有效,用來設(shè)置是否將HDL 源代碼中用于控制綜合的時(shí)序約束傳給NGC 網(wǎng)表文件,該文件用于布局和布線。

【Verilog 2001】:選擇是否支持Verilog 2001 版本。

HDL語言選項(xiàng)

HDL 語言選項(xiàng)的配置界面如圖5-5 所示,包括16 個(gè)選項(xiàng),具體如下所列:

圖5-5 HDL語言選項(xiàng)的配置界面選項(xiàng)

【FSM Encoding Algorithm】:有限狀態(tài)機(jī)編碼算法。該參數(shù)用于指定有限狀態(tài)機(jī)的編碼方式。選項(xiàng)有【Auto】、
【One-Hot】、【Compact】、【Sequential】、【Gray】、【Johnson】、【User】、【Speed1】、【None】編碼方式,默認(rèn)為【Auto】編碼方式。

【Safe Implementation】:將添加安全模式約束來實(shí)現(xiàn)有限狀態(tài)機(jī),將添加額外的邏輯將狀態(tài)機(jī)從無效狀態(tài)
調(diào)轉(zhuǎn)到有效狀態(tài),否則只能復(fù)位來實(shí)現(xiàn),有【Yes】、【No】兩種選擇,默認(rèn)為【No】。

【Case Implementation Sytle】:條件語句實(shí)現(xiàn)類型。該參數(shù)用于控制XST 綜合工具解釋和推論Verilog 的
條件語句。其中選項(xiàng)有【None】、【Full】、【Parallel】、【Full-Parallel】,默認(rèn)為【None】。 對于這四種選項(xiàng),區(qū)別如下:(1)【None】,XST 將保留程序中條件語句的原型,不進(jìn)行任何處理;(2)【Full】,XST 認(rèn)為條件語句是完整的,避免鎖存器的產(chǎn)生;(3)【Parallel】,XST 認(rèn)為在條件語句中不能產(chǎn)生分支,并且不使用優(yōu)先級(jí)編碼器;(4)【Full-Parallel】,XST 認(rèn)為條件語句是完整的,并且在內(nèi)部沒有分支,不使用鎖存器和優(yōu)先級(jí)編碼器。

【RAM Extraction】:存儲(chǔ)器擴(kuò)展。該參數(shù)僅對 有效,用于使能和禁止RAM 宏接口。默認(rèn)為允許使用RAM 宏接口。

【RAM Style】:RAM 實(shí)現(xiàn)類型。該參數(shù)僅對FPGA 有效,用于選擇是采用塊RAM 還是分布式RAM 來作為RAM 的實(shí)現(xiàn)類型。默認(rèn)為【Auto】。

【ROM Extraction】:只讀存儲(chǔ)器擴(kuò)展。該參數(shù)僅對FPGA 有效,用于使能和禁止只讀存儲(chǔ)器ROM 宏接口。默認(rèn)為允許使用ROM 宏接口。

【ROM Style】:ROM 實(shí)現(xiàn)類型。該參數(shù)僅對FPGA 有效,用于選擇是采用塊RAM 還是分布式RAM 來作為ROM 的實(shí)現(xiàn)和推論類型。默認(rèn)為【Auto】。

【Mux Extraction】:多路復(fù)用器擴(kuò)展。該參數(shù)用于使能和禁止多路復(fù)用器的宏接口。根據(jù)某些內(nèi)定的算法,對于每個(gè)已識(shí)別的多路復(fù)用/ 選擇器,XST 能夠創(chuàng)建一個(gè)宏,并進(jìn)行邏輯的優(yōu)化??梢赃x擇【Yes】、【No】和【Force】
中的任何一種,默認(rèn)為【Yes】。

【Mux Style】:多路復(fù)用實(shí)現(xiàn)類型。該參數(shù)用于胃宏生成器選擇實(shí)現(xiàn)和推論多路復(fù)用/ 選擇器的宏類型。可以選擇【Auto】、【MUXF】和【MUXCY】中的任何一種,默認(rèn)為【Auto】。

【Decoder Extraction】:譯碼器擴(kuò)展。該參數(shù)用于使能和禁止譯碼器宏接口,默認(rèn)為允許使用該接口。

【Priority Encoder Extraction】:優(yōu)先級(jí)譯碼器擴(kuò)展。該參數(shù)用于指定是否使用帶有優(yōu)先級(jí)的編碼器宏單元。

【Shift Register Extraction】:移位寄存器擴(kuò)展。該參數(shù)僅對FPGA 有效,用于指定是否使用移位寄存器宏單元。默認(rèn)為使能。

【Logical Shifter Extraction】:邏輯移位寄存器擴(kuò)展。該參數(shù)僅對FPGA 有效,用于指定是否使用邏輯移位寄存器宏單元。默認(rèn)為使能。

【XOR Collapsing】:異或邏輯合并方式。該參數(shù)僅對FPGA 有效,用于指定是否將級(jí)聯(lián)的異或邏輯單元合并成一個(gè)大的異或宏邏輯結(jié)構(gòu)。默認(rèn)為使能。

【Resource Sharing】:資源共享。該參數(shù)用于指定在XST 綜合時(shí),是否允許復(fù)用一些運(yùn)算處理模塊,如加法器、減法器、加/ 減法器和乘法器。默認(rèn)為使能。如果綜合工具的選擇是以速度為優(yōu)先原則的,那么就不考慮資源共享。

【Multiplier Style】:乘法器實(shí)現(xiàn)類型。該參數(shù)僅對FPGA 有效,用于指定宏生成器使用乘法器宏單元的方式。選項(xiàng)有【Auto】、【Block】、【LUT】和【Pipe_LUT】。默認(rèn)為【Auto】。選擇的乘法器實(shí)現(xiàn)類型和所選擇的器件有關(guān)。

2) 賽靈思特殊選項(xiàng)

賽靈思特殊選項(xiàng)用于將用戶邏輯適配到賽靈思芯片的特殊結(jié)構(gòu)中,不僅能節(jié)省資源,還能提高設(shè)計(jì)的工作頻率,其配置界面如圖5-6 所示,包括10 個(gè)配置選項(xiàng),具體如下所列。

圖5-6 賽靈思指定的選項(xiàng)

【Add I/O Buffers】:插入I/O 緩沖器。該參數(shù)用于控制對所綜合的模塊是否自動(dòng)插入I/O 緩沖器。默認(rèn)為自動(dòng)插入。

【Max Fanout】:最大扇出數(shù)。該參數(shù)用于指定信號(hào)和網(wǎng)線的最大扇出數(shù)。這里扇出數(shù)的選擇與設(shè)計(jì)的性能有直接的關(guān)系,需要用戶合理選擇。

【Register Duplication】:寄存器復(fù)制。該參數(shù)用于控制是否允許寄存器的復(fù)制。對于高扇出和時(shí)序不能滿足要求的寄存器進(jìn)行復(fù)制,可以減少緩沖器輸出的數(shù)目以及邏輯級(jí)數(shù),改變時(shí)序的某些特性,提高設(shè)計(jì)的工作頻率。默認(rèn)為允許寄存器復(fù)制。

【Equivalent Register Removal】:等效寄存器刪除。該參數(shù)用于指定是否把寄存器傳輸級(jí)功能等效的寄存器刪除,這樣可以減少寄存器資源的使用。如果某個(gè)寄存器是用賽靈思的硬件原語指定的,那么就不會(huì)被刪除。默認(rèn)為使能。

【Register Balancing】:寄存器配平。該參數(shù)僅對FPGA 有效,用于指定是否允許平衡寄存器??蛇x項(xiàng)有【No】、【Yes】、【Forward】和【Backward】。采用寄存器配平技術(shù),可以改善某些設(shè)計(jì)的時(shí)序條件。其中【Forward】
為前移寄存器配平,【Backward】為后移寄存器配平。采用寄存器配平后,所用到的寄存器數(shù)就會(huì)相應(yīng)地增減。默認(rèn)為寄存器不配平。

【Move First Flip-Flop Stage】:移動(dòng)前級(jí)寄存器。該參數(shù)僅對FPGA 有效,用于控制在進(jìn)行寄存器配平時(shí),是否允許移動(dòng)前級(jí)寄存器。如果【Register Balancing】的設(shè)置為【No】,那么該參數(shù)的設(shè)置無效。

【Move Last Flip-Flop Stage】:移動(dòng)后級(jí)寄存器。該參數(shù)僅對FPGA 有效,用于控制在進(jìn)行寄存器配平時(shí),是否允許移動(dòng)后級(jí)寄存器。如果【Register Balancing】的設(shè)置為【No】,那么該參數(shù)的設(shè)置無效。

【Pack I/O Registers into IOBs】:I/O 寄存器置于輸入輸出塊。該參數(shù)僅對FPGA 有效,用于控制是否將邏輯設(shè)計(jì)中的寄存器用IOB 內(nèi)部寄存器實(shí)現(xiàn)。在賽靈思系列FPGA 的IOB 中分別有輸入和輸出寄存器。如果將設(shè)計(jì)中的第一級(jí)寄存器或最后一級(jí)寄存器用IOB 內(nèi)部寄存器實(shí)現(xiàn),那么就可以縮短IO 引腳到寄存器之間的路徑,這通??梢钥s短大約1~2ns 的傳輸時(shí)延。默認(rèn)為【Auto】。

【Slice Packing】:優(yōu)化Slice 結(jié)構(gòu)。該參數(shù)僅對FPGA 有效,用于控制是否將關(guān)鍵路徑的查找表邏輯盡量配置在同一個(gè)Slice 或者CLB 模塊中,由此來縮短LUT 之間的布線。這一功能對于提高設(shè)計(jì)的工作頻率、改善時(shí)序特性是非常有用的。 默認(rèn)為允許優(yōu)化Slice 結(jié)構(gòu)。

【Optimize Instantiated Primitives】:優(yōu)化已例化的原語。該參數(shù)控制是否需要優(yōu)化在HDL 代碼中已例化的原語。默認(rèn)為不優(yōu)化。



關(guān)鍵詞: FPGA 賽靈思

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉