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





