<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    6285

    瀏覽量

    121886
  • Verilog
    +關注

    關注

    28

    文章

    1326

    瀏覽量

    109302
  • 代碼
    +關注

    關注

    30

    文章

    4555

    瀏覽量

    66772

原文標題:如何快速生成Verilog代碼文件列表(附開源C代碼)

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    keil如何生成bin文件

    Keil是一種集成開發環境(IDE),專為ARM架構的嵌入式系統開發而設計。在Keil中生成bin文件是將代碼編譯并轉換為可執行文件的過程。本文將詳細介紹Keil
    的頭像 發表于 12-15 13:43 ?3258次閱讀

    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 ?1502次閱讀
    <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 ?2347次閱讀
    <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 ?713次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>