如何快速生成Verilog代码文件列表

用工具建工程对verilog进行仿真、综合或者其它操作时,在写脚本的时候常常需要工程中veriog文件的列表,若工程中.v文件过多,则常常需要手动编写文件列表。本文教给大家用c语言简单写的一个自动生成某个文件夹下所有.v文件列表的方法。
使用说明 环境:windows 7操作系统或其它常用windows操作系统
编译器:dev c++或其它
使用方法:随便找个c语言的编译器,静态编译生成exe文件后,可随意拷贝至某文件夹下,双击运行,等待输出rtl.f文件即可。
使用举例:将生成的exe文件拷贝至c:modeltech64_10.4目录下,双击运行,如下动图。
生成的rtl.f打开后如下图所示。
另外,该代码提供了一种操作windows系统路径的操作方法,可以简单修改一下,用作它用。如找到某种类型的文件或某个文件进行拷贝、转移、修改、删除等操作。
源代码 #include #include #include #include         #include              #include  #define file_num 50000#define n 50000static int count_file=0;typedef struct     {        int  num;        char name[800];           int vtype;         }filetype;   filetype files[file_num];bool isroot(lpctstr lpszpath)   {   tchar szroot[4];   wsprintf(szroot, %c:\, lpszpath[0]);   return (lstrcmp(szroot, lpszpath) == 0);}void findinall(lpctstr lpszpath){     win32_find_data wfd;    tchar szfind[max_path];    handle hfind;    tchar szfile[max_path];    lstrcpy(szfind, lpszpath);    if (!isroot(szfind))        lstrcat(szfind, \);    lstrcat(szfind, *.*); // 找所有.v文件    hfind = findfirstfile(szfind, &wfd);    if (hfind == invalid_handle_value) // 如果没有找到或查找失败        return;     do     {        if (wfd.cfilename[0] == '.')             continue; // 过滤这两个目录        if (wfd.dwfileattributes & file_attribute_directory)        {         if (isroot(lpszpath))             wsprintf(szfile, %s%s, lpszpath, wfd.cfilename);         else             wsprintf(szfile, %s\%s, lpszpath, wfd.cfilename);         findinall(szfile); // 如果找到的是目录,则进入此目录进行递归        }        else        {         if (isroot(lpszpath))             wsprintf(szfile, %s%s, lpszpath, wfd.cfilename);         else             wsprintf(szfile, %s\%s, lpszpath, wfd.cfilename);         printf(%s,szfile);          files[count_file].num=count_file;          strcpy(files[count_file].name,szfile);            count_file = count_file + 1;           //printf(count_file=%d,num=%s,count_file, files[count_file-1].name);         // 对文件进行操作        }     } while (findnextfile(hfind, &wfd));     findclose(hfind); // 关闭查找句柄}int main(int argc, char* argv[]){    file *fp1;    int i,j,k;    char buf[800]= ;     char buf1[800]= ;     int type=0;    if ((fp1=fopen(rtl.f,w+))==null)        return;      memset(buf,0,800);    memset(buf1,0,800);    memset(files,0,file_num*sizeof(filetype));          getcwd(buf, sizeof(buf));    printf(current working directory : %s, buf);    findinall(buf);     for(i=0;i 更新日期:2013-07-17
1446 修改代码,扩展name的长度为800,可以处理长路径的情况
版本号:v1.1.1
更新日期:2013-05-18
1038  修改代码,添加判断语句&& (j==k-2),避免.vhd等文件也被列出来
版本号:v1.1.0
更新日期:2013-02-10
1455 已添加对文件名进行判断,能够自动的将当前路径下的所有文件及子文件夹下的.v文件列举出来。


Meta将于今年在数据中心部署新款定制AI芯片
为什么CAN FD通讯要开启收发送延时补偿TDC?如何在TCAN4550配置TDC和SSP?
LED和3D面板向中低端渗透
智能照明控制系统在医院项目设计中的应用
利用数据线中的共模扼流圈(CMC)提高电磁兼容性
如何快速生成Verilog代码文件列表
氮化镓晶体管到底有什么了不起?
免调中频VCO的实现
开关电源的维修技巧和常见故障
微软修补了之前谷歌发现的Windows零日漏洞
自动化生产线的改造要注意什么
高温电线耐温多少
家庭电气装溃设计
赛微电子子公司在湖州成立半导体公司,注册资金为1亿元
5G时代,三星想要PK华为?这场“卡位战”没那么简单
三相不控整流电路的PFC设计案例分析
QD OLED | 三星显示延期的大尺寸OLED投资计划将于下月重新审议
上海已发布多个人工智能应用场景
用于中端智能手机的非柔性OLED面板出货量下降?
荣耀9发布会进行时:荣耀9发布会官方在线直播视频地址