전체 글 46

[Verification 05] Python 기준 모델과 RTL 대조 - 정답지를 만들고 틀린 곳을 찾아가는 법

오늘은 Python으로 정답을 만들어서 RTL 결과와 비교하는 방법에 대해서 살펴보겠습니다이전 Driver 와 Monitor 글에서 Scoreboard가 결과가 맞는지 판정한다고 했었는데판정을 하려면 결국 맞는 답이 뭔지를 먼저 알고 있어야합니다덧셈기 같은건 a+b 한줄이면 끝나지만, 영상처리 회로로 가게되면 곱하고 반올림하고 255 넘으면 자르고... 이걸 Testbench 안에서 다시 짜는게 꽤 번거롭습니다그래서 보통 정답 계산은 Python에게 맡기고, Vivado에서 돌린 RTL 결과를 파일로 받아 비교하게됩니다이번 글에서는 이 과정을 처음부터 끝까지 직접 돌려보고, 틀렸을때 어디가 틀렸는지 찾아가는 방법까지 같이 보겠습니다Verilog 문법이 아직 낯설다면 [Verification 00] Ver..

Verification 2026.09.15

[Verification 00] 시작하기 전에 - Verilog 코드를 읽는 법

오늘은 SystemVerilog 검증을 공부하기 전에 Verilog 코드를 읽는 방법에 대해서 정리해보겠습니다검증 글을 시작하면 첫 글부터 8'd3이나 @(posedge clk) 같은 코드가 바로 나오게됩니다솔직히 이런 표기를 처음보면 내용보다 글자에서 먼저 막히게되는데, 그래서 이 글을 맨앞에 두었습니다여기서는 검증 이야기는 하지않고, 뒤에 나오는 코드를 읽을수 있게 만드는게 목적입니다Verilog를 이미 다뤄보셨다면 건너뛰셔도 됩니다1. 숫자 쓰는법Verilog의 숫자는 좀 특이하게 생겼습니다8'd3이 하나를 세 조각으로 나눠서 읽게됩니다맨앞 8은 bit폭으로 이 값이 8bit라는 뜻이고'd는 진법인데 d는 십진수(decimal)를 의미합니다마지막 3이 실제 값입니다즉 8'd3은 8bit 폭의 십진수..

Verification 2026.09.04

[Verification 04] Driver 와 Monitor - 최소 testbench 를 직접 짠다

오늘은 지금까지 봤던 class와 mailbox로 실제로 돌아가는 Testbench를 하나 직접 짜보겠습니다이전 두 글에서 class로 Transaction을 만들고 mailbox로 주고받는 방법까지 봤었는데, 이번에는 그 재료들을 모아서 DUT 하나에 Testbench를 붙여보는겁니다구조를 보는게 목적이지 회로를 보는게 목적이 아니라서 DUT는 아주 간단한걸로 두었습니다8'd3이나 @(posedge clk) 같은 표기가 낯설다면 [Verification 00] Verilog 코드를 읽는 법을 먼저 보고 오시는게 편할거같습니다1. 무엇을 만들것인가먼저 완성된 모습은 이와같습니다부품은 크게 이렇게 구성되어있습니다DUT는 검사받는 회로이고interface는 DUT와 Testbench를 이어주는 신호 묶음입니..

Verification 2026.09.04

[Verification 03] SystemVerilog queue 와 mailbox - 검증 데이터를 담고 주고받는 그릇

오늘은 Testbench에서 Data를 담아두고 주고받을때 쓰는 queue와 mailbox에 대해서 살펴보겠습니다이전 글에서 class로 Transaction 하나를 만드는 방법을 봤었는데, 검증은 Transaction 하나로 끝나지 않습니다여러개를 만들어놓고, 줄세우고, 하나씩 꺼내쓰고, 결과랑 맞춰봐야하는데 이때 필요한 그릇이 queue와 mailbox입니다8'd3이나 @(posedge clk) 같은 표기가 낯설다면 [Verification 00] Verilog 코드를 읽는 법을 먼저 보고 오시는게 편할거같습니다1. 고정 배열Verilog에도 배열은 있습니다bit [31:0] buf [0:99]; // 100칸짜리 배열이 배열은 크기가 100으로 고정되어있고, 컴파일할때 정해지면 실행 중에는 바..

Verification 2026.09.04

[Verification 02] SystemVerilog class 와 OOP - 상속과 다형성이 검증에서 왜 필요한가

오늘은 SystemVerilog Testbench에서 계속 나오는 class와 OOP에 대해서 살펴보겠습니다이전 글에서 SystemVerilog가 검증을 위해 뭘 추가했는지 쭉 봤었는데, 그중 class는 한줄로 넘어가기에는 비중이 너무 큽니다Testbench를 계층으로 나누는것도, Protocol을 하나씩 늘려가는것도 전부 class를 바탕으로 이루어지기 때문입니다class를 처음 보는 분 기준으로, 문법을 나열하기보다는 왜 이게 필요한지부터 하나씩 설명해보겠습니다8'd3이나 @(posedge clk) 같은 표기가 낯설다면 [Verification 00] Verilog 코드를 읽는 법을 먼저 보고 오시는게 편할거같습니다1. module먼저 익숙한 module부터 보겠습니다Verilog에서 회로를 만드는..

Verification 2026.09.04

