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

    文章

    6284

    浏览量

    121886
  • Verilog
    +关注

    关注

    28

    文章

    1326

    浏览量

    109302
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66772

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

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

收藏 人收藏

    评论

    相关推荐

    keil如何生成bin文件

    Keil是一种集成开发环境(IDE),专为ARM架构的嵌入式系统开发而设计。在Keil中生成bin文件是将代码编译并转换为可执行文件的过程。本文将详细介绍Keil
    的头像 发表于 12-15 13:43 3239次阅读

    ADgerber文件怎么生成PCB

    生成ADGerber文件是将电路板设计转化为可供PCB加工厂制造的图像文件的过程。下面详细介绍关于如何生成ADGerber文件。 ADGer
    的头像 发表于 12-07 17:19 1420次阅读

    simulink自动生成ROS代码

    当我们用simulink完成控制程序的搭建后,我们期望下一次可以直接对ROS进行控制,而不是每次都需要启动matlab和simulink,因此我们可以使用simulink的代码生成器,生成ROS
    的头像 发表于 11-15 17:53 340次阅读
    simulink自动<b class='flag-5'>生成</b>ROS<b class='flag-5'>代码</b>

    Verilog设计快速入门秘籍

    Verilog设计快速入门秘籍,拿走不谢!
    发表于 11-03 12:00

    为什么按照demo_nice的例子编译时候无法生成.verilog文件呢?

    求问大神,我想像demo_nice例子一样仿真看核内部信号,尝试在IDE中写内部寄存器值,然后转成.verilog用于vcs仿真读入ITCM,这总思路是对的吗,为什么按照demo_nice的例子编译时候无法生成.verilog
    发表于 08-16 07:14

    NICE自定义指令如何被编译生成汇编文件和.verilog二进制文件

    在学习官方的demo_nice例程时,使用了 NICE Instruction的自定义指令,但是不太理解自己在.c文件中定义的指令是如何被编译器识别,编译生成汇编文件和.verilog
    发表于 08-16 06:46

    在Linux中生成新的gcc工具链后,如何使用链接脚本来生成能够被e203使用的.verilog文件

    求在Linux中生成新的gcc工具链后,如何使用链接脚本来生成能够被e203使用的.verilog文件,希望老师能够提供较为详细的步骤指导,万分感谢!
    发表于 08-12 07:11

    如何用Nuclei Studio来生成编译后的.verilog文件

    各位大佬,想问一下怎么用Nuclei Studio来生成编译后的.verilog文件
    发表于 08-11 13:02

    Verilog Testbench怎么写 Verilog Testbench文件的编写要点

    之前在使用Verilog做FPGA项目中、以及其他一些不同的场合下,零散的写过一些练手性质的testbench文件,开始几次写的时候,每次都会因为一些基本的东西没记住、写的很不熟练,后面写的时候稍微
    的头像 发表于 08-01 12:44 1498次阅读
    <b class='flag-5'>Verilog</b> Testbench怎么写 <b class='flag-5'>Verilog</b> Testbench<b class='flag-5'>文件</b>的编写要点

    分享一些优秀的verilog代码 高质量verilog代码的六要素

    高质量的verilog代码至少需要包含以下几个要素:可读性、功能、性能、标准化、稳定性、可定位。
    的头像 发表于 07-18 10:09 698次阅读
    分享一些优秀的<b class='flag-5'>verilog</b><b class='flag-5'>代码</b> 高质量<b class='flag-5'>verilog</b><b class='flag-5'>代码</b>的六要素

    Verilog代码封装后门访问

    关于仿真里的后门访问,之前的文章《三分钟教会你SpinalHDL仿真中的后门读写》中有做过介绍,其针对的都是针对以SpinalHDL中的代码进行的后门访问。今天来看看当封装了Verilog BlackBox时,在SpinalHDL仿真中如何进行后门访问
    的头像 发表于 07-15 10:22 511次阅读
    <b class='flag-5'>Verilog</b><b class='flag-5'>代码</b>封装后门访问

    什么是良好的Verilog代码风格?

    verilog写一个行为模型来替代实现。这种原型验证和仿真验证的不一致,导致了跟dummy模块设计一样的麻烦,那就是需要对代码进行反复修改。另外,在不同项目中有可能根据不同的情况采用不同的后端物理层来生成
    发表于 06-02 14:48

    Verilog边沿检测的基本原理和代码实现

    本文将从Verilog和边沿检测的基本概念入手,介绍Verilog边沿检测的原理和应用代码示例。
    的头像 发表于 05-12 17:05 2345次阅读
    <b class='flag-5'>Verilog</b>边沿检测的基本原理和<b class='flag-5'>代码</b>实现

    如何用vcs+verdi仿真Verilog文件

    我们以一个简单的加法器为例,来看下如何用vcs+verdi仿真Verilog文件并查看波形。 源文件内容如下:
    的头像 发表于 05-11 17:03 1450次阅读
    如何用vcs+verdi仿真<b class='flag-5'>Verilog</b><b class='flag-5'>文件</b>

    如何使用参数化编写可重用的verilog代码

    我们将介绍如何使用verilog参数和generate语句来编写可重用的verilog 代码。 与大多数编程语言一样,我们应该尝试使尽可能多的代码可重用。这使我们能够减少未来项目
    的头像 发表于 05-11 15:59 712次阅读