ID บทความ: 000076229 ประเภทข้อมูล: การแก้ไขปัญหา การตรวจสอบครั้งล่าสุด: 25/07/2016

การออกแบบ Arria 10, Arria V GZ และ Stratix V PCI Express โดยใช้อินเทอร์เฟซ Avalon-ST ที่รองรับสัญญาณพื้นที่กําหนดค่าเลเยอร์ธุรกรรม (tl_cfg_*) อาจค้างอยู่

สิ่งแวดล้อม

  • Intel® Quartus® II Subscription Edition
  • PCI Express*
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    ปัญหาสำคัญ

    คำอธิบาย

    ข้อมูล (tl_cfg*) Transaction Layer Configuration Space Signals การขับเคลื่อนด้วย Hard IP สําหรับ PCI Express มีตัวอย่างไม่ถูกต้องใน fabric FPGA ดังนั้น การละเมิดเวลาในการตั้งค่าหรือการระงับจึงเกิดขึ้น ซอฟต์แวร์ Quartus Prime ไม่รายงานการละเมิดเนื่องจากพาธแบบหลายรอบนี้ไม่มีข้อจํากัด หาก การละเมิดเวลาเกิดขึ้น ระบบอาจค้าง

    ความละเอียด

    สําหรับอุปกรณ์ Arria 10 ให้ใช้ Quartus Prime 16.0.1 หรือใหม่กว่า เลเยอร์ธุรกรรม อินเทอร์เฟซ Configuration Space Signals จะจัดขึ้นเป็นเวลาแปด coreclkout_hipตัว รอบ Application Layer RTL ของคุณจะต้องมีโค้ดเพื่อตัวอย่างอินเทอร์เฟซนี้ใน ตรงกลางของหน้าต่างที่มีรอบแปดรอบ ดูตัวอย่าง RTL ด้านล่าง:

    //define register//

    reg [3:0] cfg_addr_reg;

    reg [3:0] captured_cfg_addr_reg;

    reg [31:0] captured_cfg_data_reg;

    reg cfgctl_addr_change;

    reg cfgctl_addr_change2;

    reg cfgctl_addr_strobe;

    // detect the address transition

    always @(posedge pld_clk or posedge reset)

    begin

    if (reset == 1\'b1) begin

    cfg_addr_reg <= 3\'h0;

    cfgctl_addr_change <= 1\'h0;

    cfgctl_addr_change2 <= 1\'h0;

    cfgctl_addr_strobe <= 1\'h0;

    end else begin

    cfg_addr_reg[3:0] <= tl_cfg_int_add[3:0];

    // detect address change

    cfgctl_addr_change <= cfg_addr_reg[3:0] != tl_cfg_int_add[3:0];

    // delay two clock and use as strobe to sample the input 32-bit data

    cfgctl_addr_change2 <= cfgctl_addr_change;

    cfgctl_addr_strobe <= cfgctl_addr_change2;

    end

    end

    // captured cfg ctl addr/data bus with the strobe

    always @(posedge pld_clk)

    if(cfgctl_addr_strobe)

    captured_cfg_addr_reg[3:0] <= tl_cfg_int_add[3:0];

    captured_cfg_data_reg[31:0] <= tl_cfg_int_ctl[31:0];

    end

    สําหรับอุปกรณ์ Arria 10 คุณต้องเพิ่มข้อจํากัดด้านเวลาต่อไปนี้ในเครื่องของคุณ ไฟล์ข้อจํากัดการออกแบบ Synposys (SDC)

    set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_add[*]}] 2

    set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_add[*]}] 2

    set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_ctl[*]}] 2

    set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_ctl[*]}] 2

    สําหรับอุปกรณ์ Stratix V และ Arria V GZ คุณต้องเพิ่มการกําหนดเวลาต่อไปนี้ ข้อจํากัดในไฟล์ Synposys Design Constraints (SDC) ของคุณ

    set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_add[*]}] 2

    set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_add[*]}] 2

    set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_ctl[*]}] 2

    set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_ctl[*]}] 2

    ผลิตภัณฑ์ที่เกี่ยวข้อง

    บทความนี้จะนำไปใช้กับ 1 ผลิตภัณฑ์

    อุปกรณ์ที่ตั้งโปรแกรมได้ Intel®