色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

SystemVerilog中枚舉類(lèi)型的使用建議

路科驗(yàn)證 ? 來(lái)源:硅芯思見(jiàn) ? 作者:nanoty ? 2022-09-01 14:20 ? 次閱讀

SystemVerilog中枚舉類(lèi)型雖然屬于一種“強(qiáng)類(lèi)型”,但是枚舉類(lèi)型還是提供了一些“不正經(jīng)”的用法可以實(shí)現(xiàn)一些很常見(jiàn)的功能,本文將示例一些在枚舉類(lèi)型使用過(guò)程中的一些“不正經(jīng)”用法,并給出一些使用建議。

1 同一個(gè)作用域內(nèi)定義多個(gè)枚舉類(lèi)型,并且這些枚舉類(lèi)型的枚舉值列表中存在相同的標(biāo)簽

【示例】

f4e3f8a2-29af-11ed-ba43-dac502259ad0.png

仿真結(jié)果】

f4f59a08-29af-11ed-ba43-dac502259ad0.png

示例中,定義了兩個(gè)枚舉變量fsm_s1和fsm_s2,并且其對(duì)應(yīng)的枚舉值列表中都包含了相同的標(biāo)簽“GO”,編譯后報(bào)錯(cuò)。其實(shí)可以想象下,如果在SystemVerilog的同一個(gè)作用域中允許這種同名的標(biāo)簽存在,那么在具體對(duì)于某一個(gè)枚舉變量使用標(biāo)簽進(jìn)行賦值操作時(shí),那么這個(gè)標(biāo)簽到底是來(lái)自于哪個(gè)枚舉變量中對(duì)應(yīng)的枚舉列表呢?所以,在SystemVerilog中,同一個(gè)作用域內(nèi)定義多個(gè)枚舉類(lèi)型時(shí),這些枚舉類(lèi)型的枚舉值列表中不能存在同名的標(biāo)簽。

2 枚舉值列表中的標(biāo)簽用于運(yùn)算

【示例】

f50d3fbe-29af-11ed-ba43-dac502259ad0.png

【仿真結(jié)果】

f52b7682-29af-11ed-ba43-dac502259ad0.png

示例中,將枚舉變量cal_e的枚舉值列表中的標(biāo)簽被用于運(yùn)算操作,并且可以獲得對(duì)應(yīng)的計(jì)算結(jié)果。這是因?yàn)槊杜e值列表中的每個(gè)標(biāo)簽都有對(duì)應(yīng)的數(shù)值,默認(rèn)情況下,枚舉值列表中第一個(gè)標(biāo)簽對(duì)應(yīng)的數(shù)值為0,其后標(biāo)簽對(duì)應(yīng)數(shù)值按照加1遞增。當(dāng)枚舉值列表中的標(biāo)簽用于具體運(yùn)算表達(dá)式時(shí),與這些標(biāo)簽關(guān)聯(lián)的數(shù)值會(huì)自動(dòng)“替換”掉表達(dá)式中的標(biāo)簽,從而實(shí)際完成運(yùn)算的是標(biāo)簽對(duì)應(yīng)的數(shù)值。但是限于枚舉值列表可以表示的數(shù)據(jù)范圍有限,建議不要將枚舉列表中的標(biāo)簽用于具體運(yùn)算過(guò)程中。

3 將數(shù)值直接賦給枚舉變量

【示例】

f540960c-29af-11ed-ba43-dac502259ad0.png

【仿真結(jié)果】

f5520900-29af-11ed-ba43-dac502259ad0.png

