微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 请教constraint

请教constraint

时间:10-02 整理:3721RD 点击:
class ctrl_seq_cfg extends ctrl_seq_base;

rand bit [13:0]data0;
rand bit [13:0]data1;

constraint c_data0{ data0<= 14'd4096; data0>= -14'd4096;}
constraint c_data1{ data1<= 14'd4096; data1>= -14'd4096;}
请教,定义位宽为14bit的数据rand bit,是不是就不能限制 data0>= -14'd4096;
如何解决这个问题呢?应该如何定义?

定义成int 型

信号是14bit的,我可以定义
rand int [13:0]data0; ?不对吧。
应该如何处理呢?

接口的信号只能是14bit,我必须定义int,然后用的时候,截取低14bit?

是的,用的时候截取,其实不用做多余的工作,用的时候直接赋值就可以了,

你要是用uvm的话,直接定义成rand bit [13:0],然后注册的时候用`uvm_field_int注册就可以了

单纯sv的话就写成rand int ,用的时候截取就对了,毕竟截取是按照无符号数截取,就是说每个bit值不会动,原封不动赋值过去,这样你看到的该是正还是正,该是负数还是负数

非常感谢,我已经用另一种方法实现了
constraint c_data0{ (data0 [13:12]==2'b00) | (data0 [13:12]==2'b11 ) ; }
constraint c_data1{ (data1 [13:12]==2'b00) | (data1 [13:12]==2'b11 ) ; }

这样是可以的,但是这种方法更类似rtl设计而不是验证

keyide



其实直接复制给出范围就行了,你只是要得到一个范围内的值而已

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top