原文:http://blog.sina.com.cn/s/blog_6254a8ca0100i0wr.htmlhtml
原文也是轉的,哈哈,你們多轉轉,轉轉更健康。刪除了一些Xilinx的東西app
前言編輯器
綜合是將咱們的設計轉化爲FPGA能夠讀懂的配置文件的第一個步驟。本文努力從0基礎開始向你們說明綜合的基本知識和高級技巧。
話說全部的功能都有它應用的環境。在瞭解某個按鈕選項有某個功能的時候,咱們更應該瞭解應該在何時什麼狀況使用它。
因此我以這種問答的形式,向你們展現綜合過程當中可能遇到的方方面面的問題以及解決的方法。工具
-----------基礎知識--------------oop
1. 什麼是綜合?
綜合就是把HDL語言/原理圖轉換爲綜合網表的過程。佈局
2. 什麼是綜合網表?
綜合網表就是綜合的結果啦。
綜合網表的業界標準是EDIF格式。文件後綴一般爲.edn, .edf, .edif。EDIF網表是能夠用文本編輯器打開的文本文件。
Xilinx自家的綜合結果是NGC網表。NGC網表是二進制的文件,不能用文本編輯器打開觀察。性能
3. 綜合網表中包含一些什麼內容?
綜合網表中除了包含從HDL語言中infer(推斷)出的與門、非門等組合邏輯和寄存器等時序邏輯以外,還包含FPGA特有的各類原語(Primitive)好比LUT,BRAM,DSP48(Xilinx),甚至PowerPC(Xilinx),PCIe等硬核模塊,以及這些模塊的屬性和約束信息。優化
4. 綜合工具備哪些?
Xilinx自家的XST,Synopsys(收購了Synplicity)的Synplify,Mentor Graphic的Precision 都是使用最普遍的綜合工具。ui
5. 這些綜合工具備什麼特色呢?
XST - 隨ISE自帶,免費,對新器件支持快。可是對loop循環支持不如Synpilfy。綜合結果的時序有時沒有Synplify好。
Synplify - 應用最普遍。綜合結果的時序性能和佔用面積都不錯,大器件的綜合時間也相比XST有優點。可是很是貴,對新器件支持比XST晚一拍。
Precison - 沒用過,不發表評論。spa
--------複製寄存器相關事項--------
(Altera的參考,當須要產生大量的寄存器時)
1. 何時要複製寄存器?
- Fanout太多致使延時增大(在FPGA中不是最主要的因素)
- Fanout太分散相距太遠致使佈局佈線後出現過長的走線
2. 複製寄存器有哪些方法?
- 手動做HDL Coding,而且爲了防止這些寄存器再次被綜合器優化合並,須要將「Equivalant Register Removal」設置爲False。
- 讓工具自動複製。爲須要複製的寄存器添加Max_Fanout約束,並關閉Resource Sharing和Equivalent Register Removal。注意當Max_Fanout約束設置得太小時,可能不會生效。
--------使用BlackBox注意事項------------
1. 什麼是BlackBox
- 一個大的設計中能夠用到一系列網表文件做爲輸入的一部分而並不所有使用HDL文件。
當綜合這個大設計時綜合器不須要知道這個網表文件是怎樣實現的,而只須要知道它的輸入輸出接口就能夠了。這樣的網表就稱爲黑盒子,由於咱們不須要看到它的內部狀況。
- 一般付費IP都會以BlackBox的形式
2. 如何使用BlackBox
- BlackBox網表能夠是EDIF或NGC文件。
- 每一個BlackBox網表都須要有一個與之相對應的HDL文件來註明它的端口。這個HDL只說明BlackBox的端口信息,而不提供具體實現信息。這個只提供端口信息的HDL文件稱爲Wrapper。Wrapper的名字一般須要與BlackBox網表的名字相同。
- 在ISE工程中使用BlackBox時只須要將它的Wrapper添加到工程中。而後像普通的模塊同樣在其上層聲明和例化就能夠使用。
- BlackBox網表文件能夠放在ISE工程目錄中,也能夠放在其餘任意文件夾內。當不放在ISE工程目錄時,須要在Translate屬性中將Macro Search Path指向這個目錄。多個目錄使用"|"分割。
3. 如何製做BlackBox- BlackBox只是普通網表而已。XST的綜合結果就能夠直接做爲BlackBox使用。- 一般BlackBox外部還會鏈接其餘邏輯,因此BlackBox中通常不插入IOBUF。在XST屬性中去除Insert IO Buffer的選項。