中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. "); //-->

        博客專欄

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

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

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

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

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

        使用說明

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

        編譯器:DEV C++或其它

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

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


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


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

        源代碼

        #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; // 過濾這兩個(gè)目錄

        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); // 如果找到的是目錄,則進(jìn)入此目錄進(jìn)行遞歸

        }

        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);

        // 對(duì)文件進(jìn)行操作

        }

        } while (FindNextFile(hFind, &wfd));

        FindClose(hFind); // 關(guān)閉查找句柄

        }

        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;

        }

        版本更新記錄


        版本號(hào):V1.1.2

        更新日期:2013-07-17

        14:46:46 修改代碼,擴(kuò)展name的長(zhǎng)度為800,可以處理長(zhǎng)路徑的情況

        版本號(hào):V1.1.1

        更新日期:2013-05-18

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

        版本號(hào):V1.1.0

        更新日期:2013-02-10

        14:49:55 已添加對(duì)文件名進(jìn)行判斷,能夠自動(dòng)的將當(dāng)前路徑下的所有文件及子文件夾下的.v文件列舉出來。

        全文完。


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

        攝像頭相關(guān)文章:攝像頭原理


        關(guān)鍵詞: Verilog 文件列表

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