Menu Close

Quartus 下使用Tcl 命令创建工程

在我们使用Quartus 创建工程时, 通常会使用GUI mode模式创建工程。在创建好的工程中添加源文件,IP 核, 约束文件等等。通常来说, Quartus GUI 工程比较干净,不会产生过多的二进制文件,所以整个工程通常比较小。但有些时候,我们也需要使用termal 设备远程调试。在有些自动化测试中,也需要脚本文件实现工程的组建,编译等等。

本文将对使用Tcl命令创建脚本工程进行讲解(script project)。

1.  开发环境:

本文中使用的是Quartus 21.1 版本,其他的版本与之类似。

2. script 工程目录结构

  • 创建一个test 目录

用户也可以根据自己的工程需要更改这个目录名称

  • 在test 目录下创建以下几个目录,用于存放不同的文件:

图1

constraints 目录: 用于存放FPGA 约束文件,目前这个目录为空, 用户可以编写自己的tcl 文件,和可以将约束文件写入到prj_scripts 目录中的create.tcl文件中。例如:如果在constraints 目录下建立pin.tcl文件, 只要在create.tcl 文件中需要的位置添加 source  $constraints_dir/pin.tcl 即可。

 

图2

docs目录 :用于存放和项目相关的文档,包括docx文件,原理图,说明文件等等。

ip_cores目录:用于存放pip文件。 pip 文件是由 ip  核所生成的,同时有可能生成以下*.v 文件作为辅助。

 

图3

prj_scripts目录:srcipt 脚本文件存放在这个目录下,本文主要对这个目录下的文件做详细介绍。

图4

sim_scripts目录:仿真脚本文件存放在这个目录下, 在这个目录下, 可以创建多个子目录,用于不同的test case 仿真。仿真工程也是通过script 脚本方式实现的。

图5

src目录:所有的原文件存放在这个目录下

 

图6

tb目录:所有的testbench 文件放在这个目录下

图7

.gitignore:script 脚本工程通常配合git 使用,在使用git 工具维护工程时,就需要告诉git server 那些文件是临时文件、目录,或者是不需要上传到git server 的文件,目录。 这些不需要上传的文件,目录都记录在这个文件中。demo程序中显示:test_uart 目录,output_files目录不上传到git server。用户也可以根据需要自行修改。

图8

readme.txt:通常是整个工程的说明文件,用户可以根据需要自行编写。

环境需求:
Quartus

脚本工程操作步骤:
方法1:
1) 进入prj_scripts 目录
2) 双击 scripts_cmd" 图标
3) quartus_sh -t create.tcl
5) quartus_sh -t compile.tcl
6) quartus_sh -t gen_jic.tcl

方法2:
1) 进入prj_scripts 目录
2) 双击 scripts_cmd" 图标
3) make create_prj
5) make compile_prj
6) make gen_jic

 

 

3 创建script 工程脚本

  • 进入prj_scripts 目录

图9

  • scripts_cmd :

执行script 脚本工程所需要的的命令窗口(termial)。 这里,我们假设Quartus 安装在 C:\intelFPGA_lite 目录下。 如果用户的Quartus没有安装在这个目录,需要编辑env.bat文件,修改为用户计算机下的安装目录,这里我们增加了环境路径:path = %path%;C:\intelFPGA_lite\21.1\quartus\bin64; C:\intelFPGA_lite\21.1\nios2eds\bin\gnu\H-x86_64-mingw32\bin

图10

  • common_settings.tcl:

这个文件中定义了很多和script脚本相关的信息,这些信息可能会在多个tcl 文件中使用,其他的tcl文件可以使用 source common_settings.tcl 来调用这个文件中的信息。这有点像 c 语言中的 h 文件(头文件) 一样。

图11

当用户需要创建自己的工程时, 只需要修改,其他部分不需要修改。

1)set prj_name test_uart  这里我们定义的工程名称为test_uart , 用户可以根据自己工程需要进行更改。

2)生成的jic 文件将放到../output_files 这个目录中, 用户也可以自行更改。

  • create.tcl:

Quartus 软件中创建工程中的参数比较多,我们先使用GUI 界面生成tcl 文件,之后在对这个tcl文件修改,形成我们所需要的脚本文件既可。

图12

1)将使用GUI 工具生成的tcl 文件打开, 找到if{$make_assignments} 这个段落,copy 整个段落。

图13

 2)打开creat.tcl 文件,找到if{$make_assigments} 这个段落, 粘贴之前copy 的内容即可。

在scripts 目录下终端窗口中使用 quartus_sh -t create.tcl  执行创建工程的操作。

图14

  • compile.tcl:

这个脚本文件用来编译 刚刚创建的工程。 在GUI 模式下, 我们可以进入工程目录,双击*.qpf 进入gui 界面,使用图形界面进行编译。 但是在远程操作中,使用script 脚本则更加方便。运行这个脚本,可以在不进入GUI 模式下, 编译整个工程,同时生成相应的sof 文件。一般情况下,这个脚本文件不需要用户修改。

在scripts 目录下终端窗口中使用 quartus_sh -t compile.tcl  执行创建工程的操作。

图15

  • gen_jic.tcl:

这个脚本文件用来生成jic文件。 使用这个tcl 脚本之前, 必须保证工程已经正常编译了, 同时有sof 文件在 test_uart/output_files 目录下。

在scripts 目录下终端窗口中使用 quartus_sh -t gen_jic.tcl  执行创建工程的操作。

图16

图17

如图17 所示, 用户的项目可以更改

1)sof 文件所在的目录

2)使用的flash 类型等。

4. 执行 quartus_sh命令 

当用户修改好工程后,可以执行以下操作,实现工程的创建,编译等操作:

1)进入prj_scripts 目录

2)双击scripts_cms

3)执行 quartus_sh -t create.tcl

4)执行 quartus_sh -t compile.tcl

5)执行 quartus_sh -t gen_jic.tcl

 

也可以使用make 命令:

1)进入prj_scripts 目录

2)双击scripts_cms

3)执行 make create_prj

4)执行 make compile_prj

5)执行 make gen_jic

 

到此工程被完整的创建, 编译,并且输出了sof,jic文件了。

图18

 

本文中提供是一个demo 工程, 用户可以在理解这个工程后, 更改为自己所需要的项目。附件中有一个GUI 模式下uart 工程文件 和一个scripts 模式下的工程文件。 作为例子,供用户参考。同时也可以用来验证相关的命令操作。

 

[content_control]

GUI 模式下工程

quartus_gui_prj.zip

script 模式下的工程

quartus_tcl_prj.zip

[/content_control]

 

 

Posted in FPGA, FPGA 教材教案, Verilog, 教材与教案, 文章

发表回复

相关链接