马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
Xilinx
ISE 批处理
最近在研究modelsim命令行仿真时想,仿真可以用命令行,批处理的方式,那综合呢,布局布线呢?经过查证是可以的。 下面就介绍ISE通过命令行,批处理的方式实现综合,布局布线等工作。 一、首先要将在你的环境变量中添加路径,也就是你所用到的应用程序的路径,我现在用的版本是ISE12.4版本,安装目录在D盘,所以建立一个PATH的环境变量,也即PATH=D:\Xilinx\12.4\ISE_DS\ISE\bin\nt\。如下图所示: 见附件中得环境变量.bmp
*建立环境变量的作用就是可以在任何目录下DOS窗口下直接使用path所制目录下应用程序。 二、建立工程文件夹,工程的目录结构并添加所需文件。 以ise下面自带的例子工程watchver为例,经整理后变成如下形式的目录结构:
见附件中得.jpg文件 其中rtl中放置所有hdl代码,其中包括ipcore下的代码。ngc放置ip的网表文件。prj放置批处理文件run.bat,stopwatch.xst,stopwatch.prj,stopwatch.ut。ise放置程序运行过程中产生的零时文件,以及最后生成的bit文件。 首次建立工程时我们可以打开GUI界面程序,建立一个工程,设置好综合等工作需要的参数。然后开始综合,布局布线等工作。然后我们将文件夹下生成的stopwatch.xst,stopwatch.prj,stopwatch.ut文件拷贝到prj目录下。(如果你熟知.xst文件和.ut文件的配置也可以不走这一步,或者这一次之后,所有的工程都可以通过修改这次的一些文件即可) stopwatch.prj
文件是该工程所包含的所有好多了文件的路径,可以用记事本打开。stopwatch .xst
是综合时需要的参数。 stopwatch.ut
是生成bit文件时所要的参数。 Xlinx下面相关命令的介绍:
XST:综合
例如:xst -intstyle silent -ifn "../prj/%ProjectName%.xst" -ofn %ProjectName%.syr
NGDBuild: 把所有的netlist和design constraint合并到一起,生成一个ngd文件供map工具使用。NGDBuild的报告文件是后缀名为“.bld”的文件。 注意:在执行这条命令之前,需要写后缀为.xst的配置文件和*.prj的工程文件。 例如:ngdbuild -intstyle silent -dd _ngo -sd ../ngc -nt timestamp -uc ../ucf/%ProjectName%.ucf -p %FpgaType%-%Package%-%Speed% %ProjectName%.ngc %ProjectName%.ngd
MAP:MAP命令是将NGDBuild命令所生成的ngd文件,映射到具体的FPGA器件里面去。MAP将产生一个NCD文件供PAR使用。MAP的报告文件是后缀名为“.mrp”。 例如:map -intstyle silent -p %FpgaType%-%Package%-%Speed% -cm area -ir off -pr off -c 100 -o %ProjectName%_map.ncd %ProjectName%.ngd %ProjectName%.pcf PAR: PAR的报告文件是后缀名为“.mrp”。 例如:par -w -intstyle silent -pl high -rl high -xe n -t 1 %ProjectName%_map.ncd %ProjectName%.ncd %ProjectName%.pcf
TRCE:用来产生timing report。TRCE会分析你的设计然后产生一个后缀名为“.twr”的时序报告。你可以用任何文本工具打开它,也可以用xilinx的 Timing Analyzer。
Bitgen:Bitgen用来产生你所需要的programming file。注意此时需要相应的“*.ut”配置文件,相关的配置文件必须先写好。 其他相关命令和相关的参数可以查看xlinx的文档devref.pdf 三、以上准备工作完成后,就开始写批处理文件run.bat run.bat文件内容如下: @echo off rem 工程文件文件名 stopwatch set ProjectName=stopwatch rem 器件类型 xc3s1000 set FpgaType=xc3s1000 rem 封装类型 fg456 set Package=fg456 rem 器件速度 4 set Speed=4 rem 路径转换到ise文件夹下,所有的临时文件都生成在该文件夹下 cd ..\ise
rem 开始综合 echo Started : "Synthesize - XST" xst -intstyle silent -ifn "../prj/%ProjectName%.xst" -ofn %ProjectName%.syr if %errorlevel%==0 (goto :Translate) else (goto :XST Failed) rem 如果综合正确,那么就开始Translate,如果综合出错,那么就跳到综合失败处,然后打开.syr文件看记录 :XST Failed echo syn error!!! "../ise/%ProjectName%.syr" exit rem Translate :Translate echo Started : "Translate" ngdbuild -intstyle silent -dd _ngo -sd ../ngc -nt timestamp -uc ../ucf/%ProjectName%.ucf -p %FpgaType%-%Package%-%Speed% %ProjectName%.ngc %ProjectName%.ngd if %errorlevel%==0 (goto:Map) else (goto:Translate Failed) rem 如果Translate正确,那么就开始Map。如果Translate出错,那么就跳到Map失败处,然后打开.bld文件看记录 :Translate Failed echo Translate error!!! "../ise/%ProjectName%.bld" exit rem Map :Map echo Started : "Map" map -intstyle silent -p %FpgaType%-%Package%-%Speed% -cm area -ir off -pr off -c 100 -o %ProjectName%_map.ncd %ProjectName%.ngd %ProjectName%.pcf if %errorlevel%==0 (gotolace & Route) else (goto:Map Failed) rem 如果Map正确,那么就开始Place & Route。如果Map出错,那么就跳到Map失败处,然后打开.mrp文件看记录 :Map Failed echo Map error!!! "../ise/%ProjectName%.mrp" exit lace & Route echo Started : "lace & Route" echo ... par -w -intstyle silent -pl high -rl high -xe n -t 1 %ProjectName%_map.ncd %ProjectName%.ncd %ProjectName%.pcf if %errorlevel%==0 (goto:Trce) else (gotolace & Route Failed) rem 如果Place & Route正确,那么看静态时序分析,如果Place & Route出错,那么就跳到Place & Route失败处,然后打开.par文件看记录 :Place & Route Failed echo Place & Route error!!! "../ise/%ProjectName%.par" exit rem 静态时序分析 :Trce echo Started : "Generate Post-Place & Route Static Timing" trce -intstyle silent -v 3 -s 4 -n 3 -fastpaths -xml %ProjectName%.twx %ProjectName%.ncd -o %ProjectName%.twr %ProjectName%.pcf if %errorlevel%==0 (goto:Generate Programming File) else (goto:Trce Failed) rem 如果Trce出错,那么就跳到综合失败处,然后打开.par文件看记录 :Trce Failed echo Trce error!!! "../ise/%ProjectName%.twr" exit rem pause :Generate Programming File "../ise/%ProjectName%.twr" echo go on or exit pause rem 生成bit文件 echo Started : "Generate Programming File" echo ... bitgen -intstyle silent -f "../prj/%ProjectName%.ut" %ProjectName%.ncd echo errorlevel=%errorlevel% echo done! rem pause rem 将bit文件拷贝到bit文件夹下 copy *.bit ..\bit\*.bit exit 示例文件见附件
|