ID bài viết: 000076357 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 23/08/2017

Tại sao tần số xuất tx_bonding_clocks[0] của Arria®10 PCIe HARD IP Gen3 sai?

Môi Trường

  • Intel® Quartus® Prime Phiên bản Pro
  • IP cứng Intel® Arria® 10 Cyclone® 10 cho PCI Express*
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Mô tả

    Do vấn đề với phần mềm Intel® Quartus® Prime 16.1, đồng hồ được tạo ra tx_bonding_clocks[0] của thiết kế Arria 10 PCIe Hard IP Gen3 là sai.

    Lý do là altera_pcie_express.sdc có một số hạn chế còn thiếu.

     

    Độ phân giải

    Để giải quyết vấn đề này, vui lòng thêm các lệnh sdc sau vào cuối altera_pcie_express.sdc.

    proc skp_sdc_puts {msg {channelId stdout}} {
    đặt "$channelId"altera_pcie_a10_skp.sdc >> $msg"
    }

    proc parent_of_clock {clock_name {MAX_ATTEMPTS 100}} {
    skp_sdc_puts "*
    skp_sdc_puts "****** Tìm kiếm hệ thống phân cấp của $clock_name **
    skp_sdc_puts "*

    nỗ lực set 0
    đặt cha mẹ {}

    trong khi { $attempts < $MAX_ATTEMPTS } {
    skp_sdc_puts "Tìm kiếm đồng hồ khớp với \"$parent$clock_name\"..."

    đặt matched_clock_collection [get_clocks -nowarn $parent $clock_name] ;# Hãy thử ký tự đại diện này.
    đặt num_matched_clocks [get_collection_size $matched_clock_collection]

    nếu { $num_matched_clocks == 1 } { ;# Đây là hệ thống phân cấp mà chúng tôi đang tìm kiếm.
    # Tìm hiểu tên đầy đủ của phụ huynh.
    đặt cha mẹ [tham gia [lrange [split [query_collection $matched_clock_collection] {|}] 0 {end-1}] {|}]

    skp_sdc_puts "Phụ huynh đã tìm thấy : $parent"
    skp_sdc_puts "*
    skp_sdc_puts "***$parent*
    skp_sdc_puts "*

    trả lại $parent
    } elseif { $num_matched_clocks > 1 } { ;# Nhiều đồng hồ có cùng tên - điều này không nên xảy ra.
    skp_sdc_puts "Lỗi: Nhiều đồng hồ khớp với $parent$clock_name " {stderr}
    skp_sdc_puts "Lỗi: Đồng hồ phù hợp là:" {stderr}
    skp_sdc_puts "Lỗi: [query_collection $matched_clock_collection -report_format]" {stderr}
    skp_sdc_puts "*
    skp_sdc_puts "***
    skp_sdc_puts "*

    Trở lại
    } khác { ;# Tăng lên một cấp độ hệ thống phân cấp.
    phụ huynh phụ thêm {*|}
    nỗ lực incr
    }
    }

    skp_sdc_puts "Lỗi: Không thể tìm thấy phụ huynh của $clock_name trong nỗ lực $MAX_ATTEMPTS?"
    skp_sdc_puts "*
    skp_sdc_puts "***
    skp_sdc_puts "*

    Trở lại
    }


    derive_pll_clocks -create_base_clocks;# derive_pll_clocks cần được gọi trước khi gọi cho parent_of_clock
    derive_clock_uncertainty;# để tạo ra hệ thống phân cấp thích hợp.


    đặt tiền tố [parent_of_clock {tx_serial_clk}]


    cho {set i 0} {$i != 8} {incr i} {
    create_generated_clock -divide_by 1 \
    nguồn "$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_twentynm_hssi_8g_rx_pcs|byte_deserializer_pcs_clk_div_by_2_txclk_reg" \
    -tên "$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_twentynm_hssi_8g_rx_pcs|sta_rx_clk2_by2_1" ;# mục tiêu

    create_generated_clock -multiply_by 1 -divide_by 1 \
    nguồn "$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_twentynm_hssi_8g_tx_pcs|byte_serializer_pcs_clk_div_by_2_reg" \
    -tên "$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_twentynm_hssi_8g_tx_pcs|sta_tx_clk2_by2_1" ;# mục tiêu
    }

    remove_clock "$prefix|tx_bonding_clocks[0]"
    create_generated_clock -multiply_by 1 -divide_by 10 \
    Nguồn "$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" \
    -Tên "$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

    đặt rx_clkouts [danh sách]
    cho {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 \
    nguồn "$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_twentynm_hssi_8g_rx_pcs|byte_deserializer_pcs_clk_div_by_4_txclk_reg" \
    -master_clock "$prefix|tx_bonding_clocks[0]" \
    -tên "$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_twentynm_hssi_8g_rx_pcs|sta_rx_clk2_by4_1" ;# mục tiêu

    create_generated_clock -multiply_by 1 \
    nguồn "$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_twentynm_hssi_8g_rx_pcs|byte_deserializer_pld_clk_div_by_4_txclk_reg" \
    -master_clock "$prefix|tx_bonding_clocks[0]" \
    -Tên "$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_twentynm_hssi_8g_rx_pcs|sta_rx_clk2_by4_1_out"

    set_clock_groups -exclusive \
    -nhóm "$prefix|tx_bonding_clocks[0]" \
    -nhóm "$prefix|g_xcvr_native_insts[$i]|rx_clkout"
    set_clock_groups -exclusive \
    -nhóm "$prefix|tx_bonding_clocks[0]" \
    -nhóm "$prefix|rx_pcs_clk_div_by_4[$i]"
    }

    Sự cố này được khắc phục bắt đầu với phiên Intel® Quartus® Prime Phiên bản Phần mềm Tiêu chuẩn phiên bản 17.1.

    Các sản phẩm liên quan

    Bài viết này áp dụng cho 2 sản phẩm

    FPGA Intel® Arria® 10 GT
    FPGA Intel® Arria® 10 GX

    Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.