0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

有什么方法可以減少Q(mào)uartus II的編譯時(shí)間嗎?

電子工程師 ? 來源:獨(dú)孤瑯?gòu)?/span> ? 作者:獨(dú)孤瑯?gòu)?/span> ? 2021-05-18 10:27 ? 次閱讀

對于減少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

有什么方法可以減少Q(mào)uartus II的編譯時(shí)間嗎?

另外,還可用通過編寫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所示。

有什么方法可以減少Q(mào)uartus II的編譯時(shí)間嗎?

通過設(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ū)的組成部分。

有什么方法可以減少Q(mào)uartus II的編譯時(shí)間嗎?

圖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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19028

    瀏覽量

    228442
  • cpu
    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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    淺談Vivado編譯時(shí)間

    隨著FPGA規(guī)模的增大,設(shè)計(jì)復(fù)雜度的增加,Vivado編譯時(shí)間成為一個(gè)不可回避的話題。尤其是一些基于SSI芯片的設(shè)計(jì),如VU9P/VU13P/VU19P等,布局布線時(shí)間更是顯著增加。當(dāng)然,對于一些設(shè)計(jì)而言,十幾個(gè)小時(shí)是合理的。但
    的頭像 發(fā)表于 09-18 10:43 ?302次閱讀
    淺談Vivado<b class='flag-5'>編譯</b><b class='flag-5'>時(shí)間</b>

    java反編譯的代碼可以修改么

    的影響。 1. Java反編譯工具 在Java反編譯領(lǐng)域,一些知名的工具可以幫助開發(fā)者將字節(jié)碼轉(zhuǎn)換回源代碼。這些工具包括: JD-GUI :一個(gè)圖形界面的反
    的頭像 發(fā)表于 09-02 11:00 ?305次閱讀

    linux驅(qū)動(dòng)程序的編譯方法是什么

    Linux驅(qū)動(dòng)程序的編譯方法主要包括兩種: 與內(nèi)核一起編譯編譯成獨(dú)立的內(nèi)核模塊 。以下是對這兩種方法的介紹: 一、與內(nèi)核一起
    的頭像 發(fā)表于 08-30 14:46 ?246次閱讀

    linux驅(qū)動(dòng)程序的編譯方法哪兩種

    Linux驅(qū)動(dòng)程序的編譯方法主要可以歸納為兩種: 手動(dòng)編譯 和 使用內(nèi)核構(gòu)建系統(tǒng)(Makefile)自動(dòng)編譯 。 1. 手動(dòng)
    的頭像 發(fā)表于 08-30 14:39 ?359次閱讀

    如何有效減少PCBA的打樣時(shí)間

    一站式PCBA智造廠家今天為大家講講PCBA加工如何減少打樣時(shí)間?有效減少PCBA打樣時(shí)間方法。 如今,國內(nèi)電子加工業(yè)十分繁榮,作為專業(yè)P
    的頭像 發(fā)表于 06-04 09:27 ?234次閱讀

    鴻蒙OpenHarmony:【常見編譯問題和解決方法

    常見編譯問題和解決方法
    的頭像 發(fā)表于 05-11 16:09 ?1694次閱讀

    最實(shí)用的Modelsim使用教程

    Quartus II 內(nèi)編寫并編譯 Testbench ,之后將 Testbench 和目標(biāo)文件放在同一個(gè)文件夾下,按照前面的方法把 Testbench 文件和目標(biāo)文件都
    發(fā)表于 03-19 16:40

    請問Touchgfx Designer4.20如何配置圖片、字體不參與程序編譯?

    使用touchgfx desginer生成的 IDE工程,如何配置才能夠?qū)D片和字體排除掉,目前圖片、字體較多,重新編譯時(shí)特別耗費(fèi)時(shí)間。 圖片、字體均存放在總線可以訪問的位置。 緩存字體可以
    發(fā)表于 03-15 06:41

    減少串?dāng)_的方法哪些

    一些方法盡量降低串?dāng)_的影響。那么減少串?dāng)_的方法哪些呢? 檢查靠近 I/O 網(wǎng)絡(luò)的關(guān)鍵網(wǎng)絡(luò) 檢查與I/O線相關(guān)的關(guān)鍵網(wǎng)絡(luò)的布線非常重要,因?yàn)檫@些線容易產(chǎn)生噪聲,這些噪聲可能會(huì)通過它們離
    的頭像 發(fā)表于 01-17 15:02 ?1598次閱讀
    <b class='flag-5'>減少</b>串?dāng)_的<b class='flag-5'>方法</b><b class='flag-5'>有</b>哪些

    什么方法可以提高晶體管的開關(guān)速度呢?

    什么方法可以提高晶體管的開關(guān)速度呢? 電子行業(yè)一直在尋求提高晶體管速度的方法,以滿足高速和高性能計(jì)算需求。下面將詳細(xì)介紹幾種可以提高晶體管
    的頭像 發(fā)表于 01-12 11:18 ?1093次閱讀

    TVM編譯器的整體架構(gòu)和基本方法

    將近兩個(gè)月沒有學(xué)習(xí)一些新東西,更新一下博客了。一直在忙公司的一個(gè)項(xiàng)目,是做一款支持LSTM和RNN的通用架構(gòu)加速IP。自己恰好負(fù)責(zé)指令編譯工作,雖然開始的指令比較粗糙,沒有一套完整的編譯器架構(gòu)
    的頭像 發(fā)表于 11-30 09:36 ?2105次閱讀
    TVM<b class='flag-5'>編譯</b>器的整體架構(gòu)和基本<b class='flag-5'>方法</b>

    減少靜電產(chǎn)生和降低擊穿風(fēng)險(xiǎn)的方法和材料

    介紹一些常見的方法和材料,以幫助我們更好地了解如何減少靜電產(chǎn)生并降低擊穿風(fēng)險(xiǎn)。 一、減少靜電產(chǎn)生的方法: 要減少靜電的產(chǎn)生,我們
    的頭像 發(fā)表于 11-29 16:30 ?1033次閱讀

    焊接變形的控制方法哪些

    標(biāo)準(zhǔn),需要采取控制焊接變形的方法。本文將介紹一些常見的焊接變形控制方法。   預(yù)熱和后熱處理:   預(yù)熱是在進(jìn)行焊接之前將工件加熱到一定溫度的過程。通過預(yù)熱,可以減少焊接過程中的溫度梯
    發(fā)表于 11-29 08:40

    this可以出現(xiàn)在類方法中嗎

    用 this 關(guān)鍵字時(shí),編譯器會(huì)發(fā)出錯(cuò)誤提示,因?yàn)轭?b class='flag-5'>方法是靜態(tài)的方法,沒有與它們關(guān)聯(lián)的特定對象實(shí)例。然而,在特定情況下,我們可以使用 this 關(guān)鍵字在類
    的頭像 發(fā)表于 11-28 16:24 ?1218次閱讀

    java抽象類可以普通方法

    Java中的抽象類可以普通方法,但它也可以抽象方法。抽象類是一種中間狀態(tài),介于普通類和接口之
    的頭像 發(fā)表于 11-21 10:22 ?1339次閱讀