ID de l'article: 000076229 Type de contenu: Dépannage Dernière révision: 25/07/2016

les modèles Arria 10, Arria V GZ et Stratix V PCI Express à l’aide de l’interface Avalon-ST qui associe les signaux de configuration de la couche de transaction (tl_cfg_*) peuvent blocage

Environnement

    Édition d'abonnement Intel® Quartus® II
    PCI Express*
BUILT IN - ARTICLE INTRO SECOND COMPONENT

Problème critique

Descriptif

L’espace de configuration de la couche de transaction signale les données (tl_cfg*) l’IP dure pour PCI Express sont échantillonnés incorrectement dans le tissu FPGA. Par conséquent, il est possible qu’une violation de la configuration ou de la durée de conservation se produise. Le logiciel Quartus Prime ne signale pas la violation, car cette voie multi-cycle n’est pas limitée. Si un une violation du timing se produit, le système peut blocage.

Résolution

Pour Arria 10 périphériques, utilisez Quartus Prime 16.0.1 ou une version ultérieure. La couche de transaction L’interface des signaux de l’espace de configuration est tenue pour huit coreclkout_hip Cycles. Votre couche d’application RTL doit inclure du code pour échantillonner cette interface dans le au milieu de la fenêtre à huit cycles. Voir l’exemple RTL ci-dessous :

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

Pour Arria 10 périphériques, vous devez ajouter les contraintes de synchronisation suivantes dans votre Fichier SDC (Synposys Design Constraints).

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

Pour les périphériques Stratix V et Arria V GZ, vous devez ajouter le timing suivant contraintes de conception synposys (SDC) dans votre fichier.

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

Produits associés

Cet article concerne 1 produits

Circuits programmables Intel®

1

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.