본문 바로가기
VLSI/Verification

[SVA] 1-1. Introduction

by 리미와감자 2024. 11. 13.
728x90
반응형

[SVA] 1. Introduction

SystemVerilog Assertion의 진화 과정

 

 

 

 

  • 초기 SystemVerilog에는 시간적인(순차적인) 도메인을 검사하기 위한 방법이 제공되지 않았다. 
  • PSL 같은 외부 언어를 SystemVerilog와 연결하여 혼합된 언어 환경을 만들어야 했다. 이는 특정 EDA 벤더와 연결된 두 개의 시뮬레이터를 유지해야 했으므로 불편함이 있었다.
  • 이러한 문제를 해결하기 위해 SystemVerilog 표준 위원회는 언어에 고유한 하위 집합을 추가하여 이를 SystemVerilog Assertions(SVA)라고 명명했다.
  • SVA는 SystemVerilog 언어와는 완전히 독립적이다. 다시 말해서, SVA의 문법은 SystemVerilog 문법과 완전히 다르다. 하지만, SystemVerilog 안의 모든 언어들은 시뮬레이션 시간 틱 안에서 통합적으로 시뮬레이션된다.
  • SVA는 아래와 같이 다양한 언어에서 파생되고 영향을 받았다. 우리는 SVA를 통해 다양한 언어로부터 발전해 온 최신 Assertion을 사용할 수 있게 되었다.
    • Sugar(IBM)/PSL, Vera(Synopsys), e(Cadence), CBV(Motorola), ForSpec(Intel)

 

Assertion이란?

  • Assertion이란 설계의 사양을 위반하지 않도록 검증하는 구문이다. 즉, 설계자가 설계한 대로 동작되지 않을 시 경고를 출력하거나 시뮬레이션 자체를 중단할 수 있다.
  • Assertion의 주요 사용 목적
    1. 설계 사양 준수 확인 : 설계가 요구되는 동작을 올바르게 수행하는지, 모든 상태와 타이밍 조건이 만족되는지 확인
    2. 초기 오류 탐지 : 시뮬레이션 중에 오류를 초기에 발견하여 디버깅을 용이하게 함
    3. 디버깅 용이성 향상 : 특정 조건이 충족되지 않았을 때 경고 메시지를 출력하여 설계자가 오류의 원인을 빠르게 파악할 수 있도록 함
    4. 타이밍 및 순차적 동작 검증 : 설계에서 특정 이벤트가 일정한 시간 간격 내에 발생해야 하는 경우나, 특정 순서로 이벤트가 일어나야 하는 경우 Assertion으로 표현해서 확인 가능
    5. 설계 품질 향상 및 재사용성 증가 : Assertion으로 검증된 모듈은 다른 프로젝트에서도 재사용할 때 신뢰성을 보장받을 수 있음
    6. 기능 커버리지 활용 : 검증 시뮬레이션에서 특정 조건이나 상태가 발생하는 빈도를 확인하여 전체 기능 검증의 커버리지를 확인할 수 있음

 

 

Assertion Example in Python

  • SystemVerilog 뿐만 아니라 SW 언어에서도 Assertion과 비슷한 문법을 제공한다.
  • Python에서 assert를 사용한 예제를 확인해보자.
    • 문법 : assert 조건, "오류 메시지“
    • 예제 : 숫자가 양수인지 확인하는 예제

1
2
3
4
5
6
7
8
9
10
11
12
number = -5
assert number > 0"number는 양수여야 합니다!"
 
Traceback (most recent call last):
File "/tmp/main.py", line 2in <module>
import user_code
File "/tmp/user_code.py", line 2in <module>
assert number > 0"number는 양수여야 합니다!"
^^^^^^^^^^
AssertionError: number는 양수여야 합니다!
[Execution complete with exit code 1]
 
cs

 

위 예제에서 볼 수 있는 것 처럼, number가 양수가 아닌 경우 에러를 발생시킨다.

728x90
반응형

'VLSI > Verification' 카테고리의 다른 글

[SVA] 1-4. Introduction  (0) 2024.11.17
[SVA] 1-3. Introduction  (0) 2024.11.15
[SVA] 1-2. Introduction  (1) 2024.11.14
[SystemVerilog] 1.2 SystemVerilog의 특징  (0) 2023.10.22
[SystemVerilog] 1.1 SystemVerilog란?  (0) 2023.10.22

댓글