国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

QIC 在縮短大容量FPGA編譯時間中的作用

發布時間:2012-12-13 13:11    發布者:1770309616
關鍵詞: QIC , FPGA , 編譯
前言
按照相對論的理論,時間也是可以被拉長縮短的,只不過需要巨大的能量支撐著您達到一個和光速可比擬的高速度而已。這話說著輕松,你我心里都明白,估計咱們的有生之年是看不到這樣的情景的……
回到可編程邏輯器件領域,隨著65nm、40nm,乃至目前的28nm深亞微米工藝的采用,廠家生產出了越來越大,也越來越復雜的FPGA器件。而用戶們在為FPGA不斷增強的功能和不斷下降的單位成本而欣喜不已的同時,也在為相關EDA軟件的性能滯后所帶來的開發效率相對降低而苦惱不已,尤其是對大容量FPGA芯片動輒10到20個小時的編譯時間可謂怨氣沖天。筆者在許多次面對一線的FPGA工程師時,都聽到了這樣類似的話:要是編譯時間能壓一壓就好了!
Altera不能真的壓縮時間,但我們能改變“速度”!從數年前的版本開始,Quartus2軟件中就整合了一種新技術,或者說一種新的設計流程:增量式編譯(Incremental Compilation)。它是ALTERA為解決大容量FPGA設計編譯時間太長的問題給出的一個新式工具!您,了解它嗎?
增量式編譯原理及流程
增量式編譯QIC的原理很容易理解:對一個復雜的設計而言,肯定是需要做一定的功能劃分,由不同的子功能模塊來實現。那么在設計進入后期比較成熟的時候,前后兩次編譯的設計版本中,會有很大部分的電路邏輯都是相同的(沒有修改),如果能在后一次編譯中,重復利用前一次編譯中未改變部分的編譯結果,也就是相應部分的布局布線信息,那么就能把這部分邏輯所消耗的布局布線時間節約下來,從而在很大程度上縮短整個設計的編譯時間。當然,聰明的讀者都能想到,這樣的編譯方式,除了能縮短編譯時間,還能支持許多別的用途,比如IP設計交付、團隊開發、不改變正常設計結果插入調試接口等。這些確實都是ALTERA 增量式編譯能夠實現的功能,但在本文中我們只闡述QIC在縮短編譯時間方面的作用。
增量式編譯原理雖然簡單,但要在FPGA的EDA軟件中實現,卻是一個復雜的系統工程。它不是簡單地在軟件中增加一個功能模塊,而是對編譯處理流程多方面的改變和增強!請比較圖1和圖2兩幅附圖:圖1是傳統的FPGA編譯流程(Altera名稱:Flat compilation),圖2則是增量式編譯流程的示意圖。我們很容易發現增量式編譯流程復雜了許多,不僅引入了一些新的概念,比如設計分區(partition)、分區綜合后網表、分區布局/布線后網表等,同時加入了新的處理階段——分區合并(partition merging),而且對分析綜合(Analysis&Synthesis)和布局布線(fitter)階段進行了改進,增加了許多針對分區的具體操作。
圖1 Flat Compilation 流程
圖2 QIC增量式編譯流程
經過幾年的研究與實踐,QuartusII的增量式編譯已逐步完善,無論是在可操作性、穩健性方面,還是在縮短編譯時間的效果方面,都十分出色。筆者參與的幾個客戶項目中,通過QIC的實施,都得到了50%左右的編譯時間節約,極大提高了客戶的開發效率。下面,我將結合這些實際項目中的經驗,介紹如何實踐利用QIC來高效的縮短設計編譯時間。
QIC實踐
QIC的效果評估
在討論具體如何使用QIC之前,先考慮一個問題:如果讀者在您的工作中使用了增量式編譯QIC,怎么評估它的效能呢?
您需要至少做3輪實驗,才能看到QIC節約編譯時間的效果。首先,需要把您的設計用傳統編譯流程Flat Compilation進行編譯,記錄下各階段所花費的時間。然后,創建合理的設計分區,指定分區網表性質,進行第二次編譯,得到QIC各個分區的初始網表,并請記錄下操作時間。第三次編譯,您可以選擇修改設計中的某一個分區,然后再編譯一次,記錄下操作花費的時間。將第三次的編譯時間和第一次相比,正常的話應當看到非常明顯的時間節約,這才是QIC增量式編譯在編譯時間節約方面的體現。
值得注意的是,第二次編譯中已經使用了QIC,但往往花費時間和第一次編譯差不多,有時還有增長。許多人為此懷疑QIC的性能,認為QIC沒有效果甚至惡化了編譯時間。這其實是一種誤解!為什么呢?回到圖2,我們可以看到,QIC流程在Analysis&Synthesis和fitter之間增加了一個新的處理階段——分區合并,它是需要額外花費在第一次Flat Compilation中不存在的時間。而且,由于這是創建分區后的第一次編譯,所有分區的網表都是空白的,也就是說整個設計都需要被編譯、分析、綜合、布局布線等的工作量和第一次編譯是類似的,因此這部分花費的時間也是差不多。把這兩部分時間加起來,自然第2次編譯時間有可能會比第一次長了。只有當進行第3次編譯的時候,各個分區都有可重用的網表了,才有可能將那些沒有設計改變的分區的網表重用,從而節約綜合和布局布線階段的時間,達到整體編譯時間的節約。
圖3是筆者支持的一個客戶所進行的QIC增量式編譯性能評估的結果總結。客戶的設計是高端路由器中的包處理應用,使用了ALTERA公司的Stratix4GX530器件,邏輯利用率大約是60%。客戶的編譯硬件是一臺高性能服務器:、
圖3 Z客戶增量式編譯評估實驗效果
• CPU:16core Intel(R) Xeon(R) CPU E7420 @2.13GHz
• Memory:64GB
即使是如此,在不使用QIC的情況下,客戶的每次編譯都需要12到13個小時。而在使用QIC并根據QIC指導原則進行了必要的設計優化后,最好的實驗結果是可以在6個小時左右(大約350分鐘)完成一次編譯,節約了接近55%的總編譯時間!從圖3中很容易看出前面文字描述的幾個特點:
1. 第一次編譯和第二次編譯的總時間差不多(750 VS 730)
2. 第三次編譯中,Analysis&Synthesis操作的時間,fitter操作得時間都比第一次編譯有非常明顯的降低;
3. 從原理上看,QIC的網表重用對Assembly和時序分析沒有直接影響。因此三次編譯中,Assembler和時序分析所花費的時間是差不多的。
QIC指導原則
合理創建分區
Quartus中的“分區”是和設計層次緊密關聯的。任何設計,無論簡單還是復雜,都會有一個頂層模塊(top-level module),Quartus自動將它設置為一個默認分區(命名為top),不需要用戶設定。而別的分區,需要用戶手動創建。創建分區的方法很簡單,在Quartus GUI界面左上角的Hierarchy窗口,選擇想創建分區的實體,右鍵喚出的菜單中選擇“Design Partition”,然后在下一級菜單中選擇”Setting as Design Partition”,分區就創建成功了。
從圖2可以看出,分區(Partition)是增量式編譯中的一個關鍵概念。Altera規定:只要是有完整設計邊界的設計實體,無論它在設計的哪一層次,都可以用它來創建設計分區。也就是說,Quartus II中,設計中任何層次中的任何一個設計模塊,可以作為一個設計分區;一個設計中也可以包含不止一個設計分區;即使是在設計的同一層次,也可有多個分區。同時,請注意:分區之間沒有層次關系,任何邏輯只能歸屬于某一個分區。以圖5為例,A模塊由A1、B1、C1三個子模塊組成。如果A模塊被設置為分區,Quartus會用模塊名來為此分區命名:A分區。那么,A分區中就會包含A1、B1、C1三個子模塊的所有邏輯。但如果把B1子模塊也創建為分區,那么,A分區中就只包含A1、C1兩個子模塊的邏輯,B1子模塊的邏輯只屬于新的B1分區了。
圖4 在Quartus GUI中創建分區示意
圖5 分區與邏輯歸屬變化
圖6 分區合并報告
圖7 分區綜合后資源使用統計
圖8 Design partition window
圖9 Design partition window
從前面分區的性質和特點可以看出,對包含多個功能模塊的多層次復雜設計,可以有許多種設置分區的方案。但需要注意的是:不是任何一種分區方案都能帶來編譯時間的節約,惡劣的設計分區甚至能夠導致編譯失敗!如何得到高效合理的設計分區呢?我們需要遵從以下原則:
a. 不要創建太多的分區,一般性的設計建議分區的數量控制在4~8個之間;
b. 不要創建太小的分區,一般建議不要小于1000個LE或者ALM;
c. 外設接口邏輯和內核處理邏輯放到不同的設計分區;
d. 相同或相近功能的外設接口,如果管腳位置相鄰,可以放在同一個分區,否則創建不同的設計分區;
e. 不同的分區方案中,分區之間的聯接少的方案更優。
針對QIC優化代碼
除了分區方案,設計代碼也對QIC的性能有直接的影響,需要設計者針對QIC做一些特定的代碼優化。優化主要有兩方面,一方面是升級所使用的Megacore IP到最新的版本;另一方面則是一些更嚴格的編碼規則。
之所以建議升級Megacore IP到最新的版本,這是由于QIC增量式編譯常常需要調用Megacore IP的一些特性來支持一些特定操作,而這些特性通常在較新的版本中才能得到比較好的支持,而且隨著QIC的成熟不斷改進。筆者就曾經在一個嘗試使用QIC的項目中,發現客戶的設計繼承了一部分老項目中的代碼,其中包含好幾個Quartus 9.1版本的DDR EMIF控制器,占了整個設計使用資源的20%左右。當說服客戶把這幾個控制器升級到當時最新的Quartus 11版本,發現QIC所能節約的編譯時間增加了近1個小時,大約15%的整體編譯時間。
之所以QIC要求遵從更嚴格的編碼規則,這是由于Quartus在有分區存在的時候,是不對跨越分區邊界的邏輯進行綜合優化,一些在Flat compilation中可以被軟件優化掉的不良代碼,在QIC的流程中會造成嚴重的影響。這些嚴格的編碼規則包括:
a. 不要在底層分區邊界上使用三態信號和雙向端口;
Altera器件中,只有在器件的輸出管腳上才能實現真正的三態信號,在器件內部,三態驅動是依靠多路器邏輯模擬實現,這兩點往往要求跨層的編譯優化,而這在增量式編譯流程中是做不到的,會導致編譯失敗。只有一種情形例外,就是內部三態邏輯所涉及的所有信號都在同一個底層分區中,Quartus可以依靠多路器邏輯模擬此三態邏輯。雙向端口也類似,只有在此雙向邏輯所涉及的所有信號都在一個底層分區中,QIC才能正常進行。
b. 分區的輸入輸出最好都通過寄存器實現,資源有限的情況下至少保證跨分區的連接中的一端是寄存器(reg-in或者reg-out);
雖然這一規則有一定的實現難度,但它可以避免在使用增量式編譯流程的時候,那些跨分區邊界的信號的延遲出現大的惡化。如果不能實現這一規則,跨分區連接的兩端有可能都是組合邏輯。在Flat Compilation中,這兩組組合邏輯會被綜合優化到一起來布局布線,時序容易滿足;但在是增量式編譯中,由于不能跨區優化,這2組組合邏輯的分別布局布線,那穿過這兩組邏輯的路徑延遲將有可能變得很長,出現時序違背。
c. 避免不包含任何處理邏輯的信號環路穿越分區邊界;
也是由于不能跨區優化,這樣的信號環在Flat Compilation中可以被優化消除掉,在增量式編譯中就不能消除,浪費資源。
d. 避免跨分區的常量信號
類似C,跨區的常量信號不能在目的端分區中直接實現(“0”連接地層,“1”連接電源層),而必須占用走線資源實現。
關注相關報告信息
使用QIC時,Quartus中會產生很多QIC專有的消息,因此在編譯報告中也增加一些新的章節。這些報告章節,對我們了解QIC的運行情況有直接的幫助,尤其是當一些異常情況出現,往往需要我們通過閱讀這些報告章節來進行調試。比較重要的報告有:
a. Partition Merge report
分區合并的報告章節如下圖所示,分別提供在這個階段網表的使用情況(netlist Types Used),各個分區的綜合警告信息(Partition Warning)和綜合后各類資源使用情況(Partition Statistics)。
b. Incremental compilation section in Fitter report
在Fitter報告中,也增加了增量式編譯的章節。其中,Incremental Compilation Preservation Summary匯總了設計中被保留的布局和布線比例;Incremental Compilation Partition setting 說明了設計中所有分區的創建方式和網表的保留級別(Preservation level);Incremental Compilation Placement Preservation給出了每一個分區中節點保留的信息;Incremental Compilation Routing Preservation則是每個分區中布線保留的信息。
c. Design partition window
這個窗口默認是不在Quartus 界面中顯示的,用戶需要通過Quartus菜單欄“Assignments”->”Design partition window”打開這個窗口。這個窗口給出可配置分區的當前設置及各個網表文件的時間戳信息,并且可以在此窗口中快速修改分區使用的網表類型(Netlist Type)和Fitter網表的保留級別(Fitter Preservation Level)。
結束語
在本文中,向大家介紹了增量式編譯的原理、過程和一些性能表現,同時給出了使用QIC需要注意的一些指導原則。華為、中興等客戶的多個項目實踐已經證明QIC是一個可以用來解決大容量FPGA設計編譯時間太長的有效手段。增量式編譯QIC,值得您去嘗試!
作者李毅信息:Altera亞太區高級設計專家
本文地址:http://m.qingdxww.cn/thread-102912-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区免费视频| 日本少妇内射视频播放舔| 国产午夜精品鲁丝片| 蜜桃久久久亚洲精品成人| 亚洲欧美精品一区天堂久久| 人妖另类重口免费观看| 亚州激情| 一个免费观看高清hd| 韩国伦理三级| 伊人久久大香线蕉电影院| 青青青视频精品中文字幕| 亚洲ss| 一二三四视频社区在线中文1| 国产一区私人高清影院| 一个人免费观看完整视频日本| 欧美一级高清片免费一级| 亚洲国产成人久久精品hezyo| 一级aaa毛片| 久久精品久精品99热| 试看做受120秒免费午夜剧场| 亚洲高清视频一区| 天天射天天干天天| 亚洲视频国产精品| 好男人在线视频| 日韩短视频| 亚洲欧美乱综合图片区小说区| 亚洲成人精品久久| 用jiojio帮我足| 久久伊人精品青青草原2021| 日韩特级毛片| 日韩高清一级| 午夜精品视频在线观看| 国产 浪潮AV性色四虎| 亚洲国产AV精品一区二区蜜芽| 午夜精品影院| 天天干夜夜叭| 一二三四视频在线社区3| 久久成人国产精品一区二区| 天天影视综合色| 日韩黄色大片免费看| 小兰被扒开内裤露出p|