Switch DEBUG no parece estar funcionando en mi código

3

Siguiendo el código que probé en el área de juegos EDA con el comando agregado con + define + DEBUG, el interruptor DEBUG no parece estar funcionando. Su bloque siempre es sensible al error y esta variable está cambiando cuatro veces aquí, pero aún así el bloque no es sensible.

enlace

module test;      
  integer error;
  event err;

  initial
  begin
      #10 ->err;
      #10 ->err;
      #3 ->err;
      #1 ->err;
      #10 finish(error);
      $display("%d",error);
  end

  initial error=0;

  always@(err)
  begin
      error=error+1;
  end

  always@(error)
  begin
    'ifdef DEBUG
      $display("Error at %d",$time);
    'endif
  end

  task finish(wrong);
    integer wrong;
  begin
    #10 if(wrong==0) $display("-----------TEST PASSED-----------");
        else $display("---------------TEST FAILED---------------");
  end
  endtask  
endmodule
    
pregunta Abhi

1 respuesta

2

+define+DEBUG es un argumento de tiempo de compilación, no un tiempo de ejecución. Mover +define+DEBUG a la línea apropiada solucionará el problema. Consulte enlace

FYI: SystemVerilog tiene $test$plusargs / $value$plusargs que permitirá argumentos de tiempo de ejecución. Ejemplo con el argumento de tiempo de ejecución +DEBUG : enlace

always@(err) begin
  error=error+1;
  if($test$plusargs("DEBUG")) begin
    $display("Error at %d",$time);
  end
end
    
respondido por el Greg

Lea otras preguntas en las etiquetas