Skip to Main Content
백서

복잡한 기능성 검증 커버리지 해결: 사용 모델을 간소화하는 방법에 대한 고급 가이드

An advanced guide to simplify use models

option.per_instance=1을 포함한 커버그룹
커버그룹은 검증에 매우 유용한 구성요소이지만, 제대로 설정하기가 어려울 수 있습니다. 이 글에서는 몇 가지 지침을 통해 명확한 기능성 검증 커버리지 모델을 작성하는 방법을 간략하게 안내합니다. 서로 병합할 수 없는 커버그룹, 불필요한 성능 오버헤드 또는 제한된 디버깅 가시성과 같은 잠재적인 위험을 피할 수 있는 방법을 보여드립니다.

커버그룹 옵션의 이해

SystemVerilog는 기능성 검증 커버리지라는 개념을 가장 먼저 포함시킨 언어도 아니고, 완전히 이해하기 어려운 언어로서 이 분야에 처음 등장한 것도 아닙니다. 시뮬레이션에서 관찰할 수 있는 결과에 큰 영향을 줄 수 있는 이 언어는 많은 복잡성을 가지고 있습니다. 단순한 커버그룹(covergroup)을 정의하는 작업은 비교적 쉽지만, 같은 커버그룹의 인스턴스 여러 개를 병합하려 하는 개념을 도입하려는 경우 구현 방식에 따라 굉장히 다른 결과를 얻을 수 있습니다.

커버그룹이 포함된 설계의 여러 인스턴스를 병합하려고 하면 이러한 커버그룹을 이해하기가 한층 더 어려워집니다. 커버그룹을 아예 서로 병합하지 못할 수 있는데, 그러면 커버리지 목표를 달성하는 데 있어 정확한 상황을 파악하기가 불가능해집니다.

불필요한 성능 오버헤드가 생기거나, 커버그룹을 올바로 만들지 못하면 커버그룹 자체 내에서 디버깅을 위한 가시성이 제한될 수도 있습니다. 이런 종류의 의사 결정은 종종 프로젝트 초반에 이루어지고, 경우에 따라서는 테스트벤치 환경에 광범위한 변경을 적용하는 것 외에 문제를 해결할 다른 해결책이 없을 수도 있습니다. 커버그룹이 만들어지는 방식을 제대로 이해해야 이러한 문제를 미리 방지할 수 있습니다.

이 글에서는 몇 가지 지침을 통해 명확한 커버리지 모델을 작성하는 방법을 간략하게 안내합니다. 해야 할 일, 하지 말아야 할 일, 그리고 작업 방법에 대해 알아보겠습니다.

공유