이전
UVM000 - 바닥부터 시작하는 UVM 전환
문득 그런 생각이 들었다..생각보다 내가 알고 있는 게 좀 있으면,공개 가능한 범위에서는 기록으로 적어두는 것도 의미가 있겠다 싶은 거지..이제 블로그란 사람이 들어가서 보는 경우가 거의
hdnua.tistory.com
.
.
AI 의 발전이 놀랍다.
공부를 하기가 무지하게 쉽기 때문이다.
.
.
이번에 UVM 을 설명하는 타겟으로는 UART 를 잡았다.
UVM 을 체험하기 위한 가장 쉬운 블록을 제안해달라고 했더니, UART 를 제안받았기 때문이다.
UART 란 Universal asynchronous receiver/transmitter 를 말하는 거라고 한다.
UART(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다.
----
https://ko.wikipedia.org/wiki/UART
.
.
이것을 처음에 이해하기 위해 HTML 로 애니메이션 표현을 해달라고 했었다.
Gemini 를 썼었는데, 기깔나게 해냈더라.
이번에 ChatGPT-Codex-5.6-Sol-Ultra 사용해서 좀 다듬었다. GitHub Pages 도 처음 써보는구만.
https://hdnua.github.io/hw001_uvm_study/260329_uart/m1_uart_tx/uart_tx_demo.html
.
그러니까 이건 별로 어려운 게 아니고 그냥 비트 단위로 서로 다른 통신 장치에 직렬 통신 하고 싶다 이런 것이다.
전체 코드는 여기 있다.
https://github.com/HDNua/hw001_uvm_study/blob/main/260329_uart/m1_uart_tx/m00_rtl/UART_Tx.sv
.
.
보면 RTL 도 쉽다.
서로 약속해놓은 클럭이 있고 그 구간안에서 비트를 쭉 쏘고, 그걸 받는 쪽도 약속된 클럭으로 돌면서 샘플링 해서 받는다.
그러다보니 클럭 스피드가 당연히 느려지고. 동기를 맞춰야 되니까. 최고 스피드로는 안정성이 너무 떨어지겠지.
.
.
이걸 검증하는 pure 한 testbench 를 구성해볼 수 있다.
https://github.com/HDNua/hw001_uvm_study/blob/main/260329_uart/m1_uart_tx/m01_pure/tb/tb_top_v1.sv
.
.
waveform

.
.
이 TB 에 대한 설명은 코드에도 잘 적혀있긴 한데.
역시 그래도 사람 말로 이해를 하는 과정이 필요하기는 하다.
우선 공부했던 것을 차례대로 전부 업로드한 다음에, 자연어 설명을 적자.
.
.
참고로 simulation 은 Vivado 를 사용했다.
https://jyyoon422.tistory.com/51
.
.
.
작성중
'HW' 카테고리의 다른 글
| UVM004 - UART_Tx, scoreboard (0) | 2026.07.19 |
|---|---|
| UVM003 - UART_Tx, fork (0) | 2026.07.19 |
| UVM002 - UART_Tx, task (0) | 2026.07.19 |
| UVM000 - 바닥부터 시작하는 UVM 전환 (0) | 2026.07.18 |
| HW 공부 (0) | 2026.07.18 |

