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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3087|回复: 7

[求助] 急求大神来解答vcs的随机化问题,谢谢了

[复制链接]
发表于 2014-7-17 10:18:48 | 显示全部楼层 |阅读模式

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

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

x
class dmx512_trans;
typedef enum {normal_full,normal_one,error_case1,error_case2} kind;

rand bit[10:0] strobe[];
rand bit[7:0] data;
rand kind transaction;
const bit start=1'b0;
const bit [1:0] stop=2'b11;
constraint c {
    if(transaction==normal_full)
       {
            foreach (strobe[i])
            strobe[i]=={start,data,stop};
            strobe.size()==512;                       
           }
          
    else if (transaction==normal_one)
        {
                 foreach (strobe[i])
            strobe[i]=={start,data,stop};
                        strobe.size()==1;
                }
       
    else if (transaction==error_case1)
            {
                 foreach (strobe[i])
            strobe[i]=={start,data,stop};
                        strobe.size()==2;
                }
    else
            {
                 foreach (strobe[i])
            strobe[i]=={start,data,stop};
                        strobe.size()==2;
                }
}
endclass
我想把每次得到的strobe数组里面的数值不一样,但是我用DVE仿真,得到的是每一种case里面的strobe数组数值是一样的,我特别希望每一组数组里面的中间8位data不一样,程序应该怎么改啊,谢谢了,各位大神!
 楼主| 发表于 2014-7-17 10:51:58 | 显示全部楼层
自顶一下,希望好心人帮帮忙啊
 楼主| 发表于 2014-7-17 12:16:48 | 显示全部楼层
求朋友给个意见呢,谢谢
发表于 2014-7-17 12:59:01 | 显示全部楼层
按照你的写法,dmx512_trans 在randomize后只能产生确定的唯一一组data、start和stop,所以每种case里的strobe数组数值都相同。应该定义data[],然后将strobe[i]约束等于{start,data[i],stop},或者在post_randomize里赋值。
 楼主| 发表于 2014-7-17 13:43:36 | 显示全部楼层
回复 4# xd_hg

谢谢楼上的答复! 我现在在class里定义了一个tmp_data的变量,然后在约束里,使data==tmp_data+1;然后在post_randomize()函数里使tmp_data=tmp_data+1,这样定义的话,每一个case的strobe里数组的值,data还是一样的,只是这次这个case的data=0,下一次随机出来的这个case里的data值就是1,还有就是楼主前面一种方法,申明data[],还是有点不懂,能具体说明一下吗?谢谢
发表于 2014-7-17 20:23:53 | 显示全部楼层
本帖最后由 xd_hg 于 2014-7-17 20:25 编辑

回复 5# gsylogo


   定义数组strobe的size一样的动态数组data[],只要data随机产生,那么约束strobe\[i\] == {start,data\[i\],stop}后,strobe\[i\]就随机化了。
至于怎么让每个data值不一样,就需要你自己先想办法呢
 楼主| 发表于 2014-7-18 15:06:19 | 显示全部楼层
回复 6# xd_hg


    恩,谢谢啊,我昨天试了下这么写,OK了,
发表于 2014-7-21 10:24:43 | 显示全部楼层
实际上,我觉得可以在 postrandom 之后来实现。需要产生8路不同数据的,这个需要在 postrandom 之后发挥想象力
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-15 01:34 , Processed in 0.019544 second(s), 6 queries , Gzip On, Redis On.

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