湘攸客

【再说FPGA】FPGA设计之自动化

0
阅读(10910)

FPGA设计之自动化

王敏志

概述

所谓自动化设计,就是在逻辑设计流程中,有些过程需要反复进行,比如编译、仿真和工程调试等等,可以通过一定的方式使得这些流程可以自动运行,而不必每次都需要人工手动去启动。参考[3]介绍了如何自动化建立Quartus II工程,参考[2]翻译了参考[1]的内容,这里对这些热心人表示感谢。

Quartus II工程自动化

在参考[3]中介绍了ALTERAFPGA开发时利用TCL建立、编译QuartusII工程等内容。除了参考[3]中提到的两种“执行”TCL文件的方法,这里我提出一种相对“自动化”的方式,其实流程都是一样的只是加了“自动化”这个噱头而已。

参考[3]提到一个工具,即QuartusII TCL Shell,这是一个TCL编译执行工具入口,虽然有了一系列TCL命令,但是还是必须手动打开这个shell才能执行TCL文件。以前在使用ModelSim进行自动化仿真(下一节介绍)时候用到过一个DOS系统工具,即Batch(批处理),了解DOS系统的应该知道什么批处理。如参考[3]一样建立一个TCL文件,再创建一个Batch文件就可以实现所谓的“自动化”了。

1:自动化创建QuarutsII工程

1-a是准备阶段,目录下只有BatchTCL以及存储源文件的src目录。这时候只要双击执行Batch文件就会在此自动创建一个工程,如图1-b所示。TCL文件的内容和参考[3]里的一样,这里需要特别说明的是TCL里的内容其实就是我们平时按常规创建工程时写入qsf文件里的各项命令,此时打开图1-bqsf文件发现大部分内容和TCL文件里一样。所以这里有个很好的办法帮助大家弄清楚应该在TCL文件里加入哪些内容,直接从以前的qsf文件拷贝即可,唯一不同就是TCL文件开头需要加入TCL包以及其它的TCL命令,这些在参考[3]有详细说明。

至于Batch文件的内容,其实就是图1-b下方cmd里的那条指令,即“quartus_sh -t QII_Auto.tcl”。

1显示的只是创建工程,修改TCL文件,加入工程编译,然后双击batch文件,那么创建、编译一条龙自动化了,如图2所示。比较图2和图1-b的区别,发现多了不少文件,最重要的是sofpof文件产生了。所以当工程需要转移的时候只需要转移图1-a中的文件即可完整转移整个工程,而不需要备份其它文件,可以大大节约空间。

2:自动化创建编译QuartusII工程

这里需要提醒的是,上述操作是在quartus_sh下进行的,在参考[1]有提到,ALTERA的有关“timing”包的指令只能在quartus_tan下执行,同样,在后面一节中笔者会介绍有关Debug(其实应该是和JTAG有关)的一些指令必须在quartus_stp下执行。

ModelSim自动化仿真

我有一篇文章《ModelSim应用提高》里其实涉及到这方面内容,即此文中的“批处理仿真流程”一节。基本流程和上一节Quartus工程自动化一样,不过我认为ModelSim的自动化更值得推广,因为FPGA设计过程比较复杂,许多东西需要调整,比如约束、设置甚至于源文件的修改等等,除非用于工程移植,个人建议FPGA的设计不要使用自动化,但是可以利用TCL文件对工程进行配置,这样有利于工程的管理。而ModelSim仿真不同,仿真过程相对简单,除了源文件修改以外其它设置、流程基本一样,这样有利于重复使用。所以不同的仿真只是修改TCL文件即可,Batch之后就可以在波形窗口下看仿真结果了。

调试自动化

Debug引入Virtual JTAG可以大大加速调试进程。在笔者一系列介绍Virtual JTAG的文章中有详细的介绍,这里需要提到的是VJ调试的时候同样可以利用Batch(批处理)方式来大大方便调试。

3Virtual JTAG工具

如图2所示,TCL文件用于设计Virtual JTAG调试工具,而Batch文件用于自动化调用此工具,可以看到,Batch里只有一个指令,即“quartus_stp -t vjgui_sep.tcl”。注意调试的指令必须在quartus_stp下得到执行,这个命令不在参考[1]那节,在SignalTapII里有介绍。

分析及结论

本文介绍了在ALTERAFPGA设计过程中可以自动化的流程,回顾文章中的三个部分,如果先进行仿真,然后开始创建Quarutus工程,最好到调试下载,几乎涵盖了FPGA设计的所有过程。所谓自动化,就是引入Batch来批处理TCL命令,另外Batch的时候注意Quartus不同的TCL命令需要在不同的平台下执行。最后需要提醒的是如果计算机的环境变量“path”设置不当会导致batch失败,这时候需要检查电脑的环境变量,并进行修改,参考《为了使用BATCH自动化设置的PATH变量》。

这里还需要指出另外一点来说明自动化为什么很重要,有很大一部分人的设计环境可能不是Window,而是Linux或者UNIX系统(ALTERAQuartus II有支持这两种系统的版本),那么这些内容就很有帮助了。

参考

[1] Quartus II手册,《TCL Scripting

[2]http://blog.csdn.net/fzxy002763/article/details/7215695

[3] http://bbs.ednchina.com/BLOG_ARTICLE_2118343.HTM
Baidu
map