O analisador de sincronização considera divisores de clock, clocks de ondulação ou circuitos que modificam ou alteram as características do clock de entrada ou host como clocks gerados. Você deve definir a saída desses circuitos como clocks gerados. Esta definição permite que o Analisador de Temporize analise esses clocks e contabilize qualquer latência de rede associada a eles.
Você pode usar o comando create_generated_clock para criar clocks gerados. A lista a seguir mostra o comando create_generated_clock e as opções disponíveis:
create_generated_clock [nome <clock>] -pino de <host> [lista de bordas <edge>] [-lista de edge_shift <>] [-divide_by <factor>] [-multiply_by <factor multiply_by <factor>] [->] [-duty_cycle <percent>] [-add] [-invert] [-host_clock <clock>] [-phase <phase>] [-offset <offset>] <source objects>
A Tabela 1 descreve as opções para o comando create_generated_clock comando.
Tabela 1. Descrição de opções para create_generated_clock comando
Descrição da | opção |
---|---|
-nome < de >clock> | Nome do clock gerado, por exemplo, clk_x2. Se você não especificar o nome do clock, o nome do clock será o mesmo do primeiro nó ao qual ele é atribuído. |
Pino de <host> | O pino <host> especifica o nó no design a partir do qual as configurações do clock derivam. |
-bordas < lista de > |-edge_shift <shift> | A opção -bordas especifica as novas arestas ascendentes e cadente em relação às bordas ascendentes e de queda do clock do host. As bordas ascendentes e de queda do clock host são numeradas 1,<n> começando com a primeira borda ascendente, por exemplo, a borda 1. A primeira borda a cair depois disso é a borda número 2, a próxima borda ascendente número 3 e assim por ai. A < de > deve estar em ordem crescente. A mesma borda pode ser usada para duas entradas para indicar um pulso de clock independente do ciclo de trabalho da forma de onda original. edge_shift especifica a quantidade de deslocamento para cada borda na lista <edge>. A opção -invertida pode ser usada para reverter o clock após a aplicação das bordas e -edge_shifts. |
-divide_by <factor>| -multiply_by<factor> | Os divide_by e multiply_by são baseados na primeira borda ascendente do clock e estendem ou contraem a forma de onda pelos fatores especificados. Por exemplo, um -divide_by 2 é equivalente a -bordas {1 3 5}. Para clocks multiplicados, o ciclo de trabalho também pode ser especificado. O analisador de sincronização é compatível com a especificação de fatores multiplicidade e divisão ao mesmo tempo. |
-duty_cycle<percente> | Especifica o ciclo de trabalho do clock gerado. O ciclo de trabalho é aplicado por último. |
-adicionar | Permite que você especifique mais de um clock no mesmo pino. |
-invertida | A inversão é aplicada na saída do clock depois que todas as outras modificações são aplicadas, exceto o ciclo de trabalho. |
-host_clock<clock> | host_clock é usado para especificar o clock se houver vários clocks no pino host. |
-fase<fase> | Especifica a fase do clock gerado. |
-offset<offset> | Especifica o deslocamento do clock gerado. |
< de recursos> | Especifica as portas ou os pinos a que a atribuição se aplica. |
As latências de origem são baseadas em atrasos na rede do clock do clock do host (não necessariamente o pino do host). Você pode usar o comando set_clock_latency-fonte para substituir a latência de origem.
A Figura 1 mostra formas de onda para os seguintes comandos SDC que criam um clock gerado invertido com base em um clock de 10 ns.
create_clock -período 10 [get_ports clk] create_generated_clock -divide_by 1 -invertida -fonte [get_registers clk] \ [get_registers geração|clkreg]
A Figura 2 mostra formas de onda para os seguintes comandos SDC que modificam o clock gerado usando as opções -edges e -edge_shift.
create_clock -período 10 -waveform { 0 5 } [get_ports clk] # Cria uma divisão por 2 clocks create_generated_clock -source [get_ports clk] - bordas { 1 3 5 } \ [get_registers clkdivA|clkreg] # Cria um clock dividido por 2 independente do ciclo de trabalho do clock host agora 50%) create_generated_clock -source [get_ports clk] -bordas { 1 1 5 } -edge_shift 0 5 0 } \ [get_registers clkdivB|clkreg]
A Figura 3 mostra wafeforms para os seguintes comandos SDC que demonstram o efeito da opção -multiplique no clock gerado.
create_clock -período 10 -waveform { 0 5 } [get_ports clk] # Cria uma fonte de create_generated_clock de clock multiplicado por 2 [get_ports clk] -multiply_by 2 \ [get_registers clkmult|clkreg]