原创 Tcl In QuartusII

2011-8-12 16:39 6268 13 29 分类: FPGA/CPLD

         经过一周的学习,对Tcl已经有了大概的认识,虽然还不能很顺手地编写代码,但是已经基本能看懂大段的Tcl代码了。在第一节中,咱说过学习Tcl是为了更好地协助硬件开发,因此更深层次的东西咱也不学习了,学了如果不实践的话就会很快淡忘,这也是咱这几年学习的小经验:“实践就是最好的学习”。记得还在学校的时候,导师就会派各种活儿给咱,不管咱会不会,最开始咱主攻的可是FPGA,结果FPGA的活儿没有,单片机、ARMDSP的小项目一大堆,这些也不大熟啊,只能硬着头皮学了,有压力了学习效率就提高了,几个项目下来从对单片机、DSPARM的初学到能轻松驾驭,慢慢地发现这些东西的基本概念都是互通的,只是开发平台不同而已。记得有一个单片机的小项目,真正开发的时间也就一星期,就这一星期学到的东西比在课堂中学到东西都多,咱可是学了一学期的单片机课,也不否认课堂上的知识给项目开发提供了基础,但是如果不实践,可能会像一艘迷失的船一直在海上漂浮,迷茫着,而实践好比沿岸的灯塔,只要向着这个灯塔,船就能成功上岸。

         分享了一点小经验,下面进入正题,学了Tcl到是要看看它在硬件开发中有什么作用。先从QuartusII上下手,QuartusIITcl做了最大的支持,Tcl ScriptingQuartusIITcl的支持文档。第一节中介绍了在QuartusII中打开Tcl Console的方法,这几天学习发现,在QuartusII安装目录:c(或其它根目录下):\altera\11.0(或者其它版本)\quartus\bin\下有个tcl85.exe可执行文件,85表示Tcl开发环境是8.5版本,不同的QuartusII版本这个Tcl版本也有所不同,QuartusII 11.0中是Tcl 8.5,而QuartusII 8.1中是Tcl 8.4,版本不同支持的命令集也会不同,此处大家注意下。打开tcl85.exe后发现,这个是标准的Tcl开发环境,并不像Tcl Console支持Quartus命令集,有什么办法可以使这个标准环境调入Quartus命令集呢?带着这个疑问,咱仔细阅读了手册,发现有一个交互式模式(Interactive Mode),输入quartus_sh  -s后就可以进入QuartusII Tcl Shell,如图1所示,当然打开QuartusII中的Tcl Console就直接进入QuartusII Tcl Shell了。

1

         QuartusII Tcl Shell中可以直接调用QuartusII Tcl命令,这些命令分别集中在各个包(package)中,打开QuartusII Tcl Shell后不一定每个包都处于加载状态,输入help命令可以查看当前加载和未加载的包,如图2所示,图中加载的包有:devicemiscproject

2

2中列出的已加载和未加载的包还不是所有的包,完整的包应该还包括仿真、STA或其它作用相关包,其中所有包及各个包的作用如表1所示。可以通过load_package命令加载所需要的包。

1

包名

功能

backannotate

Back annotate assignments

chip_planner

Identify and modify resource usage and routing with the Chip Editor

database_manager

Manage version-compatible database files

device

Get device and family information from the device database

flow

Compile a project, run command-line executables and other common flows

incremental compilation

Manipulate design partitions and LogicLock regions, and settings related to incremental compilation

insystem_memory_edit

Read and edit memory contents in Altera devices

insystem_source_probe

interact with the In-System Sources and Probes tool in an Altera device

jtag

Control the JTAG chain

logic_analyzer_interface

Query and modify the logic analyzer interface output pin state

misc

Perform miscellaneous tasks such as enabling natural bus naming, package loading, and message posting

project

Create and manage projects and revisions, make any project assignments including timing assignments

rapid_recompile

Manipulate Quartus II Rapid Recompile features

report

Get information from report tables, create custom reports

rtl

Traversing and querying the RTL netlist of your design

sdc

Specifies constraints and exceptions to the TimeQuest Timing Analyzer

sdc_ext

Altera-specific SDC commands

simulator

Configure and perform simulations

sta

Contains the set of Tcl functions for obtaining advanced information from the Quartus II TimeQuest Timing Analyzer

stp

Run the SignalTap II Logic Analyzer

 

         QuartusII Tcl Shell琢磨了半天,试了很多命令,总结了一下,想到了两种利用Tcl协助FPGA开发的功能,由于咱所在部门的前辈都没用过Tcl,这协助方法只能自己想了,大家还有什么好功能就多多分享一下哈!

         (一)第一种功能:自动配置工程:

FPGA开发中,可能针对同一个板子需要新建工程做不同测试,而每次新建工程时都需要选择器件,而调试之前需要分配管脚,一次不要紧,多次就烦了。而通过Tcl仅需敲几个命令或者点几下鼠标就搞定了。在project包中有几个命令,可以完成这些配置,如图3中的Tcl代码,利用set_global_assignment设置了familydevice等关于器件和QuartusII软件的配置,利用set_location_assignment分配了管脚。更多的相关命令可以查看相关包的帮助信息。

3

         将这些代码保存成*.tcl文件,其中有两种方法通过Tcl导入配置:

         1. 打开QuartusII软件,新建工程,无需选择器件,都按照默认配置来,将保存的*.tcl文件拷贝到新建工程目录下,然后在菜单Tools里打开Tcl Script,如图4所示,在Project下有个*.tcl文件,选定它,然后点击右侧的RUN就能执行这个*.tcl文件了,这鼠标一点就瞬间配置完成了。

4

