Дамп изменения значения
Дамп изменения значения (VCD) (также известный как «дамп изменения переменной») — это формат на основе ASCII для файлов дампа, создаваемых EDA инструментами логического моделирования . Стандартный формат VCD с четырьмя значениями был определен вместе с Verilog языком описания оборудования в IEEE стандарте 1364-1995 в 1996 году. Расширенный формат VCD, определенный шесть лет спустя в стандарте IEEE 1364-2001 , поддерживает регистрацию мощности и направленности сигнала. . Простая и в то же время компактная структура формата VCD позволила его использованию стать повсеместным и распространиться на инструменты, не принадлежащие Verilog, такие как VHDL симулятор GHDL и различные трассировщики ядра . Ограничением формата является то, что он не может записывать значения, хранящиеся в памяти.
Структура/синтаксис
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( май 2008 г. ) |
Файл VCD содержит раздел заголовка с информацией о дате, симуляторе и шкале времени; раздел определения переменных; и раздел изменения значений — именно в этом порядке. Разделы в файле не разграничены явно, а идентифицируются путем включения ключевых слов, принадлежащих каждому соответствующему разделу.
VCD слова отмечаются Ключевые начальным $ ; вообще говоря, каждое ключевое слово запускает команду, которая завершается явным $end. Идентификаторы переменных также могут начинаться с $, но их можно различать по контексту.
Все токены VCD выделяются пробелами . Данные в файле VCD чувствительны к регистру.
Раздел заголовка
[ редактировать ]Раздел заголовка файла VCD включает метку времени , номер версии симулятора и шкалу времени, которая сопоставляет приращения времени, перечисленные в разделе изменения значений, с единицами времени моделирования.
Раздел определения переменной
[ редактировать ]Раздел определения переменных файла VCD содержит информацию об области, а также списки сигналов, созданных в заданной области.
Каждой переменной присваивается произвольный идентификатор для использования в разделе изменения значения. Идентификатор состоит из одного или нескольких печатных символов ASCII из ! до ~ (десятичные числа от 33 до 126), они обычно короткие (т.е. один или два символа). Несколько переменных могут иметь общий идентификатор, если симулятор определит, что они всегда будут иметь одно и то же значение, т.е. являются одним и тем же проводом в пределах общего списка соединений .
Определения типов области точно соответствуют концепциям Verilog и включают типы модуль, задачу, функцию и ответвление.
раздел $dumpvars
[ редактировать ]Раздел, начинающийся с ключевого слова $dumpvars, содержит начальные значения всех выгруженных переменных.
Раздел изменения значений
[ редактировать ]Раздел изменения значения содержит серию упорядоченных по времени изменений значений для сигналов в данной имитационной модели. Текущее время обозначается знаком «#», за которым следует отметка времени. Для скалярного (однобитового) сигнала формат представляет собой значение сигнала, обозначаемое 0 или 1, за которым сразу следует идентификатор сигнала без пробела между значением и идентификатором сигнала. Для векторных (многобитовых) сигналов формат представляет собой значение сигнала, обозначаемое буквой «b» или «B», за которым следует значение в двоичном формате, за которым следует пробел, а затем идентификатор сигнала. Значение реальных переменных обозначается буквой «r» или «R», за которой следуют данные в формате %.16g printf(), затем пробел, а затем идентификатор переменной.
Пример VCD-файла
[ редактировать ]$date Date text. For example: November 11, 2009. $end $version VCD generator tool version info text. $end $comment Any comment text. $end $timescale 1ps $end $scope module logic $end $var wire 8 # data $end $var wire 1 $ data_valid $end $var wire 1 % en $end $var wire 1 & rx_en $end $var wire 1 ' tx_en $end $var wire 1 ( empty $end $var wire 1 ) underrun $end $upscope $end $enddefinitions $end $dumpvars bxxxxxxxx # x$ 0% x& x' 1( 0) $end #0 b10000001 # 0$ 1% 0& 1' 0( 0) #2211 0' #2296 b0 # 1$ #2302 0$ #2303
Приведенный выше код определяет 7 сигналов с помощью $var:
$var type bitwidth id name
Идентификатор используется позже в дампе изменения значения. Дамп изменения значения начинается после $enddefinitions $end и основан на временных метках. Временная метка обозначается знаком «#», за которым следует число. На каждой временной метке указан список сигналов, меняющих свое значение. Это делается с помощью пары значение/id:
new_value id
Этот пример будет отображаться как
См. также
[ редактировать ]Внешние ссылки
[ редактировать ]- IEEE Std 1364-2001 — официальный стандарт Verilog 2001 (не бесплатный, включает главу, определяющую VCD).
- Написание собственного VCD-файла — неформальный, но исчерпывающий справочник.
- Дамп изменения значения — объяснение формата VCD с примером.
- Сравните VCD – инструмент командной строки для сравнения файлов VCD (под лицензией GPL).
- Verilog::VCD — программное обеспечение Perl CPAN для анализа файлов Verilog VCD (под лицензией GPL).
- Verilog_VCD — переведено на Python из программного обеспечения Perl CPAN.
- ProcessVCD — пакет Java для анализа файлов VCD (лицензируется по лицензии MIT).
- PyVCD — пакет Python, который записывает файлы дампа изменения значений (VCD), как указано в IEEE 1364-2005 (лицензия MIT).
- vcdMaker — инструмент (Linux, Windows) для перевода текстовых файлов журналов в файлы VCD (лицензия MIT).
- yne/vcd – (Linux, Mac, Windows) CLI для отображения файлов VCD на терминале (лицензия MIT).