AR# 54958

Vivado 合成のデザイン アシスタント - synth_design とそのオプションの説明

説明

synth_design は、Vivado 合成を使用して HDL デザインで合成を実行するのに使用される Tcl コマンドです。

この Tcl コマンドは、Tcl コンソールを使用したプロジェクト フロー モードと、非プロジェクト フロー モードの両方で使用されます。

プロジェクト フロー モードでは、これと launch_runs synth_1 により、synth_design コマンドが内部的に呼び出されます。

任意の合成プロパティを設定するには、set_property という Tcl コマンドを使用できます。

このアンサーでは、synth_design コマンドのさまざまなオプションを説明します。

ソリューション

オプションの説明 :


 

-name <design_name>: [Optional]

このオプションは、合成完了後にデザインを開くのに使用します。

 

構文例 : synth_design -name synth_1 (synth_1 という名前の合成されたデザインが合成後に開きます。)


 

-part <xilinx_device>: [Optional]

このオプションは、合成するデザインのターゲット ザイリンクス デバイスを指定するのに使用します。パーツが指定されていない場合、プロジェクトに割り当てられているデフォルトのパーツ (プロジェクトを作成するときに使用されるもの) が使用されます。

 

構文例 : synth_design -part xc7k70tfbg676-2 (Kintex-7 デバイスが合成用のターゲット デバイスになります。)


 

-constrset <constraints_fileset>: [Optional]

合成で使用される XDC 制約ファイルの特定セットを指定するのに使用します。複数の制約ファイルセットまたは制約ファイルがある場合に便利です。Vivado では UCF はサポートされていません。このコマンドは、既に作成されているファイルセットを参照します。

新しくファイルセットを作成するには、create_fileset を使用します。

 

構文例 : synth_design -part xc7k70tfbg676-2 -constrset constr_1 (ターゲットの制約ファイルセットは constr_1 です。)


 

-top <top_module>: [Optional]

最上位モジュール名を指定するのに使用します。

 

構文例 : synth_design -part xc7k70tfbg676-2 -top module1

 

注記 : find_top コマンドを使用して -top オプションを定義した結果、可能性のあるものが複数返された場合は、最上位が 1 つだけ提供されていることを確認してください。


 

 

-include_dirs <search_directories>: [Optional]

これは Verilog デザインにのみ使用できます。Verilog の `include ファイルを検索するディレクトリを指定するのに使用します。

 

構文例 : synth_design -part xc7k70tfbg676-2 -top module1 -include_dirs /path/to/directories/


 

-generic <name> = <value>: [Optional]

このオプションは、VHDL のジェネリック値または Verilog のパラメーター値を指定するのに使用します。name はパラメーターまたはジェネリックの名前を指し、value は割り当てられる値を指します。 

ジェネリック値を 2 つ以上割り当てる場合は、generic を複数回使用します。構文は次のようになります。

 

構文例 : synth_design -part xc7k70tfbg676-2 -generic depth=512 -generic width=64

注記 : 名前、等号 (=)、値の間にスペースは入れないでください。

 

 

注記 : ブール型または std_logic VHDL ジェネリックに対してバイナリ値を指定する場合は、標準 VHDL フォーマットではなく Verilog ビット フォーマットを使用して値を指定する必要があります。

0 = 1`b0

