在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SystemVerilog中ifndef如何避免重復(fù)編譯

sanyue7758 ? 來(lái)源:硅芯思見(jiàn) ? 2023-06-25 15:59 ? 次閱讀

`ifndef是SystemVerilog/Verilog中的一種條件編譯命令,可以認(rèn)為其是"if not defined"的縮寫(xiě),其用法與`ifdef相反,他們主要用來(lái)根據(jù)其后的宏是否存在于當(dāng)前編譯空間從而進(jìn)行分支選擇,因此在實(shí)際的工作過(guò)程中,常用來(lái)進(jìn)行"guardagaintcompile"等操作,本文將利用其分支選擇的特點(diǎn)介紹`ifndef(`ifdef與其功能類(lèi)似,不再示例)幾種常見(jiàn)用法。

1 避免重復(fù)編譯

【示例】

e3a434ea-132d-11ee-962d-dac502259ad0.png

仿真結(jié)果】

e3b486c4-132d-11ee-962d-dac502259ad0.png

示例中,在top_tb.sv中include了packet.sv,同時(shí)在filelist中包含了packet.sv和top_tb.sv,這樣在對(duì)filelist進(jìn)行編譯時(shí)相當(dāng)于需要對(duì)packet.sv連續(xù)編譯兩次,此時(shí)編譯到被include的packet.sv報(bào)錯(cuò)。這主要是因?yàn)橥粋€(gè)文件在編譯時(shí)被編譯了多次,一般情況下多數(shù)仿真工具為此都會(huì)給出不同類(lèi)型的提示信息。對(duì)于較小的設(shè)計(jì)重復(fù)文件編譯一般基本沒(méi)有影響,但是對(duì)于大型設(shè)計(jì),這種重復(fù)編譯會(huì)增加編譯工作的工作量,影響編譯效率,為此一般對(duì)于多次共享的一些公共資源都會(huì)使用如下示例的方式,避免多次編譯影響編譯效率。

【示例】

e3caf3a0-132d-11ee-962d-dac502259ad0.png

示例中,在packet.sv中使用了條件編譯結(jié)構(gòu)"`ifndef PACKET_SV ... `endif"。當(dāng)packet.sv第一次編譯時(shí),因?yàn)榫幾g空間中還沒(méi)由PACKET_SV這個(gè)宏定義,所以此時(shí)會(huì)執(zhí)行其后的"`define PACKET_SV",當(dāng)執(zhí)行到top_tb.sv中的"`include "packet.sv""時(shí),因?yàn)榇藭r(shí)宏P(guān)ACKET_SV已經(jīng)存在于當(dāng)前全局編譯空間中,所以此時(shí)"`include "packet.sv""中的packet.sv不會(huì)被重復(fù)編譯,從而可以避免同樣代碼的重復(fù)編譯。

2被執(zhí)行代碼的選擇

【示例】

e3dee0ae-132d-11ee-962d-dac502259ad0.png

