FPGA設(shè)計(jì)開發(fā)軟件ISE使用技巧之:增量式設(shè)計(jì)(Incremental Design)技巧
對(duì)于VHDL來說,XST可以自動(dòng)檢測(cè)出哪一個(gè)邏輯分組的內(nèi)容發(fā)生了改變。但對(duì)于Verilog來說,必須應(yīng)用“resynthesize”屬性。例如下面就是一個(gè)邏輯分組A的Verilog源代碼發(fā)生細(xì)微的改變時(shí)的XCF文件范例。
本文引用地址:http://2s4d.com/article/269337.htmMODEL "top" incremental_synthesis = yes; //對(duì)top使能增量設(shè)計(jì)
MODEL "A" incremental_synthesis = yes; //對(duì)A使能增量設(shè)計(jì)
MODEL "B" incremental_synthesis = yes; //對(duì)B使能增量設(shè)計(jì)
MODEL "C" incremental_synthesis = yes; //對(duì)C使能增量設(shè)計(jì)
MODEL "top" resynthesize = no; //通知綜合工具哪個(gè)模塊發(fā)生改變
MODEL "A" resynthesize = yes; //no為未改變,yes為已改變
MODEL "B" resynthesize = no;
MODEL "C" resynthesize= no;
對(duì)于Verilog設(shè)計(jì)工程,當(dāng)某一邏輯分組發(fā)生改變時(shí),要為其附加相應(yīng)的綜合約束,才能實(shí)現(xiàn)增量綜合。
另外需要注意的問題是,增量綜合是在保留結(jié)構(gòu)層次模式(Keep Hierarchy)下完成的,在進(jìn)行增量綜合時(shí),在“Processes for Source”中選擇“Synthesize-XST”,單擊右鍵,設(shè)置綜合屬性如圖6.30所示。
如圖6.30所示,要完成增量綜合,要完成兩種設(shè)置,選擇“Keep Hierarchy”設(shè)置為YES或Soft,選擇“Synthesis Constraints File”設(shè)置綜合約束文件的路徑。
增量綜合后,需要檢查綜合報(bào)告。
圖6.30 增量綜合屬性設(shè)置對(duì)話框
3.創(chuàng)建區(qū)域分組約束
創(chuàng)建區(qū)域分組約束是增量設(shè)計(jì)中最重要的一步。區(qū)域分組約束做得不好會(huì)增加綜合、布局布線耗時(shí),甚至有可能導(dǎo)致布局布線無法完成。區(qū)域分組約束的創(chuàng)建是利用ISE下的PACE工具,在PACE下完成區(qū)域分組約束后,ISE會(huì)自動(dòng)將其寫入U(xiǎn)CF文件中。
為增量設(shè)計(jì)創(chuàng)建合理的區(qū)域分組約束要遵循以下原則。
· 所有I/O引腳位置必須鎖定。
· 將與I/O端口聯(lián)系密切的區(qū)域分組布置在相應(yīng)I/O端口的附近。
· 區(qū)域分組約束的范圍不應(yīng)該重疊。
· 盡量保證每個(gè)區(qū)域的資源利用率基本一致,避免出現(xiàn)某一區(qū)域利用率達(dá)到99%,而另一區(qū)域的利用率只有10%的情況。
· 如果一個(gè)區(qū)域分組中包含FPGA的多種資源,如:Slice、Block RAM、TBUF、Multipliers等,這時(shí)很有必要將不同的資源設(shè)置在不同的區(qū)域,然后將幾個(gè)不同位置區(qū)域拼合為一個(gè)區(qū)域分組??梢允褂肞ACE、Floorplanner等工具完成,也可以在約束文件中使用如下約束:
INST Logic_Group_A AREA_GROUP = AG_Logic_Group_A ; //AREA分組
AREA_GROUP "AG_Logic_Group_A" RANGE = SLICE_X0Y20:SLICE_X20Y30 ;//SLICE約束
AREA_GROUP "AG_Logic_Group_A" RANGE = RAMB16_X0Y2:RAMB16_X0Y2 ;//RAM約束
AREA_GROUP "AG_Logic_Group_A" RANGE = MULT18X18_X0Y1:MULT18X18_X0Y1;//MULT約束
AREA_GROUP "AG_Logic_Group_A" RANGE = TBUF_X0Y0:TBUF_X1Y0; //TBUF約束
4.增量實(shí)現(xiàn)(Incremental Implement)
第3步的創(chuàng)建區(qū)域分組約束也可以作為增量實(shí)現(xiàn)的內(nèi)容,增量實(shí)現(xiàn)的步驟如下。
(1)設(shè)置區(qū)域分組約束。
(2)映射、布局布線得到初始指引文件。
(3)下載調(diào)試,需要修改時(shí),對(duì)細(xì)微細(xì)節(jié)進(jìn)行修改,然后實(shí)現(xiàn)增量綜合。
(4)增量綜合后在初始指引文件下進(jìn)行第二次映射與布局布線。
(5)下載調(diào)試,如仍有問題,重復(fù)步驟(3)~步驟(5),直到符合設(shè)計(jì)要求為止。
在增量實(shí)現(xiàn)過程中,必須要對(duì)布局布線的屬性進(jìn)行相關(guān)的設(shè)置。首先應(yīng)該使能增量設(shè)計(jì),具體設(shè)置如圖6.31所示。在“Processes for Source”中選擇“Implement Design”,單擊右鍵,出現(xiàn)屬性對(duì)話框。選擇“Incremental Design Properties”,然后選擇“Enable Incremental Design Flow”,使能增量設(shè)計(jì)。
圖6.31 項(xiàng)目管理器中啟動(dòng)增量設(shè)計(jì)功能對(duì)話框
在增量設(shè)計(jì)中,如果是用Synplify/Synplify Pro等第三方綜合工具,那么需要由綜合工具生成向?qū)募笇?dǎo)實(shí)現(xiàn)工具進(jìn)行實(shí)現(xiàn)流程。選擇如圖6.31中的“Run Guided Incremental Design Flow”選項(xiàng),表示將由指定的向?qū)募碇笇?dǎo)實(shí)現(xiàn)工具進(jìn)行實(shí)現(xiàn)流程。
向?qū)募商峁㎝ap.ncd文件和Par.ncd文件。其中,Map.ncd文件包含了slices、IOBs等映射信息。Par.ncd文件包含了布局和布線信息。實(shí)現(xiàn)工具根據(jù)這兩個(gè)文件的信息來確定沒有改變的模塊和已經(jīng)改變的模塊,把沒有改變的模塊放進(jìn)向?qū)募涗浀纳洗尉C合實(shí)現(xiàn)的位置。對(duì)布線器來說,該布線資源同時(shí)也將被保留,其布線關(guān)系也不會(huì)改變。
使用向?qū)募獙?duì)實(shí)現(xiàn)具的屬性做部分修改。將“Map Guide Mode”和“PAR Guide Mode”分別改成增量型(Incremental),如圖6.32和圖6.33所示。
圖6.32 使用指引文件指引映射 圖6.33 使用指引文件引導(dǎo)布局布線
進(jìn)行了上述設(shè)置后,需要指定映射和布局布線的指引文件。
整個(gè)增量實(shí)現(xiàn)步驟完成后,需要檢查映射報(bào)告(擴(kuò)展名為map)和布局布線報(bào)告(擴(kuò)展名為par),看是否真的完成了增量設(shè)計(jì)。
6.6.3 小結(jié)
本節(jié)對(duì)增量式設(shè)計(jì)方法的概念以及設(shè)計(jì)流程做了全面的介紹,希望讀者能夠掌握增量設(shè)計(jì)的基本流程,并應(yīng)用到自己的工程設(shè)計(jì)當(dāng)中。在6.9節(jié)中會(huì)通過一個(gè)具體的實(shí)例來說明增量設(shè)計(jì)的整個(gè)流程。
增量設(shè)計(jì)在大型的工程設(shè)計(jì)中是很有用的,可以為設(shè)計(jì)節(jié)約大量的時(shí)間。增量設(shè)計(jì)中一個(gè)難點(diǎn)在于分組區(qū)域約束的設(shè)置,這不但需要對(duì)整個(gè)工程有全面的把握而且要求對(duì)于FPGA器件的內(nèi)部結(jié)構(gòu)有一定的了解,這需要在實(shí)踐中不斷積累經(jīng)驗(yàn)。
fpga相關(guān)文章:fpga是什么
評(píng)論