VCD Value change dump

Value Change Dump (VCD) (juga dikenal kurang umum sebagai “Variable Change Dump”) adalah format berbasis ASCII untuk file dump yang dihasilkan oleh alat simulasi logika EDA. Standar, format VCD empat nilai ditentukan bersama dengan bahasa deskripsi perangkat keras Verilog oleh Standar IEEE 1364-1995 pada tahun 1996. Format VCD Extended yang ditentukan enam tahun kemudian dalam Standar IEEE 1364-2001 mendukung pencatatan kekuatan dan arah sinyal . Struktur sederhana namun kompak dari format VCD telah memungkinkan penggunaannya menjadi di mana-mana dan menyebar ke alat non-Verilog seperti GHDL simulator VHDL dan berbagai pelacak kernel. Keterbatasan format adalah tidak dapat merekam nilai dalam memori.

Struktur/sintaksis

File VCD terdiri dari bagian header dengan informasi tanggal, simulator, dan skala waktu; bagian definisi variabel; dan bagian perubahan nilai, dalam urutan itu. Bagian tidak secara eksplisit digambarkan dalam file, tetapi diidentifikasi dengan dimasukkannya kata kunci milik masing-masing bagian.

Kata kunci VCD ditandai dengan awalan $ (tetapi pengidentifikasi variabel juga dapat dimulai dengan $). Secara umum setiap kata kunci memulai bagian yang diakhiri dengan kata kunci $end.

Semua token VCD digambarkan dengan spasi putih. Data dalam file VCD peka terhadap huruf besar-kecil.

bagian tajuk
Bagian header dari file VCD mencakup stempel waktu, nomor versi simulator, dan skala waktu, yang memetakan peningkatan waktu yang tercantum di bagian perubahan nilai ke satuan waktu simulasi.

Bagian definisi variabel
Bagian definisi variabel dari file VCD berisi informasi ruang lingkup serta daftar sinyal yang dipakai dalam ruang lingkup tertentu.

Setiap variabel diberi pengidentifikasi ASCII yang sewenang-wenang dan ringkas untuk digunakan di bagian perubahan nilai. Pengidentifikasi terdiri dari karakter ASCII yang dapat dicetak dari ! sampai ~ (desimal 33 sampai 126). Beberapa variabel dapat berbagi pengidentifikasi jika simulator menentukan bahwa mereka akan selalu memiliki nilai yang sama.

Definisi tipe ruang lingkup mengikuti konsep Verilog, dan termasuk modul tipe, tugas, fungsi, dan fork.

bagian $dumpvars
Bagian yang dimulai dengan kata kunci $dumpvars berisi nilai awal dari semua variabel yang dibuang.

bagian perubahan nilai
Bagian perubahan nilai berisi serangkaian perubahan nilai berdasarkan waktu untuk sinyal dalam model simulasi tertentu. Waktu saat ini ditunjukkan dengan ‘#’ diikuti dengan stempel waktu. Untuk sinyal skalar (bit tunggal) formatnya adalah nilai sinyal yang dilambangkan dengan 0 atau 1 diikuti segera oleh pengenal sinyal tanpa spasi antara nilai dan pengenal sinyal. Untuk sinyal vektor (multi-bit), formatnya adalah nilai sinyal yang dilambangkan dengan huruf ‘b’ atau ‘B’ diikuti dengan nilai dalam format biner diikuti dengan spasi dan kemudian pengidentifikasi sinyal. Nilai untuk variabel riil dilambangkan dengan huruf ‘r’ atau ‘R’ diikuti dengan data menggunakan format %.16g printf() diikuti dengan spasi dan kemudian pengenal variabel.

Contoh file 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

Kode di atas mendefinisikan 7 sinyal dengan menggunakan $var:

$var ketik nama id bitwidth
Id digunakan nanti pada dump perubahan nilai. Dump perubahan nilai dimulai setelah $enddefinitions $end dan didasarkan pada stempel waktu. Stempel waktu dilambangkan sebagai ‘#’ diikuti dengan angka. Pada setiap stempel waktu, daftar sinyal yang mengubah nilainya dicantumkan. Ini dilakukan oleh pasangan nilai/id:

id nilai_baru
Contoh ini akan ditampilkan sebagai

Screenshot of an example VCD file displayed by GTKWave.