在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3506|回复: 6

[求助] system verilog 随机约束求助

[复制链接]
发表于 2013-12-18 11:25:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我想对随机产生的40位地址做如下约束:   rand bit[39:0] addr;
   1,地址在某范围内,这个简单,addr inside [·addr_start: ·addr_end];
   2,  所产生的地址不能重复,

   3,addr[18:6]相同的地址个数不能超过8个,因为addr[18:6]是cacheline的index,cache是8路组相联的。
这个约束应该如何写呢?随机的次数会上千次,因此要保证求解速度。
    多谢!
发表于 2013-12-19 09:44:05 | 显示全部楼层
2,用randc
3,可以定义randc bit [12:0] my_addr [8];
     constraint addr_c {addr[18:6] == my_addr[0];
                                   addr[18:6] == my_addr[1]; ...}
     constraint order_c {solve my_addr before addr;}
发表于 2013-12-19 10:04:19 | 显示全部楼层




   randc bit [26:0]  my_addr;   constraint  my_addr_cons { my_addr[26:20] == 0;}
   rand  bit [12:0]  cacheline_index[8];

    final[39:0] = {my_addr[26:6], cacheline_index[$idx], my_addr[5:0]};

   大概应该这样子, 对cacheline之外的地址用randc产生排列,再把cacheline_index插进去. 我感觉这个应该是楼主的意图吧?
发表于 2013-12-19 10:43:25 | 显示全部楼层
回复 3# small_wood
嗯对的
发表于 2013-12-19 22:24:15 | 显示全部楼层
回复 2# hbhbts


   在VCS中 randc 类型的变量 用在  solve before 中编译不能通过
发表于 2013-12-19 22:42:47 | 显示全部楼层
想了一个笨方法,有点繁琐。。。
class trans;
randc bit [39:19] AH;
rand bit [18:6] AM;
rand bit [5:0] AL;
//定义一个关联数组array来记录AM产生次数
static int array(bit [12:0]);
constraint a_range { AH>addr_start;AH<addr_end;}
//定义函数检查数据是否超过8次
virtual function  bit is_valid();
  array[AM]++;
  if(array[AM]>8)
     return 1;
  else  return 0;
endfunction
endclass

在gen里面调用is_valid检查有效性
class gen;
....
repeat(20000) begin
    trans addr=new();
    assert(addr.randomize());
    while(addr.is_valid) assert(addr.randomize());
...
end
endclass
发表于 2022-1-8 11:44:54 | 显示全部楼层
用system Verilog随机约束成0或1,我用的$urandom_range(0,1),打印出来不对,求助各位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 07:11 , Processed in 0.023136 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表