728x90

이전

https://hdnua.tistory.com/262

 

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