在云端加速FPGA回归项目,只需一个Tcl指令

严谨的软硬件开发都会有一套回归测试。连续的整合,每日自动测试,以及手动执行脚本等等 –—— 这一系列方法可以让开发人员来定义、创建、运行验证环节,从而决定产品的质量、性能和可靠性。

本文将聚焦那些需要多次FPGA设计编译的测试,以及如何缩短周转时间同时保证测试平稳运行。

1. 使用云服务器来加速编译

如果您有多个 FPGA 设计和参数组合,而且编译机器的数量又有限,运行测试编译是十分困难的。您需要手写脚本来自动运行编译,但是随着您添加特征和用例,总会有越来越多的情况需要测试。随着测试数量的增加,很多工程师都说每当测试设计的编译结束的时候,下一轮的回归周期又要开始了。由此可见,这种情况让测试范围很受限制,同时为了发布新产品,周转时间的要求也十分严峻。

比方说,同样的一个总设计,您有五个不同的设计版本。那么对于每次回归的编译,我们有
set design_list [list "A/A.xpr" "B/B.xpr" "C/C.xpr" "D/D.xpr" "E/E.xpr"]
foreach each_design $design_list {
open_project "$each_design"
reset_run synth_1
launch_runs synth_1 impl_1
wait_on_run impl_1
close_project
}

如果每个设计花费四小时,那么把每个编译上传到不同的机器来进行,可以节省大量的时间。回归的脚本大部分都是根据所测试的产品而专门写的,所以在脚本上的改变应该越小越好。没有人想把每个要提升的环节都打破。

有了这些考量之后,我们在 FPGA Expansion Pack 上开发了支持 Tcl 的能力。FPGA Expansion Pack 是一个 Vivado 的插件,可以让用户使用亚马逊的云服务器来进行高性能的编译。

2. 什么是 FPGA Expansion Pack (FEP)?
FEP 囊括了一系列自动化脚本和云端工具,它让用户可以通过图形界面或 Tcl 指令来早云端编译 FPGA 设计。用户也可以轻松的从云端将结果下载回来,与本地运行的体验完全一样。注册好 Plunify Cloud 账户后,您可以在这里下载 FEP 的安装包

3. 如何使用云端 Tcl API?
我们继续前面案例。下面的代码可以让您使用FEP Tcl API 来在云端编译:
foreach each_design $design_list {
fep::runCloudCompile -project "$each_design" -serverclass 3
}

每一个设计都会上传到一个不同的云服务器,所以编译会并行运行。

FEP 有一个 Tcl API,可以让您最小化地修改现有脚本,编译项目的示例如下:
fep::runCloudCompile -project "/home/user2002/bft_2017_2/bft_2017_2.xpr" -serverclass "1"

在代码中,
-project 指向您项目地位置;
-serverclass 规定您所使用的编译机器类别。

这个指令同时会返回一个“Job ID”(任务ID),这是一串代表该云端编译地数字。关于指令的详细内容,请参考这里

4. 支持非项目模式
目前的方法可以将分项目模式转换成项目模式,使用“save_project_as”。这对于非项目的用户可能不够只管,但是却可以保证所有必要文件都上传到云端。

5. 技术总结
您可以使用一行 Tcl 指令将回归上传到云端。通过使用云服务器来完成每日的回归周期,您可以扩大测试范围。

如果您对 FEP 感兴趣,可以点击这里注册 Plunify Cloud 账户,然后在这里下载 FEP 的安装包

文章转载自: Plunify社区FPGA设计优化 

推荐阅读