AR# 67906

Vivado 制約: 転送クロックの生成クロックで正しいマスター クロックが基準にされない

説明

MMCM で生成された 2 つのクロック (clk400 と clk480) があり、BUFGMUX に入力されています。

マルチプレクサーで clk480 が伝搬されるよう set_case_analysis を適用しました。

BUFGMUX 出力では出力データがクロックに同期して出力されるのに加え、出力クロックを転送するよう ODDR が駆動されます。

set_output_delay 解析では clk480 が使用されるはずですが使用されません。ツールでは常に clk400 を基準クロックにされています。

制約例:

set_case_analysis 0 [get_pins BUFGMUX_clk/S]
create_generated_clock -name lvds_clk -source [get_pins U_lvds_out_x8/inst/clk_fwd/CLK] -multiply_by 1 [get_ports clkout_p]

ソリューション

次のコマンドを使用すると、clk480 が返されます。

get_clocks -of [get_pins U_lvds_out_x8/inst/clk_fwd/CLK] 

しかし、report_clocks を実行すると、lvds_clk のMater Clock が clk480 ではなく clk400 となっています。

Generated Clock : lvds_clk
Master Source : U_lvds_out_x8/inst/clk_fwd/CLK
Master Clock : clk400
Multiply By : 1
Generated Sources : {clkout_p}

転送クロックに使用されたマスター クロックは clk400 であり、ODDR に伝搬されたクロックではありません。

回避策: 生成したクロック制約内で master_clock を指定します。

create_generated_clock -name lvds_clk -add -master_clock clk480 -source [get_pins U_lvds_out_x8/inst/clk_fwd/CLK] -multiply_by 1 [get_ports clkout_p]

この問題は、2017.1 以降の Vivado で修正されています。

AR# 67906
日付 08/08/2017
ステータス アクティブ
種類 既知の問題
ツール 詳細 概略