0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

FPGA技术江湖 来源:FPGA技术江湖 2023-01-15 10:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

用工具建工程对Verilog进行仿真、综合或者其它操作时,在写脚本的时候常常需要工程中Veriog文件的列表,若工程中.v文件过多,则常常需要手动编写文件列表。本文教给大家用C语言简单写的一个自动生成某个文件夹下所有.v文件列表的方法。

使用说明

环境:Windows 7操作系统或其它常用Windows操作系统
编译器:DEV C++或其它
使用方法:随便找个C语言的编译器,静态编译生成exe文件后,可随意拷贝至某文件夹下,双击运行,等待输出rtl.f文件即可。

使用举例:将生成的exe文件拷贝至C:modeltech64_10.4目录下,双击运行,如下动图。

b63e9ed2-947a-11ed-bfe3-dac502259ad0.gif

生成的rtl.f打开后如下图所示。

b6a98d96-947a-11ed-bfe3-dac502259ad0.jpg

另外,该代码提供了一种操作Windows系统路径的操作方法,可以简单修改一下,用作它用。如找到某种类型的文件或某个文件进行拷贝、转移、修改、删除等操作。

源代码

#include
#include
#include
#include
#include
#include

#defineFILE_NUM50000
#defineN50000

staticintcount_file=0;

typedefstruct
{
intnum;
charname[800];
intvtype;
}filetype;

filetypefiles[FILE_NUM];

BOOLIsRoot(LPCTSTRlpszPath)
{
TCHARszRoot[4];
wsprintf(szRoot,"%c:",lpszPath[0]);
return(lstrcmp(szRoot,lpszPath)==0);
}

voidFindInAll(LPCTSTRlpszPath)
{
WIN32_FIND_DATAwfd;
TCHARszFind[MAX_PATH];
HANDLEhFind;
TCHARszFile[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);//关闭查找句柄
}

