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

1

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.