Chandle이란?
외부 C/C++ 자료구조에 access하기 위한 (sv에서 사용되는) pointer이다.
systemverilog 디자인에서 다른언어의 data 구조를 조작하기 위해 사용되는 pointer이다.
Chandle은 사용전에 반드시 null로 initialize 되어야 한다.
chandle 선언 및 초기화
chandle myPointer = null;
Chandle의 사용
myPointer = some_dpi_function();
some_dpi_function이라는 dpi 함수를 호출하고,
그 함수가 반환하느 pointer를 myPointer라는 chandle pointer var에 assign 함.
이제 이 pointer를 사용해서 c자료구조의 값을 바꿔볼 것임.
(* (my_data_type *) myPointer).my_data_member = 42;
위 예시에서 보면
myPointer를 사용해서 my_data_type 스트럭쳐 타입의 멤버인 my_data_member에 access를 하였다.
chandle이라는 일반적인 type의 myPointer를 my_data_type을 핸들링할 수 있는 포인터 핸들로 다시 type casting 한 것임.
결론
chandle은 systemverilog에서 꽤나 중요한 data type이다.
DPI를 통해 전달되는 pointer를 담을 수 있는 핸들이기 때문이다.
chandle data type을 사용함으로써, external language나 library와 시스템베릴로그 디자인을 인터페이싱할 수 있으며
모델링, 테스트벤치의 성능을 향상시킬 수 있다.
다만 chandle을 사용하기 전에 앞서 null로 초기화할 것을 유념하자!
'SystemVerilog' 카테고리의 다른 글
[SystemVerilog] DPI의 심화(3) - data exchange (0) | 2024.03.31 |
---|---|
[SystemVerilog] DPI의 심화(2) - pure와 context의 의미 (0) | 2024.03.31 |
[SystemVerilog] DPI의 개념 (1) (0) | 2024.03.31 |
[ SystemVerilog ] static변수와 함수의 의미, protected란? (0) | 2022.10.27 |
[SystemVerilog] Packed 와 Unpacked는 무슨 의미일까? (1) | 2022.10.19 |