ID do artigo: 000076229 Tipo de conteúdo: Solução de problemas Última revisão: 25/07/2016

Arria 10, Arria V GZ e Stratix V PCI Express usando a interface Avalon-ST que acessa os sinais de espaço de configuração de camada de transação (tl_cfg_*) podem ser travados

Ambiente

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

Problema crítico

Descrição

Os dados de sinais de espaço de configuração de camada de transação (tl_cfg*) conduzidas pelo Hard IP para PCI Express são amostradas incorretamente na FPGA malha. Consequentemente, pode ocorrer uma violação de tempo de instalação ou de espera. O software Quartus Prime não relata a violação porque este caminho de vários ciclos não está limitado. Se um se ocorrer uma violação de sincronização, o sistema poderá ser travado.

Resolução

Para Arria 10 dispositivos, use Quartus Prime 16.0.1 ou mais recente. A camada de transação A interface de sinais de espaço de configuração é mantida para oito coreclkout_hip Ciclos. Sua camada de aplicativo RTL deve incluir código para amostrar esta interface no no meio da janela de oito ciclos. Veja o exemplo RTL abaixo:

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

Para Arria 10 dispositivos, você deve adicionar as seguintes restrições de sincronização em seu Arquivo Synposys Design Constraints (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

Para Stratix V e Arria V GZ, você deve adicionar o seguinte tempo restrições em seu arquivo 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

Produtos relacionados

Este artigo aplica-se a 1 produtos

Dispositivos programáveis Intel®

1

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês governará e será a controle. Exibir a versão em inglês desta página.