Ao usar o carregador flash paralelo Intel® FPGA IP, as restrições de sincronização para fpga_data e fpga_dclk são descritas no Limitador de sincronização de PFL no Guia do usuário do carregador flash paralelo Intel® FPGA IP Core. No entanto, as restrições na versão do documento 2019.02.19 e anteriores não estão corretas.
Para restringir corretamente o tempo de fpga_data e fpga_dclk, use uma das seguintes restrições de sincronização, dependendo da razão entre o clock de entrada e a saída DCLK.
[ Quando a razão entre o clock de entrada e a saída DCLK = 1 ]
# Criar clock
create_clock -name {pfl_clk} -período de -waveform { 0,000 /2 } [get_ports {pfl_clk}]
# Criar clock gerado
create_generated_clock -name {fpga_dclk} -source [get_ports {pfl_clk}] -master_clock {pfl_clk} -invertida [get_ports {fpga_dclk}]
# Definir atraso de saída
set_output_delay -add_delay -max -clock [get_clocks {fpga_dclk}] restrição de tempo [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {fpga_dclk}] [get_ports {fpga_data*}]
[ Quando a relação entre o clock de entrada e a saída DCLK > 1 ]
# Criar clock
create_clock -name {pfl_clk} -período de -waveform { 0,000 /2 } [get_ports {pfl_clk}]
# Criar clock gerado
create_generated_clock -name {} -source [get_ports {pfl_clk}] -divide_by -master_clock {pfl_clk} [get_registers {} ]
create_generated_clock -name {} -source [get_registers {}] -master_clock {} [get_ports {fpga_dclk}]
# Definir atraso de saída
set_output_delay -add_delay -max-clock [get_clocks {}] -reference_pin [get_ports {fpga_dclk}] restrição de tempo de [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {}] -reference_pin [get_ports {fpga_dclk}] [get_ports {fpga_data*}]
# Definir caminho de multiciclos
set_multicycle_path -setup -start-from [get_clocks {pfl_clk}] -, para [get_clocks {}] < razão entre o clock de entrada e a saída DCLK>/2
set_multicycle_path -hold -start -, de [get_clocks {pfl_clk}] a [get_clocks {}] -1
• Nesses exemplos, os nomes Intel FPGA IP porta do núcleo do PFL são usados.
• O registro DCLK é um registro para dividir pfl_clk. O nome do registro geralmente é "fpga_dclk_reg". Você pode encontrar o registro rastreando o destino de origem fpga_dclk porta usando a ferramenta Visualizador de mapas de tecnologia.
• A Intel recomenda usar a GUI do analisador de tempo para validar os treinamentos.
[Exemplo]
• Condição
o pfl_clk = 20ns (50 MHz)
o Relação entre o clock de entrada e a saída DCLK = 2
• Restrições de sincronização
# Criar clock
create_clock -name {pfl_clk} -período 20.000 -waveform { 0,000 10.000 } [get_ports {pfl_clk}]
# Criar clock gerado
create_generated_clock -name {fpga_dclk_gen} -source [get_ports {pfl_clk}] -divide_by 2 -master_clock {pfl_clk} [get_registers {pfl:inst|altparallel_flash_loader:altparallel_flash_loader_component|alt_pfl:\PFL_CFI:pfl_cfi_inst|alt_pfl_cfg3:\CFG3:cfg|alt_pfl_cfg_fpga:alt_pfl_cfg_fpga|fpga_dclk_reg}]
create_generated_clock -name {fpga_dclk_pin} -source [get_registers {pfl_top:pfl_top_inst|altera_parallel_flash_loader:parallel_flash_loader_0|altparallel_flash_loader:altparallel_flash_loader_component|alt_pfl:\PFL_CFI:pfl_cfi_inst|alt_pfl_cfg3:\CFG3:cfg|alt_pfl_cfg_fpga:alt_pfl_cfg_fpga|fpga_dclk_reg}] -master_clock {fpga_dclk_gen} [get_ports {fpga_dclk}]
# Definir atraso de saída
set_output_delay -add_delay -max -clock [get_clocks {fpga_dclk_gen}] -reference_pin [get_ports {fpga_dclk}] 5.500 [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {fpga_dclk_gen}] -reference_pin [get_ports {fpga_dclk}] -1.000 [get_ports {fpga_data*}]
# Definir caminho de multiciclos
set_multicycle_path -setup -start -, de [get_clocks {pfl_clk}] -, para [get_clocks {fpga_dclk_pin}] 1
set_multicycle_path -hold -start -, de [get_clocks {pfl_clk}] -, para [get_clocks {fpga_dclk_pin}] 1