這是一個(gè)在邏輯設計中注意事項列表,由此引起的錯誤常使得設計不可靠或速度較慢,為了提高設計性能和提高速度的可靠性,必須確定設計通過(guò)所有的這些檢查。 可靠性 1. 為時(shí)鐘信號選用全局時(shí)鐘緩沖器BUFG! 不選用全局時(shí)鐘緩沖器的時(shí)鐘將會(huì )引入偏差。 2. 只用一個(gè)時(shí)鐘沿來(lái)寄存數據 使用時(shí)鐘的兩個(gè)沿是不可靠的,因為時(shí)鐘的某沿或者兩個(gè)沿會(huì )漂移。如果時(shí)鐘有漂移而且你只使用了時(shí)鐘的一個(gè)沿,你就降低了時(shí)鐘邊沿漂移的風(fēng)險。這個(gè)問(wèn)題可以這樣來(lái)解決:就是允許CLKDLL自動(dòng)糾正時(shí)鐘的占空比,以達百分之五十的占空比。否則強烈建議只使用一個(gè)時(shí)鐘沿。 3. 除了用CLKDLL或DCM產(chǎn)生的時(shí)鐘外不要在內部產(chǎn)生時(shí)鐘 這包括產(chǎn)生門(mén)控時(shí)鐘和分頻時(shí)鐘。作為替代,可以建立時(shí)鐘使能或使用CLKDLL或DCM來(lái)產(chǎn)生不同的時(shí)鐘信號。對于一個(gè)純同步設計,建議在任何可能的情況下只使用一個(gè)時(shí)鐘。 4. 不要在內部產(chǎn)生異步的控制信號(例如復位信號或者置位信號) 內部產(chǎn)生的異步控制信號會(huì )產(chǎn)生毛刺,作為替代,可以產(chǎn)生一個(gè)同步的復位/置位信號。要比需要作用的時(shí)刻提前一個(gè)時(shí)鐘周期進(jìn)行這個(gè)異步信號的同步。 5. 不要使用沒(méi)有相位關(guān)系的多個(gè)時(shí)鐘 也許并不總能避免這個(gè)條件,在這些情況下確定已使用了適當的同步電路來(lái)跨越時(shí)鐘域,并已適當地約束了跨越時(shí)鐘域的路徑。 6. 不要使用內部鎖存器 內部鎖存器會(huì )混淆時(shí)序,而且常常會(huì )引入另外的時(shí)鐘信號。內部鎖存器在透明門(mén)打開(kāi)時(shí)可以被看成是組合邏輯,但在門(mén)被鎖存時(shí)可以被看成是同步元件,這將會(huì )混淆時(shí)序分析。內部鎖存器常常會(huì )引入門(mén)控時(shí)鐘,門(mén)控時(shí)鐘會(huì )產(chǎn)生毛刺使得設計變得不可靠。 性能 1. 邏輯級的時(shí)延不要超過(guò)時(shí)序預算的百分之五十 每個(gè)路徑邏輯級時(shí)延可以在邏輯級時(shí)序報告或布局后時(shí)序報告中找到,詳細分析了每個(gè)路徑之后,時(shí)序分析器將生成每個(gè)路徑時(shí)延的統計量,檢查一下總共的邏輯級時(shí)延,確保不超過(guò)時(shí)序預算的百分之五十。 2. IOB 寄存器 IOB寄存器提供了最快的時(shí)鐘到輸出和輸入到時(shí)鐘的時(shí)延。首先,有一些限制。 對于輸入寄存器在從管腳到寄存器間不能有組合邏輯存在。對于輸出寄存器,在寄存器和管腳之間也不能有組合邏輯存在。對于三態(tài)輸出,在IOB中的所有的寄存器必須使用同一個(gè)時(shí)鐘信號和復位信號,而且IOB三態(tài)寄存器必須低電平有效才能放到IOB中(三態(tài)緩沖器低電平有效,所以在寄存器和三態(tài)緩沖器之間不需要一個(gè)反相器)。 必須使軟件能夠選用IOB寄存器,可以設置全局實(shí)現選項:為輸入、輸出或輸入輸出選擇IOB寄存器。缺省值為關(guān) off。 你也可在綜合工具或在用戶(hù)約束文件UCF中設定,使得能夠使用IOB寄存器。句法為: INST IOB = TRUE; 3. 對于關(guān)鍵的輸出選擇快速轉換速率 可以為L(cháng)VCMOS和LVTTL電平選擇轉換速率,快速的轉換速率會(huì )降低輸出時(shí)延,但會(huì )增加地彈,所以必須在仔細考慮的基礎之上選擇快速轉換速率。 4. 流水邏輯 如果你的設計允許增加延遲,對組合邏輯采用流水操作可以提高性能。在Xilinx的FPGA中有大量的寄存器,對每一個(gè)四輸入LUT有一個(gè)對應的寄存器,在犧牲延遲的情況下,利用這些寄存器可以增加數據吞吐量。 5. 為四輸入的LUT結構進(jìn)行代碼優(yōu)化 記住每一個(gè)查找表可以建立一個(gè)四輸入的組合邏輯函數。如果需要更大的功能,可根據“四輸入組合邏輯”這個(gè)特性,分析、優(yōu)化實(shí)現該功能所需的查找表的數目。 6. 使用Case語(yǔ)句而不是if-then-else語(yǔ)句 復雜的if-then-else語(yǔ)句通常會(huì )生成優(yōu)先級譯碼邏輯,這將會(huì )增加這些路徑上的組合時(shí)延(現在大部分綜合工具,可以把if-else的優(yōu)先級邏輯層次打平)。用來(lái)產(chǎn)生復雜邏輯的Case語(yǔ)句通常會(huì )生成不會(huì )有太多時(shí)延的并行邏輯。對于Verilog,可以使用約束parallel_case。 7. 多用Xilinx自帶Core generate Core generate針對 Xilinx的結構進(jìn)行了優(yōu)化,許多塊都可以允許用戶(hù)配置,包括大小、寬度和流水延遲。查看設計中的關(guān)鍵路徑,是否可以在核生成器中產(chǎn)生一個(gè)核來(lái)提高關(guān)鍵路徑性能。避免由代碼來(lái)推斷,又麻煩,又不可靠。 8. FSM的設計限制在一個(gè)層次中 為了允許綜合工具完全優(yōu)化FSM,它必須在它自己的塊中優(yōu)化。如果不是這樣的話(huà),這將使得綜合工具將FSM邏輯和它周?chē)倪壿嬕黄饍?yōu)化。FSM不能包括任何的算術(shù)邏輯、數據通路邏輯或者其它與狀態(tài)機不相關(guān)的組合邏輯。 9. 使用兩個(gè)進(jìn)程或always塊的有限狀態(tài)機 下一個(gè)狀態(tài)和輸出譯碼邏輯必須放在獨立的進(jìn)程或always塊中,這將不允許綜合工具在輸出和下一個(gè)狀態(tài)譯碼邏輯之間共享資源。便于代碼維護。 10. 使用一位有效編碼(one-hot、gray)FSM 一位有效編碼通常會(huì )在富含寄存器的FPGA中提供最高性能的狀態(tài)機。 11. 為每一個(gè)葉級(leaf-level)塊提供寄存輸出 葉級塊是可以推論的邏輯塊,而結構級(structural-level)的塊僅例化較底層的塊,這樣就建立了層次。如果葉級塊是寄存輸出,則可使綜合工具保留層次。這可使分析這些代碼的靜態(tài)時(shí)序變得比較容易。對module與module之間的邊界信號(用時(shí)鐘同步)進(jìn)行寄存輸出,可以使得各個(gè)塊之間有確定的同步時(shí)序關(guān)系。 12. 不同的計數器風(fēng)格 二進(jìn)制計數器是非常慢的。如果二進(jìn)制計數器是關(guān)鍵路徑,可以考慮使用不同風(fēng)格的計數器LFSR、Pre-scalar或Johnson。 13. 設計必須被層次化的分成不同的功能塊 首先是較頂層的功能塊,然后是較底層的塊,也應該包括特定技術(shù)的塊。設計層次化使得設計更可讀、更易調試、更易復用。 14. 高扇出網(wǎng)絡(luò )需要復制寄存器 可以通過(guò)XST或者synplify pro等綜合工具的綜合選項來(lái)進(jìn)行控制。 15. 利用四種全局約束來(lái)對設計進(jìn)行全局的約束 周期(對每個(gè)時(shí)鐘),輸入偏移、輸出偏移、管腳到管腳的時(shí)間。也許會(huì )有針對多周期路徑、失敗路徑和關(guān)鍵路徑的其它約束,但是必須從這四個(gè)全局約束開(kāi)始。 信盈達靠技術(shù)打天下 以下課程可免費試聽(tīng)C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。 想學(xué)習的你和我聯(lián)系預約就可以免費聽(tīng)課了。 宋工企鵝號:35--24-65--90-88 Tel/WX:173--17--95--19--08 |
專(zhuān)業(yè)PCB線(xiàn)路板打樣以及批量生產(chǎn) 雙面板:10*10以?xún)?0pcs價(jià)格:50元 四層板:10*10以?xún)?0pcs價(jià)格:200元 六層板:10*10以?xún)?0pcs價(jià)格:600元 雙面板:批量?jì)r(jià)格300-350元/平米,量大從優(yōu)! 四層板:批量?jì)r(jià)格600-800元/平米,量大從優(yōu)! 六層板:批量?jì)r(jià)格1000-1200元/平米,量大從優(yōu)! 打樣加急最快可做8小時(shí)!承諾:100%飛針測試。 深圳市天鑫昊電子有限公司 24小時(shí)業(yè)務(wù)聯(lián)系電話(huà):18038018833謝生 在線(xiàn)詢(xún)價(jià)QQ:3345777356 網(wǎng)址:www.txhpcb.com |