인터페이스를 고정하고 내부 구현과 분리해 독립 재사용이 되게 하는 결
UVM 실습에서 모니터를 프로토콜에 강하게 결합해 작성했더니 프로토콜 버전이 바뀌자 모니터 전체를 다시 써야 했습니다. 재사용이 목표였는데 결합도가 높아 실제로는 재사용이 안 된 경험이었습니다. 그 이후로는 컴포넌트 설계 전에 외부 인터페이스를 먼저 고정합니다. 내부 구현이 바뀌어도 인터페이스가 유지되면 상위 환경은 수정할 필요가 없습니다.
파라미터화된 컴포넌트로 데이터 폭이나 주소 크기를 외부에서 주입하면 하나의 구현으로 여러 설정을 커버합니다. 이 방식으로 작성한 scoreboard를 세 개 프로젝트에서 수정 없이 재사용했을 때 설계가 제대로 됐다는 걸 확인했습니다. 지금도 UVM 컴포넌트는 인터페이스 설계가 먼저입니다.