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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 762|回复: 13

[求助] 随机一个数组,只要有两个0出现,在第三个0出现前必须有个1

[复制链接]
发表于 2025-7-16 17:35:31 | 显示全部楼层 |阅读模式

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

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

×
如何写约束实现如下,随机一个数组,数组的值的范围是[0:5],只要有两个0出现,在第三个0出现前必须有个1,谢谢!

目前只能写出 foreach(array[i]) {if(i > 2) (array[i] | array[i-1] | array[i-2]) != 0;}   但是数组中运行的值不仅仅有0和1,还有其他值,所以这条约束就不大适用了。
 楼主| 发表于 2025-7-25 16:25:40 | 显示全部楼层


   
akqkq 发表于 2025-7-20 16:56
但你可以分两次随机,先随机好这3N个数,然后来随机其他的由它们决定的其他值,这个类似于pre-randomize
...


嗯嗯,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-25 16:22:04 | 显示全部楼层


   
我是刀客的刀 发表于 2025-7-21 11:52
lenRange = 1000;//随机数组的长度
bit[2:0] curArray[$];
for(int i=0;i=3)begin


谢谢!
回复 支持 反对

使用道具 举报

发表于 2025-7-21 11:52:27 | 显示全部楼层
lenRange = 1000;//随机数组的长度
bit[2:0] curArray[$];
for(int i=0;i<lenRange;i++)begin
    curArray.push_back($urandom_range(0,5));
    if(i>=3)begin
         if(curArray[i-1]==0&&curArray[i-2]==0)begin
             curArray[i] = 3'b1;
         end
    end
end
回复 支持 反对

使用道具 举报

发表于 2025-7-20 16:56:22 | 显示全部楼层


   
枫舞 发表于 2025-7-18 17:20
谢谢,有这样考虑过。但是transaction中其实还有其他变量数组,当array中的值为0或者1,或者2时,同时约 ...


但你可以分两次随机,先随机好这3N个数,然后来随机其他的由它们决定的其他值,这个类似于pre-randomize
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-18 17:20:58 | 显示全部楼层


   
akqkq 发表于 2025-7-17 20:05
我提供个思路:你先正常随机,然后遍历这个array,找到第三个0,然后把这个0 replace成1 。然后counter置0  ...


谢谢,有这样考虑过。但是transaction中其实还有其他变量数组,当array中的值为0或者1,或者2时,同时约束其他值的随机,好像不能单独的修改这个值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-18 17:18:20 | 显示全部楼层


   
daviehj 发表于 2025-7-17 15:10
再一条约束把值圈死,应该就可以 foreach(xxx) {xxx inside {[0:1]};


这个应该可以,我试一下,谢谢
回复 支持 反对

使用道具 举报

发表于 2025-7-18 16:06:46 | 显示全部楼层
先随机出来,在根据规则进行后处理是一个好的思路
回复 支持 反对

使用道具 举报

发表于 2025-7-17 20:05:52 | 显示全部楼层
我提供个思路:你先正常随机,然后遍历这个array,找到第三个0,然后把这个0 replace成1 。然后counter置0 ,循环这个操作,直到array的尾巴
回复 支持 反对

使用道具 举报

发表于 2025-7-17 15:10:15 | 显示全部楼层
再一条约束把值圈死,应该就可以 foreach(xxx[i]) {xxx[i] inside {[0:1]};
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-9-21 09:55 , Processed in 0.022151 second(s), 5 queries , Gzip On, Redis On.

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