VHDL: cómo cambiar la resolución del tiempo impreso usando "ahora" en VHDL a archivo o terminal

4

El "ahora" se usa generalmente si uno quiere imprimir el tiempo de simulación para la pantalla o en un archivo. Necesito imprimir el tiempo de simulación en ms en un archivo. Sin embargo, usar ahora con writeline en un archivo me da tiempo en la resolución de ns.

    
pregunta quantum231

1 respuesta

8

En el paquete IEEE Std 1076-2008 16.4 TEXTIO:

procedure WRITE (L: inout LINE; VALUE: in TIME;
                 JUSTIFIED: in SIDE:= RIGHT; FIELD: in WIDTH := 0;
                 UNIT: in TIME:= ns);
  

...
  Para cada tipo de datos predefinido hay uno o más procedimientos de ESCRITURA declarados en el paquete TEXTIO. Cada uno de estos tiene al menos dos parámetros: L, la línea en la que se escribe y VALUE, el valor que se escribirá. Los parámetros adicionales JUSTIFICADOS, CAMPO, DÍGITOS, FORMATO y UNIDAD controlan el formato de los datos de salida. Cada operación de escritura agrega datos a una línea formateada dentro de un campo que es al menos tan largo como se requiere para representar el valor de los datos. Los parámetros FIELD y JUSTIFIED especifican el ancho del campo deseado y la justificación, como para la operación JUSTIFY. Para el tipo predefinido BIT_VECTOR, también hay un procedimiento OWRITE y otro HWRITE, con parámetros similares.
  ...
  El parámetro UNIT especifica cómo deben formatearse los valores de tipo TIME. El valor de este parámetro será igual a una de las unidades declaradas como parte de la declaración de tipo TIEMPO; el resultado es que el valor de TIEMPO está formateado como un entero o literal real que representa el número de múltiplos de esta unidad, seguido del nombre de la unidad en sí. El nombre de la unidad se formatea utilizando solo caracteres en minúscula. Por lo tanto, el procedimiento de llamada WRITE (Línea, 5 ns, UNIT = > us) daría como resultado que el valor de cadena "0.005 us" se agregue al valor de cadena designado por Line, mientras que WRITE (Línea, 5 ns) resultará en la cadena el valor "5 ns" se agrega (ya que el valor UNIT predeterminado es ns).

Puede especificar el formato a través de la asociación nombrada de la lista de parámetros o por asociación posicional (proporcionando el conjunto completo de parámetros, incluidos los que tienen valores predeterminados).

6.6.7 Listas de asociación, 6.5.7.1 General

  

Se dice que un elemento de asociación se denomina si el designador formal aparece explícitamente; de lo contrario, se dice que es posicional. Para una asociación posicional, un designador real en una posición determinada en una lista de asociaciones corresponde al elemento de interfaz en la misma posición en la lista de interfaces.

     

Las asociaciones nombradas pueden darse en cualquier orden, pero si ambas asociaciones posicionales y nombradas aparecen en la misma lista de asociaciones, todas las asociaciones posicionales aparecerán primero en su posición normal. Por lo tanto, una vez que se usa una asociación nombrada, el resto de la lista de asociaciones solo usará asociaciones nombradas.

Lo que nos dice que podrías

write (some_line, some_time_value, UNIT => ms);

Esto se admite tan pronto como -1987.

Para operaciones to_string :

5.7 representaciones de cadena

  

Al formar la representación de cadena para un procedimiento de ESCRITURA en STD.TEXTIO (vea la Cláusula 16) o para una operación TO_STRING definida implícitamente, excepto donde se especifique lo contrario para una operación TO_STRING sobrecargada:
  ...

     
    

Para un valor de un tipo físico, cuando se forma la representación de cadena para una operación TO_STRING, el literal abstracto es un literal decimal que es un literal entero, no hay exponente, y hay un solo carácter de ESPACIO entre el literal abstracto y el nombre de la unidad. Si el tipo físico es HORA, el nombre de la unidad es el nombre simple del límite de resolución (consulte 5.2.4.2); de lo contrario, el nombre de la unidad es el nombre simple de la unidad primaria del tipo físico. Cuando se forma la representación de cadena para el procedimiento WRITE para el tipo TIME, el literal físico es como se describe en 16.4.

  
    
respondido por el user8352

Lea otras preguntas en las etiquetas