Generación de números aleatorios

2

He escrito este código en el sistema verilog para generar cincuenta números aleatorios de 12 bits y escribirlos en un archivo.

¿Cómo puedo generar los números aleatorios en octal en lugar de decimal?

Además, ¿cómo puedo hacer que los números se muestren en diferentes líneas? Actualmente, mis números se muestran uno tras otro.

module stimulus_gen();
  class stim_gen;
    rand bit [11:0] addr;
  endclass

  integer file;
  stim_gen obj;

  initial begin
    file = $fopen("input.txt", "w");
    while (!$feof(file))
    begin
     for (int i=0; i<50; i++)
     begin
       obj = new();
       assert(obj.randomize())
       else $fatal(0, "stim_gen::randomize failed");
       //transmit(obj);
       $fwrite(file, obj);
     end
   end
   $fclose(file);
 end
endmodule
    
pregunta priyanka

1 respuesta

2

$fwrite(file, obj); imprimirá la dirección de memoria del objeto. Para imprimir el objeto addr en oct (seguido de una nueva línea), use $fwrite(file, "%o\n", obj.addr); o $fdisplay(file, "%o", obj.addr);

También están las tareas de visualización del sistema $fwriteo y $fdisplayo que tienen el formato predeterminado como oct.

Este es un buen documento en IEEE Std 1800-2012 § 21 Entrada / tareas de salida del sistema y funciones del sistema , así como la versión anterior de SystemVerilog y todas las versiones de Verilog (IEEE Std 1364) en las secciones respetadas sobre la tarea / función del sistema.

    
respondido por el Greg

Lea otras preguntas en las etiquetas