" typedef "僅僅意味著提供一個(gè)類型名,可以簡(jiǎn)單地理解為文本替換,提高代碼的可讀性。
typedef existing_type mytype;
例如:
typedef enum {NO, YES} boolean;
boolean myvar1, myvar2; // user-defned type
等價(jià)于
enum {NO, YES} myvar1,myvar2;
下面是一個(gè)簡(jiǎn)單的例子:
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中聲明了三種不同的“類型定義”。
第一個(gè)typedef是
typedef integer unsigned u_integer;
然后聲明兩個(gè)類型為“u_integer”的變量u1和uI1并
初始化:
u_integer uI = 32'h face_cafe; u_integer uI1 = 32'h cafe_face;
第二個(gè)typedef是
typedef enum {RED, GREEN, BLUE} rgb;
聲明兩個(gè)變量" rgb_i "和" rgb_i1 "并初始化:
rgb rgb_i = GREEN; rgb rgb_i1 = BLUE;
最后一個(gè)typedef
typedef bit [7:0] ubyte;
聲明一個(gè)變量cnt 并初始化
ubyte cnt = 8'hFF;
上面的幾個(gè)例子還不是很好地體現(xiàn)typedef的好處,最大的優(yōu)勢(shì)體現(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;
審核編輯:湯梓紅
-
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
73999 -
typedef
+關(guān)注
關(guān)注
0文章
26瀏覽量
9881
原文標(biāo)題:SystemVerilog 中的typedef
文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Typedef的用途和原聲明舉例及陷阱分析
C語(yǔ)言#define和typedef的區(qū)別
typedef的使用【轉(zhuǎn)】
Typedef用法小結(jié)
typedef是什么意思
typedef的用法
typedef結(jié)構(gòu)體定義
typedef struct的用法
typedef和define的介紹及本質(zhì)區(qū)別
typedef的用法以及復(fù)雜聲明
C typedef 看完這篇就夠了
C語(yǔ)言學(xué)習(xí)筆記---typedef 簡(jiǎn)介
C語(yǔ)言中的typedef的用法
typedef與#define有什么差異嗎
C語(yǔ)言中的typedef的應(yīng)用
typedef的應(yīng)用實(shí)例
評(píng)論