利用LogicLock布圖
利用LogicLock生成設(shè)計版圖:對包括頂層在內(nèi)的每個分割產(chǎn)生一個LogicLock區(qū)域,而后每個LogicLock區(qū)域或設(shè)計分割將被獨立放置在分開的物理區(qū)域上,手動或使用Altera Quartus II早期時序估計工具分配物理位置。
LogicLock區(qū)域由位置和尺寸定義。用原點表示位置:對于Stratix,Cyclone和MAX II器件,原點位于區(qū)域左下角,而其他Altera器件,原點則位于區(qū)域左上角。區(qū)域的寬度和高度決定了區(qū)域的尺寸。
推薦的設(shè)計分割用法與布局方式
根據(jù)設(shè)計經(jīng)驗,分割中有一些推薦用法,包括:所有分割的輸入輸出端口要有寄存器;應令跨邊界的連接最少;將關(guān)鍵路徑限制在每個分割的內(nèi)部;分割不應太小(如<1000個邏輯單元);可能需要均衡使用資源;及分割邊界上不使用三態(tài)或雙向端口等。
同時,推薦的布圖方式包括:避免區(qū)域間相互覆蓋及使用父區(qū)域和子區(qū)域,從而保持設(shè)計的邏輯層次關(guān)系,提高區(qū)域布局的靈活性等。
其次,執(zhí)行完全編譯。執(zhí)行完全編譯即啟動完全編譯并編譯每一個分割,從而生成在隨后增量編譯中重新使用的綜合后和適配后的網(wǎng)表。
最后,對設(shè)計進行修改并執(zhí)行增量編譯。完全編譯后,在設(shè)計與調(diào)試階段需反復進行設(shè)計的修改及增量編譯。
執(zhí)行增量編譯
在下一次編譯期間為每個分割設(shè)置使用的網(wǎng)表類型,如表1所示,然后重新編譯設(shè)計。
表1 :網(wǎng)表類型設(shè)置(略)
設(shè)計優(yōu)化與模塊化設(shè)計方法
設(shè)計優(yōu)化
FPGA設(shè)計過程中,必須采用與其結(jié)構(gòu)相適應的優(yōu)化技術(shù),才能有效發(fā)揮FPGA芯片的能力。設(shè)計優(yōu)化是指在設(shè)計沒有達到用戶要求的情況下,對其進行改進,以便滿足設(shè)計的初始規(guī)格。
設(shè)計優(yōu)化的主要內(nèi)容包括:理解整個設(shè)計;對設(shè)計進行約束和設(shè)置;優(yōu)化資源利用;輸入輸出時序優(yōu)化;速度優(yōu)化;編譯效果優(yōu)化及編譯和測試時間優(yōu)化。其設(shè)計流程如圖4所示。
圖4 設(shè)計優(yōu)化流程(略)
只有深入理解整個設(shè)計,才能對其進行優(yōu)化。包括理解系統(tǒng)時序,如系統(tǒng)時鐘、模塊時鐘、時鐘域及時鐘來源等內(nèi)部時鐘問題。
在理解整個設(shè)計的基礎(chǔ)上,須對設(shè)計進行約束和設(shè)置,約束和設(shè)置旨在完成編譯后,可以根據(jù)編譯結(jié)果對設(shè)計進行分析,找到設(shè)計中的真正瓶頸,從而有效的引導后續(xù)的優(yōu)化過程。利用Altera提供的開發(fā)工具及其他廠商的EDA軟件都可設(shè)定各種設(shè)計約束。
完成約束、設(shè)置后,通常將查看并分析編譯產(chǎn)生的報告,包括:了解設(shè)計的資源使用情況,以便在后續(xù)的設(shè)計優(yōu)化中更合理的分配和使用資源;查看并分析時序報告,判斷各種時序關(guān)系和系統(tǒng)運行速度等指標是否滿足了設(shè)計的需求,以便對不滿足要求的部分進行修改和優(yōu)化。
優(yōu)化資源的利用
設(shè)計過程中,由于資源數(shù)量限制,造成系統(tǒng)不能在目標器件中實現(xiàn),則需對資源利用進行優(yōu)化。FPGA的資源,包括:邏輯單元、塊RAM、I/O引腳、DSP塊、鎖相環(huán)、布線資源及各種硬IP核等。
設(shè)計中最根本、最有效的優(yōu)化方法是對設(shè)計輸入(如HDL代碼)的優(yōu)化,比較常用的面積優(yōu)化方法包括:模塊的時分復用、改變狀態(tài)機的編碼方式及改變模塊的實現(xiàn)方式等。
當 設(shè)計中位置約束或者邏輯鎖定約束較多時,可能會造成局部設(shè)計擁擠,導致布線資源緊張,此時,可適當解除或放松布線擁擠區(qū)域的約束 。
輸入輸出時序優(yōu)化
輸入輸出時序優(yōu)化需要重點考慮的問題是可編程邏輯器件與外圍芯片間的接口時序。在同步系統(tǒng)設(shè)計中,外部芯片和可編程邏輯器件使用的時鐘經(jīng)常是同相位的。設(shè)計主要關(guān)心芯片輸入引腳的建立時間和保持時間、數(shù)據(jù)的時鐘到輸出延時及數(shù)據(jù)的輸入到輸出延時等。
輸入輸出時序的優(yōu)化方法:根據(jù)外圍器件和PCB連線情況,保留一定余量,計算I/O時序要求,并將這些時序要求在EDA軟件中對設(shè)計進行約束,編譯軟件將根據(jù)約束條件進行自動優(yōu)化;使用I/O單元的觸發(fā)器;及使用鎖相環(huán)電路等。
速度優(yōu)化
速度優(yōu)化即最高時鐘頻率優(yōu)化,其最有效的方法是對設(shè)計代碼進行優(yōu)化。具體優(yōu)化方法包括:增加流水線級數(shù)、組合邏輯分割和平衡、復制高扇出的節(jié)點及令狀態(tài)機僅完成控制邏輯的功能等。
編譯效果優(yōu)化
使用不同的隨機數(shù)種子,編譯結(jié)果將在小幅度內(nèi)變動。如果設(shè)計已經(jīng)非常接近系統(tǒng)需求,則可以嘗試改變隨機數(shù)種子,使性能達到系統(tǒng)需求。同時,使用軟件工具,如Altera的"Design Space Explorer",可以一次運行多種編譯設(shè)置和優(yōu)化目標,探索設(shè)計的優(yōu)化空間。
編譯和測試時間優(yōu)化
設(shè)計較大或約束較多時,編譯時間往往很長,從而影響開發(fā)進度。縮短編譯時間有以下3種常用方法:使用快速編譯方式,其特點是速度快,但可能在一定程度上影響設(shè)計性能;使用增量編譯,最大限度的利用上一次的編譯結(jié)果;反標注,使邏輯的位置和布線成為下一次編譯的約束,對這部分不進行重新編譯。
模塊化設(shè)計方法
模塊化設(shè)計
模 塊化設(shè)計是將復雜的大型設(shè)計分成多個模塊,利用基于團隊的優(yōu)勢,分別進行設(shè)計和調(diào)試。采用模塊化設(shè)計,可以進行系統(tǒng)的標準化設(shè)計,即將一些系統(tǒng)中常用的功能塊進行模塊化設(shè)計、調(diào)試和包裝,以備調(diào)用。
與傳統(tǒng)設(shè)計流程相比,模塊化設(shè)計流程的輸入模塊是已經(jīng)優(yōu)化并達到時序收斂的子模塊,通過模塊化設(shè)計方法繼承以往編譯與實現(xiàn)的結(jié)果,在保證每個子模塊時序收斂的基礎(chǔ)上,達到頂層設(shè)計的時序收斂。因此有效避免了對整個系統(tǒng)進行的繁瑣的設(shè)計編譯、時序分析以及優(yōu)化的反復循環(huán),提高了設(shè)計效率。
模塊劃分的一般原則:模塊內(nèi)部聯(lián)系緊密;各個模塊的功能盡量獨立;模塊間連接盡量簡單。
模塊化設(shè)計基本流程
模塊化設(shè)計的基本流程(如圖5所示),分為兩部分,一:模塊化設(shè)計輸入與綜合,包括:頂層模塊設(shè)計(輸入與綜合)、子模塊劃分及子模塊的輸入與綜合。二:模塊化設(shè)計實現(xiàn),包括模塊分割,添加設(shè)計約束、各子模塊的實現(xiàn)(布局布線)及設(shè)計整合:將頂層設(shè)計和各子模塊合并。
圖5 模塊化設(shè)計基本流程(略)
頂層設(shè)計是進行模塊化設(shè)計的必要條件,包括:所有全局邏輯、輸入輸出端口、類似黑匣子的子模塊及模塊間、模塊與輸出輸入端口間的信號連接等。項目設(shè)計人員設(shè)計各個子模塊的邏輯實體,綜合出各個子模塊的網(wǎng)表。
模塊化設(shè)計的實現(xiàn)包括三個階段:初始預算、模塊實現(xiàn)及設(shè)計整合。初始預算階段,項目負責人對設(shè)計的整體進行分割和邏輯資源的分配,主要任務包括:對設(shè)計進行全局區(qū)域規(guī)劃和布局;規(guī)劃每個模塊的規(guī)模和區(qū)域;規(guī)定每個模塊的輸入輸出端口及最初的時序約束。
模 塊實現(xiàn)階段,項目設(shè)計人員將實現(xiàn)頂層設(shè)計中確定的各個模塊,包括:添入功能實體、添加約束、進行布局布線。當最終實現(xiàn)結(jié)果滿足模塊的設(shè)計要求,則該模塊的實現(xiàn)階段完成。設(shè)計整合階段,項目負責人將所有實現(xiàn)好的有效模塊的設(shè)計結(jié)果與頂層設(shè)計結(jié)果進行整合,從而完成整個設(shè)計,包括:對設(shè)計進行合并及對合并后的設(shè)計進行布局布線。
Altera LogicLock工具
Altera LogicLock工具是Altera Quartus II軟件內(nèi)嵌的高級工具,LogicLock模塊化設(shè)計流程支持復雜設(shè)計的某個模塊獨立進行設(shè)計、實現(xiàn)及優(yōu)化,并將該模塊的實現(xiàn)結(jié)果約束在規(guī)劃好的FPGA區(qū)域內(nèi)。這樣在進行設(shè)計整合時,能夠更好的繼承每個模塊的實現(xiàn)結(jié)果,提高模塊復用效率,縮短設(shè)計周期。
基于LogicLock的模塊化設(shè)計流程如下:1.合理規(guī)劃設(shè)計層次并劃分模塊;2.使用Quartus II軟件自帶的綜合軟件或其他第三方綜合軟件,對設(shè)計的每個模塊進行綜合;3.對每個子模塊建立Quartus II軟件工程,在每個獨立的工程中分別對每個子模塊進行設(shè)計優(yōu)化,以滿足每個子模塊的時序性能和面積目標,創(chuàng)建LogicLock區(qū)域;4.當所有子模塊都滿足要求后,導出所有模塊和LogicLock區(qū)域的反標信息,作為后續(xù)設(shè)計的約束;5.建立頂層工程,根據(jù)設(shè)計要求選擇節(jié)點反標或布線反標,將每個子模塊的LogicLock區(qū)域反標信息導入頂層設(shè)計中;6.編譯頂層設(shè)計,并觀察頂層設(shè)計是否滿足設(shè)計需要。
通過 LogicLock可以將關(guān)鍵路徑分組,便于時序優(yōu)化;繼承模塊的設(shè)計優(yōu)化成果,便于設(shè)計重用;通過增量的編譯與實現(xiàn),有效縮短設(shè)計編譯時間;支持模塊化設(shè)計方法,便于分工協(xié)作與并行設(shè)計。
[1]





