El volcado de cambio de valor (VCD) (también conocido menos comúnmente como "volcado de cambio de variable") es un formato basado en ASCII para archivos de volcado generados por herramientas de simulación lógica EDA . El formato VCD estándar de cuatro valores fue definido junto con el lenguaje de descripción de hardware Verilog por el estándar IEEE 1364-1995 en 1996. Un formato VCD extendido, definido seis años después en el estándar IEEE 1364-2001, admite el registro de la intensidad y la direccionalidad de la señal. La estructura simple y compacta del formato VCD ha permitido que su uso se generalice y se extienda a herramientas que no son Verilog, como el simulador VHDL GHDL y varios rastreadores de kernel . Una limitación del formato es que no puede registrar los valores que se almacenan en las memorias.
Estructura/sintaxis
El archivo VCD consta de una sección de encabezado con información sobre fecha, simulador y escala de tiempo; una sección de definición de variables; y una sección de cambio de valor, en ese orden. Las secciones no están delimitadas explícitamente dentro del archivo, sino que se identifican mediante la inclusión de palabras clave que pertenecen a cada sección respectiva.
Las palabras clave de VCD se marcan con un $ al principio ; por lo general, cada palabra clave inicia un comando que finaliza con un $end explícito. Los identificadores de variables también pueden comenzar con un $, pero estos pueden distinguirse según el contexto.
Todos los tokens VCD están delimitados por espacios en blanco . Los datos en el archivo VCD distinguen entre mayúsculas y minúsculas.
Sección de encabezado
La sección de encabezado del archivo VCD incluye una marca de tiempo , un número de versión del simulador y una escala de tiempo, que asigna los incrementos de tiempo enumerados en la sección de cambio de valor a unidades de tiempo de simulación.
Sección de definición de variables
La sección de definición de variables del archivo VCD contiene información sobre el ámbito, así como listas de señales instanciadas en un ámbito determinado.
A cada variable se le asigna un identificador arbitrario para su uso en la sección de cambio de valor. El identificador se compone de uno o más caracteres ASCII imprimibles, desde ! hasta ~ (decimal 33 a 126), que por convención se mantienen cortos (es decir, uno o dos caracteres). Varias variables pueden compartir un identificador si el simulador determina que siempre tendrán el mismo valor, es decir, que son el mismo cable en el ámbito de la lista de conexiones general .
Las definiciones de tipo de ámbito siguen de cerca los conceptos de Verilog e incluyen los tipos módulo, tarea, función y bifurcación.
Sección $dumpvars
La sección que comienza con la palabra clave $dumpvars contiene los valores iniciales de todas las variables volcadas.
Sección de cambio de valor
La sección de cambio de valor contiene una serie de cambios de valor ordenados en el tiempo para las señales en un modelo de simulación dado. El tiempo actual se indica con '#' seguido de la marca de tiempo. Para señales escalares (de un solo bit), el formato es el valor de la señal denotado por 0 o 1 seguido inmediatamente del identificador de la señal sin espacio entre el valor y el identificador de la señal. Para señales vectoriales (de varios bits), el formato es el valor de la señal denotado por la letra 'b' o 'B' seguido del valor en formato binario seguido de un espacio y luego el identificador de la señal. El valor para variables reales se denota por la letra 'r' o 'R' seguido de los datos usando el formato %.16g printf() seguido de un espacio y luego el identificador de la variable.
Archivo VCD de ejemplo
$fecha Texto de la fecha. Por ejemplo: 11 de noviembre de 2009. $fin $versión Texto con información sobre la versión de la herramienta generadora de VCD. $fin $comentario Cualquier texto de comentario. $fin $timescale 1ps $end Lógica del módulo $scope $end $var cable 8 # datos $end $var cable 1 $ datos_válidos $fin $var cable 1 % en $end $var cable 1 y rx_en $end $var cable 1 ' tx_en $end $var cable 1 ( vacío $end $var cable 1 ) subcorrer $end $upscope $end $findefiniciones $fin $dumpvars bxxxxxxxx # x$ 0% incógnita& incógnita' 1( 0) $fin #0 b10000001 # 0$ 1% 0& 1' 0( 0) #2211 0' #2296 b0 # 1$ #2302 0$ #2303
El código anterior define 7 señales usando $var:
$var tipo ancho de bits id nombre
El ID se utiliza posteriormente en el volcado de cambios de valor. El volcado de cambios de valor comienza después de $enddefinitions $end y se basa en marcas de tiempo. La marca de tiempo se indica como '#' seguido de un número. En cada marca de tiempo se muestra la lista de señales que cambian su valor. Esto se realiza mediante el par valor/ID:
nuevo_valor id
Este ejemplo se mostrará como

Véase también
Enlaces externos
- IEEE Std 1364-2001 – El estándar oficial para Verilog 2001 (no es gratuito, incluye un capítulo que define VCD).
- Cómo crear tu propio archivo VCD : una guía informal pero completa.
- Volcado de cambios de valor : explicación del formato VCD, con un ejemplo.
- Compare VCD : una herramienta de línea de comandos para comparar archivos VCD (con licencia GPL).
- Verilog::VCD – Software Perl CPAN para analizar archivos Verilog VCD (con licencia GPL).
- Verilog_VCD – Traducido a Python desde el software Perl CPAN
- ProcessVCD : paquete Java para analizar archivos VCD (bajo licencia MIT).
- PyVCD : paquete de Python que escribe archivos Value Change Dump (VCD) según lo especificado en IEEE 1364-2005 (Licencia MIT).
- vcdMaker – Herramienta (Linux, Windows) para convertir archivos de registro de texto en archivos VCD (Licencia MIT).
- yne/vcd – (Linux, Mac, Windows) Interfaz de línea de comandos para mostrar archivos VCD en la terminal (Licencia MIT).
- estándares IEEE
- Formatos de archivo EDA