示例中,第6行和第8行分別將數(shù)值直接賦予了枚舉變量cal,此時(shí)編譯會(huì)提示此處的賦值為illegal,但是SystemVerilog對(duì)于這個(gè)賦值操作還是會(huì)進(jìn)行的。第10行采用$cast進(jìn)行動(dòng)態(tài)轉(zhuǎn)換,將數(shù)值轉(zhuǎn)換成枚舉變量cal,間接實(shí)現(xiàn)了對(duì)cal的賦值操作,此時(shí)因?yàn)椴捎昧孙@式的類(lèi)型轉(zhuǎn)換,并且轉(zhuǎn)換成功,所以并不會(huì)產(chǎn)生任何提示信息。第12行使用了靜態(tài)轉(zhuǎn)換,將數(shù)值轉(zhuǎn)換成枚舉變量cal,此時(shí)因?yàn)椴捎昧孙@式的類(lèi)型轉(zhuǎn)換,所以也并不會(huì)產(chǎn)生任何提示信息。但是在將具體數(shù)值賦值枚舉類(lèi)型變量時(shí),最好采用顯式的動(dòng)態(tài)轉(zhuǎn)換或者靜態(tài)轉(zhuǎn)換。

4 賦給枚舉變量的數(shù)值位寬與枚舉變量位寬不匹配時(shí)的結(jié)果

【示例】

f5617386-29af-11ed-ba43-dac502259ad0.png

【仿真結(jié)果】

f571be8a-29af-11ed-ba43-dac502259ad0.png

示例中,第6行將數(shù)值“4”賦給枚舉變量cal,該枚舉變量可以選擇的枚舉值列表中的數(shù)值只可能為:0,1,2,3,顯然數(shù)值“4”不在該范圍之內(nèi),所以通過(guò)枚舉變量調(diào)用name()函數(shù)得到的標(biāo)簽為“空”。但是“4”的位寬在該枚舉變量所能表示的數(shù)值范圍之內(nèi)(不在枚舉值列表之內(nèi)),所以該值會(huì)被賦給該枚舉變量,其數(shù)值可以被顯示出來(lái)。

第9行將數(shù)值“9”賦給枚舉變量cal,數(shù)值“9”為4位寬,枚舉變量cal位寬為3,數(shù)值“9”不在該枚舉變量所能表示的數(shù)值范圍之內(nèi),所以“9”會(huì)被截位后賦給枚舉變量,所以此時(shí)枚舉變量對(duì)應(yīng)的數(shù)值為“3’b001”而不是“4’b1001”,而與數(shù)值“3’b001”對(duì)應(yīng)的枚舉值列表中標(biāo)簽是“ONE”,所以通過(guò)枚舉變量調(diào)用name()函數(shù)得到的標(biāo)簽為“ONE”,顯示的數(shù)值為“1”。為了在仿真過(guò)程中避免類(lèi)似情況出現(xiàn),在將具體數(shù)值賦給枚舉變量時(shí),建議采用動(dòng)態(tài)轉(zhuǎn)換$cast,不要寄希望于仿真器能夠“揣測(cè)明白你的心意悄悄的”靜態(tài)的完成類(lèi)型的轉(zhuǎn)換賦值,使用動(dòng)態(tài)轉(zhuǎn)換$cast當(dāng)遇到類(lèi)型不匹配時(shí)立刻可以報(bào)錯(cuò)提醒。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guā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)注

    28

    文章

    1365

    瀏覽量

    111688
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    166

    瀏覽量

    37544
  • 枚舉
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    4682

原文標(biāo)題:SystemVerilog中枚舉類(lèi)型的一些“不正經(jīng)”用法

