所有的Commandline都可以在ISE的help->User Manuals里查到,在User Manuals中
XST User Guide -------關(guān)于XST的命令單獨(dú)在這個(gè)文檔里;
Command line tools user guide ---------ngdbuild、PAR、map、trce、bitgen等其他的都在這里
下面都是轉(zhuǎn)帖:
因?yàn)槟壳斑M(jìn)行的一個(gè)項(xiàng)目使用了多塊容量較大的Xilinx FPGA, 對(duì)各塊FPGA進(jìn)行synthesis,map,P&R和generating programming file就成了一個(gè)大問(wèn)題。(慚愧啊,group里沒(méi)有人有modular design的經(jīng)驗(yàn))雖然現(xiàn)在的工作站性能比較強(qiáng)勁,但產(chǎn)生每一個(gè)programming file還是要花上好幾個(gè)小時(shí)。所以考慮到在Command Line下面進(jìn)行所有的編譯工作,下面是一點(diǎn)點(diǎn)心得,希望對(duì)大家有所幫助。
1.Command的介紹
要完成一次完整的Xilinx FPGA編譯過(guò)程,涉及到的Command包括了:
XST:
全稱為Xilinx Synthesis Technology,這是Xilinx ISE里面附帶的一個(gè)免費(fèi)的綜合工具。(呵呵,Synplify Pro的購(gòu)買正在商洽之中)Synthesis完畢后,你可以用任何的文本工具打開(kāi)后綴名為“.syr”的文件,察看synthesis的具體運(yùn)行過(guò)程及報(bào)告。
NGDBuild:
這個(gè)命令,其實(shí)就是translate啦。這是implementation的第一步。它會(huì)把所有的netlist和design constraint合并到一起,生成一個(gè)ngd文件供map工具使用。同樣的,NGDBuild的報(bào)告文件是后綴名為“.bld”的文件。
MAP:
MAP命令是將NGDBuild命令所生成的ngd文件,映射到具體的FPGA器件里面去。MAP將產(chǎn)生一個(gè)NCD文件供PAR使用。你可以用任何文本工具打開(kāi)后綴名為“.mrp”的map報(bào)告文件。
PAR:
Place & Route。這個(gè)偶就不多說(shuō)了。免得被磚頭砸到。PAR的報(bào)告文件后綴名是“.par”。
TRCE:
這個(gè)是用來(lái)產(chǎn)生偶們最最關(guān)心的timing report的。TRCE會(huì)分析你的FPGA的設(shè)計(jì)并且產(chǎn)生一個(gè)后綴名為“.twr”的時(shí)序報(bào)告。你可以用任何文本工具打開(kāi)它,也可以用xilinx的Timing Analyzer。Timing Analyzer比較直觀,推薦新手使用。
Bitgen:
顧名思義,這個(gè)Bitgen就是用來(lái)generate programming file啦。
2. 使用舉例
介紹完Xilinx提供的這些命令后,讓我們來(lái)看看如何使用它們吧。Xilinx給我們提供了一個(gè)很有用的工具:View Command Line Log File。這個(gè)工具位于Process for Source窗口的Design Entry Utitlities下面。
雙擊這個(gè)View Command Line Log File,你看到了什么?哈哈,在右邊的文本編輯窗口里面出現(xiàn)了類似于下面的語(yǔ)句:
xst -intstyle ise -ifn __projnav/fpga_a.xst -ofn fpga_a.syr
ngdbuild -intstyle ise -dd d:\projects\hardware\hy_multifpga_nwpci_vhd_new_improvetiming/_ngo -uc ./source/hy/fpga_a.ucf -aul -p xc2v6000-ff1152-4 fpga_a.ngc fpga_a.ngd
map -intstyle ise -p xc2v6000-ff1152-4 -cm area -pr b -k 4 -c 100 -tx off -o fpga_a_map.ncd fpga_a.ngd fpga_a.pcf
par -w -intstyle ise -ol high -t 1 fpga_a_map.ncd fpga_a.ncd fpga_a.pcf
trce -intstyle ise -e 1000 -l 1000 -xml fpga_a fpga_a.ncd -o fpga_a.twr fpga_a.pcf
bitgen -intstyle ise -f fpga_a.ut fpga_a.ncd
對(duì)了,上面的這些就是你以前曾經(jīng)使用過(guò)的命令啦。其實(shí),我們用ISE作Synthesis,Map,PAR的時(shí)候,ISE就會(huì)自動(dòng)調(diào)用上面所說(shuō)的那些command,ISE其實(shí)就是一個(gè)GUI罷了。:-)
如果雙擊View Command Line Log File時(shí),出現(xiàn)了下面的錯(cuò)誤提示:
Warning: This process is used to display the running command log file that records some application command lines.
這就說(shuō)明了你還沒(méi)有implement過(guò)你的design,或者你已經(jīng)清空過(guò)了這個(gè)design。(在project目錄下面,有一個(gè)cleanup project files按鈕,可以清空)
接下來(lái),就是最后一步啦。你只需要用任何文本編輯器,把上面這段Command的歷史紀(jì)錄Copy&Paste,再存為一個(gè)”.Bat”批處理文件,在windows的command line下面執(zhí)行就可以了。注意需要把這個(gè).bat文件放在你的項(xiàng)目所在目錄下。
3. 幾點(diǎn)注意
a. 如果要連續(xù)跑好幾個(gè)project,建議先使用Cleanup Project Files.根據(jù)偶的經(jīng)驗(yàn),如果不進(jìn)行清空的話,Synthesis和PAR有時(shí)會(huì)出錯(cuò)。但是這里會(huì)出現(xiàn)一個(gè)小問(wèn)題,清空過(guò)后,原有的一些文件可能會(huì)被刪除,比如__projnav目錄下面的*.xst(這個(gè)時(shí)XST的配置文件,做Synthesis的時(shí)候,XST會(huì)讀這個(gè)文件以獲得相關(guān)配置),再比如*.prj(project文件,里面羅列了一些被你的設(shè)計(jì)所使用的module)以及*.ut文件(ut是Bitgen的配置文件)。這3種文件,在使用Command Line之前最好確認(rèn)一下是否存在。偶一般會(huì)將這3種文件作備份,到時(shí)候好拿出來(lái),改一改就用。
b. 在Xilinx的安裝目錄Xilinx\doc\usenglish\books\docs下,有關(guān)于這些command的pdf文件,如果有需要,可以讀一讀。不過(guò),經(jīng)過(guò)偶苦讀一陣之后,偶發(fā)現(xiàn),其實(shí)沒(méi)有太大必要,有問(wèn)題再說(shuō)吧。
4. 總結(jié)
其實(shí)這個(gè)話題也比較簡(jiǎn)單,三言兩語(yǔ)也可說(shuō)清楚,但根據(jù)偶過(guò)去慘痛的新手經(jīng)驗(yàn),偶相信還是比較詳細(xì)地講解一些為好。至少可以讓新手們多了解一些ISE本身。
[討論1]
建議綜合和布局布線一定要用命令行的方式來(lái)跑,包括synplify和ISE對(duì)此的支持都很好。
幾大好處偶想到的:
1,如果你用的PC工作站,雙CPU,那么可以同時(shí)跑兩個(gè)任務(wù)。
2,便于歸檔,進(jìn)行版本控制,大項(xiàng)目必須要做的工作。 3,便于重現(xiàn)問(wèn)題,因?yàn)槊钚锌梢员WC在原始輸入(源碼、約束)不變的前提下得到只有時(shí)間標(biāo)簽不同的bit文件。
4,便于自定義一些非常規(guī)的操作,比如自動(dòng)生成一個(gè)插入某些測(cè)試引腳的bit文件等等。
除了樓主提到的還建議幾點(diǎn):
1,修改所有目錄路徑為相對(duì)路徑,這樣同樣一個(gè)目錄復(fù)制到別處也不用改命令行。
2,可以直接用ultraedit打開(kāi)工程目錄下的*.cmd_log文件。
3,那些刪除臨時(shí)目錄或者復(fù)制網(wǎng)表文件之類的動(dòng)作可以一起加到命令行中執(zhí)行。總之,修改代碼后,直接運(yùn)行一個(gè)命令行全部搞定!
[討論2]
建議太棒了!小弟獲益匪淺。
偶想再請(qǐng)教幾個(gè)問(wèn)題:
1。“便于歸檔,進(jìn)行版本控制,大項(xiàng)目必須要做的工作。”
目前我是用ISE的Archive進(jìn)行版本備份,Archive自動(dòng)生成一個(gè)zip文件,然后備份島服務(wù)器。不知道丁丁所說(shuō)得用command line進(jìn)行歸檔是怎么回事,可否講解幾句?
2。“便于重現(xiàn)問(wèn)題,因?yàn)槊钚锌梢员WC在原始輸入(源碼、約束)不變的前提下得到只有時(shí)間標(biāo)簽不同的bit文件”
“時(shí)間標(biāo)簽”是指什么?我不明白這個(gè)術(shù)語(yǔ)。如果源代碼和約束保持不變的話,唯一可調(diào)節(jié)的就是map和PAR的effort了。重現(xiàn)問(wèn)題是指保存以前的bit文件以備將來(lái)使用?
3。“自動(dòng)生成一個(gè)插入某些測(cè)試引腳的bit文件等等”
丁丁可否介紹一下這個(gè)”插入測(cè)試引腳“?
4。“那么可以同時(shí)跑兩個(gè)任務(wù)”
我覺(jué)得CPU倒不是瓶頸,關(guān)鍵是內(nèi)存到時(shí)恐怕不夠用。而且win2000 pro好像最多也就支持2G的內(nèi)存吧。
我們還有另外一臺(tái)工作站,使用了4個(gè)AMD Appro 64-bit processor。但好像兼容性不太好,PAR的時(shí)候老是出錯(cuò)。不知道升級(jí)到6.2能不能解決這個(gè)問(wèn)題。
但看另外幾個(gè)貼子說(shuō)6.2有幾個(gè)比較嚴(yán)重的bug,請(qǐng)問(wèn)丁丁使用過(guò)6。2沒(méi)有?值得升級(jí)嗎?
多謝!
[討論1]
1,Achieve可以進(jìn)行版本管理,但是文件太大。一般來(lái)說(shuō),作版本控制最好是保存所有原始輸入,如果做FPGA,原始輸入包括HDL代碼,綜合工程.prj或者腳本.tcl,綜合約束.sdc,實(shí)現(xiàn)約束.ucf,所有core的網(wǎng)表.edn,實(shí)現(xiàn)的腳本.bat,再有就是注意綜合工具的版本和實(shí)現(xiàn)工具的版本。
如果所有這些都沒(méi)有變化,那么可以保證再運(yùn)行一遍得到完全一樣的結(jié)果。這也是版本控制的一個(gè)關(guān)鍵吧,只要保證可重復(fù)性,那么那些結(jié)果除了bit你要用到其他也可都不保存。
2,時(shí)間標(biāo)簽就是time stamp,在網(wǎng)表文件和bit文件頭都有,表示這個(gè)文件的生成時(shí)間記錄,這個(gè)不會(huì)影響到內(nèi)部的功能。
3,在插入測(cè)試引腳這里,可以利用FPGA Editor來(lái)操作,直接編輯.ncd文件,再進(jìn)行bitgen就可以了,那么如果你需要插入很多測(cè)試引腳,利用腳本(好像是.scr)可以幫你自動(dòng)完成,然后只進(jìn)行bitgen就可以了,避免重新布局布線浪費(fèi)時(shí)間,避免重新布局布線影響timing。當(dāng)然FPGA Editor還可以做很多修改了,就不多說(shuō)了。
4,給一個(gè)以前的腳本例子:
綜合和實(shí)現(xiàn)的命令行:
synplify_pro -batch ../script/chip_syn.tcl
ngdbuild -dd ./_ngo -uc ../script/chip_par.ucf -p xc2s200-fg456-5 .\rev_1\chip.edf chip.ngd
map -p xc2s200-fg456-5 -timing -cm speed -detail -ir -pr b -o chip_map.ncd chip.ngd chip.pcf
par -w -ol med chip_map.ncd chip.ncd chip.pcf
bitgen -w -f ../script/chip_par.ut chip.ncd
copy chip.bit ..\bit\
里面這個(gè)chip_par.ut保存了bitgen命令的選項(xiàng),也可以不用這個(gè)文件,都加在命令行里。
后面是chip_syn.tcl:
project -new
#add_file options
add_file -constraint "../script/chip_syn.sdc"
add_file -verilog "../src/src1.v"
add_file -verilog "../src/src2.v"
add_file -verilog "../src/src3.v"
add_file -verilog "../src/src4.v"
add_file -verilog "../src/src5.v"
add_file -verilog "../src/src6.v"
add_file -verilog "../src/src7.v"
add_file -verilog "../src/src8.v"
#device options
set_option -technology SPARTAN2
set_option -part XC2S200
set_option -package FG456
set_option -speed_grade -5
#compilation/mapping options
set_option -default_enum_encoding default
set_option -symbolic_fsm_compiler 0
set_option -resource_sharing 0
set_option -use_fsm_explorer 0
#map options
set_option -frequency 50.000
set_option -fanout_limit 100
set_option -disable_io_insertion 0
set_option -pipe 0
set_option -fixgatedclocks 0
set_option -retiming 0
set_option -modular 0
set_option -update_models_cp 0
set_option -verification_mode 0
#simulation options
set_option -write_verilog 0
set_option -write_vhdl 0
#automatic place and route (vendor) options
set_option -write_apr_constraint 0
#set result format/file last
project -result_file "rev_1/chip.edf"
#implementation attributes
set_option -vlog_std v2001
project -run
只是個(gè)人的一點(diǎn)建議,版本控制只要做了就可以,保存archive也要知道這個(gè)東東怎么來(lái)的,下次可以保證還作出來(lái)同樣的東東。保存命令行也要知道所有的軟件版本等。
評(píng)論
查看更多