增量式編譯QIC大幅縮短FPGA編譯時間
前言
本文引用地址:http://2s4d.com/article/189670.htm按照相對論的理論,時間也是可以被拉長縮短的,只不過需要巨大的能量支撐著您達到一個和光速可比擬的高速度而已。這話說著輕松,你我心里都明白,估計咱們的有生之年是看不到這樣的情景的……
回到可編程邏輯器件領域,隨著65nm、40nm,乃至目前的28nm深亞微米工藝的采用,廠家生產出了越來越大,也越來越復雜的FPGA器件。而用戶們在為FPGA不斷增強的功能和不斷下降的單位成本而欣喜不已的同時,也在為相關EDA軟件的性能滯后所帶來的開發(fā)效率相對降低而苦惱不已,尤其是對大容量FPGA芯片動輒10到20個小時的編譯時間可謂怨氣沖天。筆者在許多次面對一線的FPGA工程師時,都聽到了這樣類似的話:要是編譯時間能壓一壓就好了!
Altera不能真的壓縮時間,但我們能改變“速度”!從數年前的版本開始,Quartus2軟件中就整合了一種新技術,或者說一種新的設計流程:增量式編譯(Incremental Compilation)。它是ALTERA為解決大容量FPGA設計編譯時間太長的問題給出的一個新式工具!您,了解它嗎?
增量式編譯原理及流程
增量式編譯QIC的原理很容易理解:對一個復雜的設計而言,肯定是需要做一定的功能劃分,由不同的子功能模塊來實現。那么在設計進入后期比較成熟的時候,前后兩次編譯的設計版本中,會有很大部分的電路邏輯都是相同的(沒有修改),如果能在后一次編譯中,重復利用前一次編譯中未改變部分的編譯結果,也就是相應部分的布局布線信息,那么就能把這部分邏輯所消耗的布局布線時間節(jié)約下來,從而在很大程度上縮短整個設計的編譯時間。當然,聰明的讀者都能想到,這樣的編譯方式,除了能縮短編譯時間,還能支持許多別的用途,比如IP設計交付、團隊開發(fā)、不改變正常設計結果插入調試接口等。這些確實都是ALTERA 增量式編譯能夠實現的功能,但在本文中我們只闡述QIC在縮短編譯時間方面的作用。
增量式編譯原理雖然簡單,但要在FPGA的EDA軟件中實現,卻是一個復雜的系統(tǒng)工程。它不是簡單地在軟件中增加一個功能模塊,而是對編譯處理流程多方面的改變和增強!請比較圖1和圖2兩幅附圖:圖1是傳統(tǒng)的FPGA編譯流程(Altera名稱:Flat compilation),圖2則是增量式編譯流程的示意圖。我們很容易發(fā)現增量式編譯流程復雜了許多,不僅引入了一些新的概念,比如設計分區(qū)(partition)、分區(qū)綜合后網表、分區(qū)布局/布線后網表等,同時加入了新的處理階段——分區(qū)合并(partition merging),而且對分析綜合(AnalysisSynthesis)和布局布線(fitter)階段進行了改進,增加了許多針對分區(qū)的具體操作。

圖1 Flat Compilation 流程

圖2 QIC增量式編譯流程
經過幾年的研究與實踐,QuartusII的增量式編譯已逐步完善,無論是在可操作性、穩(wěn)健性方面,還是在縮短編譯時間的效果方面,都十分出色。筆者參與的幾個客戶項目中,通過QIC的實施,都得到了50%左右的編譯時間節(jié)約,極大提高了客戶的開發(fā)效率。下面,我將結合這些實際項目中的經驗,介紹如何實踐利用QIC來高效的縮短設計編譯時間。
評論