日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 處芯積律

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

1 避免重復(fù)編譯

【示例】?

仿真結(jié)果

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

【示例】?

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

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

【示例】?

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


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