전체 글(97)
-
콜백 함수란? 일반 함수랑 뭐가 다른지 쉽게 정리 | 제어 역전, 비동기, UVM Callback
콜백 함수(Callback Function)란콜백 함수는 "내가 직접 호출하지 않고, 함수의 주소(또는 참조)를 다른 코드에 넘겨두면 그쪽이 특정 시점에 대신 호출해 주는 함수"다. 함수 자체가 특별한 문법을 가진 게 아니라 "누가, 언제 호출하느냐"에 붙은 이름이다.이름 그대로 "나중에 다시 불러줘(call back)"라는 의미다. 호출자는 어떤 일이 끝났을 때, 혹은 어떤 이벤트가 발생했을 때 무엇을 할지를 직접 코딩하지 않고, 그 동작을 외부에서 주입받은 함수에 맡긴다.일반 함수 호출과 콜백의 차이핵심은 호출 주도권이다. 일반 함수는 내가 필요한 시점에 내가 직접 호출한다. 콜백은 함수를 등록만 해 두고, 호출 시점은 상대방이 결정한다.// 일반 함수 호출 : 내가 직접, 내가 원하는 때에 호출in..
2026.10.08 -
엣지 신호 vs 레벨 신호, 차이 한 번에 이해하기 | 인터럽트, CDC, wait와 @ 차이까지
엣지 신호와 레벨 신호란디지털 신호는 0과 1 두 값만 갖지만, 그 값을 "어떻게 읽느냐"에 따라 의미가 완전히 달라진다. 값 자체를 보는 방식이 레벨(Level), 값이 바뀌는 순간을 보는 방식이 엣지(Edge)다.레벨 신호 - 신호가 High 또는 Low로 "유지되고 있는 상태"에 의미가 있다. 얼마나 오래 유지되는지가 중요하다.엣지 신호 - 신호가 0에서 1로(Rising), 1에서 0으로(Falling) "바뀌는 순간"에 의미가 있다. 유지 시간은 의미가 없고 변화 시점만 중요하다.// 파형 비교//// ____ ____// sig ___| |______| |___// ^ ^ ^ ^// rise fall r..
2026.10.08 -
[vim/gvim] vimrc·gvimrc 설정 완전 정리 3편 | 추천 설정, 폰트, 한글 깨짐, SystemVerilog 하이라이트
vim/gvim을 설치하고 바로 쓰면 줄 번호도 없고, 한글은 깨지고, 탭 간격도 제각각이다. 이 글은 .vimrc / .gvimrc 설정 파일 위치부터 추천 설정, gvim 폰트/창 크기, 한글 깨짐 해결, SystemVerilog 하이라이트, 로그 파일 에러 강조까지 복사해서 바로 쓸 수 있는 형태로 정리했다. 반도체 설계/검증 엔지니어가 서버(Linux)에서 gvim으로 RTL, 테스트벤치, 시뮬레이션 로그를 보는 환경을 기준으로 한다.vim/gvim 시리즈- 1편: [vim/gvim] 명령어 완전 정리 1편 | 모드, 커서 이동, 입력, 복사·붙여넣기, 삭제- 2편: [vim/gvim] 단축키 완전 정리 2편 | 검색·치환·주석·숫자증감·창 분할·매크로·vimdiff- 3편: vimrc·gvimr..
2026.09.30 -
[PCIe] Gen6 FLIT 구조 완전 정리 | 256B 슬롯 구성, DLP/TLP 배치, OHC, CRC/FEC 상세
이 글에서 다루는 범위Gen6 완전 정리 글에서 FLIT 구조를 256바이트 = TLP 236B + DLP 6B + CRC 8B + FEC 6B로 요약했었다. 이번 글은 그 안을 더 파고든다. DLP 6바이트 안에 실제로 뭐가 들어가는지, TLP Header가 어떻게 확장되는지, FLIT 하나에 TLP를 몇 개까지 담을 수 있는지, CRC/FEC가 정확히 어떤 방식으로 동작하는지까지 다룬다.Non-FLIT와 FLIT의 프레이밍 방식 차이Gen5 이하(Non-FLIT)는 패킷마다 경계를 알려주는 프레이밍 토큰이 필요했다. TLP는 STP(Start TLP) 토큰, DLLP는 SDP(Start DLLP) 토큰으로 시작을 표시하고, 각 패킷은 자체 LCRC(TLP)나 CRC(DLLP)를 따로 들고 다녔다.//..
2026.09.30 -
[AMBA/AXI] AXI3 vs AXI4 vs AXI5 변천사 | Burst, QoS, Atomic, Poison, MPAM 차이 정리
AXI 버전 변천사 개요AXI는 AMBA 스펙 버전이 올라갈 때마다 같이 개정됐다. 기존 글들이 AXI 채널 구조, Burst, Handshake 등 기본 동작을 다뤘다면, 이번 글은 AXI3 -> AXI4 -> AXI5로 넘어가며 무엇이 왜 바뀌었는지 버전 차이에만 집중한다.버전소속 AMBA발표 시기핵심 변화AXI3AMBA 32003년AXI 최초 버전AXI4AMBA 42010년단순화 + QoS + Burst 확장AXI5AMBA 52017년Atomic, Poison, MPAM 등 시스템 레벨 확장AXI3 -> AXI4 - 단순화와 QoS 도입AXI4에서는 실사용 빈도가 낮거나 인터커넥트 설계를 복잡하게 만들던 기능들을 정리하고, 실질적으로 필요한 기능(QoS, 긴 Burst)을 추가했다.// AXI3 -..
2026.09.15 -
[PCIe] Gen6 L0p 완전 정리 | Partial Width 저전력 State, L0s/L1과 차이
L0p 개요PCIe Gen6부터 새로 도입된 저전력 State다. 이름 그대로 L0의 파생 State이며, 기존 L0s/L1처럼 링크를 완전히 유휴 상태로 내리지 않고도 전력을 줄인다는 점이 핵심이다. FLIT Mode에서만 동작하며, Non-FLIT(Gen5 이하) 링크에는 존재하지 않는다.기존 저전력 State의 한계 - L0s/L1은 링크 전체가 Electrical Idle로 빠졌다가 재훈련(Recovery 경유)을 거쳐야 복귀한다. 트래픽이 간헐적으로 계속 있는 상황에서는 진입/복귀 오버헤드 때문에 오히려 실효 이득이 적다. L0p는 이 문제를 링크를 떠나지 않고 해결한다.L0p vs L0s vs L1구분L0sL1L0p링크 상태L0 이탈L0 이탈L0 유지적용 단위링크 전체링크 전체Lane 단위(일..
2026.09.15 -
[PCIe] LTSSM 완전 정리 | Link Training 상세 - Polling, Configuration, Recovery, Equalization Phase
LTSSM 개요LTSSM(Link Training and Status State Machine)은 PCIe Physical Layer 안에 있는 하드웨어 상태 머신이다. 전원 인가 순간부터 링크가 L0(정상 동작)에 도달할 때까지, 그리고 이후 저전력 전환/재훈련까지 전부 LTSSM이 관리한다. 소프트웨어 개입 없이 하드웨어만으로 동작하는 게 핵심이다.기초 정리 글에서는 LTSSM을 개략적으로만 다뤘다. 이번 글은 Polling/Configuration/Recovery의 세부 Substate와 TS1/TS2 Ordered Set, Equalization Phase까지 실제 Link Training 과정을 상세히 다룬다.전체 상태 목록LTSSM은 총 11개 최상위 State로 구성된다.State역할Dete..
2026.09.02 -
[PCIe] Gen6 완전 정리 | PAM4, FLIT Mode, LDPC FEC 원리와 차이
PCIe Gen6 개요PCI-SIG는 2022년 1월 PCIe 6.0 스펙을 발표했다. 데이터 레이트는 64 GT/s로 Gen5(32 GT/s) 대비 두 배지만, 대역폭을 두 배로 늘리는 방식 자체가 Gen1~Gen5와 완전히 다르다. Gen5까지는 클럭을 올리고 인코딩 효율만 개선하는 방식이었다면, Gen6부터는 두 가지 근본적인 변화가 들어간다.PAM4 시그널링 - 물리 계층 신호 방식을 NRZ에서 PAM4로 전환.FLIT Mode - 가변 길이 TLP/DLLP 구조를 고정 256바이트 FLIT 구조로 전환.이 두 변화는 세트로 묶여 있다. PAM4가 만드는 에러율 증가를 FLIT 구조 기반 FEC로 상쇄하는 설계이기 때문이다.세대별 비교Gen1부터 Gen6까지 x16 링크 기준 편방향 대역폭이다. ..
2026.09.02