Using GTKWave to analyze waveforms

Consider following VHDL snippet:

library ieee;
use ieee.std_logic_1164.all;

entity full_adder_testbench is
end full_adder_testbench;

architecture behavior of full_adder_testbench is
    component full_adder is
        port (
            a  : in  std_logic;
            b  : in  std_logic;
            ci : in  std_logic;
            s  : out std_logic;
            co : out std_logic);
    end component;
    signal input  : std_logic_vector(2 downto 0);
    signal output : std_logic_vector(1 downto 0);
begin
    uut: full_adder port map (
        a => input(0),
        b => input(1),
        ci => input(2),
        s => output(0),
        co => output(1)
    );

    stim_proc: process
    begin
        input <= "000"; wait for 10 ns; assert output = "00" report "0+0+0 failed";
        input <= "001"; wait for 10 ns; assert output = "01" report "0+0+1 failed";
        input <= "010"; wait for 10 ns; assert output = "01" report "0+1+0 failed";
        input <= "100"; wait for 10 ns; assert output = "01" report "1+0+0 failed";
        input <= "011"; wait for 10 ns; assert output = "10" report "0+1+1 failed";
        input <= "110"; wait for 10 ns; assert output = "10" report "1+1+0 failed";
        input <= "111"; wait for 10 ns; assert output = "11" report "1+1+1 failed";
        report "Full adder testbench finished";
        wait;
    end process;
end;

Executing roughly following will generate full_adder_testbench.vcd which will contain the waveform data:

ghdl -a full_adder.vhd
ghdl -a full_adder_testbench.vhd
ghdl -e full_adder_testbench
./full_adder_testbench --vcd=full_adder_testbench.vcd

Launch GTKWave with the filename as argument:

gtkwave full_adder_testbench.vcd

On the left hand select signals while holding Shift/Ctrl and hit Append on the bottom. Use Shift-Ctrl-R to reload the VCD file without reconfiguring GTKWave signal selection:

arithmetic/img/full-adder-testbench-waveforms.png

Full adder testbench waveforms in GTKWave

VHDL GTKWave KTH