2. 打开QuartusII软件,新建工程,无需选择器件,都按照默认配置来,将保存的*.tcl文件拷贝到新建工程目录下,然后在View->Utility Windows中打开Tcl Console,然后输入source *.tcl命令就可以调用Tcl文件,这样只输了一个命令就瞬间配置完成了。

         (二)第二种功能:自动编译

         在有些规模大的FPGA开发中,可能编译工程一次需要一个小时或者更长时间,都能趁这个空闲出去吃一顿饭了。如果需要编译好几个这样的工程,那人就不能走开,这就比较尴尬了,而Tcl能帮助咱自动完成这些编译工作,无需手动操作。在flow包中包含了几个命令,可以控制工程的编译流程,如图5所示:


5

         其中cd命令是将当前工作目录转为需要打开工程所在目录,关于Tcl的文件操作在后续的《TCL学习小记》中再做学习分享;project_open命令打开需要编译的工程;execute_flow –compile命令编译工程,它包括Analysis and synthesisFitterAssemblerTiming Analyzer操作;通过project_close关闭当前工程,然后编译下一个工程。当然我这个代码写的比较简单,真正需要测试时还需要考虑工程打开错误、工程编译出错等一些问题,这些都需要加入相应的错误判断程序;或者是需要将Analysis and synthesisFitterAssemblerTiming Analyzer操作分开执行,在不同操作间加入不同assignment,然后打印report,这些功能都可以通过Tcl命令实现。

         应该还有更多的功能或者说测试方法,大家多多分享……

PARTNER CONTENT

文章评论16条评论)

登录后参与讨论

用户547145 2014-9-22 18:08

Tcl/Tk在QuartusII中最主要的作用是采用脚本控制,模拟Jtag通信,这样就可以在FPGA层模拟产生各种时序和进行流程配置。与QuartusII的通信的IP为Virtual JTAG。这才是软硬件协同。在调试复杂流程配置时,不需要上位机或者状态机,可以观察每一步的输出,很有用。简单例子,采用SPI接口配置连续128个寄存器,并且后面的值可能与前面的结果相关,采用脚本就方便了,不然没上位机的话,根本没法进行。

用户377235 2014-9-22 18:04

Tcl/Tk在QuartusII中最主要的作用是采用脚本控制,模拟Jtag通信,这样就可以在FPGA层模拟产生各种时序和进行流程配置。与QuartusII的通信的IP为Virtual JTAG。这才是软硬件协同。在调试复杂流程配置时,不需要上位机或者状态机,可以观察每一步的输出,很有用。简单例子,采用SPI接口配置连续128个寄存器,并且后面的值可能与前面的结果相关,采用脚本就方便了,不然没上位机的话,根本没法进行。

Hoki 2014-4-11 13:37

加上绝对路径执行,试试

用户1739054 2014-4-10 15:34

谢谢你了。我经常用它,现在不能用了可不方便了。用你博客的方法必须把我的。tcl文件复制到quartus /bin下的文件夹下很麻烦。不知道怎么能够方便点

Hoki 2014-4-10 12:59

11.0没安装,在13.1下是不行的

用户1739054 2014-4-10 10:43

您能用您的quartus11.0下试一下在tcl console下能用个quartus_stp 吗 我们公司就我自己做逻辑 没有对比

Hoki 2014-4-9 19:33

quartus_stp是signaltap的可执行程序,QuartusII版本更新后,可能不能在quartus中直接调用了

用户1739054 2014-4-9 16:55

我需要做什么工作才能够有效执行

用户1739054 2014-4-9 16:51

嗯,但是quartus9.0是可以再tcl console下执行的。

Hoki 2014-4-9 15:57

quartus_stp不是Tcl命令,是在*:\altera\*\quartus\bin*\目录下的可执行程序,如想执行它,确认下当前路径
相关推荐阅读
Hoki 2017-01-11 17:35
LX9开发板呼吸灯实现
对LX9开发板硬件评测后,从这一节开始真正进入FPGA开发的世界。很多开发板的例程中必有跑马灯实验,老跑马也没意思,咱来把新潮的,整一个呼吸灯。 呼吸灯最初是出现在apple公司的笔记本产品中,当合上...
Hoki 2017-01-11 16:47
LX9的microblaze配置
虽然XC6SLX9芯片资源比较少,但是嵌一个microblaze还是搓搓有余的,这一节就来评测一下在XC6SLX9上microblaze的配置。 有两种方法配置microblaze,一是在ISE软件中...
Hoki 2017-01-11 16:32
zynq评测
Zynq芯片是业界第一款在FPGA中集成ARM核的芯片,由FPGA的发明者xilinx公司推出的。Zynq严格来说不能以FPGA来定义它,因为其是以处理器为中心的平台,能够在单芯片上提供软、硬件和 I...
Hoki 2017-01-11 16:19
u-boot
Zyny芯片启动加载分为3步: 1. 芯片上电启动,首先读取BootROM中的程序,初始化一些必要的外设,然后根据专用引脚电平判断该从何处启动first stage Bootloader(FSBL),...
Hoki 2017-01-11 16:09
基于zynq的交叉编译平台
Zynq芯片的最大特点是其集成了双ARM Cortex-A9处理器,因此zynq的应用基本是以这个ARM核为核心,再配合FPGA逻辑作为协处理器,几乎能实现所有较复杂的应用。并且在ARM上可以跑操作系...
Hoki 2017-01-11 15:54
u-boot image生成
这节介绍一下如何生成u-boot image文件,在SDK软件中点击Xilinx Tools→Create Boot Image工具即可生成,但是生成image文件需要首先集齐3个文件:u-boot....
我要评论
16
13
关闭 站长推荐上一条 /3 下一条