디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

Verilog VPI example

DMW(125.138) 2011.03.22 23:49:29
조회 172 추천 0 댓글 1


전자겔이 더 어울리긴하지만 거긴 정전이 심하니까.....

--------------------------------------------------------------------------

크리에이티브 커먼즈 라이선스

Creative Commons License

VPI라는건 Verilog Procedural Interface의 약자고 PLI 2.0으로 불리기도 하는거다. $finish 처럼 $로 시작하는 시스템 테스크를 만들 수 있게 해주는 물건인데....이걸가지고 여러가지 재미난것을 많이 할 수 있다. 노력이 필요하긴 하지만....

PLI 1.0...그러니까 옛날에는 이게 시뮬레이터마다 중구난방으로 구현되어 있어 사용하는데 에로사항이 꽃이 피었다고 하는데 VPI로 오면서 통일되었다고 한다. 그러니까 코드 하나만 짜 놓으면 여러 시뮬레이터에서 쓸 수 있다 그말임.

VPI는 C/C++로 작성하고 shared object, 즉 DLL로 링크 된다. 만들어진 DLL을 시뮬레이터가 실행될 때 옵션으로 넣어주면 C로 짠 테스크들을 시뮬레이션에서 사용할 수 있다. 플러그인의 일종이라고 생각하면 편할듯....아무튼 이걸로 소켓으로 데이터를 보내서 다른 프로그램과 연동 시킨킨다던지 등등등 여러가지 재미난것을 할 수 있다.

만들려면 일정한 형식을 갖춰서 코드를 짜야 하는 것 같은데....내가 VPI에 대해 잘 모르기 때문에 이 부분은 뭐라 말할 수는 업ㅂ다능. The Verilog PLI Handbook 이라는 책에 설명이 잘 되있다고 하니 궁금한 사람은 이걸 구해다 읽어보라능.

Verilog 시뮬레이터를 설치하면 시뮬레이터가 설치된 디렉토리 밑에 include 디렉토리에 VPI 라이브러리 헤더가 설치되고 lib 디렉토리 VPI 라이브러리가 설치된다. 컴파일할 때 include 패스를 잡아주고 링크할때 라이브러리를 링크해서 DLL을 맹글면 된다.
 
첨부된 파일의 압축을 풀고 modelsim을 사용하는 사람은 vpi/modelsim 디렉토리에서 자기가 사용하는 환경에 맡는 Makefile를 불러다 make를 때리면 dll이 만들어 진다. mingw하고 visual studio용으로 Makefile이 만들어져 있다. icarus를 쓰는 사람은 vpi/icarus 디렉토리에서 mingw용 Makefile를 사용하면 된다....아 make를 하기전에 Makefile을 열어서 시뮬레이터의 패스를 자기 환경에 맞게 고쳐주는걸 잊지말자.

DLL이 잘 만들어 졌으면 sim 디렉토리 밑에 modelsim이나 icarus로 가서 make를 때리면 시뮬레이션 되고 아래같은 화면을 볼 수 있다 >_<.



별건 업ㅂ지만 testbench랑 VPI 소스코드는 아래처럼 생겼다. 빌드하는 방법과 시뮬레이션 하는 방법은 같이 들어있는 Makefile를 참고 하자.

 hello_vpi.v
<PRE>12345678</PRE>
<PRE>module tb();initial begin        $hello;        #10        $finish;endendmodule</PRE>


 hello.c
<PRE>#include "vpi_user.h"PLI_INT32 hello( PLI_BYTE8 *user_data ) {        vpi_printf("\\nHello PLI\\n");        return 0;}        void vpit_register_hello(void) {    s_vpi_systf_data systf_data;#ifndef ICARUS_VPI    vpiHandle        systf_handle;#endif    systf_data.type        = vpiSysTask;    systf_data.sysfunctype = 0;    systf_data.tfname      = "$hello";    systf_data.calltf      = hello;    systf_data.compiletf   = 0;    systf_data.sizetf      = 0;    systf_data.user_data   = 0;#ifndef ICARUS_VPI    systf_handle = vpi_register_systf( &systf_data );    vpi_free_object( systf_handle );#else    vpi_register_systf( &systf_data );#endif}void (*vlog_startup_routines[])() = {    vpit_register_hello,    0};</PRE>





