hw001 · UART TX VERIF

UART TX 검증 심화 커리큘럼

m1_uart_tx에서 완성한 UVM 구조를 고정하고, 자극과 체킹의 깊이를 단계별로 확장합니다. 랜덤 재현성에서 시작해 constraint, corner 시나리오, SVA와 functional coverage로 나아갑니다.

m01 seed·개수 파라미터화m02 rand·constraintm03 corner sequencem04 전송 중 리셋m05 프로토콜 SVAm06 functional coveragem07 자극 버그 추적m08 multi-seed 회귀
m1

m1_uart_tx 커리큘럼

순수 SystemVerilog 테스트벤치에서 실제 UVM까지 구조를 단계적으로 전환한 이전 모듈입니다.

m01 직접 구동부터 m15 minimal UVM까지 이 모듈(m2)의 UVM 구조 출발점 UART TX 동작 데모 포함
m1 목차 열기 →
m01

m01_seed_param

seed와 자극 byte 수를 plusarg로 받아 랜덤 재현성을 확보하고, 실행 스크립트를 불변식 검사로 전환합니다.

+SEED, +NUM_BYTES plusarg와 config echo srandom(seed) 기반 랜덤 재현성 고정 건수 검사 대신 경로 불변식
단계 흐름 보기 →
m02

m02_rand_constraint

sequence item에 rand 필드와 constraint를 도입해 자극 값 생성을 test 코드에서 constraint로 옮깁니다.

rand data·idle_gap과 dist 가중치 random case의 item.randomize() driver의 gap 대기와 시간축 변화
단계 흐름 보기 →
m03

m03_corner

back-to-back 전송과 busy 중 valid 주입으로 핸드셰이크 규약을 확정합니다.

idle_gap=0 강제와 즉시 재요청 전송 중 valid 주입과 무시 검증 RTL 헤더 핸드셰이크 규약 절 확정
단계 흐름 보기 →
m04

m04_mid_reset

프레임 중간에 리셋을 주입해 잘린 byte의 유실과 이후 복구 경로를 검증합니다.

test의 vif 기반 리셋 주입 monitor abort와 재동기화 scoreboard on_reset 목표 조정
단계 흐름 보기 →
m05

m05_sva

interface가 프레임 타이밍 속성 4개를 SVA로 상시 감시해 scoreboard와 상보적인 감시망을 만듭니다.

start/stop bit 폭과 ready 타이밍 disable iff 기반 리셋 무효화 monitor framing 검사 error 승격
단계 흐름 보기 →
m06

m06_coverage

driver가 실제 구동한 item을 coverage subscriber가 sample해 자극의 도달 범위를 계량합니다.

data·gap·busy coverpoint와 cross 스크립트의 -CovMin 목표 검사 자극 확대로 도는 closure 루프
단계 흐름 보기 →
m07

m07_stim_debug

coverage가 남긴 71.4% 단서를 추적해 m02부터 잠복한 자극 버그를 수정하고 재발 검사를 상설화합니다.

단서 추적: 55/aa bins 0 hit randomize 의미론과 scoreboard의 침묵 smoke 검사와 -DataCovMin 하한 상설화
단계 흐름 보기 →
m08

m08_multi_seed

같은 검증을 여러 seed로 반복 실행해 한 seed의 운으로 통과하는 자극 구멍을 줄입니다.

seed 목록 반복과 결과 집계 seed별 로그 보존과 실패 처리 실패 seed의 한 줄 재현
단계 흐름 보기 →