UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 40385

MIG Spartan-6 MCB - ユーザー インターフェイス クロックおよびキャリブレーション クロックの比率が奇数の場合タイミング違反がクロック ドメインをまたがって発生する

説明

キャリブレーション クロック (mcb_drp_clock) とユーザー インターフェイス クロック (clk0) の比率が奇数である場合、MIG v3.7 およびそれ以前のバージョンの Spartan-6 FPGA MCB サンプル デザインでタイミング違反が発生します。

これらのクロックは、インフラストラクチャ モジュールにある PLL_ADV ブロックの出力で、PLL の VCO 周波数を 2 つの除数で割って生成されています。

タイミングのソースは mcb_drp_clk 信号でクロック供給を受けている mcb_soft_calibration モジュールにある DONE_SOFTANDHARD_CAL レジスタで、デスティネーションは clk0 でクロック供給を受けているトラフィック ジェネレーターの init_mem_pattern_ctr モジュールにある mcb_init_done_reg レジスタです。

ソリューション

キャリブレーション クロックとユーザー インターフェイス クロックの除数の 1 つが奇数でもう 1 つが偶数の場合にのみ、このタイミングの問題が発生します。 

たとえば、ユーザー インターフェイス クロックの PLL 除数が 2 で、キャリブレーション クロックの除数が 11 のときなどに、タイミング エラーが発生します。 

この問題を回避するには、DONE_SOFTANDHARD_CAL レジスタの後に同期化レジスタを 1 つ追加します。

これにより、mcb_init_done_reg レジスタで使用される前にメモリー クロック ドメインに同期化するようにします。  


mcb_soft_calibration.v モジュールにある DONE_SOFTANDHARD_CAL レジスタから生成される mcb_init_done_i 信号を、clk0 クロック ドメインに同期化するため、init_mem_pattern_ctr.v モジュールで Verilog コードを次のように変更する必要があります。 

VHDL コードの変更も同様に DONE_SOFTANDHARD_CAL レジスタの出力が mcb_init_done_reg レジスタに割り当てられる前に、2 つの同期化レジスタを追加します。 

また、DONE_SOFTANDHARD_CAL レジスタからのクロック ドメインをまたぐパスを無視するため、UCF で TIG を割り当てる必要があります。

MIG 3.7 および MIG 3.61 の UCF 構文は次のとおりです。

UCF assignment for MIG 3.61 およびそれ以降のバージョンでの UCF 構文例

NET "memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL" TIG;

MIG 3.7 での UCF 構文例

NET "memc?_wrapper_inst/mcb_ui_top_inst/mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL" TIG;

元の Verilog コード

always @ (posedge clk_i)
begin
mcb_init_done_reg <= mcb_init_done_i;
end

新しい Verilog コード

//mcb_init_done_i is clocked by calibration clock
reg mcb_init_done_i_r1;
reg mcb_init_done_i_r2;

always @ (posedge clk_i)
begin
mcb_init_done_i_r1 <= mcb_init_done_i;
mcb_init_done_i_r2 <= mcb_init_done_i_r1;
mcb_init_done_reg <= mcb_init_done_i_r2;
end

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

関連アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
39128 MIG Virtex-6 および Spartan-6 v3.7 - ISE Design Suite 13.1 でのリリース ノートおよび既知の問題 N/A N/A
AR# 40385
日付 08/21/2014
ステータス アクティブ
種類 既知の問題
デバイス
  • Spartan-6 LX
  • Spartan-6 LXT
  • Spartan-6Q
このページをブックマークに追加