VCD(.vcd), SAIF(.saif), FSDB(.fsdb) 파일이란?

VCD(.vcd), SAIF(.saif), FSDB(.fsdb) 파일이란?
Photo by Mathew Schwartz / Unsplash

VCD, SAIF, FSDB는 simulation에서 신호의 switching 정보를 기록하는 파일입니다. Power analysis에서 switching activity를 제공하고, waveform debugging에도 사용됩니다.

주로 Power analysis에 많이 사용됩니다. Switching 정보가 있어야 Dynamic Power를 정확히 예측 할 수 있으니까요. 최근에는 Synthesis, P&R Tool에도 Power Aware Design을 위해 이 파일들이 쓰이기도 합니다.

an image of an apple logo on a circuit board
Photo by BoliviaInteligente on Unsplash

VCD(.vcd) 파일 예제

$date
    Mon Mar 23 10:00:00 2026
$end
$version
    VCS 2024.06
$end
$timescale
    1ns
$end

$scope module top $end
    $var wire 1 ! clk $end
    $var wire 1 " rst_n $end
    $var wire 8 # data_in [7:0] $end
    $var reg  8 $ data_out [7:0] $end
    $var reg  1 % valid $end
$scope module alu_inst $end
    $var wire 8 & op_a [7:0] $end
    $var wire 8 ' op_b [7:0] $end
    $var reg  8 ( result [7:0] $end
$upscope $end
$upscope $end
$enddefinitions $end

#0
0!
0"
b00000000 #
b00000000 $
0%

#5
1!

#10
0!
1"

#15
1!
b10110011 #

#20
0!
b10110011 $
1%
b10110011 &
b00001111 '

#25
1!

#30
0!
b11000010 (

VCD 문법 설명

Header에서 $timescale은 시간 단위를, $scope/$upscope는 module 계층을, $var는 signal 정의를 담습니다. 각 signal에는 단일 문자 ID(!, ", # 등)가 할당됩니다.

Value change에서 #20은 시간 20ns를 의미합니다. 0!은 signal !(clk)이 0으로 변경, b10110011 #은 signal #(data_in)이 binary 10110011으로 변경됨을 뜻합니다. 변경이 없는 signal은 기록하지 않아 파일 크기를 줄입니다.

SAIF(.saif) 파일 예제

(SAIF
    (SAIFILE)
    (DIRECTION "backward")
    (DESIGN )
    (DATE "Mon Mar 23 2026")
    (VENDOR "Synopsys")
    (PROGRAM_NAME "VCS")
    (VERSION "2024.06")
    (DIVIDER / )
    (DURATION 100000)      // simulation duration: 100us (in timescale units)
    (TIMESCALE 1 ns)
    
    (INSTANCE top
        (INSTANCE alu_inst
            (NET
                (op_a\[0\]
                    (T0 55000)     // time at logic 0: 55ns
                    (T1 45000)     // time at logic 1: 45ns
                    (TX 0)         // time at unknown
                    (TZ 0)         // time at high-Z
                    (TC 12500)     // toggle count
                    (IG 0)         // ignored
                )
                (op_a\[1\]
                    (T0 62000)
                    (T1 38000)
                    (TX 0)
                    (TZ 0)
                    (TC 9800)
                )
                (result\[0\]
                    (T0 51000)
                    (T1 49000)
                    (TX 0)
                    (TZ 0)
                    (TC 11200)
                )
            )
        )
    )
)

SAIF 문법 설명

SAIF는 VCD를 요약한 format입니다. 각 net에 대해 T0(logic 0에 머문 시간), T1(logic 1에 머문 시간), TC(toggle count)를 기록합니다. DURATION은 전체 simulation 시간입니다.

Toggle rate = TC / DURATION으로 계산됩니다. 예를 들어, op_a[0]의 toggle rate = 12500 / 100000 = 0.125입니다. Static probability = T1 / (T0 + T1) = 45000 / 100000 = 0.45입니다.

SAIF는 VCD보다 파일 크기가 훨씬 작아서, 대규모 design의 power analysis에 적합합니다. VCD는 매 시점의 값 변화를 모두 기록하지만, SAIF는 통계 요약만 담습니다.

FSDB(.fsdb)란?

FSDB(Fast Signal Database)는 Synopsys의 바이너리 waveform format입니다. VCD와 같은 정보를 담지만, 바이너리 압축으로 파일 크기가 작고 접근 속도가 빠릅니다. (SAIF 보다는 큼) Verdi waveform viewer의 기본 format이며, VCS simulation에서 직접 생성할 수 있습니다.

// VCS에서 FSDB 생성
// testbench에 다음 코드 추가
initial begin
    $fsdbDumpfile("top_design.fsdb");
    $fsdbDumpvars(0, top);      // 0 = all levels
    $fsdbDumpSVA;                // assertion도 기록
end

Power Analysis에서의 사용

# PrimeTime PX에서 power analysis
read_vcd top_design.vcd -strip_path tb/top_inst

# 또는 SAIF 사용
read_saif top_design.saif -strip_path tb/top_inst

report_power -hierarchy

VCD/SAIF의 switching 정보와 Liberty의 power table을 결합하여 power를 계산합니다. VCD 기반이 더 정확하고, SAIF 기반이 더 빠릅니다.

정리

VCD는 시점별 값 변화를 기록하는 텍스트 format, SAIF는 toggle count와 static probability를 요약한 format, FSDB는 Synopsys의 바이너리 waveform format입니다. Power analysis에서 switching activity 입력으로 사용되며, VCD/SAIF의 정확도가 power 분석 결과를 결정합니다.

Enjoyed this article?

Get deep-dive semiconductor analysis and career insights delivered weekly. Free forever — no paywall, no upsell. Funded by sponsorships with a strict editorial firewall (Editorial Standards).

Work with me

Consulting · Collaboration · Support

Paid 1:1 technical consulting, speaker invitations, collaboration proposals, or just want to say thanks — all welcome.

View options →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
Support