對于減少Quartus II的編譯時(shí)間的方法,可從三個(gè)角度進(jìn)行考慮。
第一,從開發(fā)所使用的計(jì)算機(jī)入手,選擇合適的CPU、操作系統(tǒng)并進(jìn)行合理的設(shè)置從而提高編譯速度;
第二,從Quartus II軟件入手,對編譯相關(guān)的選項(xiàng)進(jìn)行合理設(shè)置,從而提高編譯效率;
第三,針對具體的工程,采用增量編譯的方法,合理地進(jìn)行分區(qū)和設(shè)置,從而減少編譯時(shí)間。
第一種方法是網(wǎng)友在實(shí)際的使用過程中摸索出來的,第二種和第三種方法在Quartus II的開發(fā)手冊中都有跡可循。
下面進(jìn)行具體的介紹:
一、開發(fā)所使用的計(jì)算機(jī)方面的考慮
要使用最快的CPU,編譯程序拼的就是CPU的速度,而增加RAM沒有作用。
另外,切勿使用低電壓和超低電壓的CPU,要使用標(biāo)準(zhǔn)電壓的CPU。
若使用的是Windows操作系統(tǒng),在任務(wù)管理器的進(jìn)程一欄,列出了CPU當(dāng)前運(yùn)行的各個(gè)進(jìn)程,并且給出了內(nèi)存使用情況。
在任意一個(gè)進(jìn)程上點(diǎn)擊右鍵,可以看到一個(gè)“設(shè)置優(yōu)先級”的功能。
查大部分進(jìn)程的優(yōu)先級,都在“標(biāo)準(zhǔn)”狀態(tài)。通過把一個(gè)進(jìn)程的優(yōu)先級設(shè)置為“高于標(biāo)準(zhǔn)”,可以給該進(jìn)程分配更多的CPU資源,相應(yīng)地,其運(yùn)行速度也就上去了。
Quarutus II編譯過程中,通常要順序運(yùn)行quartus_map、quartus_fit、quartus_asm、quartus_tan四個(gè)進(jìn)程。
其中前兩個(gè)進(jìn)程占用了編譯時(shí)間的95%以上。
手工修改這兩個(gè)進(jìn)程的優(yōu)先級就可以保證Quartus II的編譯過程不受干擾,從而實(shí)現(xiàn)調(diào)整編譯速度的目的。
二、Quartus II開發(fā)工具方面的考慮
Quartus II的編譯過程包括分析綜合、布局布線、匯編、時(shí)序分析以及生成網(wǎng)表,編譯的過程中耗時(shí)最多的是分析綜合和布局布線,所以想提高編譯速度也應(yīng)該從這點(diǎn)入手。
Quartus也有相關(guān)的自動(dòng)增量編譯的設(shè)置,如圖1所示,
首先是可用處理器數(shù)目的設(shè)置,選擇使用所有可用的處理器,這樣可以提高整體的速度;
其次是采用Smart Compilation,即智能編譯方式,它可以完成的功能是如果設(shè)計(jì)源文件沒有改動(dòng),那Quartus II將不再進(jìn)行分析綜合,而直接進(jìn)入布局布線階段。
圖1
另外,還可用通過編寫TCL腳本的方法減少Q(mào)uartus II綜合時(shí)間。
使用Quartus II完成建立工程、編寫HDL文件、設(shè)置以及分配管腳等操作,然后將qsf文件中的內(nèi)容復(fù)制到TCL文件中。
將上述的TCL文件和其他工程文件放入相同的文件夾,運(yùn)行CMD,使用CD命令將目錄更改到設(shè)計(jì)文件的文件夾,運(yùn)行命令quartus_sh -t test_top.tcl。
查看CMD窗口的報(bào)告,看是否有錯(cuò)誤或警告,有則更改HDL設(shè)計(jì)文件,重新運(yùn)行命令quartus_sh -t test_top.tcl即可。
還可以在TCL腳本中添加查看TimeQuest的時(shí)序報(bào)告命令,在Quartus II的幫助文件中可以查到這些命令。
但是這樣只減少了Quartus II的綜合時(shí)間,實(shí)際上使用TCL腳本建立工程、約束等比圖形化操作Quartus II更省時(shí)間。
三、增量編譯方面的考慮
增量編譯的原理是減少每次編譯里設(shè)計(jì)已經(jīng)完成的部分,進(jìn)而不需要再重復(fù)編譯設(shè)計(jì)者認(rèn)為已經(jīng)完成的工作。
具體方法為,設(shè)計(jì)者手動(dòng)得將整個(gè)工程分成N個(gè)子模塊(此處指的是邏輯模塊),并設(shè)定各個(gè)模塊的狀態(tài)(已經(jīng)完成了,不需要更改了,編譯時(shí)就采用上一次的結(jié)果),這樣編譯器在分析綜合的時(shí)候便可以對那些不需修改的部分直接采用上次的結(jié)果。
布局布線的時(shí)候也是一樣的,如果該子模塊不需要更改了就采用上次的結(jié)果,如需更改再重新進(jìn)行布局布線,只不過布局布線的過程要相比分析綜合復(fù)雜一些。
而上面提到的將整個(gè)工程手動(dòng)分成N個(gè)模塊,我們就要用到Quartus II提供的兩個(gè)高級工具——Design Partitions和LogicLock Regions。
增量編譯技術(shù)的另一主要優(yōu)點(diǎn)是保持性能不變。通過只對設(shè)計(jì)中的特定分區(qū)進(jìn)行編譯,其他分區(qū)的時(shí)序性能保持不變。
漸進(jìn)式流程適用的設(shè)計(jì)環(huán)境:當(dāng)改變源文件時(shí),縮短編譯時(shí)間;在加入其他邏輯前,優(yōu)化設(shè)計(jì)部分結(jié)果;采用在系統(tǒng)邏輯分析器進(jìn)行漸進(jìn)式調(diào)試;實(shí)現(xiàn)基于團(tuán)隊(duì)的設(shè)計(jì)環(huán)境和自下而上的設(shè)計(jì)流程。
增量編譯流程要比固定式編譯需要進(jìn)行更多的前端規(guī)劃。
例如,必須構(gòu)造源代碼或者設(shè)計(jì)層次以保證邏輯能夠正確分組,進(jìn)行優(yōu)化。
比起在設(shè)計(jì)后期重新構(gòu)造代碼,更容易在設(shè)計(jì)早期實(shí)現(xiàn)正確的邏輯分組。
設(shè)計(jì)分區(qū)后,設(shè)計(jì)人員需要將每個(gè)分區(qū)分配到器件中的某個(gè)物理位置,以建立設(shè)計(jì)平面規(guī)劃。
不好的分區(qū)或者平面規(guī)劃分配會(huì)劣化設(shè)計(jì)面積利用率和性能,很難達(dá)到時(shí)序逼近。
和固定式編譯相比,增量編譯通常需要設(shè)計(jì)人員嚴(yán)格按照良好的設(shè)計(jì)習(xí)慣進(jìn)行設(shè)計(jì)。
規(guī)劃設(shè)計(jì)時(shí),設(shè)計(jì)人員應(yīng)記住每個(gè)分區(qū)的大小和范圍,隨著設(shè)計(jì)的發(fā)展,知道設(shè)計(jì)的不同部分會(huì)怎樣變化。
經(jīng)常變化的邏輯應(yīng)和設(shè)計(jì)中的固定部分分開。
設(shè)計(jì)層次應(yīng)該和一個(gè)分區(qū)中的關(guān)鍵時(shí)序邏輯分開,最好和寄存端口邊界分開,這樣,軟件能夠高效的優(yōu)化每個(gè)獨(dú)立分區(qū)。
為進(jìn)行增量編譯需要在Hierarchy tab of the Project Navigator中對Design partitions進(jìn)行定義,在定義之前需要運(yùn)行Analysis & Elaboration生成design hierarchy,定義之后會(huì)在實(shí)體名字上面出現(xiàn)一個(gè) 標(biāo)志,如圖2所示。
通過設(shè)置可使Design partitions在增量編譯的過程中被保留或重新編譯。
使用漸進(jìn)式編譯時(shí),設(shè)計(jì)層次被映射到設(shè)計(jì)分區(qū)中,在編譯過程中單獨(dú)處理它,以實(shí)現(xiàn)漸進(jìn)式編譯功能。
設(shè)計(jì)中的每個(gè)實(shí)體或者實(shí)例不會(huì)被自動(dòng)考慮為設(shè)計(jì)分區(qū);設(shè)計(jì)人員必須將頂層以下的一個(gè)或者多個(gè)設(shè)計(jì)層次指定為漸進(jìn)式編譯設(shè)計(jì)分區(qū)。
當(dāng)分區(qū)被聲明后,該分區(qū)中的每個(gè)層次成為同一分區(qū)的組成部分。
當(dāng)為已有分區(qū)中的層次建立新分區(qū)時(shí),新的低層分區(qū)中的邏輯不再是上層分區(qū)的組成部分。
圖3 所示是一個(gè)設(shè)計(jì)層次實(shí)例,其中,實(shí)例B 和F 被指定為設(shè)計(jì)分區(qū)。
分區(qū)B 包括子實(shí)例D 和E。
“頂層”默認(rèn)分區(qū)含有頂層模塊A 以及實(shí)例C,原因是它沒有被分配到任何其他分區(qū)中。
責(zé)任編輯:lq6
-
處理器
+關(guān)注
關(guān)注
68文章
19028瀏覽量
228442 -
cpu
+關(guān)注
關(guān)注
68文章
10768瀏覽量
210418 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6603瀏覽量
123019 -
QUARTUS II
+關(guān)注
關(guān)注
0文章
52瀏覽量
30131
原文標(biāo)題:如何減少Q(mào)uartus II的編譯時(shí)間
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論