ID do artigo: 000087027 Tipo de conteúdo: Documentação e informações do produto Última revisão: 15/11/2017

Como compensar o tremeamento de pll em cascata ou caminho de clock não dedicado para Arria de referência 10 PLL?

Ambiente

  • Intel® Quartus® Prime Pro Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descrição

    Se você estiver conectando o clock de referência PLL a partir de uma saída PLL ou um pino de clock não dedicado no seu design Arria® 10, será introduzido o jitter adicional. Esse nervosismo pode ser compensado adicionando uma restrição de incerteza de clock de 100ps nos clocks de saída do PLL de downstream no design.

    Consulte o documento a seguir para obter os detalhes da aplicação da restrição de incerteza do clock.

    Arria®10 pll cascading ou diretriz de solução de caminho de clock não dedicada 

    Ao atualizar o design para o software Quartus Prime v17.1 ou mais recente, as restrições adicionadas anteriormente precisam ser revisadas:

    a) se a incerteza do clock existente vem apenas de derive_clock_uncertainty set_clock_uncertainty -add -para -, do 0,1

    b) se a incerteza do clock existente vem de derive_clock_uncertainty adicional "set_clock_uncertainty -add" v17.0: set_clock_uncertainty -add -para -a partir de > [expr 0.1] v17.1 ou mais recente: set_clock_uncertainty -add -to -do

    c) se o derive_clock_uncertainty for substituído por "set_clock_uncertainty" (sem -adicionar) - não há alteração, é necessário manter a restrição existente set_clock_uncertainty -para a partir de [expr 0.1]

     

    Se o PLL de downstream afetado estiver Arria IOPLL 10 PHYLite, consulte as etapas a seguir para obter os detalhes da aplicação da restrição de incerteza do clock.

    A partir da versão 17.0 do software Quartus Prime, a conexão de clock de referência "Use core PLL" não é mais visível no editor de parâmetros Arria 10 Altera PHYLite IP. A maneira recomendada é usar o pino de clock dedicado para conectá-lo ao clock de referência PHYLite IOPLL. Se o seu projeto precisar usar este recurso, leia cuidadosamente as seguintes diretrizes e acate-as.

    Para habilitar a "conexão do clock de referência PLL do núcleo" (software Quartus Prime versão 17.0 e posterior), adicione o INI abaixo no arquivo quartus.ini.

    ip_altera_phylite_en_pll_core_ref_ck = em

    a2t_allow_cascaded_pll_in_cpa_compensation=on

    Ao conectar o clock de referência PLL a partir de uma saída PLL ou um pino de clock não dedicado, será introduzido um jitter adicional.

    Para o projeto implementado com Arria 10 Altera PHYLite versão 17.0 e anteriores, este jitter pode ser compensado adicionando restrição de incerteza de clock de 100ps nos clocks de saída do PLL de downstream no projeto.

    Adicione as seguintes restrições para a incerteza do clock no arquivo SDC gerado pelo PHYLite para o software Quartus Prime versão 17.0 e anterior. Você precisará fazer as seguintes alterações sempre que regenerar o Altera PHYLite IP.

    1. Atribua o valor de 100ps ao nome variável de jitter adicional.

    conjunto additional_jitter 0.000

    # Primeiro determine se um clock de referência já foi criado (ou seja, compartilhamento de clock de referência)

    se {$var(PLL_USE_CORE_REF_CLK) == "falso"} {

    set ref_clock_exists [phy_altera_phylite_arch_nf_171_flagyzi_does_ref_clk_exist $pins(pll_ref_clock)]

    se { $ref_clock_existe == 0 } {

    Este é o clock de referência usado pelo PLL para derivar qualquer outro clock no núcleo

    create_clock -period $ref_period -waveform [ lista 0 $ref_half_period ] $pins(pll_ref_clock) -add -name ${inst}_ref_clock

    }

    } outra {

    conjunto additional_jitter 0.100

    }

    2. Adicione incerteza adicional de clock no clock FIFO de gravação:

    definir i_wf_clock 0

    foreach_in_collection wf_clock $write_fifo_clk_neg {

    definir vco_clock_id [phy_altera_phylite_arch_nf_171_flagyzi_get_vco_clk_id $wf_clock var]

    se {$vco_clock_id == -1} {

    post_message tipo critical_warning "Falha ao encontrar o clock de VCO"

    } outra {

    definir local_wf_clk_grp_${i_grp_idx}_${i_wf_clock} [ phy_altera_phylite_arch_nf_171_flagyzi_get_or_add_generated_clock \

    -target [get_node_info -name $wf_clock] \

    -nome "${inst}_wf_clk_grp_${i_grp_idx}_${i_wf_clock}_neg" \

    -source [get_node_info -name $vco_clock_id] \

    -multiply_by 1 \

    -divide_by [expr $var(PLL_VCO_TO_MEM_CLK_FREQ_RATIO)] \

    -fase 180 ]

    }

    incr i_wf_clock

    }

    #new restrição:

    se {$additional_jitter != 0} {

    set_clock_uncertainty -para [get_clocks ${inst}_wf_clk_grp_*] -adicionar $additional_jitter

    }

    3. Adicione incerteza adicional de clock no caminho de gravação:

    se {[llength $write_clocks]>0} {

    Não precisamos de números derive_clock_uncertainty porque incluímos FLS JITTER em set_output_delay

    set_clock_uncertainty -para [get_clocks $write_clocks] [phy_altera_phylite_arch_nf_170_zul23qq_round_3dp [expr 0,5*($var(WR_SSO) $var(WR_JITTER_SCALED)) $additional_jitter ]]

    }

    4. Nenhuma alteração no read_clocks

    se {[llength $read_clocks]>0} {

    Não precisamos de números derive_clock_uncertainty porque incluímos FLS JITTER em set_input_delay

    set_clock_uncertainty -para [get_clocks $read_clocks] 0,0

    }

    5. Adicione incerteza adicional de clock nas transferências c2p/p2c (phy_clk usr_clock)

    se {$i_phy_clock > $same_tile_index} {

    Nº C2P/P2C onde a telha da periferia != bloco CPA.

    # Para essas transferências, o SDC substitui explicitamente os valores de incerteza do clock.

    # Portanto, ao sobreconstruir, não devemos usar a opção "adicionar".

    definir add_to_derived ""

    definir c2p_su [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 0] [lindex $periphery_clock_uncertainty 0]} additional_jitter]

    definir c2p_h [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 1] [lindex $periphery_clock_uncertainty 1]} additional_jitter]

    definir p2c_su [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 2] [lindex $periphery_clock_uncertainty 2]} additional_jitter]

    definir p2c_h [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 3] [lindex $periphery_clock_uncertainty 3]} additional_jitter]

    } outra {

    Nº C2P/P2C onde a telha da periferia == bloco CPA

    # Para essas transferências, é seguro usar a opção -add, uma vez que contamos com

    Nº derive_clock_uncertainty pelo valor base.

    definir add_to_derived "-adicionar"

    definir c2p_su [expr [lindex $periphery_overconstraints 0] [lindex $periphery_clock_uncertainty 0] additional_jitter/2]

    definir c2p_h [expr [lindex $periphery_overconstraints 1] [lindex $periphery_clock_uncertainty 1] additional_jitter/2]

    set p2c_su [expr [lindex $periphery_overconstraints 2] [lindex $periphery_clock_uncertainty 2] additional_jitter/2]

    definir p2c_h [expr [lindex $periphery_overconstraints 3] [lindex $periphery_clock_uncertainty 3] additional_jitter/2]

    }

    6. Adicione incerteza adicional de clock dentro da transferência do núcleo (usr_clock/clock de núcleo extra usr_clock/clock de núcleo extra)

    definir c2c_same_su [expr [lindex $core_overconstraints 0] [lindex $core_clock_uncertainty 0] additional_jitter]

    set c2c_same_h [expr [lindex $core_overconstraints 1] [lindex $core_clock_uncertainty 1]]

    set c2c_diff_su [expr [lindex $core_overconstraints 2] [lindex $core_clock_uncertainty 2] additional_jitter]

    definir c2c_diff_h [expr [lindex $core_overconstraints 3] [lindex $core_clock_uncertainty 3] additional_jitter]

    foreach src_core_clock_local $core_clocks_local {

    se {$src_core_clock_local != ""} {

    foreach dst_core_clock_local $core_clocks_local {

    se {$dst_core_clock_local != """} {

    se {$src_core_clock_local == $dst_core_clock_local} {

    # Transferências de rede do mesmo clock

    set_clock_uncertainty -de $src_core_clock_local -a $dst_core_clock_local -setup -add $c 2c_same_su

    set_clock_uncertainty -de $src_core_clock_local -a $dst_core_clock_local -hold -enable_same_physical_edge -add $c 2c_same_h

    } outra {

    # Transferências entre diferentes redes de clock core

    set_clock_uncertainty -de $src_core_clock_local -a $dst_core_clock_local -setup -add $c 2c_diff_su

    set_clock_uncertainty -de $src_core_clock_local -a $dst_core_clock_local -hold -add $c 2c_diff_h

    }

    }

    }

    }

    }

    7. Para a lógica do usuário que envolve user_created_clock e o clock de saída PHYLite, o usuário precisará adicionar a incerteza extra de clock de 100ps nesse caminho de transferência de clock no arquivo sdc do usuário.

    8. Informe a SDC e verifique as Atribuições do SDC>Conjunto de incerteza do clock, certifique-se de que os 100ps extras são adicionados aos caminhos de transferência de clock afetados

    9. Retime ou recompile o projeto e garanta o encerramento do tempo

    10. Realize testes rigorosos de hardware para garantir que o design esteja funcionando corretamente antes de entrar em produção

    Ao atualizar o design para o software Quartus Prime v17.1 ou mais recente:

    a) Iniciar a ferramenta de atualização de IP para atualizar o Arria 10 Altera PHYLite IP para v17.1

    b) O arquivo PHYLite SDC gerado terá toda a incerteza de clock necessária adicionada quando o clock de referência PLL do núcleo for usado.

    c) A incerteza adicional de clock de 100ps adicionada para o caminho lógico do usuário que envolve o user_created_clock e o clock de saída PHYLite anteriormente exigirá permanecer no arquivo sdc do usuário.

    d) Execute a compilação completa sobre o projeto e garanta o encerramento do tempo.

    Produtos relacionados

    Este artigo aplica-se a 1 produtos

    FPGAs Intel® Arria® 10 e FPGAs SoC

    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 prevalecerá e será a determinante. Exibir a versão em inglês desta página.