디시인사이드 갤러리

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

갤러리 본문 영역

Verilog VPI example

DMW(125.138) 2011.03.22 23:49:29
조회 175 추천 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/15 - -
242818 근데 C에서 goto 쓸때 [9] Rei@디씨갤로그로 이동합니다. 11.04.06 89 0
242817 이거 에러가 왜 나는거임 ?? [5] 갤로그로 이동합니다. 11.04.06 86 0
242816 생각해보니까 대학에서 과에서 상위권인 애들끼리 경쟁하는건 ㅄ짓같다 [1] 복학생(110.11) 11.04.06 62 0
242815 2에서 100사이의 소수를 출력하는것 좀 도와주세요~ [9] 도와주세요 (123.214) 11.04.06 130 0
242814 프갤의 근현대사 [19] 꿀레(14.33) 11.04.06 170 0
242812 형들 질문좀요 [8] 질문왕(125.128) 11.04.06 64 0
242811 프로젝트 이름 추천좀요 ㅋㅋ 123(218.236) 11.04.06 47 0
242810 정렬 중간에 쓰레기 나오는데 아무리 봐도 원인을 모르겠음. [2] 나홀로(112.146) 11.04.06 55 0
242809 아델포스 시발럼아.... [2] C_Perl갤로그로 이동합니다. 11.04.06 77 0
242808 형들 cmd에서 java는 읽는데 javac 를 못 읽어... [3] 데르(211.187) 11.04.06 95 0
242807 이번에 자료구조 과제 공비형의 팩떡밥 냄새가 좀 난다 꿀레(14.33) 11.04.06 80 0
242805 스테판워즈니악 책읽으면서 [1] 서현모양처갤로그로 이동합니다. 11.04.06 73 0
242804 ㅇㅇㅇㅇ님 참고하세요 [1] dadada(123.215) 11.04.06 39 0
242803 형들 JAVA API보는중인데요 [11] Noble.6갤로그로 이동합니다. 11.04.06 171 0
242802 난 애초에 mt가서도 후배들보고도 보면 인사하자 이런말도안했음 [2] ㅁㄴㅇㄻㄴㅇ(110.11) 11.04.06 97 0
242801 [C] 배열을 정적으로 엄청 크게 할당했을 때 스택 오버플로우가 나잔아요 [1] 뇌자알갤로그로 이동합니다. 11.04.06 91 0
242800 정말 모르겠습니다, 제발 좀 도와주세요ㅠㅠ [7] 늅늅늅(221.138) 11.04.06 3611 0
242799 게임 중독 벗어나기는 [5] ㅇㅇ(125.186) 11.04.06 166 1
242798 [전효성有]형들 이거좀 돌려봐줘 소수출력하는 코드인데... [2] 비미비(61.99) 11.04.06 158 0
242797 아 시발... 진짜 [2] Adelposs갤로그로 이동합니다. 11.04.06 76 0
242796 프갤 올드비들은 전부 페이스북 비밀클럽갔다는게 트루군 [2] URA!갤로그로 이동합니다. 11.04.06 123 0
242795 누군가 나에게 숙제셔틀 숙제셔틀하는데 [2] Adelposs갤로그로 이동합니다. 11.04.06 83 0
242794 지식인_핫바할배.jpg 사랑돋긔.갤로그로 이동합니다. 11.04.06 110 0
242793 성님들아 숙제 힌트 점 주세여. [9] ㅇㅇㅇㅇ(219.249) 11.04.06 68 0
242792 정전됫어....라고 생각한 순간 [2] Adelposs갤로그로 이동합니다. 11.04.06 68 0
242791 Goto [3] clique갤로그로 이동합니다. 11.04.06 56 0
242790 프갤 형들... 나어떻게하지? [3] Adelposs갤로그로 이동합니다. 11.04.06 60 0
242789 프겔에 오는 여갤러는 하늘이 두쪽나도 게이라켓다. [2] SODmaster갤로그로 이동합니다. 11.04.06 80 0
242788 야 판타지 마스터즈같은 TRPG도 MINIMAX를 이용한다고 볼 수 [4] URA!갤로그로 이동합니다. 11.04.06 50 0
242787 아델포스= [1] SODmaster갤로그로 이동합니다. 11.04.06 36 0
242786 쯧쯧 다들 여갤러오니까 눈이 뒤집히는구나 [8] 꿀레(14.33) 11.04.06 96 0
242784 형들 이거좀 도와줘(조공有) [1] ㅎㅎ(222.237) 11.04.06 134 0
242783 연결리스트를 이용한 다항식 곱셈 [3] 김민우(211.222) 11.04.06 1616 0
242782 개발용 노트북 하나 추천좀 해줘용~~ [3] 잭 바우어갤로그로 이동합니다. 11.04.06 147 0
242781 어셈블 간단 프로그래밍 질문 [1] LazyDok(58.103) 11.04.06 74 0
242780 8989 89년생임?? [25] ㅁㄴㅇㄻㄴㅇ(203.234) 11.04.06 172 0
242779 이것좀 봐주세요 [1] 말두말두(58.233) 11.04.06 35 0
242778 생각해보니까 뭔가 이상하네 문과천민(220.85) 11.04.06 31 0
242777 C++ 메뉴 작성 프로그램 해주실분 제발 사례 원하는만큼말해보세요꼭해드림 [1] 대세는나야갤로그로 이동합니다. 11.04.06 59 0
242776 프로그래밍 고수님들 질문있습니다 부탁드려용 [6] 늅늅늅(221.138) 11.04.06 65 0
242775 2x2 동적할당 할려고 하는데 에러뜨는데 뭣때문이죠?.. [3] ㅇㅇㅇㅇ(219.249) 11.04.06 65 0
242774 자바에서 래퍼 질문이요! [2] 여신임니다(175.205) 11.04.06 53 0
242773 Hello, World! keine__(59.22) 11.04.06 41 0
242772 야 여자라고 까지마 [8] Adelposs갤로그로 이동합니다. 11.04.06 168 0
242771 프갤횽들 에러좀 찾아줘여 ㅠㅠ [10] 김막장(218.152) 11.04.06 66 0
242768 오늘 교수한테 생각지도 못한 소리를 들었다. [3] ㅇㅇㅇㅇ(219.249) 11.04.06 89 0
242767 2010 버젼 컴파일 어떻게함 ..??? [1] 112(116.39) 11.04.06 50 0
242766 아 학교인데 [3] 8989(210.121) 11.04.06 73 0
242765 opengl에서 간단한 fps를 구현해 보자.형님들의 힘이 필요할때임 [1] 위타천갤로그로 이동합니다. 11.04.06 744 0
242764 아 3번째 과제인데 힘들다 ㅡ_ㅡ;; 대송동견우갤로그로 이동합니다. 11.04.06 49 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2