FPGA實(shí)戰(zhàn)開發(fā)技巧(7)
技巧1、XST 主要參考資料:XST User Guide (ISE 安裝目錄doc 中的xst.pdf)
技巧2、 輔助參考資料:WP231 - HDL Coding PracTIces to Accelerate Design Performance
技巧3、特別注意之一:請(qǐng)給XST 加時(shí)序約束。
通常我們會(huì)為工程添加UCF 約束指定時(shí)序要求和管腳約束。但是UCF 約束是給MAP,PAR 等實(shí)現(xiàn)使用的,綜合工具XST 并不能感知系統(tǒng)的時(shí)序要求。而為XST 添加XCF 約束卻是使實(shí)現(xiàn)結(jié)果擁有最高頻率的關(guān)鍵。其原因是顯而易見的:實(shí)現(xiàn)工具只能在綜合網(wǎng)表的基礎(chǔ)上布局布線,而綜合工具卻可以根據(jù)要求調(diào)整綜合網(wǎng)表,使實(shí)現(xiàn)工具更容易滿足時(shí)序要求。如果不將時(shí)序目標(biāo)告知綜合器,將導(dǎo)致我們對(duì)性能的要求得不到體現(xiàn)。
XCF約束語法與UCF 類似并且在XST User Guide 中有詳細(xì)描述。其實(shí)常用的Period、Offest等約束和UCF的語法是一模一樣的,可以直接使用在XCF中。
給設(shè)計(jì)添加XCF 約束的方法是Synthesize - XST --> 右鍵 --> Synthesis Constraint File = 指定路徑
技巧4、特別注意之二:仔細(xì)察看綜合報(bào)告中的Warning。切記要仔細(xì)查看綜合報(bào)告中的所有Warning并確認(rèn)是否是可以安全忽略的。綜合器產(chǎn)生Error會(huì)使工具停止工作,但是Warning 經(jīng)常會(huì)被用戶忽略。其實(shí)Waning可以提示很多潛在的邏輯問題,比如某些信號(hào)聲明了,被使用了,卻沒有被賦值,或者綜合器發(fā)現(xiàn)了Latch但卻不是期望的結(jié)果等等。
技巧5、 常用選項(xiàng)之一:keep_hierarchy - 保持層次。在初始設(shè)計(jì)/debug 的時(shí)候很有用。XST根據(jù)層次來綜合,不打破層次優(yōu)化,所有的寄存器名字都以名字排列,UCF 約束可以很方便得找到需要約束的對(duì)象。如果選擇soft,則在綜合時(shí)保持層次,而在map 時(shí)工具會(huì)打破層次來優(yōu)化,但是instance 的名字還是保留的。
技巧6、常用選項(xiàng)之二:register_duplicaTIon + max_fanout + equivalent_register_removal + resource_sharing - 允許自動(dòng)復(fù)制寄存器,設(shè)置最大扇出,禁止資源共享。當(dāng)TIming不滿足時(shí)使用復(fù)制寄存器的方法通常能改善一些瓶頸。綜合器為了節(jié)省面積而做出的某些優(yōu)化可能導(dǎo)致對(duì)時(shí)序不利,因此關(guān)閉equivalent_register_removal 和resource_sharing可能可以改善時(shí)序。
技巧7、常用選項(xiàng)之三:Add IO Buffers - 自動(dòng)插入緩沖器。當(dāng)我們的設(shè)計(jì)作為頂層使用時(shí),通常讓工具自動(dòng)插入IO buffer ;當(dāng)需要將設(shè)計(jì)作為模塊插入別的設(shè)計(jì)中時(shí),就需要禁止自動(dòng)插入IO Buffer。
技巧8、常用選項(xiàng)之四: Number of Clock Buffers 和 buffer_type 約束: 當(dāng)綜合結(jié)果中的BUFG 不是像想象中一樣時(shí),我們可以通過下面兩種方法來解決:
- 用buffer_type 約束對(duì)該信號(hào)所使用的Buffer類型定義。具體使用方法在XST User Guide
- 手動(dòng)插入BUFG,然后設(shè)置允許使用BUFG的數(shù)量,那么手動(dòng)插入的將擁有高優(yōu)先級(jí)而先占用了BUFG,工具就不會(huì)再自動(dòng)插BUFG 了。
技巧9、 BlackBox :調(diào)用其它已經(jīng)綜合好的網(wǎng)表需要使用BlackBox。BlackBox說白了就是只有端口說明的HDL文件。更多的BlackBox TIp請(qǐng)參考我的博客( 注:為RickySu 的博客)。
技巧10、XST的命令行模式:XST支持使用命令行模式進(jìn)行批量操作。
命令行的XST 支持兩種模式:
Shell 方式 - 在cmd下輸入xst,然后在xst的shell 環(huán)境中一條一條打命令;
Script 方式 - 在cmd下用xst -ifn script.scr運(yùn)行script.scr 內(nèi)的命令,或者在xst shell 中用script命令調(diào)用script.scr中的內(nèi)容。在此之前,會(huì)需要先準(zhǔn)備好compile_list.prj。EDK 其實(shí)就使用這種方法調(diào)用XST。更詳細(xì)的語法參考XST User Guide。
技巧11、要查看綜合后的網(wǎng)表,除了XST自帶的RTL Schematic工具和Technology Schematic工具,還可以使用PlanAhead。他的顯示/ 查找能力更為強(qiáng)大,而且他會(huì)先合并所有的綜合網(wǎng)表,不會(huì)因?yàn)槟硞€(gè)模塊式預(yù)先綜合好的而不能察看內(nèi)部狀況。
評(píng)論