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의 주요 사용 목적
- 설계 사양 준수 확인 : 설계가 요구되는 동작을 올바르게 수행하는지, 모든 상태와 타이밍 조건이 만족되는지 확인
- 초기 오류 탐지 : 시뮬레이션 중에 오류를 초기에 발견하여 디버깅을 용이하게 함
- 디버깅 용이성 향상 : 특정 조건이 충족되지 않았을 때 경고 메시지를 출력하여 설계자가 오류의 원인을 빠르게 파악할 수 있도록 함
- 타이밍 및 순차적 동작 검증 : 설계에서 특정 이벤트가 일정한 시간 간격 내에 발생해야 하는 경우나, 특정 순서로 이벤트가 일어나야 하는 경우 Assertion으로 표현해서 확인 가능
- 설계 품질 향상 및 재사용성 증가 : Assertion으로 검증된 모듈은 다른 프로젝트에서도 재사용할 때 신뢰성을 보장받을 수 있음
- 기능 커버리지 활용 : 검증 시뮬레이션에서 특정 조건이나 상태가 발생하는 빈도를 확인하여 전체 기능 검증의 커버리지를 확인할 수 있음
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 2, in <module>
import user_code
File "/tmp/user_code.py", line 2, in <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 |
댓글