在FPGA中选择多个作业可以加快实施速度吗?

使用Vivado编译项目时,将弹出以下对话框:备注:尽管不能称为FPGA编译,但是为了方便起见,许多工程师将合成+实现+位文件生成的过程称为编译过程。

每个人都明白这一点。

正好。

许多工程师选择多个作业进行编译,认为这样做会更快,并且作业数与本地CPU的线程数相同,这使工程师认为此选项是多线程编译。

但是更熟悉Vivado的工程师肯定会知道Vivado中的多线程是通过tcl脚本设置的,目前最多可以使用8个线程。

这项工作与多线程有什么关系?可以使用多个作业来加快编译速度吗?我们首先来看一下用UG904编写的作业的定义:因此,当我们同时运行多个运行时,此作业是有效的。

如果只有一个Designrun,则此参数无效。

对于多线程,在UG904中说:实现过程最多使用8个线程。

在Windows上,默认值为2个线程。

在Linux上,默认值为8个线程。

我们可以通过tcl脚本更改线程数以及如何使用它们。

对于:set_paramgeneral.maxThreads8还可以获取当前正在使用的线程数:get_paramgeneral.maxThreads为了更直观地反映作业和线程的使用,进行了以下残酷的实验:首先,处理器是Intel的i7-8700k,6核和12线程,以下记录的时间仅是实现时间,不包括综合。

Test1是2个线程的默认值。

对于最多的工作(12),需要19分钟; Test2将作业减少到1,线程仍然是2。

仍然需要19分钟,这意味着当只有一个DesignRun时,作业数量不会影响编译时间; Test3使用8个线程,作业与Test1相同,都为12。

这时,它需要17分钟,比默认的2个线程快2分钟。

Test4基于8个线程,并且作业减少为1,此时仍为17分钟,再次验证单个设计运行时,作业数量不会影响编译时间; Test5是一个Designrun,共有6个实现,使用8个线程和12个作业同时运行。

在下图中还可以看到,此时Up的CPU利用率已经很高。

Test6也是6个实现Designruns,有8个线程,但是作业设置为1。

这时,可以看出只有一个designrun在运行,而其他在等待。

前一个运行后,后者将启动。

Test112219minTest21219minTest312817minTest41817minTest512838minTest618120minNumjobsthreadstime从上面的测试中,我们可以总结如下:在Windows上,默认线程数为2,我们可以通过tcl更改线程数,但是每次打开项目时,重置后,多线程会缩短综合实现的时间,但是效果不是很明显;互联网上的一位工程师说,最初在1小时内用2个线程编译的项目,使用8个线程后,编译时间为50分钟;对于设计运行,作业数是可以同时运行的设计运行数。

原标题:Vivado中的作业和线程有什么区别?可以选择多个作业来加快实施速度吗?文章来源:[微信公众号:OpenFPGA]欢迎大家关注!请指出转载文章的来源。