VHDL(.vhd)과 EDIF(.edif) 파일이란 무엇인가요?

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

VHDL(.vhd)과 EDIF(.edif) 파일이란 무엇인가요?
Photo by Logan Voss / Unsplash

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에서 여전히 사용됩니다.

글 참여 도구

공유하기 토론 참여
이 글이 어떤 도움을 줬나요? 공개 숫자 없이 품질 개선 신호로만 사용합니다.

비공개 제보

오류나 추가 설명이 필요한가요?

공개 토론 대신 편집자에게 직접 보낼 수정·질문·다음 글 요청을 남겨주세요.

VLSI Korea

비공개 제보 보내기

작성한 내용은 [email protected]로 전달됩니다.

어떻게 받을까요?

익명 모드는 이름과 이메일을 보내지 않습니다. 다만 전송 서비스가 IP 등 기술 정보를 처리할 수 있어 절대적인 익명성을 보장하지는 않습니다.

ENGINEER DISCUSSION

현장에서는 어떻게 보고 계신가요?

동의, 반론, 보완 자료와 현업 경험을 남겨주세요. 답글 알림이 다시 토론으로 연결됩니다.

VLSI KOREA BRIEFING

매일, 중요한 신호만.

반도체 설계와 산업의 변화를 현직 엔지니어 관점에서 정리합니다. 무료이며 페이월이 없습니다.

FOR BUSINESS

이런 기술 콘텐츠가 필요하신가요?

기업용 기술 콘텐츠, 스폰서드 딥다이브, 사내 브리핑을 명확한 범위와 가격으로 진행합니다.

협업 방식·가격 보기 →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
MY VLSI

내 읽기 보관함

저장한 글과 읽던 글을 한곳에서 이어보세요.