El "ahora" se utiliza normalmente si se quiere imprimir el tiempo de simulación en la pantalla o en un archivo. Necesito imprimir el tiempo de simulación en ms en un archivo. Sin embargo, el uso de "now" con "writeline" en un archivo me da el tiempo en ns resolución.
Respuesta
¿Demasiados anuncios?En IEEE Std 1076-2008 16.4 Paquete 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 varios procedimientos WRITE declarados en el paquete TEXTIO. Cada uno de ellos tiene al menos dos parámetros: L, la línea en la que se va a escribir, y VALOR, el valor que se va a escribir. Los parámetros adicionales JUSTIFIED, FIELD, DIGITS, FORMAT y UNIT controlan el formato de los datos de salida. Cada operación de escritura añade 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 de campo y la justificación deseados, como en la operación JUSTIFY. Para el tipo predefinido BIT_VECTOR, existe igualmente 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 del tipo TIME; el resultado es que el valor TIME se formatea como un entero o un literal real que representa el número de múltiplos de esta unidad, seguido del nombre de la propia unidad. El nombre de la unidad se formatea utilizando sólo caracteres en minúscula. Por lo tanto, la llamada al procedimiento WRITE(Line, 5 ns, UNIT=>us) tendría como resultado que el valor de la cadena "0.005 us" se añadiría al valor de la cadena designado por Line, mientras que WRITE(Line, 5 ns) tendría como resultado que se añadiría el valor de la cadena "5 ns" (ya que el valor por defecto de UNIT es ns).
Puede especificar el formato mediante una asociación con nombre de la lista de parámetros o mediante una asociación posicional (proporcionando todo el conjunto de parámetros, incluidos los que tienen valores predeterminados).
6.6.7 Listas de asociación, 6.5.7.1 Generalidades
Se dice que un elemento de asociación es nominativo si el designador formal aparece explícitamente; en caso contrario, se dice que es posicional. Para una asociación posicional, un designador real en una posición determinada de una lista de asociación corresponde al elemento de interfaz en la misma posición de la lista de interfaz.
Las asociaciones con nombre pueden darse en cualquier orden, pero si en la misma lista de asociaciones aparecen tanto asociaciones posicionales como con nombre, todas las asociaciones posicionales aparecerán primero en su posición normal. Por lo tanto, una vez que se utilice una asociación con nombre, el resto de la lista de asociaciones utilizará únicamente asociaciones con nombre.
Lo que nos dice que podrías
write (some_line, some_time_value, UNIT => ms);
Esto se apoya ya en -1987.
Para to_string
operaciones:
5.7 Representaciones de cadenas
Cuando se forma la representación de la cadena para un procedimiento WRITE en STD.TEXTIO (véase la cláusula 16) o para una operación TO_STRING definida implícitamente, salvo que se especifique lo contrario para una operación TO_STRING sobrecargada:
...Para un valor de 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 ESPACIO entre el literal abstracto y el nombre de la unidad. Si el tipo físico es TIME, el nombre de la unidad es el nombre simple del límite de resolución (véase 5.2.4.2); en caso contrario, el nombre de la unidad es el nombre simple de la unidad primaria del tipo físico. Al formar la representación de la cadena para el procedimiento WRITE del tipo TIME, el literal físico es el descrito en 16.4.