본문 바로가기

분류 전체보기

(12)
[UVM] UVM subscriber의 개념 잡기 Observer Design Pattern * observer = 관찰자 UVM subscribe의 개념은 "Observer Design Pattern"(Twitter Design Pattern) 이라는 디자인패턴으로부터 출발한다. 디자인 패턴이란,  소프트웨어 개발 과정에서 빈번히 발생하는 문제들에 대한 일반적인 해결책들을 분류해놓은 것이다. ( 정형화된 문제 해결 방식? 정형화된 코딩 패턴? 정도로 생각하면 된다. )  Observer Design Pattern은 Twitter Design Pattern으로도 불리는데, 트위터에서 트윗을 전송하면 당신의 팔로워들이 그 트윗을 볼 수 있다는 점이 이 패턴의 동작 방식과 유사하다.  일단 유저가 트윗을 보내면, 해당 유저의 팔로워..
[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 ..
[SystemVerilog] DPI의 개념 (1) DPI 란? Direct Programming Interface. SystemVerilog와 다른 프로그래밍 언어(C, C++ SystemC등) 간 통신을 할 수 있도록 도와주는 인터페이스이다. DPI Import and Export Methods Import Method 다른 프로그래밍 언어로 구현된 함수를 SV 코드에서 호출하는 메소드 Export Method SV로 구현된 메소드를 다른 프로그래밍 언어에서 호출하는 메소드. 의의 : 위 메소드들에 argument를 pass & return함으로써, 서로 다른 두 언어간 data를 주고 받을 수 있다.!! Import Declaration import "DPI-C" function int calc_parity(input int a); systemver..
리눅스 :: 소프트 링크와 하드 링크 개념적 차이 요약 심볼릭 링크(소프트 링크)와 하드 링크의 개념적 차이 - 소프트 링크의 원본이 지워지면 링크파일도 접근이 불가능하다. - 하드 링크는 원본이 지워져도 파일에 access 가능하다. - 소프트링크의 원본과 링크파일은 서로 다른 inode를 갖는다. (inode란 파일의 주민번호와 같은 것이다.) - 하드링크의 원본과 링크 파일은 inode가 같다. 하드링크는 해당 object에 포인터를 추가 하는 것과 같고, 소프트링크는 해당 object를 가리키는 포인터를 가리키는 포인터를 추가하는 것과 같다. 따라서 하드링크의 포인터가 하나 사라져도 다른 포인터로 access 가능한 것이고 소프트링크의 원본 포인터가 유실되면, 원본 포인터를 가리키는 링크드 포인터 또한 무용지물되는 것과 같은 이치이다. 심볼릭 링크(소..
마크 주커버그 하버드 졸업 축사 2 :: 영어 받아쓰기, dictation But my best memory from Harvard is meeting Priscilla. I had just launched this prank website, Facemash, and the adboard wanted to "see" me. * prank : 스케일이 좀 큰 장난? ( https://ohhnew.tistory.com/47 참고) Everyone thought I was gonna get kicked out. My parents drove up here to help me pack my stuff. My friends threw me a going-away party. Who does that? as luck would have it, Priscilla was at that par..
마크 주커버그 하버드 졸업 축사 1 :: 영어 받아쓰기, dictation I love this place. Thank you all for coming out in the rain. the pouring rain. We're gonna make this worthy for you. President Faust, board of overseers, faculty, friends, alumni, proud parent, memebers of the adboard. and graduates of the greatest university in the world. I'm honor to be here with you today, because, let's face it. You accompished something I never could. If I get through this ..
[SystemVerilog/UVM] Factory Pattern (팩토리 패턴)에 관하여. Factory Pattern은 디자인 패턴이다. 0. 잡소리 ( 바쁘면 읽지 마세요 TMI 대잔치) 요즘은 UVM에 관해 구글링 하면 익사이팅(?)이라는 한 개인 블로그를 찾을 수 있어 자주 참고하지만 그때는 한국어로 작성된 UVM자료가 지금보다 더, 더, 더 희박했기 때문에.. 열심히 번역해도 모르는 개념이 있으면 알지 못한 채로 넘어가거나, 추측하는 수밖에 없었다. UVM 관련 웹사이트에 기재된 포스팅을 공부하면서 컴포넌트, 시퀀스 등에 관해서는 약간의 감을 잡을 수 있었지만, UVM factory에 관해서는 정말 오리무중이었다. 뭐하자는 건지 알 수 없었다. 대충 'new를 직접 호출하지 않고, UVM에서 제공되는 어떤 특별한 메서드를 호출해야 한다.' 정도로만 이해했었다. 2020년 봄.. 이전 ..
[ SystemVerilog ] static변수와 함수의 의미, protected란? systemverilog에서 static 변수란, globa variable과 비슷한 의미이다. 만약 class 변수를 static으로 선언한다면 여러 class object들, 혹은 코드 여러 곳에서 바라본 이 variable이, 단 하나의 data member copy임을 의미한다. 그러니까 쉽게 말해, one and only~! 실제 객체는 하나뿐이며, 이 객체가 할당된 메모리 한 곳만을 모두가 바라본다는 사실~ 그럼, 클래스 하나로 여러개의 인스턴스를 생성했을 때, 모든 인스턴스의 static member는 같은 레퍼런스이며, 한 곳에서 수정되면 다른 모든 곳에서 수정된다는 뜻이다. 마치 global variable처럼 말이다. 원래 우리는 programming 할때 global variable ..