Menu
Coddy logo textTech

Diretiva Timescale

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 70 de 90.

A diretiva timescale define a unidade de tempo e a precisão de tempo para a simulação. Ela informa ao simulador como interpretar valores de atraso como #10.

Nas lições anteriores, usamos atrasos como #10 sem especificar o que "10" significa. São 10 nanossegundos? 10 picossegundos? A diretiva timescale responde a essa pergunta.

Sintaxe:

`timescale time_unit / time_precision
ParteSignificadoExemplo
time_unitA unidade básica para atrasos1ns
time_precisionQuão precisa a simulação deve ser1ps

O acento grave ` antes de timescale significa que é uma diretiva de compilador.

Exemplo

`timescale 1ns / 1ps
  • time_unit = 1ns#10 significa 10 nanossegundos
  • time_precision = 1ps → A simulação arredonda para o picossegundo mais próximo

Valores Comuns de Timescale

Unidade de TempoPrecisãoCaso de Uso
1ns / 1nsNanosegundoSimulações simples
1ns / 1psPicosegundoMais preciso
1ps / 1psPicosegundoDesigns de alta velocidade
1us / 1nsMicrosegundoSimulações lentas

Como Isso Afeta os Atrasos

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // Aguarda 10 nanossegundos
end

Sem timescale, alguns simuladores assumem um padrão (frequentemente 1ns). O ideal é sempre especificá-lo.

Regras Importantes

RegraExplicação
Deve estar fora dos módulosColocado antes de qualquer definição de módulo
Símbolo de crase (backtick)`timescale não 'timescale 
Unidade de tempo ≥ precisão de tempo1ns / 1ps está correto, 1ps / 1ns não está
Afeta todos os atrasos no arquivoAtrasos gerais, atrasos de porta, atrasos de atribuição
challenge icon

Desafio

O que fazer:

Adicione a diretiva timescale ausente para fazer com que os atrasos representem 10ns, 20ns e 30ns.

Folha de consulta

A diretiva `timescale define a unidade de tempo e a precisão de tempo para a simulação. Ela deve ser colocada antes de qualquer definição de módulo.

`timescale time_unit / time_precision
`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // Waits 10 nanoseconds
end
  • time_unit — a unidade básica para atrasos (ex: #10 = 10ns)
  • time_precision — quão precisamente a simulação arredonda (deve ser ≤ unidade de tempo)
TimescaleCaso de Uso
1ns / 1nsSimulações simples
1ns / 1psMais preciso
1ps / 1psDesigns de alta velocidade
1us / 1nsSimulações lentas

Experimente você mesmo

// TODO: Adicionar diretiva de escala de tempo (1ns / 1ps)

module timescale_challenge;
  
  initial begin
    $display("Time %0t", $time);
    #10 $display("Time %0t (10ns = 10000ps)", $time);
    #10 $display("Time %0t (20ns = 20000ps)", $time);
    #10 $display("Time %0t (30ns = 30000ps)", $time);
    $finish;
  end
endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos