디시인사이드 갤러리

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

갤러리 본문 영역

Verilog VPI example

DMW(125.138) 2011.03.22 23:49:29
조회 173 추천 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/08 - -
241274 자바 질문이여~ [1] 얼짱공대생(121.128) 11.03.31 44 0
241273 근데여긴왜케c공부하는횽이많어? [7] 비단가발갤로그로 이동합니다. 11.03.30 97 0
241272 안녕 시부랄련들아 [5] 얼짱공대생(121.128) 11.03.30 79 0
241271 욕먹을 각오 하고 질문 하나 (학교 숙제 아님) [1] 라이짐갤로그로 이동합니다. 11.03.30 62 0
241270 여기레젼드는 어떡해횽인가? 비단가발갤로그로 이동합니다. 11.03.30 67 0
241268 csocket 이랑 CAsyncSocket 질문 [18] 읭읭읭읭갤로그로 이동합니다. 11.03.30 232 0
241267 뉴비예요, 잘부탁해요 [6] 비단가발갤로그로 이동합니다. 11.03.30 66 0
241266 대박아이디어인지 아닌지 자가판단하는법 훗쇼갤로그로 이동합니다. 11.03.30 60 0
241265 하드디스크 못쓰겟다 [2] ㅎㄹㅇ(14.45) 11.03.30 45 0
241264 얼짱공대생을 위한 코딩 [2] 김프로그램(183.107) 11.03.30 865 0
241263 컴공과 지망하는 여갤러인데...(상담점;) [18] 펄사블갤로그로 이동합니다. 11.03.30 260 0
241261 C++ 이진파일 읽기 [1] 뽀송이(211.212) 11.03.30 139 0
241260 얼짱공대생아 미안하다. 소스코드 전체 불러주마 ㄱㄷㄹ갤로그로 이동합니다. 11.03.30 76 0
241259 vi 쓰는데 스왑파일때문인지 파일 읽고 쓰는게 잘 안되 [10] ㅁㅁㅁㅁ(121.130) 11.03.30 81 0
241257 아 ㄱㄷㄹ 얘 존나 병쉰이네 [4] 얼짱공대생(121.128) 11.03.30 77 0
241256 SODMaster 고갱님은 봄니다. [52] 아주아슬갤로그로 이동합니다. 11.03.30 178 0
241255 카톡 쓰는새끼들 망쓰면서 지랄들은 존나하네 [2] 풋사과1갤로그로 이동합니다. 11.03.30 92 0
241254 지금 프로그래밍 하고있는데.. urlconnect 호출 질문좀...... [1] ㅁㄴㅇ(220.127) 11.03.30 78 0
241253 소켓프로그래밍 질문 [7] 읭읭읭읭갤로그로 이동합니다. 11.03.30 84 0
241252 c언어를 공부해야 objective -c 할수 있는거 아냐?? [8] 노마(222.236) 11.03.30 92 0
241250 그래도 C는 C++보다는 문법이 쉬워서 다행이야 Rei@디씨갤로그로 이동합니다. 11.03.30 66 0
241249 ㅅㅂ 철야.. [1] ㅇㅇ(116.40) 11.03.30 33 0
241247 나 혼자 공부해서 어플 개발하려면 시간이 얼마나 걸릴까?? [15] 노마(222.236) 11.03.30 246 0
241246 xml parsing [12] 김프로그램(183.107) 11.03.30 90 0
241245 형님들 스압이라 안읽나본데 [10] 얼짱공대생(121.128) 11.03.30 102 0
241244 자바 채팅방 짜다가 막혔는데 질문좀; [7] java18181818(183.99) 11.03.30 168 0
241243 대박 아이디어가 있을때 어떻하냐? [17] 노마(222.236) 11.03.30 173 0
241241 장학금을 받기위해 요건을 따져보고있는데 [7] 복학생(222.239) 11.03.30 49 0
241240 자살하기전에 해야할일 일광면(119.198) 11.03.30 100 0
241239 고3인대 진로고민중이에요.. [1] 1(116.120) 11.03.30 56 0
241238 홈페이지 만들려면 php책한권가지고 부족하겠지? [5] asfasd(222.239) 11.03.30 93 0
241237 야구게임~~~~~~~~~~~~~~~~~~~~~~~~ [1] 공대생(121.128) 11.03.30 56 0
241235 컴퓨터를 공부하는건지 영어를 공부하는건지 도통 모르겠네 [7] 쉐키랍(222.251) 11.03.30 105 0
241234 흠... 내레벨에 [2] SODmaster갤로그로 이동합니다. 11.03.30 86 0
241233 C 어렵냐? [10] 1(116.120) 11.03.30 89 0
241232 형들 유틸리티 추천좀해죠 니얼굴카마쿠지갤로그로 이동합니다. 11.03.30 29 0
241231 형들 리눅스 ssh쓸때 std::치고 나서 뒤에 [1] 초보자(114.70) 11.03.30 63 0
241230 HTML에서 TITLE 태그가 윈도우 제목말고 다른 용도가 있나여? [4] (175.112) 11.03.30 78 0
241229 switch문 싸잡아서 말한건 잘못한거 같고... [9] SODmaster갤로그로 이동합니다. 11.03.30 110 0
241228 형님들 부탁좀 들어줘염 ㅠㅠ [25] ㅠㅠ(119.206) 11.03.30 129 0
241225 주분투가 우분투에 비해서 가벼운가...? [1] 구루구루(115.145) 11.03.30 343 0
241224 프갤횽들 간단한 프로그램 하나 만드려고 하는데 도와줘!!!!! [6] ㅁㄴㅇ(220.127) 11.03.30 97 0
241223 프갤 형님들 정중히 부탁합니다. 제 이야기 한번만 봐주세요. [6] 유동(210.102) 11.03.30 162 0
241222 모노리스라 쓰고 큐짱이라 읽는다는 봅니다. MoonJu(175.195) 11.03.30 90 0
241221 사업같이 할님 모셔요 [2] 잏잉(61.255) 11.03.30 45 0
241220 switch가 객체지향적이지 안잖아...(2) [1] SODmaster갤로그로 이동합니다. 11.03.30 96 0
241219 소스 코드 깔끔하게 표시하는 법? [1] ㅁㄴㅇㄹ(210.107) 11.03.30 58 0
241217 내일이 패치날인데..큐짱! 쭈중(112.168) 11.03.30 113 0
241215 컴퓨터에 대해 쥐죶도 모르는데 컴공가면 죶발림? [5] 오오미(58.121) 11.03.30 203 0
241214 닌텐도DS야 책파는거 김늅늅(183.102) 11.03.30 163 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2