학부 SystemVerilog 검증 수업, constrained-random + SVA 실습
학부 SystemVerilog 검증 수업에서 constrained-random 방식으로 자동 자극을 생성하는 실습을 했습니다. 순수 랜덤 테스트는 경계 조건에 도달하는 데 너무 오래 걸린다는 걸 경험하고, 제약을 추가해 특정 조건에 편중된 자극을 만드는 방식을 썼습니다.
SVA(SystemVerilog Assertions) 속성 검사를 추가하면 예상치 못한 신호 동작을 자동으로 감지할 수 있었습니다. 직접 시나리오를 쓰는 것과 SVA가 잡는 것은 서로 다른 빈틈을 커버한다는 걸 배웠습니다. 커버리지 리포트를 보면서 어떤 시나리오가 아직 실행되지 않았는지를 추적하고, 추가 제약을 조정하는 반복 과정이 커버리지를 높이는 방법이었습니다. 이후 저는 검증 계획을 짤 때 커버 목표 → 제약 설계 → SVA 보강 순서로 접근하는 습관이 생겼습니다.
커버리지는 테스트 수가 아니라 빈틈 없는 설계로 결정된다는 걸 그때 배웠습니다.