文章 ID: 000076357 內容類型: 疑難排解 最近查看日期: 2017 年 08 月 23 日

為什麼Arria®10 PCIe 硬 IP Gen3 的衍生tx_bonding_clocks[0] 頻率錯誤?

環境

  • Intel® Quartus® Prime Pro Edition 軟體
  • 適用於 PCI Express* 的 Intel® Arria® 10 Cyclone® 10 硬 IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    描述

    由於 Intel® Quartus® Prime 軟體 16.1 的問題,Arria 10 PCIe 硬 IP Gen3 的產生頻率tx_bonding_clocks[0]是錯誤的。

    原因是 altera_pcie_express.sdc 缺少一些限制。

     

    解決方法

    若要解決此問題,請 altera_pcie_express.sdc結尾新增下列 sdc 指令

    proc skp_sdc_puts {msg {channelId stdout\\ { {
    將$channelId放入「altera_pcie_a10_skp.sdc >> $msg」
    }

    proc parent_of_clock {clock_name {MAX_ATTEMPTS 100\\ { {
    skp_sdc_puts「********_***
    skp_sdc_puts「******** 搜尋$clock_name [********[[**]]的階層結構
    skp_sdc_puts「********_***

    設定嘗試 0
    設定母公司 {]

    而 { $attempts < $MAX_ATTEMPTS {
    skp_sdc_puts「搜尋符合 \「$parent$clock_name\」...」

    設定matched_clock_collection [get_clocks -nowarn $parent$clock_name];# 試試這個萬用字元。
    設定num_matched_clocks [get_collection_size $matched_clock_collection]

    如果 { $num_matched_clocks =1 = { ;# 這就是我們要找的階層結構。
    # 瞭解母公司的全名。
    設定父級 [加入 [lrange [分割 [query_collection $matched_clock_collection] {|[] 0 {end-1\] {|[]

    skp_sdc_puts「家長發現:$parent」
    skp_sdc_puts「********_***
    skp_sdc_puts「************ 完成搜尋,結果:$parent******************。」
    skp_sdc_puts「********_***

    退回$parent
    \ elseif { $num_matched_clocks > 1 { { ;# 同名的多個頻率 ,這不應該發生。
    skp_sdc_puts:「錯誤:多個頻率相符$parent clock_name美元!{stderr®
    skp_sdc_puts「錯誤:對比頻率是」。{stderr®
    skp_sdc_puts「錯誤:[query_collection $matched_clock_collection -report_format]」{stderr®
    skp_sdc_puts「********_***
    skp_sdc_puts「****************** 完成搜尋時,錯誤是********
    skp_sdc_puts「********_***

    返回
    { 其他 {;# 上一層樓層級。
    附錄家長 {*|®
    incr 嘗試
    }
    }

    skp_sdc_puts:「錯誤:無法在 $MAX_ATTEMPTS 嘗試中找到$clock_name 的母公司!
    skp_sdc_puts「********_***
    skp_sdc_puts「****************** 完成搜尋時,錯誤是********
    skp_sdc_puts「********_***

    返回
    }


    derive_pll_clocks -create_base_clocks;在撥打電話之前,必須先呼叫derive_pll_clocks parent_of_clock
    derive_clock_uncertainty;# 以產生正確的階層結構。


    設定首碼 [parent_of_clock {tx_serial_clk[]


    適用于 {set i 0® {$i!= 8® {incr i™ {
    create_generated_clock -divide_by 1 \
    -來源「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_xcvr.g_phy_g3x8.phy_g3x8|phy_g3x8|g_xcvr_native_insts[$i].twentynm_xcvr_native_inst|twentynm_xcvr_native_inst|inst_twentynm_pcs|gen_twentynm_hssi_8g_rx_pcs.inst_20nm_hssi_8g_rx_pcs|byte_deserializer_pcs_clk_div_by_2_txclk_reg」
    -名稱「$prefix|rx_pcs_clk_div_by_4[$i]」
    「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_xcvr.g_phy_g3x8.phy_g3x8|phy_g3x8|g_xcvr_native_insts[$i].twentynm_xcvr_native_inst|twentynm_xcvr_native_inst|inst_twentynm_pcs|gen_twentynm_hssi_8g_rx_pcs.inst_20nm_hssi_8g_rx_pcs|sta_rx_clk2_by2_1「;# 目標

    create_generated_clock -multiply_by 1-divide_by 1 \
    -來源「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_xcvr.g_phy_g3x8.phy_g3x8|phy_g3x8|g_xcvr_native_insts[$i].twentynm_xcvr_native_inst|twentynm_xcvr_native_inst|inst_twentynm_pcs|gen_twentynm_hssi_8g_tx_pcs.inst_20nm_hssi_8g_tx_pcs|byte_serializer_pcs_clk_div_by_2_reg」
    -名稱「$prefix|tx_pcs_clk_div_by_4[$i]」
    「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_xcvr.g_phy_g3x8.phy_g3x8|phy_g3x8|g_xcvr_native_insts[$i].twentynm_xcvr_native_inst|twentynm_xcvr_native_inst|inst_twentynm_pcs|gen_twentynm_hssi_8g_tx_pcs.inst_20nm_hssi_8g_tx_pcs|sta_tx_clk2_by2_1「;# 目標
    }

    remove_clock「$prefix|tx_bonding_clocks[0]」
    create_generated_clock -multiply_by 1-divide_by 10 \
    -來源「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_pll.g_pll_g3n.lcpll_g3xn|lcpll_g3xn|a10_xcvr_atx_pll_inst|twentynm_hssi_pma_cgb_master_inst|clk_fpll_b」
    -master_clock「$prefix|tx_serial_clk」\
    -名稱「$prefix|tx_bonding_clocks[0]」\
    「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_pll.g_pll_g3n.lcpll_g3xn|lcpll_g3xn|a10_xcvr_atx_pll_inst|twentynm_hssi_pma_cgb_master_inst|cpulse_out_bus[0]」

    set_multicycle_path -setup -through [get_pins-compatibility_mode {*pld_rx_data*]0

    設定rx_clkouts [清單]
    適用于 {set i 0® {$i!= 8® {incr i™ {
    remove_clock「$prefix|g_xcvr_native_insts[$i]|rx_clk」
    remove_clock「$prefix|g_xcvr_native_insts[$i]|rx_clkout」
     
    create_generated_clock -multiply_by 1 \
    -來源「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_xcvr.g_phy_g3x8.phy_g3x8|phy_g3x8|g_xcvr_native_insts[$i].twentynm_xcvr_native_inst|twentynm_xcvr_native_inst|inst_twentynm_pcs|gen_twentynm_hssi_8g_rx_pcs.inst_20nm_hssi_8g_rx_pcs|byte_deserializer_pcs_clk_div_by_4_txclk_reg」
    -master_clock「$prefix|tx_bonding_clocks[0]」\
    -名稱「$prefix|g_xcvr_native_insts[$i]|rx_clk」
    「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_xcvr.g_phy_g3x8.phy_g3x8|phy_g3x8|g_xcvr_native_insts[$i].twentynm_xcvr_native_inst|twentynm_xcvr_native_inst|inst_twentynm_pcs|gen_twentynm_hssi_8g_rx_pcs.inst_20nm_hssi_8g_rx_pcs|sta_rx_clk2_by4_1」;# 目標

    create_generated_clock -multiply_by 1 \
    -來源「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_xcvr.g_phy_g3x8.phy_g3x8|phy_g3x8|g_xcvr_native_insts[$i].twentynm_xcvr_native_inst|twentynm_xcvr_native_inst|inst_twentynm_pcs|gen_twentynm_hssi_8g_rx_pcs.inst_20nm_hssi_8g_rx_pcs|byte_deserializer_pld_clk_div_by_4_txclk_reg」
    -master_clock「$prefix|tx_bonding_clocks[0]」\
    -名稱「$prefix|g_xcvr_native_insts[$i]|rx_clkout」
    「$prefix|altpcie_a10_hip_pipen1b|g_xcvr.altpcie_a10_hip_pllnphy|g_xcvr.g_phy_g3x8.phy_g3x8|phy_g3x8|g_xcvr_native_insts[$i].twentynm_xcvr_native_inst|twentynm_xcvr_native_inst|inst_twentynm_pcs|gen_twentynm_hssi_8g_rx_pcs.inst_20nm_hssi_8g_rx_pcs|sta_rx_clk2_by4_1_out

    set_clock_groups ──專屬
    -群組「$prefix|tx_bonding_clocks[0]」\
    -群組「$prefix|g_xcvr_native_insts[$i]|rx_clkout」
    set_clock_groups ──專屬
    -群組「$prefix|tx_bonding_clocks[0]」\
    -群組「$prefix|rx_pcs_clk_div_by_4[$i]」
    }

    此問題已從 Intel® Quartus® Prime 標準版軟體版本 17.1 開始修復。

    相關產品

    本文章適用於 2 產品

    顯示全部

    這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。