2024. 5. 11. 21:18ㆍ(System)Verilog 시스템 베릴로그
2024.05.11 - [SystemVerilog] - [Verilog/SystemVerilog] 베릴로그와 시스템베릴로그의 차이 | 오브젝트 타입과 데이터 타입
[Verilog/SystemVerilog] 베릴로그와 시스템베릴로그의 차이 | 오브젝트 타입과 데이터 타입
type은 signal이 net 인지 variable인지를 나타낸다.시스템 베릴로그는 reg, integer와 같은 모든 베릴로그 변수 타입을 사용하고 추가로, byte, int 등의 타입을 더 사용한다. data type은 net나 variable의 값
wolleyneerg.tistory.com
<베릴로그와의 차이>
0 | 0 값 |
1 | 1 값 |
x or X | X - 0인지 1인지 알 수 없음 (unkown) |
z or Z | Z - 연결되지않음 (high impedence) |
시스템 베릴로그는 RTL 보다 더 추상 레벨인 시스템 레벨이나 트랜잭션 레벨에서의 모델링에 적합한 2 state 타입을 추가했다.
4-state (0,1,X,Z)
module tb;
logic [3:0] my_data; // logic 타입의 4bit 크기 my_data 변수 선언
initial begin
$display ("my_data=0x%0h", my_data); // logic의 초깃값 X 출력
my_data = 4'hB; // my_data에 4bit 크기의 B값 할당
$display ("my_data=0x%0h", my_data);
end
endmodule
my_data=0xx
my_data=0xb
2-state (0,1)
bit | 1 bit | |
byte | 8 bit | C의 int |
shortint | 16 bit | C의 short |
int | 32 bit | C의 int |
longint | 64 bit | C의 longlong |
- 모든 2 state 데이터 타입은 0 값으로 시뮬레이션이 시작됨
- 4 state -> 2 state
4 state | 2 state |
0 | 0 |
1 | 1 |
X | 0 |
Z | 0 |
- bit
상위 추상 레벨에서 하드웨어를 모델링하는 데 유용
실제로 변수타입은 아니며, 2 state를 갖는 데이터 타입이지만 단독으로 사용하면 변수를 의미한다.
module tb;
bit var_a; // bit 타입의 1bit 크기 변수 var_a 선언
bit [3:0] var_b; // bit 타입의 4bit 크기 변수 var_a 선언
logic [3:0] x_val; // logic 타입의 4 bit 크기 변수 x_val 선언
initial begin
$display ("Initial value var_a=%0b var_b=0x%0h", var_a, var_b);
// 새로운 값을 할당
var_a = 1;
var_b = 4'hF;
$display ("New values var_a=%0b var_b=0x%0h", var_a, var_b);
// 선언한 크기보다 더 큰 값을 할당
var_b = 16'h481a;
$display ("Truncated value: var_b=0x%0h", var_b);
// bit 타입(2state-0,1)에 zx 값을 할당
var_b = 4'b01zx;
$display ("var_b = %b", var_b);
end
endmodule
Initial value var_a=0 var_b=0x0
New values var_a=1 var_b=0xf
Truncated value: var_b=0xa
var_b = 0100
해당 코드에 대한 결과 설명
1. 초기값 출력 : var_a, var_b 변수 선언만 했기 때문에 초깃값인 0이 출력.
2. 새로운 값 : 각각 1, 4'hf 값을 할당 -> 그대로 var_a는 1 var_b는 f 값 출력.
3. 선언된 크기보다 큰 값 할당 : var_b는 선언된 크기는 4bit이지만 12bit 크기의 481f 가 할당 -> 가장 왼쪽 bit들이 잘리게 되고 남은 4bit의 f 값만 할당되어 출력.
4. 사용하지 않는 상태 값 할당 : 2 state의 bit 타입으로 선언한 var_b에 01zx 값을 할당 -> 4 state의 값이 2 state 0 값으로 바뀌어 0100이 출력.
'(System)Verilog 시스템 베릴로그' 카테고리의 다른 글
[SystemVerilog] 시스템베릴로그의 Queue : 동적 데이터 구조 이해하기 | push_back, push_front, pop_back, pop_front | queue와 FIFO (0) | 2024.05.30 |
---|---|
[Verilog/SystemVerilog] 베릴로그 기초 | 베릴로그의 기본 문법과 예제 (0) | 2024.05.28 |
[SystemVerilog] 시스템 베릴로그의 할당 연산자, 산술 시프트 (<<<=, >>>=) (0) | 2024.05.13 |
[SystemVerilog] 시스템 베릴로그의 시간 단위 (0) | 2024.05.11 |
[Verilog/SystemVerilog] 상속 | 다형성 | 상속과 다형성의 차이 | Inheritance |Polymorphism (0) | 2024.05.06 |