" typedef "僅僅意味著提供一個(gè)類型名,可以簡單地理解為文本替換,提高代碼的可讀性。
typedef existing_type mytype;
例如:
typedef enum {NO, YES} boolean; boolean myvar1, myvar2; // user-defned type
等價(jià)于
enum {NO, YES} myvar1,myvar2;
下面是一個(gè)簡單的例子:
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)勢體現(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文章
4837瀏覽量
69126 -
typedef
+關(guān)注
關(guān)注
0文章
26瀏覽量
9564
原文標(biāo)題:SystemVerilog 中的typedef
文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Typedef的用途和原聲明舉例及陷阱分析
![<b class='flag-5'>Typedef</b>的用途和原聲明舉例及陷阱分析](https://file.elecfans.com/web1/M00/4F/13/o4YBAFrRX1KALBcxAAOI-E-hBFY176.png)
C語言#define和typedef的區(qū)別
typedef的使用【轉(zhuǎn)】
Typedef用法小結(jié)
typedef是什么意思
![<b class='flag-5'>typedef</b>是什么意思](https://file1.elecfans.com//web2/M00/A6/E0/wKgZomUMQQaAbmQWAAA9JdRmBao709.png)
typedef的用法
typedef結(jié)構(gòu)體定義
typedef struct的用法
typedef和define的介紹及本質(zhì)區(qū)別
typedef的用法以及復(fù)雜聲明
C typedef 看完這篇就夠了
![C <b class='flag-5'>typedef</b> 看完這篇就夠了](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語言學(xué)習(xí)筆記---typedef 簡介
![C語言學(xué)習(xí)筆記---<b class='flag-5'>typedef</b> 簡介](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語言中的typedef的用法
![C語言中的<b class='flag-5'>typedef</b>的用法](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
typedef與#define有什么差異嗎
![<b class='flag-5'>typedef</b>與#define有什么差異嗎](https://file.elecfans.com/web2/M00/5E/6A/pYYBAGL0oiKAF0AlAAB94J8Fr1A803.png)
C語言中的typedef的應(yīng)用
![C語言中的<b class='flag-5'>typedef</b>的應(yīng)用](https://file1.elecfans.com/web2/M00/C3/B9/wKgaomXn5LGAbFesAAAe4pvOxcc159.png)
評(píng)論