~/logs/systemverilog-inverter-verilator
[2026.06.14]|5분 읽기

SystemVerilog로 인버터 만들기와 Verilator로 검증하기

RTLSystemVerilogVerilator

// SUMMARY

SystemVerilog로 가장 간단한 디지털 회로인 인버터를 작성하고, Verilator를 사용해 RTL 문법과 기본 품질을 검증하는 방법을 알아봅니다.

~/logs/systemverilog-inverter-verilator.mdLAB NOTE

디지털 회로 개발은 소프트웨어 개발과 비슷한 흐름을 가진다.

C 소스
  ↓
컴파일러
  ↓
실행파일

하드웨어에서는 다음과 같다.

SystemVerilog RTL
  ↓
합성(Synthesis)
  ↓
Gate Netlist
  ↓
FPGA Bitstream / ASIC GDSII

즉, SystemVerilog로 작성한 코드는 일반적으로 **RTL(Register Transfer Level)** 이라고 부른다.

##가장 간단한 회로: 인버터

입력 신호를 반전시키는 인버터를 SystemVerilog로 작성하면 다음과 같다.

module inverter (
    input  logic a,
    output logic y
);

    assign y = ~a;

endmodule

소프트웨어로 비유하면 다음과 같은 함수와 비슷하다.

int inverter(int a) {
    return !a;
}

다만 RTL은 소프트웨어가 아니라 실제 회로를 기술한다는 점이 다르다.

##Verilator란?

Verilator는 오픈소스 SystemVerilog 컴파일러이자 시뮬레이터이다.

주요 용도는 다음과 같다.

  • SystemVerilog 문법 검사
  • RTL Lint 검사
  • 시뮬레이션 실행
  • AI가 생성한 RTL 코드 검증

상용 툴인 VCS, Questa, Xcelium과 비슷한 역할을 하지만 무료로 사용할 수 있다.

##문법 검사

가장 많이 사용하는 명령은 다음과 같다.

verilator --lint-only --Wall inverter.sv

오류가 없으면 아무 메시지 없이 종료된다.

문제가 있으면 다음과 같은 에러를 출력한다.

%Error: inverter.sv:5: syntax error

##왜 Verilator를 사용하는가?

AI가 생성한 RTL은 종종 다음과 같은 문제를 포함한다.

  • 문법 오류
  • 포트 연결 오류
  • 신호 폭(width) 불일치
  • 사용하지 않는 신호

따라서 AI가 RTL을 생성하면 가장 먼저 Verilator를 실행하여 기본 품질 검사를 수행하는 것이 일반적이다.

verilator --lint-only --Wall rtl/*.sv

##오픈소스 ASIC 플로우

현재 가장 유명한 오픈소스 디지털 설계 플로우는 다음과 같다.

SystemVerilog
    ↓
Verilator
    ↓
Yosys
    ↓
OpenSTA
    ↓
OpenROAD
    ↓
GDSII

각 단계의 역할은 다음과 같다.

  • Verilator : 문법 및 RTL 검증
  • Yosys : 합성(Synthesis)
  • OpenSTA : 타이밍 분석
  • OpenROAD : 배치배선(P&R)

##마무리

SystemVerilog는 디지털 회로를 기술하는 RTL 언어이며, Verilator는 이를 검증하는 가장 유명한 오픈소스 도구 중 하나이다.

처음 시작한다면 다음 한 줄만 기억해도 충분하다.

verilator --lint-only --Wall inverter.sv

이 명령은 AI가 생성한 RTL이 최소한 올바른 SystemVerilog 코드인지 빠르게 확인할 수 있는 가장 간단한 방법이다.