示例中,如果編譯空間中不存在DISP的宏定義,那么將會(huì)執(zhí)行示例中第4行,如果編譯的空間中存在DISP的宏定義,那么將會(huì)執(zhí)行示例中的第6行,即通過(guò)"`ifndef ... `endif"實(shí)現(xiàn)了根據(jù)不同的DISP執(zhí)行不同的代碼段。當(dāng)然這里之所以可以選擇其他分支是因?yàn)橛?`else"的存在,如果存在多余兩個(gè)你還可以使用"`ifndef ...`elsif ... `else ... `endif"或者多個(gè)"`ifndef ... `endif"嵌套,結(jié)構(gòu)類(lèi)似于if結(jié)構(gòu)寫(xiě)法,可以根據(jù)需要靈活選用。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1366

    瀏覽量

    111974
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    166

    瀏覽量

    37630
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    733

    瀏覽量

    22742
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    676

    瀏覽量

    33821

原文標(biāo)題:SystemVerilog中ifndef如何避免重復(fù)編譯

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    SystemVerilog的類(lèi)構(gòu)造函數(shù)new

    systemverilog,如果一個(gè)類(lèi)沒(méi)有顯式地聲明構(gòu)造函數(shù)(new()),那么編譯仿真工具會(huì)自動(dòng)提供一個(gè)隱式的new()函數(shù)。這個(gè)new函數(shù)會(huì)默認(rèn)地將所有屬性變量。
    發(fā)表于 11-16 09:58 ?3927次閱讀

    SystemVerilog的Virtual Methods

    SystemVerilog多態(tài)能夠工作的前提是父類(lèi)的方法被聲明為virtual的。
    發(fā)表于 11-28 11:12 ?842次閱讀

    SystemVerilog的“const”類(lèi)屬性

    SystemVerilog可以將類(lèi)屬性聲明為常量,即“只讀”。目的就是希望,別人可以讀但是不能修改它的值。
    發(fā)表于 11-29 10:25 ?2328次閱讀

    SystemVerilog的聯(lián)合(union)介紹

    SystemVerilog ,聯(lián)合只是信號(hào),可通過(guò)不同名稱(chēng)和縱橫比來(lái)加以引用。
    的頭像 發(fā)表于 10-08 15:45 ?1821次閱讀
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>的聯(lián)合(union)介紹

    請(qǐng)問(wèn)如何理解頭文件的#ifndef?

    。 2 用法 #ifndef 字符串 #define 上述字符串 #endif 一般放在頭文件里面,作用就是以防你在.c文件里面不小心重復(fù)包含頭文件的時(shí)候不會(huì)報(bào)錯(cuò)。 例如,現(xiàn)在你有 main.c
    發(fā)表于 07-06 03:34

    使用SystemVerilog來(lái)簡(jiǎn)化FPGA接口的連接方式

    Xilinx推薦使用純bd文件的方式來(lái)設(shè)計(jì)FPGA,這樣HDL代碼就會(huì)少了很多。但我們大多數(shù)的工程還是無(wú)法避免使用HDL來(lái)連接兩個(gè)module。所以本文就推薦使用SystemVerilog來(lái)簡(jiǎn)化
    發(fā)表于 01-08 17:23

    STM32頭文件的#ifndef

    /*sys.h今天我們來(lái)講講這個(gè)頭文件*/#ifndef __SYS_H//頭件的的#ifndef,這是一個(gè)很關(guān)鍵的東西。比如你有兩個(gè)C文件,這兩個(gè)C文件都include了同一個(gè)頭文件。而
    發(fā)表于 08-23 08:06

    把頭文件的內(nèi)容放在#ifndef還是#endif

    #ifndef __SYS_H//頭件的的#ifndef,這是一個(gè)很關(guān)鍵的東西。比如你有兩個(gè)C文件,這兩個(gè)C文件都include了同一個(gè)頭文件。而編譯時(shí),這兩個(gè)C文件要一同
    發(fā)表于 08-23 07:38

    stm32f429之#ifndef的用法 精選資料推薦

    作用:防止頭文件的重復(fù)包含和編譯 定義  #ifndef x  #define x  ...  #endif  這是宏定義的一種,它可以根據(jù)是否已經(jīng)定義了一個(gè)變量來(lái)進(jìn)行分支選擇,一般用于調(diào)試等等
    發(fā)表于 08-24 07:38

    講講這個(gè)頭文件/#ifndef __SYS_H //頭件的的#ifndef

    1.推挽輸出 適合做一些開(kāi)關(guān)控制,應(yīng)為推挽輸出可以快速的切換0和1,例如繼電器,led等2./sys.h今天我們來(lái)講講這個(gè)頭文件/#ifndef __SYS_H//頭件的的#ifndef,這是一個(gè)
    發(fā)表于 08-24 08:03

    SystemVerilog編碼層面提速的若干策略SoC芯片簡(jiǎn)析

    比較快:對(duì)于簡(jiǎn)單調(diào)用,編譯器可以將函數(shù)/任務(wù)內(nèi)聯(lián)以避免堆棧幀操作,但復(fù)雜調(diào)用因?yàn)?b class='flag-5'>編譯器性能考慮原因通常不會(huì)內(nèi)聯(lián),每個(gè)函數(shù)/任務(wù)都將數(shù)據(jù)引用或完整的數(shù)據(jù)副本推送到調(diào)用堆棧,并處理任何指定的返回。如此就會(huì)
    發(fā)表于 08-01 15:13

    SystemVerilog的struct

    SystemVerilog“struct”表示相同或不同數(shù)據(jù)類(lèi)型的集合。
    的頭像 發(fā)表于 11-07 10:18 ?2817次閱讀

    SystemVerilog的Shallow Copy

    SystemVerilog的句柄賦值和對(duì)象復(fù)制的概念是有區(qū)別的。
    的頭像 發(fā)表于 11-21 10:32 ?1119次閱讀

    SystemVerilog的Semaphores

    SystemVerilogSemaphore(旗語(yǔ))是一個(gè)多個(gè)進(jìn)程之間同步的機(jī)制之一,這里需要同步的原因是這多個(gè)進(jìn)程共享某些資源。
    的頭像 發(fā)表于 12-12 09:50 ?3729次閱讀

    Systemverilog的Driving Strength講解

    systemverilog,net用于對(duì)電路連線進(jìn)行建模,driving strength(驅(qū)動(dòng)強(qiáng)度)可以讓net變量值的建模更加精確。
    的頭像 發(fā)表于 06-14 15:50 ?1993次閱讀
    <b class='flag-5'>Systemverilog</b><b class='flag-5'>中</b>的Driving Strength講解
    主站蜘蛛池模板: 亚洲ay| 天天干天天操天天摸 | 四虎在线精品免费高清在线 | 五月亭亭激情五月 | 好大好硬好长好爽a网站 | 色婷婷一区二区三区四区成人网 | a理论片 | 亚洲一区二区在线免费观看 | 三级网址在线播放 | 天天躁日日躁成人字幕aⅴ 天天躁夜夜躁 | 国语自产免费精品视频一区二区 | 国内亚州视频在线观看 | 久久国产精品夜色 | 窝窝午夜看片 | 最近视频在线播放免费观看 | 午夜在线影院 | 国产乱码一区二区三区四川人 | 中文字幕一区二区三区四区 | 一级毛片免费不卡直观看 | 男女无遮挡在线完整视频 | 五月天婷婷久久 | 狠狠色成色综合网 | 国产人成高清视频观看 | 成人欧美另类人妖 | 亚洲丁香网| 亚洲网站免费看 | 天堂a免费视频在线观看 | 国产一级特黄aa大片免费 | 四虎永久在线观看视频精品 | 色吧视频 | 69国产成人精品午夜福中文 | 天堂成人网 | 四虎在线精品免费高清在线 | 三级视频在线 | 四虎影视色费永久在线观看 | a网站免费 | 99久久99久久免费精品蜜桃 | 欲香欲色 | 天天操夜夜操 | 啪啪在线视频 | 国产乱理论片在线观看理论 |