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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SystemVerilog中ifndef如何避免重復編譯

sanyue7758 ? 來源:硅芯思見 ? 2023-06-25 15:59 ? 次閱讀

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

1 避免重復編譯

【示例】

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

仿真結果】

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

示例中,在top_tb.sv中include了packet.sv,同時在filelist中包含了packet.sv和top_tb.sv,這樣在對filelist進行編譯時相當于需要對packet.sv連續編譯兩次,此時編譯到被include的packet.sv報錯。這主要是因為同一個文件在編譯時被編譯了多次,一般情況下多數仿真工具為此都會給出不同類型的提示信息。對于較小的設計重復文件編譯一般基本沒有影響,但是對于大型設計,這種重復編譯會增加編譯工作的工作量,影響編譯效率,為此一般對于多次共享的一些公共資源都會使用如下示例的方式,避免多次編譯影響編譯效率。

【示例】

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

示例中,在packet.sv中使用了條件編譯結構"`ifndef PACKET_SV ... `endif"。當packet.sv第一次編譯時,因為編譯空間中還沒由PACKET_SV這個宏定義,所以此時會執行其后的"`define PACKET_SV",當執行到top_tb.sv中的"`include "packet.sv""時,因為此時宏PACKET_SV已經存在于當前全局編譯空間中,所以此時"`include "packet.sv""中的packet.sv不會被重復編譯,從而可以避免同樣代碼的重復編譯。

2被執行代碼的選擇

【示例】

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

示例中,如果編譯空間中不存在DISP的宏定義,那么將會執行示例中第4行,如果編譯的空間中存在DISP的宏定義,那么將會執行示例中的第6行,即通過"`ifndef ... `endif"實現了根據不同的DISP執行不同的代碼段。當然這里之所以可以選擇其他分支是因為有"`else"的存在,如果存在多余兩個你還可以使用"`ifndef ...`elsif ... `else ... `endif"或者多個"`ifndef ... `endif"嵌套,結構類似于if結構寫法,可以根據需要靈活選用。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1364

    瀏覽量

    111448
  • System
    +關注

    關注

    0

    文章

    165

    瀏覽量

    37494
  • 命令
    +關注

    關注

    5

    文章

    722

    瀏覽量

    22631
  • 編譯
    +關注

    關注

    0

    文章

    674

    瀏覽量

    33579

原文標題:SystemVerilog中ifndef如何避免重復編譯

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    SystemVerilog的類構造函數new

    systemverilog,如果一個類沒有顯式地聲明構造函數(new()),那么編譯仿真工具會自動提供一個隱式的new()函數。這個new函數會默認地將所有屬性變量。
    發表于 11-16 09:58 ?3854次閱讀

    SystemVerilog的Virtual Methods

    SystemVerilog多態能夠工作的前提是父類的方法被聲明為virtual的。
    發表于 11-28 11:12 ?805次閱讀

    SystemVerilog的“const”類屬性

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

    SystemVerilog的聯合(union)介紹

    SystemVerilog ,聯合只是信號,可通過不同名稱和縱橫比來加以引用。
    的頭像 發表于 10-08 15:45 ?1707次閱讀
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>的聯合(union)介紹

    請問如何理解頭文件的#ifndef

    。 2 用法 #ifndef 字符串 #define 上述字符串 #endif 一般放在頭文件里面,作用就是以防你在.c文件里面不小心重復包含頭文件的時候不會報錯。 例如,現在你有 main.c
    發表于 07-06 03:34

    使用SystemVerilog來簡化FPGA接口的連接方式

    Xilinx推薦使用純bd文件的方式來設計FPGA,這樣HDL代碼就會少了很多。但我們大多數的工程還是無法避免使用HDL來連接兩個module。所以本文就推薦使用SystemVerilog來簡化
    發表于 01-08 17:23

    STM32頭文件的#ifndef

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

    把頭文件的內容放在#ifndef還是#endif

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

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

    作用:防止頭文件的重復包含和編譯 定義  #ifndef x  #define x  ...  #endif  這是宏定義的一種,它可以根據是否已經定義了一個變量來進行分支選擇,一般用于調試等等
    發表于 08-24 07:38

    講講這個頭文件/#ifndef __SYS_H //頭件的的#ifndef

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

    SystemVerilog編碼層面提速的若干策略SoC芯片簡析

    比較快:對于簡單調用,編譯器可以將函數/任務內聯以避免堆棧幀操作,但復雜調用因為編譯器性能考慮原因通常不會內聯,每個函數/任務都將數據引用或完整的數據副本推送到調用堆棧,并處理任何指定的返回。如此就會
    發表于 08-01 15:13

    SystemVerilog的struct

    SystemVerilog“struct”表示相同或不同數據類型的集合。
    的頭像 發表于 11-07 10:18 ?2747次閱讀

    SystemVerilog的Shallow Copy

    SystemVerilog的句柄賦值和對象復制的概念是有區別的。
    的頭像 發表于 11-21 10:32 ?1063次閱讀

    SystemVerilog的Semaphores

    SystemVerilogSemaphore(旗語)是一個多個進程之間同步的機制之一,這里需要同步的原因是這多個進程共享某些資源。
    的頭像 發表于 12-12 09:50 ?3626次閱讀

    Systemverilog的Driving Strength講解

    systemverilog,net用于對電路連線進行建模,driving strength(驅動強度)可以讓net變量值的建模更加精確。
    的頭像 發表于 06-14 15:50 ?1867次閱讀
    <b class='flag-5'>Systemverilog</b><b class='flag-5'>中</b>的Driving Strength講解
    主站蜘蛛池模板: 国产福利99 | 天堂资源在线bt种子8 | 一级在线观看视频 | 啪啪免费视频 | 91精品国产亚洲爽啪在线影院 | 欧美日韩一区在线观看 | 国产免费人成在线视频视频 | 国产卡1卡2卡三卡网站免费 | 97久久草草超级碰碰碰 | 曰本毛片 | 97国内精品久久久久久久影视 | 国产精品色婷婷在线观看 | 可以免费观看的黄色网址 | 人人干国产 | 久久久噜噜噜久久 | 思思久99久女女精品 | 亚洲三级黄色 | 婷婷色亚洲 | 成人午夜视频免费看欧美 | 操碰91| 色综合天天网 | 天堂在线影院 | 国产卡一卡2卡三卡免费视频 | 日本高清视频网站www | 亚洲无色 | 色y情视频免费看 | 永久在线免费 | 四虎影院在线播放 | 8050午夜网| 日本国产在线 | 精品色 | 天天躁夜夜躁狠狠躁 | 成人的天堂视频一区二区三区 | 亚洲产国偷v产偷v自拍色戒 | 久久国产精品亚洲综合 | 亚洲人成毛片线播放 | 91视频啪啪| 国产一级片免费 | 丝袜紧身裙国产在线播放 | www天堂在线| 一女被多男玩很肉很黄文 |