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
hello.c
#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
};
|
'베릴로그' 카테고리의 다른 글
| Wishbone SSRAM controller (4) | 2012/01/04 |
|---|---|
| Clock speed (0) | 2011/05/02 |
| Verilog VPI example (2) | 2011/03/21 |
| Verilog Coding Guidelines (2) | 2010/12/11 |
| 베릴로그 스니펫 Resettable D flip-flop (3) | 2010/11/14 |
| 베릴로그 스니펫 D flip-flop, Verilog D flip-flop (0) | 2010/11/13 |

vpi_example.tar.gz
댓글을 달아 주세요
잘봤습니다~ 본격적으로 공부하게 되면. 꽤나 재미있을것 같네요
허접한 블로그에 들려주셔서 감사합니다 ^^