Menu
Coddy logo textTech

Directiva Timescale

Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 70 de 90.

La directiva timescale establece la unidad de tiempo y la precisión de tiempo para la simulación. Le indica al simulador cómo interpretar los valores de retardo como #10.

En lecciones anteriores, utilizamos retardos como #10 sin especificar qué significa "10". ¿Son 10 nanosegundos? ¿10 picosegundos? La directiva timescale responde a esta pregunta.

Sintaxis:

`timescale time_unit / time_precision
ParteSignificadoEjemplo
time_unitLa unidad básica para los retardos1ns
time_precisionQué tan precisa debe ser la simulación1ps

La comilla invertida ` antes de timescale significa que es una directiva de compilador.

Ejemplo

`timescale 1ns / 1ps
  • time_unit = 1ns#10 significa 10 nanosegundos
  • time_precision = 1ps → La simulación redondea al picosegundo más cercano

Valores comunes de escala de tiempo

Unidad de tiempoPrecisiónCaso de uso
1ns / 1nsNanosegundoSimulaciones simples
1ns / 1psPicosegundoMás preciso
1ps / 1psPicosegundoDiseños de alta velocidad
1us / 1nsMicrosegundoSimulaciones lentas

Cómo afecta a los retardos

`timescale 1ns / 1ps

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

Sin timescale, algunos simuladores asumen un valor predeterminado (a menudo 1ns). Lo mejor es especificarlo siempre.

Reglas importantes

ReglaExplicación
Debe estar fuera de los módulosUbicado antes de cualquier definición de módulo
Símbolo de acento grave (backtick)`timescale no 'timescale 
Unidad de tiempo ≥ precisión de tiempo1ns / 1ps está bien, 1ps / 1ns no
Afecta a todos los retardos en el archivoRetardos generales, retardos de compuerta, retardos de asignación
challenge icon

Desafío

Qué hacer:

Añade la directiva timescale que falta para que los retardos representen 10ns, 20ns y 30ns.

Hoja de referencia

La directiva `timescale establece la unidad de tiempo y la precisión de tiempo para la simulación. Debe colocarse antes de cualquier definición de módulo.

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

initial begin
  #10 a = 1;   // Espera 10 nanosegundos
end
  • time_unit — la unidad básica para los retardos (por ejemplo, #10 = 10ns)
  • time_precision — qué tan precisamente redondea la simulación (debe ser ≤ unidad de tiempo)
Escala de tiempoCaso de uso
1ns / 1nsSimulaciones simples
1ns / 1psMás preciso
1ps / 1psDiseños de alta velocidad
1us / 1nsSimulaciones lentas

Pruébalo tú mismo

// TODO: Agregar directiva de escala de tiempo (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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos