m01 seed·개수 파라미터화→m02 rand·constraint→m03 corner sequence→m04 전송 중 리셋→m05 프로토콜 SVA→m06 functional coverage→m07 자극 버그 추적→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의 한 줄 재현
단계 흐름 보기 →