본문 바로가기
VLSI/Verification

[SVA] 2-2. SystemVerilog Assertions(SVA)

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

[SVA] 2-2. SystemVerilog Assertions(SVA)

 

Assertion 기본 구조

 

1
2
3
4
5
6
7
8
9
10
11
12
// Simple assert statement
assert(<expression>);
 
// Assert statement with statements to be executed for pass/fail conditions
assert(<expression>begin
// If condition is true, execute these statements
end else begin
// If condition is false, execute these statements
end
 
// Optionally give name for the assertion
[assert_name] : assert(<expression>);
cs

 

assert 조건이 pass인 경우 실행되고, else는 조건이 fail인 경우 실행된다.

assertion에 대해 이름을 부여할 수 있다.

 

 

Immediate Assertion

 

설명

 

Immediate Assertion은 말 그대로 코드가 실행되는 시점에 즉시 수행된다. 즉, 변수의 값이 계산된 순간, 그 값을 기반으로 평가되며, 시간적 지연이 발생하지 않는다.

 

Procedural Block 내에서 사용되며, 일반적으로 if문 조건처럼 평가된다. SW에서 사용하는 Assertion과 유사하다.
조합 논리에서만 사용 가능하여 시간을 소모하는 동작을 하지 않는다. 즉, 시뮬레이션 시간 틱 내에서 평가된다.

 

시간적인 연속성을 다루지 않는다. next 또는 ##와 같은 연속적인 시간 관련 연산자는 사용할 수 없다.

 

동작 조건으로 level-sensitive와 edge-sensitive 둘 다 사용 가능하다.

 

문법적으로 assert만 키워드로 사용한다. 반면에, Concurrent Assertion은 assert property를 요구한다.

 

 

예제

1
2
3
4
5
6
7
module immediate_assertion_1(input wire clk, a, b);
   wire result;
   // 조건 검사
   assert (a == b); // a와 b가 동일하면 어서션 통과, 아니면 실패
   assign result = (a == b) ? 1'b1 : 1'b0;
endmodule
 
cs

 

assert (a == b)ab가 동일한지 검사하며, 실패하면 즉시 assertion fail 발생시킨다.

또한 resultab가 동일하면 1, 그렇지 않으면 0으로 설정된다.

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
module immediate_assertion_2(input wire clk, a, b);
   wire result;
 
   // assert 문은 조건 검증을 담당
   always @ (posedge clk) begin
      assert (a && b); // a와 b가 모두 참일 때만 통과
   end
 
   // result는 a와 b의 AND 결과로 할당
   assign result = a && b; // a와 b가 모두 참이면 result는 1, 아니면 0
endmodule
 
cs

 

동작 조건으로 edge-sensitive(posedge clk)를 사용할 수 있다.

assert (a && b)는 조건 검사만 수행하고, pass/fail을 출력.

resulta && b의 논리 연산 결과로 할당된다.

728x90
반응형

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

[SVA] 2-1. SystemVerilog Assertions(SVA)  (0) 2024.11.18
[SVA] 1-4. Introduction  (0) 2024.11.17
[SVA] 1-3. Introduction  (0) 2024.11.15
[SVA] 1-2. Introduction  (1) 2024.11.14
[SVA] 1-1. Introduction  (0) 2024.11.13

댓글