Artikel-ID: 000076229 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 25.07.2016

Arria 10, Arria V GZ und Stratix V PCI Express Designs verwenden die Avalon-ST-Schnittstelle, die die Konfigurationsraumsignale der Transaktionsebene (tl_cfg_*) aufhängt.

Umgebung

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

    Kritisches Problem

    Beschreibung

    Die Transaktionsschicht-Konfiguration, Raumsignale, Daten (tl_cfg*) von der Harten IP für PCI Express angetrieben werden im FPGA Fabric fälschlicherweise Proben entnommen. Daher kann eine Setup- oder Halte-Zeitverletzung auftreten. Die Quartus Prime Software meldet die Verletzung nicht, da dieser Multi-Zyklus-Pfad nicht eingeschränkt ist. Wenn ein Timing-Verletzung tritt auf, das System kann hängen.

    Lösung

    Verwenden Sie für Arria 10 Geräte Quartus Prime 16.0.1 oder neuer. Die Transaktionsebene Die Schnittstelle "Configuration Space Signals" (Konfigurationsraumsignal) ist für acht coreclkout_hip Personen gehalten Zyklen. Ihre Application Layer RTL muss Code enthalten, um diese Schnittstelle in der Mitte des Achtzyklus-Fensters. Siehe das Beispiel RTL unten:

    //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

    Für Arria 10 Geräte müssen Sie die folgenden Zeiteinschränkungen in Ihrem Synposys Design Constraints (SDC)-Datei.

    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

    Für Stratix V- und Arria V GZ-Geräte müssen Sie das folgende Timing hinzufügen Beschränkungen in Ihrer SDC-Datei (Synposys Design Constraints).

    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

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 1 Produkte

    Intel® programmierbare Geräte

    Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.