概要
VCD(Value change dump)ファイルのフォーマットについて
リバエベースで確認できた内容についてまとめる。
本記事の内容だけで、GTKWaveで波形を確認することができるvcdを作成できる。
vcd ファイルは宣言部とデータ部に大きく分けることができる。
vcd ファイルは ASCII なので手書きできる。
宣言部
wire, module, reg を記すことが出来る。
wire, reg は宣言が同じ形式
wire, reg の宣言
$var reg 1 hoge piyo $end
$var
:変数宣言表記
reg
:値がレジスタであることを意味する。ワイヤの場合はwire
1
:ビット数。4bitなら4
hoge
:識別子。本当になんでもいい。 1
でも変数名と同名でも
piyo
:変数名 reg の名前
$end
:終了表記
上記の宣言で verilog の
reg giyo;
と同じ意味となる。
module の宣言
$scope module hoge $end
wire, reg の宣言
$upscope $end
hoge
:モジュールインスタンス名
構造の問題なので以降のデータ部には影響しない
データ部
表記は3種類
- タイムスタンプ
- 1bit 信号
- 多bit 信号
各行間に空行を入れても問題ない(GTKWaveでは)
1. タイムスタンプ
#3
絶対時間のタイムスタンプ
verilog シミュレーションの#
表記とは意味が若干異なる
2. 1bit 信号
1hoge
or
0hoge
1
:1に変化することを意味する
hoge
:変数識別子。宣言部で宣言した識別子
空白の挿入は 許されない
3. 多bit 信号
b1010 hoge
b
:2進表記識別子。省略不可。h
不可
1010
: A
に変化することを意味する。上位bitの0は省略可
hoge
:変数識別子。宣言部で宣言した識別子
空白の挿入は 絶対
簡単な自作 vcd と波形
$var wire 1 hoge a $end
$var reg 4 123 c $end
#0
b1 123
0hoge
$end
#3
1hoge
#5
0hoge
#6
b1010 123
#10