본문 바로가기

전체 글

(11)
[SystemVerilog] DPI의 심화 - Chandle이란? 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_..
[SystemVerilog] DPI의 심화(3) - data exchange SystemVerilog와 C 사이의 data exchange는 DPI-C interface를 통해 이루어진다. 이번 게시글에서는 SV가 C 함수를 호출한다는 것 자체보다, SV에서 C로 함수 호출시 argument를 건네줌으로써 data를 교환할 수 있다는 데에 초점을 맞추어서 본다!! Data Mapping between SV and C 대부분의 SystemVerilog Data Type들은 C언어와 직접 대응되는 data type이 있는 반면, 그렇지 않은 데이터 타입들(4 state variable이나 array)들은 DPI-C나 API에 define된 특정 type을 필요로 한다.. ( 기존의 SystemVerilog Data Type이 아니라, user-defined? DPI에서 새롭게 정의된..
[SystemVerilog] DPI의 심화(2) - pure와 context의 의미 SystemVerilog DPI 심화 개념 Pure Import한 function을 pure로 선언하면 여러모로 최적화된 사용이 가능하다. 시뮬레이션 성능이 개선될 수 있으나 몇몇 제한이 걸린다. Function은 아래 조건을 충족할 때만 pure 선언이 가능하다. 1) 함수의 result가 오직 input에만 관계 있다. 2) 함수를 호출해도 side effect가 없다. 값을 직간접적으로 바꾸지 않는다. 다른 함수를 호출하지 않는다. File operation을 하지 않는다. Read/Write 동작이 없다. 3) output이나 inout argument가 없다. output이나 inout argument가 있을 경우, 이 함수는 output/inout argument를 바꿀 수 있으므로 side ..