AR# 53956

Vivado 合成 - SRL 自動推論前に必要なシフト レジスタ抽出およびレジスタしきい値の設定方法

説明

このアンサーでは、Vivado 合成でサポートされている、SRL 自動推論前に必要なシフト レジスタ抽出およびレジスタしきい値の設定方法について説明します。

ソリューション

シフト レジスタの抽出

現在のところ、シフト レジスタ抽出は HDL 属性を使用して行われます。shreg_extract 構文およびその使用方法に関して、2013.1 で UG901 がアップデートされる予定です。

XST で触れられているように次の VHDL/Verilog 構文例は Vivado 合成でサポートされます。

VHDL の例 :

attribute shreg_extract : string;
attribute shreg_extract of {signal_name |entity_name }: {signal|entity} is "{yes|no},(true|false}";

Verilog 構文の例 :

モジュールまたは信号の宣言の前に次を入れます。

(* shreg_extract = "{yes|no}, {true|false}" *)

ただしし問題が 1 つあります。SRL 自動推論は合成フローの最後に行われます。属性をモジュールに設定し、そのモジュールがフラットになっている場合、属性は失われます。そこで、flatten_hierarchy=none という設定にしておけば問題はないのですが、リビルドなどの場合にはこれではうまくいかない可能性があります。最上位モジュールで機能するようにコードを変更するのは難しいことではありません。最上位モジュールに設定をすれば、グローバル オプションとして機能します。

シフト レジスタのしきい値

オプション 1

-shreg_min_size <value> は、SRL 推論のしきい値を設定するグローバル スイッチで、デフォルト設定は 3 です。この値は連続したエレメントの数を表し、この数以降は SRL (特にスタティック SRL) が推論されます。

オプション 2

影響を受けるレジスタに、* shreg_extract = ''no'' * という属性を適用し、この動作を無効にします。

オプション 3

影響を受ける信号/レジスタに、2013.3 で導入された新しい srl_style 属性 (* srl_style = "register" *) を適用し、この動作を無効にします。これによって、ツールは SRL ではなくレジスタを推論します。

AR# 53956
日付 10/28/2013
ステータス アクティブ
種類 既知の問題
デバイス
ツール