[Verification 01] SystemVerilog 검증 - Verilog와 무엇이 다른가

오늘은 SystemVerilog가 Verilog와 뭐가 다르고, 왜 검증에 SystemVerilog가 필요한지에 대해서 살펴보겠습니다Verilog로 회로를 만들고 나면 그 다음은 검증인데, 막상 검증을 해보면 Verilog가 검증에는 잘 맞지 않는다는걸 느끼게됩니다SystemVerilog는 Verilog를 버리고 새로 만든 언어가 아니라, Verilog를 그대로 포함하면서 설계쪽에는 안전장치를, 검증쪽에는 없던 기능들을 추가한 확장이라고 보면됩니다이번 글은 Verilog 기초와 하나씩 비교하면서 정리해보겠습니다8'd3이나 @(posedge clk) 같은 표기가 낯설다면 [Verification 00] Verilog 코드를 읽는 법을 먼저 보고 오시는게 편할거같습니다1. Verilog Testbench회로..

Verification 2026.09.04

[디지털회로설계 02] 타이밍 위반 (Setup / Hold / Skew / Jitter) 과 해결법

디지털 회로를 설계할 때 가장 자주 만나는 벽이 타이밍입니다합성은 통과했는데 실제 보드에서 이상하게 동작하는 경우가 대부분 여기서 나옵니다Setup / Hold / Skew / Jitter 를 파형으로 하나씩 보고, 해결법까지 정리하겠습니다마지막에는 제가 실제로 겪은 타이밍 위반 사례를 붙였습니다D Flip-Flop 복습먼저 기준을 맞추고 가겠습니다D Flip-Flop 은 클럭의 rising edge 에서 D 를 잡아 Q 로 내보냅니다D 가 바뀌자마자 Q 가 바뀌는 것이 아닙니다edge 가 온 뒤에 얼마간의 지연을 두고 Q 가 따라옵니다이 지연을 \(t_{pcq}\) 라고 합니다Clock to Q, 즉 클럭이 온 뒤 Q 가 나오기까지의 시간입니다경로와 기호타이밍 이야기는 항상 F/F 두 개 사이를 봅니다..

[ISP 02] Bayer Pattern 과 Demosaic

지난 글에서 YCbCr을 다루면서 Bayer Pattern 이야기를 하고 넘어갔습니다G 비율이 왜 더 높은지, 그리고 Bayer에서 컬러 이미지를 어떻게 만드는지 정리하겠습니다Bayer Pattern센서의 화소는 색을 구분하지 못합니다빛의 세기만 셀 수 있는 소자입니다그래서 화소 위에 R, G, B 중 하나의 컬러 필터를 덮습니다이 필터를 격자로 배열한 것이 Bayer Pattern입니다이와같이 2x2가 한 단위입니다R 하나, G 둘, B 하나가 들어갑니다왼쪽 위부터 R-G-G-B 순서라 RGGB라고 부릅니다여기서 중요한 것은 한 화소가 한 채널의 값만 가진다는 점입니다센서가 내보내는 것은 오른쪽 그림처럼 1채널 평면 한 장입니다RGB 3채널이 아닙니다G가 두 개인 이유R은 하나, B도 하나인데 G만 둘..

ISP 2026.09.02

[ISP 01] Image Signal Processing / RGB / YUV / YCbCr

RGB빛의 3원색인 R,G,B를 바탕으로 이미지를 나타낼 수 있습니다 RGB는 주로 3개의 채널로 이루어져있는데 3채널은 독립적인 영역이라고 생각하면 됩니다 이런식으로 각 채널이 이루어져있고, 해당 채널들값의 관계성으로 하나의 픽셀값을 만들어 내게 됩니다3개의 Channel은 8bit 로 이루어져있어 0-255의 값을 가지며,R G B가 모두 255인경우에는 흰색이 만들어지고, 0인경우이는 검정색이 만들어지게 됩니다 이렇게 되니 3개의 채널 모두 밝기 정보를 보유하고 있게 됩니다. 즉 색의 정보와 밝기를 각채널마다 모두 가지고있는 형태입니다사람의 눈은 밝기에 민감하고, 색에는 둔감한데 RGB는 이런 부분을 활용하지 못합니다 YUV YUV는 Y, U , V로 분할되어 이미지를 표현합니다 이때 Y는 (L..

ISP 2026.04.29

[디지털회로설계 01] D Flip Flop 과 SR Latch

오늘 포스팅할 내용은 D Flip Flop입니다! 해당 Flip Flop은 전자과에서 항상 자주등장하고 기초적인 내용인데 제 기억상 논리회로설계/디지털회로설계/디지털집적회로설계에서 모두 등장하는 내용입니다!따라서 디지털 레벨과 트렌지스터 레벨로 나누어서 설명하도록 하겠습니다 오늘 설명은 디지털 레벨에서 설명하도록하겠습니다! D Flip Flop이란 ? 정말 학교다니면서 수도없이 봐온 Symbol에 해당하는데 D Flip Flop은 1비트의 데이터를 저장하는 가장 기본적인 순차 회로(Sequential Circuit/현재 입력 뿐만 아니라 과거의 상태에도 출력이 의존하는 회로, 조합회로(Combinational Circuit)와 반대) 소자입니다 이렇게 D Flip Flop을 여러개 붙여서 3-stage..