SystemVelog学习随记(三)

数据类型

SystemVerilog新引进数据类型的优点:

  1. 双状态数据类型:更好的性能,更低的内存消耗。

  1. 队列、动态和关联数组:减少内存消耗、自带搜索和分类功能。

  1. 类和结构:支持抽象的数据结构。

  1. 联合和合并结构:允许对同一数据有多种试图。

  1. 字符串:支持内建的字符序列。

  1. 枚举类型:方便代码编写,增加可读性。

Verilog数据类型

  1. 变量:4种取值:0,1,X,Z;可以是单比特或多比特无符号数(reg),32比特有符号数(integer),64比特无符号数(time)或浮点数(real),若干变量可以放到定宽数组中,所有存储都是静态的,意味着所有变量在仿真过程中都是存活的,子程序不能通过堆栈来保存形式参数和局部变量。

  1. 线网:用来连接设计中的不同部分。

SystemVerilog数据类型

逻辑类型 Logic

Logic除了能作为变量之外,还能被连续赋值、门单元和模块所驱动。任何使用“线网”的地方都能使用logic,但logic不能有多个结构性的驱动, 双向总线时应使用wire。

示例如下:

module logic_data_type(input logic rst_h);
    parameter CYCLE = 20;
    logic q,q_l,d,clk,rst_l;
    initial beign
        clk = 0;
        forever #(CYCLE/2) clk = ~clk;//原reg类型
    end

    assign rst_l = ~rst_h;            //原wire类型
    not n1(q_l,q);
    mt_dff d1(q,d,clk,rst_l);
endmodule
  • 注:由于logic只能有一个驱动,所以可以用来查找网单中的漏洞,将reg和wire声明成logic类型, 如果存在多个驱动,编译时则会出错。

双状态数据类型

双状态的数据类型有利于提高仿真器的性能并减少内存的使用量。

常见的数据类型介绍:

  • bit b; //双状态,单比特;

  • bit [31:0] b32; //双状态,32比特无符号整数;

  • int unsigned ui; //双状态,32比特无符号整数;

  • int i; //双状态,32比特有符号整数;

  • byte b8; //双状态,8比特有符号整数;

  • shortint s; //双状态,16比特有符号整数;

  • longint l; //双状态,64比特有符号整数;

  • integer i4 //四状态,32比特有符号整数;

  • time t; //四状态,64比特无符号整数;

  • real r; //双状态,双精度浮点数;

在进行随机化时,带符号变量可能会造成意想不到的结果,使用时要注意!

把双状态变量连接到被测设计时,尤其是被测设计的输出时,务必要小心。如果被测设计试图产生X或者Z,这些值会被转化为双状态值,而测试代码可能永远都察觉不了。使用($isunknown)操作符,可以在表达式的任意位置出现X或Z时返回1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值