5 votos

¿Por qué no veo la desviación de entrada del bloque de sincronización en las formas de onda?

Ese es el código:

module flipflop (input logic clk, reset, 
                 input logic [7:0] qin, 
                 output logic [7:0] qout);
timeunit 1ns;

always @(posedge clk or posedge reset)
  if (reset)
    qout = '0;
  else
    qout = qin;

endmodule 

banco de pruebas:

module testflop ();
timeunit 1ns;
timeprecision 100ps;

logic reset;
logic [7:0] qin,qout;

// ---- clock generator code begin------
`define PERIOD 10
logic clk = 1'b1;

always
    #(`PERIOD/2)clk = ~clk;

// ---- clock generator code end------

flipflop DUV(.*);
default clocking cb @(posedge clk);
default input #1step  output #4;
  input qout; 
  output reset, qin;
endclocking

  initial
   begin
    cb.qin <= '0;
    cb.reset <= 0;
    ##2 cb.reset <= 1;
    ##3 cb.reset <= 0;
    for (int i = 1; i < 8; i++)
      begin
         ##1 cb.qin <= i;
      end 
     ##3;
     $finish();
    end
endmodule     

Y esta es la forma de onda:

Puedo ver el sesgo de #4ns para las salidas, pero no puedo ver el #1step de la entrada.

¿Qué pasa?

¿Es el #1step se supone que es igual a la timeprecision ?

enter image description here

6voto

Zach Martin Puntos 8

No hay nada malo; la simulación se comporta como se espera. El bloque de sincronización aplica el retardo de 4ns a la salida como se esperaba y como se ve en tus ondas.

Sin embargo, el bloque de sincronización no aplica ningún retardo a la entrada. El bloque de sincronización muestras la entrada antes del flanco de subida del reloj. Consulte la norma IEEE 1800-2017, sección 14.4 Desplazamientos de entrada y salida :

Las señales de entrada (o de salida) se muestrean en el evento de reloj designado. Si se especifica una inclinación de entrada, la señal se muestrea a inclinación tiempo unidades antes de el evento del reloj. Del mismo modo, las señales de salida (o inout) son impulsadas inclinación unidades de tiempo de simulación después de el evento del reloj correspondiente.

Dado que ha especificado 1step la entrada se muestrea 100ps antes del flanco de subida del reloj. Un step es igual al timeprecision . El punto de muestreo no será visible en las formas de onda, ya que no es una señal independiente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X