728x90
반응형
[SystemVerilog Assertion(SVA)] 1-2. Introduction
SVA Example
이번에는 SystemVerilog Assertion을 사용한 예제를 확인해보자.
- 예제1 : grant 요청 후 4 clock 이내에 ack 수신 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
module grant_ack_check(
input logic clk,
input logic reset_n,
input logic grant,
input logic ack
);
// 4 Clock 이내에 ack 신호가 들어와야 함을 검증하는 Assertion
property grant_to_ack_within_4_cycles;
@(posedge clk) disable iff (!reset_n)
grant |-> ##[1:4] ack;
endproperty
// Assertion 적용
assert property (grant_to_ack_within_4_cycles)
else $error("Error: ack not received within 4 cycles after grant request.");
endmodule
|
cs |
grant 요청 후 4 clock 이내에 ack가 수신되지 않았으므로 Assertion Error를 발생시킨다.
- 예제2 : 프로세서가 메모리에서 읽어온 명령어를 디코딩할 때, 유효하지 않은 명령어가 발견되지 않도록 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
module instruction_check(
input logic clk,
input logic reset_n,
input logic [7:0] instruction
);
// 유효한 명령어는 0x00 ~ 0x7F 사이에 있다고 가정
logic valid_instruction;
// 명령어가 유효한지 확인
always_comb begin
valid_instruction = (instruction <= 8h'7F);
end
// 유효하지 않은 명령어가 발견되지 않도록 assertion 작성
property valid_instruction_check;
@(posedge clk) disable iff (!reset_n)
valid_instruction;
endproperty
// assertion 적용
assert property (valid_instruction_check)
else $fatal("Fatal Error: Unknown instruction encountered!");
endmodule
|
cs |
instruction이 7F를 초과한 경우 Assertion Error를 발생시킨다.
728x90
반응형
'VLSI > Verification' 카테고리의 다른 글
[SystemVerilog Assertion(SVA)] 1-1. Introduction (0) | 2024.11.13 |
---|---|
[SystemVerilog] 1.2 SystemVerilog의 특징 (0) | 2023.10.22 |
[SystemVerilog] 1.1 SystemVerilog란? (0) | 2023.10.22 |
댓글