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

    文章

    6858

    浏览量

    123481
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110180
  • 代码
    +关注

    关注

    30

    文章

    4805

    浏览量

    68784

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

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

收藏 人收藏

    评论

    相关推荐

    Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧

    Verilog与ASIC设计的关系 Verilog作为一种硬件描述语言(HDL),在ASIC设计中扮演着至关重要的角色。ASIC(Application Specific Integrated
    的头像 发表于 12-17 09:52 165次阅读

    Verilog 测试平台设计方法 Verilog FPGA开发指南

    Verilog设计的仿真需求。 编写测试文件 : 编写Verilog测试文件,对设计的各个模块进行测试。测试文件应覆盖各种情况,包括正
    的头像 发表于 12-17 09:50 323次阅读

    Verilog与VHDL的比较 Verilog HDL编程技巧

    Verilog 与 VHDL 比较 1. 语法和风格 VerilogVerilog 的语法更接近于 C 语言,对于有 C 语言背景的工程师来说,学习曲线较平缓。它支持结构化编程,代码
    的头像 发表于 12-17 09:44 239次阅读

    探索设计稿自动生成Flutter代码的技术方案

    的工具和方法,最后尝试大模型生成flutter代码在项目中的实践。 一、美团的探索 美团在2021年3月25日发表了一篇关于设计稿自动生成代码的文章,探讨了sketch2json和im
    的头像 发表于 11-08 10:09 969次阅读
    探索设计稿自动<b class='flag-5'>生成</b>Flutter<b class='flag-5'>代码</b>的技术方案

    如何自动生成verilog代码

    介绍几种自动生成verilog代码的方法。
    的头像 发表于 11-05 11:45 377次阅读
    如何自动<b class='flag-5'>生成</b><b class='flag-5'>verilog</b><b class='flag-5'>代码</b>

    Verilog硬件描述语言参考手册

    一. 关于 IEEE 1364 标准二. Verilog简介三. 语法总结四. 编写Verilog HDL源代码的标准五. 设计流程
    发表于 11-04 10:12 2次下载

    FPGA Verilog HDL代码如何debug?

    ,共同进步。 欢迎加入FPGA技术微信交流群14群! 交流问题(一) Q:Verilog代码如何debug?最近学习fpga,写了不少verilog,开始思考如何debug的问题!c语言是顺序执行,而
    发表于 09-24 19:16

    labview程序生成exe文件怎么还原

    在LabVIEW中,程序生成exe文件后,通常这个过程是不可逆的,即exe文件无法直接“还原”回原始的LabVIEW项目文件(.vi或.lvproj)。exe
    的头像 发表于 09-04 17:12 1615次阅读

    labview工程文件如何生成exe

    生成可执行文件(EXE)是LabVIEW程序开发过程中的一个重要步骤,它允许用户在没有安装LabVIEW的计算机上运行程序。以下是步骤和注意事项: 1. 准备工作 在开始生成EXE文件
    的头像 发表于 09-04 17:09 1852次阅读

    hex文件如何查看原c语言代码

    直接将 .hex 文件转换回原始的 C 语言代码是不可能的,因为 .hex 文件是二进制文件,它包含了单片机程序编译后的机器码,这些机器码与原始的 C 语言
    的头像 发表于 09-02 10:37 2570次阅读

    如何快速生成Modbus指令?教程来啦

    一适用型号该笔记适用于标准Modbus协议产品(MA01系列、ME31系列、M31系列、ME15-AXAX8080)。二功能简介功能说明:Modbus指令快速生成教程旨在帮助用户快速生成
    的头像 发表于 06-28 08:21 1308次阅读
    如何<b class='flag-5'>快速</b><b class='flag-5'>生成</b>Modbus指令?教程来啦

    Allegro生成光绘文件

    Allegro生成光绘文件
    发表于 05-06 10:37 1次下载

    .sct文件自动生成了一堆代码,并且有warning是什么原因导致的?

    .sct文件自动生成了一堆代码,并且有warning,手动改回去后编译,警告消失,重新编译又自动生成代码并且伴随警告,请问是什么原因造成的,
    发表于 03-07 06:39

    verilog function函数的用法

    Verilog 是一种硬件描述语言 (HDL),主要用于描述数字电子电路的行为和结构。在 Verilog 中,函数 (Function) 是一种用于执行特定任务并返回一个值的可重用代码块。函数在
    的头像 发表于 02-22 15:49 5898次阅读

    在做simulink+tasking自动代码生成时,编译找不到底层文件是为什么?

    在做simulink+tasking自动代码生成时,编译找不到底层文件,将文件添加进去后,会出现RT或NRT等重复定义
    发表于 02-20 08:06