読者です 読者をやめる 読者になる 読者になる

vivado 合成,implementation 高速化

標準の設定

get_param general.maxThreads
2

となっており、2スレッドしか使わない。これはもったいない。

使用スレッド数の変更

AR# 50345 - Vivado インプリメンテーション - Vivado でのマルチスレッドのサポートに書いてある。
例えば4スレッド使いたい場合

set_param general.maxThreads 4

計測

core i7-3740QM 16GBマシンで測ってみた
デザインはac701ボードのpcie example_design
vivado guiよりtclコマンドを実行

time synth_design

maxThreads 2の結果

synth_design: Time (s): cpu = 00:00:48 ; elapsed = 00:00:36 . Memory (MB): peak = 2969.520 ; gain = 393.723
36330496 microseconds per iteration

maxThreads 4の結果

synth_design: Time (s): cpu = 00:00:45 ; elapsed = 00:00:37 . Memory (MB): peak = 3097.875 ; gain = 128.355
36638386 microseconds per iteration

あんま変わらない・・・。guiだと表示で時間が取られる?

maxThreads 8の結果

synth_design: Time (s): cpu = 00:00:44 ; elapsed = 00:00:36 . Memory (MB): peak = 3209.328 ; gain = 111.453
36353779 microseconds per iteration

変わらん.maxスレッドだから使用スレッド数が変わってるかも。

とりあえず、合成からbitストリームまでのtclスクリプト作って今度測ってみることにするか。

ちなみに、16コアあるPCで試そうとしたら、

set_param general.maxThreads 16
ERROR: [Common 17-154] Value should be >= 1 and <= 8

となる。最大でも8個が限界らしい。