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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6586|回复: 12

[讨论] OVM验证的一个问题

[复制链接]
发表于 2011-7-21 09:58:06 | 显示全部楼层 |阅读模式

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

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

x
用OVM 构造一个以太网packet 的class,

包长度在【64:1518】随机变化,

再约束包的数据内容为增量,

    rand bit [7:0] data[];

    constraint payload_size_c { data.size inside { [64 : 1518]};}
   
    constraint length_c {  length == data.size; }
                     
       constraint data_c {  foreach ( data [ i ] ) data[i] == i ; }

现在的问题是:

仿真时,如果data 动态数组的长度上限为260左右时,仿真结果正确,

超过260. 则经常出现所有的rand 类型的变量都为0 ,

感觉是对包的长度的约束和内容的约束有冲突,

不能同时设置,


请问有遇到这个问题的同学吗?
发表于 2011-7-21 10:50:45 | 显示全部楼层
问题应该出在这句上:
  constraint data_c {  foreach ( data [ i ] ) data[i] == i ; }
改成:
  constraint data_c {  foreach ( data [ i ] ) data[i] == i %256 ; }
就可以了吧。

应为 “==" 约束是双向的,如果i 大于256的话,就会超出bit [7:0] 所能表达的范围,造成
data_c 无解,就会产生错误。
 楼主| 发表于 2011-7-21 10:59:55 | 显示全部楼层
谢谢回复,

我测试一下。。。
 楼主| 发表于 2011-7-21 11:45:30 | 显示全部楼层




    测试了,

还是有问题,

估计不是因为这个的缘故,


rand bit [7:0] data [];

bit[7:0] 是数组的 packed 的部分,

而 constraint data_c {  foreach ( data [ i ] ) data == i   ; } 约束的是 data 数组的 unpacked 的部分 data [];

将其改为 rand byte data [] ;

也还是一样,


可能是多重约束的运行时间的冲突,

因为不是所有包的都有问题,

超过260以后 2个正确包中间会夹杂几个包长和内容都为0的包
发表于 2011-7-21 11:55:56 | 显示全部楼层
呵呵,你改成rand bit [15:0] data [] ;试试。
我用vcs验证过的,或许是你的仿真软件的问题,或许是ovm本身的问题,或许是我错了,呵呵。。。
 楼主| 发表于 2011-7-21 13:56:20 | 显示全部楼层


呵呵,你改成rand bit [15:0] data [] ;试试。
我用vcs验证过的,或许是你的仿真软件的问题,或许是ovm本身 ...
hi_johnson 发表于 2011-7-21 11:55




    谢谢,

改成rand bit [15:0] data [] 确实没有rand 变量初始化为0的问题了,

不过 这会不会影响 do_pack 呢?

修改原来的约束constraint data_c {  foreach ( data [ i ] ) data == (i % 256)  ; }  为什么没有效果呢?
 楼主| 发表于 2011-7-21 14:00:41 | 显示全部楼层
我考虑了一下:


有可能是 constraint data_c {  foreach ( data [ i ] ) data[i] == (i % 256)  ; }

默认I为 byte 类型,

当动态数组的上限超过256后,

导致I值为非法,

所以数组值初始化为0

欢迎讨论。。。
发表于 2011-7-21 16:02:06 | 显示全部楼层
回复 7# macrohard


    上班能用qq吗?站内告诉我qq号,我加你:)
 楼主| 发表于 2011-7-21 16:41:49 | 显示全部楼层


回复  macrohard


    上班能用qq吗?站内告诉我qq号,我加你:)
hi_johnson 发表于 2011-7-21 16:02




    公司把QQ和很多端口都封了,

估计只能帖子里讨论或者站短了。。。
 楼主| 发表于 2011-7-21 16:44:15 | 显示全部楼层
我在查 foreach 的语法,  看其自动变量 i 的默认取值是不是这个问题的原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-11 02:51 , Processed in 0.036334 second(s), 6 queries , Gzip On, Redis On.

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