一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

typedef的應(yīng)用實例

芯片驗證工程師 ? 來源:芯片驗證工程師 ? 作者:芯片驗證工程師 ? 2022-10-14 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

" typedef "僅僅意味著提供一個類型名,可以簡單地理解為文本替換,提高代碼的可讀性。

typedef existing_type mytype;

例如:

typedef enum {NO, YES} boolean;
boolean myvar1, myvar2; // user-defned type

等價于

enum {NO, YES} myvar1,myvar2;

下面是一個簡單的例子:

module tdef;
 typedef integer unsigned u_integer;
 typedef enum {RED, GREEN, BLUE} rgb;
 typedef bit [7:0] ubyte;
 u_integer uI = 32'h face_cafe;
 u_integer uI1 = 32'h cafe_face;
 rgb rgb_i = GREEN;
 rgb rgb_i1 = BLUE;
 ubyte cnt = 8'hFF;
 initial begin
    $display ("rgb_i=%s rgb_i1=%s uI=0x%0h uI1=0x%0h cnt=%0d", 
rgb_i.name( ), rgb_i1.name( ), uI, uI1, cnt);
 end
 endmodule

Simulation log:

rgb_i=GREEN rgb_i1=BLUE uI=0xfacecafe uI1=0xcafeface cnt=255
 V C S S i m u l a t i o n R e p o r t


Example 1:
module中聲明了三種不同的“類型定義”。
第一個typedef是

typedef integer unsigned u_integer;

然后聲明兩個類型為“u_integer”的變量u1和uI1并
初始化:

u_integer uI = 32'h face_cafe;
u_integer uI1 = 32'h cafe_face;

第二個typedef是

typedef enum {RED, GREEN, BLUE} rgb;

聲明兩個變量" rgb_i "和" rgb_i1 "并初始化:

rgb rgb_i = GREEN;
rgb rgb_i1 = BLUE;

最后一個typedef

typedef bit [7:0] ubyte;

聲明一個變量cnt 并初始化

ubyte cnt = 8'hFF;

上面的幾個例子還不是很好地體現(xiàn)typedef的好處,最大的優(yōu)勢體現(xiàn)在更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)上上。

Example 1:

typedef struct {
 bit [31:0] opcode;
 bit R_W;
 logic byteEnb;
 integer data;
 integer addr;
 } read_cycle;
 read_cycle rC;

Example 2:

typedef int data_t [3:0][7:0];
data_t a;

Example 3:

typedef int Qint[$];
 Qint DynamicQ[ ]; // same as int DynamicQ[ ][$];

Example 4:

typedef struct packed {
 bit [3:0] s1;
 bit s2;
 } myStruct;
 typedef union {
 logic [7:0] u1;
 myStruct b2;
 } mUnionT;
 mUnionT Union1;

審核編輯:湯梓紅

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70747
  • typedef
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    9720

原文標(biāo)題:SystemVerilog 中的typedef

