在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 如何快速生成Verilog代碼文件列表?(內(nèi)附開源C代碼)

            如何快速生成Verilog代碼文件列表?(內(nèi)附開源C代碼)

            發(fā)布人:FPGA小師兄 時間:2023-01-13 來源:工程師 發(fā)布文章

            用工具建工程對Verilog進行仿真、綜合或者其它操作時,在寫腳本的時候常常需要工程中Veriog文件的列表,若工程中.v文件過多,則常常需要手動編寫文件列表。本文教給大家用C語言簡單寫的一個自動生成某個文件夾下所有.v文件列表的方法。

            如果你覺得本文對你有幫助,歡迎轉發(fā)分享或贊賞

            使用說明

            環(huán)境:Windows 7操作系統(tǒng)或其它常用Windows操作系統(tǒng)

            編譯器:DEV C++或其它

            使用方法:隨便找個C語言的編譯器,靜態(tài)編譯生成exe文件后,可隨意拷貝至某文件夾下,雙擊運行,等待輸出rtl.f文件即可。

            使用舉例:將生成的exe文件拷貝至C:\modeltech64_10.4目錄下,雙擊運行,如下動圖。


            生成的rtl.f打開后如下圖所示。


            另外,該代碼提供了一種操作Windows系統(tǒng)路徑的操作方法,可以簡單修改一下,用作它用。如找到某種類型的文件或某個文件進行拷貝、轉移、修改、刪除等操作。

            源代碼

            #include <stdio.h>

            #include <windows.h>

            #include <unistd.h>

            #include <math.h>

            #include <time.h>

            #include <string.h>

            #define FILE_NUM 50000

            #define N 50000

            static 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\n",szFile);

            files[count_file].num=count_file;

            strcpy(files[count_file].name,szFile);

            count_file = count_file + 1;

            //printf("count_file=%d,num=%s\n",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\n", buf);

            FindInAll(buf);

            for(i=0;i<count_file;i++)

            {

            memset(buf1,0,800);

            strcpy(buf1,files[i].name);

            type=0;

            k=strlen(buf1);

            //printf("\n 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("\n j=%d\n",j);

            type=1;

            files[i].vtype=1;

            fprintf(fp1,"%s\n",files[i].name);

            }

            }

            }

            getch();

            fclose(fp1);

            return 0;

            }

            版本更新記錄


            版本號:V1.1.2

            更新日期:2013-07-17

            14:46:46 修改代碼,擴展name的長度為800,可以處理長路徑的情況

            版本號:V1.1.1

            更新日期:2013-05-18

            10:55:38 修改代碼,添加判斷語句&& (j==k-2),避免.vhd等文件也被列出來

            版本號:V1.1.0

            更新日期:2013-02-10

            14:49:55 已添加對文件名進行判斷,能夠自動的將當前路徑下的所有文件及子文件夾下的.v文件列舉出來。

            全文完。


            *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。

            攝像頭相關文章:攝像頭原理


            關鍵詞: Verilog 文件列表

            相關推薦

            技術專區(qū)

            關閉