UVM001 - UART_Tx, RTL & pure TB

HW 2026. 7. 18. 22:00
728x90

 

이전

https://hdnua.tistory.com/252

 

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

.

.

.

작성중

728x90

'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
Posted by 누아니
,