SystemVerilog基础(1):数据类型

目录

一、 Verilog  HDL中的数据类型

二、SystemVerilog的内建数据类型

  1. 逻辑类型:logic

  2. 双状态数据类型:bit, byte, shortint, int, longint

  3. 分类

  4. 注意事项

  5. 类型转换

    (1)隐式转换

    (2)显式转换

  (a)静态转换( ' )

  (b)动态转换( $cast )

三、定宽数组

  1. 定宽数组的声明

  2. 多维数组的维度和$size

  3. 合并数组、非合并数组

  4 定宽数组的初始化

  5. 数组的基本操作:foreach

四、动态数组

   1. 动态数组的声明

   2. 动态数组的初始化 

   3. 动态数组的其他操作

五、队列

六、关联数组

七、数组的方法


一、 Verilog  HDL中的数据类型

    Verilog HDL中有19种数据类型:

    1. 物理数据类型(与实际硬件电路映射)

        (1)线网(net)类型

                  ① wire, tri:标准连线型

                  ② wor, trior:多重驱动时,具有线或特性的连线型

                  ③ wand, trand:多重驱动时,具有线或特性的连线型

                  ④ trireg:具有电荷保持特性的连线型(用于电容节点的建模,缺省初始值为x)

                  ⑤ tri1, tri0:上拉/下拉电阻(若无驱动源,值为1/0)

                  ⑥ supply1, supply0:对电源(VCC)/地(GND)建模,即高电平1/低电平0

        (2)寄存器型:reg

        (3)存储器型:mem

    2. 抽象数据类型(辅助设计和验证)

        (1)整型:integer(32位有符号整数)

        (2)时间型:time(64位无符号数)

        (3)实型:real

        (4)参数型:parameter

二、SystemVerilog的内建数据类型

    SystemVerilog增加了很多新的数据类型,方便设计和验证:

    (1)双状态数据类型:提高仿真器性能,减少内存消耗

    (2)队列、动态数组、关联数组:减少内存消耗,自带搜索和分类功能

    (3)类和结构:抽象数据结构

    (4)字符串

    (5)枚举类型:增强代码可读性

  1. 逻辑类型:logic

        (1)可以由过程赋值语句或连续赋值语句赋值、被门单元和模块驱动

        (2)只能有一个驱动(否则编译时会报错)

  2. 双状态数据类型:bit, byte, shortint, int, longint

  3. 分类

        (1)逻辑类型

                四值逻辑:net-type(wire等),reg,integer,logic

                二值逻辑:bit,byte,shortint,int,longint

              * 四值逻辑 → 硬件(硬件设计)

              * 二值逻辑 → 软件(验证环境)

        (2)符号类型

                  有符号类型:integer,byte,shortint,int,longint

                  无符号类型:net-type,reg,bit,logic

  4. 注意事项

        (1)避免有符号变量、无符号变量的混用

                 例:

byte        signed_vec ;  // 8位有符号变量
bit [8:0]   result_vec ;  // 9位无符号变量

initial begin
    signed_vec   = 8'h80 ;
    result_vec   = signed_vec ;             // 'h180
    result_vec   = unsigned'(signed_vec) ;  // 'h080 
end

        (2)把双状态变量连接到被测设计的输出时,应检查未知值的传播

                 例:

logic [3:0]   x_vec = 'b111x ;
bit   [2:0]   b_vec          ;

initial begin
    b_vec = x_vec ;  // 'b110 (x → 0) 
end

  Tips: $isunknown( )可以在表达式的任意位出现X或Z时返回1。

5. 类型转换

systemverilog中的类型转换$cast_systemverilog string转int怎么实现-CSDN博客

    (1)隐式转换

               Verilog对整数和实数类型,或不同位宽的向量之间进行隐式转换。

    (2)显式转换

               (a)静态转换( ' )

                        静态转换在编译时完成,不对转换值进行检查。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值