Verilog HDL 테스트 벤치 템플릿 생성 프로그램
곰팽이
다운로드
장바구니
소개글
소개글Verilog HDL 설계 파일을 프로그램 입력으로 하여
입출력 목록을 테스트 벤치 템플릿 파일 형태로
변환시켜주는 프로그램 (아직 FPGA vendor 및 합성 툴 컴파일러에서는 이런 기능이 없지영)
암튼 아주 작은 코딩 시간이지만 줄여줄 수 있는 시간인것 같습니다.
컴파일 실행환경
목차1. Gtb.cpp (verilog 테스트 벤치 생성 소스 코드) 2. Test.v 예제(설계파일1) 3. tb_Test Gtb.exe를 통해 얻은 결과 파일 4. gtb.exe (설계파일을 테스트벤치 템플릿 파일로 변형해줌) (주의:생성된 코드를 직접 타이핑 치는 것보다 적은 코드 수정시간이 있습니다.본문내용
/*소스이름:Verilog 설계파일에 따른 테스트벤치 템플릿을 만드는프로그램 실행 파일소스
만든날짜:2012.11.22
저자: 탁형옥
입력: 최상위탑모듈베릴로그소스코드
출력: 최상위탑모듈을DUT로갖는디폴트테스트벤치베릴로그소스코드
논리설명: 사용자가 완성하여설계한 설계파일에대해서 디폴트 테스트벤치 템플릿 베릴로그소스를
자동으로생성하여만들어준다.
이를하기위해서베릴로그 2001 규격의포트선언에대해서
탑모듈의이름을읽고테스트벤치모듈의이름을명한다. (1995 규격의 포트 선언으로 변환)
탑모듈의입출력포트목록을분석하여테스트벤치의입력스티뮬러스변수를선언해준다.
또한출력모니터변수를선언해준다.
디폴트always 블럭과initial 블럭을만들어준다.
*/
// #define Debug
// #include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <direct.h>
#define MAXLEN 200
#define wLen 40
struct keywords {
char w[wLen] ;
} v_keyword [256] ; // v_keyword[i].w
char Line[MAXLEN];
char temp[MAXLEN];
int Start,End,EndOfLine;
int m,n=0;
int wi=0,w=0;
int m_name=0;
int m_time=0;
int m_timescale=0;
int bracket=0;
char name[20];
char keyword[20],identifier[20];
char id_name[100][wLen];
int id=0;
int m_param=0;
int current_in=0;
int current_out=0;
int cnt;
FILE *Infp, *Outfp;
int IsMsp(char *);
int IsMtab(char *);
int IsComma(char *);
int IsMcomma(char *);
int IsTab(char *);
int IsSp(char *);
int IsKeyword(char *);
int IsCtlKey(char *);
int IsSpComma(char *);
int IsNewLine (char *);
int main(int argc, char * argv[])
{
int i;
int m_name=0;
int id_out=0;
int Done=0;
Start =1;
End = 18;
EndOfLine = 100;
Infp = fopen("E:v_keywords.txt","rt");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
for(m=0;(m<MAXLEN) ;m++)
{
if(IsCtlKey(&Line[m])==1)
{
if(IsTab(&Line[m])!=0) // 연속탭을한개의space만만듬혹은무시함
{
if(IsMtab(&Line[m])!=1) // 연속탭이면
; //fprintf(Outfp,"@");
else // 마지막탭이면
;// fprintf(Outfp,"1%s ",temp); // 마지막탭만처리
n=0;
}
else if (IsSp(&Line[m])!=0) // space를만나면
{
if(m_name==1)
{
fprintf(Outfp,"tb_%s;n",temp);
strcpy(name,temp);
m_name=0;
}
else if(IsMsp(&Line[m])!=1) // 다중space 중마지막space가아니면
{ ;
; // 마지막space외에는무시함
}
else if(IsMsp(&Line[m])==1) // 마지막space만처리
{
if((strcmp(temp,"input")!=0)&&(strcmp(temp,"output")!=0)&&(strcmp(temp,"reg")!=0)&&(strcmp(temp,"wire")!=0)&&(Line[m-2]!=`#`))
압축파일 내 파일목록
gtb.cpp
gtb.exe
tb_test.v
test.v
실행화면-캡쳐.jpg
gtb.exe
tb_test.v
test.v
실행화면-캡쳐.jpg