SystemVerilog验证 测试平台编写指南 第二章学习笔记(一)

本文是SystemVerilog验证测试平台编写指南的学习笔记,主要介绍内建数据类型,如logic、双状态数据类型,以及定宽数组、动态数组、队列、关联数组等,并探讨了不同类型在存储、性能和灵活性方面的权衡。
摘要由CSDN通过智能技术生成

2.1 内建数据类型

Verilog 1995,两个基本数据类型:

1. 变量:如reg,integer,time,real。

2.线网:如wire。

各有四种取值:0,1,X,Z。

2.1.1 logic

logic:SV中针对Verilog中的reg改进后的数据类型。

与reg相比,可以被连续赋值,门单元驱动,模块驱动。

注意:logic不可以被多个结构驱动,如双向总线需要使用wire类型。

logic的使用:

module logic_data_type(input logic rst_h);
    parameter CYCLE=20;
    logic q,q_1,d,clk,rst_l;
    initial begin
        clk=0;                            //过程赋值
        forever # (CYCLE/2) clk=~clk;
    end
    
    assign rst_l=~rst_h;          //连续赋值
    not n1(q_1,q);               //门驱动
    my_dff d1(q,d,clk,rst_l);    //模块驱动
endmodule

2.1.2 双状态数据类型

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

双状态数据类型如下:

bit: 单比特无符号。

byte:8比特有符号整数。

shortint:16比特有符号整数。

int:32比特有符号整数。

longint:64比特有符号整数。

real:双精度浮点数。

对四状态值的检查:使用$isunknown,可以在表达式任意位出现X或Z时返回1。

2.2 定宽数组

2.2.1 定宽数组的声明和初始化

int lo_hi[0:15];
int c_style[16];

数组元素的缺省值:四状态返回X,双状态返回0。

线网无驱动时输出Z。

2.2.2 常量数组

使用常量数组初始化一个数组:

int ascend[4]='{0,1,2,3};
int descend[5];

descend='{4,3,2,1,0};
descend[0:2]='{5,6,7};

ascend='{4{8}};       

descend='{9,8,default:1};  //{9,8,1,1,1}

2.2.3 for foreach

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值