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 time unit e a time precision para a simulação. Ela informa ao simulador como interpretar valores de atraso como #10.

Em lições anteriores, usamos atrasos como #10 sem especificar o que "10" significa. São 10 nanossegundos? 10 picossegundos? A directive 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

A crase ` antes de timescale significa que é uma diretiva do compilador (compiler directive).

Exemplo

`timescale 1ns / 1ps
  • time_unit = 1ns#10 significa 10 nansegundos
  • 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 Delays

`timescale 1ns / 1ps

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

Sem o timescale, alguns simuladores assumem um padrão (frequentemente 1ns). É melhor 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`timescale e não 'timescale 
Unidade de tempo ≥ precisão de tempo1ns / 1ps está correto, 1ps / 1ns não
Afeta todos os atrasos no arquivoAtrasos gerais, atrasos de portas, atrasos de atribuição
challenge icon

Desafio

O que fazer:

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

Experimente você mesmo

// TODO: Adicione a diretiva timescale (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