728x90
이전
UVM010 - UART_Tx, uvc_block
이전https://hdnua.tistory.com/261 UVM009 - UART_Tx, if_seqitem_sequencer이전https://hdnua.tistory.com/260 UVM008 - UART_Tx, role_split이전https://hdnua.tistory.com/259 UVM007 - UART_Tx, expected_path이전https://hdnua.tistory.com/258 UVM006 - UART_T
hdnua.tistory.com
.
.
이번의 목표
// =============================================================================
// 11_mailbox_channel : mailbox 기반 transaction handoff 도입
//
// 10_uvc_block 대비 변경:
// - queue[$] + event 로 직접 만들던 handoff를 mailbox put/get으로 교체
// - sequence -> driver 경로는 uart_tx_drv_mbx 사용
// - monitor -> scoreboard actual 경로는 uart_tx_mon_mbx 사용
// - test/sequence -> scoreboard expected 경로는 uart_tx_exp_mbx 사용
// - 전달 단위는 byte 값이 아니라 uart_tx_transfer object
//
// 핵심:
// - mailbox.get()은 비어 있으면 자동으로 기다리는 blocking handoff다.
// - 그래서 "queue가 비었는지 확인하고 event를 기다리는 코드"를 직접 만들 필요가 없다.
// - producer/consumer 사이 transaction 전달을 SystemVerilog 표준 채널로 표현한다.
//
// 한계:
// - driver / monitor / scoreboard / agent / env / test 는 아직 task 기반이다.
// - virtual interface를 class에 넘기는 구조는 아직 아니다.
// - 다음 단계에서는 이 mailbox channel을 유지한 채 class 기반 UVC로 올린다.
// =============================================================================
.
.
Testbench
.
.
Waveform

.
.
이전과의 비교

.
.
.
.
.
.
.
728x90
'HW' 카테고리의 다른 글
| UVM013 - UART_Tx, sv_seq_item_port (0) | 2026.07.19 |
|---|---|
| UVM012 - UART_Tx, sv_class_uvc (0) | 2026.07.19 |
| UVM010 - UART_Tx, uvc_block (0) | 2026.07.19 |
| UVM009 - UART_Tx, if_seqitem_sequencer (0) | 2026.07.19 |
| UVM008 - UART_Tx, role_split (0) | 2026.07.19 |

