VHDL과 EDIF는 Verilog만큼 자주 접하지는 않지만, 특정 분야와 legacy design에서 여전히 사용되는 중요한 format입니다. VHDL은 항공/군사 분야에서 선호되며, EDIF는 tool 간 netlist 교환에 사용됩니다.

VHDL(.vhd)의 기본 구조
VHDL은 Ada 언어에서 파생된 강타입(strongly typed) HDL입니다. Entity(인터페이스)와 Architecture(구현)로 구성됩니다.
-- simple_adder.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity simple_adder is
port (
a : in std_logic_vector(7 downto 0);
b : in std_logic_vector(7 downto 0);
cin : in std_logic;
sum : out std_logic_vector(7 downto 0);
cout : out std_logic
);
end entity simple_adder;
architecture rtl of simple_adder is
signal result : unsigned(8 downto 0);
begin
result <= resize(unsigned(a), 9)
+ resize(unsigned(b), 9)
+ ("" & cin);
sum <= std_logic_vector(result(7 downto 0));
cout <= result(8);
end architecture rtl;
Verilog와 같은 8-bit adder이지만, 문법이 다릅니다. VHDL의 특징은 다음과 같습니다. Library와 use 선언으로 패키지를 명시적으로 import합니다. Entity가 port를 선언하고, architecture가 동작을 기술합니다. 타입이 엄격하여 std_logic_vector와 unsigned 간 변환을 명시해야 합니다. 이 엄격함이 설계 오류를 조기에 발견하는 데 도움이 됩니다.
VHDL의 Sequential Logic 기술
architecture rtl of counter is
signal count_reg : unsigned(7 downto 0);
begin
process(clk, rst_n)
begin
if rst_n = '0' then
count_reg <= (others => '0');
elsif rising_edge(clk) then
if en = '1' then
count_reg <= count_reg + 1;
end if;
end if;
end process;
count <= std_logic_vector(count_reg);
end architecture rtl;
VHDL의 process는 Verilog의 always에 해당합니다. Sensitivity list에 clk과 rst_n을 포함하며, rising_edge()로 clock edge를 감지합니다.
EDIF(.edif)의 구조
EDIF(Electronic Design Interchange Format)는 EDA tool 간 netlist를 교환하기 위한 표준 format입니다. LISP 스타일의 괄호 기반 문법을 사용합니다.
(edif simple_design
(edifVersion 2 0 0)
(edifLevel 0)
(keywordMap (keywordLevel 0))
(library tech_lib
(edifLevel 0)
(technology (numberDefinition))
(cell INV_X1
(cellType GENERIC)
(view netlist
(viewType NETLIST)
(interface
(port A (direction INPUT))
(port Y (direction OUTPUT))
)
)
)
)
(design top
(cellRef top (libraryRef work))
)
)
EDIF는 사람이 직접 작성하는 경우는 드물고, tool이 자동 생성합니다. FPGA synthesis tool의 출력이나, 서로 다른 vendor tool 간 netlist 전달에 사용됩니다. 현재는 Verilog netlist가 주로 사용되어 EDIF의 사용 빈도가 줄었지만, 일부 legacy flow에서는 여전히 필요합니다.
Verilog vs VHDL 비교
문법 면에서 Verilog는 C 스타일로 간결하고, VHDL은 Ada 스타일로 장황하지만 명시적입니다. 타입 시스템에서 Verilog는 약타입이고, VHDL은 강타입입니다. 사용 지역에서 Verilog는 대부분 분야에서, VHDL은 군수에서 주로 사용됩니다. Synthesis 결과는 동일한 품질을 기대할 수 있으며, 모든 주요 EDA tool이 두 언어를 모두 지원합니다.
정리
VHDL은 강타입 HDL로 설계 오류를 조기에 잡아주며, 항공/군수 분야에서 선호됩니다. EDIF는 tool 간 netlist 교환 format으로, 현재는 Verilog netlist에 대부분 대체되었지만 legacy flow에서 여전히 사용됩니다.