Pango Design Suite(简称PDS)是FPGA厂商紫光同创自主研发的开发环境,对标世界主流工具(如 Xilinx Vivado、Intel Quartus),支持从设计输入、编译、布局布线到仿真验证的全流程开发。PDS提供了类似流行工具的操作界面,学习成本低。布局布线算法优化,处理大型设计速度较快。PDS针对紫光同创FPGA芯片进行了深度优化,兼容性好,支持内地操作系统(如银河麒麟、统信 UOS),符合信创需求。
本文介绍了在linux操作系统下,PDS使用脚本建立FPGA工程的方法。使用PDS进行FPGA工程开发,建立工程则是第一步。对于模块较少、功能简单的FPGA工程,可以使用图形界面的new project选项,选择工程名称、路径,添加设计文件,选择器件,从而建立工程。如下图所示,打开new project wizard。

如果本身工程的设计文件非常多,则手动添加文件和文件夹大幅提升工作量,且容易出错。面对这种情况,我们可以利用PDS的将工程保存为tcl和从tcl建立工程的能力,编写建立工程的脚本。
我们首先建立一个tcl文件,然后通过编辑tcl添加文件。
1、指定器件
首先在tcl开头定义工程所使用的器件。例如,使用Titan :
set_arch -family Titan2 -device PGT180H -speedgrade -7 -package FFBG1152
2、添加文件
推荐建立一个文件夹,将设计文件全部放入其中,按照路径进行管理。例如,我们这里设计文件都在design内。
add_design {./design/top/top_module.sv}
add_design {./design/module/a.sv} #添加所有的模块,包括.v和.sv,以及头文件.vh和.svh
同理,约束文件也放在文件夹中。
add_constraint {./fdc/myproj.fdc} #添加约束文件
对于IP核,添加idf文件,并需要指定它的类型。
add_design {./design/ipcore/pll/pll.idf} -library pll #添加pll,指定到idf文件并指定library
3、建立工程后编译
建立工程后需要首先进行编译。在tcl文件的最后,指定编译指令。
compile -top_module {work.top_module} -verilog_standard {SystemVerilog}
这里我们指定顶层模块的名字,并指定语言标准为SystemVerilog。
建立工程并编译后,如果需要自动执行进一步工作,则继续在下面添加。
synthesize -ads -selected_syn_tool_opt 2
dev_map
place
route
route_optimize
report_timing
report_power
gen_netlist
gen_bit_stream
4、其他设置
通常编译、synthesis、implementation和生成比特流时都需要指定一系列的选项。在tcl中也可以直接指定,防止工程建立之后,每次手动调整选项。
例如,我们的工程编译时,需要指定允许重复模块,有include file的需求,则需要在之前的基础上修改compile命令。
compile -top_module {work.bmx_top} -verilog_standard {SystemVerilog} -allow_duplicate_modules -include_path {../design/include}
注意,当前PDS工具如果设计文件有`include的需要,则被include的文件路径都需要加在-include_path中。
对于这一些可添加的选项,我们可以在图形界面左下角右键点击流程,点击project settings,在图形界面中进行调整,则下面会自动生成tcl命令,复制出来即可。


5、建立shell文件
有了tcl文件,我们在linux系统中,可以使用以下命令建立工程。
pds -file ./project.tcl -work_dir ./output -project_name top_module
该语句指定tcl文件名称,生成工程的路径,以及工程的名称。需要根据实际情况进行替换。
每次输入这么长的语句也有一些不便,并且可能会出错。因此可以建立shell文件,将语句放在shell中。例如,建立test.sh,内容如下。
pds -file ./project.tcl -work_dir ./output -project_name top_module
以后,只要执行source test.sh,则可以自动运行脚本建立工程。同时开发者可以修改shell文件内容,例如通过传参确定不同的tcl文件、取不同的工程名等。