intmain(intargc,char*argv[])
{
FILE*fp1;
inti,j,k;
charbuf[800]="";
charbuf1[800]="";
inttype=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("currentworkingdirectory:%s
",buf);
FindInAll(buf);

for(i=0;imemset(buf1,0,800);
strcpy(buf1,files[i].name);
type=0;
k=strlen(buf1);
//printf("
k=%d;",k);
for(j=0;j<=k;j++)
        {

            if((buf1[j]=='.')&&((buf1[j+1]=='v')||(buf1[j+1]=='V'))&&(j==k-2))
//if((buf1[j]=='.')&&(j==k-2))
{
//printf("
j=%d
",j);
type=1;
files[i].vtype=1;
fprintf(fp1,"%s
",files[i].name);
}
}

}

getch();
fclose(fp1);
return0;
}

版本更新记录


版本号:V1.1.2
更新日期: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文件列举出来。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    7437

    浏览量

    129616
  • Verilog
    +关注

    关注

    31

    文章

    1374

    浏览量

    114718
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74376

原文标题:如何快速生成Verilog代码文件列表(附开源C代码)

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Exx-xxxxxx-SC套件代码教学:从蜂鸣器控制到开屏LOGO,手把手教你快速上手!

    减少开发难度,轻松修改参数,让模块开发不再头疼一、内容介绍本次代码教学的初衷是减少用户代码开发使用难度,帮助用户快速上手对应型号模块所搭配的套件。下载,所有套件型号如下:支持套件列表
    的头像 发表于 03-05 19:34 371次阅读
    Exx-xxxxxx-SC套件<b class='flag-5'>代码</b>教学:从蜂鸣器控制到开屏LOGO,手把手教你<b class='flag-5'>快速</b>上手!

    1688商品列表API接口快速上手指南

    、数据准确、合规性强的优势。本文将以最常用的「店铺商品列表查询接口」为例,从接口基础认知到 Python 实战调用,帮助开发者快速掌握 1688 商品列表 API 的使用方法。 二、接口概述 1. 核心接口说明 本文以 1688
    的头像 发表于 01-21 10:24 845次阅读

    请问测试用例.verilog文件是怎么生成的呢?

    在仿真时可以通过添加.verilog文件,直接读入ITCM中,从而在仿真时我们就可以知道处理器的运行结果,例如打印hello_world字样。
    发表于 11-11 07:56

    请问verilog文件开头部分的@00080000是什么意思?

    请问verilog文件开头部分的@00080000是什么意思??
    发表于 11-06 08:10

    使用NucleiStudio生成tb仿真需要的.verilog文件

    project编译后生成仿真需要的.verilog文件: 1.打开一个工程,右键选择工程名,打开Properties: 2.选择C/C++ Build -&gt;setting,在
    发表于 11-05 07:07

    语法纠错和testbench的自动生成

    ,回到写好的Verilog代码,按住ctrl+shift+p,在弹出的搜索框里输入testbench。 点击后会自动将当前模块的testbench生成在终端框内。 当然,本质上该插件还是通过python来实现的,因此
    发表于 10-27 07:07

    NucleiStudio如何生成.verilog文件和.dasm文件,以及对.dasm文件中自定义指令反汇编结果分析

    硬件设计需要.verilog文件来运行加NICE后的tb仿真、软件组需要.dasm来确定自定义指令有无被正确编译。今天,我们来分享一下NucleiStudio如何生成.verilog
    发表于 10-24 06:33

    使用Simulink自动生成浮点运算HDL代码(Part 1)

    引言 想要实现浮点运算功能,如果自己写Verilog代码,需要花费较多的时间和精力。好在Simulink HDL Coder工具箱提供了自动代码生成技术。下图展示了HDL Coder如
    发表于 10-22 06:48

    HarmonyOSAI编程页面生成

    支持通过自然语言对话,生成应用/元服务可用的页面代码生成结果支持实时预览,帮助开发者快速完成页面搭建。 点击页面右侧菜单栏CodeGenie图标,完成登录后在输入框输入\"/\&qu
    发表于 08-29 15:50

    如何使用 PinConfigure 工具生成 GPIO 代码文件和 OrCAD/Protel IC 组件?

    如何使用 PinConfigure 工具生成 GPIO 代码文件和 OrCAD/Protel IC 组件?
    发表于 08-27 06:48

    请问如何使用 PinConfigure 工具生成 GPIO 代码文件和 OrCAD/Protel IC 组件?

    的位置; 4. 点击生成代码生成设置好的GPIO初始代码(.c文件); 5. 单击“运行 NuCAD”以
    发表于 08-18 07:32

    HarmonyOS AI辅助编程工具(CodeGenie)页面生成

    添加。 针对已有UI布局文件(XML)的应用,当前提供UI Generator能力,可以快速生成对应的HarmonyOS UI代码。 以上材料主要参考引用HarmonyOS官方文档。
    发表于 08-13 10:38

    产品列表获取API接口详解

    ​ 在现代软件开发中,API(应用程序编程接口)是获取产品列表的核心工具,它允许开发者从远程服务器高效地检索数据。本文将逐步介绍如何设计和使用产品列表获取API接口,包括核心概念、实现步骤、代码示例
    的头像 发表于 07-24 14:29 894次阅读
    产品<b class='flag-5'>列表</b>获取API接口详解

    HarmonyOS AI辅助编程工具(CodeGenie)UI生成

    UI Generator基于BitFun Platform AI能力平台,用于快速生成可编译、可运行的HarmonyOS UI工程,支持基于已有UI布局文件(XML),快速
    发表于 07-10 11:51

    用CubeMX生成代码时会将main.c文件中的汉字变成乱码,怎么解决?

    使用CubeMX生成代码时,经常会遇到原main.c文件中的汉字全部变成乱码,如下图所示: 将这些乱码字符重新修改后,只要再次用CubeMX生成
    发表于 06-23 08:02