0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

typedef的应用实例

芯片验证工程师 来源:芯片验证工程师 作者:芯片验证工程师 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;

上面的几个例子还不是很好地体现typedef的好处,最大的优势体现在更复杂的数据结构上上。

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;

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4786

    浏览量

    68557
  • typedef
    +关注

    关注

    0

    文章

    26

    浏览量

    9540

原文标题:SystemVerilog 中的typedef

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Typedef的用途和原声明举例及陷阱分析

    typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。本文主要介绍的是Typedef的用途和陷阱,供参考。 在编程中使
    发表于 04-14 07:34 1194次阅读
    <b class='flag-5'>Typedef</b>的用途和原声明举例及陷阱分析

    C语言#define和typedef的区别

    在C语言编程中,typedef 和 #define是最常用语句,可能很多工作过几年的工程师都没有去深究过它们的一些用法和区别。
    发表于 11-03 10:29 676次阅读

    typedef的使用【转】

    typedef给变量类型定义一个别名.typedef struct{ int a; int b; }MY_TYPE; 这里把一个未命名结构直接取了一个叫MY_TYPE的别名, 这样如果你想定义结构的实例
    发表于 07-27 11:06

    Typedef用法小结

    非常不错的文档有着基本数据类型结构体enum与函数指针等等的Typedef相关用法.
    发表于 11-02 11:36 19次下载

    typedef是什么意思

    typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。
    发表于 11-09 14:03 1.5w次阅读
    <b class='flag-5'>typedef</b>是什么意思

    typedef的用法

    typedef 有一个重要的用途,那就是定义机器无关的类型,例如,你可以定义一个叫 REAL 的浮点类型,在目标机器上它可以获得最高的精度:typedef long double REAL;
    发表于 11-09 16:32 2152次阅读

    typedef结构体定义

    typedef为这个新的结构起了一个名字,叫MyStruct。typedef struct tagMyStruct MyStruct;因此,MyStruct实际上相当于struct
    发表于 11-09 16:55 7527次阅读

    typedef struct的用法

    typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于:若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n;
    发表于 11-09 17:20 3377次阅读

    typedef和define的介绍及本质区别

    对于都可以用来给对象取一个别名的Typedef和define来说,是有区别的。本文通过对typedef和define的介绍,来给读者详细的讲解它们存在的本质区别,供参考。 typedef 是一种在
    发表于 04-14 07:31 5095次阅读

    typedef的用法以及复杂声明

    c语言中typedef的用法是为了为已知类型提供新类型,在ansi c标准中typedef被归为存储类关键字,也即是说在进行typedef 声明的时候,在本来出现在存储类的位置的标识符不能再出现其他
    发表于 03-10 16:58 1193次阅读

    C typedef 看完这篇就够了

    原文链接:为什么很多人编程喜欢用typedeftypedef 的基本使用typedef与结构体的结合使用typedef 是 C 语言的一个关键字,用来给某个类型起个别名,也就是给C语
    发表于 11-16 16:06 14次下载
    C  <b class='flag-5'>typedef</b> 看完这篇就够了

    C语言学习笔记---typedef 简介

       在单片机和操作系统中 typedef 会经常用到,它可以为某一个类型自定义名称。和#define比较类似。但是又有不同的地方。typedef 创建的符号只能用于数据类型,不能用于值。而
    发表于 01-13 13:26 1次下载
    C语言学习笔记---<b class='flag-5'>typedef</b> 简介

    C语言中的typedef的用法

    在以前的学习中对于C语言中typedef和define的认识是,#define是宏,作用是简单的替换,而typedef也是替换,只不过比define高级的是在替换的时候会进行语法检查。但是后来
    发表于 01-13 13:36 0次下载
    C语言中的<b class='flag-5'>typedef</b>的用法

    typedef与#define有什么差异吗

    大部分朋友在编写代码的时候都会把无符号类型、结构体等等进行"简化",要么用宏定义进行文本替换,要么就通过typedef来定义一个类型别名。
    的头像 发表于 08-11 14:34 1361次阅读
    <b class='flag-5'>typedef</b>与#define有什么差异吗

    C语言中的typedef的应用

    C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE。
    发表于 03-06 11:34 386次阅读
    C语言中的<b class='flag-5'>typedef</b>的应用