01010000 = 8`b01010000

 

 


-verilog_define name=<text>: [Optional]

`define および `ifdef 文に値を指定するために使用します。複数の文を指定するには、verilog_define を複数回使用します。

 

構文例 : synth_design -verilog_define name=value -verilog_define name=value

 

注記 : 名前、等号 (=)、値の間にスペースは入れないでください。


 

-flatten_hierarchy <rebuilt/full/none>: [Optional]

この名前が示すように、-flatten_hierarchy は合成での階層制御方法を指定します。有効な値は次のとおりです。

  •  
    • rebuilt (デフォルト値) : 合成が完了した後に RTL デザインの元の階層を再構築します。
    • full : デザインの階層をフラットにします。
    • none : デザインの階層はフラットになりません。これはデザインの階層を保持し、またツールによるデザイン最適化を制限します。

構文例 : synth_design -part xc7k70tfbg676-2 -flatten_hierarchy rebuilt


 

-gated_clock_conversion <off/on/auto>: [Optional]

使用可能な場合にフロップ イネーブル ピンを使用するためにゲーテッド ロジックを変換します。デフォルトの値は OFF です。 

これは、デザインのゲーティッド ロジックを変換するのに使用可能なフロップ イネーブルを使用します。この最適化により、ロジックが削減され、ネットリストが単純化されます。 

これは、opt_deisgn コマンドを使用して合成されたネットリストでも実行できます。 

さらに、このオプションを使用する場合は、HDL で gated_clk 属性を指定する必要があります。有効な値は、OFF、ON、および AUTO です。

 

  •  
    • OFF : RTL デザインでの GATED_CLOCK プロパティの使用にかかわらず、合成中にクロック ゲーテッド ロジックの変換を無効にします。
    • ON : RTL デザインでの GATED_CLOCK プロパティの使用に基づいて、クロック ゲーテッド ロジックを変換します。
    • AUTO : RTL での GATED_CLOCK 属性にかかわらず、有効なクロック制約を持つゲートがツールで検出された場合はゲーテッド クロック変換を実行します。

 

構文例 : synth_design -part xc7k70tfbg676-2 -gated_clock_conversion off


 

-directive<Default/RuntimeOptimized/AreaOptimizedLow/AreaOptimizedHigh>: [Optional]

合成指示子です。特定のデザイン目標を合成ツールで達成するようにするために使用します。値では大文字/小文字が区別されます。有効な値は次のとおりです。

  •  
    • Default : 通常の合成を実行します。
    • RuntimeOptimized : 実行されるタイミング最適化の回数は少なくなり、一部の RTL 最適化は実行されません。
    • AreaOptimizedLow :
    • AreaOptimizedHigh :

 

 

-resource_sharing<auto/on/off>: [Optional]

新しく演算子を作成するのではなく、信号間で加算器や減算器などの四則演算子を共有するよう合成ツールに指示するオプションです。

このオプションがオンになっていると、エリア使用率が向上します。デフォルト値は auto です。


 

-control_set_opt_threshold <greater than or equal to 1>:

同期制御セット最適化のしきい値を、より少ない数の制御セットに指定するのに使用します。 

この値に設定されている数は、制御セットとしてファンアウトを使用し始める前に、制御セットのファンアウトの大きさを指定します。

たとえば、control_set_opt_threshold が 10 に設定されている場合、5 つのレジスタにのみファンアウトする同期リセットは、1 つのレジスタのリセット ラインを使用するのではなく、D 入力ロジックに移動します。 

しかし、4 に設定されている場合は、そのリセット ラインが使用されます。デフォルトは 4 です。


 

-rtl : [Optional]

デザインのエラボレーションを実行し、デザインを開きます。

 

構文例 : synth_design -part xc7k70tfbg676-2 -rtl


 

-bufg <value>: [Optional]

合成中に使用される BUFG (グローバル クロック バッファー) の最大数を指定するのに使用します。これには、RTL でインスタンシエートされている BUFG が含まれます。 

値は >= 1 である必要があります。デフォルト値は 12 です。

 

構文例 : synth_design -part xc7k70tfbg676-2 -bufg 3


 

-fanout_limit <value>: [Optional]

合成実行中に適用されるネット ファンアウトの最大値を制限するために使用します。 

値は >=1 である必要があります。デフォルト値は 10,000 です。

このオプションは、制御信号 (セット、リセット、クロック イネーブルなど) には作用しません。これらの信号を複製する必要がある場合は、代わりに MAX_FANOUT 属性を RTL で使用してください。

 

構文例 : synth_design -part xc7k70tfbg676-2 -fanout_limit 2000


 

-mode <default/out_of_context>: [Optional]

デザインで実行する合成のモードを指定します。

 

  • default : 通常の合成を実行します。
  • out_of_context : 階層デザインで使用されているモジュールを指定します。HD フローで使用しやすくするため、このモードはモジュールに対して I/O バッファーが挿入されないようにし、OOC と記します。

注記 : このモード (out_of_context) で no_iobuf を指定する必要はありません 。out_of_context モードは、-no_iobuf の代わりに使用することが推奨されます。

 

構文例 : synth_design part xc7k70tfbg676-2 -mode out_of_context


 

-fsm_extraction <off/one_hot/sequential/johnson/gray/auto>: [Optional]

合成実行中にステート マシンおよびエンコード タイプを判別するために使用します。デフォルト値は OFF です。有効な値は次のとおりです。

 

  •  
    • one_hot : 各ステートに 1 つのコード ビットと 1 つのフリップフロップを関連付けます。操作中は、特定のクロック サイクルでステート変数の 1 ビットのみがアサートされます。あるステートから次のステートへ遷移するときは、2 ビットのみトグルします。ワンホット ステート エンコードは、使用可能なフリップフロップ数が多い FPGA デバイスに適しています。また、スピードを最適化しようとしている場合や、消費電力を抑えたい場合にも適しています。
    • sequential : シーケンシャル ステート エンコードは、長いパスを識別し、それらのパスのステートに連続した基数の 2 つのコードを適用します。次ステートの論理式は最小限に抑えられます。
    • gray : グレー ステート エンコードでは、連続した 2 つのステート間で 1 ビットしか変化しません。分岐のない長いパスがあるコントローラーに適しています。さらにこのコーディングは、ハザードおよびグリッチを最小限に抑えます。ステート レジスタを T フリップフロップでインプリメントする場合に、非常に良好な結果が得られます。
    • johnson: グレー ステート エンコードと同様、ジョンソン ステート エンコードも、分岐なしの長いパスを含んだステート マシンに適しています。
    • auto : デザインの各 FSM に最も適したエンコード アルゴリズムがツールにより選択されます。同じデザインのそれぞれの FSM に異なるエンコード形式が使用される場合もあります。

注記 : Vivado 合成で有限ステート マシン抽出をディスエーブルにするには、-fsm_extraction off を使用してください。これにより、FSM_ENCODING プロパティが上書きされます (RTL で指定されている場合)。


 

-no_lc: [Optional]

デザイン エリアを改善するため、共通の入力を持つ LUT ペアを 1 つのデュアル出力 LUT6 にまとめるのが、基本的には LUT の結合です。これは、-no_lc を使用して無効にすることができます。

 

構文例 : synth_design -part xc7k70tfbg676-2 -no_lc


 

-shreg_min_size <integer>: [Optional]

SRL にマップするレジスタ チェーンの長さの最小値を設定するのに使用します。デフォルト値は 3 です。

 

構文例 : synth_design -part xc7k70tfbg676-2 -shreg_min_size 4

 


 

-max_bram <arg>: [Optional]

合成中に自動推論するブロック RAM の最大数を指定するのに使用します。指定値は、ターゲット デバイスの使用可能なブロック RAM 制限を超えてはなりません。デフォルト値は -1 です。

 

注記 : 値 0 は、デザインの BRAM を自動推論しないよう Vivado 合成に指示しますが、推奨値ではありません。


 

-max_dsp <arg>:[Optional]

 

合成中に自動推論する DSP の最大数を指定するのに使用します。指定値は、ターゲット デバイスの使用可能な DSP 制限を超えてはなりません。デフォルト値は -1 です。

 

注記 : 値 0 は、デザインの DSP を自動推論しないよう Vivado 合成に指示しますが、推奨値ではありません。

 


 

-quiet: [Optional]

このオプションは、通知なしでコマンドを実行するためのもので、メッセージは何も表示されません。また、実行中にエラーが発生したとしても TCL_OK が返されます。つまり、コマンド内で発生しているエラーのみがトラップされます。


 

-keep_equivalent_registers: [Optional]

最適化中にレジスタがマージしないようにするため、KEEP 合成属性のように機能します。


 

-verbose: [Optional]

 

合成中にすべてのメッセージを返します。メッセージ数に制限が設定されている場合、その値は上書きされます。


-rtl_skip_ip - [Optional]

-rtl オプションを使用して RTL デザインをエラボレートすると、このオプションにより Vivado Design Suite ではデザインの独立階層 (OOC) モジュールに対して DCP ファイルが読み込まれなくなり、代わりに OOC モジュールをブラック ボックスとして処理するためにスタブ ファイルが読み込まれます。その結果、デザインのエラボレーション時間が大幅に短縮されることがあります。


 

-rtl_skip_constraints - [Optional]

-rtl オプションを使用して RTL デザインをエラボレートすると、このオプションにより Vivado Design Suite ではデザイン制約 (XDC) がエラボレート済みデザインへ読み込まれなくなります。


 

-cascade_dsp [ auto | tree | force ] - [Optional]

DSP ブロック出力を追加する加算器のインプリメント方法を指定します。有効な値は、auto、tree、および force です。 デフォルト設定は auto です。


[Optional] -- オプションであることを示します。

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
55182 Vivado 合成のデザイン アシスタント - synth_design とそのオプションの説明 N/A N/A
AR# 54958
日付 08/07/2015
ステータス アクティブ
種類 ソリューション センター
ツール