riple

Stay Hungry, Stay Foolish.

QuartusII命令行操作--如何建立可移植的工程

0
阅读(17332)

使用Altera公司PLD器件的朋友对Quartus II的GUI界面操作已经很熟悉了,对于这个集成开发环境的强大功能也有了体会。可是不知大家有没有这样的经历,在自己机器上编译得很好的工程,到了别的机器上就编译不过去了,更危险的是编译通过了,下载后却有问题。


这种问题在使用版本控制工具(如CVS)管理代码和工程文件的过程中也很普遍:由于文件缺失或者文件路径的改变造成编译失败,或者由于配置文件的缺失造成编译结果不可重现。这些错误是使用版本控制工具的大忌,也是造成版本失控的一个因素。

也许最简单的办法是:只提供设计代码,由使用者重新建立工程和设置。这是方法之一,但是一个效率很低、可重现性较差的方法。一个复杂的设计对配置有多少要求,重用这个设计的人就有多少个容易出错的地方,这些错误组合起来就会极大地降低工作效率。


我在实践中总结了一些建立可移植、可重现的Quartus II工程的方法,与大家分享,希望对大家的工作有所帮助。


原则一:修改配置文件中的绝对路径名,采用相对路径名指定编译所需的文件(.v、.vhd)。
原则二:上传或备份配置文件(.tcl),具体的方法请参考我的上一篇文章。
原则三:选择合适的工程相关文件上传或备份,具体方法请参考我的另一篇文章。
原则四:编写编译脚本(.bat或.tcl),自动调用配置文件(.tcl)进行编译。

下面,主要针对第四个原则进行说明。


Quartus II的主要编译过程是:分析和综合(Analysis & Synthesis)、布局布线(Fitter)、汇编(Assembler)、时序分析(Timing Analyzer)。这四个步骤在GUI界面中的Processing下都有对应的工具栏按钮,可以分别执行,也可以通过全编译(Compilation)按钮一次完成。

相应地,在Quartus II的命令行命令中,上述四个步骤也有对应的命令,分别是:quartus_map、quartus_fit、quartus_asm、quartus_tan。


只要依次执行上述命令(命令参数要正确),就可以实现全编译的功能。


如何获取正确的命令参数呢?


如果有耐心并且希望深入了解每条命令的功能的话,可以在windows命令行中输入上述命令名并回车,然后根据提示察看help内容,例如输入:quartus_map -h。


如果希望尽快得到可用的命令参数,可以在GUI界面中执行一次全编译,编译成功以后,在编译报告(Compilation Report)界面中察看Flow Log项,就可以看到对应全编译各个层次的命令及命令参数了。把Flow Log中的命令拷贝出来,粘贴到一个批处理文件(.bat)中,就可以在命令行执行全编译了(注意要和.qpf放在同一个目录下)。


在命令行执行全编译的好处有两点:一是编译速度加快(内存占用比GUI少);二是编译过程可重现(GUI界面提供了太多的功能,很有可能误操作),即使操作者不会使用Quartus II,也能得到编译结果。

上面只是Quartus II命令行工具在全编译过程中的用法,Quartus II的其它功能也有对应的命令行命令,大家可以根据自己的需要添加到批处理文件中。

至于如何调用配置文件,可以在生成配置用的.tcl文件后,在命令行中执行quartus_sh -t xx.tcl,就会自动把所需的配置内容添加到.qsf文件中。可以把这条命令添加到上述批处理文件的第一行,就可以调用配置文件并执行全编译了。

需要补充的一点是,Quartus II还提供了一套TCL命令,可以用来执行GUI的大部分功能。这套命令结合标准的TCL语言,还可以执行更为详尽和个性化的操作。

提供一个链接,这篇文档给出了Quartus II命令行操作的详细说明:Quartus II Scripting Reference Manual

Baidu
map