文章出處:【微信號(hào):Rocker-IC,微信公眾號(hào):路科驗(yàn)證】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

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

    使用枚舉類(lèi)型表示狀態(tài)機(jī)進(jìn)入死循環(huán)

    在定義狀態(tài)機(jī)的狀態(tài)時(shí),除了可以使用宏(define)或者參數(shù)(parameter)聲明定義外,還可以使用枚舉類(lèi)型
    的頭像 發(fā)表于 11-07 17:46 ?1263次閱讀
    使用<b class='flag-5'>枚舉</b><b class='flag-5'>類(lèi)型</b>表示狀態(tài)機(jī)進(jìn)入死循環(huán)

    如何在Go給GORM模型添加枚舉類(lèi)型

    GORM是一個(gè)流行的Go ORM,它允許我們定義結(jié)構(gòu)體來(lái)表示數(shù)據(jù)庫(kù)表,并提供一個(gè)接口來(lái)執(zhí)行CRUD操作。枚舉在編程是一個(gè)有用的特性,它允許我們定義一個(gè)變量可以取的固定值集。在這篇文章,我們將探索如何向GORM模型添加
    的頭像 發(fā)表于 11-28 15:36 ?1648次閱讀

    詳細(xì)講解c語(yǔ)言enum枚舉類(lèi)型

    詳細(xì)講解C語(yǔ)言enum枚舉類(lèi)型在實(shí)際應(yīng)用,有的變量只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 C 語(yǔ)言中對(duì)這樣取值比較特殊的變量可以定義為枚舉
    發(fā)表于 12-21 23:22

    深入理解java枚舉類(lèi)型enum用法

    ; StringFRI = Fri; StringSAT = Sat; StringSUN = Sun; } 語(yǔ)法(定義) 創(chuàng)建枚舉類(lèi)型要使用 enum 關(guān)鍵字,隱含了所創(chuàng)建的類(lèi)型都是 java.lang.Enum 類(lèi)
    發(fā)表于 09-27 11:49 ?0次下載

    枚舉是C語(yǔ)言中的一種基本數(shù)據(jù)類(lèi)型

    在C語(yǔ)言中,枚舉類(lèi)型是被當(dāng)做 int 或者 unsigned int 類(lèi)型來(lái)處理的,所以按照 C 語(yǔ)言規(guī)范是沒(méi)有辦法遍歷枚舉類(lèi)型的。不過(guò)在一
    的頭像 發(fā)表于 09-25 15:45 ?8843次閱讀
    <b class='flag-5'>枚舉</b>是C語(yǔ)言中的一種基本數(shù)據(jù)<b class='flag-5'>類(lèi)型</b>

    go語(yǔ)言枚舉類(lèi)型怎么用

    、 java 等,都有原生支持。在 go ,大家卻找不到 enum 或者其它直接用來(lái)聲明枚舉類(lèi)型的關(guān)鍵字。從熟悉其它編程語(yǔ)言的開(kāi)發(fā)者轉(zhuǎn)用 go 編程,剛開(kāi)始會(huì)比較難接受這種情況。其實(shí),如果你看到如何在 go 中表示
    的頭像 發(fā)表于 09-02 09:43 ?5385次閱讀

    數(shù)字硬件建模SystemVerilog-枚舉數(shù)據(jù)類(lèi)型

    上一節(jié)介紹了已經(jīng)被淘汰的$unit聲明空間,今天我們來(lái)看看一種重要的數(shù)據(jù)類(lèi)型-枚舉數(shù)據(jù)類(lèi)型
    的頭像 發(fā)表于 07-01 17:44 ?2025次閱讀

    淺析SystemVerilog枚舉類(lèi)型

    枚舉類(lèi)型定義了一組具有名稱(chēng)的值,在沒(méi)有指定值時(shí)默認(rèn)是int型數(shù)值。
    的頭像 發(fā)表于 10-13 09:44 ?2003次閱讀

    SystemVerilog$cast的應(yīng)用

    SystemVerilog casting意味著將一種數(shù)據(jù)類(lèi)型轉(zhuǎn)換為另一種數(shù)據(jù)類(lèi)型。在將一個(gè)變量賦值給另一個(gè)變量時(shí),SystemVerilog要求這兩個(gè)變量具有相同的數(shù)據(jù)
    的頭像 發(fā)表于 10-17 14:35 ?3224次閱讀

    SystemVerilog的struct

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

    SystemVerilog至關(guān)重要的的數(shù)據(jù)類(lèi)型

    對(duì)于剛接觸SV的小伙伴來(lái)說(shuō),SV有幾種不怎么能引起關(guān)注,但在實(shí)際工作又經(jīng)常會(huì)用到的數(shù)據(jù)類(lèi)型。它們就是枚舉(enumeration)、結(jié)構(gòu)體(structures)和自定義類(lèi)型(typ
    的頭像 發(fā)表于 01-21 17:14 ?966次閱讀
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>至關(guān)重要的的數(shù)據(jù)<b class='flag-5'>類(lèi)型</b>

    SystemVerilog至關(guān)重要的結(jié)構(gòu)體和自定義類(lèi)型

    在上一篇文章《SystemVerilog至關(guān)重要的的數(shù)據(jù)類(lèi)型,介紹了枚舉類(lèi)型的本質(zhì)和使用語(yǔ)
    的頭像 發(fā)表于 01-21 17:18 ?2679次閱讀
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b>至關(guān)重要的結(jié)構(gòu)體和自定義<b class='flag-5'>類(lèi)型</b>

    枚舉類(lèi)型的簡(jiǎn)單擴(kuò)展學(xué)習(xí)

    定義枚舉類(lèi)型的值只能是整型常量,正數(shù)、負(fù)數(shù)和零都可以,但不可以是浮點(diǎn)數(shù)
    的頭像 發(fā)表于 05-25 15:45 ?772次閱讀

    Java枚舉的特點(diǎn)及用法

    在 Java 枚舉出現(xiàn)之前,通常會(huì)使用常量類(lèi)來(lái)表示一組固定的常量值,直到Java 1.5之后推出了枚舉,那么枚舉類(lèi)型有哪些特點(diǎn),它比常量類(lèi)又好在哪里呢。 本文將分析一下
    的頭像 發(fā)表于 09-30 10:02 ?1848次閱讀

    枚舉有多大?c語(yǔ)言枚舉end的作用是什么?

    枚舉有多大?c語(yǔ)言枚舉end的作用是什么? 枚舉在C語(yǔ)言中是一種常見(jiàn)的數(shù)據(jù)類(lèi)型,用于定義一組相互關(guān)聯(lián)的常量或者變量。它通常用于表示一系列可能的取值,使得程序更加易讀和易維護(hù)。在C語(yǔ)言中
    的頭像 發(fā)表于 01-19 14:19 ?854次閱讀
    主站蜘蛛池模板: 绝对诱惑在线试听 | 我把寡妇日出水好爽 | 国产极品美女视频福利 | 亚洲精品久久久久AV无码林星阑 | 阿离被扒开双腿疯狂输出 | 男人免费网站 | 99在线观看视频 | 国产精品99亚发布 | 午夜欧洲亚洲AV永久无码精品 | 日本黄色官网 | 国产精品久久久久久熟妇吹潮软件 | 国产久久精品热99看 | 老湿机一区午夜精品免费福利 | 日韩高清毛片 | 午夜天堂AV久久久噜噜噜 | 国产综合自拍 偷拍在线 | 快插我我好湿啊公交车上做 | 浪荡女天天不停挨CAO日常视 | 久久青青草原精品国产软件 | 欧美三级aaa | 偷窥wc美女毛茸茸视频 | 无套内射无矿码免费看黄 | 熟女人妻水多爽中文字幕 | 色欲AV精品人妻一区二区麻豆 | 久久婷婷五月免费综合色啪 | 粗暴玩烂货调教 | 精品AV无码一二三区视频 | china男士同性视频tv | 国产午夜电影院 | 国产毛A片久久久久久无码 国产毛A片啊久久久久久A | 亚洲国产高清在线观看视频 | 国产精品色无码AV在线观看 | 一级毛片美国 | 国产香蕉视频在线播放 | 被老师按在办公桌吸奶头 | 九九精品久久 | 亚洲精品第一页中文字幕 | 亚洲精品中文字幕无码A片蜜桃 | 伊人久久伊人 | av天堂网2014在线 | 色拍拍噜噜噜久久蜜桃 |

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品