A summary of Change in systemverilog 2012

ref:http://www.sutherland-hdl.com/papers/2012-DAC_What-is-new-in-SystemVerilog-2012.pdf

(只提取一些目前自己感觉比较实用的地方)

1.构造函数new

从前

想要用一个父类handle指向一个子类的object,需要三步


现在

通过 typed new()可以直接完成:

base_trans t_base = reset_trans::new;

2.class成员可以使用非阻塞赋值

3.soft constraints

从前

所有的constraint都是 “硬约束”,每一条都必须遵守,如果某两条约束之间有冲突,那么随机结束会报错

现在

提供关键字"soft",作为软约束,如果有软约束与其它约束有冲突,该条软约束将被忽略。


4.uniqueness constraints

从前

如果想要几个变量,或一个数组中的所有成员在随机的时候取值相互之间不相等,没有直接的方法可以解决。

现在

通过关键字"unique"实现多个变量取值互不相等的约束:

5.parameterized methods/types

从前

task/function在调用时没办法使用不同的parameter value,从而很多时候需要写很多功能相同的task/funcion,比如处理32、64、128位宽的数据

现在

static class methods能够像module instance一样,传parameter.

有点类似参数化类的方法

6.在let macro中可以显示申明untyped argument

关键字“uptyped”申明untyped 变量, 变量的类型由调用let macro时传进的实参的类型决定


7.在for-loops中使用var type()

从前

在for-loops中的iterator必须给定一个数据类型

现在

iterator的类型可以depends on 其它变量的数据类型


8.ref args可以使用dynamic arrays

从前

task/function 的ref argument如果是数据,则必须是定宽数组

现在

可以指向dynamicall-sized arrays


9.增强系统函数$countbits

从前

$countbits只能计算1了bits数目

现在

$countbits可以yfth0,1,x,z的数目:

$countbits(data, 'x, 'z)  ==>计算data中x和z的bit数据

10.在coverage function中Coverpoint的bin可以使用with

bins...with()可能用于去剔除不需要覆盖的数值。类似于ignore_bins的作用,但更为方便


11.增强assertion/sample 的data type

从前

assertion或$sample()都没办法使用real以及动态数据等

现在

支持real, dynamic arrays, static class properties:

12.在即时断言中使用final

从前

即时断言可能受到glitch的干扰,需要想办法在同一时刻因为combinational logic造成的glitch的干扰:如下:


现在

通过加上关键字"final",消除所有的glitch


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值