因
为目前进行的一个项目使用了多块容量较大的Xilinx FPGA,
对各块FPGA进行synthesis,map,P&R和generating programming
file就成了一个大问题。(惭愧啊,group里没有人有modular
design的经验)虽然现在的工作站性能比较强劲,但产生每一个programming file还是要花上好几个小时。所以考虑到在Command
Line下面进行所有的编译工作,下面是一点点心得,希望对大家有所帮助。
1.Command的介绍 要完成一次完整的Xilinx FPGA编译过程,涉及到的Command包括了: XST: 全称为Xilinx Synthesis Technology,这是Xilinx 里面附带的一个免费的综合工具。(呵呵,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本身。
|