Xilinx ISE所涉及的一些命令以及Command Line的使用[讨论主题]
因为目前进行的一个项目使用了多块容量较大的Xilinx FPGA, 对各块FPGA进行synthesis,map,P&R和generating programming file就成了一个大问题。(惭愧啊,group里没有人有modular design的经验)虽然现在的工作站性能比较强劲,但产生每一个programming file还是要花上好几个小时。所以考虑到在Command Line下面进行所有的编译工作,下面是一点点心得,希望对大家有所帮助(不知道有Westor在那本ISE详解里面介绍过这个没有,偶是没有看过那本书了,不过,要是Westor已经写过了的话,:-(. $#@%%N#%&*^$###@#)。废话少说,言归正传。
1.Command的介绍
要完成一次完整的Xilinx FPGA编译过程,涉及到的Command包括了:
XST:
全称为Xilinx Synthesis Technology,这是Xilinx ISE里面附带的一个免费的综合工具。(呵呵,Synplify Pro的购买正在商洽之中)Synthesis完毕后,你可以用任何的文本工具打开后缀名为“.syr”的文件,察看synthesis的具体运行过程及报告。
NGDBuild:
这个命令,其实就是translate啦。这是implementation的第一步。它会把所有的netlist和design constraint合并到一起,生成一个ngd文件供map工具使用。同样的,NGDBuild的报告文件是后缀名为“.bld”的文件。
MAP:
MAP命令是将NGDBuild命令所生成的ngd文件,映射到具体的FPGA器件里面去。MAP将产生一个NCD文件供PAR使用。你可以用任何文本工具打开后缀名为“.mrp”的map报告文件。
PAR:
Place & Route。这个偶就不多说了。免得被砖头砸到。PAR的报告文件后缀名是“.par”。
TRCE:
这个是用来产生偶们最最关心的timing report的。TRCE会分析你的FPGA的设计并且产生一个后缀名为“.twr”的时序报告。你可以用任何文本工具打开它,也可以用xilinx的Timing Analyzer。Timing Analyzer比较直观,推荐新手使用。
Bitgen:
顾名思义,这个Bitgen就是用来generate programming file啦。
2. 使用举例
介绍完Xilinx提供的这些命令后,让我们来看看如何使用它们吧。Xilinx给我们提供了一个很有用的工具:View Command Line Log File。这个工具位于Process for Source窗口的Design Entry Utitlities下面。
双击这个View Command Line Log File,你看到了什么?哈哈,在右边的文本编辑窗口里面出现了类似于下面的语句:
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
对了,上面的这些就是你以前曾经使用过的命令啦。其实,我们用ISE作Synthesis,Map,PAR的时候,ISE就会自动调用上面所说的那些command,ISE其实就是一个GUI罢了。:-)
如果双击View Command Line Log File时,出现了下面的错误提示:
Warning: This process is used to display the running command log file that records some application command lines.
这就说明了你还没有implement过你的design,或者你已经清空过了这个design。(在project目录下面,有一个cleanup project files按钮,可以清空)
接下来,就是最后一步啦。你只需要用任何文本编辑器,把上面这段Command的历史纪录Copy&Paste,再存为一个”.Bat”批处理文件,在windows的command line下面执行就可以了。注意需要把这个.bat文件放在你的项目所在目录下。
3. 几点注意
a. 如果要连续跑好几个project,建议先使用Cleanup Project Files.根据偶的经验,如果不进行清空的话,Synthesis和PAR有时会出错。但是这里会出现一个小问题,清空过后,原有的一些文件可能会被删除,比如__projnav目录下面的*.xst(这个时XST的配置文件,做Synthesis的时候,XST会读这个文件以获得相关配置),再比如*.prj(project文件,里面罗列了一些被你的设计所使用的module)以及*.ut文件(ut是Bitgen的配置文件)。这3种文件,在使用Command Line之前最好确认一下是否存在。偶一般会将这3种文件作备份,到时候好拿出来,改一改就用。
b. 在Xilinx的安装目录Xilinx\doc\usenglish\books\docs下,有关于这些command的pdf文件,如果有需要,可以读一读。不过,经过偶苦读一阵之后,偶发现,其实没有太大必要,有问题再说吧。
4. 总结
这是偶第一次发原创,肯定有很多不足之处,恳请赐教。其实这个话题也比较简单,三言两语也可说清楚,但根据偶过去惨痛的新手经验,偶相信还是比较详细地讲解一些为好。至少可以让新手们多了解一些ISE本身嘛。如果大家觉得有那么一丁点儿用处的话,就请re一下先,也不枉偶打那么多字嘛。嘿嘿。 |