--------------------------------------------------------------------------
http://www.filepang.co.kr/164

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 외모와 달리 술 일절 못 마셔 가장 의외인 스타는? 운영자 24/07/01 - -
240926 프갤흉들 신호,회로문제 이것좀 알려주세여 ㅠ 막힘..ㅠㅠ 신호(122.34) 11.03.29 39 0
240925 답변 : 취미는 적당히 [1] 완소허이재갤로그로 이동합니다. 11.03.29 133 0
240924 다이렉트로 스프라이트 이미지 출력하는데 문제점 질문... 샤크(112.150) 11.03.29 96 0
240923 컴공학생인데 자괴감느낌... [1] 223(175.121) 11.03.29 389 0
240922 어플개발자품귀현상 자꾸퍼다나르는데 요새 왜 그런기사나오는줄아냐 [1] 4(203.90) 11.03.29 198 0
240921 아까 그냥가자 횽이랑 말했던 Thread Safe Queue에 관해서.. [1] 허허벌판갤로그로 이동합니다. 11.03.29 187 0
240920 마인크레프트로 논리회로만들기 [2] 후잡이(175.205) 11.03.29 212 0
240919 형들 프로그램 뜯어볼수는 없을까? [4] 해삼군갤로그로 이동합니다. 11.03.29 115 0
240917 요즘 App개발자들 없어서 난리래 [6] 후잡이(175.205) 11.03.29 271 0
240914 아 횽들아 C언어인데 도저히 답이 안나온다 [5] 취미는적당히갤로그로 이동합니다. 11.03.29 170 0
240912 연봉협상 얼마 불러야 할지요? [6] 페보(175.197) 11.03.29 365 0
240911 C++ 클래스 프로그래밍 문제 질문 드려요. [8] ㅇㅇ(115.161) 11.03.29 120 0
240910 울트라에디터 좀 아는형? [1] EE(121.179) 11.03.29 123 0
240909 형들... c언어 포인터 배열 질문좀할게.. 숙제가아니라 물어보는것 [8] 리시안(121.134) 11.03.29 185 0
240908 템플릿 사용할때 자료형에 상관없이 입력받으려면 어떻게 해야 되는거야 ? [10] 커대갤로그로 이동합니다. 11.03.29 255 0
240906 배열 초기값 설정하는 문제 도와주세요 ㅠㅠ [6] 고갱님(58.228) 11.03.29 122 0
240904 질문좀여........... [15] ㅇㅇㅇㅇㅇ(110.9) 11.03.29 110 0
240903 형님들 한개만더.. [41] 박박(112.187) 11.03.29 226 0
240902 남자가 여자 위에 올라탄 그림.jpg ㅇㅇ(222.107) 11.03.29 362 0
240900 네트워크?? c_호도리갤로그로 이동합니다. 11.03.29 39 0
240899 형님들 질문한만 드립죠 [8] 박박(112.187) 11.03.29 76 0
240898 간단한 그림판 같은거 만드는데 얼마나 걸림요 [8] 1(183.104) 11.03.29 118 0
240896 형들 궁금한게있어서.... [8] 늅늅(115.86) 11.03.29 60 0
240895 현재 모니터에 뜨는 화면을 인식하는 프로그램을 만들고 싶어 [22] 깡통찼으요갤로그로 이동합니다. 11.03.29 362 0
240894 간단한 링크드리스트 질문이요 ㅠㅠ [5] 플밍(119.71) 11.03.29 51 0
240893 아까 보안검열 글썻던 돌돌인데; 대충 어떤 방법으로 검열하는지 알아냄; [10] 돌돌(121.128) 11.03.29 145 0
240891 이바봇은 봅니다 [2] 꿀레(14.33) 11.03.28 54 0
240890 횽들.. C#에서 queue랑 thread에 관해서.. [11] 허허벌판갤로그로 이동합니다. 11.03.28 12314 0
240889 자러가기전에 이쁜 짤이나 [4] 로레알갤로그로 이동합니다. 11.03.28 162 0
240888 웹 쪽이라고 해야되나 질문하나여 [2] 데헷뿌잉(119.197) 11.03.28 77 0
240882 오늘은 한시를 써봤음! [3] 어슐러르귄갤로그로 이동합니다. 11.03.28 95 0
240881 이중포인터써서 간단한거 해보고있는데 결과값이 안나와요 횽들.. 도와주세요 [4] 작은광장갤로그로 이동합니다. 11.03.28 84 0
240878 알고리즘 그래프를 제작하는 프로그램도 있나요? [3] \'_;(118.218) 11.03.28 122 0
240877 형들, C expression이 뭐야? (조공 有) [1] 형들제발(118.221) 11.03.28 191 0
240876 횽들 시간복잡도에 깨닳음을 주세요 [5] 공간복잡도(163.239) 11.03.28 76 0
240875 c for3중 구구단.... [1] C_Perl갤로그로 이동합니다. 11.03.28 120 0
240874 프갤러.씨바.. [10] ㅅㄷ(112.187) 11.03.28 165 0
240873 C 질문요. [11] ㅁㄴㅇㄹ(118.218) 11.03.28 88 0
240872 군대 안간 대딩들이라면... 병특 한번 도전해보라고 하고 싶슴... [2] (111.118) 11.03.28 215 0
240871 역시 글삭.. SODmaster갤로그로 이동합니다. 11.03.28 48 0
240870 닌텐도색기가 잠잠해지니까 또 한명 급부상했네 [3] 꿀레(14.33) 11.03.28 116 0
240869 루트 쓰는방법좀 알려주세요 [3] ㅇㅅㅇ(218.209) 11.03.28 86 0
240868 닌텐도 형님 계십니까~? Tstyle갤로그로 이동합니다. 11.03.28 67 0
240867 작곡프로그램으로 음만드는중인데요 간단한작업인데 도와주실분업나요 [2] 22살(118.41) 11.03.28 69 0
240866 프갤 횽들아 제발 도와줘요 [18] elwlwlwk갤로그로 이동합니다. 11.03.28 152 0
240865 한글 워드 잘하는 사람있어?? 문서 페이지 순서를 바꾸고 싶은데 [2] 돌멩이(14.41) 11.03.28 486 0
240862 First-Order와 First-Class의 차이?! [9] ㅁㄴㅇㄹ(210.107) 11.03.28 287 0
240861 C언어가 뭔지도 모르는 학생입니다. 고수님들의 도움이 필요합니다. [5] 율리안민츠갤로그로 이동합니다. 11.03.28 126 0
240860 심심한데 형들 눈요기로 이것좀 봐줘 [1] 눈요기하셈(210.93) 11.03.28 103 0
240858 임베디드랑 하드웨어랑 차이가 뭡니까? [3] ㅂㄹ(211.55) 11.03.28 166 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2