- FPGA进阶开发与实践
- 田亮 张瑞 蔡伟等编著
- 1808字
- 2025-02-18 09:50:13
1.6 命令行与Tcl脚本
1.6.1 命令行
采用命令行方式来控制设计的编译流程,设置设计的各种约束,可以加快开发进程。因为命令行方式占用的内存较少,可以执行自动化流程。
Quartus软件中可以独立以命令行方式执行的模块程序有以下几个。
(1)quartus_map:分析综合工具。
(2)quartus_fit:布局布线工具。
(3)quartus_tan:时序分析工具。
(4)quartus_sim:仿真工具。
(5)quartus_asm:配置映射工具。
(6)quartus_pgm:程序下载工具。
(7)quartus_sh:Tcl解释器。
用户可以在操作系统的命令窗口中直接输入命令,也可以把需要执行的命令写到一个脚本文件中,通过执行脚本文件来执行所有的命令。
命令行示例如图1-59和图1-60所示。

图1-59 命令行示例(一)

图1-60 命令行示例(二)
1.6.2 Tcl基础知识
Tcl是EDA工具行业标准脚本语言,它允许用户自定义命令,并且可以在大多数平台间转换。
Quartus软件自带Tcl命令包和解释器,命令包有以下几个。
(1)::quartus::project:建立和设置工程。
(2)::quartus::device:器件设置。
(3)::quartus::advanced_device:高级器件设置。
(4)::quartus::flow:简单设计流程。
(5)::quartus::timing:时序分析。
(6)::quartus::advanced_timing:高级时序分析。
(7)::quartus::simulation:仿真。
(8)::quartus::report:数据报告。
(9)::quartus::timing_report:时序报告。
(10)::quartus::backannotate:反标注。
(11)::quartus::logiclock:逻辑锁定。
执行Tcl命令有以下两种方式。
(1)直接执行Tcl脚本(批处理方式)。
可以直接在Tcl Shell中执行source命令:

也可以在命令窗口中执行以下命令:

(2)在Quartus软件的Tcl解释器中执行命令。
如图1-61所示,先进入Tcl解释器,再输入Tcl命令。
Tcl解释器中还提供了帮助信息,如图1-62所示。
Tcl是工具命令语言,由加州大学伯克利分校的约翰·奥斯特豪特开发。他最初的目的是控制IC设计过程中使用的不同软件,以便轻松地完成设计。Tcl在EDA工具行业得到了广泛应用,包括Synopsys、Mentor Graphics、英特尔等在内的主要供应商的产品都支持Tcl。
Tcl是一种基于字符串的语言。Tcl中的基本结构和规则很少,基本语法结构是命令后面跟随相关参数,用空格分隔命令和参数,用换行符或分号结束命令。

图1-61 Tcl解释器

图1-62 帮助信息
Tcl解释器是执行Tcl脚本的程序,可以通过tclsh命令启动Tcl解释器。
图1-63中显示了一个“Hello World”示例。在该示例中,利用puts命令来打印字符串“Hello World”。

图1-63 “Hello World”示例
1.6.3 创建和执行Tcl脚本
Tcl脚本是包含一系列Tcl命令的文件,文件扩展名为.tcl。
下面创建Tcl脚本以打印字符串“Hello World”。
(1)创建myscript.tcl文件,如图1-64所示。

图1-64 创建myscript.tcl文件
(2)执行Tcl脚本,如图1-65所示。

图1-65 执行Tcl脚本
1.6.4 Tcl脚本实验
1.实验目的
学习Tcl脚本在FPGA开发中的应用。
2.实验环境
(1)硬件:PC、FPGA实验开发平台。
(2)软件:Quartus Prime 17.1。
3.实验内容
首先在Quartus软件中使用Tcl建立工程,添加设计源文件和时序约束文件,然后进行编译,最后烧写到目标器件上进行验证。
4.实验设计
新建设计源文件test.v和时序约束文件test.sdc,代码如下。


将Tcl命令统一放入文件test.tcl中。
首先加入Quartus软件支持的Tcl命令包,本实验中需要用到::quartus::project(提供建立工程、管理工程、引脚分配及时序约束等功能)和::quartus::flow(提供工程编译功能)两个Tcl命令包。

然后建立设计工程,本实验中设计工程名为test。

接下来设置工程属性,如使用的器件型号、Quartus软件版本、编译和仿真工具等;添加设计源文件test.v和时序约束文件test.sdc,对设计中使用的I/O进行引脚分配。


最后通过“execute_flow-compile”命令对工程进行编译。
Quartus软件支持的详细Tcl命令可参考Quartus Handbook文档中的相关内容。
5.实验步骤
(1)将实验所需文件放入本地文件夹包括设计源文件test.v、时序约束文件test.sdc和Tcl脚本文件test.tcl,如图1-66所示。

图1-66 准备实验所需文件
(2)打开Quartus软件,调出Tcl控制台,如图1-67所示。

图1-67 调出Tcl控制台
(3)如图1-68所示,在Tcl控制台中输入命令,执行Tcl脚本文件test.tcl。

图1-68 执行Tcl脚本文件
(4)在Tcl控制台中输入“execute_flow-compile”命令对工程进行编译。编译时间随计算机配置不同而不同。编译成功后即可查看综合、布局布线及时序报告,以检查设计的正确性。
(5)根据实验实际使用的硬件连接情况,在Tcl脚本文件test.tcl中修改工程I/O引脚分配后再次运行。
(6)用下载线将实验使用的开发板和计算机相连并正常供电。如图1-69所示,在Quartus软件中单击“Program Device(Open Programmer)”,打开硬件编程界面。

图1-69 单击“Program Device(Open Programmer)”
(7)在“Currently selected hardware”下拉列表框中找到实验所用的下载线,如图1-70所示。

图1-70 选择下载线
(8)在图1-71所示的界面中,“Mode”选择“JTAG”,单击“Auto Detect”按钮,然后选择需要下载的文件。

图1-71 选择需要下载的文件
(9)如图1-72所示,单击“Start”按钮,开始下载文件。下载过程中遇到错误时,Quartus软件会显示具体的错误。若下载成功,“Progress”栏会显示“100%(Successful)”。

图1-72 下载文件
6.实验现象
用示波器测试test_ot引脚,可以观察到周期性的正脉冲信号,如图1-73所示。

图1-73 观察实验现象