文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    Typedef的用途和原聲明舉例及陷阱分析

    typedef是一種在計算機(jī)編程語言中用來聲明自定義數(shù)據(jù)類型,配合各種原有數(shù)據(jù)類型來達(dá)到簡化編程的目的的類型定義關(guān)鍵字。本文主要介紹的是Typedef的用途和陷阱,供參考。 在編程中使
    發(fā)表于 04-14 07:34 ?1342次閱讀
    <b class='flag-5'>Typedef</b>的用途和原聲明舉例及陷阱分析

    C語言#define和typedef的區(qū)別

    在C語言編程中,typedef 和 #define是最常用語句,可能很多工作過幾年的工程師都沒有去深究過它們的一些用法和區(qū)別。
    發(fā)表于 11-03 10:29 ?842次閱讀

    typedef的使用【轉(zhuǎn)】

    typedef給變量類型定義一個別名.typedef struct{ int a; int b; }MY_TYPE; 這里把一個未命名結(jié)構(gòu)直接取了一個叫MY_TYPE的別名, 這樣如果你想定義結(jié)構(gòu)的實例
    發(fā)表于 07-27 11:06

    Typedef用法小結(jié)

    非常不錯的文檔有著基本數(shù)據(jù)類型結(jié)構(gòu)體enum與函數(shù)指針等等的Typedef相關(guān)用法.
    發(fā)表于 11-02 11:36 ?19次下載

    typedef是什么意思

    typedef是在計算機(jī)編程語言中用來為復(fù)雜的聲明定義簡單的別名,與宏定義有些差異。它本身是一種存儲類的關(guān)鍵字,與auto、extern、mutable、static、register等關(guān)鍵字不能出現(xiàn)在同一個表達(dá)式中。
    發(fā)表于 11-09 14:03 ?1.6w次閱讀
    <b class='flag-5'>typedef</b>是什么意思

    typedef的用法

    typedef 有一個重要的用途,那就是定義機(jī)器無關(guān)的類型,例如,你可以定義一個叫 REAL 的浮點類型,在目標(biāo)機(jī)器上它可以獲得最高的精度:typedef long double REAL;
    發(fā)表于 11-09 16:32 ?2263次閱讀

    typedef結(jié)構(gòu)體定義

    typedef為這個新的結(jié)構(gòu)起了一個名字,叫MyStruct。typedef struct tagMyStruct MyStruct;因此,MyStruct實際上相當(dāng)于struct
    發(fā)表于 11-09 16:55 ?7762次閱讀

    typedef struct的用法

    typedef是類型定義的意思。typedef struct 是為了使用這個結(jié)構(gòu)體方便。具體區(qū)別在于:若struct node{ }這樣來定義結(jié)構(gòu)體的話。在定義 node 的結(jié)構(gòu)體變量時,需要這樣寫:struct node n;
    發(fā)表于 11-09 17:20 ?3619次閱讀

    typedef和define的介紹及本質(zhì)區(qū)別

    對于都可以用來給對象取一個別名的Typedef和define來說,是有區(qū)別的。本文通過對typedef和define的介紹,來給讀者詳細(xì)的講解它們存在的本質(zhì)區(qū)別,供參考。 typedef 是一種在
    發(fā)表于 04-14 07:31 ?5287次閱讀

    typedef的用法以及復(fù)雜聲明

    c語言中typedef的用法是為了為已知類型提供新類型,在ansi c標(biāo)準(zhǔn)中typedef被歸為存儲類關(guān)鍵字,也即是說在進(jìn)行typedef 聲明的時候,在本來出現(xiàn)在存儲類的位置的標(biāo)識符不能再出現(xiàn)其他
    發(fā)表于 03-10 16:58 ?1342次閱讀

    C typedef 看完這篇就夠了

    原文鏈接:為什么很多人編程喜歡用typedef?typedef 的基本使用typedef與結(jié)構(gòu)體的結(jié)合使用typedef 是 C 語言的一個關(guān)鍵字,用來給某個類型起個別名,也就是給C語
    發(fā)表于 11-16 16:06 ?14次下載
    C  <b class='flag-5'>typedef</b> 看完這篇就夠了

    C語言學(xué)習(xí)筆記---typedef 簡介

    ?? 在單片機(jī)和操作系統(tǒng)中 typedef 會經(jīng)常用到,它可以為某一個類型自定義名稱。和#define比較類似。但是又有不同的地方。typedef 創(chuàng)建的符號只能用于數(shù)據(jù)類型,不能用于值。而
    發(fā)表于 01-13 13:26 ?1次下載
    C語言學(xué)習(xí)筆記---<b class='flag-5'>typedef</b> 簡介

    C語言中的typedef的用法

    在以前的學(xué)習(xí)中對于C語言中typedef和define的認(rèn)識是,#define是宏,作用是簡單的替換,而typedef也是替換,只不過比define高級的是在替換的時候會進(jìn)行語法檢查。但是后來
    發(fā)表于 01-13 13:36 ?0次下載
    C語言中的<b class='flag-5'>typedef</b>的用法

    typedef與#define有什么差異嗎

    大部分朋友在編寫代碼的時候都會把無符號類型、結(jié)構(gòu)體等等進(jìn)行"簡化",要么用宏定義進(jìn)行文本替換,要么就通過typedef來定義一個類型別名。
    的頭像 發(fā)表于 08-11 14:34 ?1640次閱讀
    <b class='flag-5'>typedef</b>與#define有什么差異嗎

    C語言中的typedef的應(yīng)用

    C 語言提供了 typedef 關(guān)鍵字,您可以使用它來為類型取一個新的名字。下面的實例為單字節(jié)數(shù)字定義了一個術(shù)語 BYTE。
    發(fā)表于 03-06 11:34 ?614次閱讀
    C語言中的<b class='flag-5'>typedef</b>的應(yīng)用