AR# 52523

MIG 7 Series DDR3/DDR2 - 温度モニター回路で温度の変動に基づいて Phaser_IN タップがアップデートされることをシミュレーションする方法

説明


MIG 7 Series v1.7 から、DDR3/DDR2 デザインに、温度が変動しても読み出し DQS が DQ 読み出しウィンドウの中央に保持されるようにする温度モニター システムが含まれています。詳細は、(ザイリンクス アンサー 51687) を参照してください。デフォルトでは、サンプル デザインのシミュレーションで tempmon ブロックの使用がディスエーブルになっています。このアンサーでは、ブロックをイネーブルにし、XADC 入力ファイルを読み込んでシミュレーションでプロセスを表示する方法を示します。

注記 : このアンサーはザイリンクス MIG ソリューション センター (ザイリンクス アンサー 34243) の一部です。ザイリンクス MIG ソリューション センターは、MIG に関する質問を解決するのに役立つ情報を掲載しています。MIG を含むデザインを新しく作成する場合、または問題をトラブルシュートする場合は、このザイリンクス MIG ソリューション センターから情報を入手してください。

ソリューション


タップのアップデートを表示するための変更は、次のとおりです。

1. シミュレーションで温度を変動させる XADC テキスト入力ファイルを作成します。XADC のユーザー ガイドを参照してください。次に例を示します。
TIME Temp
00000 85
84000 0

2. wave.do を設定します。確認する信号は、次のとおりです。
add wave -noupdate /sim_tb_top/u_ip_top/u_mig_7series_v1_7/u_mig_7series_v1_7_memc_ui_top_std/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0/u_ddr_phy_4lanes/ddr_byte_lane_A/ddr_byte_lane_A/phaser_in_gen/phaser_in/PHASER_IN_INST/COUNTERREADVAL
add wave -noupdate /sim_tb_top/u_ip_top/u_mig_7series_v1_7/u_mig_7series_v1_7_memc_ui_top_std/mem_intfc0/ddr_phy_top0/u_ddr_calib_top/tempmon_sample_en
add wave -noupdate /sim_tb_top/u_ip_top/u_mig_7series_v1_7/u_mig_7series_v1_7_memc_ui_top_std/mem_intfc0/ddr_phy_top0/u_ddr_calib_top/clk
add wave -noupdate /sim_tb_top/u_ip_top/u_mig_7series_v1_7/u_mig_7series_v1_7_memc_ui_top_std/mem_intfc0/mc0/mc_ref_zq_wip
add wave -noupdate /sim_tb_top/u_ip_top/u_mig_7series_v1_7/u_mig_7series_v1_7_memc_ui_top_std/mem_intfc0/ddr_phy_top0/u_ddr_calib_top/tempmon_sel_pi_incdec_r

3. user_design/rtl/clocking/mig_<>_tempmon.v モジュールの XADC ブロックのインスタンシエーションに、このファイルを指定する SIM_MONITOR_FILE パラメーターを追加します。次に例を示します。

XADC #(
// INIT_40 - INIT_42: XADC configuration registers
.INIT_40(16'h8000), // config reg 0
.INIT_41(16'h3f0f), // config reg 1
.INIT_42(16'h0400), // config reg 2
// INIT_48 - INIT_4F: Sequence Registers
.INIT_48(16'h0100), // Sequencer channel selection
.INIT_49(16'h0000), // Sequencer channel selection
.INIT_4A(16'h0000), // Sequencer Average selection
.INIT_4B(16'h0000), // Sequencer Average selection
.INIT_4C(16'h0000), // Sequencer Bipolar selection
.INIT_4D(16'h0000), // Sequencer Bipolar selection
.INIT_4E(16'h0000), // Sequencer Acq time selection
.INIT_4F(16'h0000), // Sequencer Acq time selection
// INIT_50 - INIT_58, INIT5C: Alarm Limit Registers
.INIT_50(16'hb5ed), // Temp alarm trigger
.INIT_51(16'h57e4), // Vccint upper alarm limit
.INIT_52(16'ha147), // Vccaux upper alarm limit
.INIT_53(16'hca33), // Temp alarm OT upper
.INIT_54(16'ha93a), // Temp alarm reset
.INIT_55(16'h52c6), // Vccint lower alarm limit
.INIT_56(16'h9555), // Vccaux lower alarm limit
.INIT_57(16'hae4e), // Temp alarm OT reset
.INIT_58(16'h5999), // VBRAM upper alarm limit
.INIT_5C(16'h5111), // VBRAM lower alarm limit
// Simulation attributes: Set for proepr simulation behavior
.SIM_DEVICE("7SERIES"), // Select target device (values)
.SIM_MONITOR_FILE("temp.txt")
)

4. user_design/rtl/core_name.v を、シミュレーションで tempmon が強制的に実行されるように変更します。次に 518 行目の例を示します。
localparam TEMP_MON_EN = "ON"; //(SIMULATION == "FALSE") ? "ON" : "OFF";

5. シミュレーションを実行します。温度モニター回路から 2 サイクルで PHY にタップ変更コマンドが送信され、変更が 2 サイクルで反映されるのがわかります (合計 4 サイクル)。次に、スクリーンショットの例を示します。
52523_sim.JPG
52523_sim.JPG

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

関連アンサー レコード

AR# 52523
日付 10/22/2012
ステータス アクティブ
種類 ソリューション センター
デバイス
IP